lnrpc: format rpc.proto and remove json_name fields

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

@ -836,13 +836,13 @@ var xxx_messageInfo_ChangePasswordResponse proto.InternalMessageInfo
type Utxo struct {
/// The type of address
Type AddressType `protobuf:"varint,1,opt,name=type,json=address_type,proto3,enum=lnrpc.AddressType" json:"type,omitempty"`
Type AddressType `protobuf:"varint,1,opt,name=type,proto3,enum=lnrpc.AddressType" json:"type,omitempty"`
/// The address
Address string `protobuf:"bytes,2,opt,name=address,proto3" json:"address,omitempty"`
/// The value of the unspent coin in satoshis
AmountSat int64 `protobuf:"varint,3,opt,name=amount_sat,proto3" json:"amount_sat,omitempty"`
AmountSat int64 `protobuf:"varint,3,opt,name=amount_sat,json=amountSat,proto3" json:"amount_sat,omitempty"`
/// The pkscript in hex
PkScript string `protobuf:"bytes,4,opt,name=pk_script,proto3" json:"pk_script,omitempty"`
PkScript string `protobuf:"bytes,4,opt,name=pk_script,json=pkScript,proto3" json:"pk_script,omitempty"`
/// The outpoint in format txid:n
Outpoint *OutPoint `protobuf:"bytes,5,opt,name=outpoint,proto3" json:"outpoint,omitempty"`
/// The number of confirmations for the Utxo
@ -921,23 +921,23 @@ func (m *Utxo) GetConfirmations() int64 {
type Transaction struct {
/// The transaction hash
TxHash string `protobuf:"bytes,1,opt,name=tx_hash,proto3" json:"tx_hash,omitempty"`
TxHash string `protobuf:"bytes,1,opt,name=tx_hash,json=txHash,proto3" json:"tx_hash,omitempty"`
/// The transaction amount, denominated in satoshis
Amount int64 `protobuf:"varint,2,opt,name=amount,proto3" json:"amount,omitempty"`
/// The number of confirmations
NumConfirmations int32 `protobuf:"varint,3,opt,name=num_confirmations,proto3" json:"num_confirmations,omitempty"`
NumConfirmations int32 `protobuf:"varint,3,opt,name=num_confirmations,json=numConfirmations,proto3" json:"num_confirmations,omitempty"`
/// The hash of the block this transaction was included in
BlockHash string `protobuf:"bytes,4,opt,name=block_hash,proto3" json:"block_hash,omitempty"`
BlockHash string `protobuf:"bytes,4,opt,name=block_hash,json=blockHash,proto3" json:"block_hash,omitempty"`
/// The height of the block this transaction was included in
BlockHeight int32 `protobuf:"varint,5,opt,name=block_height,proto3" json:"block_height,omitempty"`
BlockHeight int32 `protobuf:"varint,5,opt,name=block_height,json=blockHeight,proto3" json:"block_height,omitempty"`
/// Timestamp of this transaction
TimeStamp int64 `protobuf:"varint,6,opt,name=time_stamp,proto3" json:"time_stamp,omitempty"`
TimeStamp int64 `protobuf:"varint,6,opt,name=time_stamp,json=timeStamp,proto3" json:"time_stamp,omitempty"`
/// Fees paid for this transaction
TotalFees int64 `protobuf:"varint,7,opt,name=total_fees,proto3" json:"total_fees,omitempty"`
TotalFees int64 `protobuf:"varint,7,opt,name=total_fees,json=totalFees,proto3" json:"total_fees,omitempty"`
/// Addresses that received funds for this transaction
DestAddresses []string `protobuf:"bytes,8,rep,name=dest_addresses,proto3" json:"dest_addresses,omitempty"`
DestAddresses []string `protobuf:"bytes,8,rep,name=dest_addresses,json=destAddresses,proto3" json:"dest_addresses,omitempty"`
/// The raw transaction hex.
RawTxHex string `protobuf:"bytes,9,opt,name=raw_tx_hex,proto3" json:"raw_tx_hex,omitempty"`
RawTxHex string `protobuf:"bytes,9,opt,name=raw_tx_hex,json=rawTxHex,proto3" json:"raw_tx_hex,omitempty"`
XXX_NoUnkeyedLiteral struct{} `json:"-"`
XXX_unrecognized []byte `json:"-"`
XXX_sizecache int32 `json:"-"`
@ -1405,10 +1405,10 @@ func (m *SendRequest) GetDestFeatures() []FeatureBit {
}
type SendResponse struct {
PaymentError string `protobuf:"bytes,1,opt,name=payment_error,proto3" json:"payment_error,omitempty"`
PaymentPreimage []byte `protobuf:"bytes,2,opt,name=payment_preimage,proto3" json:"payment_preimage,omitempty"`
PaymentRoute *Route `protobuf:"bytes,3,opt,name=payment_route,proto3" json:"payment_route,omitempty"`
PaymentHash []byte `protobuf:"bytes,4,opt,name=payment_hash,proto3" json:"payment_hash,omitempty"`
PaymentError string `protobuf:"bytes,1,opt,name=payment_error,json=paymentError,proto3" json:"payment_error,omitempty"`
PaymentPreimage []byte `protobuf:"bytes,2,opt,name=payment_preimage,json=paymentPreimage,proto3" json:"payment_preimage,omitempty"`
PaymentRoute *Route `protobuf:"bytes,3,opt,name=payment_route,json=paymentRoute,proto3" json:"payment_route,omitempty"`
PaymentHash []byte `protobuf:"bytes,4,opt,name=payment_hash,json=paymentHash,proto3" json:"payment_hash,omitempty"`
XXX_NoUnkeyedLiteral struct{} `json:"-"`
XXX_unrecognized []byte `json:"-"`
XXX_sizecache int32 `json:"-"`
@ -1735,7 +1735,7 @@ type ChannelPoint struct {
// *ChannelPoint_FundingTxidStr
FundingTxid isChannelPoint_FundingTxid `protobuf_oneof:"funding_txid"`
/// The index of the output of the funding transaction
OutputIndex uint32 `protobuf:"varint,3,opt,name=output_index,proto3" json:"output_index,omitempty"`
OutputIndex uint32 `protobuf:"varint,3,opt,name=output_index,json=outputIndex,proto3" json:"output_index,omitempty"`
XXX_NoUnkeyedLiteral struct{} `json:"-"`
XXX_unrecognized []byte `json:"-"`
XXX_sizecache int32 `json:"-"`
@ -1771,11 +1771,11 @@ type isChannelPoint_FundingTxid interface {
}
type ChannelPoint_FundingTxidBytes struct {
FundingTxidBytes []byte `protobuf:"bytes,1,opt,name=funding_txid_bytes,proto3,oneof"`
FundingTxidBytes []byte `protobuf:"bytes,1,opt,name=funding_txid_bytes,json=fundingTxidBytes,proto3,oneof"`
}
type ChannelPoint_FundingTxidStr struct {
FundingTxidStr string `protobuf:"bytes,2,opt,name=funding_txid_str,proto3,oneof"`
FundingTxidStr string `protobuf:"bytes,2,opt,name=funding_txid_str,json=fundingTxidStr,proto3,oneof"`
}
func (*ChannelPoint_FundingTxidBytes) isChannelPoint_FundingTxid() {}
@ -1820,11 +1820,11 @@ func (*ChannelPoint) XXX_OneofWrappers() []interface{} {
type OutPoint struct {
/// Raw bytes representing the transaction id.
TxidBytes []byte `protobuf:"bytes,1,opt,name=txid_bytes,proto3" json:"txid_bytes,omitempty"`
TxidBytes []byte `protobuf:"bytes,1,opt,name=txid_bytes,json=txidBytes,proto3" json:"txid_bytes,omitempty"`
/// Reversed, hex-encoded string representing the transaction id.
TxidStr string `protobuf:"bytes,2,opt,name=txid_str,proto3" json:"txid_str,omitempty"`
TxidStr string `protobuf:"bytes,2,opt,name=txid_str,json=txidStr,proto3" json:"txid_str,omitempty"`
/// The index of the output on the transaction.
OutputIndex uint32 `protobuf:"varint,3,opt,name=output_index,proto3" json:"output_index,omitempty"`
OutputIndex uint32 `protobuf:"varint,3,opt,name=output_index,json=outputIndex,proto3" json:"output_index,omitempty"`
XXX_NoUnkeyedLiteral struct{} `json:"-"`
XXX_unrecognized []byte `json:"-"`
XXX_sizecache int32 `json:"-"`
@ -1976,9 +1976,9 @@ func (m *EstimateFeeRequest) GetTargetConf() int32 {
type EstimateFeeResponse struct {
/// The total fee in satoshis.
FeeSat int64 `protobuf:"varint,1,opt,name=fee_sat,proto3" json:"fee_sat,omitempty"`
FeeSat int64 `protobuf:"varint,1,opt,name=fee_sat,json=feeSat,proto3" json:"fee_sat,omitempty"`
/// The fee rate in satoshi/byte.
FeerateSatPerByte int64 `protobuf:"varint,2,opt,name=feerate_sat_per_byte,proto3" json:"feerate_sat_per_byte,omitempty"`
FeerateSatPerByte int64 `protobuf:"varint,2,opt,name=feerate_sat_per_byte,json=feerateSatPerByte,proto3" json:"feerate_sat_per_byte,omitempty"`
XXX_NoUnkeyedLiteral struct{} `json:"-"`
XXX_unrecognized []byte `json:"-"`
XXX_sizecache int32 `json:"-"`
@ -2674,7 +2674,7 @@ var xxx_messageInfo_ConnectPeerResponse proto.InternalMessageInfo
type DisconnectPeerRequest struct {
/// The pubkey of the node to disconnect from
PubKey string `protobuf:"bytes,1,opt,name=pub_key,proto3" json:"pub_key,omitempty"`
PubKey string `protobuf:"bytes,1,opt,name=pub_key,json=pubKey,proto3" json:"pub_key,omitempty"`
XXX_NoUnkeyedLiteral struct{} `json:"-"`
XXX_unrecognized []byte `json:"-"`
XXX_sizecache int32 `json:"-"`
@ -2746,8 +2746,8 @@ var xxx_messageInfo_DisconnectPeerResponse proto.InternalMessageInfo
type HTLC struct {
Incoming bool `protobuf:"varint,1,opt,name=incoming,proto3" json:"incoming,omitempty"`
Amount int64 `protobuf:"varint,2,opt,name=amount,proto3" json:"amount,omitempty"`
HashLock []byte `protobuf:"bytes,3,opt,name=hash_lock,proto3" json:"hash_lock,omitempty"`
ExpirationHeight uint32 `protobuf:"varint,4,opt,name=expiration_height,proto3" json:"expiration_height,omitempty"`
HashLock []byte `protobuf:"bytes,3,opt,name=hash_lock,json=hashLock,proto3" json:"hash_lock,omitempty"`
ExpirationHeight uint32 `protobuf:"varint,4,opt,name=expiration_height,json=expirationHeight,proto3" json:"expiration_height,omitempty"`
XXX_NoUnkeyedLiteral struct{} `json:"-"`
XXX_unrecognized []byte `json:"-"`
XXX_sizecache int32 `json:"-"`
@ -2810,71 +2810,71 @@ type Channel struct {
/// Whether this channel is active or not
Active bool `protobuf:"varint,1,opt,name=active,proto3" json:"active,omitempty"`
/// The identity pubkey of the remote node
RemotePubkey string `protobuf:"bytes,2,opt,name=remote_pubkey,proto3" json:"remote_pubkey,omitempty"`
RemotePubkey string `protobuf:"bytes,2,opt,name=remote_pubkey,json=remotePubkey,proto3" json:"remote_pubkey,omitempty"`
//*
//The outpoint (txid:index) of the funding transaction. With this value, Bob
//will be able to generate a signature for Alice's version of the commitment
//transaction.
ChannelPoint string `protobuf:"bytes,3,opt,name=channel_point,proto3" json:"channel_point,omitempty"`
ChannelPoint string `protobuf:"bytes,3,opt,name=channel_point,json=channelPoint,proto3" json:"channel_point,omitempty"`
//*
//The unique channel ID for the channel. The first 3 bytes are the block
//height, the next 3 the index within the block, and the last 2 bytes are the
//output index for the channel.
ChanId uint64 `protobuf:"varint,4,opt,name=chan_id,proto3" json:"chan_id,omitempty"`
ChanId uint64 `protobuf:"varint,4,opt,name=chan_id,json=chanId,proto3" json:"chan_id,omitempty"`
/// The total amount of funds held in this channel
Capacity int64 `protobuf:"varint,5,opt,name=capacity,proto3" json:"capacity,omitempty"`
/// This node's current balance in this channel
LocalBalance int64 `protobuf:"varint,6,opt,name=local_balance,proto3" json:"local_balance,omitempty"`
LocalBalance int64 `protobuf:"varint,6,opt,name=local_balance,json=localBalance,proto3" json:"local_balance,omitempty"`
/// The counterparty's current balance in this channel
RemoteBalance int64 `protobuf:"varint,7,opt,name=remote_balance,proto3" json:"remote_balance,omitempty"`
RemoteBalance int64 `protobuf:"varint,7,opt,name=remote_balance,json=remoteBalance,proto3" json:"remote_balance,omitempty"`
//*
//The amount calculated to be paid in fees for the current set of commitment
//transactions. The fee amount is persisted with the channel in order to
//allow the fee amount to be removed and recalculated with each channel state
//update, including updates that happen after a system restart.
CommitFee int64 `protobuf:"varint,8,opt,name=commit_fee,proto3" json:"commit_fee,omitempty"`
CommitFee int64 `protobuf:"varint,8,opt,name=commit_fee,json=commitFee,proto3" json:"commit_fee,omitempty"`
/// The weight of the commitment transaction
CommitWeight int64 `protobuf:"varint,9,opt,name=commit_weight,proto3" json:"commit_weight,omitempty"`
CommitWeight int64 `protobuf:"varint,9,opt,name=commit_weight,json=commitWeight,proto3" json:"commit_weight,omitempty"`
//*
//The required number of satoshis per kilo-weight that the requester will pay
//at all times, for both the funding transaction and commitment transaction.
//This value can later be updated once the channel is open.
FeePerKw int64 `protobuf:"varint,10,opt,name=fee_per_kw,proto3" json:"fee_per_kw,omitempty"`
FeePerKw int64 `protobuf:"varint,10,opt,name=fee_per_kw,json=feePerKw,proto3" json:"fee_per_kw,omitempty"`
/// The unsettled balance in this channel
UnsettledBalance int64 `protobuf:"varint,11,opt,name=unsettled_balance,proto3" json:"unsettled_balance,omitempty"`
UnsettledBalance int64 `protobuf:"varint,11,opt,name=unsettled_balance,json=unsettledBalance,proto3" json:"unsettled_balance,omitempty"`
//*
//The total number of satoshis we've sent within this channel.
TotalSatoshisSent int64 `protobuf:"varint,12,opt,name=total_satoshis_sent,proto3" json:"total_satoshis_sent,omitempty"`
TotalSatoshisSent int64 `protobuf:"varint,12,opt,name=total_satoshis_sent,json=totalSatoshisSent,proto3" json:"total_satoshis_sent,omitempty"`
//*
//The total number of satoshis we've received within this channel.
TotalSatoshisReceived int64 `protobuf:"varint,13,opt,name=total_satoshis_received,proto3" json:"total_satoshis_received,omitempty"`
TotalSatoshisReceived int64 `protobuf:"varint,13,opt,name=total_satoshis_received,json=totalSatoshisReceived,proto3" json:"total_satoshis_received,omitempty"`
//*
//The total number of updates conducted within this channel.
NumUpdates uint64 `protobuf:"varint,14,opt,name=num_updates,proto3" json:"num_updates,omitempty"`
NumUpdates uint64 `protobuf:"varint,14,opt,name=num_updates,json=numUpdates,proto3" json:"num_updates,omitempty"`
//*
//The list of active, uncleared HTLCs currently pending within the channel.
PendingHtlcs []*HTLC `protobuf:"bytes,15,rep,name=pending_htlcs,proto3" json:"pending_htlcs,omitempty"`
PendingHtlcs []*HTLC `protobuf:"bytes,15,rep,name=pending_htlcs,json=pendingHtlcs,proto3" json:"pending_htlcs,omitempty"`
//*
//The CSV delay expressed in relative blocks. If the channel is force closed,
//we will need to wait for this many blocks before we can regain our funds.
CsvDelay uint32 `protobuf:"varint,16,opt,name=csv_delay,proto3" json:"csv_delay,omitempty"`
CsvDelay uint32 `protobuf:"varint,16,opt,name=csv_delay,json=csvDelay,proto3" json:"csv_delay,omitempty"`
/// Whether this channel is advertised to the network or not.
Private bool `protobuf:"varint,17,opt,name=private,proto3" json:"private,omitempty"`
/// True if we were the ones that created the channel.
Initiator bool `protobuf:"varint,18,opt,name=initiator,proto3" json:"initiator,omitempty"`
/// A set of flags showing the current state of the channel.
ChanStatusFlags string `protobuf:"bytes,19,opt,name=chan_status_flags,proto3" json:"chan_status_flags,omitempty"`
ChanStatusFlags string `protobuf:"bytes,19,opt,name=chan_status_flags,json=chanStatusFlags,proto3" json:"chan_status_flags,omitempty"`
/// The minimum satoshis this node is required to reserve in its balance.
LocalChanReserveSat int64 `protobuf:"varint,20,opt,name=local_chan_reserve_sat,proto3" json:"local_chan_reserve_sat,omitempty"`
LocalChanReserveSat int64 `protobuf:"varint,20,opt,name=local_chan_reserve_sat,json=localChanReserveSat,proto3" json:"local_chan_reserve_sat,omitempty"`
//*
//The minimum satoshis the other node is required to reserve in its balance.
RemoteChanReserveSat int64 `protobuf:"varint,21,opt,name=remote_chan_reserve_sat,proto3" json:"remote_chan_reserve_sat,omitempty"`
RemoteChanReserveSat int64 `protobuf:"varint,21,opt,name=remote_chan_reserve_sat,json=remoteChanReserveSat,proto3" json:"remote_chan_reserve_sat,omitempty"`
//*
//If true, then this channel uses the modern commitment format where the key
//in the output of the remote party does not change each state. This makes
//back up and recovery easier as when the channel is closed, the funds go
//directly to that key.
StaticRemoteKey bool `protobuf:"varint,22,opt,name=static_remote_key,proto3" json:"static_remote_key,omitempty"`
StaticRemoteKey bool `protobuf:"varint,22,opt,name=static_remote_key,json=staticRemoteKey,proto3" json:"static_remote_key,omitempty"`
//*
//The number of seconds that the channel has been monitored by the channel
//scoring system. Scores are currently not persisted, so this value may be
@ -2890,7 +2890,7 @@ type Channel struct {
//value can be set on channel open by setting close_address in an open channel
//request. If this value is not set, you can still choose a payout address by
//cooperatively closing with the delivery_address field set.
CloseAddress string `protobuf:"bytes,25,opt,name=close_address,proto3" json:"close_address,omitempty"`
CloseAddress string `protobuf:"bytes,25,opt,name=close_address,json=closeAddress,proto3" json:"close_address,omitempty"`
XXX_NoUnkeyedLiteral struct{} `json:"-"`
XXX_unrecognized []byte `json:"-"`
XXX_sizecache int32 `json:"-"`
@ -3212,37 +3212,37 @@ func (m *ListChannelsResponse) GetChannels() []*Channel {
type ChannelCloseSummary struct {
/// The outpoint (txid:index) of the funding transaction.
ChannelPoint string `protobuf:"bytes,1,opt,name=channel_point,proto3" json:"channel_point,omitempty"`
ChannelPoint string `protobuf:"bytes,1,opt,name=channel_point,json=channelPoint,proto3" json:"channel_point,omitempty"`
/// The unique channel ID for the channel.
ChanId uint64 `protobuf:"varint,2,opt,name=chan_id,proto3" json:"chan_id,omitempty"`
ChanId uint64 `protobuf:"varint,2,opt,name=chan_id,json=chanId,proto3" json:"chan_id,omitempty"`
/// The hash of the genesis block that this channel resides within.
ChainHash string `protobuf:"bytes,3,opt,name=chain_hash,proto3" json:"chain_hash,omitempty"`
ChainHash string `protobuf:"bytes,3,opt,name=chain_hash,json=chainHash,proto3" json:"chain_hash,omitempty"`
/// The txid of the transaction which ultimately closed this channel.
ClosingTxHash string `protobuf:"bytes,4,opt,name=closing_tx_hash,proto3" json:"closing_tx_hash,omitempty"`
ClosingTxHash string `protobuf:"bytes,4,opt,name=closing_tx_hash,json=closingTxHash,proto3" json:"closing_tx_hash,omitempty"`
/// Public key of the remote peer that we formerly had a channel with.
RemotePubkey string `protobuf:"bytes,5,opt,name=remote_pubkey,proto3" json:"remote_pubkey,omitempty"`
RemotePubkey string `protobuf:"bytes,5,opt,name=remote_pubkey,json=remotePubkey,proto3" json:"remote_pubkey,omitempty"`
/// Total capacity of the channel.
Capacity int64 `protobuf:"varint,6,opt,name=capacity,proto3" json:"capacity,omitempty"`
/// Height at which the funding transaction was spent.
CloseHeight uint32 `protobuf:"varint,7,opt,name=close_height,proto3" json:"close_height,omitempty"`
CloseHeight uint32 `protobuf:"varint,7,opt,name=close_height,json=closeHeight,proto3" json:"close_height,omitempty"`
/// Settled balance at the time of channel closure
SettledBalance int64 `protobuf:"varint,8,opt,name=settled_balance,proto3" json:"settled_balance,omitempty"`
SettledBalance int64 `protobuf:"varint,8,opt,name=settled_balance,json=settledBalance,proto3" json:"settled_balance,omitempty"`
/// The sum of all the time-locked outputs at the time of channel closure
TimeLockedBalance int64 `protobuf:"varint,9,opt,name=time_locked_balance,proto3" json:"time_locked_balance,omitempty"`
TimeLockedBalance int64 `protobuf:"varint,9,opt,name=time_locked_balance,json=timeLockedBalance,proto3" json:"time_locked_balance,omitempty"`
/// Details on how the channel was closed.
CloseType ChannelCloseSummary_ClosureType `protobuf:"varint,10,opt,name=close_type,proto3,enum=lnrpc.ChannelCloseSummary_ClosureType" json:"close_type,omitempty"`
CloseType ChannelCloseSummary_ClosureType `protobuf:"varint,10,opt,name=close_type,json=closeType,proto3,enum=lnrpc.ChannelCloseSummary_ClosureType" json:"close_type,omitempty"`
//*
//Open initiator is the party that initiated opening the channel. Note that
//this value may be unknown if the channel was closed before we migrated to
//store open channel information after close.
OpenInitiator ChannelCloseSummary_Initiator `protobuf:"varint,11,opt,name=open_initiator,proto3,enum=lnrpc.ChannelCloseSummary_Initiator" json:"open_initiator,omitempty"`
OpenInitiator ChannelCloseSummary_Initiator `protobuf:"varint,11,opt,name=open_initiator,json=openInitiator,proto3,enum=lnrpc.ChannelCloseSummary_Initiator" json:"open_initiator,omitempty"`
//*
//Close initiator indicates which party initiated the close. This value will
//be unknown for channels that were cooperatively closed before we started
//tracking cooperative close initiators. Note that this indicates which party
//initiated a close, and it is possible for both to initiate cooperative or
//force closes, although only one party's close will be confirmed on chain.
CloseInitiator ChannelCloseSummary_Initiator `protobuf:"varint,12,opt,name=close_initiator,proto3,enum=lnrpc.ChannelCloseSummary_Initiator" json:"close_initiator,omitempty"`
CloseInitiator ChannelCloseSummary_Initiator `protobuf:"varint,12,opt,name=close_initiator,json=closeInitiator,proto3,enum=lnrpc.ChannelCloseSummary_Initiator" json:"close_initiator,omitempty"`
XXX_NoUnkeyedLiteral struct{} `json:"-"`
XXX_unrecognized []byte `json:"-"`
XXX_sizecache int32 `json:"-"`
@ -3477,23 +3477,23 @@ func (m *ClosedChannelsResponse) GetChannels() []*ChannelCloseSummary {
type Peer struct {
/// The identity pubkey of the peer
PubKey string `protobuf:"bytes,1,opt,name=pub_key,proto3" json:"pub_key,omitempty"`
PubKey string `protobuf:"bytes,1,opt,name=pub_key,json=pubKey,proto3" json:"pub_key,omitempty"`
/// Network address of the peer; eg `127.0.0.1:10011`
Address string `protobuf:"bytes,3,opt,name=address,proto3" json:"address,omitempty"`
/// Bytes of data transmitted to this peer
BytesSent uint64 `protobuf:"varint,4,opt,name=bytes_sent,proto3" json:"bytes_sent,omitempty"`
BytesSent uint64 `protobuf:"varint,4,opt,name=bytes_sent,json=bytesSent,proto3" json:"bytes_sent,omitempty"`
/// Bytes of data transmitted from this peer
BytesRecv uint64 `protobuf:"varint,5,opt,name=bytes_recv,proto3" json:"bytes_recv,omitempty"`
BytesRecv uint64 `protobuf:"varint,5,opt,name=bytes_recv,json=bytesRecv,proto3" json:"bytes_recv,omitempty"`
/// Satoshis sent to this peer
SatSent int64 `protobuf:"varint,6,opt,name=sat_sent,proto3" json:"sat_sent,omitempty"`
SatSent int64 `protobuf:"varint,6,opt,name=sat_sent,json=satSent,proto3" json:"sat_sent,omitempty"`
/// Satoshis received from this peer
SatRecv int64 `protobuf:"varint,7,opt,name=sat_recv,proto3" json:"sat_recv,omitempty"`
SatRecv int64 `protobuf:"varint,7,opt,name=sat_recv,json=satRecv,proto3" json:"sat_recv,omitempty"`
/// A channel is inbound if the counterparty initiated the channel
Inbound bool `protobuf:"varint,8,opt,name=inbound,proto3" json:"inbound,omitempty"`
/// Ping time to this peer
PingTime int64 `protobuf:"varint,9,opt,name=ping_time,proto3" json:"ping_time,omitempty"`
PingTime int64 `protobuf:"varint,9,opt,name=ping_time,json=pingTime,proto3" json:"ping_time,omitempty"`
// The type of sync we are currently performing with this peer.
SyncType Peer_SyncType `protobuf:"varint,10,opt,name=sync_type,proto3,enum=lnrpc.Peer_SyncType" json:"sync_type,omitempty"`
SyncType Peer_SyncType `protobuf:"varint,10,opt,name=sync_type,json=syncType,proto3,enum=lnrpc.Peer_SyncType" json:"sync_type,omitempty"`
/// Features advertised by the remote peer in their init message.
Features map[uint32]*Feature `protobuf:"bytes,11,rep,name=features,proto3" json:"features,omitempty" protobuf_key:"varint,1,opt,name=key,proto3" protobuf_val:"bytes,2,opt,name=value,proto3"`
XXX_NoUnkeyedLiteral struct{} `json:"-"`
@ -3700,7 +3700,7 @@ var xxx_messageInfo_PeerEventSubscription proto.InternalMessageInfo
type PeerEvent struct {
/// The identity pubkey of the peer.
PubKey string `protobuf:"bytes,1,opt,name=pub_key,proto3" json:"pub_key,omitempty"`
PubKey string `protobuf:"bytes,1,opt,name=pub_key,json=pubKey,proto3" json:"pub_key,omitempty"`
Type PeerEvent_EventType `protobuf:"varint,2,opt,name=type,proto3,enum=lnrpc.PeerEvent_EventType" json:"type,omitempty"`
XXX_NoUnkeyedLiteral struct{} `json:"-"`
XXX_unrecognized []byte `json:"-"`
@ -3781,29 +3781,29 @@ type GetInfoResponse struct {
/// The version of the LND software that the node is running.
Version string `protobuf:"bytes,14,opt,name=version,proto3" json:"version,omitempty"`
/// The identity pubkey of the current node.
IdentityPubkey string `protobuf:"bytes,1,opt,name=identity_pubkey,proto3" json:"identity_pubkey,omitempty"`
IdentityPubkey string `protobuf:"bytes,1,opt,name=identity_pubkey,json=identityPubkey,proto3" json:"identity_pubkey,omitempty"`
/// If applicable, the alias of the current node, e.g. "bob"
Alias string `protobuf:"bytes,2,opt,name=alias,proto3" json:"alias,omitempty"`
/// The color of the current node in hex code format
Color string `protobuf:"bytes,17,opt,name=color,proto3" json:"color,omitempty"`
/// Number of pending channels
NumPendingChannels uint32 `protobuf:"varint,3,opt,name=num_pending_channels,proto3" json:"num_pending_channels,omitempty"`
NumPendingChannels uint32 `protobuf:"varint,3,opt,name=num_pending_channels,json=numPendingChannels,proto3" json:"num_pending_channels,omitempty"`
/// Number of active channels
NumActiveChannels uint32 `protobuf:"varint,4,opt,name=num_active_channels,proto3" json:"num_active_channels,omitempty"`
NumActiveChannels uint32 `protobuf:"varint,4,opt,name=num_active_channels,json=numActiveChannels,proto3" json:"num_active_channels,omitempty"`
/// Number of inactive channels
NumInactiveChannels uint32 `protobuf:"varint,15,opt,name=num_inactive_channels,proto3" json:"num_inactive_channels,omitempty"`
NumInactiveChannels uint32 `protobuf:"varint,15,opt,name=num_inactive_channels,json=numInactiveChannels,proto3" json:"num_inactive_channels,omitempty"`
/// Number of peers
NumPeers uint32 `protobuf:"varint,5,opt,name=num_peers,proto3" json:"num_peers,omitempty"`
NumPeers uint32 `protobuf:"varint,5,opt,name=num_peers,json=numPeers,proto3" json:"num_peers,omitempty"`
/// The node's current view of the height of the best block
BlockHeight uint32 `protobuf:"varint,6,opt,name=block_height,proto3" json:"block_height,omitempty"`
BlockHeight uint32 `protobuf:"varint,6,opt,name=block_height,json=blockHeight,proto3" json:"block_height,omitempty"`
/// The node's current view of the hash of the best block
BlockHash string `protobuf:"bytes,8,opt,name=block_hash,proto3" json:"block_hash,omitempty"`
BlockHash string `protobuf:"bytes,8,opt,name=block_hash,json=blockHash,proto3" json:"block_hash,omitempty"`
/// Timestamp of the block best known to the wallet
BestHeaderTimestamp int64 `protobuf:"varint,13,opt,name=best_header_timestamp,proto3" json:"best_header_timestamp,omitempty"`
BestHeaderTimestamp int64 `protobuf:"varint,13,opt,name=best_header_timestamp,json=bestHeaderTimestamp,proto3" json:"best_header_timestamp,omitempty"`
/// Whether the wallet's view is synced to the main chain
SyncedToChain bool `protobuf:"varint,9,opt,name=synced_to_chain,proto3" json:"synced_to_chain,omitempty"`
SyncedToChain bool `protobuf:"varint,9,opt,name=synced_to_chain,json=syncedToChain,proto3" json:"synced_to_chain,omitempty"`
// Whether we consider ourselves synced with the public channel graph.
SyncedToGraph bool `protobuf:"varint,18,opt,name=synced_to_graph,proto3" json:"synced_to_graph,omitempty"`
SyncedToGraph bool `protobuf:"varint,18,opt,name=synced_to_graph,json=syncedToGraph,proto3" json:"synced_to_graph,omitempty"`
//*
//Whether the current node is connected to testnet. This field is
//deprecated and the network field should be used instead
@ -4071,7 +4071,7 @@ func (m *ConfirmationUpdate) GetNumConfsLeft() uint32 {
}
type ChannelOpenUpdate struct {
ChannelPoint *ChannelPoint `protobuf:"bytes,1,opt,name=channel_point,proto3" json:"channel_point,omitempty"`
ChannelPoint *ChannelPoint `protobuf:"bytes,1,opt,name=channel_point,json=channelPoint,proto3" json:"channel_point,omitempty"`
XXX_NoUnkeyedLiteral struct{} `json:"-"`
XXX_unrecognized []byte `json:"-"`
XXX_sizecache int32 `json:"-"`
@ -4110,7 +4110,7 @@ func (m *ChannelOpenUpdate) GetChannelPoint() *ChannelPoint {
}
type ChannelCloseUpdate struct {
ClosingTxid []byte `protobuf:"bytes,1,opt,name=closing_txid,proto3" json:"closing_txid,omitempty"`
ClosingTxid []byte `protobuf:"bytes,1,opt,name=closing_txid,json=closingTxid,proto3" json:"closing_txid,omitempty"`
Success bool `protobuf:"varint,2,opt,name=success,proto3" json:"success,omitempty"`
XXX_NoUnkeyedLiteral struct{} `json:"-"`
XXX_unrecognized []byte `json:"-"`
@ -4173,7 +4173,7 @@ type CloseChannelRequest struct {
//If the channel was opened with an upfront shutdown script and this field
//is set, the request to close will fail because the channel must pay out
//to the upfront shutdown addresss.
DeliveryAddress string `protobuf:"bytes,5,opt,name=delivery_address,proto3" json:"delivery_address,omitempty"`
DeliveryAddress string `protobuf:"bytes,5,opt,name=delivery_address,json=deliveryAddress,proto3" json:"delivery_address,omitempty"`
XXX_NoUnkeyedLiteral struct{} `json:"-"`
XXX_unrecognized []byte `json:"-"`
XXX_sizecache int32 `json:"-"`
@ -4279,11 +4279,11 @@ type isCloseStatusUpdate_Update interface {
}
type CloseStatusUpdate_ClosePending struct {
ClosePending *PendingUpdate `protobuf:"bytes,1,opt,name=close_pending,proto3,oneof"`
ClosePending *PendingUpdate `protobuf:"bytes,1,opt,name=close_pending,json=closePending,proto3,oneof"`
}
type CloseStatusUpdate_ChanClose struct {
ChanClose *ChannelCloseUpdate `protobuf:"bytes,3,opt,name=chan_close,proto3,oneof"`
ChanClose *ChannelCloseUpdate `protobuf:"bytes,3,opt,name=chan_close,json=chanClose,proto3,oneof"`
}
func (*CloseStatusUpdate_ClosePending) isCloseStatusUpdate_Update() {}
@ -4321,7 +4321,7 @@ func (*CloseStatusUpdate) XXX_OneofWrappers() []interface{} {
type PendingUpdate struct {
Txid []byte `protobuf:"bytes,1,opt,name=txid,proto3" json:"txid,omitempty"`
OutputIndex uint32 `protobuf:"varint,2,opt,name=output_index,proto3" json:"output_index,omitempty"`
OutputIndex uint32 `protobuf:"varint,2,opt,name=output_index,json=outputIndex,proto3" json:"output_index,omitempty"`
XXX_NoUnkeyedLiteral struct{} `json:"-"`
XXX_unrecognized []byte `json:"-"`
XXX_sizecache int32 `json:"-"`
@ -4370,15 +4370,15 @@ type OpenChannelRequest struct {
//*
//The pubkey of the node to open a channel with. When using REST, this field
//must be encoded as base64.
NodePubkey []byte `protobuf:"bytes,2,opt,name=node_pubkey,proto3" json:"node_pubkey,omitempty"`
NodePubkey []byte `protobuf:"bytes,2,opt,name=node_pubkey,json=nodePubkey,proto3" json:"node_pubkey,omitempty"`
//*
//The hex encoded pubkey of the node to open a channel with. Deprecated now
//that the REST gateway supports base64 encoding of bytes fields.
NodePubkeyString string `protobuf:"bytes,3,opt,name=node_pubkey_string,proto3" json:"node_pubkey_string,omitempty"` // Deprecated: Do not use.
NodePubkeyString string `protobuf:"bytes,3,opt,name=node_pubkey_string,json=nodePubkeyString,proto3" json:"node_pubkey_string,omitempty"` // Deprecated: Do not use.
/// The number of satoshis the wallet should commit to the channel
LocalFundingAmount int64 `protobuf:"varint,4,opt,name=local_funding_amount,proto3" json:"local_funding_amount,omitempty"`
LocalFundingAmount int64 `protobuf:"varint,4,opt,name=local_funding_amount,json=localFundingAmount,proto3" json:"local_funding_amount,omitempty"`
/// The number of satoshis to push to the remote side as part of the initial commitment state
PushSat int64 `protobuf:"varint,5,opt,name=push_sat,proto3" json:"push_sat,omitempty"`
PushSat int64 `protobuf:"varint,5,opt,name=push_sat,json=pushSat,proto3" json:"push_sat,omitempty"`
/// The target number of blocks that the funding transaction should be confirmed by.
TargetConf int32 `protobuf:"varint,6,opt,name=target_conf,json=targetConf,proto3" json:"target_conf,omitempty"`
/// A manual fee rate set in sat/byte that should be used when crafting the funding transaction.
@ -4386,13 +4386,13 @@ type OpenChannelRequest struct {
/// Whether this channel should be private, not announced to the greater network.
Private bool `protobuf:"varint,8,opt,name=private,proto3" json:"private,omitempty"`
/// The minimum value in millisatoshi we will require for incoming HTLCs on the channel.
MinHtlcMsat int64 `protobuf:"varint,9,opt,name=min_htlc_msat,proto3" json:"min_htlc_msat,omitempty"`
MinHtlcMsat int64 `protobuf:"varint,9,opt,name=min_htlc_msat,json=minHtlcMsat,proto3" json:"min_htlc_msat,omitempty"`
/// The delay we require on the remote's commitment transaction. If this is not set, it will be scaled automatically with the channel size.
RemoteCsvDelay uint32 `protobuf:"varint,10,opt,name=remote_csv_delay,proto3" json:"remote_csv_delay,omitempty"`
RemoteCsvDelay uint32 `protobuf:"varint,10,opt,name=remote_csv_delay,json=remoteCsvDelay,proto3" json:"remote_csv_delay,omitempty"`
/// The minimum number of confirmations each one of your outputs used for the funding transaction must satisfy.
MinConfs int32 `protobuf:"varint,11,opt,name=min_confs,proto3" json:"min_confs,omitempty"`
MinConfs int32 `protobuf:"varint,11,opt,name=min_confs,json=minConfs,proto3" json:"min_confs,omitempty"`
/// Whether unconfirmed outputs should be used as inputs for the funding transaction.
SpendUnconfirmed bool `protobuf:"varint,12,opt,name=spend_unconfirmed,proto3" json:"spend_unconfirmed,omitempty"`
SpendUnconfirmed bool `protobuf:"varint,12,opt,name=spend_unconfirmed,json=spendUnconfirmed,proto3" json:"spend_unconfirmed,omitempty"`
//
//Close address is an optional address which specifies the address to which
//funds should be paid out to upon cooperative close. This field may only be
@ -4402,14 +4402,14 @@ type OpenChannelRequest struct {
//
//Note: If this value is set on channel creation, you will *not* be able to
//cooperatively close out to a different address.
CloseAddress string `protobuf:"bytes,13,opt,name=close_address,proto3" json:"close_address,omitempty"`
CloseAddress string `protobuf:"bytes,13,opt,name=close_address,json=closeAddress,proto3" json:"close_address,omitempty"`
//*
//Funding shims are an optional argument that allow the caller to intercept
//certain funding functionality. For example, a shim can be provided to use a
//particular key for the commitment key (ideally cold) rather than use one
//that is generated by the wallet as normal, or signal that signing will be
//carried out in an interactive manner (PSBT based).
FundingShim *FundingShim `protobuf:"bytes,14,opt,name=funding_shim,proto3" json:"funding_shim,omitempty"`
FundingShim *FundingShim `protobuf:"bytes,14,opt,name=funding_shim,json=fundingShim,proto3" json:"funding_shim,omitempty"`
XXX_NoUnkeyedLiteral struct{} `json:"-"`
XXX_unrecognized []byte `json:"-"`
XXX_sizecache int32 `json:"-"`
@ -4540,7 +4540,7 @@ type OpenStatusUpdate struct {
//*
//The pending channel ID of the created channel. This value may be used to
//further the funding flow manually via the FundingStateStep method.
PendingChanId []byte `protobuf:"bytes,4,opt,name=pending_chan_id,proto3" json:"pending_chan_id,omitempty"`
PendingChanId []byte `protobuf:"bytes,4,opt,name=pending_chan_id,json=pendingChanId,proto3" json:"pending_chan_id,omitempty"`
XXX_NoUnkeyedLiteral struct{} `json:"-"`
XXX_unrecognized []byte `json:"-"`
XXX_sizecache int32 `json:"-"`
@ -4576,11 +4576,11 @@ type isOpenStatusUpdate_Update interface {
}
type OpenStatusUpdate_ChanPending struct {
ChanPending *PendingUpdate `protobuf:"bytes,1,opt,name=chan_pending,proto3,oneof"`
ChanPending *PendingUpdate `protobuf:"bytes,1,opt,name=chan_pending,json=chanPending,proto3,oneof"`
}
type OpenStatusUpdate_ChanOpen struct {
ChanOpen *ChannelOpenUpdate `protobuf:"bytes,3,opt,name=chan_open,proto3,oneof"`
ChanOpen *ChannelOpenUpdate `protobuf:"bytes,3,opt,name=chan_open,json=chanOpen,proto3,oneof"`
}
func (*OpenStatusUpdate_ChanPending) isOpenStatusUpdate_Update() {}
@ -5029,12 +5029,12 @@ type PendingHTLC struct {
/// The final output to be swept back to the user's wallet
Outpoint string `protobuf:"bytes,3,opt,name=outpoint,proto3" json:"outpoint,omitempty"`
/// The next block height at which we can spend the current stage
MaturityHeight uint32 `protobuf:"varint,4,opt,name=maturity_height,proto3" json:"maturity_height,omitempty"`
MaturityHeight uint32 `protobuf:"varint,4,opt,name=maturity_height,json=maturityHeight,proto3" json:"maturity_height,omitempty"`
//*
//The number of blocks remaining until the current stage can be swept.
//Negative values indicate how many blocks have passed since becoming
//mature.
BlocksTilMaturity int32 `protobuf:"varint,5,opt,name=blocks_til_maturity,proto3" json:"blocks_til_maturity,omitempty"`
BlocksTilMaturity int32 `protobuf:"varint,5,opt,name=blocks_til_maturity,json=blocksTilMaturity,proto3" json:"blocks_til_maturity,omitempty"`
/// Indicates whether the htlc is in its first or second stage of recovery
Stage uint32 `protobuf:"varint,6,opt,name=stage,proto3" json:"stage,omitempty"`
XXX_NoUnkeyedLiteral struct{} `json:"-"`
@ -5142,15 +5142,15 @@ var xxx_messageInfo_PendingChannelsRequest proto.InternalMessageInfo
type PendingChannelsResponse struct {
/// The balance in satoshis encumbered in pending channels
TotalLimboBalance int64 `protobuf:"varint,1,opt,name=total_limbo_balance,proto3" json:"total_limbo_balance,omitempty"`
TotalLimboBalance int64 `protobuf:"varint,1,opt,name=total_limbo_balance,json=totalLimboBalance,proto3" json:"total_limbo_balance,omitempty"`
/// Channels pending opening
PendingOpenChannels []*PendingChannelsResponse_PendingOpenChannel `protobuf:"bytes,2,rep,name=pending_open_channels,proto3" json:"pending_open_channels,omitempty"`
PendingOpenChannels []*PendingChannelsResponse_PendingOpenChannel `protobuf:"bytes,2,rep,name=pending_open_channels,json=pendingOpenChannels,proto3" json:"pending_open_channels,omitempty"`
/// Channels pending closing
PendingClosingChannels []*PendingChannelsResponse_ClosedChannel `protobuf:"bytes,3,rep,name=pending_closing_channels,proto3" json:"pending_closing_channels,omitempty"`
PendingClosingChannels []*PendingChannelsResponse_ClosedChannel `protobuf:"bytes,3,rep,name=pending_closing_channels,json=pendingClosingChannels,proto3" json:"pending_closing_channels,omitempty"`
/// Channels pending force closing
PendingForceClosingChannels []*PendingChannelsResponse_ForceClosedChannel `protobuf:"bytes,4,rep,name=pending_force_closing_channels,proto3" json:"pending_force_closing_channels,omitempty"`
PendingForceClosingChannels []*PendingChannelsResponse_ForceClosedChannel `protobuf:"bytes,4,rep,name=pending_force_closing_channels,json=pendingForceClosingChannels,proto3" json:"pending_force_closing_channels,omitempty"`
/// Channels waiting for closing tx to confirm
WaitingCloseChannels []*PendingChannelsResponse_WaitingCloseChannel `protobuf:"bytes,5,rep,name=waiting_close_channels,proto3" json:"waiting_close_channels,omitempty"`
WaitingCloseChannels []*PendingChannelsResponse_WaitingCloseChannel `protobuf:"bytes,5,rep,name=waiting_close_channels,json=waitingCloseChannels,proto3" json:"waiting_close_channels,omitempty"`
XXX_NoUnkeyedLiteral struct{} `json:"-"`
XXX_unrecognized []byte `json:"-"`
XXX_sizecache int32 `json:"-"`
@ -5217,17 +5217,17 @@ func (m *PendingChannelsResponse) GetWaitingCloseChannels() []*PendingChannelsRe
}
type PendingChannelsResponse_PendingChannel struct {
RemoteNodePub string `protobuf:"bytes,1,opt,name=remote_node_pub,proto3" json:"remote_node_pub,omitempty"`
ChannelPoint string `protobuf:"bytes,2,opt,name=channel_point,proto3" json:"channel_point,omitempty"`
RemoteNodePub string `protobuf:"bytes,1,opt,name=remote_node_pub,json=remoteNodePub,proto3" json:"remote_node_pub,omitempty"`
ChannelPoint string `protobuf:"bytes,2,opt,name=channel_point,json=channelPoint,proto3" json:"channel_point,omitempty"`
Capacity int64 `protobuf:"varint,3,opt,name=capacity,proto3" json:"capacity,omitempty"`
LocalBalance int64 `protobuf:"varint,4,opt,name=local_balance,proto3" json:"local_balance,omitempty"`
RemoteBalance int64 `protobuf:"varint,5,opt,name=remote_balance,proto3" json:"remote_balance,omitempty"`
LocalBalance int64 `protobuf:"varint,4,opt,name=local_balance,json=localBalance,proto3" json:"local_balance,omitempty"`
RemoteBalance int64 `protobuf:"varint,5,opt,name=remote_balance,json=remoteBalance,proto3" json:"remote_balance,omitempty"`
/// The minimum satoshis this node is required to reserve in its balance.
LocalChanReserveSat int64 `protobuf:"varint,6,opt,name=local_chan_reserve_sat,proto3" json:"local_chan_reserve_sat,omitempty"`
LocalChanReserveSat int64 `protobuf:"varint,6,opt,name=local_chan_reserve_sat,json=localChanReserveSat,proto3" json:"local_chan_reserve_sat,omitempty"`
//*
//The minimum satoshis the other node is required to reserve in its
//balance.
RemoteChanReserveSat int64 `protobuf:"varint,7,opt,name=remote_chan_reserve_sat,proto3" json:"remote_chan_reserve_sat,omitempty"`
RemoteChanReserveSat int64 `protobuf:"varint,7,opt,name=remote_chan_reserve_sat,json=remoteChanReserveSat,proto3" json:"remote_chan_reserve_sat,omitempty"`
XXX_NoUnkeyedLiteral struct{} `json:"-"`
XXX_unrecognized []byte `json:"-"`
XXX_sizecache int32 `json:"-"`
@ -5313,21 +5313,21 @@ type PendingChannelsResponse_PendingOpenChannel struct {
/// The pending channel
Channel *PendingChannelsResponse_PendingChannel `protobuf:"bytes,1,opt,name=channel,proto3" json:"channel,omitempty"`
/// The height at which this channel will be confirmed
ConfirmationHeight uint32 `protobuf:"varint,2,opt,name=confirmation_height,proto3" json:"confirmation_height,omitempty"`
ConfirmationHeight uint32 `protobuf:"varint,2,opt,name=confirmation_height,json=confirmationHeight,proto3" json:"confirmation_height,omitempty"`
//*
//The amount calculated to be paid in fees for the current set of
//commitment transactions. The fee amount is persisted with the channel
//in order to allow the fee amount to be removed and recalculated with
//each channel state update, including updates that happen after a system
//restart.
CommitFee int64 `protobuf:"varint,4,opt,name=commit_fee,proto3" json:"commit_fee,omitempty"`
CommitFee int64 `protobuf:"varint,4,opt,name=commit_fee,json=commitFee,proto3" json:"commit_fee,omitempty"`
/// The weight of the commitment transaction
CommitWeight int64 `protobuf:"varint,5,opt,name=commit_weight,proto3" json:"commit_weight,omitempty"`
CommitWeight int64 `protobuf:"varint,5,opt,name=commit_weight,json=commitWeight,proto3" json:"commit_weight,omitempty"`
//*
//The required number of satoshis per kilo-weight that the requester will
//pay at all times, for both the funding transaction and commitment
//transaction. This value can later be updated once the channel is open.
FeePerKw int64 `protobuf:"varint,6,opt,name=fee_per_kw,proto3" json:"fee_per_kw,omitempty"`
FeePerKw int64 `protobuf:"varint,6,opt,name=fee_per_kw,json=feePerKw,proto3" json:"fee_per_kw,omitempty"`
XXX_NoUnkeyedLiteral struct{} `json:"-"`
XXX_unrecognized []byte `json:"-"`
XXX_sizecache int32 `json:"-"`
@ -5401,7 +5401,7 @@ type PendingChannelsResponse_WaitingCloseChannel struct {
/// The pending channel waiting for closing tx to confirm
Channel *PendingChannelsResponse_PendingChannel `protobuf:"bytes,1,opt,name=channel,proto3" json:"channel,omitempty"`
/// The balance in satoshis encumbered in this channel
LimboBalance int64 `protobuf:"varint,2,opt,name=limbo_balance,proto3" json:"limbo_balance,omitempty"`
LimboBalance int64 `protobuf:"varint,2,opt,name=limbo_balance,json=limboBalance,proto3" json:"limbo_balance,omitempty"`
XXX_NoUnkeyedLiteral struct{} `json:"-"`
XXX_unrecognized []byte `json:"-"`
XXX_sizecache int32 `json:"-"`
@ -5454,7 +5454,7 @@ type PendingChannelsResponse_ClosedChannel struct {
/// The pending channel to be closed
Channel *PendingChannelsResponse_PendingChannel `protobuf:"bytes,1,opt,name=channel,proto3" json:"channel,omitempty"`
/// The transaction id of the closing transaction
ClosingTxid string `protobuf:"bytes,2,opt,name=closing_txid,proto3" json:"closing_txid,omitempty"`
ClosingTxid string `protobuf:"bytes,2,opt,name=closing_txid,json=closingTxid,proto3" json:"closing_txid,omitempty"`
XXX_NoUnkeyedLiteral struct{} `json:"-"`
XXX_unrecognized []byte `json:"-"`
XXX_sizecache int32 `json:"-"`
@ -5503,19 +5503,19 @@ type PendingChannelsResponse_ForceClosedChannel struct {
/// The pending channel to be force closed
Channel *PendingChannelsResponse_PendingChannel `protobuf:"bytes,1,opt,name=channel,proto3" json:"channel,omitempty"`
/// The transaction id of the closing transaction
ClosingTxid string `protobuf:"bytes,2,opt,name=closing_txid,proto3" json:"closing_txid,omitempty"`
ClosingTxid string `protobuf:"bytes,2,opt,name=closing_txid,json=closingTxid,proto3" json:"closing_txid,omitempty"`
/// The balance in satoshis encumbered in this pending channel
LimboBalance int64 `protobuf:"varint,3,opt,name=limbo_balance,proto3" json:"limbo_balance,omitempty"`
LimboBalance int64 `protobuf:"varint,3,opt,name=limbo_balance,json=limboBalance,proto3" json:"limbo_balance,omitempty"`
/// The height at which funds can be swept into the wallet
MaturityHeight uint32 `protobuf:"varint,4,opt,name=maturity_height,proto3" json:"maturity_height,omitempty"`
MaturityHeight uint32 `protobuf:"varint,4,opt,name=maturity_height,json=maturityHeight,proto3" json:"maturity_height,omitempty"`
//
//Remaining # of blocks until the commitment output can be swept.
//Negative values indicate how many blocks have passed since becoming
//mature.
BlocksTilMaturity int32 `protobuf:"varint,5,opt,name=blocks_til_maturity,proto3" json:"blocks_til_maturity,omitempty"`
BlocksTilMaturity int32 `protobuf:"varint,5,opt,name=blocks_til_maturity,json=blocksTilMaturity,proto3" json:"blocks_til_maturity,omitempty"`
/// The total value of funds successfully recovered from this channel
RecoveredBalance int64 `protobuf:"varint,6,opt,name=recovered_balance,proto3" json:"recovered_balance,omitempty"`
PendingHtlcs []*PendingHTLC `protobuf:"bytes,8,rep,name=pending_htlcs,proto3" json:"pending_htlcs,omitempty"`
RecoveredBalance int64 `protobuf:"varint,6,opt,name=recovered_balance,json=recoveredBalance,proto3" json:"recovered_balance,omitempty"`
PendingHtlcs []*PendingHTLC `protobuf:"bytes,8,rep,name=pending_htlcs,json=pendingHtlcs,proto3" json:"pending_htlcs,omitempty"`
XXX_NoUnkeyedLiteral struct{} `json:"-"`
XXX_unrecognized []byte `json:"-"`
XXX_sizecache int32 `json:"-"`
@ -5674,23 +5674,23 @@ type isChannelEventUpdate_Channel interface {
}
type ChannelEventUpdate_OpenChannel struct {
OpenChannel *Channel `protobuf:"bytes,1,opt,name=open_channel,proto3,oneof"`
OpenChannel *Channel `protobuf:"bytes,1,opt,name=open_channel,json=openChannel,proto3,oneof"`
}
type ChannelEventUpdate_ClosedChannel struct {
ClosedChannel *ChannelCloseSummary `protobuf:"bytes,2,opt,name=closed_channel,proto3,oneof"`
ClosedChannel *ChannelCloseSummary `protobuf:"bytes,2,opt,name=closed_channel,json=closedChannel,proto3,oneof"`
}
type ChannelEventUpdate_ActiveChannel struct {
ActiveChannel *ChannelPoint `protobuf:"bytes,3,opt,name=active_channel,proto3,oneof"`
ActiveChannel *ChannelPoint `protobuf:"bytes,3,opt,name=active_channel,json=activeChannel,proto3,oneof"`
}
type ChannelEventUpdate_InactiveChannel struct {
InactiveChannel *ChannelPoint `protobuf:"bytes,4,opt,name=inactive_channel,proto3,oneof"`
InactiveChannel *ChannelPoint `protobuf:"bytes,4,opt,name=inactive_channel,json=inactiveChannel,proto3,oneof"`
}
type ChannelEventUpdate_PendingOpenChannel struct {
PendingOpenChannel *PendingUpdate `protobuf:"bytes,6,opt,name=pending_open_channel,proto3,oneof"`
PendingOpenChannel *PendingUpdate `protobuf:"bytes,6,opt,name=pending_open_channel,json=pendingOpenChannel,proto3,oneof"`
}
func (*ChannelEventUpdate_OpenChannel) isChannelEventUpdate_Channel() {}
@ -5796,11 +5796,11 @@ var xxx_messageInfo_WalletBalanceRequest proto.InternalMessageInfo
type WalletBalanceResponse struct {
/// The balance of the wallet
TotalBalance int64 `protobuf:"varint,1,opt,name=total_balance,proto3" json:"total_balance,omitempty"`
TotalBalance int64 `protobuf:"varint,1,opt,name=total_balance,json=totalBalance,proto3" json:"total_balance,omitempty"`
/// The confirmed balance of a wallet(with >= 1 confirmations)
ConfirmedBalance int64 `protobuf:"varint,2,opt,name=confirmed_balance,proto3" json:"confirmed_balance,omitempty"`
ConfirmedBalance int64 `protobuf:"varint,2,opt,name=confirmed_balance,json=confirmedBalance,proto3" json:"confirmed_balance,omitempty"`
/// The unconfirmed balance of a wallet(with 0 confirmations)
UnconfirmedBalance int64 `protobuf:"varint,3,opt,name=unconfirmed_balance,proto3" json:"unconfirmed_balance,omitempty"`
UnconfirmedBalance int64 `protobuf:"varint,3,opt,name=unconfirmed_balance,json=unconfirmedBalance,proto3" json:"unconfirmed_balance,omitempty"`
XXX_NoUnkeyedLiteral struct{} `json:"-"`
XXX_unrecognized []byte `json:"-"`
XXX_sizecache int32 `json:"-"`
@ -5887,7 +5887,7 @@ type ChannelBalanceResponse struct {
/// Sum of channels balances denominated in satoshis
Balance int64 `protobuf:"varint,1,opt,name=balance,proto3" json:"balance,omitempty"`
/// Sum of channels pending balances denominated in satoshis
PendingOpenBalance int64 `protobuf:"varint,2,opt,name=pending_open_balance,proto3" json:"pending_open_balance,omitempty"`
PendingOpenBalance int64 `protobuf:"varint,2,opt,name=pending_open_balance,json=pendingOpenBalance,proto3" json:"pending_open_balance,omitempty"`
XXX_NoUnkeyedLiteral struct{} `json:"-"`
XXX_unrecognized []byte `json:"-"`
XXX_sizecache int32 `json:"-"`
@ -6263,7 +6263,7 @@ type QueryRoutesResponse struct {
//*
//The success probability of the returned route based on the current mission
//control state. [EXPERIMENTAL]
SuccessProb float64 `protobuf:"fixed64,2,opt,name=success_prob,proto3" json:"success_prob,omitempty"`
SuccessProb float64 `protobuf:"fixed64,2,opt,name=success_prob,json=successProb,proto3" json:"success_prob,omitempty"`
XXX_NoUnkeyedLiteral struct{} `json:"-"`
XXX_unrecognized []byte `json:"-"`
XXX_sizecache int32 `json:"-"`
@ -6313,33 +6313,33 @@ type Hop struct {
//The unique channel ID for the channel. The first 3 bytes are the block
//height, the next 3 the index within the block, and the last 2 bytes are the
//output index for the channel.
ChanId uint64 `protobuf:"varint,1,opt,name=chan_id,proto3" json:"chan_id,omitempty"`
ChanCapacity int64 `protobuf:"varint,2,opt,name=chan_capacity,proto3" json:"chan_capacity,omitempty"`
AmtToForward int64 `protobuf:"varint,3,opt,name=amt_to_forward,proto3" json:"amt_to_forward,omitempty"` // Deprecated: Do not use.
Fee int64 `protobuf:"varint,4,opt,name=fee,proto3" json:"fee,omitempty"` // Deprecated: Do not use.
ChanId uint64 `protobuf:"varint,1,opt,name=chan_id,json=chanId,proto3" json:"chan_id,omitempty"`
ChanCapacity int64 `protobuf:"varint,2,opt,name=chan_capacity,json=chanCapacity,proto3" json:"chan_capacity,omitempty"`
AmtToForward int64 `protobuf:"varint,3,opt,name=amt_to_forward,json=amtToForward,proto3" json:"amt_to_forward,omitempty"` // Deprecated: Do not use.
Fee int64 `protobuf:"varint,4,opt,name=fee,proto3" json:"fee,omitempty"` // Deprecated: Do not use.
Expiry uint32 `protobuf:"varint,5,opt,name=expiry,proto3" json:"expiry,omitempty"`
AmtToForwardMsat int64 `protobuf:"varint,6,opt,name=amt_to_forward_msat,proto3" json:"amt_to_forward_msat,omitempty"`
FeeMsat int64 `protobuf:"varint,7,opt,name=fee_msat,proto3" json:"fee_msat,omitempty"`
AmtToForwardMsat int64 `protobuf:"varint,6,opt,name=amt_to_forward_msat,json=amtToForwardMsat,proto3" json:"amt_to_forward_msat,omitempty"`
FeeMsat int64 `protobuf:"varint,7,opt,name=fee_msat,json=feeMsat,proto3" json:"fee_msat,omitempty"`
//*
//An optional public key of the hop. If the public key is given, the payment
//can be executed without relying on a copy of the channel graph.
PubKey string `protobuf:"bytes,8,opt,name=pub_key,proto3" json:"pub_key,omitempty"`
PubKey string `protobuf:"bytes,8,opt,name=pub_key,json=pubKey,proto3" json:"pub_key,omitempty"`
//*
//If set to true, then this hop will be encoded using the new variable length
//TLV format. Note that if any custom tlv_records below are specified, then
//this field MUST be set to true for them to be encoded properly.
TlvPayload bool `protobuf:"varint,9,opt,name=tlv_payload,proto3" json:"tlv_payload,omitempty"`
TlvPayload bool `protobuf:"varint,9,opt,name=tlv_payload,json=tlvPayload,proto3" json:"tlv_payload,omitempty"`
//*
//An optional TLV record tha singals the use of an MPP payment. If present,
//the receiver will enforce that that the same mpp_record is included in the
//final hop payload of all non-zero payments in the HTLC set. If empty, a
//regular single-shot payment is or was attempted.
MppRecord *MPPRecord `protobuf:"bytes,10,opt,name=mpp_record,proto3" json:"mpp_record,omitempty"`
MppRecord *MPPRecord `protobuf:"bytes,10,opt,name=mpp_record,json=mppRecord,proto3" json:"mpp_record,omitempty"`
//*
//An optional set of key-value TLV records. This is useful within the context
//of the SendToRoute call as it allows callers to specify arbitrary K-V pairs
//to drop off at each hop within the onion.
CustomRecords map[uint64][]byte `protobuf:"bytes,11,rep,name=custom_records,proto3" json:"custom_records,omitempty" protobuf_key:"varint,1,opt,name=key,proto3" protobuf_val:"bytes,2,opt,name=value,proto3"`
CustomRecords map[uint64][]byte `protobuf:"bytes,11,rep,name=custom_records,json=customRecords,proto3" json:"custom_records,omitempty" protobuf_key:"varint,1,opt,name=key,proto3" protobuf_val:"bytes,2,opt,name=value,proto3"`
XXX_NoUnkeyedLiteral struct{} `json:"-"`
XXX_unrecognized []byte `json:"-"`
XXX_sizecache int32 `json:"-"`
@ -6455,13 +6455,13 @@ type MPPRecord struct {
//payer of a multi-path payment. The payment_addr must be the same for all
//subpayments, and match the payment_addr provided in the receiver's invoice.
//The same payment_addr must be used on all subpayments.
PaymentAddr []byte `protobuf:"bytes,11,opt,name=payment_addr,proto3" json:"payment_addr,omitempty"`
PaymentAddr []byte `protobuf:"bytes,11,opt,name=payment_addr,json=paymentAddr,proto3" json:"payment_addr,omitempty"`
//*
//The total amount in milli-satoshis being sent as part of a larger multi-path
//payment. The caller is responsible for ensuring subpayments to the same node
//and payment_hash sum exactly to total_amt_msat. The same
//total_amt_msat must be used on all subpayments.
TotalAmtMsat int64 `protobuf:"varint,10,opt,name=total_amt_msat,proto3" json:"total_amt_msat,omitempty"`
TotalAmtMsat int64 `protobuf:"varint,10,opt,name=total_amt_msat,json=totalAmtMsat,proto3" json:"total_amt_msat,omitempty"`
XXX_NoUnkeyedLiteral struct{} `json:"-"`
XXX_unrecognized []byte `json:"-"`
XXX_sizecache int32 `json:"-"`
@ -6518,28 +6518,28 @@ type Route struct {
//value that should be extended to the first hop in the route. All other hops
//will decrement the time-lock as advertised, leaving enough time for all
//hops to wait for or present the payment preimage to complete the payment.
TotalTimeLock uint32 `protobuf:"varint,1,opt,name=total_time_lock,proto3" json:"total_time_lock,omitempty"`
TotalTimeLock uint32 `protobuf:"varint,1,opt,name=total_time_lock,json=totalTimeLock,proto3" json:"total_time_lock,omitempty"`
//*
//The sum of the fees paid at each hop within the final route. In the case
//of a one-hop payment, this value will be zero as we don't need to pay a fee
//to ourselves.
TotalFees int64 `protobuf:"varint,2,opt,name=total_fees,proto3" json:"total_fees,omitempty"` // Deprecated: Do not use.
TotalFees int64 `protobuf:"varint,2,opt,name=total_fees,json=totalFees,proto3" json:"total_fees,omitempty"` // Deprecated: Do not use.
//*
//The total amount of funds required to complete a payment over this route.
//This value includes the cumulative fees at each hop. As a result, the HTLC
//extended to the first-hop in the route will need to have at least this many
//satoshis, otherwise the route will fail at an intermediate node due to an
//insufficient amount of fees.
TotalAmt int64 `protobuf:"varint,3,opt,name=total_amt,proto3" json:"total_amt,omitempty"` // Deprecated: Do not use.
TotalAmt int64 `protobuf:"varint,3,opt,name=total_amt,json=totalAmt,proto3" json:"total_amt,omitempty"` // Deprecated: Do not use.
//*
//Contains details concerning the specific forwarding details at each hop.
Hops []*Hop `protobuf:"bytes,4,rep,name=hops,proto3" json:"hops,omitempty"`
//*
//The total fees in millisatoshis.
TotalFeesMsat int64 `protobuf:"varint,5,opt,name=total_fees_msat,proto3" json:"total_fees_msat,omitempty"`
TotalFeesMsat int64 `protobuf:"varint,5,opt,name=total_fees_msat,json=totalFeesMsat,proto3" json:"total_fees_msat,omitempty"`
//*
//The total amount in millisatoshis.
TotalAmtMsat int64 `protobuf:"varint,6,opt,name=total_amt_msat,proto3" json:"total_amt_msat,omitempty"`
TotalAmtMsat int64 `protobuf:"varint,6,opt,name=total_amt_msat,json=totalAmtMsat,proto3" json:"total_amt_msat,omitempty"`
XXX_NoUnkeyedLiteral struct{} `json:"-"`
XXX_unrecognized []byte `json:"-"`
XXX_sizecache int32 `json:"-"`
@ -6671,9 +6671,9 @@ type NodeInfo struct {
//it for each outgoing edge.
Node *LightningNode `protobuf:"bytes,1,opt,name=node,proto3" json:"node,omitempty"`
/// The total number of channels for the node.
NumChannels uint32 `protobuf:"varint,2,opt,name=num_channels,proto3" json:"num_channels,omitempty"`
NumChannels uint32 `protobuf:"varint,2,opt,name=num_channels,json=numChannels,proto3" json:"num_channels,omitempty"`
/// The sum of all channels capacity for the node, denominated in satoshis.
TotalCapacity int64 `protobuf:"varint,3,opt,name=total_capacity,proto3" json:"total_capacity,omitempty"`
TotalCapacity int64 `protobuf:"varint,3,opt,name=total_capacity,json=totalCapacity,proto3" json:"total_capacity,omitempty"`
/// A list of all public channels for the node.
Channels []*ChannelEdge `protobuf:"bytes,4,rep,name=channels,proto3" json:"channels,omitempty"`
XXX_NoUnkeyedLiteral struct{} `json:"-"`
@ -6740,8 +6740,8 @@ func (m *NodeInfo) GetChannels() []*ChannelEdge {
//graph is directed, a node will also have an incoming edge attached to it for
//each outgoing edge.
type LightningNode struct {
LastUpdate uint32 `protobuf:"varint,1,opt,name=last_update,proto3" json:"last_update,omitempty"`
PubKey string `protobuf:"bytes,2,opt,name=pub_key,proto3" json:"pub_key,omitempty"`
LastUpdate uint32 `protobuf:"varint,1,opt,name=last_update,json=lastUpdate,proto3" json:"last_update,omitempty"`
PubKey string `protobuf:"bytes,2,opt,name=pub_key,json=pubKey,proto3" json:"pub_key,omitempty"`
Alias string `protobuf:"bytes,3,opt,name=alias,proto3" json:"alias,omitempty"`
Addresses []*NodeAddress `protobuf:"bytes,4,rep,name=addresses,proto3" json:"addresses,omitempty"`
Color string `protobuf:"bytes,5,opt,name=color,proto3" json:"color,omitempty"`
@ -6866,13 +6866,13 @@ func (m *NodeAddress) GetAddr() string {
}
type RoutingPolicy struct {
TimeLockDelta uint32 `protobuf:"varint,1,opt,name=time_lock_delta,proto3" json:"time_lock_delta,omitempty"`
MinHtlc int64 `protobuf:"varint,2,opt,name=min_htlc,proto3" json:"min_htlc,omitempty"`
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"`
TimeLockDelta uint32 `protobuf:"varint,1,opt,name=time_lock_delta,json=timeLockDelta,proto3" json:"time_lock_delta,omitempty"`
MinHtlc int64 `protobuf:"varint,2,opt,name=min_htlc,json=minHtlc,proto3" json:"min_htlc,omitempty"`
FeeBaseMsat int64 `protobuf:"varint,3,opt,name=fee_base_msat,json=feeBaseMsat,proto3" json:"fee_base_msat,omitempty"`
FeeRateMilliMsat int64 `protobuf:"varint,4,opt,name=fee_rate_milli_msat,json=feeRateMilliMsat,proto3" json:"fee_rate_milli_msat,omitempty"`
Disabled bool `protobuf:"varint,5,opt,name=disabled,proto3" json:"disabled,omitempty"`
MaxHtlcMsat uint64 `protobuf:"varint,6,opt,name=max_htlc_msat,proto3" json:"max_htlc_msat,omitempty"`
LastUpdate uint32 `protobuf:"varint,7,opt,name=last_update,proto3" json:"last_update,omitempty"`
MaxHtlcMsat uint64 `protobuf:"varint,6,opt,name=max_htlc_msat,json=maxHtlcMsat,proto3" json:"max_htlc_msat,omitempty"`
LastUpdate uint32 `protobuf:"varint,7,opt,name=last_update,json=lastUpdate,proto3" json:"last_update,omitempty"`
XXX_NoUnkeyedLiteral struct{} `json:"-"`
XXX_unrecognized []byte `json:"-"`
XXX_sizecache int32 `json:"-"`
@ -6963,14 +6963,14 @@ type ChannelEdge struct {
//The unique channel ID for the channel. The first 3 bytes are the block
//height, the next 3 the index within the block, and the last 2 bytes are the
//output index for the channel.
ChannelId uint64 `protobuf:"varint,1,opt,name=channel_id,proto3" json:"channel_id,omitempty"`
ChanPoint string `protobuf:"bytes,2,opt,name=chan_point,proto3" json:"chan_point,omitempty"`
LastUpdate uint32 `protobuf:"varint,3,opt,name=last_update,proto3" json:"last_update,omitempty"` // Deprecated: Do not use.
Node1Pub string `protobuf:"bytes,4,opt,name=node1_pub,proto3" json:"node1_pub,omitempty"`
Node2Pub string `protobuf:"bytes,5,opt,name=node2_pub,proto3" json:"node2_pub,omitempty"`
ChannelId uint64 `protobuf:"varint,1,opt,name=channel_id,json=channelId,proto3" json:"channel_id,omitempty"`
ChanPoint string `protobuf:"bytes,2,opt,name=chan_point,json=chanPoint,proto3" json:"chan_point,omitempty"`
LastUpdate uint32 `protobuf:"varint,3,opt,name=last_update,json=lastUpdate,proto3" json:"last_update,omitempty"` // Deprecated: Do not use.
Node1Pub string `protobuf:"bytes,4,opt,name=node1_pub,json=node1Pub,proto3" json:"node1_pub,omitempty"`
Node2Pub string `protobuf:"bytes,5,opt,name=node2_pub,json=node2Pub,proto3" json:"node2_pub,omitempty"`
Capacity int64 `protobuf:"varint,6,opt,name=capacity,proto3" json:"capacity,omitempty"`
Node1Policy *RoutingPolicy `protobuf:"bytes,7,opt,name=node1_policy,proto3" json:"node1_policy,omitempty"`
Node2Policy *RoutingPolicy `protobuf:"bytes,8,opt,name=node2_policy,proto3" json:"node2_policy,omitempty"`
Node1Policy *RoutingPolicy `protobuf:"bytes,7,opt,name=node1_policy,json=node1Policy,proto3" json:"node1_policy,omitempty"`
Node2Policy *RoutingPolicy `protobuf:"bytes,8,opt,name=node2_policy,json=node2Policy,proto3" json:"node2_policy,omitempty"`
XXX_NoUnkeyedLiteral struct{} `json:"-"`
XXX_unrecognized []byte `json:"-"`
XXX_sizecache int32 `json:"-"`
@ -7063,7 +7063,7 @@ type ChannelGraphRequest struct {
//Whether unannounced channels are included in the response or not. If set,
//unannounced channels are included. Unannounced channels are both private
//channels, and public channels that are not yet announced to the network.
IncludeUnannounced bool `protobuf:"varint,1,opt,name=include_unannounced,proto3" json:"include_unannounced,omitempty"`
IncludeUnannounced bool `protobuf:"varint,1,opt,name=include_unannounced,json=includeUnannounced,proto3" json:"include_unannounced,omitempty"`
XXX_NoUnkeyedLiteral struct{} `json:"-"`
XXX_unrecognized []byte `json:"-"`
XXX_sizecache int32 `json:"-"`
@ -7226,18 +7226,18 @@ func (m *NetworkInfoRequest) XXX_DiscardUnknown() {
var xxx_messageInfo_NetworkInfoRequest proto.InternalMessageInfo
type NetworkInfo struct {
GraphDiameter uint32 `protobuf:"varint,1,opt,name=graph_diameter,proto3" json:"graph_diameter,omitempty"`
AvgOutDegree float64 `protobuf:"fixed64,2,opt,name=avg_out_degree,proto3" json:"avg_out_degree,omitempty"`
MaxOutDegree uint32 `protobuf:"varint,3,opt,name=max_out_degree,proto3" json:"max_out_degree,omitempty"`
NumNodes uint32 `protobuf:"varint,4,opt,name=num_nodes,proto3" json:"num_nodes,omitempty"`
NumChannels uint32 `protobuf:"varint,5,opt,name=num_channels,proto3" json:"num_channels,omitempty"`
TotalNetworkCapacity int64 `protobuf:"varint,6,opt,name=total_network_capacity,proto3" json:"total_network_capacity,omitempty"`
AvgChannelSize float64 `protobuf:"fixed64,7,opt,name=avg_channel_size,proto3" json:"avg_channel_size,omitempty"`
MinChannelSize int64 `protobuf:"varint,8,opt,name=min_channel_size,proto3" json:"min_channel_size,omitempty"`
MaxChannelSize int64 `protobuf:"varint,9,opt,name=max_channel_size,proto3" json:"max_channel_size,omitempty"`
MedianChannelSizeSat int64 `protobuf:"varint,10,opt,name=median_channel_size_sat,proto3" json:"median_channel_size_sat,omitempty"`
GraphDiameter uint32 `protobuf:"varint,1,opt,name=graph_diameter,json=graphDiameter,proto3" json:"graph_diameter,omitempty"`
AvgOutDegree float64 `protobuf:"fixed64,2,opt,name=avg_out_degree,json=avgOutDegree,proto3" json:"avg_out_degree,omitempty"`
MaxOutDegree uint32 `protobuf:"varint,3,opt,name=max_out_degree,json=maxOutDegree,proto3" json:"max_out_degree,omitempty"`
NumNodes uint32 `protobuf:"varint,4,opt,name=num_nodes,json=numNodes,proto3" json:"num_nodes,omitempty"`
NumChannels uint32 `protobuf:"varint,5,opt,name=num_channels,json=numChannels,proto3" json:"num_channels,omitempty"`
TotalNetworkCapacity int64 `protobuf:"varint,6,opt,name=total_network_capacity,json=totalNetworkCapacity,proto3" json:"total_network_capacity,omitempty"`
AvgChannelSize float64 `protobuf:"fixed64,7,opt,name=avg_channel_size,json=avgChannelSize,proto3" json:"avg_channel_size,omitempty"`
MinChannelSize int64 `protobuf:"varint,8,opt,name=min_channel_size,json=minChannelSize,proto3" json:"min_channel_size,omitempty"`
MaxChannelSize int64 `protobuf:"varint,9,opt,name=max_channel_size,json=maxChannelSize,proto3" json:"max_channel_size,omitempty"`
MedianChannelSizeSat int64 `protobuf:"varint,10,opt,name=median_channel_size_sat,json=medianChannelSizeSat,proto3" json:"median_channel_size_sat,omitempty"`
// The number of edges marked as zombies.
NumZombieChans uint64 `protobuf:"varint,11,opt,name=num_zombie_chans,proto3" json:"num_zombie_chans,omitempty"`
NumZombieChans uint64 `protobuf:"varint,11,opt,name=num_zombie_chans,json=numZombieChans,proto3" json:"num_zombie_chans,omitempty"`
XXX_NoUnkeyedLiteral struct{} `json:"-"`
XXX_unrecognized []byte `json:"-"`
XXX_sizecache int32 `json:"-"`
@ -7716,17 +7716,17 @@ func (m *ClosedChannelUpdate) GetChanPoint() *ChannelPoint {
type HopHint struct {
/// The public key of the node at the start of the channel.
NodeId string `protobuf:"bytes,1,opt,name=node_id,proto3" json:"node_id,omitempty"`
NodeId string `protobuf:"bytes,1,opt,name=node_id,json=nodeId,proto3" json:"node_id,omitempty"`
/// The unique identifier of the channel.
ChanId uint64 `protobuf:"varint,2,opt,name=chan_id,proto3" json:"chan_id,omitempty"`
ChanId uint64 `protobuf:"varint,2,opt,name=chan_id,json=chanId,proto3" json:"chan_id,omitempty"`
/// The base fee of the channel denominated in millisatoshis.
FeeBaseMsat uint32 `protobuf:"varint,3,opt,name=fee_base_msat,proto3" json:"fee_base_msat,omitempty"`
FeeBaseMsat uint32 `protobuf:"varint,3,opt,name=fee_base_msat,json=feeBaseMsat,proto3" json:"fee_base_msat,omitempty"`
//*
//The fee rate of the channel for sending one satoshi across it denominated in
//millionths of a satoshi.
FeeProportionalMillionths uint32 `protobuf:"varint,4,opt,name=fee_proportional_millionths,proto3" json:"fee_proportional_millionths,omitempty"`
FeeProportionalMillionths uint32 `protobuf:"varint,4,opt,name=fee_proportional_millionths,json=feeProportionalMillionths,proto3" json:"fee_proportional_millionths,omitempty"`
/// The time-lock delta of the channel.
CltvExpiryDelta uint32 `protobuf:"varint,5,opt,name=cltv_expiry_delta,proto3" json:"cltv_expiry_delta,omitempty"`
CltvExpiryDelta uint32 `protobuf:"varint,5,opt,name=cltv_expiry_delta,json=cltvExpiryDelta,proto3" json:"cltv_expiry_delta,omitempty"`
XXX_NoUnkeyedLiteral struct{} `json:"-"`
XXX_unrecognized []byte `json:"-"`
XXX_sizecache int32 `json:"-"`
@ -7796,7 +7796,7 @@ type RouteHint struct {
//*
//A list of hop hints that when chained together can assist in reaching a
//specific destination.
HopHints []*HopHint `protobuf:"bytes,1,rep,name=hop_hints,proto3" json:"hop_hints,omitempty"`
HopHints []*HopHint `protobuf:"bytes,1,rep,name=hop_hints,json=hopHints,proto3" json:"hop_hints,omitempty"`
XXX_NoUnkeyedLiteral struct{} `json:"-"`
XXX_unrecognized []byte `json:"-"`
XXX_sizecache int32 `json:"-"`
@ -7845,11 +7845,11 @@ type Invoice struct {
//The hex-encoded preimage (32 byte) which will allow settling an incoming
//HTLC payable to this preimage. When using REST, this field must be encoded
//as base64.
RPreimage []byte `protobuf:"bytes,3,opt,name=r_preimage,proto3" json:"r_preimage,omitempty"`
RPreimage []byte `protobuf:"bytes,3,opt,name=r_preimage,json=rPreimage,proto3" json:"r_preimage,omitempty"`
//*
//The hash of the preimage. When using REST, this field must be encoded as
//base64.
RHash []byte `protobuf:"bytes,4,opt,name=r_hash,proto3" json:"r_hash,omitempty"`
RHash []byte `protobuf:"bytes,4,opt,name=r_hash,json=rHash,proto3" json:"r_hash,omitempty"`
//*
//The value of this invoice in satoshis
//
@ -7859,34 +7859,34 @@ type Invoice struct {
//The value of this invoice in millisatoshis
//
//The fields value and value_msat are mutually exclusive.
ValueMsat int64 `protobuf:"varint,23,opt,name=value_msat,proto3" json:"value_msat,omitempty"`
ValueMsat int64 `protobuf:"varint,23,opt,name=value_msat,json=valueMsat,proto3" json:"value_msat,omitempty"`
/// Whether this invoice has been fulfilled
Settled bool `protobuf:"varint,6,opt,name=settled,proto3" json:"settled,omitempty"` // Deprecated: Do not use.
/// When this invoice was created
CreationDate int64 `protobuf:"varint,7,opt,name=creation_date,proto3" json:"creation_date,omitempty"`
CreationDate int64 `protobuf:"varint,7,opt,name=creation_date,json=creationDate,proto3" json:"creation_date,omitempty"`
/// When this invoice was settled
SettleDate int64 `protobuf:"varint,8,opt,name=settle_date,proto3" json:"settle_date,omitempty"`
SettleDate int64 `protobuf:"varint,8,opt,name=settle_date,json=settleDate,proto3" json:"settle_date,omitempty"`
//*
//A bare-bones invoice for a payment within the Lightning Network. With the
//details of the invoice, the sender has all the data necessary to send a
//payment to the recipient.
PaymentRequest string `protobuf:"bytes,9,opt,name=payment_request,proto3" json:"payment_request,omitempty"`
PaymentRequest string `protobuf:"bytes,9,opt,name=payment_request,json=paymentRequest,proto3" json:"payment_request,omitempty"`
//*
//Hash (SHA-256) of a description of the payment. Used if the description of
//payment (memo) is too long to naturally fit within the description field
//of an encoded payment request. When using REST, this field must be encoded
//as base64.
DescriptionHash []byte `protobuf:"bytes,10,opt,name=description_hash,proto3" json:"description_hash,omitempty"`
DescriptionHash []byte `protobuf:"bytes,10,opt,name=description_hash,json=descriptionHash,proto3" json:"description_hash,omitempty"`
/// Payment request expiry time in seconds. Default is 3600 (1 hour).
Expiry int64 `protobuf:"varint,11,opt,name=expiry,proto3" json:"expiry,omitempty"`
/// Fallback on-chain address.
FallbackAddr string `protobuf:"bytes,12,opt,name=fallback_addr,proto3" json:"fallback_addr,omitempty"`
FallbackAddr string `protobuf:"bytes,12,opt,name=fallback_addr,json=fallbackAddr,proto3" json:"fallback_addr,omitempty"`
/// Delta to use for the time-lock of the CLTV extended to the final hop.
CltvExpiry uint64 `protobuf:"varint,13,opt,name=cltv_expiry,proto3" json:"cltv_expiry,omitempty"`
CltvExpiry uint64 `protobuf:"varint,13,opt,name=cltv_expiry,json=cltvExpiry,proto3" json:"cltv_expiry,omitempty"`
//*
//Route hints that can each be individually used to assist in reaching the
//invoice's destination.
RouteHints []*RouteHint `protobuf:"bytes,14,rep,name=route_hints,proto3" json:"route_hints,omitempty"`
RouteHints []*RouteHint `protobuf:"bytes,14,rep,name=route_hints,json=routeHints,proto3" json:"route_hints,omitempty"`
/// Whether this invoice should include routing hints for private channels.
Private bool `protobuf:"varint,15,opt,name=private,proto3" json:"private,omitempty"`
//*
@ -7894,15 +7894,15 @@ type Invoice struct {
//this index making it monotonically increasing. Callers to the
//SubscribeInvoices call can use this to instantly get notified of all added
//invoices with an add_index greater than this one.
AddIndex uint64 `protobuf:"varint,16,opt,name=add_index,proto3" json:"add_index,omitempty"`
AddIndex uint64 `protobuf:"varint,16,opt,name=add_index,json=addIndex,proto3" json:"add_index,omitempty"`
//*
//The "settle" index of this invoice. Each newly settled invoice will
//increment this index making it monotonically increasing. Callers to the
//SubscribeInvoices call can use this to instantly get notified of all
//settled invoices with an settle_index greater than this one.
SettleIndex uint64 `protobuf:"varint,17,opt,name=settle_index,proto3" json:"settle_index,omitempty"`
SettleIndex uint64 `protobuf:"varint,17,opt,name=settle_index,json=settleIndex,proto3" json:"settle_index,omitempty"`
/// Deprecated, use amt_paid_sat or amt_paid_msat.
AmtPaid int64 `protobuf:"varint,18,opt,name=amt_paid,proto3" json:"amt_paid,omitempty"` // Deprecated: Do not use.
AmtPaid int64 `protobuf:"varint,18,opt,name=amt_paid,json=amtPaid,proto3" json:"amt_paid,omitempty"` // Deprecated: Do not use.
//*
//The amount that was accepted for this invoice, in satoshis. This will ONLY
//be set if this invoice has been settled. We provide this field as if the
@ -7910,7 +7910,7 @@ type Invoice struct {
//was ultimately accepted. Additionally, it's possible that the sender paid
//MORE that was specified in the original invoice. So we'll record that here
//as well.
AmtPaidSat int64 `protobuf:"varint,19,opt,name=amt_paid_sat,proto3" json:"amt_paid_sat,omitempty"`
AmtPaidSat int64 `protobuf:"varint,19,opt,name=amt_paid_sat,json=amtPaidSat,proto3" json:"amt_paid_sat,omitempty"`
//*
//The amount that was accepted for this invoice, in millisatoshis. This will
//ONLY be set if this invoice has been settled. We provide this field as if
@ -7918,7 +7918,7 @@ type Invoice struct {
//amount was ultimately accepted. Additionally, it's possible that the sender
//paid MORE that was specified in the original invoice. So we'll record that
//here as well.
AmtPaidMsat int64 `protobuf:"varint,20,opt,name=amt_paid_msat,proto3" json:"amt_paid_msat,omitempty"`
AmtPaidMsat int64 `protobuf:"varint,20,opt,name=amt_paid_msat,json=amtPaidMsat,proto3" json:"amt_paid_msat,omitempty"`
//*
//The state the invoice is in.
State Invoice_InvoiceState `protobuf:"varint,21,opt,name=state,proto3,enum=lnrpc.Invoice_InvoiceState" json:"state,omitempty"`
@ -7929,7 +7929,7 @@ type Invoice struct {
//*
//Indicates if this invoice was a spontaneous payment that arrived via keysend
//[EXPERIMENTAL].
IsKeysend bool `protobuf:"varint,25,opt,name=is_keysend,proto3" json:"is_keysend,omitempty"`
IsKeysend bool `protobuf:"varint,25,opt,name=is_keysend,json=isKeysend,proto3" json:"is_keysend,omitempty"`
XXX_NoUnkeyedLiteral struct{} `json:"-"`
XXX_unrecognized []byte `json:"-"`
XXX_sizecache int32 `json:"-"`
@ -8133,25 +8133,25 @@ func (m *Invoice) GetIsKeysend() bool {
/// Details of an HTLC that paid to an invoice
type InvoiceHTLC struct {
/// Short channel id over which the htlc was received.
ChanId uint64 `protobuf:"varint,1,opt,name=chan_id,proto3" json:"chan_id,omitempty"`
ChanId uint64 `protobuf:"varint,1,opt,name=chan_id,json=chanId,proto3" json:"chan_id,omitempty"`
/// Index identifying the htlc on the channel.
HtlcIndex uint64 `protobuf:"varint,2,opt,name=htlc_index,proto3" json:"htlc_index,omitempty"`
HtlcIndex uint64 `protobuf:"varint,2,opt,name=htlc_index,json=htlcIndex,proto3" json:"htlc_index,omitempty"`
/// The amount of the htlc in msat.
AmtMsat uint64 `protobuf:"varint,3,opt,name=amt_msat,proto3" json:"amt_msat,omitempty"`
AmtMsat uint64 `protobuf:"varint,3,opt,name=amt_msat,json=amtMsat,proto3" json:"amt_msat,omitempty"`
/// Block height at which this htlc was accepted.
AcceptHeight int32 `protobuf:"varint,4,opt,name=accept_height,proto3" json:"accept_height,omitempty"`
AcceptHeight int32 `protobuf:"varint,4,opt,name=accept_height,json=acceptHeight,proto3" json:"accept_height,omitempty"`
/// Time at which this htlc was accepted.
AcceptTime int64 `protobuf:"varint,5,opt,name=accept_time,proto3" json:"accept_time,omitempty"`
AcceptTime int64 `protobuf:"varint,5,opt,name=accept_time,json=acceptTime,proto3" json:"accept_time,omitempty"`
/// Time at which this htlc was settled or canceled.
ResolveTime int64 `protobuf:"varint,6,opt,name=resolve_time,proto3" json:"resolve_time,omitempty"`
ResolveTime int64 `protobuf:"varint,6,opt,name=resolve_time,json=resolveTime,proto3" json:"resolve_time,omitempty"`
/// Block height at which this htlc expires.
ExpiryHeight int32 `protobuf:"varint,7,opt,name=expiry_height,proto3" json:"expiry_height,omitempty"`
ExpiryHeight int32 `protobuf:"varint,7,opt,name=expiry_height,json=expiryHeight,proto3" json:"expiry_height,omitempty"`
/// Current state the htlc is in.
State InvoiceHTLCState `protobuf:"varint,8,opt,name=state,proto3,enum=lnrpc.InvoiceHTLCState" json:"state,omitempty"`
/// Custom tlv records.
CustomRecords map[uint64][]byte `protobuf:"bytes,9,rep,name=custom_records,proto3" json:"custom_records,omitempty" protobuf_key:"varint,1,opt,name=key,proto3" protobuf_val:"bytes,2,opt,name=value,proto3"`
CustomRecords map[uint64][]byte `protobuf:"bytes,9,rep,name=custom_records,json=customRecords,proto3" json:"custom_records,omitempty" protobuf_key:"varint,1,opt,name=key,proto3" protobuf_val:"bytes,2,opt,name=value,proto3"`
/// The total amount of the mpp payment in msat.
MppTotalAmtMsat uint64 `protobuf:"varint,10,opt,name=mpp_total_amt_msat,proto3" json:"mpp_total_amt_msat,omitempty"`
MppTotalAmtMsat uint64 `protobuf:"varint,10,opt,name=mpp_total_amt_msat,json=mppTotalAmtMsat,proto3" json:"mpp_total_amt_msat,omitempty"`
XXX_NoUnkeyedLiteral struct{} `json:"-"`
XXX_unrecognized []byte `json:"-"`
XXX_sizecache int32 `json:"-"`
@ -8253,18 +8253,18 @@ func (m *InvoiceHTLC) GetMppTotalAmtMsat() uint64 {
}
type AddInvoiceResponse struct {
RHash []byte `protobuf:"bytes,1,opt,name=r_hash,proto3" json:"r_hash,omitempty"`
RHash []byte `protobuf:"bytes,1,opt,name=r_hash,json=rHash,proto3" json:"r_hash,omitempty"`
//*
//A bare-bones invoice for a payment within the Lightning Network. With the
//details of the invoice, the sender has all the data necessary to send a
//payment to the recipient.
PaymentRequest string `protobuf:"bytes,2,opt,name=payment_request,proto3" json:"payment_request,omitempty"`
PaymentRequest string `protobuf:"bytes,2,opt,name=payment_request,json=paymentRequest,proto3" json:"payment_request,omitempty"`
//*
//The "add" index of this invoice. Each newly created invoice will increment
//this index making it monotonically increasing. Callers to the
//SubscribeInvoices call can use this to instantly get notified of all added
//invoices with an add_index greater than this one.
AddIndex uint64 `protobuf:"varint,16,opt,name=add_index,proto3" json:"add_index,omitempty"`
AddIndex uint64 `protobuf:"varint,16,opt,name=add_index,json=addIndex,proto3" json:"add_index,omitempty"`
XXX_NoUnkeyedLiteral struct{} `json:"-"`
XXX_unrecognized []byte `json:"-"`
XXX_sizecache int32 `json:"-"`
@ -8322,11 +8322,11 @@ type PaymentHash struct {
//payment hash must be exactly 32 bytes, otherwise an error is returned.
//Deprecated now that the REST gateway supports base64 encoding of bytes
//fields.
RHashStr string `protobuf:"bytes,1,opt,name=r_hash_str,proto3" json:"r_hash_str,omitempty"` // Deprecated: Do not use.
RHashStr string `protobuf:"bytes,1,opt,name=r_hash_str,json=rHashStr,proto3" json:"r_hash_str,omitempty"` // Deprecated: Do not use.
//*
//The payment hash of the invoice to be looked up. When using REST, this field
//must be encoded as base64.
RHash []byte `protobuf:"bytes,2,opt,name=r_hash,proto3" json:"r_hash,omitempty"`
RHash []byte `protobuf:"bytes,2,opt,name=r_hash,json=rHash,proto3" json:"r_hash,omitempty"`
XXX_NoUnkeyedLiteral struct{} `json:"-"`
XXX_unrecognized []byte `json:"-"`
XXX_sizecache int32 `json:"-"`
@ -8376,13 +8376,13 @@ type ListInvoiceRequest struct {
//*
//If set, only invoices that are not settled and not canceled will be returned
//in the response.
PendingOnly bool `protobuf:"varint,1,opt,name=pending_only,proto3" json:"pending_only,omitempty"`
PendingOnly bool `protobuf:"varint,1,opt,name=pending_only,json=pendingOnly,proto3" json:"pending_only,omitempty"`
//*
//The index of an invoice that will be used as either the start or end of a
//query to determine which invoices should be returned in the response.
IndexOffset uint64 `protobuf:"varint,4,opt,name=index_offset,proto3" json:"index_offset,omitempty"`
IndexOffset uint64 `protobuf:"varint,4,opt,name=index_offset,json=indexOffset,proto3" json:"index_offset,omitempty"`
/// The max number of invoices to return in the response to this query.
NumMaxInvoices uint64 `protobuf:"varint,5,opt,name=num_max_invoices,proto3" json:"num_max_invoices,omitempty"`
NumMaxInvoices uint64 `protobuf:"varint,5,opt,name=num_max_invoices,json=numMaxInvoices,proto3" json:"num_max_invoices,omitempty"`
//*
//If set, the invoices returned will result from seeking backwards from the
//specified index offset. This can be used to paginate backwards.
@ -8453,11 +8453,11 @@ type ListInvoiceResponse struct {
//*
//The index of the last item in the set of returned invoices. This can be used
//to seek further, pagination style.
LastIndexOffset uint64 `protobuf:"varint,2,opt,name=last_index_offset,proto3" json:"last_index_offset,omitempty"`
LastIndexOffset uint64 `protobuf:"varint,2,opt,name=last_index_offset,json=lastIndexOffset,proto3" json:"last_index_offset,omitempty"`
//*
//The index of the last item in the set of returned invoices. This can be used
//to seek backwards, pagination style.
FirstIndexOffset uint64 `protobuf:"varint,3,opt,name=first_index_offset,proto3" json:"first_index_offset,omitempty"`
FirstIndexOffset uint64 `protobuf:"varint,3,opt,name=first_index_offset,json=firstIndexOffset,proto3" json:"first_index_offset,omitempty"`
XXX_NoUnkeyedLiteral struct{} `json:"-"`
XXX_unrecognized []byte `json:"-"`
XXX_sizecache int32 `json:"-"`
@ -8515,13 +8515,13 @@ type InvoiceSubscription struct {
//notifications for all added indexes with an add_index greater than this
//value. This allows callers to catch up on any events they missed while they
//weren't connected to the streaming RPC.
AddIndex uint64 `protobuf:"varint,1,opt,name=add_index,proto3" json:"add_index,omitempty"`
AddIndex uint64 `protobuf:"varint,1,opt,name=add_index,json=addIndex,proto3" json:"add_index,omitempty"`
//*
//If specified (non-zero), then we'll first start by sending out
//notifications for all settled indexes with an settle_index greater than
//this value. This allows callers to catch up on any events they missed while
//they weren't connected to the streaming RPC.
SettleIndex uint64 `protobuf:"varint,2,opt,name=settle_index,proto3" json:"settle_index,omitempty"`
SettleIndex uint64 `protobuf:"varint,2,opt,name=settle_index,json=settleIndex,proto3" json:"settle_index,omitempty"`
XXX_NoUnkeyedLiteral struct{} `json:"-"`
XXX_unrecognized []byte `json:"-"`
XXX_sizecache int32 `json:"-"`
@ -8568,31 +8568,31 @@ func (m *InvoiceSubscription) GetSettleIndex() uint64 {
type Payment struct {
/// The payment hash
PaymentHash string `protobuf:"bytes,1,opt,name=payment_hash,proto3" json:"payment_hash,omitempty"`
PaymentHash string `protobuf:"bytes,1,opt,name=payment_hash,json=paymentHash,proto3" json:"payment_hash,omitempty"`
/// Deprecated, use value_sat or value_msat.
Value int64 `protobuf:"varint,2,opt,name=value,proto3" json:"value,omitempty"` // Deprecated: Do not use.
/// Deprecated, use creation_time_ns
CreationDate int64 `protobuf:"varint,3,opt,name=creation_date,proto3" json:"creation_date,omitempty"` // Deprecated: Do not use.
CreationDate int64 `protobuf:"varint,3,opt,name=creation_date,json=creationDate,proto3" json:"creation_date,omitempty"` // Deprecated: Do not use.
/// The path this payment took.
Path []string `protobuf:"bytes,4,rep,name=path,proto3" json:"path,omitempty"` // Deprecated: Do not use.
/// Deprecated, use fee_sat or fee_msat.
Fee int64 `protobuf:"varint,5,opt,name=fee,proto3" json:"fee,omitempty"` // Deprecated: Do not use.
/// The payment preimage
PaymentPreimage string `protobuf:"bytes,6,opt,name=payment_preimage,proto3" json:"payment_preimage,omitempty"`
PaymentPreimage string `protobuf:"bytes,6,opt,name=payment_preimage,json=paymentPreimage,proto3" json:"payment_preimage,omitempty"`
/// The value of the payment in satoshis
ValueSat int64 `protobuf:"varint,7,opt,name=value_sat,proto3" json:"value_sat,omitempty"`
ValueSat int64 `protobuf:"varint,7,opt,name=value_sat,json=valueSat,proto3" json:"value_sat,omitempty"`
/// The value of the payment in milli-satoshis
ValueMsat int64 `protobuf:"varint,8,opt,name=value_msat,proto3" json:"value_msat,omitempty"`
ValueMsat int64 `protobuf:"varint,8,opt,name=value_msat,json=valueMsat,proto3" json:"value_msat,omitempty"`
/// The optional payment request being fulfilled.
PaymentRequest string `protobuf:"bytes,9,opt,name=payment_request,proto3" json:"payment_request,omitempty"`
PaymentRequest string `protobuf:"bytes,9,opt,name=payment_request,json=paymentRequest,proto3" json:"payment_request,omitempty"`
// The status of the payment.
Status Payment_PaymentStatus `protobuf:"varint,10,opt,name=status,proto3,enum=lnrpc.Payment_PaymentStatus" json:"status,omitempty"`
/// The fee paid for this payment in satoshis
FeeSat int64 `protobuf:"varint,11,opt,name=fee_sat,proto3" json:"fee_sat,omitempty"`
FeeSat int64 `protobuf:"varint,11,opt,name=fee_sat,json=feeSat,proto3" json:"fee_sat,omitempty"`
/// The fee paid for this payment in milli-satoshis
FeeMsat int64 `protobuf:"varint,12,opt,name=fee_msat,proto3" json:"fee_msat,omitempty"`
FeeMsat int64 `protobuf:"varint,12,opt,name=fee_msat,json=feeMsat,proto3" json:"fee_msat,omitempty"`
/// The time in UNIX nanoseconds at which the payment was created.
CreationTimeNs int64 `protobuf:"varint,13,opt,name=creation_time_ns,proto3" json:"creation_time_ns,omitempty"`
CreationTimeNs int64 `protobuf:"varint,13,opt,name=creation_time_ns,json=creationTimeNs,proto3" json:"creation_time_ns,omitempty"`
/// The HTLCs made in attempt to settle the payment [EXPERIMENTAL].
Htlcs []*HTLCAttempt `protobuf:"bytes,14,rep,name=htlcs,proto3" json:"htlcs,omitempty"`
XXX_NoUnkeyedLiteral struct{} `json:"-"`
@ -8733,11 +8733,11 @@ type HTLCAttempt struct {
/// The route taken by this HTLC.
Route *Route `protobuf:"bytes,2,opt,name=route,proto3" json:"route,omitempty"`
/// The time in UNIX nanoseconds at which this HTLC was sent.
AttemptTimeNs int64 `protobuf:"varint,3,opt,name=attempt_time_ns,proto3" json:"attempt_time_ns,omitempty"`
AttemptTimeNs int64 `protobuf:"varint,3,opt,name=attempt_time_ns,json=attemptTimeNs,proto3" json:"attempt_time_ns,omitempty"`
//*
//The time in UNIX nanoseconds at which this HTLC was settled or failed.
//This value will not be set if the HTLC is still IN_FLIGHT.
ResolveTimeNs int64 `protobuf:"varint,4,opt,name=resolve_time_ns,proto3" json:"resolve_time_ns,omitempty"`
ResolveTimeNs int64 `protobuf:"varint,4,opt,name=resolve_time_ns,json=resolveTimeNs,proto3" json:"resolve_time_ns,omitempty"`
XXX_NoUnkeyedLiteral struct{} `json:"-"`
XXX_unrecognized []byte `json:"-"`
XXX_sizecache int32 `json:"-"`
@ -9059,7 +9059,7 @@ func (m *DebugLevelRequest) GetLevelSpec() string {
}
type DebugLevelResponse struct {
SubSystems string `protobuf:"bytes,1,opt,name=sub_systems,proto3" json:"sub_systems,omitempty"`
SubSystems string `protobuf:"bytes,1,opt,name=sub_systems,json=subSystems,proto3" json:"sub_systems,omitempty"`
XXX_NoUnkeyedLiteral struct{} `json:"-"`
XXX_unrecognized []byte `json:"-"`
XXX_sizecache int32 `json:"-"`
@ -9139,17 +9139,17 @@ func (m *PayReqString) GetPayReq() string {
type PayReq struct {
Destination string `protobuf:"bytes,1,opt,name=destination,proto3" json:"destination,omitempty"`
PaymentHash string `protobuf:"bytes,2,opt,name=payment_hash,proto3" json:"payment_hash,omitempty"`
NumSatoshis int64 `protobuf:"varint,3,opt,name=num_satoshis,proto3" json:"num_satoshis,omitempty"`
PaymentHash string `protobuf:"bytes,2,opt,name=payment_hash,json=paymentHash,proto3" json:"payment_hash,omitempty"`
NumSatoshis int64 `protobuf:"varint,3,opt,name=num_satoshis,json=numSatoshis,proto3" json:"num_satoshis,omitempty"`
Timestamp int64 `protobuf:"varint,4,opt,name=timestamp,proto3" json:"timestamp,omitempty"`
Expiry int64 `protobuf:"varint,5,opt,name=expiry,proto3" json:"expiry,omitempty"`
Description string `protobuf:"bytes,6,opt,name=description,proto3" json:"description,omitempty"`
DescriptionHash string `protobuf:"bytes,7,opt,name=description_hash,proto3" json:"description_hash,omitempty"`
FallbackAddr string `protobuf:"bytes,8,opt,name=fallback_addr,proto3" json:"fallback_addr,omitempty"`
CltvExpiry int64 `protobuf:"varint,9,opt,name=cltv_expiry,proto3" json:"cltv_expiry,omitempty"`
RouteHints []*RouteHint `protobuf:"bytes,10,rep,name=route_hints,proto3" json:"route_hints,omitempty"`
PaymentAddr []byte `protobuf:"bytes,11,opt,name=payment_addr,proto3" json:"payment_addr,omitempty"`
NumMsat int64 `protobuf:"varint,12,opt,name=num_msat,proto3" json:"num_msat,omitempty"`
DescriptionHash string `protobuf:"bytes,7,opt,name=description_hash,json=descriptionHash,proto3" json:"description_hash,omitempty"`
FallbackAddr string `protobuf:"bytes,8,opt,name=fallback_addr,json=fallbackAddr,proto3" json:"fallback_addr,omitempty"`
CltvExpiry int64 `protobuf:"varint,9,opt,name=cltv_expiry,json=cltvExpiry,proto3" json:"cltv_expiry,omitempty"`
RouteHints []*RouteHint `protobuf:"bytes,10,rep,name=route_hints,json=routeHints,proto3" json:"route_hints,omitempty"`
PaymentAddr []byte `protobuf:"bytes,11,opt,name=payment_addr,json=paymentAddr,proto3" json:"payment_addr,omitempty"`
NumMsat int64 `protobuf:"varint,12,opt,name=num_msat,json=numMsat,proto3" json:"num_msat,omitempty"`
Features map[uint32]*Feature `protobuf:"bytes,13,rep,name=features,proto3" json:"features,omitempty" protobuf_key:"varint,1,opt,name=key,proto3" protobuf_val:"bytes,2,opt,name=value,proto3"`
XXX_NoUnkeyedLiteral struct{} `json:"-"`
XXX_unrecognized []byte `json:"-"`
@ -9274,8 +9274,8 @@ func (m *PayReq) GetFeatures() map[uint32]*Feature {
type Feature struct {
Name string `protobuf:"bytes,2,opt,name=name,proto3" json:"name,omitempty"`
IsRequired bool `protobuf:"varint,3,opt,name=is_required,proto3" json:"is_required,omitempty"`
IsKnown bool `protobuf:"varint,4,opt,name=is_known,proto3" json:"is_known,omitempty"`
IsRequired bool `protobuf:"varint,3,opt,name=is_required,json=isRequired,proto3" json:"is_required,omitempty"`
IsKnown bool `protobuf:"varint,4,opt,name=is_known,json=isKnown,proto3" json:"is_known,omitempty"`
XXX_NoUnkeyedLiteral struct{} `json:"-"`
XXX_unrecognized []byte `json:"-"`
XXX_sizecache int32 `json:"-"`
@ -9362,13 +9362,13 @@ type ChannelFeeReport struct {
/// The short channel id that this fee report belongs to.
ChanId uint64 `protobuf:"varint,5,opt,name=chan_id,json=chanId,proto3" json:"chan_id,omitempty"`
/// The channel that this fee report belongs to.
ChanPoint string `protobuf:"bytes,1,opt,name=chan_point,json=channel_point,proto3" json:"chan_point,omitempty"`
ChanPoint string `protobuf:"bytes,1,opt,name=chan_point,json=chanPoint,proto3" json:"chan_point,omitempty"`
/// The base fee charged regardless of the number of milli-satoshis sent.
BaseFeeMsat int64 `protobuf:"varint,2,opt,name=base_fee_msat,proto3" json:"base_fee_msat,omitempty"`
BaseFeeMsat int64 `protobuf:"varint,2,opt,name=base_fee_msat,json=baseFeeMsat,proto3" json:"base_fee_msat,omitempty"`
/// The amount charged per milli-satoshis transferred expressed in millionths of a satoshi.
FeePerMil int64 `protobuf:"varint,3,opt,name=fee_per_mil,proto3" json:"fee_per_mil,omitempty"`
FeePerMil int64 `protobuf:"varint,3,opt,name=fee_per_mil,json=feePerMil,proto3" json:"fee_per_mil,omitempty"`
/// The effective fee rate in milli-satoshis. Computed by dividing the fee_per_mil value by 1 million.
FeeRate float64 `protobuf:"fixed64,4,opt,name=fee_rate,proto3" json:"fee_rate,omitempty"`
FeeRate float64 `protobuf:"fixed64,4,opt,name=fee_rate,json=feeRate,proto3" json:"fee_rate,omitempty"`
XXX_NoUnkeyedLiteral struct{} `json:"-"`
XXX_unrecognized []byte `json:"-"`
XXX_sizecache int32 `json:"-"`
@ -9436,13 +9436,13 @@ func (m *ChannelFeeReport) GetFeeRate() float64 {
type FeeReportResponse struct {
/// An array of channel fee reports which describes the current fee schedule for each channel.
ChannelFees []*ChannelFeeReport `protobuf:"bytes,1,rep,name=channel_fees,proto3" json:"channel_fees,omitempty"`
ChannelFees []*ChannelFeeReport `protobuf:"bytes,1,rep,name=channel_fees,json=channelFees,proto3" json:"channel_fees,omitempty"`
/// The total amount of fee revenue (in satoshis) the switch has collected over the past 24 hrs.
DayFeeSum uint64 `protobuf:"varint,2,opt,name=day_fee_sum,proto3" json:"day_fee_sum,omitempty"`
DayFeeSum uint64 `protobuf:"varint,2,opt,name=day_fee_sum,json=dayFeeSum,proto3" json:"day_fee_sum,omitempty"`
/// The total amount of fee revenue (in satoshis) the switch has collected over the past 1 week.
WeekFeeSum uint64 `protobuf:"varint,3,opt,name=week_fee_sum,proto3" json:"week_fee_sum,omitempty"`
WeekFeeSum uint64 `protobuf:"varint,3,opt,name=week_fee_sum,json=weekFeeSum,proto3" json:"week_fee_sum,omitempty"`
/// The total amount of fee revenue (in satoshis) the switch has collected over the past 1 month.
MonthFeeSum uint64 `protobuf:"varint,4,opt,name=month_fee_sum,proto3" json:"month_fee_sum,omitempty"`
MonthFeeSum uint64 `protobuf:"varint,4,opt,name=month_fee_sum,json=monthFeeSum,proto3" json:"month_fee_sum,omitempty"`
XXX_NoUnkeyedLiteral struct{} `json:"-"`
XXX_unrecognized []byte `json:"-"`
XXX_sizecache int32 `json:"-"`
@ -9507,17 +9507,17 @@ type PolicyUpdateRequest struct {
// *PolicyUpdateRequest_ChanPoint
Scope isPolicyUpdateRequest_Scope `protobuf_oneof:"scope"`
/// The base fee charged regardless of the number of milli-satoshis sent.
BaseFeeMsat int64 `protobuf:"varint,3,opt,name=base_fee_msat,proto3" json:"base_fee_msat,omitempty"`
BaseFeeMsat int64 `protobuf:"varint,3,opt,name=base_fee_msat,json=baseFeeMsat,proto3" json:"base_fee_msat,omitempty"`
/// The effective fee rate in milli-satoshis. The precision of this value goes up to 6 decimal places, so 1e-6.
FeeRate float64 `protobuf:"fixed64,4,opt,name=fee_rate,proto3" json:"fee_rate,omitempty"`
FeeRate float64 `protobuf:"fixed64,4,opt,name=fee_rate,json=feeRate,proto3" json:"fee_rate,omitempty"`
/// The required timelock delta for HTLCs forwarded over the channel.
TimeLockDelta uint32 `protobuf:"varint,5,opt,name=time_lock_delta,proto3" json:"time_lock_delta,omitempty"`
TimeLockDelta uint32 `protobuf:"varint,5,opt,name=time_lock_delta,json=timeLockDelta,proto3" json:"time_lock_delta,omitempty"`
/// If set, the maximum HTLC size in milli-satoshis. If unset, the maximum HTLC will be unchanged.
MaxHtlcMsat uint64 `protobuf:"varint,6,opt,name=max_htlc_msat,proto3" json:"max_htlc_msat,omitempty"`
MaxHtlcMsat uint64 `protobuf:"varint,6,opt,name=max_htlc_msat,json=maxHtlcMsat,proto3" json:"max_htlc_msat,omitempty"`
/// The minimum HTLC size in milli-satoshis. Only applied if min_htlc_msat_specified is true.
MinHtlcMsat uint64 `protobuf:"varint,7,opt,name=min_htlc_msat,proto3" json:"min_htlc_msat,omitempty"`
MinHtlcMsat uint64 `protobuf:"varint,7,opt,name=min_htlc_msat,json=minHtlcMsat,proto3" json:"min_htlc_msat,omitempty"`
/// If true, min_htlc_msat is applied.
MinHtlcMsatSpecified bool `protobuf:"varint,8,opt,name=min_htlc_msat_specified,json=set_min_htlc_msat,proto3" json:"min_htlc_msat_specified,omitempty"`
MinHtlcMsatSpecified bool `protobuf:"varint,8,opt,name=min_htlc_msat_specified,json=minHtlcMsatSpecified,proto3" json:"min_htlc_msat_specified,omitempty"`
XXX_NoUnkeyedLiteral struct{} `json:"-"`
XXX_unrecognized []byte `json:"-"`
XXX_sizecache int32 `json:"-"`
@ -9557,7 +9557,7 @@ type PolicyUpdateRequest_Global struct {
}
type PolicyUpdateRequest_ChanPoint struct {
ChanPoint *ChannelPoint `protobuf:"bytes,2,opt,name=chan_point,proto3,oneof"`
ChanPoint *ChannelPoint `protobuf:"bytes,2,opt,name=chan_point,json=chanPoint,proto3,oneof"`
}
func (*PolicyUpdateRequest_Global) isPolicyUpdateRequest_Scope() {}
@ -9668,13 +9668,13 @@ var xxx_messageInfo_PolicyUpdateResponse proto.InternalMessageInfo
type ForwardingHistoryRequest struct {
/// Start time is the starting point of the forwarding history request. All records beyond this point will be included, respecting the end time, and the index offset.
StartTime uint64 `protobuf:"varint,1,opt,name=start_time,proto3" json:"start_time,omitempty"`
StartTime uint64 `protobuf:"varint,1,opt,name=start_time,json=startTime,proto3" json:"start_time,omitempty"`
/// End time is the end point of the forwarding history request. The response will carry at most 50k records between the start time and the end time. The index offset can be used to implement pagination.
EndTime uint64 `protobuf:"varint,2,opt,name=end_time,proto3" json:"end_time,omitempty"`
EndTime uint64 `protobuf:"varint,2,opt,name=end_time,json=endTime,proto3" json:"end_time,omitempty"`
/// Index offset is the offset in the time series to start at. As each response can only contain 50k records, callers can use this to skip around within a packed time series.
IndexOffset uint32 `protobuf:"varint,3,opt,name=index_offset,proto3" json:"index_offset,omitempty"`
IndexOffset uint32 `protobuf:"varint,3,opt,name=index_offset,json=indexOffset,proto3" json:"index_offset,omitempty"`
/// The max number of events to return in the response to this query.
NumMaxEvents uint32 `protobuf:"varint,4,opt,name=num_max_events,proto3" json:"num_max_events,omitempty"`
NumMaxEvents uint32 `protobuf:"varint,4,opt,name=num_max_events,json=numMaxEvents,proto3" json:"num_max_events,omitempty"`
XXX_NoUnkeyedLiteral struct{} `json:"-"`
XXX_unrecognized []byte `json:"-"`
XXX_sizecache int32 `json:"-"`
@ -9737,21 +9737,21 @@ type ForwardingEvent struct {
/// Timestamp is the time (unix epoch offset) that this circuit was completed.
Timestamp uint64 `protobuf:"varint,1,opt,name=timestamp,proto3" json:"timestamp,omitempty"`
/// The incoming channel ID that carried the HTLC that created the circuit.
ChanIdIn uint64 `protobuf:"varint,2,opt,name=chan_id_in,proto3" json:"chan_id_in,omitempty"`
ChanIdIn uint64 `protobuf:"varint,2,opt,name=chan_id_in,json=chanIdIn,proto3" json:"chan_id_in,omitempty"`
/// The outgoing channel ID that carried the preimage that completed the circuit.
ChanIdOut uint64 `protobuf:"varint,4,opt,name=chan_id_out,proto3" json:"chan_id_out,omitempty"`
ChanIdOut uint64 `protobuf:"varint,4,opt,name=chan_id_out,json=chanIdOut,proto3" json:"chan_id_out,omitempty"`
/// The total amount (in satoshis) of the incoming HTLC that created half the circuit.
AmtIn uint64 `protobuf:"varint,5,opt,name=amt_in,proto3" json:"amt_in,omitempty"`
AmtIn uint64 `protobuf:"varint,5,opt,name=amt_in,json=amtIn,proto3" json:"amt_in,omitempty"`
/// The total amount (in satoshis) of the outgoing HTLC that created the second half of the circuit.
AmtOut uint64 `protobuf:"varint,6,opt,name=amt_out,proto3" json:"amt_out,omitempty"`
AmtOut uint64 `protobuf:"varint,6,opt,name=amt_out,json=amtOut,proto3" json:"amt_out,omitempty"`
/// The total fee (in satoshis) that this payment circuit carried.
Fee uint64 `protobuf:"varint,7,opt,name=fee,proto3" json:"fee,omitempty"`
/// The total fee (in milli-satoshis) that this payment circuit carried.
FeeMsat uint64 `protobuf:"varint,8,opt,name=fee_msat,proto3" json:"fee_msat,omitempty"`
FeeMsat uint64 `protobuf:"varint,8,opt,name=fee_msat,json=feeMsat,proto3" json:"fee_msat,omitempty"`
/// The total amount (in milli-satoshis) of the incoming HTLC that created half the circuit.
AmtInMsat uint64 `protobuf:"varint,9,opt,name=amt_in_msat,proto3" json:"amt_in_msat,omitempty"`
AmtInMsat uint64 `protobuf:"varint,9,opt,name=amt_in_msat,json=amtInMsat,proto3" json:"amt_in_msat,omitempty"`
/// The total amount (in milli-satoshis) of the outgoing HTLC that created the second half of the circuit.
AmtOutMsat uint64 `protobuf:"varint,10,opt,name=amt_out_msat,proto3" json:"amt_out_msat,omitempty"`
AmtOutMsat uint64 `protobuf:"varint,10,opt,name=amt_out_msat,json=amtOutMsat,proto3" json:"amt_out_msat,omitempty"`
XXX_NoUnkeyedLiteral struct{} `json:"-"`
XXX_unrecognized []byte `json:"-"`
XXX_sizecache int32 `json:"-"`
@ -9847,9 +9847,9 @@ func (m *ForwardingEvent) GetAmtOutMsat() uint64 {
type ForwardingHistoryResponse struct {
/// A list of forwarding events from the time slice of the time series specified in the request.
ForwardingEvents []*ForwardingEvent `protobuf:"bytes,1,rep,name=forwarding_events,proto3" json:"forwarding_events,omitempty"`
ForwardingEvents []*ForwardingEvent `protobuf:"bytes,1,rep,name=forwarding_events,json=forwardingEvents,proto3" json:"forwarding_events,omitempty"`
/// The index of the last time in the set of returned forwarding events. Can be used to seek further, pagination style.
LastOffsetIndex uint32 `protobuf:"varint,2,opt,name=last_offset_index,proto3" json:"last_offset_index,omitempty"`
LastOffsetIndex uint32 `protobuf:"varint,2,opt,name=last_offset_index,json=lastOffsetIndex,proto3" json:"last_offset_index,omitempty"`
XXX_NoUnkeyedLiteral struct{} `json:"-"`
XXX_unrecognized []byte `json:"-"`
XXX_sizecache int32 `json:"-"`
@ -9937,13 +9937,13 @@ func (m *ExportChannelBackupRequest) GetChanPoint() *ChannelPoint {
type ChannelBackup struct {
//*
//Identifies the channel that this backup belongs to.
ChanPoint *ChannelPoint `protobuf:"bytes,1,opt,name=chan_point,proto3" json:"chan_point,omitempty"`
ChanPoint *ChannelPoint `protobuf:"bytes,1,opt,name=chan_point,json=chanPoint,proto3" json:"chan_point,omitempty"`
//*
//Is an encrypted single-chan backup. this can be passed to
//RestoreChannelBackups, or the WalletUnlocker Init and Unlock methods in
//order to trigger the recovery protocol. When using REST, this field must be
//encoded as base64.
ChanBackup []byte `protobuf:"bytes,2,opt,name=chan_backup,proto3" json:"chan_backup,omitempty"`
ChanBackup []byte `protobuf:"bytes,2,opt,name=chan_backup,json=chanBackup,proto3" json:"chan_backup,omitempty"`
XXX_NoUnkeyedLiteral struct{} `json:"-"`
XXX_unrecognized []byte `json:"-"`
XXX_sizecache int32 `json:"-"`
@ -9991,13 +9991,13 @@ func (m *ChannelBackup) GetChanBackup() []byte {
type MultiChanBackup struct {
//*
//Is the set of all channels that are included in this multi-channel backup.
ChanPoints []*ChannelPoint `protobuf:"bytes,1,rep,name=chan_points,proto3" json:"chan_points,omitempty"`
ChanPoints []*ChannelPoint `protobuf:"bytes,1,rep,name=chan_points,json=chanPoints,proto3" json:"chan_points,omitempty"`
//*
//A single encrypted blob containing all the static channel backups of the
//channel listed above. This can be stored as a single file or blob, and
//safely be replaced with any prior/future versions. When using REST, this
//field must be encoded as base64.
MultiChanBackup []byte `protobuf:"bytes,2,opt,name=multi_chan_backup,proto3" json:"multi_chan_backup,omitempty"`
MultiChanBackup []byte `protobuf:"bytes,2,opt,name=multi_chan_backup,json=multiChanBackup,proto3" json:"multi_chan_backup,omitempty"`
XXX_NoUnkeyedLiteral struct{} `json:"-"`
XXX_unrecognized []byte `json:"-"`
XXX_sizecache int32 `json:"-"`
@ -10077,11 +10077,11 @@ type ChanBackupSnapshot struct {
//*
//The set of new channels that have been added since the last channel backup
//snapshot was requested.
SingleChanBackups *ChannelBackups `protobuf:"bytes,1,opt,name=single_chan_backups,proto3" json:"single_chan_backups,omitempty"`
SingleChanBackups *ChannelBackups `protobuf:"bytes,1,opt,name=single_chan_backups,json=singleChanBackups,proto3" json:"single_chan_backups,omitempty"`
//*
//A multi-channel backup that covers all open channels currently known to
//lnd.
MultiChanBackup *MultiChanBackup `protobuf:"bytes,2,opt,name=multi_chan_backup,proto3" json:"multi_chan_backup,omitempty"`
MultiChanBackup *MultiChanBackup `protobuf:"bytes,2,opt,name=multi_chan_backup,json=multiChanBackup,proto3" json:"multi_chan_backup,omitempty"`
XXX_NoUnkeyedLiteral struct{} `json:"-"`
XXX_unrecognized []byte `json:"-"`
XXX_sizecache int32 `json:"-"`
@ -10129,7 +10129,7 @@ func (m *ChanBackupSnapshot) GetMultiChanBackup() *MultiChanBackup {
type ChannelBackups struct {
//*
//A set of single-chan static channel backups.
ChanBackups []*ChannelBackup `protobuf:"bytes,1,rep,name=chan_backups,proto3" json:"chan_backups,omitempty"`
ChanBackups []*ChannelBackup `protobuf:"bytes,1,rep,name=chan_backups,json=chanBackups,proto3" json:"chan_backups,omitempty"`
XXX_NoUnkeyedLiteral struct{} `json:"-"`
XXX_unrecognized []byte `json:"-"`
XXX_sizecache int32 `json:"-"`
@ -10207,11 +10207,11 @@ type isRestoreChanBackupRequest_Backup interface {
}
type RestoreChanBackupRequest_ChanBackups struct {
ChanBackups *ChannelBackups `protobuf:"bytes,1,opt,name=chan_backups,proto3,oneof"`
ChanBackups *ChannelBackups `protobuf:"bytes,1,opt,name=chan_backups,json=chanBackups,proto3,oneof"`
}
type RestoreChanBackupRequest_MultiChanBackup struct {
MultiChanBackup []byte `protobuf:"bytes,2,opt,name=multi_chan_backup,proto3,oneof"`
MultiChanBackup []byte `protobuf:"bytes,2,opt,name=multi_chan_backup,json=multiChanBackup,proto3,oneof"`
}
func (*RestoreChanBackupRequest_ChanBackups) isRestoreChanBackupRequest_Backup() {}
@ -10648,629 +10648,660 @@ func init() {
func init() { proto.RegisterFile("rpc.proto", fileDescriptor_77a6da22d6a3feb1) }
var fileDescriptor_77a6da22d6a3feb1 = []byte{
// 9943 bytes of a gzipped FileDescriptorProto
0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xbc, 0x7d, 0x5b, 0x6c, 0x1c, 0xd9,
0x95, 0x98, 0xaa, 0x1f, 0x64, 0xf7, 0xe9, 0x07, 0x9b, 0x97, 0x14, 0xd9, 0x6a, 0x3d, 0x46, 0x53,
0xd6, 0xce, 0xc8, 0xf2, 0x98, 0xd2, 0xd0, 0xf6, 0xac, 0x3c, 0xca, 0x7a, 0xcd, 0x97, 0x44, 0xce,
0x50, 0x24, 0x5d, 0xa4, 0xac, 0xb5, 0x9d, 0x45, 0xb9, 0xd8, 0x7d, 0x49, 0x96, 0xd5, 0x5d, 0xd5,
0x53, 0x55, 0x4d, 0x8a, 0x76, 0x26, 0x1f, 0x41, 0x12, 0x04, 0xf9, 0x09, 0x0c, 0x23, 0x40, 0x9e,
0x58, 0xc0, 0x9b, 0x20, 0x08, 0x02, 0x24, 0x01, 0x02, 0x2c, 0x36, 0x80, 0xf3, 0x95, 0x8f, 0xcd,
0x4f, 0x90, 0x8f, 0x04, 0x08, 0x90, 0x00, 0x01, 0x16, 0x9b, 0x8f, 0x2c, 0x02, 0xe4, 0x2b, 0xc9,
0x77, 0x70, 0xcf, 0x7d, 0xd4, 0xbd, 0x55, 0xd5, 0x94, 0xc6, 0x76, 0xfc, 0x23, 0xf1, 0x9e, 0x7b,
0xea, 0x3e, 0xcf, 0x39, 0xf7, 0x3c, 0xee, 0xb9, 0x0d, 0xf5, 0x68, 0xdc, 0x5f, 0x19, 0x47, 0x61,
0x12, 0x92, 0xea, 0x30, 0x88, 0xc6, 0xfd, 0xde, 0xad, 0xd3, 0x30, 0x3c, 0x1d, 0xd2, 0x87, 0xde,
0xd8, 0x7f, 0xe8, 0x05, 0x41, 0x98, 0x78, 0x89, 0x1f, 0x06, 0x31, 0x47, 0xb2, 0x7f, 0x08, 0xed,
0x67, 0x34, 0x38, 0xa4, 0x74, 0xe0, 0xd0, 0xcf, 0x26, 0x34, 0x4e, 0xc8, 0x57, 0x60, 0xde, 0xa3,
0x3f, 0xa6, 0x74, 0xe0, 0x8e, 0xbd, 0x38, 0x1e, 0x9f, 0x45, 0x5e, 0x4c, 0xbb, 0xd6, 0x5d, 0xeb,
0x7e, 0xd3, 0xe9, 0xf0, 0x8a, 0x03, 0x05, 0x27, 0xef, 0x42, 0x33, 0x66, 0xa8, 0x34, 0x48, 0xa2,
0x70, 0x7c, 0xd9, 0x2d, 0x21, 0x5e, 0x83, 0xc1, 0xb6, 0x38, 0xc8, 0x1e, 0xc2, 0x9c, 0xea, 0x21,
0x1e, 0x87, 0x41, 0x4c, 0xc9, 0x23, 0x58, 0xec, 0xfb, 0xe3, 0x33, 0x1a, 0xb9, 0xf8, 0xf1, 0x28,
0xa0, 0xa3, 0x30, 0xf0, 0xfb, 0x5d, 0xeb, 0x6e, 0xf9, 0x7e, 0xdd, 0x21, 0xbc, 0x8e, 0x7d, 0xf1,
0x5c, 0xd4, 0x90, 0xf7, 0x61, 0x8e, 0x06, 0x1c, 0x4e, 0x07, 0xf8, 0x95, 0xe8, 0xaa, 0x9d, 0x82,
0xd9, 0x07, 0xf6, 0xdf, 0x28, 0xc1, 0xfc, 0x4e, 0xe0, 0x27, 0x2f, 0xbd, 0xe1, 0x90, 0x26, 0x72,
0x4e, 0xef, 0xc3, 0xdc, 0x05, 0x02, 0x70, 0x4e, 0x17, 0x61, 0x34, 0x10, 0x33, 0x6a, 0x73, 0xf0,
0x81, 0x80, 0x4e, 0x1d, 0x59, 0x69, 0xea, 0xc8, 0x0a, 0x97, 0xab, 0x3c, 0x65, 0xb9, 0xde, 0x87,
0xb9, 0x88, 0xf6, 0xc3, 0x73, 0x1a, 0x5d, 0xba, 0x17, 0x7e, 0x30, 0x08, 0x2f, 0xba, 0x95, 0xbb,
0xd6, 0xfd, 0xaa, 0xd3, 0x96, 0xe0, 0x97, 0x08, 0x25, 0xeb, 0x30, 0xd7, 0x3f, 0xf3, 0x82, 0x80,
0x0e, 0xdd, 0x63, 0xaf, 0xff, 0x6a, 0x32, 0x8e, 0xbb, 0xd5, 0xbb, 0xd6, 0xfd, 0xc6, 0xea, 0x8d,
0x15, 0xdc, 0xd5, 0x95, 0x8d, 0x33, 0x2f, 0x58, 0xc7, 0x9a, 0xc3, 0xc0, 0x1b, 0xc7, 0x67, 0x61,
0xe2, 0xb4, 0xc5, 0x17, 0x1c, 0x1c, 0xdb, 0x8b, 0x40, 0xf4, 0x95, 0xe0, 0x6b, 0x6f, 0xff, 0x33,
0x0b, 0x16, 0x5e, 0x04, 0xc3, 0xb0, 0xff, 0xea, 0x97, 0x5c, 0xa2, 0x82, 0x39, 0x94, 0xde, 0x76,
0x0e, 0xe5, 0x2f, 0x3a, 0x87, 0x25, 0x58, 0x34, 0x07, 0x2b, 0x66, 0x41, 0xe1, 0x3a, 0xfb, 0xfa,
0x94, 0xca, 0x61, 0xc9, 0x69, 0x7c, 0x19, 0x3a, 0xfd, 0x49, 0x14, 0xd1, 0x20, 0x37, 0x8f, 0x39,
0x01, 0x57, 0x13, 0x79, 0x17, 0x9a, 0x01, 0xbd, 0x48, 0xd1, 0x04, 0xed, 0x06, 0xf4, 0x42, 0xa2,
0xd8, 0x5d, 0x58, 0xca, 0x76, 0x23, 0x06, 0xf0, 0xa7, 0x16, 0x54, 0x5e, 0x24, 0xaf, 0x43, 0xb2,
0x02, 0x95, 0xe4, 0x72, 0xcc, 0x39, 0xa4, 0xbd, 0x4a, 0xc4, 0xd4, 0xd6, 0x06, 0x83, 0x88, 0xc6,
0xf1, 0xd1, 0xe5, 0x98, 0x3a, 0x4d, 0x8f, 0x17, 0x5c, 0x86, 0x47, 0xba, 0x30, 0x2b, 0xca, 0xd8,
0x61, 0xdd, 0x91, 0x45, 0x72, 0x07, 0xc0, 0x1b, 0x85, 0x93, 0x20, 0x71, 0x63, 0x2f, 0xc1, 0xa5,
0x2a, 0x3b, 0x1a, 0x84, 0xdc, 0x82, 0xfa, 0xf8, 0x95, 0x1b, 0xf7, 0x23, 0x7f, 0x9c, 0x20, 0xd9,
0xd4, 0x9d, 0x14, 0x40, 0xbe, 0x02, 0xb5, 0x70, 0x92, 0x8c, 0x43, 0x3f, 0x48, 0x04, 0xa9, 0xcc,
0x89, 0xb1, 0xec, 0x4f, 0x92, 0x03, 0x06, 0x76, 0x14, 0x02, 0xb9, 0x07, 0xad, 0x7e, 0x18, 0x9c,
0xf8, 0xd1, 0x88, 0x0b, 0x83, 0xee, 0x0c, 0xf6, 0x66, 0x02, 0xed, 0x7f, 0x5d, 0x82, 0xc6, 0x51,
0xe4, 0x05, 0xb1, 0xd7, 0x67, 0x00, 0x36, 0xf4, 0xe4, 0xb5, 0x7b, 0xe6, 0xc5, 0x67, 0x38, 0xdb,
0xba, 0x23, 0x8b, 0x64, 0x09, 0x66, 0xf8, 0x40, 0x71, 0x4e, 0x65, 0x47, 0x94, 0xc8, 0x07, 0x30,
0x1f, 0x4c, 0x46, 0xae, 0xd9, 0x57, 0x19, 0xa9, 0x25, 0x5f, 0xc1, 0x16, 0xe0, 0x98, 0xed, 0x35,
0xef, 0x82, 0xcf, 0x50, 0x83, 0x10, 0x1b, 0x9a, 0xa2, 0x44, 0xfd, 0xd3, 0x33, 0x3e, 0xcd, 0xaa,
0x63, 0xc0, 0x58, 0x1b, 0x89, 0x3f, 0xa2, 0x6e, 0x9c, 0x78, 0xa3, 0xb1, 0x98, 0x96, 0x06, 0xc1,
0xfa, 0x30, 0xf1, 0x86, 0xee, 0x09, 0xa5, 0x71, 0x77, 0x56, 0xd4, 0x2b, 0x08, 0x79, 0x0f, 0xda,
0x03, 0x1a, 0x27, 0xae, 0xd8, 0x14, 0x1a, 0x77, 0x6b, 0xc8, 0xfa, 0x19, 0x28, 0x6b, 0x27, 0xf2,
0x2e, 0x5c, 0xb6, 0x00, 0xf4, 0x75, 0xb7, 0xce, 0xc7, 0x9a, 0x42, 0x18, 0xe5, 0x3c, 0xa3, 0x89,
0xb6, 0x7a, 0xb1, 0xa0, 0x50, 0x7b, 0x17, 0x88, 0x06, 0xde, 0xa4, 0x89, 0xe7, 0x0f, 0x63, 0xf2,
0x11, 0x34, 0x13, 0x0d, 0x19, 0x45, 0x61, 0x43, 0x91, 0x93, 0xf6, 0x81, 0x63, 0xe0, 0xd9, 0x67,
0x50, 0x7b, 0x4a, 0xe9, 0xae, 0x3f, 0xf2, 0x13, 0xb2, 0x04, 0xd5, 0x13, 0xff, 0x35, 0xe5, 0x04,
0x5f, 0xde, 0xbe, 0xe6, 0xf0, 0x22, 0x79, 0x07, 0x00, 0xff, 0x70, 0x47, 0x8a, 0xb0, 0xb6, 0xaf,
0x39, 0x75, 0x84, 0x3d, 0x67, 0x94, 0xd5, 0x83, 0xd9, 0x31, 0x8d, 0xfa, 0x54, 0xee, 0xdf, 0xf6,
0x35, 0x47, 0x02, 0xd6, 0x67, 0xa1, 0x3a, 0x64, 0xad, 0xdb, 0x7f, 0x52, 0x85, 0xc6, 0x21, 0x0d,
0x14, 0xa7, 0x11, 0xa8, 0xb0, 0x35, 0x11, 0xdc, 0x85, 0x7f, 0x93, 0x2f, 0x41, 0x03, 0xd7, 0x29,
0x4e, 0x22, 0x3f, 0x38, 0xe5, 0x04, 0xbe, 0x5e, 0xea, 0x5a, 0x0e, 0x30, 0xf0, 0x21, 0x42, 0x49,
0x07, 0xca, 0xde, 0x48, 0x12, 0x38, 0xfb, 0x93, 0xdc, 0x80, 0x9a, 0x37, 0x4a, 0xf8, 0xf0, 0x9a,
0x08, 0x9e, 0xf5, 0x46, 0x09, 0x0e, 0xed, 0x5d, 0x68, 0x8e, 0xbd, 0xcb, 0x11, 0xe3, 0x67, 0x45,
0x15, 0x4d, 0xa7, 0x21, 0x60, 0xdb, 0x8c, 0x2c, 0x56, 0x61, 0x41, 0x47, 0x91, 0x9d, 0x57, 0x55,
0xe7, 0xf3, 0x1a, 0xb6, 0x18, 0xc3, 0xfb, 0x30, 0x27, 0xbf, 0x89, 0xf8, 0x7c, 0x90, 0x56, 0xea,
0x4e, 0x5b, 0x80, 0xe5, 0x2c, 0xef, 0x43, 0xe7, 0xc4, 0x0f, 0xbc, 0xa1, 0xdb, 0x1f, 0x26, 0xe7,
0xee, 0x80, 0x0e, 0x13, 0x0f, 0xa9, 0xa6, 0xea, 0xb4, 0x11, 0xbe, 0x31, 0x4c, 0xce, 0x37, 0x19,
0x94, 0x7c, 0x00, 0xf5, 0x13, 0x4a, 0x5d, 0x5c, 0xac, 0x6e, 0xcd, 0xe0, 0x40, 0xb9, 0x43, 0x4e,
0xed, 0x44, 0xee, 0xd5, 0x07, 0xd0, 0x09, 0x27, 0xc9, 0x69, 0xe8, 0x07, 0xa7, 0x2e, 0x93, 0x79,
0xae, 0x3f, 0x40, 0x2a, 0xaa, 0xac, 0x97, 0x1e, 0x59, 0x4e, 0x5b, 0xd6, 0x31, 0xe9, 0xb3, 0x33,
0x20, 0xef, 0xc1, 0xdc, 0xd0, 0x8b, 0x13, 0xf7, 0x2c, 0x1c, 0xbb, 0xe3, 0xc9, 0xf1, 0x2b, 0x7a,
0xd9, 0x6d, 0xe1, 0x42, 0xb4, 0x18, 0x78, 0x3b, 0x1c, 0x1f, 0x20, 0x90, 0xdc, 0x06, 0xc0, 0x71,
0xf2, 0x41, 0xc0, 0x5d, 0xeb, 0x7e, 0xcb, 0xa9, 0x33, 0x08, 0xef, 0xf4, 0x7b, 0xb0, 0x80, 0xdb,
0xd3, 0x9f, 0xc4, 0x49, 0x38, 0x72, 0x99, 0xbc, 0x8e, 0x06, 0x71, 0xb7, 0x81, 0xb4, 0xf6, 0x65,
0x31, 0x58, 0x6d, 0x8f, 0x57, 0x36, 0x69, 0x9c, 0x6c, 0x20, 0xb2, 0xc3, 0x71, 0xd9, 0xa1, 0x7e,
0xe9, 0xcc, 0x0f, 0xb2, 0x70, 0xf2, 0x01, 0x10, 0x6f, 0x38, 0x0c, 0x2f, 0xdc, 0x98, 0x0e, 0x4f,
0x5c, 0xb1, 0x88, 0xdd, 0xf6, 0x5d, 0xeb, 0x7e, 0xcd, 0xe9, 0x60, 0xcd, 0x21, 0x1d, 0x9e, 0x1c,
0x70, 0x38, 0xf9, 0x08, 0x5a, 0x38, 0x90, 0x13, 0xea, 0x25, 0x93, 0x88, 0xc6, 0xdd, 0xb9, 0xbb,
0xe5, 0xfb, 0xed, 0xd5, 0x79, 0xb5, 0x5e, 0x08, 0x5e, 0xf7, 0x13, 0xa7, 0xc9, 0xf0, 0x44, 0x39,
0xee, 0x6d, 0xc2, 0x52, 0xf1, 0x90, 0x18, 0x51, 0xb1, 0x55, 0x61, 0xc4, 0x58, 0x71, 0xd8, 0x9f,
0x64, 0x11, 0xaa, 0xe7, 0xde, 0x70, 0x42, 0x85, 0x5c, 0xe7, 0x85, 0x8f, 0x4b, 0x8f, 0x2d, 0xfb,
0x8f, 0x2d, 0x68, 0xf2, 0x59, 0x0a, 0x7d, 0xe4, 0x1e, 0xb4, 0x24, 0x35, 0xd0, 0x28, 0x0a, 0x23,
0x21, 0xde, 0x4c, 0x20, 0x79, 0x00, 0x1d, 0x09, 0x18, 0x47, 0xd4, 0x1f, 0x79, 0xa7, 0xb2, 0xed,
0x1c, 0x9c, 0xac, 0xa6, 0x2d, 0x46, 0xe1, 0x24, 0xa1, 0xe2, 0xe4, 0x6b, 0x8a, 0x09, 0x3a, 0x0c,
0xe6, 0x98, 0x28, 0x4c, 0xbc, 0x15, 0x90, 0xba, 0x01, 0xb3, 0xff, 0xb6, 0x05, 0x84, 0x0d, 0xfd,
0x28, 0xe4, 0x4d, 0x08, 0x2a, 0xcd, 0x72, 0x89, 0xf5, 0xd6, 0x5c, 0x52, 0xba, 0x8a, 0x4b, 0x6c,
0xa8, 0xf2, 0xd1, 0x57, 0x0a, 0x46, 0xcf, 0xab, 0x3e, 0xa9, 0xd4, 0xca, 0x9d, 0x8a, 0xfd, 0x5f,
0xca, 0xb0, 0xb8, 0xc1, 0x8f, 0xee, 0xb5, 0x7e, 0x9f, 0x8e, 0x15, 0xff, 0xbc, 0x03, 0x8d, 0x20,
0x1c, 0x50, 0x49, 0xb5, 0x7c, 0x60, 0xc0, 0x40, 0x1a, 0xc9, 0x9e, 0x79, 0x7e, 0xc0, 0x07, 0xce,
0xd7, 0xb3, 0x8e, 0x10, 0x1c, 0xf6, 0x7b, 0x30, 0x37, 0xa6, 0xc1, 0x40, 0x67, 0x13, 0xae, 0x5c,
0xb5, 0x04, 0x58, 0x70, 0xc8, 0x3b, 0xd0, 0x38, 0x99, 0x70, 0x3c, 0x26, 0x5c, 0x2a, 0x48, 0x07,
0x20, 0x40, 0x6b, 0x5c, 0xc6, 0x8c, 0x27, 0xf1, 0x19, 0xd6, 0x56, 0xb1, 0x76, 0x96, 0x95, 0x59,
0xd5, 0x6d, 0x80, 0xc1, 0x24, 0x4e, 0x04, 0xd7, 0xcc, 0x60, 0x65, 0x9d, 0x41, 0x38, 0xd7, 0x7c,
0x15, 0x16, 0x46, 0xde, 0x6b, 0x17, 0xe9, 0xc7, 0xf5, 0x03, 0xf7, 0x64, 0x88, 0xa7, 0xcf, 0x2c,
0xe2, 0x75, 0x46, 0xde, 0xeb, 0xef, 0xb2, 0x9a, 0x9d, 0xe0, 0x29, 0xc2, 0x99, 0x68, 0x91, 0x6a,
0x4f, 0x44, 0x63, 0x1a, 0x9d, 0x53, 0x94, 0x06, 0x15, 0xa5, 0xdb, 0x38, 0x1c, 0xca, 0x46, 0x34,
0x62, 0xf3, 0x4e, 0x86, 0x7d, 0xce, 0xfa, 0xce, 0xec, 0xc8, 0x0f, 0xb6, 0x93, 0x61, 0x9f, 0xdc,
0x02, 0x60, 0xb2, 0x64, 0x4c, 0x23, 0xf7, 0xd5, 0x05, 0xf2, 0x71, 0x05, 0x65, 0xc7, 0x01, 0x8d,
0x3e, 0xbd, 0x20, 0x37, 0xa1, 0xde, 0x8f, 0x51, 0x18, 0x79, 0x97, 0xdd, 0x06, 0x32, 0x79, 0xad,
0x1f, 0x33, 0x31, 0xe4, 0x5d, 0x32, 0x46, 0x64, 0xa3, 0xf5, 0x70, 0x17, 0xe8, 0x00, 0x9b, 0x8f,
0x51, 0xaa, 0xb6, 0x70, 0xb0, 0x6b, 0xa2, 0x82, 0xf5, 0x13, 0x93, 0x2f, 0x41, 0x4b, 0x0e, 0xf6,
0x64, 0xe8, 0x9d, 0xc6, 0x28, 0x56, 0x5a, 0x4e, 0x53, 0x00, 0x9f, 0x32, 0x98, 0xfd, 0x92, 0x2b,
0x5b, 0xda, 0xde, 0x0a, 0xbe, 0x61, 0xc7, 0x3e, 0x42, 0x70, 0x5f, 0x6b, 0x8e, 0x28, 0x15, 0x6d,
0x5a, 0xa9, 0x60, 0xd3, 0xec, 0x9f, 0x5b, 0xd0, 0x14, 0x2d, 0xa3, 0x86, 0x42, 0x1e, 0x01, 0x91,
0xbb, 0x98, 0xbc, 0xf6, 0x07, 0xee, 0xf1, 0x65, 0x42, 0x63, 0x4e, 0x34, 0xdb, 0xd7, 0x9c, 0x82,
0x3a, 0x26, 0x47, 0x0d, 0x68, 0x9c, 0x44, 0x9c, 0xa6, 0xb7, 0xaf, 0x39, 0xb9, 0x1a, 0xc6, 0x62,
0x4c, 0x07, 0x9a, 0x24, 0xae, 0x1f, 0x0c, 0xe8, 0x6b, 0x24, 0xa5, 0x96, 0x63, 0xc0, 0xd6, 0xdb,
0xd0, 0xd4, 0xbf, 0xb3, 0x7f, 0x04, 0x35, 0xa9, 0x41, 0xa1, 0xf6, 0x90, 0x19, 0x97, 0xa3, 0x41,
0x48, 0x0f, 0x6a, 0xe6, 0x28, 0x9c, 0xda, 0x17, 0xe9, 0xdb, 0xfe, 0x16, 0x74, 0x76, 0x19, 0x11,
0x05, 0x8c, 0x68, 0x85, 0x5a, 0xb8, 0x04, 0x33, 0x1a, 0xf3, 0xd4, 0x1d, 0x51, 0x62, 0xe7, 0xef,
0x59, 0x18, 0x27, 0xa2, 0x1f, 0xfc, 0xdb, 0xfe, 0x13, 0x0b, 0xc8, 0x56, 0x9c, 0xf8, 0x23, 0x2f,
0xa1, 0x4f, 0xa9, 0x12, 0x0f, 0xfb, 0xd0, 0x64, 0xad, 0x1d, 0x85, 0x6b, 0x5c, 0x49, 0xe3, 0xca,
0xc5, 0x57, 0x04, 0x3b, 0xe7, 0x3f, 0x58, 0xd1, 0xb1, 0xb9, 0xc8, 0x37, 0x1a, 0x60, 0xdc, 0x96,
0x78, 0xd1, 0x29, 0x4d, 0x50, 0x83, 0x13, 0xfa, 0x3f, 0x70, 0xd0, 0x46, 0x18, 0x9c, 0xf4, 0x7e,
0x17, 0xe6, 0x73, 0x6d, 0xe8, 0x32, 0xba, 0x5e, 0x20, 0xa3, 0xcb, 0xba, 0x8c, 0xee, 0xc3, 0x82,
0x31, 0x2e, 0x41, 0x71, 0x5d, 0x98, 0x65, 0x8c, 0xc1, 0x14, 0x05, 0x8b, 0x2b, 0x0a, 0xa2, 0x48,
0x56, 0x61, 0xf1, 0x84, 0xd2, 0xc8, 0x4b, 0xb0, 0x88, 0xac, 0xc3, 0xf6, 0x44, 0xb4, 0x5c, 0x58,
0x67, 0xff, 0x99, 0x05, 0x73, 0x4c, 0x9a, 0x3e, 0xf7, 0x82, 0x4b, 0xb9, 0x56, 0xbb, 0x85, 0x6b,
0x75, 0x5f, 0x3b, 0x1c, 0x35, 0xec, 0x2f, 0xba, 0x50, 0xe5, 0xec, 0x42, 0x91, 0xbb, 0xd0, 0x34,
0x86, 0x5b, 0xe5, 0x1a, 0x69, 0xec, 0x25, 0x07, 0x34, 0x5a, 0xbf, 0x4c, 0xe8, 0xaf, 0xbe, 0x94,
0xef, 0x41, 0x27, 0x1d, 0xb6, 0x58, 0x47, 0x02, 0x15, 0x46, 0x98, 0xa2, 0x01, 0xfc, 0xdb, 0xfe,
0x07, 0x16, 0x47, 0xdc, 0x08, 0x7d, 0xa5, 0xad, 0x32, 0x44, 0xa6, 0xf4, 0x4a, 0x44, 0xf6, 0xf7,
0x54, 0x6d, 0xff, 0x57, 0x9f, 0x2c, 0x93, 0x89, 0x31, 0x0d, 0x06, 0xae, 0x37, 0x1c, 0xa2, 0x20,
0xae, 0x39, 0xb3, 0xac, 0xbc, 0x36, 0x1c, 0xda, 0xef, 0xc3, 0xbc, 0x36, 0xba, 0x2b, 0xe6, 0xb1,
0x07, 0x64, 0xd7, 0x8f, 0x93, 0x17, 0x41, 0x3c, 0xd6, 0x14, 0xb9, 0x9b, 0x50, 0x67, 0xd2, 0x96,
0x8d, 0x8c, 0x73, 0x6e, 0xd5, 0x61, 0xe2, 0x97, 0x8d, 0x2b, 0xc6, 0x4a, 0xef, 0xb5, 0xa8, 0x2c,
0x89, 0x4a, 0xef, 0x35, 0x56, 0xda, 0x8f, 0x61, 0xc1, 0x68, 0x4f, 0x74, 0xfd, 0x2e, 0x54, 0x27,
0xc9, 0xeb, 0x50, 0xaa, 0xea, 0x0d, 0x41, 0x21, 0xcc, 0x28, 0x74, 0x78, 0x8d, 0xfd, 0x04, 0xe6,
0xf7, 0xe8, 0x85, 0x60, 0x64, 0x39, 0x90, 0xf7, 0xde, 0x68, 0x30, 0x62, 0xbd, 0xbd, 0x02, 0x44,
0xff, 0x38, 0x65, 0x00, 0x69, 0x3e, 0x5a, 0x86, 0xf9, 0x68, 0xbf, 0x07, 0xe4, 0xd0, 0x3f, 0x0d,
0x9e, 0xd3, 0x38, 0xf6, 0x4e, 0x15, 0xeb, 0x77, 0xa0, 0x3c, 0x8a, 0x4f, 0x85, 0xa8, 0x62, 0x7f,
0xda, 0x5f, 0x83, 0x05, 0x03, 0x4f, 0x34, 0x7c, 0x0b, 0xea, 0xb1, 0x7f, 0x1a, 0xa0, 0xa2, 0x25,
0x9a, 0x4e, 0x01, 0xf6, 0x53, 0x58, 0xfc, 0x2e, 0x8d, 0xfc, 0x93, 0xcb, 0x37, 0x35, 0x6f, 0xb6,
0x53, 0xca, 0xb6, 0xb3, 0x05, 0xd7, 0x33, 0xed, 0x88, 0xee, 0x39, 0xf9, 0x8a, 0x9d, 0xac, 0x39,
0xbc, 0xa0, 0xc9, 0xbe, 0x92, 0x2e, 0xfb, 0xec, 0x17, 0x40, 0x36, 0xc2, 0x20, 0xa0, 0xfd, 0xe4,
0x80, 0xd2, 0x28, 0xf5, 0x5c, 0xa5, 0xb4, 0xda, 0x58, 0x5d, 0x16, 0x2b, 0x9b, 0x15, 0xa8, 0x82,
0x88, 0x09, 0x54, 0xc6, 0x34, 0x1a, 0x61, 0xc3, 0x35, 0x07, 0xff, 0xb6, 0xaf, 0xc3, 0x82, 0xd1,
0xac, 0xb0, 0xf5, 0x3f, 0x84, 0xeb, 0x9b, 0x7e, 0xdc, 0xcf, 0x77, 0xd8, 0x85, 0xd9, 0xf1, 0xe4,
0xd8, 0x4d, 0x39, 0x51, 0x16, 0x99, 0xf9, 0x97, 0xfd, 0x44, 0x34, 0xf6, 0xd7, 0x2d, 0xa8, 0x6c,
0x1f, 0xed, 0x6e, 0xb0, 0xb3, 0xc2, 0x0f, 0xfa, 0xe1, 0x88, 0x69, 0x61, 0x7c, 0xd2, 0xaa, 0x3c,
0x95, 0xc3, 0x6e, 0x41, 0x1d, 0x95, 0x37, 0x66, 0xf1, 0x0a, 0x3d, 0x28, 0x05, 0x30, 0x6b, 0x9b,
0xbe, 0x1e, 0xfb, 0x11, 0x9a, 0xd3, 0xd2, 0x48, 0xae, 0xe0, 0x31, 0x93, 0xaf, 0xb0, 0xff, 0xdd,
0x2c, 0xcc, 0x8a, 0xc3, 0x97, 0x1f, 0xe4, 0x89, 0x7f, 0x4e, 0xd3, 0x83, 0x9c, 0x95, 0x98, 0x62,
0x1c, 0xd1, 0x51, 0x98, 0x28, 0xfd, 0x8d, 0x6f, 0x83, 0x09, 0x44, 0x6f, 0x82, 0x50, 0x22, 0xb8,
0xff, 0xa1, 0xcc, 0xb1, 0x0c, 0x20, 0xb9, 0x05, 0xb3, 0x52, 0x19, 0xa8, 0x28, 0x43, 0x47, 0x82,
0xd8, 0x6a, 0xf4, 0xbd, 0xb1, 0xd7, 0xf7, 0x93, 0x4b, 0x21, 0x16, 0x54, 0x99, 0xb5, 0x3f, 0x0c,
0xfb, 0xde, 0xd0, 0x3d, 0xf6, 0x86, 0x5e, 0xd0, 0xa7, 0xd2, 0x5b, 0x61, 0x00, 0x99, 0xe5, 0x2e,
0x86, 0x25, 0xd1, 0xb8, 0x75, 0x9f, 0x81, 0xb2, 0x33, 0xbc, 0x1f, 0x8e, 0x46, 0x3e, 0xb3, 0x3e,
0xb8, 0x6a, 0x56, 0x76, 0x34, 0x08, 0xf7, 0x8d, 0x60, 0xe9, 0x82, 0xaf, 0x60, 0x5d, 0xfa, 0x46,
0x34, 0x20, 0x6b, 0x25, 0xa3, 0xa1, 0x95, 0x1d, 0x0d, 0xc2, 0xf6, 0x62, 0x12, 0xc4, 0x34, 0x49,
0x86, 0x74, 0xa0, 0x06, 0xd4, 0x40, 0xb4, 0x7c, 0x05, 0x79, 0x04, 0x0b, 0xdc, 0x07, 0x11, 0x7b,
0x49, 0x18, 0x9f, 0xf9, 0xb1, 0x1b, 0x33, 0xf3, 0x89, 0xdb, 0xc2, 0x45, 0x55, 0xe4, 0x31, 0x2c,
0x67, 0xc0, 0x11, 0xed, 0x53, 0xff, 0x9c, 0x0e, 0x50, 0x85, 0x2b, 0x3b, 0xd3, 0xaa, 0xc9, 0x5d,
0x68, 0x04, 0x93, 0x91, 0x3b, 0x19, 0x0f, 0x3c, 0xa6, 0xc4, 0xb4, 0x51, 0xb9, 0xd4, 0x41, 0xe4,
0x43, 0x90, 0x7a, 0x9a, 0xd0, 0x1e, 0xe7, 0x0c, 0x09, 0xc7, 0xa8, 0xd7, 0x31, 0x31, 0x18, 0x61,
0xa6, 0x2a, 0x69, 0x47, 0xd8, 0x9d, 0x12, 0x80, 0x7c, 0x12, 0xf9, 0xe7, 0x5e, 0x42, 0xbb, 0xf3,
0x5c, 0xa8, 0x8b, 0x22, 0xfb, 0xce, 0x0f, 0xfc, 0xc4, 0xf7, 0x92, 0x30, 0xea, 0x12, 0xac, 0x4b,
0x01, 0x6c, 0x11, 0x91, 0x3e, 0xe2, 0xc4, 0x4b, 0x26, 0xb1, 0xd0, 0x50, 0x17, 0x90, 0xb8, 0xf2,
0x15, 0xe4, 0x23, 0x58, 0xe2, 0x14, 0x81, 0x55, 0x42, 0xf7, 0x46, 0x55, 0x61, 0x11, 0x57, 0x64,
0x4a, 0x2d, 0x5b, 0x4a, 0x41, 0x22, 0xb9, 0x0f, 0xaf, 0xf3, 0xa5, 0x9c, 0x52, 0xcd, 0xc6, 0xc7,
0x46, 0xe0, 0xf7, 0x5d, 0x81, 0xc1, 0x58, 0x64, 0x09, 0x67, 0x91, 0xaf, 0x60, 0x24, 0x3e, 0xf4,
0x4f, 0x68, 0xe2, 0x8f, 0x68, 0x77, 0x99, 0x93, 0xb8, 0x2c, 0x33, 0x06, 0x9c, 0x8c, 0xb1, 0xa6,
0xcb, 0x19, 0x9e, 0x97, 0x90, 0x18, 0x87, 0x61, 0x4c, 0xa5, 0xe7, 0xa9, 0x7b, 0x43, 0xb0, 0x96,
0x0e, 0xb4, 0xff, 0x95, 0xc5, 0x8f, 0x28, 0xc1, 0xce, 0xb1, 0x66, 0x7c, 0x71, 0x46, 0x76, 0xc3,
0x60, 0x78, 0x29, 0x78, 0x1b, 0x38, 0x68, 0x3f, 0x18, 0x5e, 0x32, 0xf5, 0xdf, 0x0f, 0x74, 0x14,
0x2e, 0x0d, 0x9b, 0x12, 0x88, 0x48, 0xef, 0x40, 0x63, 0x3c, 0x39, 0x1e, 0xfa, 0x7d, 0x8e, 0x52,
0xe6, 0xad, 0x70, 0x10, 0x22, 0x30, 0xeb, 0x93, 0xef, 0x27, 0xc7, 0xa8, 0x20, 0x46, 0x43, 0xc0,
0x10, 0x05, 0xa5, 0x2d, 0x8d, 0x90, 0xb5, 0x9b, 0x0e, 0xfe, 0x6d, 0xaf, 0xc3, 0xa2, 0x39, 0x68,
0x71, 0x14, 0x3c, 0x80, 0x9a, 0x90, 0x1c, 0xd2, 0x35, 0xd1, 0xd6, 0x1c, 0xc6, 0xcc, 0x80, 0x52,
0xf5, 0xf6, 0xcf, 0x66, 0x60, 0x41, 0x40, 0x37, 0xd8, 0x92, 0x1c, 0x4e, 0x46, 0x23, 0x2f, 0x2a,
0x10, 0x49, 0xd6, 0x1b, 0x44, 0x52, 0x29, 0x2f, 0x92, 0xee, 0x18, 0x96, 0x29, 0x97, 0x69, 0x1a,
0x84, 0xdc, 0x87, 0x39, 0xb6, 0x0d, 0xdc, 0x50, 0xd0, 0x7d, 0x96, 0x59, 0x70, 0x5e, 0x8c, 0x56,
0x8b, 0xc4, 0xa8, 0x2e, 0x02, 0x67, 0x32, 0x22, 0xd0, 0x86, 0x26, 0xdf, 0x72, 0x21, 0xd5, 0x67,
0x85, 0x99, 0xa6, 0xc1, 0xd8, 0x78, 0xb2, 0x02, 0x87, 0x4b, 0xb7, 0xb9, 0x22, 0x71, 0xe3, 0x8f,
0x28, 0x9e, 0x1a, 0x1a, 0x76, 0x5d, 0x88, 0x9b, 0x7c, 0x15, 0x79, 0x0a, 0xc0, 0xfb, 0x42, 0xd5,
0x05, 0x50, 0x75, 0x79, 0xcf, 0xdc, 0x15, 0x7d, 0xfd, 0x57, 0x58, 0x61, 0x12, 0x51, 0x54, 0x67,
0xb4, 0x2f, 0xc9, 0x2e, 0xb4, 0xc3, 0x31, 0x0d, 0xdc, 0x94, 0xe9, 0x1b, 0xd8, 0xd6, 0xbd, 0x2b,
0xda, 0xda, 0x91, 0xb8, 0x4e, 0xe6, 0x5b, 0xb2, 0xc7, 0x77, 0x80, 0x6a, 0xcd, 0x35, 0xbf, 0x40,
0x73, 0xd9, 0x8f, 0xed, 0xbf, 0x69, 0x41, 0x43, 0x1b, 0x39, 0xb9, 0x0e, 0xf3, 0x1b, 0xfb, 0xfb,
0x07, 0x5b, 0xce, 0xda, 0xd1, 0xce, 0x77, 0xb7, 0xdc, 0x8d, 0xdd, 0xfd, 0xc3, 0xad, 0xce, 0x35,
0x06, 0xde, 0xdd, 0xdf, 0x58, 0xdb, 0x75, 0x9f, 0xee, 0x3b, 0x1b, 0x12, 0x6c, 0x91, 0x25, 0x20,
0xce, 0xd6, 0xf3, 0xfd, 0xa3, 0x2d, 0x03, 0x5e, 0x22, 0x1d, 0x68, 0xae, 0x3b, 0x5b, 0x6b, 0x1b,
0xdb, 0x02, 0x52, 0x26, 0x8b, 0xd0, 0x79, 0xfa, 0x62, 0x6f, 0x73, 0x67, 0xef, 0x99, 0xbb, 0xb1,
0xb6, 0xb7, 0xb1, 0xb5, 0xbb, 0xb5, 0xd9, 0xa9, 0x90, 0x16, 0xd4, 0xd7, 0xd6, 0xd7, 0xf6, 0x36,
0xf7, 0xf7, 0xb6, 0x36, 0x3b, 0x55, 0xfb, 0x9b, 0x50, 0x57, 0x43, 0x25, 0x0d, 0x98, 0x7d, 0xb1,
0xf7, 0xe9, 0xde, 0xfe, 0xcb, 0xbd, 0xce, 0x35, 0x52, 0x87, 0x2a, 0xf6, 0xdf, 0xb1, 0x08, 0xc0,
0x0c, 0xef, 0xb3, 0x53, 0x22, 0x35, 0xa8, 0xac, 0xef, 0x1f, 0x6d, 0x77, 0xca, 0xf6, 0x7f, 0xb3,
0xe0, 0x3a, 0xce, 0x79, 0x90, 0x95, 0x08, 0x77, 0xa1, 0xd1, 0x0f, 0xc3, 0x31, 0xb3, 0x85, 0xd2,
0xd3, 0x5e, 0x07, 0x31, 0x6e, 0xe7, 0x72, 0xf2, 0x24, 0x8c, 0xfa, 0x54, 0x08, 0x04, 0x40, 0xd0,
0x53, 0x06, 0x61, 0xdc, 0x2e, 0xe8, 0x96, 0x63, 0x70, 0x79, 0xd0, 0xe0, 0x30, 0x8e, 0xb2, 0x04,
0x33, 0xc7, 0x11, 0xf5, 0xfa, 0x67, 0x42, 0x14, 0x88, 0x12, 0xf9, 0x72, 0x6a, 0xac, 0xf7, 0x19,
0x59, 0x0d, 0xe9, 0x00, 0x59, 0xa1, 0xe6, 0xcc, 0x09, 0xf8, 0x86, 0x00, 0xb3, 0x83, 0xc1, 0x3b,
0xf6, 0x82, 0x41, 0x18, 0xd0, 0x81, 0xb0, 0x04, 0x52, 0x80, 0x7d, 0x00, 0x4b, 0xd9, 0xf9, 0x09,
0xe1, 0xf1, 0x91, 0x26, 0x3c, 0xb8, 0x62, 0xde, 0x9b, 0x4e, 0x0b, 0x9a, 0x20, 0xf9, 0xb3, 0x32,
0x54, 0x98, 0x9e, 0x36, 0x5d, 0xa7, 0xd3, 0x55, 0xef, 0x72, 0x2e, 0x72, 0x83, 0xf6, 0x3f, 0x3f,
0xb5, 0x85, 0xef, 0x29, 0x85, 0xa4, 0xf5, 0x11, 0xed, 0x9f, 0x0b, 0xef, 0x93, 0x06, 0x61, 0x9c,
0xcf, 0xec, 0x22, 0xfc, 0x5a, 0x70, 0xbe, 0x2c, 0xcb, 0x3a, 0xfc, 0x72, 0x36, 0xad, 0xc3, 0xef,
0xba, 0x30, 0xeb, 0x07, 0xc7, 0xe1, 0x24, 0x18, 0x20, 0xa7, 0xd7, 0x1c, 0x59, 0xc4, 0x58, 0x11,
0x4a, 0x20, 0x76, 0xa4, 0x70, 0xbe, 0x4e, 0x01, 0x64, 0x15, 0xea, 0xf1, 0x65, 0xd0, 0xd7, 0x99,
0x79, 0x51, 0xac, 0x12, 0x5b, 0x83, 0x95, 0xc3, 0xcb, 0xa0, 0x8f, 0xac, 0x9b, 0xa2, 0x91, 0x6f,
0x40, 0x4d, 0x79, 0x6b, 0xb9, 0x54, 0xbe, 0xa1, 0x7f, 0x22, 0x5d, 0xb4, 0xdc, 0x08, 0x56, 0xa8,
0xbd, 0x4f, 0xa1, 0x65, 0x54, 0xe9, 0x96, 0x6b, 0x8b, 0x5b, 0xae, 0xf7, 0x74, 0xcb, 0x35, 0x15,
0xf6, 0xe2, 0x33, 0xdd, 0x92, 0xfd, 0x5d, 0xa8, 0xc9, 0xa1, 0x31, 0xae, 0x12, 0x1c, 0xe1, 0x1e,
0x7e, 0x6f, 0x6f, 0xa3, 0x73, 0x8d, 0xcc, 0x41, 0x63, 0x6d, 0x03, 0x19, 0x15, 0x01, 0x16, 0x43,
0x39, 0x58, 0x3b, 0x3c, 0x54, 0x90, 0x92, 0x4d, 0xa0, 0xc3, 0x8e, 0x1c, 0x36, 0x62, 0x15, 0x8f,
0xf9, 0x08, 0xe6, 0x35, 0x58, 0x6a, 0xdc, 0xb1, 0x33, 0x2a, 0x6b, 0xdc, 0xa1, 0x26, 0xcf, 0x6b,
0xec, 0x65, 0xb8, 0xce, 0x8a, 0x5b, 0xe7, 0x34, 0x48, 0x0e, 0x27, 0xc7, 0x3c, 0x0c, 0xe7, 0x87,
0x81, 0xfd, 0xd7, 0x2c, 0xa8, 0xab, 0x9a, 0x2b, 0xe8, 0x49, 0x46, 0x0e, 0x4b, 0xb8, 0x01, 0x3d,
0xad, 0x0b, 0xfc, 0x72, 0x05, 0xff, 0x35, 0x0c, 0xc2, 0xba, 0x02, 0xb1, 0xc9, 0x1e, 0x6c, 0x6d,
0x39, 0xee, 0xfe, 0xde, 0xee, 0xce, 0x1e, 0x13, 0x4a, 0x6c, 0xb2, 0x08, 0x78, 0xfa, 0x14, 0x21,
0x96, 0xdd, 0x81, 0xf6, 0x33, 0x9a, 0xec, 0x04, 0x27, 0xa1, 0x9c, 0xea, 0xff, 0xad, 0xc2, 0x9c,
0x02, 0xa5, 0x06, 0xe5, 0x39, 0x8d, 0x62, 0x3f, 0x0c, 0x50, 0x15, 0xac, 0x3b, 0xb2, 0xc8, 0xce,
0x13, 0x7f, 0x40, 0x83, 0xc4, 0x4f, 0x2e, 0x5d, 0xc3, 0x03, 0x95, 0x05, 0x33, 0xe3, 0xcd, 0x1b,
0xfa, 0x9e, 0x8c, 0x68, 0xf2, 0x02, 0x83, 0xf6, 0xc3, 0x61, 0x18, 0xa1, 0xce, 0x57, 0x77, 0x78,
0x81, 0xac, 0xc2, 0x22, 0xd3, 0x35, 0x75, 0xff, 0x20, 0x32, 0x2b, 0x77, 0x87, 0x15, 0xd6, 0xb1,
0xf3, 0x8a, 0xc1, 0x85, 0xa2, 0xa2, 0x3e, 0xe1, 0xa6, 0x4d, 0x51, 0x15, 0xf9, 0x3a, 0x5c, 0x67,
0x60, 0xa5, 0xdc, 0xa8, 0x6f, 0xe6, 0xf0, 0x9b, 0xe2, 0x4a, 0xc6, 0x35, 0xbc, 0x7f, 0xb6, 0xf3,
0x55, 0xae, 0xc5, 0x2a, 0x40, 0x2e, 0xfc, 0x38, 0xc3, 0xcf, 0xe0, 0x6c, 0xf8, 0x51, 0x0b, 0x61,
0xd6, 0x72, 0x21, 0xcc, 0xaf, 0xc3, 0xf5, 0x63, 0x1a, 0x27, 0xee, 0x19, 0xf5, 0x06, 0x34, 0x42,
0x6e, 0xe4, 0x91, 0x4a, 0xae, 0xb4, 0x17, 0x57, 0xe2, 0xc9, 0x7e, 0x19, 0xf4, 0xe9, 0xc0, 0x4d,
0x42, 0x17, 0x35, 0x10, 0xe4, 0xe9, 0x9a, 0x93, 0x05, 0x9b, 0x98, 0xa7, 0x91, 0x37, 0x3e, 0x13,
0x5a, 0x75, 0x16, 0xcc, 0x74, 0x9f, 0x84, 0xc6, 0x49, 0x40, 0x79, 0x9c, 0xa8, 0x86, 0x31, 0x00,
0x09, 0x22, 0xf7, 0x60, 0x06, 0x1b, 0x8c, 0xbb, 0x1d, 0x64, 0x80, 0x66, 0x2a, 0x44, 0xfd, 0xc0,
0x11, 0x75, 0x4c, 0xab, 0x9b, 0x44, 0x7e, 0xdc, 0x6d, 0x62, 0x88, 0x14, 0xff, 0x26, 0xdf, 0xd6,
0xe4, 0xc4, 0x02, 0x7e, 0x2b, 0x0f, 0xe3, 0x0c, 0xe5, 0xfd, 0x46, 0x44, 0xc6, 0x27, 0x95, 0x5a,
0xa3, 0xd3, 0xb4, 0x7f, 0x1b, 0xaa, 0x38, 0x72, 0xa4, 0x49, 0x5c, 0x3f, 0x4b, 0xd0, 0x24, 0x42,
0xbb, 0x30, 0x1b, 0xd0, 0xe4, 0x22, 0x8c, 0x5e, 0xc9, 0x98, 0xbc, 0x28, 0xda, 0x3f, 0x46, 0x47,
0x83, 0x8a, 0x51, 0xbf, 0x40, 0x0b, 0x89, 0xdc, 0x84, 0x3a, 0xdf, 0xd3, 0xf8, 0xcc, 0x13, 0xbe,
0x8f, 0x1a, 0x02, 0x0e, 0xcf, 0x3c, 0x76, 0x3e, 0x1a, 0x64, 0xc2, 0xdd, 0x49, 0x0d, 0x84, 0x6d,
0x73, 0x2a, 0xb9, 0x07, 0x6d, 0x19, 0xfd, 0x8e, 0xdd, 0x21, 0x3d, 0x49, 0xa4, 0x33, 0x38, 0x98,
0x8c, 0xd0, 0xe7, 0xb4, 0x4b, 0x4f, 0x12, 0x7b, 0x0f, 0xe6, 0xc5, 0x99, 0xb5, 0x3f, 0xa6, 0xb2,
0xeb, 0x6f, 0x16, 0x29, 0xb6, 0x8d, 0xd5, 0x05, 0xf3, 0x90, 0xe3, 0xf1, 0x7e, 0x13, 0xd3, 0x76,
0x80, 0xe8, 0x67, 0xa0, 0x68, 0x50, 0x68, 0x96, 0xd2, 0xdd, 0x2d, 0xa6, 0x63, 0xc0, 0xd8, 0xfa,
0xc4, 0x93, 0x7e, 0x5f, 0xde, 0x59, 0xa8, 0x39, 0xb2, 0x68, 0xff, 0x27, 0x0b, 0x16, 0xb0, 0x35,
0xa9, 0x9a, 0x0b, 0x3d, 0xe3, 0xf1, 0x17, 0x18, 0xa6, 0x0c, 0x36, 0x70, 0x17, 0xfb, 0x22, 0x54,
0x75, 0xcd, 0x83, 0x17, 0xbe, 0xb8, 0x6b, 0xb1, 0x92, 0x73, 0x2d, 0x3e, 0x80, 0xce, 0x80, 0x0e,
0x7d, 0xbc, 0xb7, 0x22, 0xcf, 0x71, 0xae, 0x87, 0xe7, 0xe0, 0xf6, 0xdf, 0xb1, 0x60, 0x9e, 0x2b,
0x0a, 0x68, 0x60, 0x8a, 0xa5, 0xfa, 0x0b, 0xd2, 0x18, 0x13, 0x02, 0x4a, 0x4c, 0x2a, 0x3d, 0x3a,
0x11, 0xca, 0x91, 0xb7, 0xaf, 0x39, 0x26, 0x32, 0x79, 0x82, 0xe6, 0x44, 0xe0, 0x22, 0xb4, 0xe0,
0x26, 0x8c, 0xb9, 0x2f, 0xdb, 0xd7, 0x1c, 0x0d, 0x7d, 0xbd, 0xc6, 0xec, 0x43, 0x06, 0xb7, 0x9f,
0x41, 0xcb, 0xe8, 0xc8, 0x70, 0x81, 0x36, 0xb9, 0x0b, 0x34, 0x17, 0x6b, 0x28, 0x15, 0xc4, 0x1a,
0x7e, 0x56, 0x01, 0xc2, 0x08, 0x2b, 0xb3, 0x73, 0x77, 0xcd, 0x80, 0x9d, 0xbc, 0x14, 0x93, 0x82,
0xc8, 0x2a, 0x10, 0xad, 0x28, 0x03, 0x89, 0x65, 0x15, 0x48, 0x2c, 0xa8, 0x65, 0x52, 0x5f, 0x68,
0x95, 0x2a, 0x48, 0x87, 0xee, 0x2d, 0xbe, 0x4d, 0x85, 0x75, 0x4c, 0xf3, 0xc1, 0x88, 0x1d, 0x33,
0xc4, 0x85, 0x4b, 0x48, 0x96, 0xb3, 0xf4, 0x30, 0xf3, 0x46, 0x7a, 0x98, 0xcd, 0xd1, 0x83, 0xe6,
0x94, 0xa8, 0x99, 0x4e, 0x89, 0x7b, 0xd0, 0x92, 0x81, 0x39, 0x7e, 0x27, 0x41, 0x78, 0x80, 0x0c,
0x20, 0xa3, 0x27, 0xe9, 0x17, 0x50, 0x9e, 0x0f, 0x1e, 0x71, 0xcf, 0xc1, 0xd9, 0xc1, 0x92, 0x3a,
0x9f, 0x1b, 0x38, 0xd8, 0x14, 0x80, 0x6e, 0x04, 0x46, 0x25, 0xee, 0x24, 0x10, 0x17, 0x62, 0xe8,
0x00, 0x0d, 0x99, 0x9a, 0x93, 0xaf, 0xc8, 0xbb, 0x04, 0x5a, 0x05, 0x2e, 0x01, 0xf2, 0x51, 0x1a,
0xc5, 0x8a, 0xcf, 0xfc, 0x11, 0x9e, 0xed, 0xe9, 0x7d, 0x92, 0xa7, 0xbc, 0xea, 0xf0, 0xcc, 0x1f,
0x39, 0x06, 0x9e, 0xfd, 0x0b, 0x0b, 0x3a, 0x8c, 0x2a, 0x0c, 0xc2, 0xff, 0x18, 0x90, 0x47, 0xdf,
0x92, 0xee, 0x0d, 0x5c, 0xf2, 0x18, 0xea, 0x58, 0x66, 0xa6, 0x9b, 0xa0, 0xfa, 0xae, 0x49, 0xf5,
0xa9, 0x74, 0xdb, 0xbe, 0xe6, 0xa4, 0xc8, 0xec, 0x2c, 0xcb, 0x46, 0x11, 0x79, 0x48, 0x3c, 0x0b,
0xd6, 0xb8, 0x63, 0x1b, 0xe0, 0x53, 0x7a, 0xb9, 0x1b, 0xf6, 0xd1, 0x6a, 0xba, 0x0d, 0xc0, 0x68,
0xf0, 0xc4, 0x1b, 0xf9, 0xc2, 0xfd, 0x51, 0x75, 0xea, 0xaf, 0xe8, 0xe5, 0x53, 0x04, 0x30, 0x31,
0xce, 0xaa, 0x53, 0x16, 0xa9, 0x3a, 0xb5, 0x57, 0xf4, 0x72, 0x07, 0xd9, 0xc3, 0x85, 0xd6, 0xa7,
0xf4, 0x72, 0x93, 0x72, 0xbd, 0x2e, 0x8c, 0x88, 0x0d, 0xad, 0xc8, 0xbb, 0x60, 0x9a, 0x9b, 0x11,
0xfe, 0x6b, 0x44, 0xde, 0xc5, 0xa7, 0xf4, 0x72, 0x1d, 0xe3, 0x7f, 0x0f, 0x60, 0x96, 0xd5, 0x0f,
0xc3, 0xbe, 0x38, 0x99, 0xe4, 0x8d, 0x86, 0x74, 0x50, 0xce, 0xcc, 0x2b, 0xfc, 0xdb, 0xfe, 0x0f,
0x16, 0xb4, 0xd8, 0x0a, 0xa0, 0xd8, 0x63, 0x3b, 0x21, 0x2f, 0xc6, 0x58, 0xe9, 0xc5, 0x98, 0x55,
0x21, 0x33, 0xb8, 0x0c, 0x2d, 0x4d, 0x97, 0xa1, 0xb8, 0x6c, 0x5c, 0x80, 0x7e, 0x08, 0x75, 0xce,
0x4e, 0x8c, 0x7d, 0xcb, 0xc6, 0x4e, 0x19, 0x13, 0x72, 0x6a, 0x88, 0xf6, 0x29, 0x8f, 0xc1, 0x6b,
0x0e, 0x2c, 0xbe, 0xc8, 0x75, 0x0e, 0x61, 0xd5, 0x05, 0xe1, 0xdc, 0x6a, 0x51, 0x38, 0xf7, 0x05,
0x34, 0x34, 0xc2, 0x22, 0xdf, 0xe2, 0x81, 0x70, 0x3e, 0x78, 0x4e, 0x85, 0x26, 0xe1, 0x18, 0xb3,
0x47, 0x81, 0xa9, 0x03, 0xd6, 0x67, 0xa0, 0x82, 0x24, 0xf9, 0x04, 0xe6, 0xb5, 0x66, 0xb9, 0x85,
0x58, 0x34, 0x26, 0xab, 0x68, 0x4c, 0x7f, 0xd7, 0x82, 0x45, 0xf1, 0x35, 0x5e, 0xa2, 0xf2, 0xd9,
0x31, 0xfe, 0x3c, 0x3e, 0x65, 0x07, 0x29, 0x6b, 0xdd, 0x8d, 0xe8, 0xa9, 0x1f, 0x27, 0x54, 0x46,
0x0d, 0x0a, 0x38, 0x84, 0x91, 0x34, 0x43, 0x75, 0x04, 0x26, 0x79, 0x02, 0x0d, 0xfc, 0x94, 0xdb,
0xb0, 0x62, 0x5b, 0xba, 0xf9, 0x0f, 0xf9, 0x50, 0x99, 0x24, 0x8f, 0x55, 0x69, 0xbd, 0x0e, 0xb3,
0x49, 0xe4, 0x9f, 0x9e, 0xd2, 0xc8, 0x5e, 0x52, 0x43, 0x63, 0xdc, 0x46, 0x0f, 0x13, 0x3a, 0x66,
0xca, 0x11, 0xa3, 0x8c, 0x86, 0x60, 0xaa, 0x5f, 0x3a, 0x52, 0xd0, 0xd3, 0xae, 0x03, 0x72, 0x6b,
0x35, 0xbd, 0xfd, 0x77, 0x1f, 0xe6, 0x46, 0x4c, 0x51, 0x62, 0x1a, 0xbc, 0x11, 0x25, 0xc8, 0x82,
0x99, 0xe2, 0x8d, 0x7a, 0x4b, 0xec, 0x26, 0xfe, 0xd0, 0x95, 0xb5, 0xe2, 0xe2, 0x5d, 0x51, 0x15,
0x3b, 0xbe, 0xe3, 0xc4, 0x3b, 0xa5, 0x42, 0x3b, 0xe6, 0x05, 0xbb, 0x0b, 0x4b, 0x07, 0xe9, 0xb6,
0x68, 0x0e, 0x09, 0xfb, 0x5f, 0xb4, 0x60, 0x39, 0x57, 0xa5, 0xae, 0x09, 0x0b, 0xd7, 0xf7, 0xd0,
0x1f, 0x1d, 0x87, 0xca, 0x4d, 0x65, 0xe9, 0x5e, 0x71, 0xa3, 0x8a, 0x9c, 0xc2, 0x75, 0x49, 0x15,
0xe8, 0x2a, 0x52, 0x6a, 0x7f, 0x09, 0x35, 0xd1, 0x0f, 0x4d, 0x89, 0x95, 0xed, 0x50, 0xc2, 0xf5,
0x53, 0xb1, 0xb8, 0x3d, 0x72, 0x06, 0x5d, 0x45, 0x7e, 0x42, 0x53, 0xd2, 0x2c, 0x19, 0xd6, 0xd7,
0x07, 0x6f, 0xe8, 0xcb, 0xf0, 0x5f, 0x38, 0x53, 0x5b, 0x23, 0x97, 0x70, 0x47, 0xd6, 0xa1, 0x2a,
0x94, 0xef, 0xaf, 0xf2, 0x56, 0x73, 0x43, 0xcf, 0x8c, 0xd9, 0xe9, 0x1b, 0x1a, 0x26, 0x3f, 0x82,
0xa5, 0x0b, 0xcf, 0x4f, 0xe4, 0xb0, 0x34, 0x2b, 0xaa, 0x8a, 0x5d, 0xae, 0xbe, 0xa1, 0xcb, 0x97,
0xfc, 0x63, 0x43, 0x3f, 0x9c, 0xd2, 0x62, 0xef, 0x17, 0x25, 0x68, 0x9b, 0xed, 0x30, 0x32, 0x15,
0x52, 0x49, 0x2a, 0x14, 0xd2, 0xfe, 0xcc, 0x80, 0xf3, 0xde, 0xde, 0x52, 0x91, 0xb7, 0x57, 0xf7,
0xaf, 0x96, 0xdf, 0x14, 0x62, 0xaa, 0xbc, 0x5d, 0x88, 0xa9, 0x5a, 0x18, 0x62, 0x9a, 0x1e, 0x89,
0x98, 0xf9, 0x65, 0x23, 0x11, 0xb3, 0x57, 0x46, 0x22, 0x7a, 0xff, 0xc7, 0x02, 0x92, 0xa7, 0x5e,
0xf2, 0x8c, 0x3b, 0xb8, 0x03, 0x3a, 0x14, 0xe2, 0xed, 0xab, 0x6f, 0xc7, 0x01, 0x72, 0xb7, 0xe4,
0xd7, 0x8c, 0x15, 0xf5, 0xbb, 0xba, 0xba, 0x6d, 0xd3, 0x72, 0x8a, 0xaa, 0x32, 0x61, 0xb6, 0xca,
0x9b, 0xc3, 0x6c, 0xd5, 0x37, 0x87, 0xd9, 0x66, 0xb2, 0x61, 0xb6, 0xde, 0x5f, 0xb5, 0x60, 0xa1,
0x80, 0xcc, 0x7e, 0x7d, 0x13, 0x67, 0x84, 0x61, 0x48, 0x9f, 0x92, 0x20, 0x0c, 0x1d, 0xd8, 0xfb,
0x4b, 0xd0, 0x32, 0x58, 0xeb, 0xd7, 0xd7, 0x7f, 0xd6, 0x3c, 0xe3, 0x94, 0x6d, 0xc0, 0x7a, 0xff,
0xb3, 0x04, 0x24, 0xcf, 0xde, 0xbf, 0xd1, 0x31, 0xe4, 0xd7, 0xa9, 0x5c, 0xb0, 0x4e, 0xff, 0x5f,
0x4f, 0x9e, 0x0f, 0x60, 0x5e, 0x24, 0x20, 0x68, 0x21, 0x0d, 0x4e, 0x31, 0xf9, 0x0a, 0x66, 0xa0,
0x9a, 0x31, 0xce, 0x9a, 0x71, 0xe1, 0x5a, 0x3b, 0x7e, 0x33, 0xa1, 0x4e, 0xbb, 0x07, 0x5d, 0xb1,
0x42, 0x79, 0xd7, 0xdf, 0xdf, 0xaf, 0x28, 0x1b, 0x1b, 0x2b, 0x85, 0xfe, 0xfc, 0x75, 0x68, 0xea,
0xc7, 0x87, 0xd8, 0x8e, 0x4c, 0x54, 0x8b, 0xa9, 0x19, 0x3a, 0x16, 0xd9, 0x84, 0x36, 0x0a, 0xc9,
0x81, 0xfa, 0x8e, 0x6b, 0x1a, 0x57, 0x38, 0xb4, 0xb7, 0xaf, 0x39, 0x99, 0x6f, 0xc8, 0xef, 0x40,
0xdb, 0x74, 0x73, 0x09, 0x9d, 0xb0, 0x48, 0x8d, 0x64, 0x9f, 0x9b, 0xc8, 0x64, 0x0d, 0x3a, 0x59,
0x3f, 0x99, 0xb8, 0x0d, 0x3a, 0xa5, 0x81, 0x1c, 0x3a, 0xf9, 0x04, 0x16, 0x8b, 0x0e, 0x51, 0xdc,
0x9b, 0xe9, 0x56, 0x44, 0xe1, 0x37, 0xe4, 0xb1, 0xf0, 0x99, 0x56, 0x8b, 0xc2, 0x3c, 0xda, 0x92,
0xaf, 0xf0, 0xff, 0x34, 0xef, 0xe9, 0x39, 0x40, 0x0a, 0x23, 0x1d, 0x68, 0xee, 0x1f, 0x6c, 0xed,
0xb9, 0x1b, 0xdb, 0x6b, 0x7b, 0x7b, 0x5b, 0xbb, 0x9d, 0x6b, 0x84, 0x40, 0x1b, 0xc3, 0x33, 0x9b,
0x0a, 0x66, 0x31, 0x98, 0xf0, 0x28, 0x4b, 0x58, 0x89, 0x2c, 0x42, 0x67, 0x67, 0x2f, 0x03, 0x2d,
0x93, 0x2e, 0x2c, 0x1e, 0x6c, 0xf1, 0x88, 0x8e, 0xd1, 0x6e, 0x85, 0xe9, 0x7b, 0x62, 0xf0, 0x4c,
0xdf, 0xe3, 0x69, 0x2c, 0xeb, 0x9c, 0x08, 0xa5, 0x0e, 0xf4, 0x0f, 0x2d, 0xb8, 0x9e, 0xa9, 0x48,
0x2f, 0x26, 0x73, 0x35, 0xc7, 0xd4, 0x7d, 0x4c, 0x20, 0x86, 0xc9, 0xa5, 0x79, 0x98, 0x91, 0x53,
0xf9, 0x0a, 0xc6, 0x59, 0x9a, 0x39, 0x99, 0xe1, 0xd7, 0xa2, 0x2a, 0x7b, 0x59, 0xdd, 0xff, 0xcc,
0x0c, 0xfc, 0x84, 0xa7, 0xc7, 0xe8, 0x15, 0xa9, 0x57, 0xd9, 0x1c, 0xb2, 0x2c, 0x92, 0xd5, 0x0c,
0x35, 0x98, 0xe3, 0x2d, 0xac, 0xb3, 0xff, 0xf9, 0x0c, 0x90, 0xef, 0x4c, 0x68, 0x74, 0x89, 0x37,
0x8f, 0x55, 0x30, 0x6b, 0x39, 0xeb, 0x5a, 0x9f, 0x19, 0x4f, 0x8e, 0x99, 0xc1, 0x22, 0x0c, 0xa9,
0xd2, 0x5b, 0x65, 0x18, 0x14, 0xdd, 0xf0, 0xaf, 0xbc, 0xf9, 0x86, 0x7f, 0xf5, 0x4d, 0x37, 0xfc,
0xbf, 0x04, 0x2d, 0xff, 0x34, 0x08, 0x99, 0xd0, 0x61, 0x8a, 0x4a, 0xdc, 0x9d, 0xb9, 0x5b, 0xbe,
0xdf, 0x74, 0x9a, 0x02, 0xb8, 0xc7, 0x60, 0xe4, 0x49, 0x8a, 0x44, 0x07, 0xa7, 0x98, 0x91, 0xa2,
0x8b, 0xa1, 0xad, 0xc1, 0x29, 0x15, 0x76, 0x23, 0xba, 0x56, 0xe4, 0xc7, 0x0c, 0x1e, 0x93, 0x7b,
0xd0, 0x8e, 0xc3, 0x09, 0x53, 0xdd, 0xe4, 0x32, 0x70, 0x87, 0x73, 0x93, 0x43, 0x0f, 0xf8, 0x62,
0xac, 0xc0, 0xc2, 0x24, 0xa6, 0xee, 0xc8, 0x8f, 0x63, 0x76, 0x3c, 0xf7, 0xc3, 0x20, 0x89, 0xc2,
0xa1, 0x70, 0x20, 0xcf, 0x4f, 0x62, 0xfa, 0x9c, 0xd7, 0x6c, 0xf0, 0x0a, 0xf2, 0xf5, 0x74, 0x48,
0x63, 0xcf, 0x8f, 0xe2, 0x2e, 0xe0, 0x90, 0xe4, 0x4c, 0xd9, 0xb8, 0x0f, 0x3c, 0x3f, 0x52, 0x63,
0x61, 0x85, 0x38, 0x93, 0x79, 0xd0, 0xc8, 0x66, 0x1e, 0xfc, 0xb0, 0x38, 0xf3, 0xa0, 0x85, 0x4d,
0x3f, 0x12, 0x4d, 0xe7, 0xb7, 0xf8, 0x0b, 0x25, 0x20, 0xe4, 0x13, 0x2a, 0xda, 0x5f, 0x24, 0xa1,
0x62, 0xae, 0x28, 0xa1, 0xe2, 0x43, 0x68, 0xe0, 0x35, 0x77, 0xf7, 0xcc, 0x0f, 0x12, 0xe9, 0x0c,
0xef, 0xe8, 0xf7, 0xe0, 0xb7, 0x99, 0xf9, 0x0d, 0x91, 0xfc, 0x33, 0xce, 0xe7, 0x36, 0xcc, 0xff,
0x06, 0x73, 0x1b, 0xc4, 0x75, 0xfc, 0x15, 0xa8, 0xc9, 0x7d, 0x22, 0x04, 0x2a, 0x27, 0x51, 0x38,
0x92, 0xfe, 0x41, 0xf6, 0x37, 0x69, 0x43, 0x29, 0x09, 0xc5, 0xc7, 0xa5, 0x24, 0xb4, 0x7f, 0x1f,
0x1a, 0x1a, 0xa9, 0x91, 0x77, 0xb9, 0xdb, 0x81, 0xa9, 0xce, 0xc2, 0xae, 0xe6, 0xab, 0x58, 0x17,
0xd0, 0x9d, 0x01, 0xf9, 0x0a, 0xcc, 0x0f, 0xfc, 0x88, 0x62, 0x16, 0x92, 0x1b, 0xd1, 0x73, 0x1a,
0xc5, 0xd2, 0x65, 0xdb, 0x51, 0x15, 0x0e, 0x87, 0xdb, 0x2e, 0x2c, 0x18, 0x7b, 0xab, 0xa4, 0xdb,
0x0c, 0xae, 0x9b, 0x8c, 0xb2, 0x99, 0xf9, 0x05, 0xa2, 0x8e, 0x69, 0x1f, 0xc2, 0xdb, 0xec, 0x8e,
0xa3, 0xf0, 0x18, 0x3b, 0xb1, 0x1c, 0x03, 0x66, 0xff, 0x8f, 0x32, 0x94, 0xb7, 0xc3, 0xb1, 0x7e,
0xa1, 0xc3, 0xca, 0x5f, 0xe8, 0x10, 0x66, 0x82, 0xab, 0xac, 0x00, 0xa1, 0xcb, 0x19, 0x40, 0xf2,
0x00, 0xda, 0x4c, 0x54, 0x24, 0x21, 0x33, 0x8b, 0x2e, 0xbc, 0x88, 0x27, 0x1c, 0x94, 0x91, 0xff,
0x32, 0x35, 0x64, 0x11, 0xca, 0x4a, 0xbb, 0x45, 0x04, 0x56, 0x64, 0x36, 0x39, 0x5e, 0xb7, 0xbb,
0x14, 0x31, 0x24, 0x51, 0x62, 0x92, 0xd7, 0xfc, 0x9e, 0xcb, 0x23, 0xae, 0xa3, 0x14, 0x55, 0x31,
0x93, 0x85, 0x49, 0x9c, 0x51, 0x6a, 0x01, 0xa8, 0xb2, 0x1e, 0x58, 0xac, 0x99, 0x81, 0xc5, 0xbb,
0xd0, 0x48, 0x86, 0xe7, 0xee, 0xd8, 0xbb, 0x1c, 0x86, 0xde, 0x40, 0x70, 0xba, 0x0e, 0x22, 0x8f,
0x00, 0x46, 0xe3, 0xb1, 0x60, 0x43, 0xf4, 0x5a, 0xa6, 0x54, 0xfd, 0xfc, 0xe0, 0x80, 0x53, 0x9f,
0xa3, 0xe1, 0x90, 0x2d, 0x68, 0x17, 0x66, 0x0d, 0xdd, 0x96, 0x97, 0xc2, 0xc2, 0xf1, 0x4a, 0x01,
0xa3, 0x66, 0x3e, 0xea, 0x7d, 0x1b, 0xc8, 0xaf, 0x98, 0xbc, 0xf3, 0x12, 0xea, 0x6a, 0x84, 0x7a,
0xca, 0x0c, 0xde, 0xfc, 0x6c, 0x98, 0x29, 0x33, 0x78, 0xd1, 0xf3, 0x3d, 0x68, 0xf3, 0xe3, 0x52,
0x1d, 0x00, 0xfc, 0xb6, 0x5e, 0x06, 0x6a, 0xff, 0xb9, 0x05, 0x55, 0xa4, 0x3c, 0xa6, 0xa5, 0xf2,
0x3a, 0x75, 0x13, 0x46, 0xc4, 0x9e, 0xb2, 0x60, 0x62, 0x1b, 0xd9, 0x84, 0x25, 0x45, 0x06, 0x7a,
0x46, 0xe1, 0x5d, 0xa8, 0xab, 0x9e, 0x34, 0x52, 0x4a, 0x81, 0xe4, 0x0e, 0x54, 0xce, 0xc2, 0xb1,
0x34, 0xe4, 0x21, 0x5d, 0x51, 0x07, 0xe1, 0xe9, 0x78, 0x58, 0x7b, 0x7c, 0x0a, 0xdc, 0x58, 0xca,
0x82, 0x0b, 0xe6, 0x3a, 0x53, 0x38, 0xd7, 0x17, 0x30, 0xc7, 0xe4, 0x83, 0x16, 0x1b, 0x9e, 0x7e,
0x98, 0x7e, 0x99, 0x69, 0x80, 0xfd, 0xe1, 0x64, 0x40, 0x75, 0x77, 0x0a, 0xc6, 0x14, 0x05, 0x5c,
0x1a, 0x12, 0xf6, 0xbf, 0xb4, 0xb8, 0xdc, 0x61, 0xed, 0x92, 0xfb, 0x50, 0x61, 0xe7, 0x5e, 0xc6,
0xe7, 0xa7, 0x6e, 0xe3, 0x32, 0x3c, 0x07, 0x31, 0xd8, 0x2e, 0x62, 0x38, 0x4c, 0x6f, 0x9d, 0x07,
0xc3, 0x52, 0x5f, 0x84, 0x9a, 0x59, 0xc6, 0x84, 0xcf, 0x40, 0xc9, 0x8a, 0x76, 0xff, 0xa3, 0x62,
0x9c, 0xa5, 0x52, 0x49, 0x1c, 0x9c, 0x52, 0xed, 0xde, 0xc7, 0x1f, 0x95, 0xa0, 0x65, 0x8c, 0x89,
0x71, 0x0f, 0x1e, 0x0d, 0xdc, 0xa3, 0x2c, 0x76, 0x5e, 0x07, 0xe9, 0x9c, 0x57, 0x32, 0x39, 0x4f,
0x05, 0xc2, 0xcb, 0x7a, 0x20, 0xfc, 0x11, 0xd4, 0xd3, 0x74, 0x52, 0x73, 0x50, 0xac, 0x47, 0x79,
0x2f, 0x39, 0x45, 0x4a, 0x43, 0xe7, 0x55, 0x3d, 0x74, 0xfe, 0x2d, 0x2d, 0xb4, 0x3a, 0x83, 0xcd,
0xd8, 0x45, 0xab, 0xfa, 0x9b, 0xb9, 0x8b, 0xf1, 0x04, 0x1a, 0xda, 0xe0, 0xf5, 0x10, 0xaa, 0x65,
0x84, 0x50, 0x55, 0x06, 0x41, 0x29, 0xcd, 0x20, 0xb0, 0x7f, 0x5a, 0x82, 0x16, 0xe3, 0x35, 0x3f,
0x38, 0x3d, 0x08, 0x87, 0x7e, 0xff, 0x12, 0x69, 0x5c, 0xb2, 0x95, 0x50, 0xc2, 0x24, 0xcf, 0x99,
0x60, 0x26, 0x13, 0x55, 0xda, 0x14, 0x17, 0xe0, 0xaa, 0xcc, 0x24, 0x3c, 0x93, 0x8f, 0xc7, 0x5e,
0x4c, 0xb5, 0x64, 0x57, 0xc7, 0x04, 0x32, 0x39, 0xcc, 0x00, 0x98, 0x0f, 0x32, 0xf2, 0x87, 0x43,
0x9f, 0xe3, 0x72, 0x1f, 0x45, 0x51, 0x15, 0xeb, 0x73, 0xe0, 0xc7, 0xde, 0x71, 0x7a, 0x61, 0x49,
0x95, 0x31, 0x5a, 0xe4, 0xbd, 0xd6, 0xa2, 0x45, 0x3c, 0x81, 0xcc, 0x04, 0x66, 0xa9, 0x6a, 0x36,
0x47, 0x55, 0xf6, 0xbf, 0x2d, 0x41, 0x43, 0xa3, 0x51, 0x26, 0x5b, 0x0a, 0x0f, 0x61, 0x0d, 0x2a,
0xae, 0x28, 0x06, 0x86, 0xd7, 0x4b, 0x83, 0x90, 0x7b, 0x66, 0xaf, 0x18, 0x65, 0x46, 0xe9, 0x63,
0xd0, 0xf3, 0x2d, 0xa8, 0x33, 0x3e, 0xfc, 0x10, 0x5d, 0x6c, 0x22, 0xb1, 0x5c, 0x01, 0x64, 0xed,
0x2a, 0xd6, 0x56, 0xd3, 0x5a, 0x04, 0x5c, 0x79, 0x69, 0xf1, 0x31, 0x34, 0x45, 0x33, 0xb8, 0xc7,
0x38, 0xe9, 0x54, 0x12, 0x18, 0xfb, 0xef, 0x18, 0x98, 0xf2, 0xcb, 0x55, 0xf9, 0x65, 0xed, 0x4d,
0x5f, 0x4a, 0x4c, 0xfb, 0x99, 0xba, 0x0f, 0xfa, 0x2c, 0xf2, 0xc6, 0x67, 0x52, 0xba, 0x3d, 0x82,
0x05, 0x29, 0xc4, 0x26, 0x81, 0x17, 0x04, 0xe1, 0x24, 0xe8, 0x53, 0x99, 0x6c, 0x50, 0x54, 0x65,
0x0f, 0x54, 0x6a, 0x1a, 0x36, 0x44, 0x1e, 0x40, 0x95, 0xab, 0xf1, 0x5c, 0x57, 0x29, 0x96, 0x67,
0x1c, 0x85, 0xdc, 0x87, 0x2a, 0xd7, 0xe6, 0x4b, 0x53, 0x25, 0x10, 0x47, 0xb0, 0x57, 0x60, 0x0e,
0x35, 0x52, 0x4d, 0x10, 0xdf, 0x2c, 0xd2, 0x61, 0x66, 0xfa, 0x3c, 0x9c, 0xb1, 0x08, 0x64, 0x8f,
0xf3, 0x95, 0x7e, 0xaf, 0xe7, 0xcf, 0xcb, 0xd0, 0xd0, 0xc0, 0x4c, 0x58, 0xe2, 0x25, 0x0f, 0x77,
0xe0, 0x7b, 0x23, 0x2a, 0x83, 0x1b, 0x2d, 0x27, 0x03, 0x65, 0x78, 0xde, 0xf9, 0xa9, 0x1b, 0x4e,
0x12, 0x77, 0x40, 0x4f, 0x23, 0x4a, 0x85, 0x72, 0x95, 0x81, 0x32, 0x3c, 0x46, 0xcd, 0x1a, 0x1e,
0xbf, 0xaf, 0x90, 0x81, 0xca, 0xfb, 0x33, 0x7c, 0x9d, 0x2a, 0xe9, 0xfd, 0x19, 0xbe, 0x2a, 0x59,
0x31, 0x5f, 0x2d, 0x10, 0xf3, 0x1f, 0xc1, 0x12, 0x17, 0xe8, 0x42, 0x7a, 0xb8, 0x19, 0xe2, 0x9a,
0x52, 0x4b, 0x1e, 0x40, 0x87, 0x8d, 0x59, 0xb2, 0x46, 0xec, 0xff, 0x98, 0xf3, 0x98, 0xe5, 0xe4,
0xe0, 0x0c, 0x17, 0x63, 0xaf, 0x3a, 0x2e, 0xbf, 0x28, 0x9b, 0x83, 0x23, 0xae, 0xf7, 0xda, 0xc4,
0xad, 0x0b, 0xdc, 0x0c, 0x9c, 0x3c, 0x86, 0xe5, 0x11, 0x1d, 0xf8, 0x9e, 0xd9, 0x84, 0x9b, 0x6a,
0x1c, 0xd3, 0xaa, 0x59, 0x2f, 0x6c, 0x15, 0x7e, 0x1c, 0x8e, 0x8e, 0x7d, 0x7e, 0xca, 0xf2, 0x28,
0x71, 0xc5, 0xc9, 0xc1, 0xed, 0x16, 0x34, 0x0e, 0x93, 0x70, 0x2c, 0xb7, 0xbe, 0x0d, 0x4d, 0x5e,
0x14, 0xe9, 0x25, 0x37, 0xe1, 0x06, 0xd2, 0xeb, 0x51, 0x38, 0x0e, 0x87, 0xe1, 0xe9, 0xa5, 0xe1,
0x9e, 0xfa, 0xf7, 0x16, 0x2c, 0x18, 0xb5, 0xa9, 0x7f, 0x0a, 0x7d, 0xe9, 0x32, 0x27, 0x80, 0x93,
0xf8, 0xbc, 0x76, 0x46, 0x71, 0x44, 0x7e, 0x0f, 0xe0, 0x85, 0x48, 0x13, 0x58, 0x4b, 0x13, 0x5d,
0xe5, 0x87, 0x9c, 0xde, 0xbb, 0x79, 0x7a, 0x17, 0xdf, 0xcb, 0x14, 0x58, 0xd9, 0xc4, 0xef, 0x88,
0x6b, 0xcd, 0x03, 0x31, 0xe9, 0xb2, 0x79, 0x63, 0x53, 0x77, 0x67, 0xca, 0x11, 0xf4, 0x15, 0x30,
0xb6, 0x7f, 0x6e, 0x01, 0xa4, 0xa3, 0xc3, 0x3b, 0xa3, 0xea, 0x9c, 0xe5, 0x6f, 0xc9, 0x68, 0x67,
0xea, 0xbb, 0xd0, 0x54, 0xf7, 0xd6, 0xd2, 0xa3, 0xbb, 0x21, 0x61, 0x4c, 0xd5, 0x79, 0x1f, 0xe6,
0x4e, 0x87, 0xe1, 0x31, 0xaa, 0x54, 0xe2, 0x9c, 0xe5, 0x49, 0x36, 0x6d, 0x0e, 0x96, 0xa7, 0x67,
0x7a, 0xce, 0x57, 0x0a, 0x2f, 0xbc, 0xe9, 0xa7, 0x36, 0x3b, 0xeb, 0xe6, 0x73, 0x2b, 0x71, 0x25,
0x97, 0xff, 0x52, 0x61, 0xdf, 0xab, 0xa2, 0x1b, 0x4f, 0xa0, 0x1d, 0x71, 0x99, 0x29, 0x05, 0x6a,
0xe5, 0x0a, 0x81, 0xda, 0x8a, 0x8c, 0x93, 0xf9, 0xcb, 0xd0, 0xf1, 0x06, 0xe7, 0x34, 0x4a, 0x7c,
0xf4, 0xf6, 0xa2, 0x4e, 0xc7, 0x27, 0x38, 0xa7, 0xc1, 0x51, 0x75, 0x7a, 0x1f, 0xe6, 0x44, 0xca,
0x93, 0xc2, 0x14, 0xaf, 0x2a, 0xa4, 0x60, 0x86, 0x68, 0xff, 0x13, 0x79, 0x6d, 0xc8, 0xdc, 0xdd,
0xab, 0x57, 0x45, 0x9f, 0x61, 0x29, 0x33, 0xc3, 0x2f, 0x89, 0x4b, 0x11, 0x03, 0xe9, 0x56, 0x2e,
0x6b, 0x17, 0xe4, 0x07, 0xe2, 0xda, 0x95, 0xb9, 0xac, 0x95, 0xb7, 0x59, 0x56, 0xfb, 0x3f, 0x5b,
0x30, 0xbb, 0x1d, 0x8e, 0x99, 0x69, 0x8f, 0x3a, 0x0e, 0x63, 0x13, 0x95, 0x6f, 0x28, 0x8b, 0x6f,
0x48, 0x24, 0x28, 0xd4, 0x4a, 0x5a, 0x59, 0xad, 0xe4, 0xdb, 0x70, 0x13, 0x03, 0x1b, 0x51, 0x38,
0x0e, 0x23, 0xc6, 0xae, 0xde, 0x90, 0xab, 0x20, 0x61, 0x90, 0x9c, 0x49, 0x71, 0x7a, 0x15, 0x0a,
0xfa, 0x01, 0x87, 0xc9, 0xb9, 0xcb, 0xcd, 0x4d, 0xa1, 0x45, 0x71, 0x29, 0x9b, 0xaf, 0xb0, 0xbf,
0x09, 0x75, 0xe5, 0xc0, 0x20, 0x1f, 0x40, 0xfd, 0x2c, 0x1c, 0x0b, 0x2f, 0x87, 0x65, 0x24, 0x5d,
0x88, 0xd9, 0x3b, 0x29, 0x82, 0xfd, 0xbf, 0x66, 0x61, 0x76, 0x27, 0x38, 0x0f, 0xfd, 0x3e, 0x5e,
0x3f, 0x1a, 0xd1, 0x51, 0x28, 0x33, 0x30, 0xd9, 0xdf, 0xf8, 0x38, 0x4a, 0xfa, 0x46, 0x02, 0x67,
0x21, 0x0d, 0xc2, 0x0c, 0xe4, 0x48, 0x7f, 0xe3, 0x40, 0x94, 0x52, 0xab, 0xaf, 0xaa, 0xe5, 0xb0,
0xb2, 0xd6, 0x78, 0xee, 0x3d, 0xae, 0x1d, 0xcf, 0x9c, 0xd1, 0x20, 0x6c, 0xf1, 0x45, 0x82, 0x03,
0xbf, 0x28, 0xce, 0x6f, 0x32, 0x0a, 0x10, 0x1a, 0xfd, 0x11, 0xe5, 0xa1, 0x29, 0xa5, 0x7a, 0x31,
0xa3, 0x5f, 0x07, 0x32, 0xf5, 0x8c, 0x7f, 0xc0, 0x71, 0xf8, 0x71, 0xa0, 0x83, 0xf0, 0x36, 0x4a,
0xe6, 0xc5, 0x10, 0xfe, 0xea, 0x4b, 0x16, 0xcc, 0x2f, 0x9a, 0x29, 0xa1, 0xcb, 0xe7, 0x09, 0xfc,
0x9d, 0x88, 0x2c, 0x5c, 0x73, 0x15, 0xf0, 0xdc, 0x30, 0xe9, 0x2a, 0x60, 0x24, 0xe3, 0x0d, 0x87,
0xc7, 0x5e, 0xff, 0x15, 0xb7, 0x6c, 0x9b, 0x3c, 0xa2, 0x69, 0x00, 0xf1, 0x36, 0x7f, 0xba, 0xaf,
0x78, 0x11, 0xa8, 0xe2, 0xe8, 0x20, 0xb2, 0x6a, 0xfa, 0xaf, 0xda, 0x53, 0xfc, 0x57, 0x3a, 0x92,
0x7e, 0x31, 0x6a, 0x2e, 0x97, 0xad, 0xe5, 0x0d, 0x06, 0xe2, 0xc2, 0x4c, 0x87, 0xbf, 0x93, 0xa0,
0x00, 0xe8, 0xa8, 0xe1, 0x0b, 0xc6, 0x11, 0xe6, 0x11, 0xc1, 0x80, 0x91, 0x3b, 0xdc, 0x0f, 0x3b,
0xf6, 0xfc, 0x01, 0x5e, 0x4c, 0xe5, 0xb6, 0xb0, 0x82, 0xb1, 0x36, 0xe4, 0xdf, 0x78, 0x70, 0x2e,
0xe0, 0xaa, 0x18, 0x30, 0xb6, 0x36, 0xaa, 0x3c, 0x4a, 0xd3, 0xbb, 0x4c, 0x20, 0xf9, 0x10, 0x2f,
0x22, 0x24, 0x14, 0x73, 0xb8, 0xda, 0xab, 0x37, 0xc5, 0x9c, 0x05, 0xd9, 0xca, 0xff, 0xf1, 0xe2,
0x85, 0xc3, 0x31, 0x99, 0xda, 0xc6, 0x63, 0x41, 0x4b, 0x86, 0xda, 0x26, 0x50, 0x31, 0x16, 0xc4,
0x11, 0xc8, 0x63, 0xcd, 0x12, 0xeb, 0x22, 0xf2, 0xad, 0x4c, 0xfb, 0x53, 0x6c, 0x30, 0x46, 0xcc,
0x7e, 0xcc, 0xce, 0x9f, 0x98, 0x06, 0x03, 0xcc, 0xe6, 0xaa, 0x39, 0x1a, 0xe4, 0xd7, 0x6b, 0xa3,
0xad, 0x41, 0x53, 0x9f, 0x27, 0xa9, 0x41, 0x65, 0xff, 0x60, 0x6b, 0xaf, 0x73, 0x8d, 0x34, 0x60,
0xf6, 0x70, 0xeb, 0xe8, 0x68, 0x77, 0x6b, 0xb3, 0x63, 0x91, 0x26, 0xd4, 0x54, 0x1a, 0x4a, 0x89,
0x95, 0xd6, 0x36, 0x36, 0xb6, 0x0e, 0x8e, 0xb6, 0x36, 0x3b, 0xe5, 0x4f, 0x2a, 0xb5, 0x52, 0xa7,
0x8c, 0x0a, 0xa6, 0xb6, 0x0c, 0x6f, 0xf0, 0xb3, 0xdd, 0x01, 0x40, 0xc3, 0x27, 0xbd, 0x58, 0x55,
0x71, 0x34, 0x08, 0x13, 0xe4, 0xca, 0x3f, 0x51, 0xe6, 0x6f, 0x5b, 0xc8, 0x32, 0x6e, 0x2e, 0x3e,
0x22, 0xa1, 0xc7, 0x07, 0xab, 0x8e, 0x09, 0x64, 0x84, 0x2f, 0x00, 0x98, 0xe0, 0xc0, 0xc5, 0x85,
0x0e, 0x62, 0x84, 0x14, 0xd1, 0x38, 0x1c, 0x9e, 0x53, 0x8e, 0xc2, 0xd5, 0x47, 0x03, 0xc6, 0xfa,
0x12, 0x12, 0x51, 0xcb, 0xaa, 0xaa, 0x3a, 0x26, 0x90, 0x7c, 0x55, 0x12, 0x52, 0x0d, 0x09, 0x69,
0x39, 0x4f, 0x15, 0x06, 0x11, 0x3d, 0xcf, 0x39, 0xca, 0xea, 0x48, 0x20, 0xbf, 0x95, 0xff, 0xee,
0x2d, 0x1c, 0x66, 0x64, 0x05, 0xc8, 0x68, 0x3c, 0x76, 0x0b, 0x3c, 0x58, 0x15, 0xa7, 0xa0, 0xe6,
0xd7, 0xe0, 0x60, 0x4b, 0x80, 0xac, 0x0d, 0x06, 0x62, 0x98, 0xfa, 0x53, 0x1f, 0x91, 0xfe, 0xb6,
0x8c, 0x14, 0xd9, 0x05, 0x62, 0xb1, 0x54, 0x2c, 0x16, 0xaf, 0x14, 0x1e, 0xf6, 0x0e, 0x34, 0x0e,
0xb4, 0xd7, 0x6a, 0x6c, 0x76, 0x82, 0xc8, 0x77, 0x6a, 0xf8, 0xd9, 0xc2, 0x1d, 0x6b, 0x29, 0x54,
0x1b, 0x52, 0x49, 0x1f, 0x92, 0xfd, 0x8f, 0x2c, 0xfe, 0x00, 0x80, 0x9a, 0x02, 0xef, 0xdf, 0x86,
0xa6, 0x0a, 0x2e, 0xa5, 0xd9, 0x90, 0x06, 0x8c, 0xe1, 0xe0, 0x70, 0xdc, 0xf0, 0xe4, 0x24, 0xa6,
0x32, 0x95, 0xc7, 0x80, 0x49, 0x65, 0x9d, 0xa9, 0xff, 0x3e, 0xef, 0x21, 0x16, 0x29, 0x3d, 0x39,
0x38, 0xa3, 0x74, 0xe1, 0x1b, 0x97, 0x49, 0x4c, 0xaa, 0x6c, 0xff, 0x81, 0x48, 0xda, 0xcc, 0xae,
0xf4, 0x03, 0xa8, 0xa9, 0x76, 0xcd, 0x93, 0x58, 0x62, 0xaa, 0x7a, 0x76, 0xe2, 0xa3, 0x21, 0x6f,
0x0c, 0x9a, 0x33, 0x5c, 0xbe, 0x82, 0xd1, 0xd2, 0x89, 0x1f, 0x65, 0xd1, 0x39, 0x07, 0x16, 0xd4,
0xd8, 0x2f, 0x61, 0x41, 0x8a, 0x0f, 0xcd, 0x8a, 0x30, 0x37, 0xd2, 0x7a, 0xd3, 0x29, 0x50, 0xca,
0x9f, 0x02, 0xf6, 0xbf, 0xa9, 0xc0, 0xac, 0x7c, 0x0a, 0xca, 0x2e, 0x78, 0xba, 0xa8, 0x6e, 0xbe,
0x7a, 0x44, 0xba, 0xc6, 0xdb, 0x16, 0x48, 0x08, 0x42, 0x37, 0xb8, 0x9f, 0x3d, 0xdd, 0x53, 0x07,
0x6b, 0xe6, 0x84, 0x5f, 0x82, 0xca, 0xd8, 0x4b, 0xce, 0xd0, 0xff, 0xc6, 0x69, 0x09, 0xcb, 0xd2,
0x85, 0x5f, 0x35, 0x5d, 0xf8, 0x45, 0x6f, 0x3d, 0x71, 0x55, 0x36, 0xff, 0xd6, 0xd3, 0x2d, 0xa8,
0x73, 0x6d, 0x24, 0xf5, 0xd2, 0xa7, 0x80, 0x8c, 0xf6, 0x52, 0xcb, 0x69, 0x2f, 0x6f, 0xaf, 0x57,
0x7c, 0x1d, 0x66, 0x78, 0xbe, 0xb3, 0x48, 0xd9, 0x92, 0x47, 0x8e, 0x58, 0x49, 0xf9, 0x3f, 0xbf,
0xb9, 0xeb, 0x08, 0x5c, 0xfd, 0xc5, 0x94, 0x86, 0xf9, 0x62, 0x8a, 0x1e, 0x5c, 0x68, 0x66, 0x82,
0x0b, 0x0f, 0xa0, 0xa3, 0x96, 0x0f, 0x1d, 0x70, 0x41, 0x2c, 0x52, 0x54, 0x72, 0xf0, 0xf4, 0xd8,
0x6c, 0x1b, 0xc7, 0x26, 0x93, 0x70, 0x6b, 0x49, 0x42, 0x47, 0xe3, 0x44, 0x1c, 0x9b, 0xf6, 0x53,
0x68, 0x19, 0x83, 0x34, 0xd3, 0x1a, 0x5b, 0x50, 0xdf, 0xd9, 0x73, 0x9f, 0xee, 0xee, 0x3c, 0xdb,
0x3e, 0xea, 0x58, 0xac, 0x78, 0xf8, 0x62, 0x63, 0x63, 0x6b, 0x6b, 0x13, 0x8f, 0x25, 0x80, 0x99,
0xa7, 0x6b, 0x3b, 0xec, 0x88, 0x2a, 0xdb, 0xff, 0xdb, 0x82, 0x86, 0xd6, 0x3c, 0xf9, 0x86, 0x5a,
0x19, 0xfe, 0xa8, 0xc6, 0xed, 0xfc, 0x10, 0x56, 0xa4, 0xa0, 0xd6, 0x96, 0x46, 0x3d, 0x6f, 0x55,
0x9a, 0xfa, 0xbc, 0x15, 0xdb, 0x1e, 0x8f, 0xb7, 0xa0, 0xd6, 0x81, 0x5b, 0x57, 0x59, 0x30, 0xbf,
0xae, 0x96, 0x9e, 0x2e, 0x0c, 0x93, 0x7b, 0x14, 0xb3, 0x60, 0xfb, 0x23, 0x80, 0x74, 0x34, 0xe6,
0xb4, 0xaf, 0x99, 0xd3, 0xb6, 0xb4, 0x69, 0x97, 0xec, 0x4d, 0x2e, 0x30, 0xc4, 0x12, 0xaa, 0x30,
0xf8, 0x57, 0x81, 0x48, 0x07, 0x16, 0x5e, 0x0b, 0x1d, 0x0f, 0x69, 0x22, 0x53, 0x3b, 0xe7, 0x45,
0xcd, 0x8e, 0xaa, 0x90, 0x69, 0xd7, 0x69, 0x2b, 0xa9, 0xdc, 0x11, 0x14, 0x97, 0x95, 0x3b, 0x02,
0xd5, 0x51, 0xf5, 0x76, 0x0f, 0xba, 0x9b, 0x94, 0xb5, 0xb6, 0x36, 0x1c, 0x66, 0x86, 0x63, 0xdf,
0x84, 0x1b, 0x05, 0x75, 0xc2, 0x3d, 0xf1, 0x1d, 0xb8, 0xbe, 0xc6, 0xb3, 0x38, 0x7f, 0x5d, 0x09,
0x23, 0x76, 0x17, 0x96, 0xb2, 0x4d, 0x8a, 0xce, 0x9e, 0xc2, 0xfc, 0x26, 0x3d, 0x9e, 0x9c, 0xee,
0xd2, 0xf3, 0xb4, 0x23, 0x02, 0x95, 0xf8, 0x2c, 0xbc, 0x10, 0xeb, 0x83, 0x7f, 0x93, 0xdb, 0x00,
0x43, 0x86, 0xe3, 0xc6, 0x63, 0xda, 0x97, 0x8f, 0x96, 0x20, 0xe4, 0x70, 0x4c, 0xfb, 0xf6, 0x47,
0x40, 0xf4, 0x76, 0xc4, 0x7a, 0x31, 0x93, 0x61, 0x72, 0xec, 0xc6, 0x97, 0x71, 0x42, 0x47, 0xf2,
0x35, 0x16, 0x1d, 0x64, 0xbf, 0x0f, 0xcd, 0x03, 0xef, 0xd2, 0xa1, 0x9f, 0x89, 0xe7, 0xd4, 0x96,
0x61, 0x76, 0xec, 0x5d, 0x32, 0x7e, 0x56, 0x21, 0x16, 0xac, 0xb6, 0xff, 0xb8, 0x02, 0x33, 0x1c,
0x93, 0xb5, 0x3a, 0xa0, 0x71, 0xe2, 0x07, 0xc8, 0x63, 0xb2, 0x55, 0x0d, 0x94, 0x13, 0x98, 0xa5,
0x02, 0x81, 0x29, 0x5c, 0x6d, 0xf2, 0xf1, 0x07, 0x41, 0xb2, 0x06, 0x8c, 0x89, 0xad, 0x34, 0xfd,
0x8c, 0x53, 0x6a, 0x0a, 0xc8, 0xc4, 0x30, 0x53, 0xc3, 0x84, 0x8f, 0x4f, 0x9e, 0x05, 0x42, 0x26,
0xea, 0xa0, 0x42, 0xf3, 0x67, 0x56, 0xe6, 0xd9, 0x64, 0xcc, 0x9f, 0x9c, 0x99, 0x53, 0x7b, 0x0b,
0x33, 0x87, 0xfb, 0xdf, 0xae, 0x32, 0x73, 0xe0, 0x6d, 0xcc, 0x9c, 0xb7, 0x89, 0x1d, 0xf6, 0xa0,
0x86, 0x67, 0xba, 0x26, 0x22, 0x65, 0x99, 0xfc, 0xb6, 0x66, 0x03, 0xf0, 0x7b, 0x0c, 0x37, 0x53,
0x7e, 0x71, 0xe8, 0x67, 0xbf, 0x99, 0x30, 0xcc, 0x0f, 0x60, 0x56, 0x40, 0x19, 0x65, 0x07, 0xde,
0x48, 0x3e, 0xba, 0x83, 0x7f, 0xb3, 0xa5, 0xc3, 0xb7, 0x3f, 0x3e, 0x9b, 0xf8, 0x11, 0x1d, 0xc8,
0x5c, 0x6d, 0x0d, 0x84, 0x97, 0xcb, 0x63, 0xf7, 0x55, 0x10, 0x5e, 0x04, 0x22, 0x5b, 0x5b, 0x95,
0x6d, 0x02, 0x1d, 0x7c, 0x7c, 0x6b, 0x1c, 0x46, 0xf2, 0x1d, 0x25, 0xfb, 0x8f, 0x2c, 0xe8, 0x08,
0x46, 0x53, 0x75, 0xba, 0xdf, 0xa6, 0x9a, 0xf3, 0xdb, 0xbc, 0x6b, 0xb8, 0x5d, 0x0a, 0x1f, 0x62,
0xb8, 0x07, 0x2d, 0x74, 0x84, 0xa8, 0xf3, 0x48, 0x44, 0xe6, 0x0d, 0x20, 0x9b, 0x8c, 0xbc, 0xfa,
0x39, 0xf2, 0x87, 0x82, 0xa8, 0x75, 0x90, 0x3c, 0xd2, 0x22, 0x4f, 0x64, 0x80, 0x59, 0x8e, 0x2a,
0xdb, 0xbf, 0xb0, 0x60, 0x5e, 0x9b, 0x8d, 0xe0, 0xe2, 0x27, 0xd0, 0x54, 0x0f, 0xe0, 0x51, 0xa5,
0x71, 0x2d, 0x9b, 0x62, 0x27, 0xfd, 0xcc, 0x40, 0x46, 0x66, 0xf0, 0x2e, 0x71, 0x80, 0xf1, 0x64,
0x24, 0x54, 0x1d, 0x1d, 0xc4, 0x88, 0xec, 0x82, 0xd2, 0x57, 0x0a, 0x85, 0x2b, 0x5b, 0x06, 0x0c,
0x03, 0x48, 0x61, 0x90, 0x9c, 0x29, 0xa4, 0x8a, 0x08, 0x20, 0xe9, 0x40, 0xfb, 0xbf, 0x96, 0x60,
0x81, 0x7b, 0xe4, 0x84, 0x27, 0x54, 0xbd, 0x41, 0x34, 0xc3, 0x9d, 0x93, 0x5c, 0xa2, 0x6d, 0x5f,
0x73, 0x44, 0x99, 0x7c, 0xe3, 0x2d, 0xbd, 0x88, 0x2a, 0xd5, 0x6c, 0xca, 0x5e, 0x94, 0x8b, 0xf6,
0xe2, 0x8a, 0x95, 0x2e, 0x8a, 0xe5, 0x55, 0x8b, 0x63, 0x79, 0x6f, 0x17, 0x3b, 0xcb, 0xe5, 0x63,
0xcd, 0x0a, 0x2c, 0x23, 0x1f, 0x6b, 0x15, 0x96, 0x0d, 0x00, 0x0a, 0x73, 0xff, 0xc4, 0xa7, 0x32,
0x39, 0x7e, 0x3e, 0xa6, 0x89, 0x6b, 0xa0, 0xac, 0xcf, 0x42, 0x35, 0xee, 0x87, 0x63, 0x6a, 0x2f,
0xc1, 0xa2, 0xb9, 0xb8, 0xe2, 0x08, 0xf9, 0xb9, 0x05, 0xdd, 0xa7, 0xfc, 0x46, 0x86, 0x1f, 0x9c,
0x6e, 0xfb, 0x71, 0x12, 0x46, 0xea, 0xa9, 0xb8, 0x3b, 0x00, 0x71, 0xe2, 0x45, 0xc2, 0x08, 0xe5,
0x9a, 0xb0, 0x06, 0x61, 0x6b, 0x44, 0x83, 0x01, 0xaf, 0xe5, 0xb4, 0xa1, 0xca, 0x39, 0x4b, 0x43,
0xf8, 0x2b, 0x0d, 0x7d, 0xfd, 0x3d, 0x9e, 0x26, 0xca, 0x16, 0x83, 0x9e, 0xe3, 0xb9, 0xcc, 0x9d,
0x80, 0x19, 0xa8, 0xfd, 0x07, 0x25, 0x98, 0x4b, 0x07, 0xc9, 0xd3, 0xce, 0x0d, 0xe9, 0x2e, 0x94,
0xf4, 0x54, 0xba, 0x8b, 0xd8, 0xa2, 0xeb, 0x33, 0xad, 0x5d, 0x73, 0x59, 0x6a, 0x50, 0x72, 0x0f,
0x1a, 0xb2, 0x14, 0x4e, 0x12, 0xed, 0xcd, 0x26, 0x1d, 0xcc, 0xf3, 0x4f, 0x98, 0xdd, 0x20, 0x6c,
0x20, 0x51, 0xc2, 0xc7, 0x12, 0x46, 0x09, 0x7e, 0xc9, 0xf7, 0x54, 0x16, 0x99, 0xb4, 0x63, 0x0a,
0x37, 0xdf, 0x43, 0x54, 0xb6, 0x75, 0x45, 0xb4, 0xa6, 0xde, 0xba, 0x54, 0x3c, 0xcf, 0x5b, 0x4c,
0x33, 0xf1, 0x2a, 0x8e, 0x0e, 0x92, 0x2e, 0xa3, 0x70, 0x62, 0xd8, 0xc6, 0x06, 0xcc, 0xfe, 0x5b,
0x16, 0xdc, 0x28, 0xd8, 0x46, 0x21, 0x03, 0x36, 0x61, 0xfe, 0x44, 0x55, 0xca, 0xa5, 0xe6, 0x82,
0x60, 0x49, 0x4a, 0x5e, 0x73, 0x79, 0x9d, 0xfc, 0x07, 0xca, 0x16, 0xe3, 0x9b, 0x67, 0x24, 0x5e,
0xe6, 0x2b, 0xec, 0x03, 0xe8, 0x6d, 0xbd, 0x66, 0x22, 0x65, 0x43, 0x7f, 0xf0, 0x5c, 0x52, 0xd6,
0x6a, 0x4e, 0x64, 0xbe, 0xd9, 0x53, 0x7d, 0xc2, 0xd3, 0xc9, 0x54, 0x5b, 0xe4, 0x6b, 0x6f, 0xdb,
0x88, 0xce, 0xfd, 0x77, 0xc5, 0xae, 0xf3, 0x17, 0xdb, 0x65, 0xfa, 0xa7, 0x06, 0xb2, 0xcf, 0x61,
0xee, 0xf9, 0x64, 0x98, 0xf8, 0xe9, 0xeb, 0xed, 0xe4, 0x1b, 0xe2, 0x23, 0x6c, 0x42, 0x2e, 0x5d,
0x61, 0x57, 0x3a, 0x1e, 0x5b, 0xb1, 0x11, 0x6b, 0xc9, 0xcd, 0xf7, 0x98, 0xaf, 0xb0, 0x6f, 0xc0,
0x72, 0xda, 0x25, 0x5f, 0x3b, 0x79, 0x26, 0xfd, 0xa1, 0xc5, 0xaf, 0x5d, 0x9b, 0x8f, 0xc9, 0x93,
0x67, 0xb0, 0x10, 0xfb, 0xc1, 0xe9, 0x90, 0xea, 0xed, 0xc4, 0x62, 0x25, 0xae, 0x9b, 0xc3, 0x13,
0x0f, 0xce, 0x3b, 0x45, 0x5f, 0x30, 0x02, 0x29, 0x1e, 0x68, 0x4a, 0x20, 0x99, 0x25, 0x29, 0x9a,
0xc0, 0x27, 0xd0, 0x36, 0x3b, 0x23, 0x8f, 0x45, 0x5e, 0x65, 0x3a, 0xb2, 0x72, 0x26, 0x3d, 0x2e,
0xa5, 0x0c, 0x03, 0xd3, 0xfe, 0xa9, 0x05, 0x5d, 0x87, 0x32, 0x32, 0xa6, 0x5a, 0xa7, 0x82, 0x7a,
0x9e, 0xe4, 0x9a, 0x9d, 0x3e, 0x61, 0x95, 0xaf, 0x29, 0xe7, 0xba, 0x32, 0x75, 0x53, 0xb6, 0xaf,
0x15, 0xcc, 0x6a, 0xbd, 0x06, 0x33, 0x62, 0x7e, 0xcb, 0x70, 0x5d, 0x0c, 0x49, 0x0e, 0x27, 0x8d,
0x49, 0x1a, 0x9d, 0x1a, 0x31, 0xc9, 0x1e, 0x74, 0xf9, 0x8b, 0x80, 0xfa, 0x3c, 0xc4, 0x87, 0x9b,
0x40, 0x9e, 0x7b, 0x7d, 0x2f, 0x0a, 0xc3, 0xe0, 0x80, 0x46, 0xe2, 0x06, 0x2b, 0xaa, 0xa6, 0x18,
0xb2, 0x93, 0x5a, 0x34, 0x2f, 0xc9, 0x47, 0xec, 0xc2, 0x40, 0x3e, 0x16, 0xc8, 0x4b, 0xb6, 0x03,
0x0b, 0xeb, 0xde, 0x2b, 0x2a, 0x5b, 0x4a, 0x57, 0xa9, 0x31, 0x56, 0x8d, 0xca, 0xb5, 0x97, 0x09,
0xd9, 0xf9, 0x6e, 0x1d, 0x1d, 0xdb, 0x5e, 0x85, 0x45, 0xb3, 0x4d, 0x21, 0x4a, 0x7a, 0x50, 0x1b,
0x09, 0x98, 0x18, 0x9d, 0x2a, 0x3f, 0xf8, 0x1c, 0x1a, 0xda, 0x2b, 0x8f, 0x64, 0x19, 0x16, 0x5e,
0xee, 0x1c, 0xed, 0x6d, 0x1d, 0x1e, 0xba, 0x07, 0x2f, 0xd6, 0x3f, 0xdd, 0xfa, 0x9e, 0xbb, 0xbd,
0x76, 0xb8, 0xdd, 0xb9, 0x46, 0x96, 0x80, 0xec, 0x6d, 0x1d, 0x1e, 0x6d, 0x6d, 0x1a, 0x70, 0x8b,
0xdc, 0x81, 0xde, 0x8b, 0xbd, 0x17, 0x87, 0x5b, 0x9b, 0x6e, 0xd1, 0x77, 0x25, 0x72, 0x1b, 0x6e,
0x88, 0xfa, 0x82, 0xcf, 0xcb, 0x0f, 0x9e, 0x40, 0x27, 0xeb, 0xb3, 0x34, 0x7c, 0xbd, 0x57, 0x39,
0x85, 0x1f, 0xfc, 0xe3, 0x32, 0x40, 0x7a, 0x73, 0x95, 0x74, 0x61, 0x71, 0x73, 0xed, 0x68, 0x6d,
0x77, 0x9f, 0x0d, 0xc2, 0xd9, 0x3f, 0xda, 0xda, 0x38, 0x72, 0x9d, 0xad, 0xef, 0x74, 0xae, 0x15,
0xd6, 0xec, 0x1f, 0x30, 0x7b, 0x7e, 0x19, 0x16, 0x76, 0xf6, 0x76, 0x8e, 0x76, 0xd6, 0x76, 0x5d,
0x67, 0xff, 0xc5, 0xce, 0xde, 0x33, 0xfe, 0x28, 0x4b, 0x99, 0xbc, 0x03, 0x37, 0x5f, 0x1c, 0x3c,
0x75, 0xf6, 0xf7, 0x8e, 0xdc, 0xc3, 0xed, 0x17, 0x47, 0x9b, 0xf8, 0xa4, 0xcb, 0x86, 0xb3, 0x73,
0xc0, 0xdb, 0xac, 0x5c, 0x85, 0xc0, 0x9a, 0xae, 0xb2, 0x15, 0x7b, 0xb6, 0x7f, 0x78, 0xb8, 0x73,
0xe0, 0x7e, 0xe7, 0xc5, 0x96, 0xb3, 0xb3, 0x75, 0x88, 0x1f, 0xce, 0x14, 0xc0, 0x19, 0xfe, 0x2c,
0x99, 0x87, 0xd6, 0xd1, 0xee, 0x77, 0xdd, 0xfd, 0xbd, 0x9d, 0xfd, 0x3d, 0x44, 0xad, 0x99, 0x20,
0x86, 0x55, 0x27, 0x3d, 0x58, 0xda, 0xfa, 0xbd, 0x23, 0xb7, 0xa0, 0x65, 0x98, 0x52, 0xc7, 0xbe,
0x6b, 0x90, 0x1b, 0x70, 0xfd, 0xf0, 0x68, 0xed, 0x68, 0x67, 0xc3, 0x15, 0xcf, 0x41, 0xb1, 0x4d,
0x60, 0x9f, 0x35, 0x8b, 0xab, 0xd8, 0x57, 0x2d, 0xb2, 0x08, 0x9d, 0x83, 0xb5, 0xef, 0x3d, 0xdf,
0xda, 0x3b, 0x72, 0xd7, 0x36, 0x37, 0x1d, 0xfc, 0xa0, 0x9d, 0x83, 0x32, 0xdc, 0x39, 0xb6, 0x51,
0xcf, 0x0f, 0x0e, 0x10, 0xa5, 0x23, 0x0b, 0xac, 0x66, 0x7e, 0xf5, 0xa7, 0x65, 0x68, 0xf3, 0x54,
0x02, 0xfe, 0xb3, 0x19, 0x34, 0x22, 0xcf, 0x61, 0x56, 0xfc, 0xfe, 0x0a, 0xb9, 0xae, 0x5e, 0xe2,
0xd0, 0x7f, 0xf1, 0xa5, 0xb7, 0x94, 0x05, 0x0b, 0xf6, 0x5b, 0xf8, 0x2b, 0xff, 0xf1, 0xbf, 0xff,
0xac, 0xd4, 0x22, 0x8d, 0x87, 0xe7, 0x1f, 0x3e, 0x3c, 0xa5, 0x41, 0xcc, 0xda, 0xf8, 0x8b, 0x00,
0xe9, 0xaf, 0x8a, 0x90, 0xae, 0x72, 0x4d, 0x66, 0x7e, 0x72, 0xa5, 0x77, 0xa3, 0xa0, 0x46, 0xb4,
0x7b, 0x03, 0xdb, 0x5d, 0xb0, 0xdb, 0xac, 0x5d, 0x3f, 0xf0, 0x13, 0xfe, 0x0b, 0x23, 0x1f, 0x5b,
0x0f, 0xc8, 0x00, 0x9a, 0xfa, 0xef, 0x7d, 0x10, 0x79, 0x15, 0xa0, 0xe0, 0x17, 0x4b, 0x7a, 0x37,
0x0b, 0xeb, 0xa4, 0xcc, 0xc1, 0x3e, 0xae, 0xdb, 0x1d, 0xd6, 0xc7, 0x04, 0x31, 0xd2, 0x5e, 0x86,
0x5c, 0x12, 0xa7, 0x3f, 0xeb, 0x41, 0x6e, 0x69, 0xc2, 0x31, 0xf7, 0xa3, 0x22, 0xbd, 0xdb, 0x53,
0x6a, 0x45, 0x5f, 0xb7, 0xb1, 0xaf, 0x65, 0x9b, 0xb0, 0xbe, 0xfa, 0x88, 0x23, 0x7f, 0x54, 0xe4,
0x63, 0xeb, 0xc1, 0xea, 0x9f, 0xde, 0x87, 0xba, 0xba, 0x26, 0x44, 0x7e, 0x04, 0x2d, 0x23, 0xd7,
0x83, 0xc8, 0x69, 0x14, 0xa5, 0x86, 0xf4, 0x6e, 0x15, 0x57, 0x8a, 0x8e, 0xef, 0x60, 0xc7, 0x5d,
0xb2, 0xc4, 0x3a, 0x16, 0xc9, 0x12, 0x0f, 0x31, 0x37, 0x8a, 0xbf, 0x6b, 0xf2, 0x4a, 0x3b, 0x71,
0x78, 0x67, 0xb7, 0xb2, 0x87, 0x80, 0xd1, 0xdb, 0xed, 0x29, 0xb5, 0xa2, 0xbb, 0x5b, 0xd8, 0xdd,
0x12, 0x59, 0xd4, 0xbb, 0x53, 0x57, 0x77, 0x28, 0xbe, 0x2d, 0xa4, 0xff, 0xe2, 0x05, 0xb9, 0x9d,
0xbe, 0xfc, 0x52, 0xf0, 0x4b, 0x18, 0x8a, 0x44, 0xf2, 0x3f, 0x87, 0x61, 0x77, 0xb1, 0x2b, 0x42,
0x70, 0xfb, 0xf4, 0x1f, 0xbc, 0x20, 0xc7, 0xd0, 0xd0, 0x1e, 0x86, 0x26, 0x37, 0xa6, 0x3e, 0x62,
0xdd, 0xeb, 0x15, 0x55, 0x15, 0x4d, 0x45, 0x6f, 0xff, 0x21, 0x53, 0x48, 0x7f, 0x00, 0x75, 0xf5,
0xd4, 0x30, 0x59, 0xd6, 0x9e, 0x7e, 0xd6, 0x9f, 0x46, 0xee, 0x75, 0xf3, 0x15, 0x45, 0xc4, 0xa7,
0xb7, 0xce, 0x88, 0xef, 0x25, 0x34, 0xb4, 0xe7, 0x84, 0xd5, 0x04, 0xf2, 0x4f, 0x16, 0xab, 0x09,
0x14, 0xbc, 0x3e, 0x6c, 0xcf, 0x63, 0x17, 0x0d, 0x52, 0x47, 0xfa, 0x4e, 0x5e, 0x87, 0x31, 0xd9,
0x85, 0xeb, 0xe2, 0x64, 0x3d, 0xa6, 0x5f, 0x64, 0x1b, 0x0a, 0x7e, 0x64, 0xe4, 0x91, 0x45, 0x9e,
0x40, 0x4d, 0xbe, 0x1a, 0x4d, 0x96, 0x8a, 0x5f, 0xbf, 0xee, 0x2d, 0xe7, 0xe0, 0xe2, 0x18, 0xfc,
0x1e, 0x40, 0xfa, 0x76, 0xb1, 0x12, 0x12, 0xb9, 0xb7, 0x90, 0x15, 0x05, 0xe4, 0x1f, 0x3a, 0xb6,
0x97, 0x70, 0x82, 0x1d, 0x82, 0x42, 0x22, 0xa0, 0x17, 0xf2, 0x61, 0x8b, 0x1f, 0x42, 0x43, 0x7b,
0xbe, 0x58, 0x2d, 0x5f, 0xfe, 0xe9, 0x63, 0xb5, 0x7c, 0x05, 0xaf, 0x1d, 0xdb, 0x3d, 0x6c, 0x7d,
0xd1, 0x9e, 0x63, 0xad, 0xc7, 0xfe, 0x69, 0x30, 0xe2, 0x08, 0x6c, 0x83, 0xce, 0xa0, 0x65, 0xbc,
0x51, 0xac, 0x38, 0xb4, 0xe8, 0x05, 0x64, 0xc5, 0xa1, 0x85, 0xcf, 0x1a, 0x4b, 0x3a, 0xb3, 0xe7,
0x59, 0x3f, 0xe7, 0x88, 0xa2, 0xf5, 0xf4, 0x7d, 0x68, 0x68, 0xef, 0x0d, 0xab, 0xb9, 0xe4, 0x9f,
0x36, 0x56, 0x73, 0x29, 0x7a, 0x9e, 0x78, 0x11, 0xfb, 0x68, 0xdb, 0x48, 0x0a, 0xf8, 0x54, 0x15,
0x6b, 0xfb, 0x47, 0xd0, 0x36, 0x5f, 0x20, 0x56, 0xbc, 0x5f, 0xf8, 0x96, 0xb1, 0xe2, 0xfd, 0x29,
0xcf, 0x16, 0x0b, 0x92, 0x7e, 0xb0, 0xa0, 0x3a, 0x79, 0xf8, 0x13, 0x71, 0xeb, 0xf9, 0x73, 0xf2,
0x1d, 0x26, 0xe0, 0xc4, 0x13, 0x6a, 0x64, 0x59, 0xa3, 0x5a, 0xfd, 0xa1, 0x35, 0xc5, 0x2f, 0xb9,
0xd7, 0xd6, 0x4c, 0x62, 0xe6, 0x8f, 0x6d, 0x3d, 0x83, 0x05, 0x45, 0xcc, 0xea, 0x49, 0xb4, 0x58,
0xcd, 0xa1, 0xf0, 0xe5, 0xb5, 0x5e, 0x27, 0x5b, 0xfb, 0xc8, 0xe2, 0xc7, 0x1f, 0x3e, 0x3c, 0xa5,
0x1d, 0x7f, 0xfa, 0xab, 0x68, 0xda, 0xf1, 0x67, 0xbc, 0x4f, 0x95, 0x3d, 0xfe, 0x12, 0x9f, 0xb5,
0x11, 0xc0, 0x5c, 0x26, 0x7d, 0x56, 0xb1, 0x57, 0xf1, 0x0b, 0x07, 0xbd, 0x3b, 0x57, 0x67, 0xdd,
0x9a, 0xa2, 0x48, 0x4a, 0xd3, 0x87, 0xf2, 0xf9, 0x94, 0xdf, 0x87, 0xa6, 0xfe, 0x48, 0x2a, 0xd1,
0x65, 0x42, 0xb6, 0xa7, 0x9b, 0x85, 0x75, 0x26, 0x95, 0x90, 0xa6, 0xde, 0x0d, 0xf9, 0x2e, 0x2c,
0xa9, 0x65, 0xd6, 0xb3, 0x28, 0x63, 0xf2, 0x4e, 0x41, 0x6e, 0xa5, 0xb1, 0xd8, 0x37, 0xa6, 0x26,
0x5f, 0x3e, 0xb2, 0x18, 0xf5, 0x99, 0x0f, 0x34, 0xa6, 0x27, 0x4f, 0xd1, 0xbb, 0x94, 0xe9, 0xc9,
0x53, 0xf8, 0xaa, 0xa3, 0xa4, 0x3e, 0xb2, 0x60, 0xac, 0x11, 0xbf, 0xdc, 0x45, 0xbe, 0x0f, 0x73,
0x5a, 0xce, 0xfb, 0xe1, 0x65, 0xd0, 0x57, 0x9c, 0x94, 0x7f, 0xdf, 0xa8, 0x57, 0x64, 0x96, 0xda,
0xcb, 0xd8, 0xfe, 0xbc, 0x6d, 0x2c, 0x0e, 0xe3, 0xa2, 0x0d, 0x68, 0xe8, 0xf9, 0xf4, 0x57, 0xb4,
0xbb, 0xac, 0x55, 0xe9, 0x8f, 0xe7, 0x3c, 0xb2, 0xc8, 0x2e, 0x74, 0xb2, 0xef, 0x7c, 0x28, 0x99,
0x52, 0xf4, 0x36, 0x49, 0x2f, 0x53, 0x69, 0xbc, 0x0e, 0x42, 0x0e, 0xf8, 0x95, 0x61, 0xf5, 0x6b,
0x1c, 0x61, 0x94, 0x3d, 0xd5, 0xcd, 0x5f, 0xe9, 0x50, 0xad, 0x15, 0xfd, 0x3e, 0xcb, 0x7d, 0xeb,
0x91, 0x45, 0xfe, 0x9e, 0x05, 0x4d, 0x23, 0x7b, 0xde, 0xb8, 0x80, 0x99, 0x99, 0x67, 0x57, 0xaf,
0xd3, 0x27, 0x6a, 0x3b, 0xb8, 0x88, 0xbb, 0x0f, 0x3e, 0x31, 0x36, 0xe9, 0x27, 0x86, 0xa7, 0x77,
0x25, 0xfb, 0x93, 0x1c, 0x9f, 0x67, 0x11, 0xf4, 0x37, 0xaa, 0x3e, 0x7f, 0x64, 0x91, 0x7f, 0x6a,
0x41, 0xdb, 0x8c, 0xef, 0xa8, 0xe9, 0x16, 0x46, 0x92, 0x14, 0x29, 0x4d, 0x09, 0x0a, 0x7d, 0x1f,
0x47, 0x79, 0xf4, 0xc0, 0x31, 0x46, 0x29, 0x9e, 0x16, 0xfd, 0xd5, 0x46, 0x4b, 0x3e, 0xe6, 0xbf,
0x90, 0x25, 0x43, 0xdb, 0x24, 0xff, 0x8b, 0x4a, 0x8a, 0xfc, 0xf4, 0xdf, 0x1f, 0xc2, 0x4d, 0xf8,
0x21, 0xff, 0x29, 0x0a, 0x19, 0x1f, 0x65, 0x54, 0xfc, 0xb6, 0xdf, 0xdb, 0xf7, 0x70, 0x4e, 0x77,
0xec, 0x1b, 0xc6, 0x9c, 0xb2, 0x8a, 0xc7, 0x1a, 0x1f, 0x9d, 0xf8, 0xe9, 0xa0, 0xf4, 0xe4, 0xcc,
0xfd, 0x9c, 0xd0, 0xf4, 0x41, 0x8e, 0xf8, 0x20, 0x05, 0xba, 0xc1, 0x6a, 0x6f, 0xd9, 0x8c, 0xfd,
0x00, 0xc7, 0x7a, 0xcf, 0x7e, 0x67, 0xea, 0x58, 0x1f, 0x62, 0x94, 0x86, 0x8d, 0xf8, 0x00, 0x20,
0xbd, 0x8a, 0x42, 0x32, 0xd7, 0x20, 0x94, 0x00, 0xca, 0xdf, 0x56, 0x31, 0xf9, 0x59, 0xde, 0x96,
0x60, 0x2d, 0xfe, 0x80, 0x8b, 0xd3, 0x1d, 0x79, 0x81, 0x42, 0xd7, 0xbe, 0xcc, 0xfb, 0x22, 0x86,
0xf6, 0x95, 0x6d, 0xdf, 0x10, 0xa6, 0xea, 0x36, 0xc6, 0x0b, 0x68, 0xed, 0x86, 0xe1, 0xab, 0xc9,
0x58, 0xdd, 0x8d, 0x34, 0x03, 0xa8, 0xdb, 0x5e, 0x7c, 0xd6, 0xcb, 0xcc, 0xc2, 0xbe, 0x8b, 0x4d,
0xf5, 0x48, 0x57, 0x6b, 0xea, 0xe1, 0x4f, 0xd2, 0x6b, 0x2e, 0x9f, 0x13, 0x0f, 0xe6, 0x95, 0x8c,
0x56, 0x03, 0xef, 0x99, 0xcd, 0x18, 0x92, 0x39, 0xdb, 0x85, 0x61, 0x26, 0xc8, 0xd1, 0x3e, 0x8c,
0x65, 0x9b, 0x8f, 0x2c, 0x72, 0x00, 0xcd, 0x4d, 0xda, 0xc7, 0x8c, 0x51, 0x8c, 0x42, 0x2e, 0x18,
0x91, 0x2c, 0x1e, 0xbe, 0xec, 0xb5, 0x0c, 0xa0, 0x79, 0x6e, 0x8d, 0xbd, 0xcb, 0x88, 0x7e, 0xf6,
0xf0, 0x27, 0x22, 0xbe, 0xf9, 0xb9, 0x3c, 0xb7, 0x64, 0x00, 0xd8, 0x38, 0xb7, 0x32, 0x11, 0x63,
0xe3, 0xdc, 0xca, 0x45, 0x8c, 0x8d, 0xa5, 0x96, 0x01, 0x68, 0x32, 0x84, 0xf9, 0x5c, 0x90, 0x59,
0x1d, 0x59, 0xd3, 0x42, 0xd3, 0xbd, 0xbb, 0xd3, 0x11, 0xcc, 0xde, 0x1e, 0x98, 0xbd, 0x1d, 0x42,
0x8b, 0xbf, 0x9b, 0x75, 0x4c, 0x79, 0x32, 0x48, 0xe6, 0x09, 0x06, 0x3d, 0xd5, 0x24, 0x7b, 0xc0,
0x60, 0x9d, 0xa9, 0xe1, 0xf0, 0x07, 0x38, 0x7f, 0x00, 0x8d, 0x67, 0x34, 0x91, 0xd9, 0x1f, 0x4a,
0xc7, 0xce, 0xa4, 0x83, 0xf4, 0x0a, 0x92, 0x47, 0x4c, 0x9a, 0xc1, 0xd6, 0x1e, 0xd2, 0xc1, 0x29,
0xe5, 0xc2, 0xc9, 0xf5, 0x07, 0x9f, 0x93, 0xdf, 0xc3, 0xc6, 0x55, 0x2e, 0xde, 0x92, 0x76, 0x95,
0x5f, 0x6f, 0x7c, 0x2e, 0x03, 0x2f, 0x6a, 0x39, 0x08, 0x07, 0x54, 0xd3, 0xf5, 0x02, 0x68, 0x68,
0xb9, 0xbc, 0x8a, 0x81, 0xf2, 0xb9, 0xdb, 0x8a, 0x81, 0x0a, 0x52, 0x7f, 0xed, 0xfb, 0xd8, 0x8f,
0x4d, 0xee, 0xa6, 0xfd, 0xf0, 0x74, 0xdf, 0xb4, 0xa7, 0x87, 0x3f, 0xf1, 0x46, 0xc9, 0xe7, 0xe4,
0x25, 0xbe, 0x62, 0xab, 0x67, 0xb7, 0xa4, 0x46, 0x43, 0x36, 0x11, 0x46, 0x2d, 0x96, 0x56, 0x65,
0x1a, 0x12, 0xbc, 0x2b, 0xd4, 0xe4, 0xbe, 0x01, 0x70, 0x98, 0x84, 0xe3, 0x4d, 0x8f, 0x8e, 0xc2,
0x20, 0x95, 0xb5, 0x69, 0x6e, 0x45, 0x2a, 0xbf, 0xb4, 0x04, 0x0b, 0xf2, 0x52, 0xb3, 0xb2, 0x8c,
0x04, 0x21, 0x49, 0x5c, 0x53, 0xd3, 0x2f, 0xd4, 0x82, 0x14, 0xa4, 0x60, 0x3c, 0xb2, 0xc8, 0x1a,
0x40, 0x7a, 0xcb, 0x40, 0xd9, 0x4c, 0xb9, 0x0b, 0x0c, 0x4a, 0xec, 0x15, 0x5c, 0x49, 0x38, 0x80,
0x7a, 0x1a, 0x93, 0x5d, 0x4e, 0x9f, 0x26, 0x30, 0x22, 0xb8, 0xea, 0x04, 0xcf, 0x05, 0x43, 0xed,
0x0e, 0x2e, 0x15, 0x90, 0x1a, 0x5b, 0x2a, 0x8c, 0x70, 0xfa, 0xb0, 0xc0, 0x07, 0xa8, 0xd4, 0x25,
0xcc, 0x09, 0x50, 0x8f, 0x15, 0xe7, 0x03, 0x92, 0x8a, 0x9b, 0x0b, 0xe3, 0x69, 0x86, 0xeb, 0x87,
0x51, 0x2b, 0xcf, 0x47, 0x60, 0xa2, 0x79, 0x04, 0xf3, 0xb9, 0x10, 0x8d, 0x62, 0xe9, 0x69, 0x31,
0x38, 0xc5, 0xd2, 0x53, 0xa3, 0x3b, 0xf6, 0x75, 0xec, 0x72, 0xce, 0x06, 0x34, 0xf5, 0x2e, 0xfc,
0xa4, 0x7f, 0xc6, 0xba, 0xfb, 0x43, 0x0b, 0x16, 0x0a, 0x22, 0x30, 0xe4, 0x5d, 0xe9, 0x35, 0x98,
0x1a, 0x9d, 0xe9, 0x15, 0x3a, 0xe8, 0xed, 0x43, 0xec, 0xe7, 0x39, 0xf9, 0xd4, 0x38, 0xd8, 0xb8,
0x6f, 0x5c, 0x70, 0xe6, 0x95, 0x4a, 0x45, 0xa1, 0x46, 0xf1, 0x19, 0x2c, 0xf3, 0x81, 0xac, 0x0d,
0x87, 0x99, 0xe0, 0xc1, 0x9d, 0xdc, 0xaf, 0xe8, 0x1a, 0x41, 0x91, 0xde, 0xf4, 0x5f, 0xd9, 0x9d,
0xa2, 0x4e, 0xf3, 0xa1, 0x92, 0x09, 0x74, 0xb2, 0x0e, 0x79, 0x32, 0xbd, 0xad, 0xde, 0x3b, 0x86,
0xfd, 0x5b, 0xe0, 0xc4, 0xff, 0x2d, 0xec, 0xec, 0x1d, 0xbb, 0x57, 0xb4, 0x2e, 0xdc, 0x24, 0x66,
0xfb, 0xf1, 0x97, 0x55, 0xf4, 0x20, 0x33, 0x4f, 0xd9, 0xc1, 0xb4, 0x70, 0x87, 0xb2, 0xc0, 0x8b,
0x83, 0x0f, 0xef, 0x61, 0xf7, 0x77, 0xed, 0x9b, 0x45, 0xdd, 0x47, 0xfc, 0x13, 0x6e, 0x8b, 0x2f,
0x67, 0xf9, 0x5a, 0x8e, 0xe0, 0x6e, 0xd1, 0x7e, 0x4f, 0xb5, 0x85, 0x32, 0x6b, 0x7d, 0x0d, 0x75,
0xbb, 0xa6, 0x1e, 0x2d, 0x50, 0xec, 0x53, 0x10, 0x96, 0x50, 0xec, 0x53, 0x14, 0x5e, 0x30, 0xf5,
0x1a, 0x19, 0x58, 0xf8, 0xd8, 0x7a, 0xb0, 0xfe, 0xfe, 0xf7, 0x7f, 0xeb, 0xd4, 0x4f, 0xce, 0x26,
0xc7, 0x2b, 0xfd, 0x70, 0xf4, 0x70, 0x28, 0xbd, 0x8d, 0x22, 0x4f, 0xee, 0xe1, 0x30, 0x18, 0x3c,
0xc4, 0x66, 0x8f, 0x67, 0xf0, 0x67, 0xbf, 0xbf, 0xf6, 0xff, 0x02, 0x00, 0x00, 0xff, 0xff, 0xd5,
0x81, 0xeb, 0xf5, 0x28, 0x7c, 0x00, 0x00,
// 10441 bytes of a gzipped FileDescriptorProto
0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xbc, 0x7d, 0x6b, 0x8f, 0x1c, 0x57,
0x76, 0x18, 0xfb, 0x35, 0xdd, 0x7d, 0xfa, 0x31, 0x3d, 0x77, 0x86, 0x33, 0xcd, 0xa6, 0x28, 0x52,
0x25, 0xad, 0x48, 0x51, 0x12, 0x49, 0x71, 0xa5, 0x95, 0x2c, 0x25, 0x6b, 0xcf, 0x53, 0x33, 0xcb,
0x79, 0xa9, 0x7a, 0xb8, 0xb2, 0x76, 0xe3, 0xd4, 0xd6, 0x74, 0xdf, 0x99, 0x29, 0xb3, 0xbb, 0xaa,
0x55, 0x55, 0x3d, 0x8f, 0x15, 0x94, 0x0f, 0x79, 0x18, 0x41, 0x12, 0x04, 0x30, 0x12, 0x07, 0x88,
0x13, 0x23, 0x41, 0x82, 0x20, 0x08, 0x92, 0x18, 0x0e, 0xec, 0x00, 0xf9, 0x90, 0xef, 0xfe, 0x92,
0xc0, 0x1f, 0x9c, 0x20, 0x40, 0xb0, 0x30, 0x60, 0xc4, 0xc8, 0x67, 0xff, 0x84, 0xe0, 0x9e, 0x73,
0xef, 0xad, 0x5b, 0xdd, 0xd5, 0x24, 0xa5, 0xdd, 0xec, 0x17, 0x72, 0xea, 0xdc, 0x73, 0xdf, 0xe7,
0x9e, 0x7b, 0x9e, 0xb7, 0xa1, 0x1a, 0x8e, 0x7a, 0x0f, 0x46, 0x61, 0x10, 0x07, 0xac, 0x34, 0xf0,
0xc3, 0x51, 0xaf, 0xf3, 0xca, 0x69, 0x10, 0x9c, 0x0e, 0xf8, 0x43, 0x77, 0xe4, 0x3d, 0x74, 0x7d,
0x3f, 0x88, 0xdd, 0xd8, 0x0b, 0xfc, 0x88, 0x90, 0xac, 0x9f, 0x40, 0xf3, 0x53, 0xee, 0x77, 0x39,
0xef, 0xdb, 0xfc, 0xcb, 0x31, 0x8f, 0x62, 0xf6, 0x36, 0x2c, 0xb8, 0xfc, 0xa7, 0x9c, 0xf7, 0x9d,
0x91, 0x1b, 0x45, 0xa3, 0xb3, 0xd0, 0x8d, 0x78, 0x3b, 0x77, 0x27, 0x77, 0xaf, 0x6e, 0xb7, 0xa8,
0xe0, 0x50, 0xc3, 0xd9, 0x6b, 0x50, 0x8f, 0x04, 0x2a, 0xf7, 0xe3, 0x30, 0x18, 0x5d, 0xb5, 0xf3,
0x88, 0x57, 0x13, 0xb0, 0x4d, 0x02, 0x59, 0x03, 0x98, 0xd7, 0x3d, 0x44, 0xa3, 0xc0, 0x8f, 0x38,
0x7b, 0x04, 0x4b, 0x3d, 0x6f, 0x74, 0xc6, 0x43, 0x07, 0x2b, 0x0f, 0x7d, 0x3e, 0x0c, 0x7c, 0xaf,
0xd7, 0xce, 0xdd, 0x29, 0xdc, 0xab, 0xda, 0x8c, 0xca, 0x44, 0x8d, 0x3d, 0x59, 0xc2, 0xee, 0xc2,
0x3c, 0xf7, 0x09, 0xce, 0xfb, 0x58, 0x4b, 0x76, 0xd5, 0x4c, 0xc0, 0xa2, 0x82, 0xf5, 0x77, 0xf3,
0xb0, 0xb0, 0xe3, 0x7b, 0xf1, 0xe7, 0xee, 0x60, 0xc0, 0x63, 0x35, 0xa7, 0xbb, 0x30, 0x7f, 0x81,
0x00, 0x9c, 0xd3, 0x45, 0x10, 0xf6, 0xe5, 0x8c, 0x9a, 0x04, 0x3e, 0x94, 0xd0, 0x99, 0x23, 0xcb,
0xcf, 0x1c, 0x59, 0xe6, 0x72, 0x15, 0x66, 0x2c, 0xd7, 0x5d, 0x98, 0x0f, 0x79, 0x2f, 0x38, 0xe7,
0xe1, 0x95, 0x73, 0xe1, 0xf9, 0xfd, 0xe0, 0xa2, 0x5d, 0xbc, 0x93, 0xbb, 0x57, 0xb2, 0x9b, 0x0a,
0xfc, 0x39, 0x42, 0xd9, 0x1a, 0xcc, 0xf7, 0xce, 0x5c, 0xdf, 0xe7, 0x03, 0xe7, 0xd8, 0xed, 0x3d,
0x1b, 0x8f, 0xa2, 0x76, 0xe9, 0x4e, 0xee, 0x5e, 0xed, 0xf1, 0x8d, 0x07, 0xb8, 0xab, 0x0f, 0xd6,
0xcf, 0x5c, 0x7f, 0x0d, 0x4b, 0xba, 0xbe, 0x3b, 0x8a, 0xce, 0x82, 0xd8, 0x6e, 0xca, 0x1a, 0x04,
0x8e, 0xac, 0x25, 0x60, 0xe6, 0x4a, 0xd0, 0xda, 0x5b, 0xff, 0x3e, 0x07, 0x8b, 0x4f, 0xfd, 0x41,
0xd0, 0x7b, 0xf6, 0x2d, 0x97, 0x28, 0x63, 0x0e, 0xf9, 0x97, 0x9d, 0x43, 0xe1, 0x9b, 0xce, 0x61,
0x19, 0x96, 0xd2, 0x83, 0x95, 0xb3, 0xe0, 0x70, 0x5d, 0xd4, 0x3e, 0xe5, 0x6a, 0x58, 0x6a, 0x1a,
0x6f, 0x41, 0xab, 0x37, 0x0e, 0x43, 0xee, 0x4f, 0xcd, 0x63, 0x5e, 0xc2, 0xf5, 0x44, 0x5e, 0x83,
0xba, 0xcf, 0x2f, 0x12, 0x34, 0x49, 0xbb, 0x3e, 0xbf, 0x50, 0x28, 0x56, 0x1b, 0x96, 0x27, 0xbb,
0x91, 0x03, 0xf8, 0x5f, 0x39, 0x28, 0x3e, 0x8d, 0x2f, 0x03, 0xf6, 0x26, 0x14, 0xe3, 0xab, 0x11,
0x9d, 0x90, 0xe6, 0x63, 0x26, 0xa7, 0xb6, 0xda, 0xef, 0x87, 0x3c, 0x8a, 0x8e, 0xae, 0x46, 0xdc,
0xc6, 0x72, 0xd6, 0x86, 0xb2, 0x4b, 0x40, 0xec, 0xa8, 0x6a, 0xab, 0x4f, 0x76, 0x0b, 0xc0, 0x1d,
0x06, 0x63, 0x3f, 0x76, 0x22, 0x37, 0xc6, 0x25, 0x2a, 0xd8, 0x55, 0x82, 0x74, 0xdd, 0x98, 0xdd,
0x84, 0xea, 0xe8, 0x99, 0x13, 0xf5, 0x42, 0x6f, 0x14, 0x23, 0xb5, 0x54, 0xed, 0xca, 0xe8, 0x59,
0x17, 0xbf, 0xd9, 0xdb, 0x50, 0x09, 0xc6, 0xf1, 0x28, 0xf0, 0xfc, 0x58, 0x12, 0xc8, 0xbc, 0x1c,
0xc1, 0xc1, 0x38, 0x3e, 0x14, 0x60, 0x5b, 0x23, 0xb0, 0x37, 0xa0, 0xd1, 0x0b, 0xfc, 0x13, 0x2f,
0x1c, 0x12, 0x0b, 0x68, 0xcf, 0x61, 0x5f, 0x69, 0xa0, 0xf5, 0x07, 0x79, 0xa8, 0x1d, 0x85, 0xae,
0x1f, 0xb9, 0x3d, 0x01, 0x60, 0x2b, 0x50, 0x8e, 0x2f, 0x9d, 0x33, 0x37, 0x3a, 0xc3, 0x39, 0x56,
0xed, 0xb9, 0xf8, 0x72, 0xdb, 0x8d, 0xce, 0xd8, 0x32, 0xcc, 0xd1, 0x28, 0x71, 0x42, 0x05, 0x5b,
0x7e, 0x89, 0x13, 0xe1, 0x8f, 0x87, 0x4e, 0xba, 0xab, 0x02, 0x92, 0x48, 0xcb, 0x1f, 0x0f, 0xd7,
0x4d, 0xb8, 0x98, 0xfc, 0xb1, 0xd8, 0x5f, 0xea, 0x80, 0xa6, 0x57, 0x45, 0x08, 0xf6, 0xf1, 0x1a,
0xd4, 0x65, 0x31, 0xf7, 0x4e, 0xcf, 0x68, 0x8e, 0x25, 0xbb, 0x46, 0x08, 0x08, 0x12, 0x2d, 0xc4,
0xde, 0x90, 0x3b, 0x51, 0xec, 0x0e, 0x47, 0x72, 0x4a, 0x55, 0x01, 0xe9, 0x0a, 0x00, 0x16, 0x07,
0xb1, 0x3b, 0x70, 0x4e, 0x38, 0x8f, 0xda, 0x65, 0x59, 0x2c, 0x20, 0x5b, 0x9c, 0x47, 0xec, 0x3b,
0xd0, 0xec, 0xf3, 0x28, 0x76, 0xe4, 0x66, 0xf0, 0xa8, 0x5d, 0xc1, 0xa3, 0xde, 0x10, 0xd0, 0x55,
0x05, 0x64, 0xaf, 0x00, 0x84, 0xee, 0x85, 0x23, 0x16, 0x82, 0x5f, 0xb6, 0xab, 0xb4, 0x0b, 0xa1,
0x7b, 0x71, 0x74, 0xb9, 0xcd, 0x2f, 0x05, 0x99, 0x7c, 0xca, 0x63, 0x63, 0xd1, 0x22, 0x49, 0x8e,
0xd6, 0x2e, 0x30, 0x03, 0xbc, 0xc1, 0x63, 0xd7, 0x1b, 0x44, 0xec, 0x7b, 0x50, 0x8f, 0x0d, 0x64,
0xe4, 0x7b, 0x35, 0x4d, 0x3b, 0x46, 0x05, 0x3b, 0x85, 0x67, 0x9d, 0x41, 0x65, 0x8b, 0xf3, 0x5d,
0x6f, 0xe8, 0xc5, 0x6c, 0x19, 0x4a, 0x27, 0xde, 0x25, 0x27, 0xea, 0x2e, 0x6c, 0x5f, 0xb3, 0xe9,
0x93, 0xdd, 0x06, 0xc0, 0x3f, 0x9c, 0xa1, 0xa6, 0xa6, 0xed, 0x6b, 0x76, 0x15, 0x61, 0x7b, 0x91,
0x1b, 0xb3, 0x0e, 0x94, 0x47, 0x3c, 0xec, 0x71, 0xb5, 0x6f, 0xdb, 0xd7, 0x6c, 0x05, 0x58, 0x2b,
0x43, 0x69, 0x20, 0x5a, 0xb7, 0xfe, 0xb8, 0x04, 0xb5, 0x2e, 0xf7, 0xf5, 0xb1, 0x62, 0x50, 0x14,
0x0b, 0x22, 0x8f, 0x12, 0xfe, 0xcd, 0x5e, 0x87, 0x1a, 0x2e, 0x5d, 0x14, 0x87, 0x9e, 0x7f, 0x4a,
0x54, 0xbd, 0x96, 0x6f, 0xe7, 0x6c, 0x10, 0xe0, 0x2e, 0x42, 0x59, 0x0b, 0x0a, 0xee, 0x50, 0x51,
0xb5, 0xf8, 0x93, 0xdd, 0x80, 0x8a, 0x3b, 0x8c, 0x69, 0x78, 0x75, 0x04, 0x97, 0xdd, 0x61, 0x8c,
0x43, 0x7b, 0x0d, 0xea, 0x23, 0xf7, 0x6a, 0x28, 0x0e, 0xaf, 0x26, 0x87, 0xba, 0x5d, 0x93, 0x30,
0x24, 0x88, 0xc7, 0xb0, 0x68, 0xa2, 0xa8, 0xce, 0x4b, 0xba, 0xf3, 0x05, 0x03, 0x5b, 0x8e, 0xe1,
0x2e, 0xcc, 0xab, 0x3a, 0x21, 0xcd, 0x07, 0xc9, 0xa4, 0x6a, 0x37, 0x25, 0x58, 0xcd, 0xf2, 0x1e,
0xb4, 0x4e, 0x3c, 0xdf, 0x1d, 0x38, 0xbd, 0x41, 0x7c, 0xee, 0xf4, 0xf9, 0x20, 0x76, 0x91, 0x62,
0x4a, 0x76, 0x13, 0xe1, 0xeb, 0x83, 0xf8, 0x7c, 0x43, 0x40, 0xd9, 0x3b, 0x50, 0x3d, 0xe1, 0xdc,
0xc1, 0xc5, 0x6a, 0x57, 0x52, 0x07, 0x4f, 0xed, 0x90, 0x5d, 0x39, 0x51, 0x7b, 0xf5, 0x0e, 0xb4,
0x82, 0x71, 0x7c, 0x1a, 0x78, 0xfe, 0xa9, 0x23, 0x18, 0x9c, 0xe3, 0xf5, 0x91, 0x86, 0x8a, 0x6b,
0xf9, 0x47, 0x39, 0xbb, 0xa9, 0xca, 0x04, 0xab, 0xd9, 0xe9, 0xb3, 0x37, 0x61, 0x7e, 0xe0, 0x46,
0xb1, 0x73, 0x16, 0x8c, 0x9c, 0xd1, 0xf8, 0xf8, 0x19, 0xbf, 0x6a, 0x37, 0x70, 0x21, 0x1a, 0x02,
0xbc, 0x1d, 0x8c, 0x0e, 0x11, 0x28, 0x28, 0x1b, 0xc7, 0x49, 0x83, 0x80, 0x3b, 0xb9, 0x7b, 0x0d,
0xbb, 0x2a, 0x20, 0xd4, 0xe9, 0x17, 0xb0, 0x88, 0xdb, 0xd3, 0x1b, 0x47, 0x71, 0x30, 0x74, 0x04,
0x73, 0x0e, 0xfb, 0x51, 0xbb, 0x86, 0xb4, 0xf6, 0x96, 0x1c, 0xac, 0xb1, 0xc7, 0x0f, 0x36, 0x78,
0x14, 0xaf, 0x23, 0xb2, 0x4d, 0xb8, 0xe2, 0x06, 0xbf, 0xb2, 0x17, 0xfa, 0x93, 0x70, 0xf6, 0x0e,
0x30, 0x77, 0x30, 0x08, 0x2e, 0x9c, 0x88, 0x0f, 0x4e, 0x1c, 0xb9, 0x88, 0xed, 0xe6, 0x9d, 0xdc,
0xbd, 0x8a, 0xdd, 0xc2, 0x92, 0x2e, 0x1f, 0x9c, 0x1c, 0x12, 0x9c, 0x7d, 0x0f, 0xf0, 0x30, 0x39,
0x27, 0xdc, 0x8d, 0xc7, 0x21, 0x8f, 0xda, 0xf3, 0x77, 0x0a, 0xf7, 0x9a, 0x8f, 0x17, 0xf4, 0x7a,
0x21, 0x78, 0xcd, 0x8b, 0xed, 0xba, 0xc0, 0x93, 0xdf, 0x51, 0x67, 0x03, 0x96, 0xb3, 0x87, 0x24,
0x88, 0x4a, 0xac, 0x8a, 0x20, 0xc6, 0xa2, 0x2d, 0xfe, 0x64, 0x4b, 0x50, 0x3a, 0x77, 0x07, 0x63,
0x2e, 0x99, 0x38, 0x7d, 0x7c, 0x9c, 0xff, 0x28, 0x67, 0xfd, 0x51, 0x0e, 0xea, 0x34, 0x4b, 0x29,
0x7c, 0xbc, 0x0e, 0x0d, 0x45, 0x0d, 0x3c, 0x0c, 0x83, 0x50, 0x72, 0x35, 0x45, 0x79, 0x9b, 0x02,
0x26, 0xae, 0x11, 0x85, 0x34, 0x0a, 0xb9, 0x37, 0x74, 0x4f, 0x55, 0xd3, 0x8a, 0x94, 0x0e, 0x25,
0x98, 0xbd, 0x97, 0xb4, 0x17, 0x06, 0xe3, 0x98, 0xcb, 0x4b, 0xae, 0x2e, 0xa7, 0x67, 0x0b, 0x98,
0x6e, 0x1d, 0xbf, 0x5e, 0x82, 0xce, 0xad, 0xdf, 0xc9, 0x01, 0x13, 0xc3, 0x3e, 0x0a, 0xa8, 0x01,
0x49, 0xa1, 0x93, 0x35, 0x73, 0x2f, 0x7d, 0x42, 0xf2, 0xcf, 0x3b, 0x21, 0x16, 0x94, 0x68, 0xec,
0xc5, 0x8c, 0xb1, 0x53, 0xd1, 0x0f, 0x8a, 0x95, 0x42, 0xab, 0x68, 0xfd, 0xef, 0x02, 0x2c, 0xad,
0xd3, 0x1d, 0xbd, 0xda, 0xeb, 0xf1, 0x91, 0x3e, 0x3b, 0xb7, 0xa1, 0xe6, 0x07, 0x7d, 0xae, 0x28,
0x96, 0x06, 0x06, 0x02, 0x64, 0x90, 0xeb, 0x99, 0xeb, 0xf9, 0x34, 0x70, 0x5a, 0xcc, 0x2a, 0x42,
0x70, 0xd8, 0x6f, 0xc2, 0xfc, 0x88, 0xfb, 0x7d, 0xf3, 0x88, 0x90, 0x14, 0xd5, 0x90, 0x60, 0x79,
0x3a, 0x6e, 0x43, 0xed, 0x64, 0x4c, 0x78, 0x82, 0xb1, 0x14, 0x91, 0x06, 0x40, 0x82, 0x56, 0x89,
0xbf, 0x8c, 0xc6, 0xd1, 0x19, 0x96, 0x96, 0xb0, 0xb4, 0x2c, 0xbe, 0x45, 0xd1, 0x2d, 0x80, 0xfe,
0x38, 0x8a, 0xe5, 0x89, 0x99, 0xc3, 0xc2, 0xaa, 0x80, 0xd0, 0x89, 0x79, 0x17, 0x16, 0x87, 0xee,
0xa5, 0x83, 0xb4, 0xe3, 0x78, 0xbe, 0x73, 0x32, 0xc0, 0x3b, 0xa7, 0x8c, 0x78, 0xad, 0xa1, 0x7b,
0xf9, 0x43, 0x51, 0xb2, 0xe3, 0x6f, 0x21, 0x5c, 0xb0, 0x15, 0x25, 0xdf, 0x84, 0x3c, 0xe2, 0xe1,
0x39, 0x47, 0x4e, 0x50, 0xd4, 0x42, 0x8c, 0x4d, 0x50, 0x31, 0xa2, 0xa1, 0x98, 0x77, 0x3c, 0xe8,
0xd1, 0xb1, 0xb7, 0xcb, 0x43, 0xcf, 0xdf, 0x8e, 0x07, 0x3d, 0x71, 0xaf, 0x08, 0x3e, 0x32, 0xe2,
0xa1, 0xf3, 0xec, 0x02, 0xcf, 0x70, 0x11, 0xf9, 0xc6, 0x21, 0x0f, 0x9f, 0x5c, 0x88, 0xab, 0xbf,
0x17, 0x21, 0x23, 0x72, 0xaf, 0xda, 0x35, 0x3c, 0xe0, 0x95, 0x5e, 0x24, 0x58, 0x90, 0x7b, 0x25,
0x0e, 0xa1, 0x18, 0xad, 0x8b, 0xbb, 0xc0, 0xfb, 0xd8, 0x7c, 0x84, 0x1c, 0xb5, 0x81, 0x83, 0x5d,
0x95, 0x05, 0xa2, 0x9f, 0x48, 0x50, 0xbd, 0x1a, 0xec, 0xc9, 0xc0, 0x3d, 0x8d, 0x90, 0xa5, 0x34,
0xec, 0xba, 0x04, 0x6e, 0x09, 0x98, 0xf5, 0x39, 0x49, 0x55, 0xc6, 0xde, 0xca, 0x33, 0x23, 0xae,
0x7a, 0x84, 0xe0, 0xbe, 0x56, 0x6c, 0xf9, 0x95, 0xb5, 0x69, 0xf9, 0x8c, 0x4d, 0xb3, 0x7e, 0x2f,
0x07, 0x75, 0xd9, 0x32, 0x0a, 0x25, 0xec, 0x01, 0x30, 0xb5, 0x8b, 0xf1, 0xa5, 0xd7, 0x77, 0x8e,
0xaf, 0x62, 0x1e, 0x11, 0xd1, 0x6c, 0x5f, 0xb3, 0x5b, 0xb2, 0xec, 0xe8, 0xd2, 0xeb, 0xaf, 0x89,
0x12, 0x76, 0x1f, 0x5a, 0x29, 0xfc, 0x28, 0x0e, 0x89, 0xa2, 0xb7, 0xaf, 0xd9, 0x4d, 0x03, 0xbb,
0x1b, 0x87, 0xe2, 0x8c, 0x08, 0x91, 0x67, 0x1c, 0x3b, 0x9e, 0xdf, 0xe7, 0x97, 0x48, 0x46, 0x0d,
0xbb, 0x46, 0xb0, 0x1d, 0x01, 0x5a, 0x6b, 0x42, 0xdd, 0x6c, 0xce, 0x3a, 0x85, 0x8a, 0x92, 0x97,
0x50, 0x60, 0x98, 0x18, 0x92, 0x5d, 0x8d, 0xf5, 0x48, 0x6e, 0x40, 0x25, 0x3d, 0x02, 0xbb, 0x1c,
0xbf, 0x74, 0xc7, 0xd6, 0xf7, 0xa1, 0xb5, 0x2b, 0x88, 0xc7, 0x17, 0xc4, 0x2a, 0xe5, 0xbf, 0x65,
0x98, 0x33, 0x0e, 0x4d, 0xd5, 0x96, 0x5f, 0xe2, 0xce, 0x3d, 0x0b, 0xa2, 0x58, 0xf6, 0x82, 0x7f,
0x5b, 0x7f, 0x9c, 0x03, 0xb6, 0x19, 0xc5, 0xde, 0xd0, 0x8d, 0xf9, 0x16, 0xd7, 0x6c, 0xe1, 0x00,
0xea, 0xa2, 0xb5, 0xa3, 0x60, 0x95, 0x04, 0x32, 0x12, 0x28, 0xde, 0x96, 0xc7, 0x78, 0xba, 0xc2,
0x03, 0x13, 0x9b, 0xd8, 0x7c, 0xaa, 0x01, 0x71, 0xca, 0x62, 0x37, 0x3c, 0xe5, 0x31, 0x8a, 0x71,
0x52, 0xc0, 0x07, 0x02, 0x09, 0x01, 0xae, 0xf3, 0xab, 0xb0, 0x30, 0xd5, 0x86, 0xc9, 0x97, 0xab,
0x19, 0x7c, 0xb9, 0x60, 0xf2, 0x65, 0x07, 0x16, 0x53, 0xe3, 0x92, 0x94, 0xb6, 0x02, 0x65, 0x71,
0x20, 0x84, 0x70, 0x90, 0x23, 0xa9, 0xf2, 0x84, 0x73, 0x21, 0x06, 0x3f, 0x84, 0xa5, 0x13, 0xce,
0x43, 0x37, 0xc6, 0x42, 0x3c, 0x31, 0x62, 0x87, 0x64, 0xc3, 0x0b, 0xb2, 0xac, 0xeb, 0xc6, 0x87,
0x3c, 0x14, 0x3b, 0x65, 0xfd, 0x9f, 0x1c, 0xcc, 0x0b, 0x0e, 0xba, 0xe7, 0xfa, 0x57, 0x6a, 0x9d,
0x76, 0x33, 0xd7, 0xe9, 0x9e, 0x71, 0x19, 0x1a, 0xd8, 0xdf, 0x74, 0x91, 0x0a, 0x93, 0x8b, 0xc4,
0xee, 0x40, 0x3d, 0x35, 0xd6, 0x12, 0x8e, 0x15, 0x22, 0x3d, 0xc8, 0x9f, 0x7f, 0x19, 0xdf, 0x84,
0x56, 0x32, 0x6c, 0xb9, 0x86, 0x0c, 0x8a, 0x82, 0x24, 0x65, 0x03, 0xf8, 0xb7, 0xf5, 0xcf, 0x73,
0x84, 0xb8, 0x1e, 0x78, 0x5a, 0x3a, 0x15, 0x88, 0x42, 0xee, 0x55, 0x88, 0xe2, 0xef, 0x99, 0x52,
0xfd, 0xcf, 0x3f, 0x59, 0x71, 0x74, 0x22, 0xee, 0xf7, 0x1d, 0x77, 0x30, 0x40, 0xe6, 0x5b, 0xb1,
0xcb, 0xe2, 0x7b, 0x75, 0x30, 0xb0, 0xee, 0xc2, 0x82, 0x31, 0xba, 0xe7, 0xcc, 0x63, 0x1f, 0xd8,
0xae, 0x17, 0xc5, 0x4f, 0xfd, 0x68, 0x64, 0x08, 0x6e, 0x37, 0xa1, 0x2a, 0x38, 0xac, 0x18, 0x19,
0x1d, 0xd9, 0x92, 0x2d, 0x58, 0xae, 0x18, 0x57, 0x84, 0x85, 0xee, 0xa5, 0x2c, 0xcc, 0xcb, 0x42,
0xf7, 0x12, 0x0b, 0xad, 0x8f, 0x60, 0x31, 0xd5, 0x9e, 0xec, 0xfa, 0x35, 0x28, 0x8d, 0xe3, 0xcb,
0x40, 0x89, 0xe6, 0x35, 0x49, 0x21, 0x42, 0xe3, 0xb3, 0xa9, 0xc4, 0xfa, 0x04, 0x16, 0xf6, 0xf9,
0x85, 0x3c, 0xc4, 0x6a, 0x20, 0x2f, 0xa9, 0x0d, 0x5a, 0x0f, 0x80, 0x99, 0x95, 0x65, 0xaf, 0x86,
0x8e, 0x98, 0x4b, 0xe9, 0x88, 0xd6, 0x9b, 0xc0, 0xba, 0xde, 0xa9, 0xbf, 0xc7, 0xa3, 0xc8, 0x3d,
0xd5, 0xc7, 0xbe, 0x05, 0x85, 0x61, 0x74, 0x2a, 0x79, 0x94, 0xf8, 0xd3, 0xfa, 0x2e, 0x2c, 0xa6,
0xf0, 0x64, 0xc3, 0xaf, 0x40, 0x35, 0xf2, 0x4e, 0x7d, 0x14, 0xac, 0x64, 0xd3, 0x09, 0xc0, 0xda,
0x82, 0xa5, 0x1f, 0xf2, 0xd0, 0x3b, 0xb9, 0x7a, 0x51, 0xf3, 0xe9, 0x76, 0xf2, 0x93, 0xed, 0x6c,
0xc2, 0xf5, 0x89, 0x76, 0x64, 0xf7, 0x44, 0xbe, 0x72, 0x27, 0x2b, 0x36, 0x7d, 0x18, 0x7c, 0x2f,
0x6f, 0xf2, 0x3d, 0xeb, 0x29, 0xb0, 0xf5, 0xc0, 0xf7, 0x79, 0x2f, 0x3e, 0xe4, 0x3c, 0x4c, 0xcc,
0x52, 0x09, 0xad, 0xd6, 0x1e, 0xaf, 0xc8, 0x95, 0x9d, 0x64, 0xa6, 0x92, 0x88, 0x19, 0x14, 0x47,
0x3c, 0x1c, 0x62, 0xc3, 0x15, 0x1b, 0xff, 0xb6, 0xae, 0xc3, 0x62, 0xaa, 0x59, 0xa9, 0xc8, 0x3f,
0x82, 0xeb, 0x1b, 0x5e, 0xd4, 0x9b, 0xee, 0x70, 0x05, 0xca, 0xa3, 0xf1, 0xb1, 0x93, 0xe6, 0xcb,
0x4f, 0xf8, 0x95, 0xd0, 0xf6, 0x26, 0x6b, 0xc8, 0xb6, 0xfe, 0x76, 0x0e, 0x8a, 0xdb, 0x47, 0xbb,
0xeb, 0xac, 0x03, 0x15, 0xcf, 0xef, 0x05, 0x43, 0x21, 0x78, 0xd1, 0x9c, 0xf5, 0xf7, 0xcc, 0x03,
0x76, 0x13, 0xaa, 0x28, 0xaf, 0x09, 0xd5, 0x56, 0x8a, 0x3e, 0x15, 0x01, 0xd8, 0x0d, 0x7a, 0xcf,
0x84, 0x4e, 0xcd, 0x2f, 0x47, 0x5e, 0x88, 0x5a, 0xb3, 0x52, 0x86, 0x8b, 0x74, 0xd7, 0x27, 0x05,
0xa4, 0x11, 0x5b, 0xff, 0xa1, 0x0c, 0x65, 0x79, 0xdb, 0xd2, 0xcd, 0x1d, 0x7b, 0xe7, 0x3c, 0xb9,
0xb9, 0xc5, 0x97, 0x90, 0x07, 0x42, 0x3e, 0x0c, 0x62, 0x2d, 0xb0, 0xd1, 0x1e, 0xd4, 0x09, 0x28,
0x45, 0x36, 0x43, 0x68, 0x20, 0x13, 0x43, 0x81, 0x90, 0x7a, 0xe6, 0x55, 0x7e, 0x13, 0xca, 0xea,
0xee, 0x2f, 0x6a, 0x9d, 0x66, 0xae, 0x47, 0xd2, 0x5a, 0x07, 0x2a, 0x3d, 0x77, 0xe4, 0xf6, 0xbc,
0xf8, 0x4a, 0x32, 0x04, 0xfd, 0x2d, 0x5a, 0x1f, 0x04, 0x3d, 0x77, 0xe0, 0x1c, 0xbb, 0x03, 0xd7,
0xef, 0x71, 0xa9, 0xbb, 0xd7, 0x11, 0xb8, 0x46, 0x30, 0xa1, 0x9f, 0xcb, 0x71, 0x2a, 0x2c, 0x52,
0xe1, 0xe5, 0xe8, 0x15, 0x9a, 0x10, 0x2e, 0x83, 0xe1, 0xd0, 0x13, 0x5a, 0x06, 0x89, 0x61, 0x05,
0xbb, 0x4a, 0x90, 0x2d, 0x8e, 0xb3, 0x95, 0xc5, 0x17, 0xb4, 0x74, 0x55, 0xea, 0x8a, 0x80, 0x9f,
0x93, 0x21, 0x61, 0x5a, 0x16, 0x2b, 0x18, 0xb2, 0xd8, 0xdb, 0xb0, 0x30, 0xf6, 0x23, 0x1e, 0xc7,
0x03, 0xde, 0xd7, 0x63, 0xa9, 0x21, 0x52, 0x4b, 0x17, 0xa8, 0xe1, 0x3c, 0x80, 0x45, 0x32, 0x3a,
0x44, 0x6e, 0x1c, 0x44, 0x67, 0x5e, 0xe4, 0x44, 0x42, 0x43, 0x22, 0x75, 0x77, 0x01, 0x8b, 0xba,
0xb2, 0xa4, 0x4b, 0x2a, 0xd2, 0xca, 0x04, 0x7e, 0xc8, 0x7b, 0xdc, 0x3b, 0xe7, 0x7d, 0x94, 0xd3,
0x0a, 0xf6, 0xf5, 0x54, 0x1d, 0x5b, 0x16, 0xa2, 0xd0, 0x3d, 0x1e, 0x3a, 0xe3, 0x51, 0xdf, 0x15,
0xc2, 0x4a, 0x93, 0x84, 0x61, 0x7f, 0x3c, 0x7c, 0x4a, 0x10, 0xf6, 0x08, 0x94, 0x24, 0x26, 0xe5,
0xc3, 0xf9, 0x14, 0x3f, 0x13, 0xc4, 0x6a, 0xd7, 0x25, 0x06, 0x09, 0x8a, 0x29, 0x99, 0xb3, 0x35,
0x21, 0x73, 0xb6, 0xa1, 0x3c, 0x0a, 0xbd, 0x73, 0x37, 0xe6, 0xed, 0x05, 0x62, 0xe0, 0xf2, 0x53,
0x70, 0x06, 0xcf, 0xf7, 0x62, 0xcf, 0x8d, 0x83, 0xb0, 0xcd, 0xb0, 0x2c, 0x01, 0xb0, 0xfb, 0xb0,
0x80, 0x34, 0x12, 0xc5, 0x6e, 0x3c, 0x8e, 0xa4, 0x04, 0xba, 0x88, 0xc4, 0x84, 0x32, 0x74, 0x17,
0xe1, 0x28, 0x84, 0xb2, 0xef, 0xc2, 0x32, 0x91, 0x05, 0xd6, 0x90, 0x92, 0x35, 0x0a, 0x04, 0x4b,
0xb8, 0x14, 0x8b, 0x58, 0x2a, 0xe8, 0x5b, 0xca, 0xd7, 0x42, 0x3a, 0xf8, 0x00, 0x56, 0x24, 0x99,
0x4c, 0xd5, 0xba, 0x8e, 0xb5, 0x96, 0xa8, 0x78, 0xa2, 0xda, 0x7d, 0x58, 0x10, 0x43, 0xf2, 0x7a,
0x8e, 0xac, 0x2d, 0x4e, 0xc2, 0x32, 0x8e, 0x7e, 0x9e, 0x0a, 0x6c, 0x84, 0x3f, 0xe1, 0x57, 0x82,
0x94, 0x07, 0xde, 0x09, 0x8f, 0xbd, 0x21, 0x6f, 0xaf, 0x10, 0x71, 0xa8, 0x6f, 0x71, 0xca, 0xc6,
0x23, 0x2c, 0x69, 0xd3, 0x99, 0xa6, 0x2f, 0xa4, 0xbb, 0x41, 0x10, 0x71, 0x65, 0x5e, 0x6a, 0xdf,
0x90, 0x07, 0x48, 0x00, 0x25, 0xcb, 0xb2, 0xfe, 0x30, 0x47, 0x77, 0x90, 0x3c, 0xb2, 0x91, 0xa1,
0x51, 0xd1, 0x61, 0x75, 0x02, 0x7f, 0x70, 0x25, 0xcf, 0x2f, 0x10, 0xe8, 0xc0, 0x1f, 0xe0, 0x01,
0xf2, 0x7c, 0x13, 0x85, 0xd8, 0x5d, 0x5d, 0x01, 0x11, 0xe9, 0x36, 0xd4, 0x46, 0xe3, 0xe3, 0x81,
0xd7, 0x23, 0x94, 0x02, 0xb5, 0x42, 0x20, 0x44, 0x10, 0x2a, 0x25, 0x6d, 0x22, 0x61, 0x14, 0x11,
0xa3, 0x26, 0x61, 0x88, 0x82, 0xec, 0x94, 0x87, 0x78, 0x82, 0xeb, 0x36, 0xfe, 0x6d, 0xad, 0xc1,
0x52, 0x7a, 0xd0, 0x92, 0xd7, 0xdf, 0x87, 0x8a, 0x64, 0x0f, 0xca, 0xd6, 0xd0, 0x34, 0xcc, 0xbd,
0x42, 0x2b, 0xd2, 0xe5, 0xd6, 0x6f, 0xcd, 0xc1, 0xa2, 0x84, 0xae, 0x8b, 0x15, 0xe9, 0x8e, 0x87,
0x43, 0x37, 0xcc, 0xe0, 0x3b, 0xb9, 0xe7, 0xf3, 0x9d, 0xfc, 0x14, 0xdf, 0x49, 0x2b, 0x9b, 0xc4,
0xb6, 0xd2, 0xca, 0xa6, 0xd8, 0x02, 0x92, 0xff, 0x4d, 0xd3, 0x63, 0x43, 0x82, 0x8f, 0xc8, 0xc4,
0x39, 0xc5, 0x25, 0x4b, 0x19, 0x5c, 0xd2, 0xe4, 0x71, 0x73, 0x13, 0x3c, 0xee, 0x35, 0xa0, 0xbd,
0x56, 0x2c, 0xbb, 0x4c, 0x2a, 0x01, 0xc2, 0xa4, 0xfd, 0xf2, 0x2e, 0xcc, 0x4f, 0xb2, 0x15, 0xe2,
0x5f, 0xcd, 0x0c, 0xa6, 0xe2, 0x0d, 0x39, 0x5e, 0x10, 0x06, 0x72, 0x55, 0x32, 0x15, 0x6f, 0xc8,
0x77, 0xb1, 0x44, 0xe1, 0x6f, 0x02, 0x50, 0xdf, 0x28, 0x91, 0x00, 0x4a, 0x24, 0x6f, 0xa6, 0xf7,
0xc2, 0x5c, 0xf5, 0x07, 0xe2, 0x63, 0x1c, 0x72, 0x94, 0x52, 0xaa, 0x58, 0x53, 0xfc, 0xc9, 0x9e,
0x40, 0x33, 0x18, 0x71, 0xdf, 0x49, 0x8e, 0x77, 0x0d, 0x9b, 0x7a, 0xe3, 0x39, 0x4d, 0xed, 0x28,
0x5c, 0xbb, 0x21, 0xea, 0xea, 0x4f, 0xb6, 0x47, 0x0b, 0xcf, 0x8d, 0xd6, 0xea, 0xdf, 0xa0, 0xb5,
0x26, 0x56, 0xd6, 0xdf, 0xd6, 0xdf, 0xcb, 0x41, 0xcd, 0x18, 0x36, 0xbb, 0x0e, 0x0b, 0xeb, 0x07,
0x07, 0x87, 0x9b, 0xf6, 0xea, 0xd1, 0xce, 0x0f, 0x37, 0x9d, 0xf5, 0xdd, 0x83, 0xee, 0x66, 0xeb,
0x9a, 0x00, 0xef, 0x1e, 0xac, 0xaf, 0xee, 0x3a, 0x5b, 0x07, 0xf6, 0xba, 0x02, 0xe7, 0xd8, 0x32,
0x30, 0x7b, 0x73, 0xef, 0xe0, 0x68, 0x33, 0x05, 0xcf, 0xb3, 0x16, 0xd4, 0xd7, 0xec, 0xcd, 0xd5,
0xf5, 0x6d, 0x09, 0x29, 0xb0, 0x25, 0x68, 0x6d, 0x3d, 0xdd, 0xdf, 0xd8, 0xd9, 0xff, 0xd4, 0x59,
0x5f, 0xdd, 0x5f, 0xdf, 0xdc, 0xdd, 0xdc, 0x68, 0x15, 0x59, 0x03, 0xaa, 0xab, 0x6b, 0xab, 0xfb,
0x1b, 0x07, 0xfb, 0x9b, 0x1b, 0xad, 0x92, 0xf5, 0x2b, 0x50, 0x4d, 0x26, 0x5a, 0x83, 0xf2, 0xd3,
0xfd, 0x27, 0xfb, 0x07, 0x9f, 0xef, 0xb7, 0xae, 0xb1, 0x2a, 0x94, 0xb0, 0xff, 0x56, 0x8e, 0x01,
0xcc, 0x51, 0x9f, 0xad, 0x3c, 0xab, 0x40, 0x71, 0xed, 0xe0, 0x68, 0xbb, 0x55, 0xb0, 0xfe, 0x2c,
0x07, 0xd7, 0x71, 0xca, 0xfd, 0x49, 0x26, 0x70, 0x07, 0x6a, 0xbd, 0x20, 0x18, 0x09, 0xe5, 0x26,
0xb9, 0xc4, 0x4d, 0x90, 0x38, 0xe0, 0xc4, 0x2f, 0x4f, 0x82, 0xb0, 0xc7, 0x25, 0x0f, 0x00, 0x04,
0x6d, 0x09, 0x88, 0xa0, 0x41, 0x49, 0xc4, 0x84, 0x41, 0x2c, 0xa0, 0x46, 0x30, 0x42, 0x59, 0x86,
0xb9, 0xe3, 0x90, 0xbb, 0xbd, 0x33, 0x79, 0xfa, 0xe5, 0x17, 0x7b, 0x2b, 0x51, 0xbb, 0x7b, 0x82,
0xa6, 0x06, 0xbc, 0x8f, 0x47, 0xa0, 0x62, 0xcf, 0x4b, 0xf8, 0xba, 0x04, 0x8b, 0x0b, 0xc0, 0x3d,
0x76, 0xfd, 0x7e, 0xe0, 0xf3, 0xbe, 0x94, 0xee, 0x13, 0x80, 0x75, 0x08, 0xcb, 0x93, 0xf3, 0x93,
0xfc, 0xe2, 0x7b, 0x06, 0xbf, 0x20, 0x61, 0xbb, 0x33, 0x9b, 0x14, 0x0c, 0xde, 0xf1, 0xb3, 0x02,
0x14, 0x85, 0xf0, 0x35, 0x53, 0x4e, 0x33, 0xa5, 0xe9, 0xc2, 0x94, 0xc7, 0x05, 0xb5, 0x7b, 0xba,
0x95, 0xc9, 0x84, 0x54, 0x45, 0x08, 0xde, 0xc6, 0xba, 0x38, 0xe4, 0xbd, 0x73, 0x69, 0x43, 0xa2,
0x62, 0x9b, 0xf7, 0xce, 0x51, 0x8d, 0x71, 0x63, 0xaa, 0x4b, 0xe7, 0xbd, 0x1c, 0xb9, 0x31, 0xd6,
0x94, 0x45, 0x58, 0xaf, 0xac, 0x8b, 0xb0, 0x56, 0x1b, 0xca, 0x9e, 0x7f, 0x1c, 0x8c, 0xfd, 0x3e,
0x1e, 0xef, 0x8a, 0xad, 0x3e, 0xd1, 0xc1, 0x83, 0x9c, 0x48, 0xdc, 0x1f, 0x74, 0x9a, 0x2b, 0x02,
0x70, 0x24, 0x6e, 0x90, 0xf7, 0xa0, 0x1a, 0x5d, 0xf9, 0x3d, 0xf3, 0x0c, 0x2f, 0xc9, 0xf5, 0x11,
0xb3, 0x7f, 0xd0, 0xbd, 0xf2, 0x7b, 0x78, 0x62, 0x2b, 0x91, 0xfc, 0x8b, 0x7d, 0x00, 0x15, 0x6d,
0x6a, 0x25, 0x0e, 0x7c, 0xc3, 0xac, 0xa1, 0xec, 0xab, 0xa4, 0xd1, 0x6a, 0xd4, 0xce, 0x13, 0x68,
0xa4, 0x8a, 0x4c, 0x35, 0xb4, 0x41, 0x6a, 0xe8, 0x1b, 0xa6, 0x1a, 0x9a, 0x30, 0x76, 0x59, 0xcd,
0x54, 0x4b, 0x7f, 0x15, 0x2a, 0x6a, 0x64, 0xe2, 0x38, 0xc9, 0xa3, 0xe0, 0x74, 0xbf, 0xd8, 0x5f,
0x6f, 0x5d, 0x63, 0xf3, 0x50, 0x5b, 0x5d, 0xc7, 0x13, 0x8a, 0x80, 0x9c, 0x40, 0x39, 0x5c, 0xed,
0x76, 0x35, 0x24, 0x6f, 0x31, 0x68, 0x89, 0xeb, 0x45, 0x8c, 0x58, 0x3b, 0x53, 0xbe, 0x07, 0x0b,
0x06, 0x2c, 0xd1, 0xd4, 0xc4, 0x7d, 0x34, 0xa9, 0xa9, 0xa1, 0x5c, 0x4e, 0x25, 0xd6, 0x0a, 0x5c,
0x17, 0x9f, 0x9b, 0xe7, 0xdc, 0x8f, 0xbb, 0xe3, 0x63, 0x72, 0xa5, 0x79, 0x81, 0x2f, 0xe4, 0xf5,
0xaa, 0x2e, 0x99, 0x4d, 0x48, 0x0f, 0xa4, 0x52, 0x97, 0xc7, 0xe5, 0xef, 0x18, 0x3d, 0x60, 0xc5,
0x07, 0xf8, 0x6f, 0x4a, 0xb9, 0xab, 0x6a, 0x90, 0x98, 0xeb, 0xe1, 0xe6, 0xa6, 0xed, 0x1c, 0xec,
0xef, 0xee, 0xec, 0x0b, 0x66, 0x24, 0xe6, 0x8a, 0x80, 0xad, 0x2d, 0x84, 0xe4, 0xac, 0x16, 0x34,
0x3f, 0xe5, 0xf1, 0x8e, 0x7f, 0x12, 0xa8, 0x99, 0xfe, 0xdf, 0x12, 0xcc, 0x6b, 0x50, 0xa2, 0x1c,
0x9e, 0xf3, 0x30, 0xf2, 0x02, 0x1f, 0xe5, 0xbc, 0xaa, 0xad, 0x3e, 0xc5, 0x0d, 0xe2, 0xf5, 0xb9,
0x1f, 0x7b, 0xf1, 0x95, 0x93, 0xb2, 0x24, 0x35, 0x15, 0x58, 0xde, 0x54, 0x4b, 0x50, 0x72, 0x07,
0x9e, 0xab, 0x3c, 0x90, 0xf4, 0x21, 0xa0, 0xbd, 0x60, 0x10, 0x84, 0x28, 0xd2, 0x55, 0x6d, 0xfa,
0x60, 0x8f, 0x60, 0x49, 0x88, 0x96, 0xa6, 0x79, 0x0f, 0xcf, 0x28, 0x19, 0xb5, 0x98, 0x3f, 0x1e,
0x1e, 0x26, 0x26, 0x3e, 0x51, 0x22, 0xee, 0x27, 0x51, 0x43, 0x0a, 0x24, 0xba, 0x02, 0x69, 0x29,
0x0b, 0xfe, 0x78, 0xb8, 0x8a, 0x25, 0x1a, 0xff, 0x31, 0x5c, 0x17, 0xf8, 0x5a, 0x84, 0xd1, 0x35,
0xe6, 0xb1, 0x86, 0x68, 0x6c, 0x47, 0x96, 0xe9, 0x3a, 0x37, 0xa1, 0x4a, 0xa3, 0x12, 0x3b, 0x5e,
0x22, 0xe9, 0x14, 0x87, 0xc2, 0xc3, 0x68, 0xca, 0x59, 0x38, 0x47, 0x97, 0xed, 0x84, 0xb3, 0xd0,
0x70, 0x37, 0x56, 0x26, 0xdd, 0x8d, 0x8f, 0xe1, 0xfa, 0x31, 0x8f, 0x62, 0xe7, 0x8c, 0xbb, 0x7d,
0x1e, 0xe2, 0x89, 0x24, 0xb7, 0x22, 0x49, 0xe1, 0x8b, 0xa2, 0x70, 0x1b, 0xcb, 0x8e, 0x54, 0x91,
0x90, 0x25, 0xc4, 0xd1, 0xe3, 0x7d, 0x27, 0x0e, 0x1c, 0x14, 0x31, 0xf0, 0x10, 0x57, 0xec, 0x06,
0x81, 0x8f, 0x82, 0x75, 0x01, 0x4c, 0xe3, 0x9d, 0x86, 0xee, 0xe8, 0x4c, 0xca, 0xc9, 0x1a, 0xef,
0x53, 0x01, 0x64, 0xaf, 0x40, 0x39, 0xe6, 0x51, 0xec, 0x73, 0xf2, 0xe9, 0x54, 0xd0, 0x66, 0xaf,
0x40, 0xec, 0x0d, 0x98, 0xc3, 0x3e, 0xa2, 0x76, 0x0b, 0xe9, 0xbd, 0x9e, 0x30, 0x4b, 0xcf, 0xb7,
0x65, 0x99, 0x10, 0xd8, 0xc6, 0xa1, 0x17, 0xb5, 0xeb, 0xe8, 0xcb, 0xc4, 0xbf, 0xd9, 0xaf, 0x19,
0x6c, 0x61, 0x11, 0xeb, 0xaa, 0x3b, 0x77, 0x82, 0xd2, 0x7e, 0x29, 0x1c, 0xe2, 0x07, 0xc5, 0x4a,
0xad, 0x55, 0xb7, 0x3e, 0x84, 0x12, 0xad, 0x8e, 0x20, 0x42, 0x5c, 0xbb, 0x9c, 0x24, 0x42, 0x84,
0xb6, 0xa1, 0xec, 0xf3, 0xf8, 0x22, 0x08, 0x9f, 0x29, 0x5b, 0xab, 0xfc, 0xb4, 0x7e, 0x8a, 0x46,
0x02, 0xed, 0x48, 0x26, 0x7d, 0x47, 0x90, 0x07, 0x6d, 0x6f, 0x74, 0xe6, 0x4a, 0xbb, 0x45, 0x05,
0x01, 0xdd, 0x33, 0x77, 0x8a, 0x3c, 0xf2, 0xd3, 0xbe, 0xe4, 0x37, 0xa0, 0xa9, 0x5c, 0xd7, 0x91,
0x33, 0xe0, 0x27, 0xb1, 0x24, 0xf7, 0xba, 0xf4, 0x5b, 0x47, 0xbb, 0xfc, 0x24, 0xb6, 0xf6, 0x60,
0x41, 0x12, 0xe4, 0xc1, 0x88, 0xab, 0xae, 0x3f, 0xca, 0x92, 0x59, 0x6b, 0x8f, 0x17, 0xd3, 0x97,
0x19, 0xb9, 0xe4, 0x53, 0x82, 0xac, 0xf5, 0x19, 0x30, 0xf3, 0xaa, 0x93, 0xed, 0x49, 0xc9, 0x51,
0x99, 0xa8, 0x95, 0xa7, 0x47, 0xcb, 0xa7, 0x5e, 0x5f, 0xac, 0x4e, 0x34, 0xee, 0xf5, 0x54, 0x48,
0x41, 0xc5, 0x56, 0x9f, 0xd6, 0x9f, 0xe6, 0x60, 0x11, 0x1b, 0x53, 0x32, 0xb7, 0x94, 0x26, 0xbe,
0xf5, 0x20, 0xc5, 0xfe, 0x98, 0xf2, 0x05, 0x7d, 0x7c, 0x73, 0xa3, 0x60, 0x71, 0xca, 0x28, 0xf8,
0x16, 0xb4, 0xfa, 0x7c, 0xe0, 0x61, 0x38, 0x89, 0xba, 0xae, 0x49, 0xca, 0x9e, 0x57, 0x70, 0xa5,
0x28, 0xfd, 0x93, 0x1c, 0x2c, 0x90, 0x34, 0x80, 0xea, 0xa2, 0x5c, 0xa8, 0x4f, 0x94, 0x8e, 0x25,
0x59, 0x95, 0x9c, 0x53, 0x72, 0x4b, 0x22, 0x94, 0x90, 0xb7, 0xaf, 0x49, 0xdd, 0x4b, 0x42, 0xd9,
0xc7, 0xa8, 0x27, 0xf8, 0x0e, 0x02, 0x33, 0xc2, 0x53, 0xd2, 0x9b, 0xb2, 0x7d, 0x0d, 0x95, 0x08,
0x1f, 0x41, 0x6b, 0x15, 0xa1, 0xf4, 0x09, 0xb0, 0xb5, 0x05, 0x8d, 0x54, 0x37, 0x29, 0xcb, 0x65,
0x9d, 0x2c, 0x97, 0x53, 0xde, 0x81, 0xfc, 0xb4, 0x77, 0xe0, 0xef, 0x14, 0x81, 0x09, 0x92, 0x9a,
0xd8, 0xb5, 0x09, 0xd7, 0x5a, 0x7e, 0xca, 0xb5, 0xf6, 0x08, 0x98, 0x81, 0xa0, 0x3c, 0x7e, 0x05,
0xed, 0xf1, 0x6b, 0x25, 0xb8, 0xd2, 0xe1, 0xf7, 0x08, 0x96, 0xa4, 0xd0, 0xa8, 0x7d, 0x69, 0x68,
0x92, 0xa2, 0xfd, 0x61, 0x24, 0x3d, 0x2a, 0x9f, 0x1a, 0x9a, 0xa7, 0x94, 0x5b, 0x4d, 0xa8, 0xd4,
0x64, 0xc9, 0x41, 0xb7, 0x9a, 0xd0, 0xa2, 0x27, 0xa8, 0x60, 0xee, 0x85, 0x54, 0x50, 0x9e, 0xa2,
0x02, 0xc3, 0xb0, 0x50, 0x49, 0x1b, 0x16, 0x2c, 0x68, 0x28, 0xe7, 0x19, 0xc5, 0x0c, 0x90, 0x84,
0x54, 0x93, 0x1e, 0x34, 0x8c, 0x1b, 0xb8, 0x07, 0x2d, 0xa5, 0xfd, 0x6b, 0xd3, 0x05, 0xf9, 0xc3,
0xa5, 0xf1, 0x68, 0x5d, 0x19, 0x30, 0x52, 0x86, 0xe2, 0xda, 0x84, 0xa1, 0xf8, 0x6d, 0x58, 0x88,
0x04, 0x11, 0x39, 0x63, 0x5f, 0x06, 0xaf, 0xf0, 0x3e, 0xaa, 0x27, 0x15, 0xbb, 0x85, 0x05, 0x4f,
0x13, 0xf8, 0xb4, 0x6a, 0xdf, 0x98, 0x56, 0xed, 0xd9, 0x07, 0x89, 0x9f, 0x29, 0x3a, 0xf3, 0x86,
0x78, 0x71, 0x27, 0x81, 0x1e, 0x72, 0x81, 0xbb, 0x67, 0xde, 0xd0, 0x56, 0x4e, 0x4d, 0xf1, 0x61,
0xfd, 0x97, 0x1c, 0xb4, 0x04, 0x1d, 0xa4, 0xe8, 0xfc, 0x57, 0x00, 0x4f, 0xe4, 0x4b, 0x92, 0x79,
0x4d, 0xe0, 0x2a, 0x2a, 0xff, 0x10, 0x90, 0x6c, 0x1d, 0xa1, 0x8b, 0x49, 0x22, 0x6f, 0xa7, 0x89,
0x3c, 0x61, 0x64, 0xdb, 0xd7, 0x48, 0xc8, 0x16, 0x90, 0x2c, 0xff, 0x5e, 0x31, 0xc3, 0xbf, 0x67,
0x1c, 0x85, 0x6d, 0x80, 0x27, 0xfc, 0x6a, 0x37, 0xe8, 0xa1, 0x16, 0x74, 0x0b, 0x40, 0x10, 0xe4,
0x89, 0x3b, 0xf4, 0xa4, 0x05, 0xa3, 0x64, 0x57, 0x9f, 0xf1, 0xab, 0x2d, 0x04, 0x88, 0xdd, 0x10,
0xc5, 0xc9, 0x79, 0x28, 0xd9, 0x95, 0x67, 0xfc, 0x8a, 0x0e, 0x83, 0x03, 0x8d, 0x27, 0xfc, 0x6a,
0x83, 0x93, 0xb8, 0x16, 0x84, 0x82, 0x12, 0x42, 0xf7, 0x42, 0xc8, 0x67, 0x29, 0xdf, 0x5c, 0x2d,
0x74, 0x2f, 0x9e, 0xf0, 0x2b, 0xe5, 0x27, 0x2c, 0x8b, 0xf2, 0x41, 0xd0, 0x93, 0x37, 0x90, 0x8a,
0x32, 0x48, 0x06, 0x65, 0xcf, 0x3d, 0xc3, 0xbf, 0xad, 0x3f, 0xc9, 0x41, 0x43, 0x8c, 0x1f, 0x19,
0x9c, 0x58, 0x77, 0x15, 0xac, 0x92, 0x4b, 0x82, 0x55, 0x1e, 0x4b, 0xfe, 0x40, 0xdc, 0x32, 0x3f,
0x9b, 0x5b, 0xe2, 0x02, 0x13, 0xab, 0x7c, 0x0f, 0xaa, 0x74, 0xb6, 0xc4, 0x61, 0x2d, 0xa4, 0x76,
0x29, 0x35, 0x21, 0xbb, 0x82, 0x68, 0x4f, 0xc8, 0x37, 0x6e, 0x18, 0xa0, 0x68, 0x89, 0xab, 0xa1,
0x36, 0x3d, 0x65, 0x6c, 0x43, 0x29, 0xcb, 0xcd, 0xfa, 0x14, 0x6a, 0x06, 0x4d, 0xb1, 0xef, 0x93,
0x83, 0x9a, 0x06, 0x4f, 0x04, 0x98, 0x26, 0x9a, 0xd4, 0xec, 0xb7, 0xaf, 0xd9, 0x8d, 0x9e, 0x09,
0x58, 0x9b, 0x83, 0xa2, 0xa8, 0x64, 0x7d, 0x02, 0x0b, 0x46, 0xb3, 0xa4, 0xf1, 0x65, 0x8d, 0x29,
0x97, 0x35, 0xa6, 0x7f, 0x9a, 0x83, 0x25, 0x59, 0x1b, 0x03, 0x9b, 0x3c, 0x71, 0x5d, 0xef, 0x45,
0xa7, 0xec, 0x57, 0xa0, 0x21, 0x5a, 0x77, 0x42, 0x7e, 0xea, 0x45, 0x31, 0x57, 0x96, 0xfd, 0x8c,
0xc3, 0x21, 0xb8, 0xb6, 0x40, 0xb5, 0x25, 0x26, 0xfb, 0x04, 0x6a, 0x58, 0x95, 0x74, 0x52, 0xb9,
0x2d, 0xed, 0xe9, 0x8a, 0x34, 0xd4, 0xed, 0x6b, 0x36, 0x44, 0xfa, 0x6b, 0xad, 0x0a, 0xe5, 0x38,
0xf4, 0x4e, 0x4f, 0x79, 0x68, 0x2d, 0xeb, 0xa1, 0x89, 0x93, 0xc6, 0xbb, 0x31, 0x1f, 0x09, 0x21,
0xc8, 0xfa, 0x6f, 0x39, 0xa8, 0xc9, 0xb3, 0xf3, 0xad, 0xcd, 0xf9, 0x1d, 0x23, 0x32, 0x8f, 0xd4,
0xcf, 0x24, 0x10, 0xef, 0x2e, 0xcc, 0x0f, 0x85, 0x40, 0x24, 0x04, 0xf6, 0x94, 0x2d, 0xbf, 0xa9,
0xc0, 0x52, 0x1e, 0x79, 0x00, 0x8b, 0x28, 0x9e, 0x44, 0x4e, 0xec, 0x0d, 0x1c, 0x55, 0x28, 0xa3,
0xe0, 0x16, 0xa8, 0xe8, 0xc8, 0x1b, 0xec, 0xc9, 0x02, 0x71, 0x4b, 0x47, 0xb1, 0x7b, 0xca, 0xa5,
0xe8, 0x4b, 0x1f, 0x56, 0x1b, 0x96, 0x27, 0x64, 0x75, 0xa5, 0x67, 0xfc, 0xfd, 0x06, 0xac, 0x4c,
0x15, 0x49, 0x7d, 0x43, 0xdb, 0xb0, 0x07, 0xde, 0xf0, 0x38, 0xd0, 0xe6, 0xa6, 0x9c, 0x61, 0xc3,
0xde, 0x15, 0x25, 0xca, 0xdc, 0xc4, 0xe1, 0xba, 0x22, 0x08, 0xb4, 0x17, 0x69, 0x71, 0x3e, 0x8f,
0xc2, 0xe6, 0x7b, 0x69, 0x46, 0x35, 0xd9, 0x9d, 0x82, 0x9b, 0xd7, 0xdf, 0xe2, 0x68, 0x0a, 0x16,
0xb1, 0x13, 0x68, 0x6b, 0xba, 0x93, 0xf2, 0x91, 0xa1, 0x9b, 0x88, 0x9e, 0xde, 0x79, 0x41, 0x4f,
0x29, 0x43, 0x84, 0xbd, 0xac, 0xc8, 0x95, 0x1a, 0xd3, 0xfd, 0x9c, 0xc3, 0xab, 0xaa, 0x1f, 0x94,
0x75, 0xa6, 0x7b, 0x2b, 0xbe, 0xd4, 0xbc, 0xd0, 0xc0, 0x92, 0xee, 0xf2, 0xa6, 0x6c, 0x58, 0x17,
0x99, 0xfd, 0x9e, 0xc1, 0xf2, 0x85, 0xeb, 0xc5, 0x6a, 0x7e, 0x86, 0x5a, 0x54, 0xc2, 0xfe, 0x1e,
0xbf, 0xa0, 0xbf, 0xcf, 0xa9, 0x72, 0x4a, 0xfa, 0x5b, 0xba, 0x98, 0x06, 0x46, 0x9d, 0xff, 0x94,
0x87, 0x66, 0xba, 0x15, 0x71, 0xa8, 0x25, 0x1f, 0x52, 0xf2, 0x84, 0x94, 0xc7, 0xa5, 0x19, 0x74,
0x9f, 0xe4, 0x88, 0x69, 0x03, 0x6d, 0x3e, 0xc3, 0x40, 0x6b, 0xda, 0x45, 0x0b, 0x2f, 0xf2, 0xfd,
0x14, 0x5f, 0xca, 0xf7, 0x53, 0xca, 0xf2, 0xfd, 0xcc, 0x76, 0x18, 0xcc, 0x7d, 0x2b, 0x87, 0x41,
0x79, 0xb6, 0xc3, 0xa0, 0xf3, 0x97, 0x39, 0x60, 0xd3, 0x94, 0xca, 0x3e, 0x25, 0x5b, 0xb4, 0xcf,
0x07, 0x92, 0x8b, 0xbd, 0xfb, 0x72, 0xd4, 0xae, 0x36, 0x48, 0xd5, 0x66, 0x0f, 0x61, 0xd1, 0x8c,
0x9b, 0x35, 0x55, 0x95, 0x86, 0xcd, 0xcc, 0xa2, 0x44, 0xa1, 0x35, 0x1c, 0x5f, 0xc5, 0x17, 0x3a,
0xbe, 0x4a, 0x2f, 0x74, 0x7c, 0xcd, 0xa5, 0x1d, 0x5f, 0x9d, 0xbf, 0x95, 0x83, 0xc5, 0x0c, 0xa2,
0xfa, 0xc5, 0xcd, 0x59, 0xd0, 0x42, 0x8a, 0xc5, 0xe4, 0x25, 0x2d, 0x18, 0xdc, 0xa5, 0xf3, 0x15,
0x34, 0x52, 0x87, 0xe8, 0x17, 0xd7, 0xfd, 0xa4, 0xa2, 0x45, 0xa4, 0x6c, 0x2a, 0x5a, 0x9d, 0xbf,
0xc8, 0x03, 0x9b, 0x3e, 0xc7, 0xbf, 0xcc, 0x21, 0x4c, 0x2f, 0x52, 0x61, 0x7a, 0x91, 0xfe, 0xff,
0xdd, 0x2b, 0x6f, 0xc3, 0x82, 0x0c, 0xee, 0x37, 0x1c, 0x0f, 0x44, 0x28, 0x2d, 0x5d, 0xa0, 0x46,
0xf1, 0xe1, 0xa4, 0xcf, 0xb1, 0x92, 0x0a, 0x6f, 0x36, 0x2e, 0xd6, 0xb4, 0xeb, 0xd1, 0xea, 0x40,
0x5b, 0x2e, 0xcd, 0xb4, 0xa9, 0xee, 0x77, 0x8a, 0x5a, 0x4b, 0xc6, 0x42, 0x29, 0x14, 0x7f, 0x17,
0xea, 0xe6, 0x65, 0x23, 0xf7, 0x61, 0xc2, 0xe3, 0x24, 0xc4, 0xe1, 0xc0, 0x38, 0xad, 0xeb, 0x40,
0x7e, 0x84, 0xbe, 0xae, 0x46, 0x12, 0xc4, 0x73, 0x0c, 0xcf, 0x28, 0x1c, 0xa5, 0x36, 0xff, 0xaf,
0x40, 0x33, 0x6d, 0xb7, 0x92, 0xa2, 0x5e, 0x96, 0x74, 0x28, 0x6a, 0xa7, 0x0c, 0x59, 0xec, 0xd7,
0xa0, 0x35, 0x69, 0xf7, 0x92, 0xb1, 0x97, 0x33, 0xea, 0xcf, 0x7b, 0x69, 0x53, 0x18, 0xdb, 0x86,
0xa5, 0xac, 0xeb, 0x16, 0x77, 0x65, 0xb6, 0x5a, 0xc0, 0xa6, 0xaf, 0x54, 0xf6, 0x91, 0x34, 0x6f,
0x96, 0xb2, 0x1c, 0x31, 0xc6, 0x62, 0x3f, 0xa0, 0xff, 0x0c, 0x43, 0xe7, 0x39, 0x40, 0x02, 0x63,
0x2d, 0xa8, 0x1f, 0x1c, 0x6e, 0xee, 0x3b, 0xeb, 0xdb, 0xab, 0xfb, 0xfb, 0x9b, 0xbb, 0xad, 0x6b,
0x8c, 0x41, 0x13, 0x3d, 0x28, 0x1b, 0x1a, 0x96, 0x13, 0x30, 0x69, 0xfb, 0x55, 0xb0, 0x3c, 0x5b,
0x82, 0xd6, 0xce, 0xfe, 0x04, 0xb4, 0xc0, 0xda, 0xb0, 0x74, 0xb8, 0x49, 0x4e, 0x97, 0x54, 0xbb,
0x45, 0x21, 0xc2, 0xc9, 0xe9, 0x0a, 0x11, 0x8e, 0x52, 0x43, 0x24, 0xf5, 0x29, 0xc9, 0xe6, 0x77,
0x73, 0x70, 0x7d, 0xa2, 0x20, 0x89, 0xff, 0x25, 0xb9, 0x26, 0x2d, 0xd1, 0xd4, 0x11, 0xa8, 0x68,
0xf8, 0x6d, 0x58, 0xd0, 0xaa, 0xde, 0x04, 0x5f, 0x6a, 0xe9, 0x02, 0x85, 0xfc, 0x10, 0x16, 0x0d,
0x8d, 0x71, 0xe2, 0x84, 0x32, 0xa3, 0x48, 0x56, 0xb0, 0x56, 0x74, 0x9c, 0xe5, 0xc4, 0xa8, 0xfb,
0x94, 0x6f, 0x62, 0x16, 0x24, 0xd6, 0xdf, 0xf4, 0x78, 0xd5, 0xa7, 0x50, 0xe5, 0x53, 0x84, 0x90,
0x1e, 0xad, 0xb9, 0xe1, 0xaa, 0xfb, 0xdf, 0x9f, 0x03, 0xf6, 0xd9, 0x98, 0x87, 0x57, 0x18, 0xdf,
0x1b, 0xbd, 0x28, 0xe0, 0x45, 0xa9, 0x45, 0xf9, 0x97, 0x8a, 0xe1, 0xcf, 0x8a, 0xa1, 0x2f, 0xbe,
0x38, 0x86, 0xbe, 0xf4, 0xa2, 0x18, 0xfa, 0xd7, 0xa1, 0xe1, 0x9d, 0xfa, 0x81, 0x60, 0x40, 0x42,
0x36, 0x89, 0xda, 0x73, 0x77, 0x0a, 0xf7, 0xea, 0x76, 0x5d, 0x02, 0x85, 0x64, 0x12, 0xb1, 0x4f,
0x12, 0x24, 0xde, 0x3f, 0xc5, 0x7c, 0x0f, 0x93, 0xf5, 0x6c, 0xf6, 0x4f, 0xb9, 0xd4, 0x02, 0xd1,
0x2e, 0xa2, 0x2a, 0x0b, 0x78, 0xc4, 0xde, 0x80, 0x66, 0x14, 0x8c, 0x85, 0xa8, 0xa7, 0x96, 0x81,
0xec, 0xc3, 0x75, 0x82, 0x1e, 0x2a, 0x67, 0xc0, 0xe2, 0x38, 0xe2, 0xce, 0xd0, 0x8b, 0x22, 0x71,
0x41, 0xf7, 0x02, 0x3f, 0x0e, 0x83, 0x81, 0x34, 0xf9, 0x2e, 0x8c, 0x23, 0xbe, 0x47, 0x25, 0xeb,
0x54, 0xc0, 0xde, 0x4f, 0x86, 0x34, 0x72, 0xbd, 0x30, 0x6a, 0x03, 0x0e, 0x49, 0xcd, 0x14, 0x25,
0x2a, 0xd7, 0x0b, 0xf5, 0x58, 0xc4, 0x47, 0x34, 0x11, 0xdb, 0x5f, 0x9b, 0x8c, 0xed, 0xff, 0x49,
0x76, 0x6c, 0x7f, 0x03, 0x9b, 0x7e, 0x24, 0x9b, 0x9e, 0xde, 0xe2, 0x6f, 0x14, 0xe2, 0x3f, 0x9d,
0xb2, 0xd0, 0xfc, 0x26, 0x29, 0x0b, 0xf3, 0x59, 0x29, 0x0b, 0xef, 0x41, 0x0d, 0x83, 0xc9, 0x9d,
0x33, 0xcf, 0x8f, 0x95, 0x09, 0xbb, 0x65, 0x46, 0x9b, 0x6f, 0x0b, 0x65, 0x1a, 0x42, 0xf5, 0x67,
0x34, 0x9d, 0x3d, 0xb0, 0xf0, 0x4b, 0xcc, 0x1e, 0x90, 0x41, 0xef, 0x0f, 0xa0, 0xa2, 0xf6, 0x89,
0x31, 0x28, 0x9e, 0x84, 0xc1, 0x50, 0x99, 0xf6, 0xc4, 0xdf, 0xac, 0x09, 0xf9, 0x38, 0x90, 0x95,
0xf3, 0x71, 0x60, 0xfd, 0x06, 0xd4, 0x0c, 0x52, 0x63, 0xaf, 0x91, 0x11, 0x41, 0x48, 0xcb, 0x52,
0x4b, 0xa6, 0x55, 0xac, 0x4a, 0xe8, 0x4e, 0x5f, 0xf0, 0x9b, 0xbe, 0x17, 0x72, 0xcc, 0xf3, 0x71,
0x42, 0x7e, 0xce, 0xc3, 0x48, 0x99, 0x5a, 0x5b, 0xba, 0xc0, 0x26, 0xb8, 0xf5, 0xd7, 0x61, 0x31,
0xb5, 0xb7, 0x92, 0x45, 0xbc, 0x01, 0x73, 0xb8, 0x6e, 0xca, 0x15, 0x96, 0x8e, 0xe2, 0x97, 0x65,
0x98, 0xb1, 0x49, 0x56, 0x62, 0x67, 0x14, 0x06, 0xc7, 0xd8, 0x49, 0xce, 0xae, 0x49, 0xd8, 0x61,
0x18, 0x1c, 0x5b, 0x3f, 0x2b, 0x40, 0x61, 0x3b, 0x18, 0x99, 0x11, 0x16, 0xb9, 0xa9, 0x08, 0x0b,
0xa9, 0x02, 0x38, 0x5a, 0xc4, 0x97, 0x52, 0x1b, 0xda, 0x47, 0x95, 0x98, 0x7f, 0x0f, 0x9a, 0x82,
0x4f, 0xc4, 0x81, 0xd0, 0xa1, 0x2e, 0xdc, 0x90, 0x62, 0xfa, 0x0b, 0x74, 0xf8, 0xdc, 0x61, 0x7c,
0x14, 0x6c, 0x11, 0x9c, 0x2d, 0x41, 0x41, 0x0b, 0xb0, 0x58, 0x2c, 0x3e, 0x85, 0x72, 0x8d, 0xd1,
0x6d, 0x57, 0xd2, 0xd7, 0x23, 0xbf, 0xd8, 0xbb, 0xb0, 0x98, 0x6e, 0x97, 0x58, 0x91, 0x94, 0x48,
0xcc, 0x86, 0x91, 0x27, 0xdd, 0x00, 0xc1, 0x47, 0x08, 0x47, 0xba, 0x65, 0x4f, 0x38, 0xc7, 0x22,
0x83, 0xe9, 0x55, 0x52, 0x4c, 0xef, 0x36, 0xd4, 0xe2, 0xc1, 0xb9, 0x33, 0x72, 0xaf, 0x06, 0x81,
0xdb, 0x97, 0xe7, 0x1b, 0xe2, 0xc1, 0xf9, 0x21, 0x41, 0xd8, 0x43, 0x80, 0xe1, 0x68, 0x24, 0xcf,
0x1e, 0x9a, 0x1b, 0x13, 0x52, 0xde, 0x3b, 0x3c, 0x24, 0x92, 0xb3, 0xab, 0xc3, 0xd1, 0x88, 0xfe,
0x64, 0x1b, 0xd0, 0xcc, 0xcc, 0xc5, 0xb9, 0xa5, 0x82, 0xb1, 0x82, 0xd1, 0x83, 0x8c, 0xc3, 0xd9,
0xe8, 0x99, 0xb0, 0xce, 0xaf, 0x01, 0xfb, 0x39, 0x33, 0x62, 0x8e, 0xa0, 0xaa, 0xc7, 0x67, 0x26,
0x94, 0x60, 0x78, 0x65, 0x2d, 0x95, 0x50, 0xb2, 0xda, 0xef, 0x87, 0x82, 0x2f, 0xd2, 0x85, 0xa9,
0x59, 0x3e, 0x18, 0x37, 0xe6, 0x2a, 0xf1, 0x7d, 0xeb, 0xcf, 0x73, 0x50, 0xa2, 0xec, 0x96, 0x37,
0x61, 0x9e, 0xf0, 0x75, 0xb4, 0x8a, 0xf4, 0x10, 0xd1, 0xbd, 0x7b, 0x24, 0x03, 0x55, 0xc4, 0xb1,
0x30, 0x32, 0xf3, 0xf2, 0x7a, 0xe7, 0x8d, 0xec, 0xbc, 0xdb, 0x50, 0xd5, 0x5d, 0x1b, 0xa4, 0x53,
0x51, 0x3d, 0xb3, 0x57, 0xa1, 0x78, 0x16, 0x8c, 0x94, 0x2e, 0x0e, 0xc9, 0x4a, 0xda, 0x08, 0x4f,
0xc6, 0x22, 0xfa, 0xa0, 0xc1, 0x4b, 0x1d, 0x52, 0x77, 0x82, 0x64, 0x30, 0x3d, 0xc7, 0xb9, 0x8c,
0x39, 0x3e, 0x85, 0x79, 0xc1, 0x07, 0x0c, 0x4f, 0xed, 0xec, 0x4b, 0xf3, 0x2d, 0x21, 0xe1, 0xf5,
0x06, 0xe3, 0x3e, 0x37, 0x2d, 0x21, 0x18, 0x3a, 0x21, 0xe1, 0x4a, 0x3d, 0xb0, 0x7e, 0x3f, 0x47,
0xfc, 0x45, 0xb4, 0xcb, 0xee, 0x41, 0x51, 0xdc, 0x6f, 0x13, 0x96, 0x3a, 0x1d, 0xe7, 0x2a, 0xf0,
0x6c, 0xc4, 0xc0, 0xfc, 0xd5, 0xf1, 0x30, 0xdd, 0x7a, 0xc3, 0xae, 0xf9, 0xe3, 0xa1, 0x36, 0x26,
0x7c, 0x47, 0x4d, 0x6b, 0x42, 0x11, 0xa7, 0xd9, 0xeb, 0x63, 0xfa, 0xc0, 0x88, 0xc1, 0x28, 0xa6,
0x6e, 0x4c, 0x25, 0x05, 0xf6, 0x4f, 0xb9, 0x11, 0x7b, 0xf1, 0x47, 0x79, 0x68, 0xa4, 0x46, 0x84,
0x41, 0x28, 0xe2, 0x02, 0x20, 0x2b, 0xb0, 0xdc, 0x6f, 0x10, 0x20, 0x29, 0xa8, 0x1b, 0xeb, 0x94,
0x4f, 0xad, 0x93, 0xf6, 0x49, 0x17, 0x4c, 0x9f, 0xf4, 0x23, 0xa8, 0x26, 0x19, 0x99, 0xe9, 0x21,
0x89, 0xfe, 0x54, 0xb4, 0x6f, 0x82, 0x94, 0x78, 0xb1, 0x4b, 0xa6, 0x17, 0xfb, 0xfb, 0x86, 0xd3,
0x73, 0x0e, 0x9b, 0xb1, 0xb2, 0x56, 0xf4, 0x97, 0x13, 0x14, 0xf1, 0x09, 0xd4, 0x8c, 0xc1, 0x9b,
0xce, 0xcd, 0x5c, 0xca, 0xb9, 0xa9, 0xe3, 0xf2, 0xf3, 0x49, 0x5c, 0xbe, 0xf5, 0x5b, 0x79, 0x68,
0x88, 0xf3, 0xe5, 0xf9, 0xa7, 0x87, 0xc1, 0xc0, 0xeb, 0xa1, 0x55, 0x58, 0x9f, 0x30, 0x29, 0x68,
0xa9, 0x73, 0x26, 0x8f, 0x18, 0xc9, 0x59, 0x66, 0xfa, 0x11, 0x31, 0x69, 0x9d, 0x7e, 0x64, 0x41,
0x43, 0x30, 0xc6, 0x63, 0x37, 0xe2, 0x46, 0xbe, 0xa8, 0x5d, 0x3b, 0xe1, 0x7c, 0xcd, 0x8d, 0x88,
0x43, 0xbe, 0x0b, 0x8b, 0x02, 0x07, 0x33, 0x2f, 0x86, 0xde, 0x60, 0xe0, 0x11, 0x26, 0x99, 0x1a,
0x5a, 0x27, 0x9c, 0xdb, 0x6e, 0xcc, 0xf7, 0x44, 0x81, 0x4c, 0x2f, 0xad, 0xf4, 0xbd, 0xc8, 0x3d,
0x4e, 0x42, 0x85, 0xf4, 0x37, 0xfa, 0x72, 0xdc, 0x4b, 0xc3, 0x97, 0x43, 0x29, 0x58, 0xb5, 0xa1,
0x7b, 0xa9, 0x7d, 0x39, 0x13, 0x94, 0x54, 0x9e, 0xa4, 0x24, 0xeb, 0xbf, 0xe6, 0xa1, 0x66, 0x90,
0xe5, 0xcb, 0xdc, 0xae, 0xb7, 0xa6, 0xac, 0xf8, 0x55, 0xd3, 0x60, 0xff, 0x7a, 0xba, 0x4b, 0x74,
0xf9, 0x52, 0x22, 0xab, 0x41, 0xc0, 0x37, 0xa1, 0x2a, 0x4e, 0xdd, 0x7b, 0x68, 0x14, 0x93, 0x69,
0xd8, 0x08, 0x38, 0x1c, 0x1f, 0xab, 0xc2, 0xc7, 0x58, 0x58, 0x4a, 0x0a, 0x1f, 0x8b, 0xc2, 0xe7,
0xc5, 0x07, 0x7e, 0x08, 0x75, 0xd9, 0x2a, 0xee, 0x29, 0x4e, 0x37, 0x39, 0xf5, 0xa9, 0xfd, 0xb6,
0x6b, 0xd4, 0x1d, 0x6d, 0xbe, 0xac, 0xf8, 0x58, 0x55, 0xac, 0xbc, 0xa8, 0xe2, 0x63, 0xfa, 0xb0,
0xb6, 0x74, 0xc8, 0x25, 0x86, 0x1b, 0x28, 0x3e, 0xf6, 0x10, 0x16, 0x15, 0xbb, 0x1a, 0xfb, 0xae,
0xef, 0x07, 0x63, 0xbf, 0xc7, 0x55, 0xc0, 0x3e, 0x93, 0x45, 0x4f, 0x93, 0x12, 0xab, 0xaf, 0x33,
0xba, 0x28, 0x6c, 0xe1, 0x3e, 0x94, 0x48, 0x2e, 0x27, 0xe1, 0x23, 0x9b, 0x71, 0x11, 0x0a, 0xbb,
0x07, 0x25, 0x12, 0xcf, 0xf3, 0x33, 0x99, 0x0d, 0x21, 0x58, 0x0f, 0x60, 0x1e, 0x45, 0x4c, 0x83,
0xe3, 0x3e, 0x4f, 0x2a, 0xb1, 0x96, 0x80, 0xed, 0xd3, 0x21, 0x32, 0xc3, 0x69, 0xfe, 0x67, 0x01,
0x6a, 0x06, 0x58, 0xb0, 0x45, 0x0c, 0xc0, 0x70, 0xfa, 0x9e, 0x3b, 0xe4, 0xca, 0xf7, 0xd0, 0xb0,
0x1b, 0x08, 0xdd, 0x90, 0x40, 0x71, 0x29, 0xb8, 0xe7, 0xa7, 0x4e, 0x30, 0x8e, 0x9d, 0x3e, 0x3f,
0x0d, 0x39, 0x97, 0xc2, 0x52, 0xdd, 0x3d, 0x3f, 0x3d, 0x18, 0xc7, 0x1b, 0x08, 0x13, 0x58, 0x82,
0xa8, 0x0d, 0x2c, 0x19, 0x33, 0x30, 0x74, 0x2f, 0x13, 0x2c, 0x19, 0xb8, 0x42, 0x4b, 0x54, 0xd4,
0x81, 0x2b, 0xa4, 0xb6, 0x4c, 0x72, 0xf2, 0xd2, 0x34, 0x27, 0x7f, 0x1f, 0x96, 0x89, 0x93, 0x4b,
0x1e, 0xe1, 0x4c, 0x90, 0xd4, 0x12, 0x96, 0xca, 0x49, 0x1a, 0xf2, 0x57, 0x4b, 0xcc, 0x40, 0x9d,
0x8f, 0xc8, 0xfb, 0x29, 0x9d, 0xa8, 0x9c, 0x2d, 0x66, 0x26, 0x1b, 0xef, 0x7a, 0x3f, 0xe5, 0x02,
0x13, 0x1d, 0xa3, 0x26, 0xa6, 0x0c, 0x43, 0x1d, 0x7a, 0xfe, 0x24, 0xa6, 0x7b, 0x99, 0xc6, 0xac,
0x4a, 0x4c, 0xf7, 0xd2, 0xc4, 0xfc, 0x00, 0x56, 0x86, 0xbc, 0xef, 0xb9, 0xe9, 0x66, 0x9d, 0x44,
0x82, 0x58, 0xa2, 0x62, 0xa3, 0x4e, 0x97, 0x34, 0x48, 0xb1, 0x1a, 0x3f, 0x0d, 0x86, 0xc7, 0x1e,
0x5d, 0x9e, 0xe4, 0xaa, 0x2d, 0xda, 0x4d, 0x7f, 0x3c, 0xfc, 0x11, 0x82, 0x45, 0x95, 0xc8, 0x6a,
0x40, 0xad, 0x1b, 0x07, 0x23, 0xb5, 0xcd, 0x4d, 0xa8, 0xd3, 0xa7, 0x4c, 0xc7, 0xb8, 0x09, 0x37,
0x90, 0x36, 0x8f, 0x82, 0x51, 0x30, 0x08, 0x4e, 0xaf, 0x52, 0x06, 0xa5, 0xff, 0x9e, 0x83, 0xc5,
0x54, 0xa9, 0x3c, 0xe7, 0xef, 0xd3, 0xc1, 0xd2, 0x31, 0xf5, 0x44, 0xce, 0x0b, 0xc6, 0xe5, 0x43,
0x88, 0x74, 0xaa, 0x54, 0x9c, 0xfd, 0x6a, 0x92, 0x0b, 0xaa, 0x2a, 0x12, 0x6d, 0xb7, 0xa7, 0x69,
0x5b, 0xd6, 0x57, 0x59, 0xa2, 0xaa, 0x89, 0xbf, 0x2a, 0x43, 0x85, 0xfb, 0x72, 0xca, 0x85, 0x74,
0x30, 0xa4, 0x69, 0x7c, 0x52, 0x23, 0x48, 0x2c, 0x52, 0x91, 0xf5, 0xaf, 0x72, 0x00, 0xc9, 0xe8,
0x30, 0x1c, 0x53, 0x5f, 0xa0, 0xf4, 0xae, 0x8a, 0x71, 0x59, 0xbe, 0x06, 0x75, 0x1d, 0x31, 0x96,
0x5c, 0xc9, 0x35, 0x05, 0x13, 0xf7, 0xf2, 0x5d, 0x98, 0x3f, 0x1d, 0x04, 0xc7, 0x28, 0x3a, 0xc9,
0x0b, 0x94, 0x92, 0x52, 0x9a, 0x04, 0x56, 0xd7, 0x62, 0x72, 0x81, 0x17, 0x33, 0x83, 0xca, 0xcc,
0xeb, 0xd8, 0xfa, 0xed, 0xbc, 0x0e, 0x9d, 0x49, 0x56, 0xe2, 0xf9, 0x7a, 0xc6, 0xb7, 0xf1, 0xc0,
0x3e, 0xcf, 0xf3, 0xf0, 0x09, 0x34, 0x43, 0xe2, 0x8e, 0x8a, 0x75, 0x16, 0x9f, 0xc3, 0x3a, 0x1b,
0x61, 0xea, 0xca, 0x7d, 0x0b, 0x5a, 0x6e, 0xff, 0x9c, 0x87, 0xb1, 0x87, 0xc6, 0x5a, 0x14, 0xd4,
0x64, 0xb0, 0x8a, 0x01, 0x47, 0x89, 0xe8, 0x2e, 0xcc, 0xcb, 0x14, 0x21, 0x8d, 0x29, 0x1f, 0x1d,
0x48, 0xc0, 0x02, 0xd1, 0xfa, 0xb7, 0x2a, 0x56, 0x27, 0xbd, 0xbb, 0xcf, 0x5f, 0x15, 0x73, 0x86,
0xf9, 0x69, 0xdf, 0x8a, 0x24, 0x24, 0x69, 0x03, 0x96, 0xfc, 0x88, 0x80, 0xd2, 0x02, 0x9c, 0x5e,
0xd6, 0xe2, 0xcb, 0x2c, 0xab, 0xf5, 0x27, 0x39, 0x28, 0x6f, 0x07, 0x23, 0xa1, 0x97, 0x0b, 0x79,
0x0e, 0x8f, 0x89, 0x4e, 0xcf, 0x9b, 0x13, 0x9f, 0x3b, 0xfd, 0xe7, 0x87, 0xe5, 0x67, 0xca, 0x1b,
0x8d, 0xb4, 0xbc, 0xf1, 0x7d, 0xb8, 0x89, 0xde, 0x88, 0x30, 0x18, 0x05, 0xa1, 0x38, 0xaa, 0xee,
0x80, 0xe4, 0x8e, 0xc0, 0x8f, 0xcf, 0x14, 0xef, 0xbc, 0x71, 0xc2, 0xf9, 0xa1, 0x81, 0xb1, 0xa7,
0x11, 0x30, 0xd7, 0x64, 0x10, 0x9f, 0x3b, 0xa4, 0x2a, 0x4a, 0xc1, 0x88, 0x38, 0xea, 0xbc, 0x28,
0xd8, 0x44, 0x38, 0x8a, 0x46, 0xd6, 0x47, 0x50, 0xd5, 0x56, 0x07, 0xf6, 0x36, 0x54, 0xcf, 0x82,
0x91, 0x34, 0x4d, 0xe4, 0x52, 0xa9, 0x0b, 0x72, 0xd6, 0x76, 0xe5, 0x8c, 0xfe, 0x88, 0xac, 0x9f,
0x95, 0xa1, 0xbc, 0xe3, 0x9f, 0x07, 0x5e, 0x0f, 0xa3, 0x7d, 0x86, 0x7c, 0x18, 0xa8, 0x3c, 0x45,
0xf1, 0x37, 0x7a, 0xf4, 0x93, 0xa7, 0x03, 0x0a, 0xd2, 0xa3, 0xaf, 0x1f, 0x0d, 0xb8, 0x0e, 0x73,
0xa1, 0x99, 0xfb, 0x5f, 0x0a, 0x31, 0xfe, 0x50, 0x2b, 0x6d, 0x25, 0x23, 0xcf, 0x53, 0xb4, 0x45,
0x39, 0xe9, 0xb8, 0x64, 0x94, 0x7b, 0x52, 0x45, 0x08, 0x2e, 0xd8, 0x2b, 0x50, 0x96, 0x99, 0x02,
0x14, 0x77, 0x4d, 0x01, 0x83, 0x12, 0x84, 0xd4, 0x10, 0x72, 0xf2, 0x26, 0x69, 0x89, 0x4a, 0xe8,
0xe9, 0x12, 0xb8, 0x21, 0x68, 0xed, 0x36, 0xd4, 0x08, 0x9f, 0x50, 0x2a, 0x32, 0x3e, 0x07, 0x41,
0x88, 0x90, 0xf1, 0x84, 0x46, 0x35, 0xf3, 0x09, 0x0d, 0x0c, 0xe7, 0xd2, 0x5c, 0x96, 0xa6, 0x08,
0xf4, 0x70, 0x82, 0x01, 0x57, 0xef, 0xc7, 0x48, 0xe5, 0x9e, 0xd2, 0xa8, 0x94, 0x72, 0xff, 0x3a,
0x34, 0x4e, 0xdc, 0xc1, 0xe0, 0xd8, 0xed, 0x3d, 0x23, 0x9d, 0xb4, 0x4e, 0x66, 0x38, 0x05, 0x44,
0xa5, 0xf4, 0x36, 0xd4, 0x8c, 0x5d, 0xc6, 0xe0, 0x9b, 0xa2, 0x0d, 0xc9, 0xfe, 0x4e, 0x9a, 0x9a,
0x9a, 0x2f, 0x61, 0x6a, 0x32, 0x82, 0x90, 0xe6, 0xd3, 0x41, 0x48, 0x37, 0x91, 0x9b, 0xca, 0x40,
0x95, 0x16, 0x65, 0xe9, 0xbb, 0xfd, 0x3e, 0x06, 0xaa, 0xd0, 0x1b, 0x58, 0xb8, 0x78, 0x54, 0xbe,
0x40, 0x42, 0x2d, 0xc1, 0x08, 0xe5, 0x16, 0xd9, 0x4b, 0x47, 0xae, 0xd7, 0xc7, 0xa0, 0x4f, 0x52,
0x63, 0xcb, 0xee, 0x30, 0x3e, 0x74, 0xbd, 0x3e, 0xbb, 0x03, 0x75, 0x55, 0x8c, 0xb7, 0xe3, 0x22,
0xad, 0xbf, 0x2c, 0x16, 0x77, 0xa2, 0x05, 0x0d, 0x8d, 0x31, 0x4c, 0x72, 0xa1, 0x6a, 0x12, 0x05,
0xe9, 0xe0, 0x3d, 0x74, 0xfe, 0xc7, 0x1c, 0x33, 0x9e, 0x9a, 0x8f, 0x6f, 0xca, 0xb9, 0x4a, 0x2a,
0x55, 0xff, 0x63, 0xa4, 0x83, 0x4d, 0x98, 0x42, 0x10, 0x23, 0x17, 0xcd, 0x72, 0x4a, 0x10, 0x93,
0xa8, 0xe8, 0xa2, 0x21, 0x04, 0xf6, 0x91, 0xa1, 0x48, 0xb5, 0x11, 0xf9, 0x95, 0x89, 0xf6, 0x67,
0xa8, 0x50, 0x82, 0x7a, 0xbd, 0x48, 0xdc, 0x32, 0x11, 0xf7, 0xfb, 0x98, 0x00, 0x55, 0xb1, 0xab,
0x5e, 0xf4, 0x84, 0x00, 0xbf, 0x58, 0x0d, 0x6b, 0x15, 0xea, 0xe6, 0x34, 0x59, 0x05, 0x8a, 0x07,
0x87, 0x9b, 0xfb, 0xad, 0x6b, 0xac, 0x06, 0xe5, 0xee, 0xe6, 0xd1, 0xd1, 0xee, 0xe6, 0x46, 0x2b,
0xc7, 0xea, 0x50, 0xd1, 0x69, 0x1c, 0x79, 0xf1, 0xb5, 0xba, 0xbe, 0xbe, 0x79, 0x78, 0xb4, 0xb9,
0xd1, 0x2a, 0xfc, 0xa0, 0x58, 0xc9, 0xb7, 0x0a, 0xd6, 0x9f, 0x15, 0xa0, 0x66, 0xac, 0xc2, 0xf3,
0x99, 0xf1, 0x2d, 0x00, 0x54, 0x69, 0x92, 0x38, 0xa6, 0xa2, 0x5d, 0x15, 0x10, 0xda, 0x7c, 0xd3,
0x58, 0x5e, 0xa0, 0xe7, 0x1f, 0x94, 0xb1, 0xfc, 0x75, 0x68, 0xd0, 0x4b, 0x0a, 0xa6, 0xbb, 0xae,
0x64, 0xd7, 0x09, 0x28, 0x59, 0x35, 0xe6, 0x81, 0x21, 0x12, 0x66, 0x08, 0xc8, 0xbc, 0x6a, 0x02,
0x61, 0x8e, 0x00, 0x26, 0x78, 0x44, 0xc1, 0xe0, 0x9c, 0x13, 0x06, 0x49, 0x84, 0x35, 0x09, 0x3b,
0x92, 0x89, 0x68, 0x92, 0x1f, 0x1a, 0x89, 0x48, 0x25, 0xbb, 0x4e, 0x40, 0xd9, 0xd1, 0xbb, 0x8a,
0x80, 0x2a, 0x48, 0x40, 0x2b, 0xd3, 0xd4, 0x90, 0x22, 0x9e, 0xdd, 0x29, 0x7b, 0x56, 0x15, 0x09,
0xe3, 0x3b, 0xd3, 0xf5, 0x5e, 0x6c, 0xd7, 0x62, 0x6f, 0x03, 0x1b, 0x8e, 0x46, 0x4e, 0x86, 0xa5,
0xa9, 0x68, 0xcf, 0x0f, 0x47, 0xa3, 0x23, 0xc3, 0x10, 0xf3, 0x0b, 0x30, 0x82, 0x7d, 0x09, 0x6c,
0x55, 0x1c, 0x60, 0x1c, 0xa2, 0x36, 0xa1, 0x26, 0x6c, 0x39, 0x67, 0xb2, 0xe5, 0x0c, 0xee, 0x97,
0xcf, 0xe4, 0x7e, 0xcf, 0xe3, 0x13, 0xd6, 0x16, 0xd4, 0x0e, 0x8d, 0x77, 0x5a, 0xee, 0x88, 0x1b,
0x42, 0xbd, 0xd0, 0x42, 0x77, 0x07, 0x19, 0xb7, 0x42, 0xf9, 0x30, 0x8b, 0x31, 0x9a, 0xbc, 0x31,
0x1a, 0xeb, 0x5f, 0xe6, 0x28, 0x07, 0x5e, 0x0f, 0x3e, 0x79, 0x1a, 0x46, 0xf9, 0x81, 0x92, 0x7c,
0xc1, 0x9a, 0xf2, 0xff, 0xc8, 0x54, 0x3f, 0x1c, 0x9a, 0x13, 0x9c, 0x9c, 0x44, 0x5c, 0x65, 0xbe,
0xd4, 0x10, 0x76, 0x80, 0x20, 0x25, 0x7c, 0x0b, 0x09, 0xdf, 0xa3, 0xf6, 0x23, 0x99, 0x01, 0x23,
0x84, 0xef, 0x3d, 0xf7, 0x52, 0xf6, 0x1a, 0x09, 0x11, 0x44, 0x1a, 0xaa, 0x55, 0xbe, 0x8f, 0xfe,
0xb6, 0xfe, 0x99, 0x4c, 0x69, 0x9c, 0x5c, 0xdf, 0xfb, 0x50, 0xd1, 0xad, 0xa6, 0x6f, 0x58, 0x85,
0xa9, 0xcb, 0xc5, 0x3d, 0x8e, 0x5a, 0x79, 0x6a, 0xc4, 0x74, 0xb8, 0xd0, 0xd9, 0xb0, 0x63, 0x8c,
0xfa, 0x1d, 0x60, 0x27, 0x5e, 0x38, 0x89, 0x4c, 0x87, 0xad, 0x85, 0x25, 0x06, 0xb6, 0xf5, 0x14,
0x16, 0x15, 0x97, 0x30, 0x34, 0x82, 0xf4, 0xe6, 0xe5, 0x5e, 0xc0, 0xe4, 0xf3, 0x53, 0x4c, 0xde,
0xfa, 0xc3, 0x22, 0x94, 0xd5, 0x9b, 0x47, 0x59, 0xef, 0xf4, 0x54, 0xd3, 0xef, 0xf4, 0xb4, 0x53,
0x6f, 0x3a, 0xe0, 0xd6, 0xcb, 0xfb, 0xfe, 0xee, 0xe4, 0x95, 0x6d, 0x18, 0xcd, 0x53, 0xd7, 0xf6,
0x32, 0x14, 0x47, 0x6e, 0x7c, 0x86, 0x06, 0x32, 0x22, 0x1e, 0xfc, 0x56, 0xc6, 0xf4, 0x52, 0xda,
0x98, 0x9e, 0xf5, 0xa6, 0x11, 0x89, 0xa4, 0x53, 0x6f, 0x1a, 0xdd, 0x04, 0x92, 0x2f, 0x8c, 0x78,
0x98, 0x0a, 0x02, 0xc4, 0x5d, 0x94, 0x16, 0x47, 0x2a, 0x93, 0xe2, 0xc8, 0x4b, 0x8b, 0x0a, 0xef,
0xc3, 0x1c, 0xe5, 0x03, 0xcb, 0xbc, 0x26, 0x75, 0xa1, 0xc8, 0x35, 0x54, 0xff, 0x53, 0x10, 0xac,
0x2d, 0x71, 0xcd, 0x07, 0x42, 0x6a, 0xa9, 0x07, 0x42, 0x4c, 0x23, 0x7f, 0x3d, 0x6d, 0xe4, 0xbf,
0x07, 0x2d, 0xbd, 0xa0, 0x68, 0x32, 0xf3, 0x23, 0x99, 0xd1, 0xd1, 0x54, 0x70, 0xc1, 0x25, 0xf7,
0xa3, 0xe4, 0x42, 0x6c, 0xa6, 0x2e, 0x44, 0xc1, 0xc3, 0x56, 0xe3, 0x98, 0x0f, 0x47, 0xb1, 0xbc,
0x10, 0x31, 0xe6, 0xdb, 0x1c, 0x60, 0x3a, 0xe3, 0xaf, 0x01, 0xd5, 0x9d, 0x7d, 0x67, 0x6b, 0x77,
0xe7, 0xd3, 0xed, 0xa3, 0x56, 0x4e, 0x7c, 0x76, 0x9f, 0xae, 0xaf, 0x6f, 0x6e, 0x6e, 0xe0, 0x8d,
0x03, 0x30, 0xb7, 0xb5, 0xba, 0x23, 0x6e, 0x9f, 0x82, 0xf5, 0x97, 0x39, 0xa8, 0x19, 0xcd, 0xb3,
0x0f, 0xf4, 0xaa, 0xd0, 0x1b, 0x12, 0xb7, 0xa6, 0x87, 0xf0, 0x40, 0xb1, 0x62, 0x63, 0x59, 0xf4,
0x0b, 0x4e, 0xf9, 0x99, 0x2f, 0x38, 0xb1, 0x37, 0x61, 0xde, 0xa5, 0x16, 0xf4, 0x2a, 0x48, 0x73,
0xb0, 0x04, 0xcb, 0x45, 0xc0, 0x28, 0xb0, 0xe4, 0x3e, 0x11, 0x78, 0x45, 0x15, 0x78, 0xa5, 0xaf,
0x94, 0xfd, 0xc8, 0xfa, 0x1e, 0x40, 0x32, 0x92, 0xf4, 0x94, 0xaf, 0xa5, 0xa7, 0x9c, 0x33, 0xa6,
0x9c, 0xb7, 0x36, 0x88, 0x39, 0xc8, 0xe5, 0xd3, 0xfe, 0xe7, 0x77, 0x41, 0xd9, 0x99, 0x1c, 0x8c,
0xae, 0x1c, 0x0d, 0x78, 0xac, 0x32, 0x1e, 0x17, 0x64, 0xc9, 0x8e, 0x2e, 0x50, 0x09, 0xc8, 0x49,
0x2b, 0x09, 0x8f, 0x91, 0x84, 0x36, 0xc9, 0x63, 0x24, 0xaa, 0xad, 0xcb, 0xad, 0x0e, 0xb4, 0x37,
0xb8, 0x68, 0x6d, 0x75, 0x30, 0x98, 0x18, 0x8e, 0x75, 0x13, 0x6e, 0x64, 0x94, 0x49, 0xd3, 0xc2,
0x67, 0x70, 0x7d, 0x95, 0x92, 0x1b, 0x7f, 0x51, 0x19, 0x16, 0x56, 0x1b, 0x96, 0x27, 0x9b, 0x94,
0x9d, 0x6d, 0xc1, 0xc2, 0x06, 0x3f, 0x1e, 0x9f, 0xee, 0xf2, 0xf3, 0xa4, 0x23, 0x06, 0xc5, 0xe8,
0x2c, 0xb8, 0x90, 0xeb, 0x83, 0x7f, 0x8b, 0x93, 0x39, 0x10, 0x38, 0x4e, 0x34, 0xe2, 0x3d, 0x65,
0xe7, 0x44, 0x48, 0x77, 0xc4, 0x7b, 0xd6, 0x07, 0xc0, 0xcc, 0x76, 0xe4, 0x7a, 0x09, 0xd9, 0x7f,
0x7c, 0xec, 0x44, 0x57, 0x51, 0xcc, 0x87, 0xea, 0xe1, 0x11, 0x88, 0xc6, 0xc7, 0x5d, 0x82, 0x58,
0x77, 0xa1, 0x7e, 0xe8, 0x5e, 0xd9, 0xfc, 0x4b, 0x99, 0x3b, 0xb0, 0x02, 0xe5, 0x91, 0x7b, 0x25,
0x0e, 0xb7, 0x76, 0x79, 0x60, 0xb1, 0xf5, 0x07, 0x45, 0x98, 0x23, 0x4c, 0x76, 0x87, 0xde, 0x06,
0xf4, 0x7c, 0x3c, 0x5c, 0x8a, 0xfd, 0x19, 0xa0, 0x29, 0x0e, 0x99, 0x9f, 0xe6, 0x90, 0xd2, 0x2c,
0xa6, 0xde, 0x44, 0x50, 0xc6, 0x69, 0x7f, 0x3c, 0x54, 0x0f, 0x21, 0xb0, 0x57, 0xa0, 0x9a, 0x24,
0x69, 0x15, 0x93, 0xb7, 0x1f, 0x29, 0x35, 0x2b, 0xed, 0x3e, 0x4c, 0x34, 0x0c, 0x1a, 0x9d, 0x62,
0xfc, 0x92, 0x09, 0x9a, 0xa0, 0x4c, 0x35, 0xa6, 0xac, 0xb2, 0x52, 0xd2, 0x6a, 0xcc, 0x94, 0xba,
0x52, 0x79, 0xb1, 0xba, 0x42, 0xf6, 0xb2, 0xe7, 0xa8, 0x2b, 0xf0, 0x12, 0xea, 0xca, 0x4b, 0xb8,
0xee, 0x6e, 0x40, 0x05, 0x6f, 0x73, 0x83, 0x27, 0x8a, 0x5b, 0x5c, 0xf0, 0xc4, 0x0f, 0x0d, 0x81,
0x9e, 0xe2, 0x06, 0x6e, 0x26, 0xc7, 0xc4, 0xe6, 0x5f, 0xfe, 0x72, 0x5c, 0x22, 0x5f, 0x40, 0x59,
0x42, 0x05, 0x41, 0xfb, 0xee, 0x50, 0x3d, 0x2b, 0x83, 0x7f, 0x8b, 0x65, 0xc3, 0xb7, 0x30, 0xbe,
0x1c, 0x7b, 0x21, 0xef, 0xab, 0xc7, 0x0b, 0x3c, 0x3c, 0xa3, 0x02, 0x22, 0x26, 0x28, 0x94, 0x0b,
0x3f, 0xb8, 0xf0, 0x65, 0xea, 0x72, 0xd9, 0x8b, 0x9e, 0x88, 0x4f, 0x8b, 0x41, 0x0b, 0x1f, 0x96,
0x1a, 0x05, 0xa1, 0xba, 0x72, 0xac, 0xff, 0x98, 0x83, 0x96, 0x3c, 0x5d, 0xba, 0xcc, 0x94, 0xed,
0x4b, 0x33, 0x1e, 0x12, 0xf0, 0x53, 0xef, 0x10, 0x18, 0x96, 0x26, 0x0b, 0x1a, 0x68, 0xcc, 0xd0,
0x37, 0x0f, 0x19, 0x63, 0x6a, 0x02, 0xb8, 0x25, 0x6f, 0x9f, 0x57, 0xa1, 0xa6, 0xc2, 0x2b, 0x87,
0xde, 0x40, 0x3d, 0xf0, 0x4a, 0xf1, 0x95, 0x7b, 0xde, 0x40, 0x5d, 0x5c, 0xa1, 0x2b, 0xf3, 0xa3,
0x72, 0x78, 0x71, 0xd9, 0x6e, 0xcc, 0xad, 0xff, 0x9c, 0x83, 0x05, 0x63, 0x12, 0xf2, 0xc4, 0x7e,
0x0c, 0x75, 0xfd, 0x96, 0x1b, 0xd7, 0x92, 0xd4, 0x4a, 0x9a, 0xc5, 0x24, 0xd5, 0x6a, 0x3d, 0x0d,
0x89, 0xc4, 0x60, 0xfa, 0xee, 0x15, 0x8e, 0x37, 0x1a, 0x0f, 0x95, 0xb2, 0xd2, 0x77, 0xaf, 0xb6,
0x38, 0xef, 0x8e, 0x87, 0x42, 0x15, 0xbd, 0xe0, 0xfc, 0x99, 0x46, 0x20, 0x19, 0x0a, 0x04, 0x4c,
0x62, 0x58, 0xd0, 0x18, 0x06, 0x7e, 0x7c, 0xa6, 0x51, 0xa4, 0x14, 0x89, 0x40, 0xc2, 0xb1, 0xfe,
0x47, 0x1e, 0x16, 0xc9, 0x64, 0x26, 0x4d, 0x95, 0x92, 0x69, 0xb5, 0x61, 0x8e, 0xac, 0x87, 0xc4,
0xb6, 0xb6, 0xaf, 0xd9, 0xf2, 0x9b, 0xbd, 0xff, 0x92, 0x66, 0x3e, 0x95, 0x82, 0x35, 0x63, 0xf9,
0x0b, 0xd3, 0xcb, 0x3f, 0x7b, 0x79, 0xb3, 0x3c, 0x68, 0xa5, 0x2c, 0x0f, 0xda, 0xcb, 0xf8, 0xad,
0xa6, 0xf2, 0x94, 0xca, 0x12, 0xc7, 0xc8, 0x53, 0xfa, 0x00, 0x56, 0x52, 0x38, 0xc8, 0xa7, 0xbd,
0x13, 0x8f, 0xab, 0x9c, 0xf0, 0x25, 0x03, 0xbb, 0xab, 0xca, 0xd6, 0xca, 0x50, 0x8a, 0x7a, 0xc1,
0x88, 0x5b, 0xcb, 0xb0, 0x94, 0x5e, 0x55, 0x79, 0x41, 0xfc, 0x5e, 0x0e, 0xda, 0x32, 0xde, 0xc1,
0xf3, 0x4f, 0xb7, 0xbd, 0x28, 0x0e, 0x42, 0xfd, 0xe6, 0xd9, 0x2d, 0x80, 0x28, 0x76, 0x43, 0xa9,
0x3d, 0x92, 0x5c, 0x5b, 0x45, 0x08, 0x6a, 0x86, 0x37, 0xa0, 0xc2, 0xfd, 0x3e, 0x15, 0x12, 0x35,
0x94, 0xb9, 0xdf, 0x57, 0x7a, 0xe5, 0x94, 0x3c, 0xdd, 0x48, 0xab, 0x0b, 0x32, 0x61, 0x52, 0xac,
0x0e, 0x3f, 0xc7, 0x2b, 0xb7, 0xa8, 0x13, 0x26, 0xf7, 0xdc, 0x4b, 0x8c, 0x1e, 0x8c, 0xac, 0x7f,
0x9c, 0x87, 0xf9, 0x64, 0x7c, 0x94, 0x6d, 0x9d, 0xe2, 0xdc, 0x72, 0x54, 0x09, 0xe7, 0xbe, 0x23,
0xc9, 0xc1, 0x13, 0xf2, 0xb8, 0x61, 0x48, 0xac, 0xd0, 0xb1, 0xdc, 0xf1, 0x99, 0x05, 0x35, 0x85,
0x11, 0x8c, 0x63, 0xe3, 0xe9, 0xa1, 0x2a, 0xa1, 0x1c, 0x8c, 0x63, 0xa1, 0x40, 0x09, 0x4d, 0xd2,
0xf3, 0xa5, 0x0a, 0x53, 0x72, 0x87, 0xf1, 0x0e, 0xbe, 0x68, 0x2c, 0xc0, 0xa2, 0x1a, 0x6d, 0xa4,
0xc0, 0x12, 0xf8, 0x2d, 0x92, 0x9b, 0x69, 0xe7, 0x50, 0x66, 0x36, 0x85, 0x4a, 0x7a, 0xdc, 0x51,
0x0b, 0x95, 0xaf, 0x42, 0x8d, 0x1a, 0x4f, 0xd2, 0xd2, 0x8a, 0x76, 0x15, 0x7b, 0xc0, 0x72, 0x69,
0xd4, 0x09, 0xc6, 0x29, 0x55, 0x16, 0xa8, 0x2b, 0x0c, 0x27, 0xf8, 0x07, 0x39, 0xb8, 0x91, 0xb1,
0x6d, 0xf2, 0x94, 0xaf, 0xc3, 0xc2, 0x89, 0x2e, 0x54, 0xab, 0x4b, 0x47, 0x7d, 0x59, 0x31, 0xd4,
0xf4, 0x9a, 0xda, 0xad, 0x93, 0x34, 0x20, 0x51, 0xa2, 0x68, 0x07, 0x53, 0x99, 0x87, 0xa8, 0x44,
0xd1, 0x36, 0x92, 0xfe, 0x72, 0x08, 0x9d, 0xcd, 0x4b, 0xc1, 0x31, 0xd6, 0xcd, 0x37, 0xb8, 0x15,
0x19, 0x3d, 0x9e, 0x62, 0x84, 0x2f, 0x36, 0x18, 0xf7, 0x29, 0xc1, 0x4a, 0xb7, 0xf5, 0x6d, 0x1a,
0xc1, 0xab, 0x53, 0xd4, 0xa1, 0x37, 0xc4, 0x55, 0xf6, 0x63, 0x4f, 0xbf, 0x1d, 0x6e, 0x45, 0x30,
0xbf, 0x37, 0x1e, 0xc4, 0x5e, 0xf2, 0x9c, 0x38, 0x7b, 0x5f, 0xd6, 0xc1, 0x7e, 0xd4, 0xaa, 0x65,
0x76, 0x04, 0xba, 0x23, 0x5c, 0xac, 0xa1, 0x68, 0xc8, 0x99, 0xee, 0x6f, 0x7e, 0x98, 0xee, 0xc1,
0xba, 0x01, 0x2b, 0xc9, 0x17, 0x2d, 0x9b, 0xba, 0x64, 0xfe, 0x45, 0x8e, 0x42, 0x95, 0xd3, 0x4f,
0x9b, 0xb3, 0x4d, 0x58, 0x8c, 0x3c, 0xff, 0x74, 0xc0, 0xcd, 0xe6, 0x23, 0xb9, 0x08, 0xd7, 0xd3,
0x63, 0x93, 0xcf, 0x9f, 0xdb, 0x0b, 0x54, 0x23, 0x69, 0x2d, 0x62, 0x6b, 0xb3, 0x06, 0x99, 0x90,
0xc5, 0xc4, 0x6a, 0x4c, 0x0f, 0x7e, 0x07, 0x9a, 0xe9, 0x8e, 0xd8, 0x87, 0x32, 0xb9, 0x30, 0x19,
0x55, 0x61, 0x22, 0x4f, 0x2c, 0x21, 0x88, 0x5a, 0xb2, 0xf6, 0x91, 0xf5, 0x0f, 0x73, 0xd0, 0xb6,
0xb9, 0xa0, 0x5c, 0x63, 0x94, 0x8a, 0x66, 0x3e, 0x9e, 0x6a, 0x75, 0xf6, 0x5c, 0x55, 0xce, 0xa2,
0x1a, 0xd1, 0x3b, 0x33, 0x37, 0x63, 0xfb, 0xda, 0xd4, 0x8c, 0xd6, 0x2a, 0x30, 0x47, 0x28, 0xd6,
0x0a, 0x5c, 0x97, 0xe3, 0x51, 0x63, 0x49, 0xbc, 0x81, 0xa9, 0x1e, 0x53, 0xde, 0xc0, 0x0e, 0xb4,
0xe9, 0xe9, 0x3a, 0x73, 0x12, 0xb2, 0xe2, 0x06, 0xb0, 0x3d, 0xb7, 0xe7, 0x86, 0x41, 0xe0, 0x1f,
0xf2, 0x50, 0x06, 0x7e, 0xa2, 0x6c, 0x89, 0xce, 0x32, 0x25, 0x04, 0xd3, 0x97, 0x7a, 0x70, 0x2d,
0xf0, 0x55, 0x9c, 0x0b, 0x7d, 0x59, 0x36, 0x2c, 0xae, 0xb9, 0xcf, 0xb8, 0x6a, 0x49, 0x2d, 0xd1,
0x27, 0x50, 0x1b, 0xe9, 0x46, 0xd5, 0xba, 0xab, 0x0c, 0xe4, 0xe9, 0x6e, 0x6d, 0x13, 0xdb, 0x7a,
0x0c, 0x4b, 0xe9, 0x36, 0x25, 0xeb, 0xe8, 0x40, 0x65, 0x28, 0x61, 0x72, 0x74, 0xfa, 0xfb, 0xfe,
0xd7, 0x50, 0x33, 0x9e, 0x23, 0x64, 0x2b, 0xb0, 0xf8, 0xf9, 0xce, 0xd1, 0xfe, 0x66, 0xb7, 0xeb,
0x1c, 0x3e, 0x5d, 0x7b, 0xb2, 0xf9, 0x85, 0xb3, 0xbd, 0xda, 0xdd, 0x6e, 0x5d, 0x63, 0xcb, 0xc0,
0xf6, 0x37, 0xbb, 0x47, 0x9b, 0x1b, 0x29, 0x78, 0x8e, 0xbd, 0x0a, 0x9d, 0xa7, 0xfb, 0x4f, 0xbb,
0x9b, 0x1b, 0x4e, 0x56, 0xbd, 0x3c, 0xbb, 0x05, 0x37, 0x64, 0x79, 0x46, 0xf5, 0xc2, 0xfd, 0x4f,
0xa0, 0x35, 0x69, 0x4f, 0x4c, 0x19, 0x60, 0x9f, 0x67, 0xa9, 0xbd, 0xff, 0x6f, 0x0a, 0x00, 0x49,
0xc0, 0x27, 0x6b, 0xc3, 0xd2, 0xc6, 0xea, 0xd1, 0xea, 0xee, 0x81, 0x18, 0x84, 0x7d, 0x70, 0xb4,
0xb9, 0x7e, 0xe4, 0xd8, 0x9b, 0x9f, 0xb5, 0xae, 0x65, 0x96, 0x1c, 0x1c, 0x0a, 0x4d, 0x7c, 0x05,
0x16, 0x77, 0xf6, 0x77, 0x8e, 0x76, 0x56, 0x77, 0x1d, 0xfb, 0xe0, 0xe9, 0xce, 0xfe, 0xa7, 0xf4,
0xe0, 0x48, 0x81, 0xdd, 0x86, 0x9b, 0x4f, 0x0f, 0xb7, 0xec, 0x83, 0xfd, 0x23, 0xa7, 0xbb, 0xfd,
0xf4, 0x68, 0x03, 0x9f, 0x2b, 0x59, 0xb7, 0x77, 0x0e, 0xa9, 0xcd, 0xe2, 0xf3, 0x10, 0x44, 0xd3,
0x25, 0xb1, 0x62, 0x9f, 0x1e, 0x74, 0xbb, 0x3b, 0x87, 0xce, 0x67, 0x4f, 0x37, 0xed, 0x9d, 0xcd,
0x2e, 0x56, 0x9c, 0xcb, 0x80, 0x0b, 0xfc, 0x32, 0x5b, 0x80, 0xc6, 0xd1, 0xee, 0x0f, 0x9d, 0x83,
0xfd, 0x9d, 0x83, 0x7d, 0x44, 0xad, 0xa4, 0x41, 0x02, 0xab, 0xca, 0x3a, 0xb0, 0xbc, 0xf9, 0xeb,
0x47, 0x4e, 0x46, 0xcb, 0x30, 0xa3, 0x4c, 0xd4, 0xab, 0xb1, 0x1b, 0x70, 0xbd, 0x7b, 0xb4, 0x7a,
0xb4, 0xb3, 0xee, 0xc8, 0x37, 0x8e, 0xc4, 0x26, 0x88, 0x6a, 0xf5, 0xec, 0x22, 0x51, 0xab, 0xc1,
0x96, 0xa0, 0x75, 0xb8, 0xfa, 0xc5, 0xde, 0xe6, 0xfe, 0x91, 0xb3, 0xba, 0xb1, 0x61, 0x63, 0x85,
0xe6, 0x14, 0x54, 0xe0, 0xce, 0x8b, 0x8d, 0xda, 0x3b, 0x3c, 0x44, 0x94, 0x96, 0xfa, 0x10, 0x25,
0x0b, 0x8f, 0x7f, 0xbb, 0x00, 0x4d, 0x0a, 0xbe, 0xa7, 0x1f, 0x6f, 0xe0, 0x21, 0xdb, 0x83, 0xb2,
0xfc, 0x15, 0x10, 0x76, 0x5d, 0x3f, 0x3b, 0x61, 0xfe, 0xee, 0x48, 0x67, 0x79, 0x12, 0x2c, 0x8f,
0xdf, 0xe2, 0xdf, 0xfc, 0xd3, 0xbf, 0xf8, 0x47, 0xf9, 0x06, 0xab, 0x3d, 0x3c, 0x7f, 0xef, 0xe1,
0x29, 0xf7, 0x23, 0xd1, 0xc6, 0x5f, 0x03, 0x48, 0x7e, 0xdb, 0x82, 0xb5, 0xb5, 0x11, 0x71, 0xe2,
0x87, 0x3f, 0x3a, 0x37, 0x32, 0x4a, 0x64, 0xbb, 0x37, 0xb0, 0xdd, 0x45, 0xab, 0x29, 0xda, 0xf5,
0x7c, 0x2f, 0xa6, 0xdf, 0xb9, 0xf8, 0x38, 0x77, 0x9f, 0xf5, 0xa1, 0x6e, 0xfe, 0xea, 0x04, 0x53,
0x4e, 0xf8, 0x8c, 0xdf, 0xcd, 0xe8, 0xdc, 0xcc, 0x2c, 0x53, 0x3c, 0x07, 0xfb, 0xb8, 0x6e, 0xb5,
0x44, 0x1f, 0x63, 0xc4, 0x48, 0x7a, 0x19, 0x10, 0x17, 0x4e, 0x7e, 0x5c, 0x82, 0xbd, 0x62, 0x70,
0xc6, 0xa9, 0x9f, 0xb6, 0xe8, 0xdc, 0x9a, 0x51, 0x2a, 0xfb, 0xba, 0x85, 0x7d, 0xad, 0x58, 0x4c,
0xf4, 0xd5, 0x43, 0x1c, 0xf5, 0xd3, 0x16, 0x1f, 0xe7, 0xee, 0x3f, 0xfe, 0xf3, 0x7b, 0x50, 0xd5,
0xc1, 0x38, 0xec, 0x37, 0xa1, 0x91, 0xca, 0x8e, 0x60, 0x6a, 0x1a, 0x59, 0xc9, 0x14, 0x9d, 0x57,
0xb2, 0x0b, 0x65, 0xc7, 0xaf, 0x62, 0xc7, 0x6d, 0xb6, 0x2c, 0x3a, 0x96, 0xd9, 0x07, 0x0f, 0x31,
0x87, 0x88, 0x1e, 0xf1, 0x78, 0x66, 0xdc, 0x36, 0xd4, 0xd9, 0x2b, 0x93, 0x37, 0x40, 0xaa, 0xb7,
0x5b, 0x33, 0x4a, 0x65, 0x77, 0xaf, 0x60, 0x77, 0xcb, 0x6c, 0xc9, 0xec, 0x4e, 0x85, 0xce, 0x30,
0x8e, 0x0f, 0xe7, 0x98, 0x3f, 0xc5, 0xc0, 0x6e, 0x25, 0xcf, 0x9c, 0x64, 0xfc, 0x44, 0x83, 0x26,
0x91, 0xe9, 0xdf, 0x69, 0xb0, 0xda, 0xd8, 0x15, 0x63, 0xb8, 0x7d, 0xe6, 0x2f, 0x31, 0xb0, 0x63,
0xa8, 0x19, 0xaf, 0x17, 0xb3, 0x1b, 0x33, 0x5f, 0x5a, 0xee, 0x74, 0xb2, 0x8a, 0xb2, 0xa6, 0x62,
0xb6, 0xff, 0x50, 0xc8, 0x9e, 0x3f, 0x86, 0xaa, 0x7e, 0x13, 0x97, 0xad, 0x18, 0x6f, 0x14, 0x9b,
0x6f, 0xf8, 0x76, 0xda, 0xd3, 0x05, 0x59, 0xc4, 0x67, 0xb6, 0x2e, 0x88, 0xef, 0x73, 0xa8, 0x19,
0xef, 0xde, 0xea, 0x09, 0x4c, 0xbf, 0xad, 0xab, 0x27, 0x90, 0xf1, 0x4c, 0xae, 0xb5, 0x80, 0x5d,
0xd4, 0x58, 0x15, 0xe9, 0x3b, 0xbe, 0x0c, 0x22, 0xb6, 0x0b, 0xd7, 0xe5, 0xcd, 0x7a, 0xcc, 0xbf,
0xc9, 0x36, 0x64, 0xfc, 0xfa, 0xc5, 0xa3, 0x1c, 0xfb, 0x04, 0x2a, 0xea, 0x79, 0x63, 0xb6, 0x9c,
0xfd, 0x4c, 0x73, 0x67, 0x65, 0x0a, 0x2e, 0xaf, 0xc1, 0x2f, 0x00, 0x92, 0x47, 0x76, 0x35, 0x93,
0x98, 0x7a, 0xb4, 0x57, 0x53, 0xc0, 0xf4, 0x8b, 0xbc, 0xd6, 0x32, 0x4e, 0xb0, 0xc5, 0x90, 0x49,
0xf8, 0xfc, 0x42, 0xbd, 0x20, 0xf6, 0x13, 0xa8, 0x19, 0xef, 0xec, 0xea, 0xe5, 0x9b, 0x7e, 0xa3,
0x57, 0x2f, 0x5f, 0xc6, 0xb3, 0xbc, 0x56, 0x07, 0x5b, 0x5f, 0xb2, 0xe6, 0x45, 0xeb, 0x91, 0x77,
0xea, 0x0f, 0x09, 0x41, 0x6c, 0xd0, 0x19, 0x34, 0x52, 0x8f, 0xe9, 0xea, 0x13, 0x9a, 0xf5, 0x54,
0xaf, 0x3e, 0xa1, 0x99, 0xef, 0xef, 0x2a, 0x3a, 0xb3, 0x16, 0x44, 0x3f, 0xe7, 0x88, 0x62, 0xf4,
0xf4, 0x23, 0xa8, 0x19, 0x0f, 0xe3, 0xea, 0xb9, 0x4c, 0xbf, 0xc1, 0xab, 0xe7, 0x92, 0xf5, 0x8e,
0xee, 0x12, 0xf6, 0xd1, 0xb4, 0x90, 0x14, 0xf0, 0x7d, 0x26, 0xd1, 0xf6, 0x6f, 0x42, 0x33, 0xfd,
0x56, 0xae, 0x3e, 0xfb, 0x99, 0x8f, 0xee, 0xea, 0xb3, 0x3f, 0xe3, 0x81, 0x5d, 0x49, 0xd2, 0xf7,
0x17, 0x75, 0x27, 0x0f, 0xbf, 0x92, 0x61, 0xc5, 0x5f, 0xb3, 0xcf, 0x04, 0x83, 0x93, 0xcf, 0x83,
0xb1, 0x15, 0x83, 0x6a, 0xcd, 0x47, 0xc4, 0xf4, 0x79, 0x99, 0x7a, 0x49, 0x2c, 0x4d, 0xcc, 0xd8,
0x38, 0xfb, 0x14, 0x16, 0x35, 0x31, 0xeb, 0xf7, 0xbe, 0x22, 0x3d, 0x87, 0xcc, 0x57, 0xc5, 0x3a,
0xad, 0xc9, 0xd2, 0x47, 0x39, 0xba, 0xfe, 0xf0, 0x95, 0x25, 0xe3, 0xfa, 0x33, 0x9f, 0xfc, 0x32,
0xae, 0xbf, 0xd4, 0x63, 0x4c, 0x93, 0xd7, 0x5f, 0xec, 0x89, 0x36, 0x7c, 0x98, 0x9f, 0x7c, 0x7d,
0xeb, 0xd6, 0xac, 0xdc, 0x53, 0x6a, 0xfe, 0xd5, 0xe7, 0xa7, 0xa6, 0xa6, 0x59, 0x91, 0xe2, 0xa6,
0x0f, 0xa5, 0xf3, 0x90, 0xfd, 0x06, 0xd4, 0xcd, 0xc7, 0x3e, 0x99, 0xc9, 0x13, 0x26, 0x7b, 0xba,
0x99, 0x59, 0x96, 0xa6, 0x12, 0x56, 0x37, 0xbb, 0x61, 0x3f, 0x84, 0x65, 0xbd, 0xcc, 0x66, 0xde,
0x61, 0xc4, 0x6e, 0x67, 0x64, 0x23, 0xa6, 0x16, 0xfb, 0xc6, 0xcc, 0x74, 0xc5, 0x47, 0x39, 0x41,
0x7d, 0xe9, 0x57, 0x07, 0x93, 0x9b, 0x27, 0xeb, 0xb1, 0xc5, 0xe4, 0xe6, 0xc9, 0x7c, 0xaa, 0x50,
0x51, 0x1f, 0x5b, 0x4c, 0xad, 0x11, 0x85, 0x55, 0xb1, 0x1f, 0xc1, 0xbc, 0x91, 0x54, 0xd9, 0xbd,
0xf2, 0x7b, 0xfa, 0x24, 0x4d, 0x3f, 0xe9, 0xd3, 0xc9, 0xd2, 0x45, 0xad, 0x15, 0x6c, 0x7f, 0xc1,
0x4a, 0x2d, 0x8e, 0x38, 0x45, 0xeb, 0x50, 0x33, 0x13, 0x36, 0x9f, 0xd3, 0xee, 0x8a, 0x51, 0x64,
0xbe, 0x1e, 0xf3, 0x28, 0xc7, 0x76, 0xa1, 0x35, 0xf9, 0xd8, 0x85, 0xe6, 0x29, 0x59, 0x0f, 0x74,
0x74, 0x26, 0x0a, 0x53, 0x4f, 0x64, 0xb0, 0x43, 0x0a, 0xcc, 0xd5, 0x3f, 0x15, 0x11, 0x84, 0x93,
0xb7, 0x7a, 0xfa, 0x27, 0x24, 0x74, 0x6b, 0x59, 0x3f, 0x1e, 0x72, 0x2f, 0xf7, 0x28, 0xc7, 0x7e,
0x37, 0x07, 0xf5, 0x54, 0x82, 0x79, 0x2a, 0xf4, 0x71, 0x62, 0x9e, 0x6d, 0xb3, 0xcc, 0x9c, 0xa8,
0x65, 0xe3, 0x22, 0xee, 0xde, 0xff, 0x41, 0x6a, 0x93, 0xbe, 0x4a, 0x39, 0x65, 0x1e, 0x4c, 0xfe,
0x96, 0xc4, 0xd7, 0x93, 0x08, 0xe6, 0x4b, 0x4d, 0x5f, 0x3f, 0xca, 0xb1, 0x7f, 0x97, 0x83, 0x66,
0xda, 0x3b, 0xa3, 0xa7, 0x9b, 0xe9, 0x07, 0xd2, 0xa4, 0x34, 0xc3, 0xa5, 0xf3, 0x23, 0x1c, 0xe5,
0xd1, 0x7d, 0x3b, 0x35, 0x4a, 0xf9, 0x5e, 0xe6, 0xcf, 0x37, 0x5a, 0xf6, 0x31, 0xfd, 0x74, 0x93,
0x72, 0x45, 0xb3, 0xe9, 0x9f, 0xfa, 0xd1, 0xe4, 0x67, 0xfe, 0x30, 0x0e, 0x6e, 0xc2, 0x4f, 0xe8,
0x37, 0x13, 0x94, 0x67, 0x53, 0x50, 0xf1, 0xcb, 0xd6, 0xb7, 0xde, 0xc0, 0x39, 0xbd, 0x6a, 0xdd,
0x48, 0xcd, 0x69, 0x52, 0xf0, 0x58, 0xa5, 0xd1, 0xc9, 0xdf, 0xb5, 0x49, 0x6e, 0xce, 0xa9, 0xdf,
0xba, 0x99, 0x3d, 0xc8, 0x21, 0x0d, 0x52, 0xa2, 0xa7, 0x8e, 0xda, 0x4b, 0x36, 0x63, 0xdd, 0xc7,
0xb1, 0xbe, 0x61, 0xdd, 0x9e, 0x39, 0xd6, 0x87, 0xe8, 0x69, 0x11, 0x23, 0x3e, 0x04, 0x48, 0x42,
0x45, 0xd8, 0x44, 0xc0, 0x82, 0x66, 0x40, 0xd3, 0xd1, 0x24, 0xe9, 0xf3, 0xac, 0xe2, 0x1a, 0x44,
0x8b, 0x3f, 0x26, 0x76, 0xaa, 0x43, 0x29, 0x4c, 0xe9, 0x2b, 0x1d, 0xd5, 0x91, 0x92, 0xbe, 0x26,
0xdb, 0x4f, 0x31, 0x53, 0x1d, 0x37, 0xf1, 0x14, 0x1a, 0xbb, 0x41, 0xf0, 0x6c, 0x3c, 0xd2, 0xe1,
0x89, 0x69, 0xf7, 0xe7, 0xb6, 0x1b, 0x9d, 0x75, 0x26, 0x66, 0x61, 0xdd, 0xc1, 0xa6, 0x3a, 0xac,
0x6d, 0x34, 0xf5, 0xf0, 0xab, 0x24, 0x3e, 0xe5, 0x6b, 0xe6, 0xc2, 0x82, 0xe6, 0xd1, 0x49, 0x0c,
0x48, 0xba, 0x99, 0x14, 0x67, 0x9e, 0xec, 0x22, 0xa5, 0x26, 0xa8, 0xd1, 0x3e, 0x8c, 0x54, 0x9b,
0x8f, 0x72, 0xec, 0x10, 0xea, 0x1b, 0xbc, 0x87, 0x89, 0x96, 0xe8, 0x44, 0x5c, 0x4c, 0x39, 0xa4,
0xc8, 0xfb, 0xd8, 0x69, 0xa4, 0x80, 0xe9, 0x7b, 0x6b, 0xe4, 0x5e, 0x85, 0xfc, 0xcb, 0x87, 0x5f,
0x49, 0xf7, 0xe4, 0xd7, 0xea, 0xde, 0x52, 0xee, 0xdb, 0xd4, 0xbd, 0x35, 0xe1, 0xef, 0x4d, 0xdd,
0x5b, 0x53, 0xfe, 0xde, 0xd4, 0x52, 0x2b, 0xf7, 0x31, 0x1b, 0xc0, 0xc2, 0x94, 0x8b, 0x58, 0x5f,
0x59, 0xb3, 0x1c, 0xcb, 0x9d, 0x3b, 0xb3, 0x11, 0xd2, 0xbd, 0xdd, 0x4f, 0xf7, 0xd6, 0x85, 0x06,
0x3d, 0x1e, 0x75, 0xcc, 0x29, 0xe5, 0x62, 0xe2, 0xbd, 0x02, 0x33, 0x9f, 0x63, 0xf2, 0x82, 0xc1,
0xb2, 0xb4, 0x84, 0x83, 0xb9, 0x0e, 0xec, 0xc7, 0x50, 0xfb, 0x94, 0xc7, 0x2a, 0xc7, 0x42, 0xcb,
0xd8, 0x13, 0x49, 0x17, 0x9d, 0x8c, 0x14, 0x8d, 0x34, 0xcd, 0x60, 0x6b, 0x0f, 0x79, 0xff, 0x94,
0x13, 0x73, 0x72, 0xbc, 0xfe, 0xd7, 0xec, 0xd7, 0xb1, 0x71, 0x9d, 0xda, 0xb6, 0x6c, 0x04, 0xd1,
0x9b, 0x8d, 0xcf, 0x4f, 0xc0, 0xb3, 0x5a, 0xf6, 0x83, 0x3e, 0x37, 0x64, 0x3d, 0x1f, 0x6a, 0x46,
0x0a, 0xac, 0x3e, 0x40, 0xd3, 0x29, 0xcf, 0xfa, 0x00, 0x65, 0x64, 0xcc, 0x5a, 0xf7, 0xb0, 0x1f,
0x8b, 0xdd, 0x49, 0xfa, 0xa1, 0x2c, 0xd9, 0xa4, 0xa7, 0x87, 0x5f, 0xb9, 0xc3, 0xf8, 0x6b, 0xf6,
0x39, 0x3e, 0xd1, 0x6a, 0xe6, 0x90, 0x24, 0x4a, 0xc3, 0x64, 0xba, 0x89, 0x5e, 0x2c, 0xa3, 0x28,
0xad, 0x48, 0x50, 0x57, 0x28, 0xc9, 0x7d, 0x00, 0xd0, 0x8d, 0x83, 0xd1, 0x86, 0xcb, 0x87, 0x81,
0x9f, 0xf0, 0xda, 0x24, 0xab, 0x21, 0xe1, 0x5f, 0x46, 0x6a, 0x03, 0xfb, 0xdc, 0xd0, 0xb2, 0x52,
0x69, 0x38, 0x8a, 0xb8, 0x66, 0x26, 0x3e, 0xe8, 0x05, 0xc9, 0x48, 0x7e, 0x78, 0x94, 0x63, 0xab,
0x00, 0x49, 0x8c, 0x80, 0xd6, 0x99, 0xa6, 0xc2, 0x0f, 0x34, 0xdb, 0xcb, 0x08, 0x28, 0x38, 0x84,
0x6a, 0xe2, 0x5c, 0x5d, 0x49, 0x32, 0xfa, 0x53, 0xae, 0x58, 0x7d, 0x83, 0x4f, 0xb9, 0x37, 0xad,
0x16, 0x2e, 0x15, 0xb0, 0x8a, 0x58, 0xaa, 0x13, 0xce, 0x23, 0xe6, 0xc1, 0x22, 0x0d, 0x50, 0x8b,
0x4b, 0x18, 0x8d, 0xaf, 0x5f, 0xe2, 0x9d, 0xf6, 0x34, 0xea, 0xd3, 0x9c, 0xe9, 0x2f, 0x4b, 0x99,
0x7e, 0x04, 0xb5, 0x52, 0x26, 0x80, 0x60, 0xcd, 0x43, 0x58, 0x98, 0x72, 0xc9, 0xe8, 0x23, 0x3d,
0xcb, 0xc7, 0xa6, 0x8f, 0xf4, 0x4c, 0x6f, 0x8e, 0x75, 0x1d, 0xbb, 0x9c, 0xb7, 0x00, 0x55, 0xbd,
0x0b, 0x2f, 0xee, 0x9d, 0x89, 0xee, 0xfe, 0x75, 0x0e, 0x16, 0x33, 0x9c, 0x2e, 0xec, 0x35, 0x65,
0x35, 0x98, 0xe9, 0x90, 0xe9, 0x64, 0x1a, 0xe7, 0xad, 0x2e, 0xf6, 0xb3, 0xc7, 0x9e, 0xa4, 0x2e,
0x36, 0xb2, 0x8d, 0xcb, 0x93, 0xf9, 0x5c, 0xa1, 0x22, 0x53, 0xa2, 0xf8, 0x12, 0x56, 0x68, 0x20,
0xab, 0x83, 0xc1, 0x84, 0xe3, 0xe0, 0xd5, 0xa9, 0xdf, 0x72, 0x4d, 0x39, 0x43, 0x3a, 0xb3, 0x7f,
0xeb, 0x75, 0x86, 0x38, 0x4d, 0x43, 0x65, 0x63, 0x68, 0x4d, 0x1a, 0xe4, 0xd9, 0xec, 0xb6, 0x3a,
0xb7, 0x53, 0xfa, 0x6f, 0x86, 0x11, 0xff, 0x3b, 0xd8, 0xd9, 0x6d, 0xab, 0x93, 0xb5, 0x2e, 0xa4,
0x12, 0x8b, 0xfd, 0xf8, 0x1b, 0xda, 0x7b, 0x30, 0x31, 0x4f, 0xd5, 0xc1, 0x2c, 0x5f, 0x87, 0xd6,
0xc0, 0xb3, 0x9d, 0x0f, 0x6f, 0x62, 0xf7, 0x77, 0xac, 0x9b, 0x59, 0xdd, 0x87, 0x54, 0x85, 0x74,
0xf1, 0x95, 0xc9, 0x73, 0xad, 0x46, 0x70, 0x27, 0x6b, 0xbf, 0x67, 0xea, 0x42, 0x13, 0x6b, 0x7d,
0x0d, 0x65, 0xbb, 0xba, 0xe9, 0x2d, 0xd0, 0xc7, 0x27, 0xc3, 0x2d, 0xa1, 0x8f, 0x4f, 0x96, 0x7b,
0x21, 0x2d, 0xd7, 0x28, 0xc7, 0xc2, 0xc7, 0xb9, 0xfb, 0x6b, 0x77, 0x7f, 0xf4, 0x9d, 0x53, 0x2f,
0x3e, 0x1b, 0x1f, 0x3f, 0xe8, 0x05, 0xc3, 0x87, 0x03, 0x65, 0x6d, 0x94, 0x29, 0x6b, 0x0f, 0x07,
0x7e, 0xff, 0x21, 0x36, 0x7b, 0x3c, 0x87, 0x3f, 0x3e, 0xfd, 0xdd, 0xff, 0x17, 0x00, 0x00, 0xff,
0xff, 0xa6, 0xaa, 0x20, 0x1e, 0xae, 0x7a, 0x00, 0x00,
}
// Reference imports to suppress errors if they are not otherwise used.

@ -41,7 +41,7 @@ service WalletUnlocker {
method should be used to commit the newly generated seed, and create the
wallet.
*/
rpc GenSeed(GenSeedRequest) returns (GenSeedResponse) {
rpc GenSeed (GenSeedRequest) returns (GenSeedResponse) {
option (google.api.http) = {
get: "/v1/genseed"
};
@ -61,7 +61,7 @@ service WalletUnlocker {
seed, then present it to the user. Once it has been verified by the user,
the seed can be fed into this RPC in order to commit the new wallet.
*/
rpc InitWallet(InitWalletRequest) returns (InitWalletResponse) {
rpc InitWallet (InitWalletRequest) returns (InitWalletResponse) {
option (google.api.http) = {
post: "/v1/initwallet"
body: "*"
@ -72,7 +72,7 @@ service WalletUnlocker {
UnlockWallet is used at startup of lnd to provide a password to unlock
the wallet database.
*/
rpc UnlockWallet(UnlockWalletRequest) returns (UnlockWalletResponse) {
rpc UnlockWallet (UnlockWalletRequest) returns (UnlockWalletResponse) {
option (google.api.http) = {
post: "/v1/unlockwallet"
body: "*"
@ -195,7 +195,8 @@ message UnlockWalletRequest {
*/
ChanBackupSnapshot channel_backups = 3;
}
message UnlockWalletResponse {}
message UnlockWalletResponse {
}
message ChangePasswordRequest {
/**
@ -210,7 +211,8 @@ message ChangePasswordRequest {
*/
bytes new_password = 2;
}
message ChangePasswordResponse {}
message ChangePasswordResponse {
}
service Lightning {
/** lncli: `walletbalance`
@ -418,7 +420,6 @@ service Lightning {
};
}
/**
OpenChannelSync is a synchronous version of the OpenChannel RPC call. This
call is meant to be consumed by clients to the REST proxy. As with all
@ -454,7 +455,7 @@ service Lightning {
Alternatively, this can be used to interactively drive PSBT signing for
funding for partially complete funding transactions.
*/
rpc FundingStateStep(FundingTransitionMsg) returns (FundingStateStepResp);
rpc FundingStateStep (FundingTransitionMsg) returns (FundingStateStepResp);
/**
ChannelAcceptor dispatches a bi-directional streaming RPC in which
@ -492,7 +493,6 @@ service Lightning {
};
}
/** lncli: `sendpayment`
SendPayment dispatches a bi-directional streaming RPC for sending payments
through the Lightning Network. A single RPC invocation creates a persistent
@ -520,7 +520,7 @@ service Lightning {
allows users to specify a full route manually. This can be used for things
like rebalancing, and atomic swaps.
*/
rpc SendToRoute(stream SendToRouteRequest) returns (stream SendResponse);
rpc SendToRoute (stream SendToRouteRequest) returns (stream SendResponse);
/**
SendToRouteSync is a synchronous version of SendToRoute. It Will block
@ -660,7 +660,7 @@ service Lightning {
send an HTLC, also including the necessary information that should be
present within the Sphinx packet encapsulated within the HTLC.
*/
rpc QueryRoutes(QueryRoutesRequest) returns (QueryRoutesResponse) {
rpc QueryRoutes (QueryRoutesRequest) returns (QueryRoutesResponse) {
option (google.api.http) = {
get: "/v1/graph/routes/{pub_key}/{amt}"
};
@ -680,7 +680,7 @@ service Lightning {
StopDaemon will send a shutdown request to the interrupt handler, triggering
a graceful shutdown of the daemon.
*/
rpc StopDaemon(StopRequest) returns (StopResponse);
rpc StopDaemon (StopRequest) returns (StopResponse);
/**
SubscribeChannelGraph launches a streaming RPC that allows the caller to
@ -690,7 +690,7 @@ service Lightning {
channels being advertised, updates in the routing policy for a directional
channel edge, and when channels are closed on-chain.
*/
rpc SubscribeChannelGraph(GraphTopologySubscription) returns (stream GraphTopologyUpdate);
rpc SubscribeChannelGraph (GraphTopologySubscription) returns (stream GraphTopologyUpdate);
/** lncli: `debuglevel`
DebugLevel allows a caller to programmatically set the logging verbosity of
@ -704,7 +704,7 @@ service Lightning {
FeeReport allows the caller to obtain a report detailing the current fee
schedule enforced by the node globally for each channel.
*/
rpc FeeReport(FeeReportRequest) returns (FeeReportResponse) {
rpc FeeReport (FeeReportRequest) returns (FeeReportResponse) {
option (google.api.http) = {
get: "/v1/fees"
};
@ -714,7 +714,7 @@ service Lightning {
UpdateChannelPolicy allows the caller to update the fee schedule and
channel policies for all channels globally, or a particular channel.
*/
rpc UpdateChannelPolicy(PolicyUpdateRequest) returns (PolicyUpdateResponse) {
rpc UpdateChannelPolicy (PolicyUpdateRequest) returns (PolicyUpdateResponse) {
option (google.api.http) = {
post: "/v1/chanpolicy"
body: "*"
@ -733,7 +733,7 @@ service Lightning {
the index offset of the last entry. The index offset can be provided to the
request to allow the caller to skip a series of records.
*/
rpc ForwardingHistory(ForwardingHistoryRequest) returns (ForwardingHistoryResponse) {
rpc ForwardingHistory (ForwardingHistoryRequest) returns (ForwardingHistoryResponse) {
option (google.api.http) = {
post: "/v1/switch"
body: "*"
@ -748,7 +748,7 @@ service Lightning {
method once lnd is running, or via the InitWallet and UnlockWallet methods
from the WalletUnlocker service.
*/
rpc ExportChannelBackup(ExportChannelBackupRequest) returns (ChannelBackup) {
rpc ExportChannelBackup (ExportChannelBackupRequest) returns (ChannelBackup) {
option (google.api.http) = {
get: "/v1/channels/backup/{chan_point.funding_txid_str}/{chan_point.output_index}"
};
@ -761,7 +761,7 @@ service Lightning {
as well, which contains a single encrypted blob containing the backups of
each channel.
*/
rpc ExportAllChannelBackups(ChanBackupExportRequest) returns (ChanBackupSnapshot) {
rpc ExportAllChannelBackups (ChanBackupExportRequest) returns (ChanBackupSnapshot) {
option (google.api.http) = {
get: "/v1/channels/backup"
};
@ -772,7 +772,7 @@ service Lightning {
snapshot. This method will accept either a packed Single or a packed Multi.
Specifying both will result in an error.
*/
rpc VerifyChanBackup(ChanBackupSnapshot) returns (VerifyChanBackupResponse) {
rpc VerifyChanBackup (ChanBackupSnapshot) returns (VerifyChanBackupResponse) {
option (google.api.http) = {
post: "/v1/channels/backup/verify"
body: "*"
@ -785,7 +785,7 @@ service Lightning {
remaining within the channel. If we are able to unpack the backup, then the
new channel will be shown under listchannels, as well as pending channels.
*/
rpc RestoreChannelBackups(RestoreChanBackupRequest) returns (RestoreBackupResponse) {
rpc RestoreChannelBackups (RestoreChanBackupRequest) returns (RestoreBackupResponse) {
option (google.api.http) = {
post: "/v1/channels/backup/restore"
body: "*"
@ -801,7 +801,7 @@ service Lightning {
ups, but the updated set of encrypted multi-chan backups with the closed
channel(s) removed.
*/
rpc SubscribeChannelBackups(ChannelBackupSubscription) returns (stream ChanBackupSnapshot) {
rpc SubscribeChannelBackups (ChannelBackupSubscription) returns (stream ChanBackupSnapshot) {
};
/** lncli: `bakemacaroon`
@ -809,7 +809,7 @@ service Lightning {
write permissions. No first-party caveats are added since this can be done
offline.
*/
rpc BakeMacaroon(BakeMacaroonRequest) returns (BakeMacaroonResponse) {
rpc BakeMacaroon (BakeMacaroonRequest) returns (BakeMacaroonResponse) {
option (google.api.http) = {
post: "/v1/macaroon"
body: "*"
@ -819,57 +819,57 @@ service Lightning {
message Utxo {
/// The type of address
AddressType type = 1 [json_name = "address_type"];
AddressType type = 1;
/// The address
string address = 2 [json_name = "address"];
string address = 2;
/// The value of the unspent coin in satoshis
int64 amount_sat = 3 [json_name = "amount_sat"];
int64 amount_sat = 3;
/// The pkscript in hex
string pk_script = 4 [json_name = "pk_script"];
string pk_script = 4;
/// The outpoint in format txid:n
OutPoint outpoint = 5 [json_name = "outpoint"];
OutPoint outpoint = 5;
/// The number of confirmations for the Utxo
int64 confirmations = 6 [json_name = "confirmations"];
int64 confirmations = 6;
}
message Transaction {
/// The transaction hash
string tx_hash = 1 [ json_name = "tx_hash" ];
string tx_hash = 1;
/// The transaction amount, denominated in satoshis
int64 amount = 2 [ json_name = "amount" ];
int64 amount = 2;
/// The number of confirmations
int32 num_confirmations = 3 [ json_name = "num_confirmations" ];
int32 num_confirmations = 3;
/// The hash of the block this transaction was included in
string block_hash = 4 [ json_name = "block_hash" ];
string block_hash = 4;
/// The height of the block this transaction was included in
int32 block_height = 5 [ json_name = "block_height" ];
int32 block_height = 5;
/// Timestamp of this transaction
int64 time_stamp = 6 [ json_name = "time_stamp" ];
int64 time_stamp = 6;
/// Fees paid for this transaction
int64 total_fees = 7 [ json_name = "total_fees" ];
int64 total_fees = 7;
/// Addresses that received funds for this transaction
repeated string dest_addresses = 8 [ json_name = "dest_addresses" ];
repeated string dest_addresses = 8;
/// The raw transaction hex.
string raw_tx_hex = 9 [ json_name = "raw_tx_hex" ];
string raw_tx_hex = 9;
}
message GetTransactionsRequest {
}
message TransactionDetails {
/// The list of transactions relevant to the wallet.
repeated Transaction transactions = 1 [json_name = "transactions"];
repeated Transaction transactions = 1;
}
message FeeLimit {
@ -994,10 +994,10 @@ message SendRequest {
}
message SendResponse {
string payment_error = 1 [json_name = "payment_error"];
bytes payment_preimage = 2 [json_name = "payment_preimage"];
Route payment_route = 3 [json_name = "payment_route"];
bytes payment_hash = 4 [json_name = "payment_hash"];
string payment_error = 1;
bytes payment_preimage = 2;
Route payment_route = 3;
bytes payment_hash = 4;
}
message SendToRouteRequest {
@ -1077,36 +1077,36 @@ message ChannelPoint {
Txid of the funding transaction. When using REST, this field must be
encoded as base64.
*/
bytes funding_txid_bytes = 1 [json_name = "funding_txid_bytes"];
bytes funding_txid_bytes = 1;
/**
Hex-encoded string representing the byte-reversed hash of the funding
transaction.
*/
string funding_txid_str = 2 [json_name = "funding_txid_str"];
string funding_txid_str = 2;
}
/// The index of the output of the funding transaction
uint32 output_index = 3 [json_name = "output_index"];
uint32 output_index = 3;
}
message OutPoint {
/// Raw bytes representing the transaction id.
bytes txid_bytes = 1 [json_name = "txid_bytes"];
bytes txid_bytes = 1;
/// Reversed, hex-encoded string representing the transaction id.
string txid_str = 2 [json_name = "txid_str"];
string txid_str = 2;
/// The index of the output on the transaction.
uint32 output_index = 3 [json_name = "output_index"];
uint32 output_index = 3;
}
message LightningAddress {
/// The identity pubkey of the Lightning node
string pubkey = 1 [json_name = "pubkey"];
string pubkey = 1;
/// The network location of the lightning node, e.g. `69.69.69.69:1337` or `localhost:10011`
string host = 2 [json_name = "host"];
string host = 2;
}
message EstimateFeeRequest {
@ -1119,10 +1119,10 @@ message EstimateFeeRequest {
message EstimateFeeResponse {
/// The total fee in satoshis.
int64 fee_sat = 1 [json_name = "fee_sat"];
int64 fee_sat = 1;
/// The fee rate in satoshi/byte.
int64 feerate_sat_per_byte = 2 [json_name = "feerate_sat_per_byte"];
int64 feerate_sat_per_byte = 2;
}
message SendManyRequest {
@ -1137,7 +1137,7 @@ message SendManyRequest {
}
message SendManyResponse {
/// The id of the transaction
string txid = 1 [json_name = "txid"];
string txid = 1;
}
message SendCoinsRequest {
@ -1158,11 +1158,11 @@ message SendCoinsRequest {
send all the coins under control of the internal wallet to the specified
address.
*/
bool send_all = 6;
bool send_all = 6;
}
message SendCoinsResponse {
/// The transaction ID of the transaction
string txid = 1 [json_name = "txid"];
string txid = 1;
}
message ListUnspentRequest {
@ -1174,7 +1174,7 @@ message ListUnspentRequest {
}
message ListUnspentResponse {
/// A list of utxos
repeated Utxo utxos = 1 [json_name = "utxos"];
repeated Utxo utxos = 1;
}
/**
@ -1184,10 +1184,10 @@ message ListUnspentResponse {
- `np2wkh`: Pay to nested witness key hash (`NESTED_PUBKEY_HASH` = 1)
*/
enum AddressType {
WITNESS_PUBKEY_HASH = 0;
NESTED_PUBKEY_HASH = 1;
UNUSED_WITNESS_PUBKEY_HASH = 2;
UNUSED_NESTED_PUBKEY_HASH = 3;
WITNESS_PUBKEY_HASH = 0;
NESTED_PUBKEY_HASH = 1;
UNUSED_WITNESS_PUBKEY_HASH = 2;
UNUSED_NESTED_PUBKEY_HASH = 3;
}
message NewAddressRequest {
@ -1196,7 +1196,7 @@ message NewAddressRequest {
}
message NewAddressResponse {
/// The newly generated wallet address
string address = 1 [json_name = "address"];
string address = 1;
}
message SignMessageRequest {
@ -1204,11 +1204,11 @@ message SignMessageRequest {
The message to be signed. When using REST, this field must be encoded as
base64.
*/
bytes msg = 1 [ json_name = "msg" ];
bytes msg = 1;
}
message SignMessageResponse {
/// The signature for the given message
string signature = 1 [ json_name = "signature" ];
string signature = 1;
}
message VerifyMessageRequest {
@ -1216,17 +1216,17 @@ message VerifyMessageRequest {
The message over which the signature is to be verified. When using REST,
this field must be encoded as base64.
*/
bytes msg = 1 [ json_name = "msg" ];
bytes msg = 1;
/// The signature to be verified over the given message
string signature = 2 [ json_name = "signature" ];
string signature = 2;
}
message VerifyMessageResponse {
/// Whether the signature was valid over the given message
bool valid = 1 [ json_name = "valid" ];
bool valid = 1;
/// The pubkey recovered from the signature
string pubkey = 2 [ json_name = "pubkey" ];
string pubkey = 2;
}
message ConnectPeerRequest {
@ -1242,47 +1242,47 @@ message ConnectPeerResponse {
message DisconnectPeerRequest {
/// The pubkey of the node to disconnect from
string pub_key = 1 [json_name = "pub_key"];
string pub_key = 1;
}
message DisconnectPeerResponse {
}
message HTLC {
bool incoming = 1 [json_name = "incoming"];
int64 amount = 2 [json_name = "amount"];
bytes hash_lock = 3 [json_name = "hash_lock"];
uint32 expiration_height = 4 [json_name = "expiration_height"];
bool incoming = 1;
int64 amount = 2;
bytes hash_lock = 3;
uint32 expiration_height = 4;
}
message Channel {
/// Whether this channel is active or not
bool active = 1 [json_name = "active"];
bool active = 1;
/// The identity pubkey of the remote node
string remote_pubkey = 2 [json_name = "remote_pubkey"];
string remote_pubkey = 2;
/**
The outpoint (txid:index) of the funding transaction. With this value, Bob
will be able to generate a signature for Alice's version of the commitment
transaction.
*/
string channel_point = 3 [json_name = "channel_point"];
string channel_point = 3;
/**
The unique channel ID for the channel. The first 3 bytes are the block
height, the next 3 the index within the block, and the last 2 bytes are the
output index for the channel.
*/
uint64 chan_id = 4 [json_name = "chan_id", jstype = JS_STRING];
uint64 chan_id = 4 [jstype = JS_STRING];
/// The total amount of funds held in this channel
int64 capacity = 5 [json_name = "capacity"];
int64 capacity = 5;
/// This node's current balance in this channel
int64 local_balance = 6 [json_name = "local_balance"];
int64 local_balance = 6;
/// The counterparty's current balance in this channel
int64 remote_balance = 7 [json_name = "remote_balance"];
int64 remote_balance = 7;
/**
The amount calculated to be paid in fees for the current set of commitment
@ -1290,63 +1290,63 @@ message Channel {
allow the fee amount to be removed and recalculated with each channel state
update, including updates that happen after a system restart.
*/
int64 commit_fee = 8 [json_name = "commit_fee"];
int64 commit_fee = 8;
/// The weight of the commitment transaction
int64 commit_weight = 9 [json_name = "commit_weight"];
int64 commit_weight = 9;
/**
The required number of satoshis per kilo-weight that the requester will pay
at all times, for both the funding transaction and commitment transaction.
This value can later be updated once the channel is open.
*/
int64 fee_per_kw = 10 [json_name = "fee_per_kw"];
int64 fee_per_kw = 10;
/// The unsettled balance in this channel
int64 unsettled_balance = 11 [json_name = "unsettled_balance"];
int64 unsettled_balance = 11;
/**
The total number of satoshis we've sent within this channel.
*/
int64 total_satoshis_sent = 12 [json_name = "total_satoshis_sent"];
int64 total_satoshis_sent = 12;
/**
The total number of satoshis we've received within this channel.
*/
int64 total_satoshis_received = 13 [json_name = "total_satoshis_received"];
int64 total_satoshis_received = 13;
/**
The total number of updates conducted within this channel.
*/
uint64 num_updates = 14 [json_name = "num_updates"];
uint64 num_updates = 14;
/**
The list of active, uncleared HTLCs currently pending within the channel.
*/
repeated HTLC pending_htlcs = 15 [json_name = "pending_htlcs"];
repeated HTLC pending_htlcs = 15;
/**
The CSV delay expressed in relative blocks. If the channel is force closed,
we will need to wait for this many blocks before we can regain our funds.
*/
uint32 csv_delay = 16 [json_name = "csv_delay"];
uint32 csv_delay = 16;
/// Whether this channel is advertised to the network or not.
bool private = 17 [json_name = "private"];
bool private = 17;
/// True if we were the ones that created the channel.
bool initiator = 18 [json_name = "initiator"];
bool initiator = 18;
/// A set of flags showing the current state of the channel.
string chan_status_flags = 19 [json_name = "chan_status_flags"];
string chan_status_flags = 19;
/// The minimum satoshis this node is required to reserve in its balance.
int64 local_chan_reserve_sat = 20 [json_name = "local_chan_reserve_sat"];
int64 local_chan_reserve_sat = 20;
/**
The minimum satoshis the other node is required to reserve in its balance.
*/
int64 remote_chan_reserve_sat = 21 [json_name = "remote_chan_reserve_sat"];
int64 remote_chan_reserve_sat = 21;
/**
If true, then this channel uses the modern commitment format where the key
@ -1354,20 +1354,20 @@ message Channel {
back up and recovery easier as when the channel is closed, the funds go
directly to that key.
*/
bool static_remote_key = 22 [json_name = "static_remote_key"];
bool static_remote_key = 22;
/**
The number of seconds that the channel has been monitored by the channel
scoring system. Scores are currently not persisted, so this value may be
less than the lifetime of the channel [EXPERIMENTAL].
*/
int64 lifetime = 23 [json_name = "lifetime"];
int64 lifetime = 23;
/**
The number of seconds that the remote peer has been observed as being online
by the channel scoring system over the lifetime of the channel [EXPERIMENTAL].
*/
int64 uptime = 24 [json_name = "uptime"];
int64 uptime = 24;
/**
Close address is the address that we will enforce payout to on cooperative
@ -1376,7 +1376,7 @@ message Channel {
request. If this value is not set, you can still choose a payout address by
cooperatively closing with the delivery_address field set.
*/
string close_address = 25 [json_name ="close_address"];
string close_address = 25;
}
@ -1394,36 +1394,36 @@ message ListChannelsRequest {
}
message ListChannelsResponse {
/// The list of active channels
repeated Channel channels = 11 [json_name = "channels"];
repeated Channel channels = 11;
}
message ChannelCloseSummary {
/// The outpoint (txid:index) of the funding transaction.
string channel_point = 1 [json_name = "channel_point"];
string channel_point = 1;
/// The unique channel ID for the channel.
uint64 chan_id = 2 [json_name = "chan_id", jstype = JS_STRING];
uint64 chan_id = 2 [jstype = JS_STRING];
/// The hash of the genesis block that this channel resides within.
string chain_hash = 3 [json_name = "chain_hash"];
string chain_hash = 3;
/// The txid of the transaction which ultimately closed this channel.
string closing_tx_hash = 4 [json_name = "closing_tx_hash"];
string closing_tx_hash = 4;
/// Public key of the remote peer that we formerly had a channel with.
string remote_pubkey = 5 [json_name = "remote_pubkey"];
string remote_pubkey = 5;
/// Total capacity of the channel.
int64 capacity = 6 [json_name = "capacity"];
int64 capacity = 6;
/// Height at which the funding transaction was spent.
uint32 close_height = 7 [json_name = "close_height"];
uint32 close_height = 7;
/// Settled balance at the time of channel closure
int64 settled_balance = 8 [json_name = "settled_balance"];
int64 settled_balance = 8;
/// The sum of all the time-locked outputs at the time of channel closure
int64 time_locked_balance = 9 [json_name = "time_locked_balance"];
int64 time_locked_balance = 9;
enum ClosureType {
COOPERATIVE_CLOSE = 0;
@ -1435,7 +1435,7 @@ message ChannelCloseSummary {
}
/// Details on how the channel was closed.
ClosureType close_type = 10 [json_name = "close_type"];
ClosureType close_type = 10;
enum Initiator {
UNKNOWN = 0;
@ -1449,7 +1449,7 @@ message ChannelCloseSummary {
this value may be unknown if the channel was closed before we migrated to
store open channel information after close.
*/
Initiator open_initiator = 11 [json_name = "open_initiator"];
Initiator open_initiator = 11;
/**
Close initiator indicates which party initiated the close. This value will
@ -1458,7 +1458,7 @@ message ChannelCloseSummary {
initiated a close, and it is possible for both to initiate cooperative or
force closes, although only one party's close will be confirmed on chain.
*/
Initiator close_initiator = 12 [json_name = "close_initiator"];
Initiator close_initiator = 12;
}
message ClosedChannelsRequest {
@ -1470,34 +1470,34 @@ message ClosedChannelsRequest {
bool abandoned = 6;
}
message ClosedChannelsResponse {
repeated ChannelCloseSummary channels = 1 [json_name = "channels"];
message ClosedChannelsResponse {
repeated ChannelCloseSummary channels = 1;
}
message Peer {
/// The identity pubkey of the peer
string pub_key = 1 [json_name = "pub_key"];
string pub_key = 1;
/// Network address of the peer; eg `127.0.0.1:10011`
string address = 3 [json_name = "address"];
string address = 3;
/// Bytes of data transmitted to this peer
uint64 bytes_sent = 4 [json_name = "bytes_sent"];
uint64 bytes_sent = 4;
/// Bytes of data transmitted from this peer
uint64 bytes_recv = 5 [json_name = "bytes_recv"];
uint64 bytes_recv = 5;
/// Satoshis sent to this peer
int64 sat_sent = 6 [json_name = "sat_sent"];
int64 sat_sent = 6;
/// Satoshis received from this peer
int64 sat_recv = 7 [json_name = "sat_recv"];
int64 sat_recv = 7;
/// A channel is inbound if the counterparty initiated the channel
bool inbound = 8 [json_name = "inbound"];
bool inbound = 8;
/// Ping time to this peer
int64 ping_time = 9 [json_name = "ping_time"];
int64 ping_time = 9;
enum SyncType {
/**
@ -1517,17 +1517,17 @@ message Peer {
}
// The type of sync we are currently performing with this peer.
SyncType sync_type = 10 [json_name = "sync_type"];
SyncType sync_type = 10;
/// Features advertised by the remote peer in their init message.
map<uint32, Feature> features = 11 [json_name = "features"];
map<uint32, Feature> features = 11;
}
message ListPeersRequest {
}
message ListPeersResponse {
/// The list of currently connected peers
repeated Peer peers = 1 [json_name = "peers"];
repeated Peer peers = 1;
}
message PeerEventSubscription {
@ -1535,14 +1535,14 @@ message PeerEventSubscription {
message PeerEvent {
/// The identity pubkey of the peer.
string pub_key = 1 [json_name = "pub_key"];
string pub_key = 1;
enum EventType {
PEER_ONLINE = 0;
PEER_OFFLINE = 1;
}
EventType type = 2 [ json_name = "type" ];
EventType type = 2;
}
message GetInfoRequest {
@ -1550,71 +1550,71 @@ message GetInfoRequest {
message GetInfoResponse {
/// The version of the LND software that the node is running.
string version = 14 [ json_name = "version" ];
string version = 14;
/// The identity pubkey of the current node.
string identity_pubkey = 1 [json_name = "identity_pubkey"];
string identity_pubkey = 1;
/// If applicable, the alias of the current node, e.g. "bob"
string alias = 2 [json_name = "alias"];
string alias = 2;
/// The color of the current node in hex code format
string color = 17 [json_name = "color"];
string color = 17;
/// Number of pending channels
uint32 num_pending_channels = 3 [json_name = "num_pending_channels"];
uint32 num_pending_channels = 3;
/// Number of active channels
uint32 num_active_channels = 4 [json_name = "num_active_channels"];
uint32 num_active_channels = 4;
/// Number of inactive channels
uint32 num_inactive_channels = 15 [json_name = "num_inactive_channels"];
uint32 num_inactive_channels = 15;
/// Number of peers
uint32 num_peers = 5 [json_name = "num_peers"];
uint32 num_peers = 5;
/// The node's current view of the height of the best block
uint32 block_height = 6 [json_name = "block_height"];
uint32 block_height = 6;
/// The node's current view of the hash of the best block
string block_hash = 8 [json_name = "block_hash"];
string block_hash = 8;
/// Timestamp of the block best known to the wallet
int64 best_header_timestamp = 13 [ json_name = "best_header_timestamp" ];
int64 best_header_timestamp = 13;
/// Whether the wallet's view is synced to the main chain
bool synced_to_chain = 9 [json_name = "synced_to_chain"];
bool synced_to_chain = 9;
// Whether we consider ourselves synced with the public channel graph.
bool synced_to_graph = 18 [json_name = "synced_to_graph"];
bool synced_to_graph = 18;
/**
Whether the current node is connected to testnet. This field is
deprecated and the network field should be used instead
**/
bool testnet = 10 [json_name = "testnet", deprecated = true];
bool testnet = 10 [deprecated = true];
reserved 11;
/// A list of active chains the node is connected to
repeated Chain chains = 16 [json_name = "chains"];
repeated Chain chains = 16;
/// The URIs of the current node.
repeated string uris = 12 [json_name = "uris"];
repeated string uris = 12;
/*
Features that our node has advertised in our init message, node
announcements and invoices.
*/
map<uint32, Feature> features = 19 [json_name = "features"];
map<uint32, Feature> features = 19;
}
message Chain {
/// The blockchain the node is on (eg bitcoin, litecoin)
string chain = 1 [json_name = "chain"];
string chain = 1;
/// The network the node is on (eg regtest, testnet, mainnet)
string network = 2 [json_name = "network"];
string network = 2;
}
message ConfirmationUpdate {
@ -1625,13 +1625,13 @@ message ConfirmationUpdate {
}
message ChannelOpenUpdate {
ChannelPoint channel_point = 1 [json_name = "channel_point"];
ChannelPoint channel_point = 1;
}
message ChannelCloseUpdate {
bytes closing_txid = 1 [json_name = "closing_txid"];
bytes closing_txid = 1;
bool success = 2 [json_name = "success"];
bool success = 2;
}
message CloseChannelRequest {
@ -1657,19 +1657,19 @@ message CloseChannelRequest {
is set, the request to close will fail because the channel must pay out
to the upfront shutdown addresss.
*/
string delivery_address = 5 [json_name = "delivery_address"];
string delivery_address = 5;
}
message CloseStatusUpdate {
oneof update {
PendingUpdate close_pending = 1 [json_name = "close_pending"];
ChannelCloseUpdate chan_close = 3 [json_name = "chan_close"];
PendingUpdate close_pending = 1;
ChannelCloseUpdate chan_close = 3;
}
}
message PendingUpdate {
bytes txid = 1 [json_name = "txid"];
uint32 output_index = 2 [json_name = "output_index"];
bytes txid = 1;
uint32 output_index = 2;
}
message OpenChannelRequest {
@ -1677,19 +1677,19 @@ message OpenChannelRequest {
The pubkey of the node to open a channel with. When using REST, this field
must be encoded as base64.
*/
bytes node_pubkey = 2 [json_name = "node_pubkey"];
bytes node_pubkey = 2;
/**
The hex encoded pubkey of the node to open a channel with. Deprecated now
that the REST gateway supports base64 encoding of bytes fields.
*/
string node_pubkey_string = 3 [json_name = "node_pubkey_string", deprecated = true];
string node_pubkey_string = 3 [deprecated = true];
/// The number of satoshis the wallet should commit to the channel
int64 local_funding_amount = 4 [json_name = "local_funding_amount"];
int64 local_funding_amount = 4;
/// The number of satoshis to push to the remote side as part of the initial commitment state
int64 push_sat = 5 [json_name = "push_sat"];
int64 push_sat = 5;
/// The target number of blocks that the funding transaction should be confirmed by.
int32 target_conf = 6;
@ -1698,19 +1698,19 @@ message OpenChannelRequest {
int64 sat_per_byte = 7;
/// Whether this channel should be private, not announced to the greater network.
bool private = 8 [json_name = "private"];
bool private = 8;
/// The minimum value in millisatoshi we will require for incoming HTLCs on the channel.
int64 min_htlc_msat = 9 [json_name = "min_htlc_msat"];
int64 min_htlc_msat = 9;
/// The delay we require on the remote's commitment transaction. If this is not set, it will be scaled automatically with the channel size.
uint32 remote_csv_delay = 10 [json_name = "remote_csv_delay"];
uint32 remote_csv_delay = 10;
/// The minimum number of confirmations each one of your outputs used for the funding transaction must satisfy.
int32 min_confs = 11 [json_name = "min_confs"];
int32 min_confs = 11;
/// Whether unconfirmed outputs should be used as inputs for the funding transaction.
bool spend_unconfirmed = 12 [json_name = "spend_unconfirmed"];
bool spend_unconfirmed = 12;
/*
Close address is an optional address which specifies the address to which
@ -1722,7 +1722,7 @@ message OpenChannelRequest {
Note: If this value is set on channel creation, you will *not* be able to
cooperatively close out to a different address.
*/
string close_address = 13 [json_name = "close_address"];
string close_address = 13;
/**
Funding shims are an optional argument that allow the caller to intercept
@ -1731,19 +1731,19 @@ message OpenChannelRequest {
that is generated by the wallet as normal, or signal that signing will be
carried out in an interactive manner (PSBT based).
*/
FundingShim funding_shim = 14 [json_name = "funding_shim"];
FundingShim funding_shim = 14;
}
message OpenStatusUpdate {
oneof update {
PendingUpdate chan_pending = 1 [json_name = "chan_pending"];
ChannelOpenUpdate chan_open = 3 [json_name = "chan_open"];
}
PendingUpdate chan_pending = 1;
ChannelOpenUpdate chan_open = 3;
}
/**
The pending channel ID of the created channel. This value may be used to
further the funding flow manually via the FundingStateStep method.
*/
bytes pending_chan_id = 4 [json_name = "pending_chan_id"];
bytes pending_chan_id = 4;
}
message KeyLocator {
@ -1755,15 +1755,15 @@ message KeyLocator {
}
message KeyDescriptor {
/**
The raw bytes of the key being identified.
*/
bytes raw_key_bytes = 1;
/**
The raw bytes of the key being identified.
*/
bytes raw_key_bytes = 1;
/**
The key locator that identifies which key to use for signing.
*/
KeyLocator key_loc = 2;
/**
The key locator that identifies which key to use for signing.
*/
KeyLocator key_loc = 2;
}
message ChanPointShim {
@ -1822,55 +1822,56 @@ message FundingStateStepResp {
message PendingHTLC {
/// The direction within the channel that the htlc was sent
bool incoming = 1 [ json_name = "incoming" ];
bool incoming = 1;
/// The total value of the htlc
int64 amount = 2 [ json_name = "amount" ];
int64 amount = 2;
/// The final output to be swept back to the user's wallet
string outpoint = 3 [ json_name = "outpoint" ];
string outpoint = 3;
/// The next block height at which we can spend the current stage
uint32 maturity_height = 4 [ json_name = "maturity_height" ];
uint32 maturity_height = 4;
/**
The number of blocks remaining until the current stage can be swept.
Negative values indicate how many blocks have passed since becoming
mature.
*/
int32 blocks_til_maturity = 5 [ json_name = "blocks_til_maturity" ];
int32 blocks_til_maturity = 5;
/// Indicates whether the htlc is in its first or second stage of recovery
uint32 stage = 6 [ json_name = "stage" ];
uint32 stage = 6;
}
message PendingChannelsRequest {}
message PendingChannelsRequest {
}
message PendingChannelsResponse {
message PendingChannel {
string remote_node_pub = 1 [ json_name = "remote_node_pub" ];
string channel_point = 2 [ json_name = "channel_point" ];
string remote_node_pub = 1;
string channel_point = 2;
int64 capacity = 3 [ json_name = "capacity" ];
int64 capacity = 3;
int64 local_balance = 4;
int64 remote_balance = 5;
int64 local_balance = 4 [ json_name = "local_balance" ];
int64 remote_balance = 5 [ json_name = "remote_balance" ];
/// The minimum satoshis this node is required to reserve in its balance.
int64 local_chan_reserve_sat = 6 [json_name = "local_chan_reserve_sat"];
int64 local_chan_reserve_sat = 6;
/**
The minimum satoshis the other node is required to reserve in its
balance.
*/
int64 remote_chan_reserve_sat = 7 [json_name = "remote_chan_reserve_sat"];
int64 remote_chan_reserve_sat = 7;
}
message PendingOpenChannel {
/// The pending channel
PendingChannel channel = 1 [ json_name = "channel" ];
PendingChannel channel = 1;
/// The height at which this channel will be confirmed
uint32 confirmation_height = 2 [ json_name = "confirmation_height" ];
uint32 confirmation_height = 2;
/**
The amount calculated to be paid in fees for the current set of
@ -1879,17 +1880,17 @@ message PendingChannelsResponse {
each channel state update, including updates that happen after a system
restart.
*/
int64 commit_fee = 4 [json_name = "commit_fee" ];
int64 commit_fee = 4;
/// The weight of the commitment transaction
int64 commit_weight = 5 [ json_name = "commit_weight" ];
int64 commit_weight = 5;
/**
The required number of satoshis per kilo-weight that the requester will
pay at all times, for both the funding transaction and commitment
transaction. This value can later be updated once the channel is open.
*/
int64 fee_per_kw = 6 [ json_name = "fee_per_kw" ];
int64 fee_per_kw = 6;
}
message WaitingCloseChannel {
@ -1897,7 +1898,7 @@ message PendingChannelsResponse {
PendingChannel channel = 1;
/// The balance in satoshis encumbered in this channel
int64 limbo_balance = 2 [ json_name = "limbo_balance" ];
int64 limbo_balance = 2;
}
message ClosedChannel {
@ -1905,49 +1906,49 @@ message PendingChannelsResponse {
PendingChannel channel = 1;
/// The transaction id of the closing transaction
string closing_txid = 2 [ json_name = "closing_txid" ];
string closing_txid = 2;
}
message ForceClosedChannel {
/// The pending channel to be force closed
PendingChannel channel = 1 [ json_name = "channel" ];
PendingChannel channel = 1;
/// The transaction id of the closing transaction
string closing_txid = 2 [ json_name = "closing_txid" ];
string closing_txid = 2;
/// The balance in satoshis encumbered in this pending channel
int64 limbo_balance = 3 [ json_name = "limbo_balance" ];
int64 limbo_balance = 3;
/// The height at which funds can be swept into the wallet
uint32 maturity_height = 4 [ json_name = "maturity_height" ];
uint32 maturity_height = 4;
/*
Remaining # of blocks until the commitment output can be swept.
Negative values indicate how many blocks have passed since becoming
mature.
*/
int32 blocks_til_maturity = 5 [ json_name = "blocks_til_maturity" ];
int32 blocks_til_maturity = 5;
/// The total value of funds successfully recovered from this channel
int64 recovered_balance = 6 [ json_name = "recovered_balance" ];
int64 recovered_balance = 6;
repeated PendingHTLC pending_htlcs = 8 [ json_name = "pending_htlcs" ];
repeated PendingHTLC pending_htlcs = 8;
}
/// The balance in satoshis encumbered in pending channels
int64 total_limbo_balance = 1 [ json_name = "total_limbo_balance" ];
int64 total_limbo_balance = 1;
/// Channels pending opening
repeated PendingOpenChannel pending_open_channels = 2 [ json_name = "pending_open_channels" ];
repeated PendingOpenChannel pending_open_channels = 2;
/// Channels pending closing
repeated ClosedChannel pending_closing_channels = 3 [ json_name = "pending_closing_channels" ];
repeated ClosedChannel pending_closing_channels = 3;
/// Channels pending force closing
repeated ForceClosedChannel pending_force_closing_channels = 4 [ json_name = "pending_force_closing_channels" ];
repeated ForceClosedChannel pending_force_closing_channels = 4;
/// Channels waiting for closing tx to confirm
repeated WaitingCloseChannel waiting_close_channels = 5 [ json_name = "waiting_close_channels" ];
repeated WaitingCloseChannel waiting_close_channels = 5;
}
message ChannelEventSubscription {
@ -1955,45 +1956,45 @@ message ChannelEventSubscription {
message ChannelEventUpdate {
oneof channel {
Channel open_channel = 1 [ json_name = "open_channel" ];
ChannelCloseSummary closed_channel = 2 [ json_name = "closed_channel" ];
ChannelPoint active_channel = 3 [ json_name = "active_channel" ];
ChannelPoint inactive_channel = 4 [ json_name = "inactive_channel" ];
PendingUpdate pending_open_channel = 6 [json_name = "pending_open_channel"];
Channel open_channel = 1;
ChannelCloseSummary closed_channel = 2;
ChannelPoint active_channel = 3;
ChannelPoint inactive_channel = 4;
PendingUpdate pending_open_channel = 6;
}
enum UpdateType {
OPEN_CHANNEL = 0;
CLOSED_CHANNEL = 1;
ACTIVE_CHANNEL = 2;
INACTIVE_CHANNEL = 3;
PENDING_OPEN_CHANNEL = 4;
OPEN_CHANNEL = 0;
CLOSED_CHANNEL = 1;
ACTIVE_CHANNEL = 2;
INACTIVE_CHANNEL = 3;
PENDING_OPEN_CHANNEL = 4;
}
UpdateType type = 5 [ json_name = "type" ];
UpdateType type = 5;
}
message WalletBalanceRequest {
}
message WalletBalanceResponse {
/// The balance of the wallet
int64 total_balance = 1 [json_name = "total_balance"];
int64 total_balance = 1;
/// The confirmed balance of a wallet(with >= 1 confirmations)
int64 confirmed_balance = 2 [json_name = "confirmed_balance"];
int64 confirmed_balance = 2;
/// The unconfirmed balance of a wallet(with 0 confirmations)
int64 unconfirmed_balance = 3 [json_name = "unconfirmed_balance"];
int64 unconfirmed_balance = 3;
}
message ChannelBalanceRequest {
}
message ChannelBalanceResponse {
/// Sum of channels balances denominated in satoshis
int64 balance = 1 [json_name = "balance"];
int64 balance = 1;
/// Sum of channels pending balances denominated in satoshis
int64 pending_open_balance = 2 [json_name = "pending_open_balance"];
int64 pending_open_balance = 2;
}
message QueryRoutesRequest {
@ -2136,13 +2137,13 @@ message QueryRoutesResponse {
The route that results from the path finding operation. This is still a
repeated field to retain backwards compatibility.
*/
repeated Route routes = 1 [json_name = "routes"];
repeated Route routes = 1;
/**
The success probability of the returned route based on the current mission
control state. [EXPERIMENTAL]
*/
double success_prob = 2 [json_name = "success_prob"];
double success_prob = 2;
}
message Hop {
@ -2151,26 +2152,26 @@ message Hop {
height, the next 3 the index within the block, and the last 2 bytes are the
output index for the channel.
*/
uint64 chan_id = 1 [json_name = "chan_id", jstype = JS_STRING];
int64 chan_capacity = 2 [json_name = "chan_capacity"];
int64 amt_to_forward = 3 [json_name = "amt_to_forward", deprecated = true];
int64 fee = 4 [json_name = "fee", deprecated = true];
uint32 expiry = 5 [json_name = "expiry"];
int64 amt_to_forward_msat = 6 [json_name = "amt_to_forward_msat"];
int64 fee_msat = 7 [json_name = "fee_msat"];
uint64 chan_id = 1 [jstype = JS_STRING];
int64 chan_capacity = 2;
int64 amt_to_forward = 3 [deprecated = true];
int64 fee = 4 [deprecated = true];
uint32 expiry = 5;
int64 amt_to_forward_msat = 6;
int64 fee_msat = 7;
/**
An optional public key of the hop. If the public key is given, the payment
can be executed without relying on a copy of the channel graph.
*/
string pub_key = 8 [json_name = "pub_key"];
string pub_key = 8;
/**
If set to true, then this hop will be encoded using the new variable length
TLV format. Note that if any custom tlv_records below are specified, then
this field MUST be set to true for them to be encoded properly.
*/
bool tlv_payload = 9 [json_name = "tlv_payload"];
bool tlv_payload = 9;
/**
An optional TLV record tha singals the use of an MPP payment. If present,
@ -2178,14 +2179,14 @@ message Hop {
final hop payload of all non-zero payments in the HTLC set. If empty, a
regular single-shot payment is or was attempted.
*/
MPPRecord mpp_record = 10 [json_name = "mpp_record"];
MPPRecord mpp_record = 10;
/**
An optional set of key-value TLV records. This is useful within the context
of the SendToRoute call as it allows callers to specify arbitrary K-V pairs
to drop off at each hop within the onion.
*/
map<uint64, bytes> custom_records = 11 [json_name = "custom_records"];
map<uint64, bytes> custom_records = 11;
}
message MPPRecord {
@ -2195,7 +2196,7 @@ message MPPRecord {
subpayments, and match the payment_addr provided in the receiver's invoice.
The same payment_addr must be used on all subpayments.
*/
bytes payment_addr = 11 [json_name = "payment_addr"];
bytes payment_addr = 11;
/**
The total amount in milli-satoshis being sent as part of a larger multi-path
@ -2203,7 +2204,7 @@ message MPPRecord {
and payment_hash sum exactly to total_amt_msat. The same
total_amt_msat must be used on all subpayments.
*/
int64 total_amt_msat = 10 [json_name = "total_amt_msat"];
int64 total_amt_msat = 10;
}
/**
@ -2221,14 +2222,14 @@ message Route {
will decrement the time-lock as advertised, leaving enough time for all
hops to wait for or present the payment preimage to complete the payment.
*/
uint32 total_time_lock = 1 [json_name = "total_time_lock"];
uint32 total_time_lock = 1;
/**
The sum of the fees paid at each hop within the final route. In the case
of a one-hop payment, this value will be zero as we don't need to pay a fee
to ourselves.
*/
int64 total_fees = 2 [json_name = "total_fees", deprecated = true];
int64 total_fees = 2 [deprecated = true];
/**
The total amount of funds required to complete a payment over this route.
@ -2237,22 +2238,22 @@ message Route {
satoshis, otherwise the route will fail at an intermediate node due to an
insufficient amount of fees.
*/
int64 total_amt = 3 [json_name = "total_amt", deprecated = true];
int64 total_amt = 3 [deprecated = true];
/**
Contains details concerning the specific forwarding details at each hop.
*/
repeated Hop hops = 4 [json_name = "hops"];
repeated Hop hops = 4;
/**
The total fees in millisatoshis.
*/
int64 total_fees_msat = 5 [json_name = "total_fees_msat"];
int64 total_fees_msat = 5;
/**
The total amount in millisatoshis.
*/
int64 total_amt_msat = 6 [json_name = "total_amt_msat"];
int64 total_amt_msat = 6;
}
message NodeInfoRequest {
@ -2271,16 +2272,16 @@ message NodeInfo {
the graph is directed, a node will also have an incoming edge attached to
it for each outgoing edge.
*/
LightningNode node = 1 [json_name = "node"];
LightningNode node = 1;
/// The total number of channels for the node.
uint32 num_channels = 2 [json_name = "num_channels"];
uint32 num_channels = 2;
/// The sum of all channels capacity for the node, denominated in satoshis.
int64 total_capacity = 3 [json_name = "total_capacity"];
int64 total_capacity = 3;
/// A list of all public channels for the node.
repeated ChannelEdge channels = 4 [json_name = "channels"];
repeated ChannelEdge channels = 4;
}
/**
@ -2290,27 +2291,27 @@ graph is directed, a node will also have an incoming edge attached to it for
each outgoing edge.
*/
message LightningNode {
uint32 last_update = 1 [ json_name = "last_update" ];
string pub_key = 2 [ json_name = "pub_key" ];
string alias = 3 [ json_name = "alias" ];
repeated NodeAddress addresses = 4 [ json_name = "addresses" ];
string color = 5 [ json_name = "color" ];
map<uint32, Feature> features = 6 [ json_name = "features" ];
uint32 last_update = 1;
string pub_key = 2;
string alias = 3;
repeated NodeAddress addresses = 4;
string color = 5;
map<uint32, Feature> features = 6;
}
message NodeAddress {
string network = 1 [ json_name = "network" ];
string addr = 2 [ json_name = "addr" ];
string network = 1;
string addr = 2;
}
message RoutingPolicy {
uint32 time_lock_delta = 1 [json_name = "time_lock_delta"];
int64 min_htlc = 2 [json_name = "min_htlc"];
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_msat = 6 [json_name = "max_htlc_msat"];
uint32 last_update = 7 [json_name = "last_update"];
uint32 time_lock_delta = 1;
int64 min_htlc = 2;
int64 fee_base_msat = 3;
int64 fee_rate_milli_msat = 4;
bool disabled = 5;
uint64 max_htlc_msat = 6;
uint32 last_update = 7;
}
/**
@ -2327,36 +2328,36 @@ message ChannelEdge {
height, the next 3 the index within the block, and the last 2 bytes are the
output index for the channel.
*/
uint64 channel_id = 1 [json_name = "channel_id", jstype = JS_STRING];
string chan_point = 2 [json_name = "chan_point"];
uint64 channel_id = 1 [jstype = JS_STRING];
string chan_point = 2;
uint32 last_update = 3 [json_name = "last_update", deprecated = true];
uint32 last_update = 3 [deprecated = true];
string node1_pub = 4 [json_name = "node1_pub"];
string node2_pub = 5 [json_name = "node2_pub"];
string node1_pub = 4;
string node2_pub = 5;
int64 capacity = 6 [json_name = "capacity"];
int64 capacity = 6;
RoutingPolicy node1_policy = 7 [json_name = "node1_policy"];
RoutingPolicy node2_policy = 8 [json_name = "node2_policy"];
RoutingPolicy node1_policy = 7;
RoutingPolicy node2_policy = 8;
}
message ChannelGraphRequest {
/**
Whether unannounced channels are included in the response or not. If set,
unannounced channels are included. Unannounced channels are both private
channels, and public channels that are not yet announced to the network.
*/
bool include_unannounced = 1 [json_name = "include_unannounced"];
/**
Whether unannounced channels are included in the response or not. If set,
unannounced channels are included. Unannounced channels are both private
channels, and public channels that are not yet announced to the network.
*/
bool include_unannounced = 1;
}
/// Returns a new instance of the directed channel graph.
message ChannelGraph {
/// The list of `LightningNode`s in this channel graph
repeated LightningNode nodes = 1 [json_name = "nodes"];
repeated LightningNode nodes = 1;
/// The list of `ChannelEdge`s in this channel graph
repeated ChannelEdge edges = 2 [json_name = "edges"];
repeated ChannelEdge edges = 2;
}
message ChanInfoRequest {
@ -2371,31 +2372,34 @@ message ChanInfoRequest {
message NetworkInfoRequest {
}
message NetworkInfo {
uint32 graph_diameter = 1 [json_name = "graph_diameter"];
double avg_out_degree = 2 [json_name = "avg_out_degree"];
uint32 max_out_degree = 3 [json_name = "max_out_degree"];
uint32 graph_diameter = 1;
double avg_out_degree = 2;
uint32 max_out_degree = 3;
uint32 num_nodes = 4 [json_name = "num_nodes"];
uint32 num_channels = 5 [json_name = "num_channels"];
uint32 num_nodes = 4;
uint32 num_channels = 5;
int64 total_network_capacity = 6 [json_name = "total_network_capacity"];
int64 total_network_capacity = 6;
double avg_channel_size = 7 [json_name = "avg_channel_size"];
int64 min_channel_size = 8 [json_name = "min_channel_size"];
int64 max_channel_size = 9 [json_name = "max_channel_size"];
int64 median_channel_size_sat = 10 [json_name = "median_channel_size_sat"];
double avg_channel_size = 7;
int64 min_channel_size = 8;
int64 max_channel_size = 9;
int64 median_channel_size_sat = 10;
// The number of edges marked as zombies.
uint64 num_zombie_chans = 11 [json_name = "num_zombie_chans"];
uint64 num_zombie_chans = 11;
// TODO(roasbeef): fee rate info, expiry
// * also additional RPC for tracking fee info once in
}
message StopRequest{}
message StopResponse{}
message StopRequest {
}
message StopResponse {
}
message GraphTopologySubscription {}
message GraphTopologySubscription {
}
message GraphTopologyUpdate {
repeated NodeUpdate node_updates = 1;
repeated ChannelEdgeUpdate channel_updates = 2;
@ -2420,9 +2424,9 @@ message ChannelEdgeUpdate {
int64 capacity = 3;
RoutingPolicy routing_policy = 4;
RoutingPolicy routing_policy = 4;
string advertising_node = 5;
string advertising_node = 5;
string connecting_node = 6;
}
message ClosedChannelUpdate {
@ -2439,22 +2443,22 @@ message ClosedChannelUpdate {
message HopHint {
/// The public key of the node at the start of the channel.
string node_id = 1 [json_name = "node_id"];
string node_id = 1;
/// The unique identifier of the channel.
uint64 chan_id = 2 [json_name = "chan_id", jstype = JS_STRING];
uint64 chan_id = 2 [jstype = JS_STRING];
/// The base fee of the channel denominated in millisatoshis.
uint32 fee_base_msat = 3 [json_name = "fee_base_msat"];
uint32 fee_base_msat = 3;
/**
The fee rate of the channel for sending one satoshi across it denominated in
millionths of a satoshi.
*/
uint32 fee_proportional_millionths = 4 [json_name = "fee_proportional_millionths"];
uint32 fee_proportional_millionths = 4;
/// The time-lock delta of the channel.
uint32 cltv_expiry_delta = 5 [json_name = "cltv_expiry_delta"];
uint32 cltv_expiry_delta = 5;
}
message RouteHint {
@ -2462,7 +2466,7 @@ message RouteHint {
A list of hop hints that when chained together can assist in reaching a
specific destination.
*/
repeated HopHint hop_hints = 1 [json_name = "hop_hints"];
repeated HopHint hop_hints = 1;
}
message Invoice {
@ -2472,7 +2476,7 @@ message Invoice {
field of the encoded payment request if the description_hash field is not
being used.
*/
string memo = 1 [json_name = "memo"];
string memo = 1;
reserved 2;
@ -2481,43 +2485,43 @@ message Invoice {
HTLC payable to this preimage. When using REST, this field must be encoded
as base64.
*/
bytes r_preimage = 3 [json_name = "r_preimage"];
bytes r_preimage = 3;
/**
The hash of the preimage. When using REST, this field must be encoded as
base64.
*/
bytes r_hash = 4 [json_name = "r_hash"];
bytes r_hash = 4;
/**
The value of this invoice in satoshis
The fields value and value_msat are mutually exclusive.
*/
int64 value = 5 [json_name = "value"];
int64 value = 5;
/**
The value of this invoice in millisatoshis
The fields value and value_msat are mutually exclusive.
*/
int64 value_msat = 23 [json_name = "value_msat"];
int64 value_msat = 23;
/// Whether this invoice has been fulfilled
bool settled = 6 [json_name = "settled", deprecated = true];
bool settled = 6 [deprecated = true];
/// When this invoice was created
int64 creation_date = 7 [json_name = "creation_date"];
int64 creation_date = 7;
/// When this invoice was settled
int64 settle_date = 8 [json_name = "settle_date"];
int64 settle_date = 8;
/**
A bare-bones invoice for a payment within the Lightning Network. With the
details of the invoice, the sender has all the data necessary to send a
payment to the recipient.
*/
string payment_request = 9 [json_name = "payment_request"];
string payment_request = 9;
/**
Hash (SHA-256) of a description of the payment. Used if the description of
@ -2525,25 +2529,25 @@ message Invoice {
of an encoded payment request. When using REST, this field must be encoded
as base64.
*/
bytes description_hash = 10 [json_name = "description_hash"];
bytes description_hash = 10;
/// Payment request expiry time in seconds. Default is 3600 (1 hour).
int64 expiry = 11 [json_name = "expiry"];
int64 expiry = 11;
/// Fallback on-chain address.
string fallback_addr = 12 [json_name = "fallback_addr"];
string fallback_addr = 12;
/// Delta to use for the time-lock of the CLTV extended to the final hop.
uint64 cltv_expiry = 13 [json_name = "cltv_expiry"];
uint64 cltv_expiry = 13;
/**
Route hints that can each be individually used to assist in reaching the
invoice's destination.
*/
repeated RouteHint route_hints = 14 [json_name = "route_hints"];
repeated RouteHint route_hints = 14;
/// Whether this invoice should include routing hints for private channels.
bool private = 15 [json_name = "private"];
bool private = 15;
/**
The "add" index of this invoice. Each newly created invoice will increment
@ -2551,7 +2555,7 @@ message Invoice {
SubscribeInvoices call can use this to instantly get notified of all added
invoices with an add_index greater than this one.
*/
uint64 add_index = 16 [json_name = "add_index"];
uint64 add_index = 16;
/**
The "settle" index of this invoice. Each newly settled invoice will
@ -2559,10 +2563,10 @@ message Invoice {
SubscribeInvoices call can use this to instantly get notified of all
settled invoices with an settle_index greater than this one.
*/
uint64 settle_index = 17 [json_name = "settle_index"];
uint64 settle_index = 17;
/// Deprecated, use amt_paid_sat or amt_paid_msat.
int64 amt_paid = 18 [json_name = "amt_paid", deprecated = true];
int64 amt_paid = 18 [deprecated = true];
/**
The amount that was accepted for this invoice, in satoshis. This will ONLY
@ -2572,7 +2576,7 @@ message Invoice {
MORE that was specified in the original invoice. So we'll record that here
as well.
*/
int64 amt_paid_sat = 19 [json_name = "amt_paid_sat"];
int64 amt_paid_sat = 19;
/**
The amount that was accepted for this invoice, in millisatoshis. This will
@ -2582,7 +2586,7 @@ message Invoice {
paid MORE that was specified in the original invoice. So we'll record that
here as well.
*/
int64 amt_paid_msat = 20 [json_name = "amt_paid_msat"];
int64 amt_paid_msat = 20;
enum InvoiceState {
OPEN = 0;
@ -2594,19 +2598,19 @@ message Invoice {
/**
The state the invoice is in.
*/
InvoiceState state = 21 [json_name = "state"];
InvoiceState state = 21;
/// List of HTLCs paying to this invoice [EXPERIMENTAL].
repeated InvoiceHTLC htlcs = 22 [json_name = "htlcs"];
repeated InvoiceHTLC htlcs = 22;
/// List of features advertised on the invoice.
map<uint32, Feature> features = 24 [json_name = "features"];
map<uint32, Feature> features = 24;
/**
Indicates if this invoice was a spontaneous payment that arrived via keysend
[EXPERIMENTAL].
*/
bool is_keysend = 25 [json_name = "is_keysend"];
bool is_keysend = 25;
}
enum InvoiceHTLCState {
@ -2618,45 +2622,45 @@ enum InvoiceHTLCState {
/// Details of an HTLC that paid to an invoice
message InvoiceHTLC {
/// Short channel id over which the htlc was received.
uint64 chan_id = 1 [json_name = "chan_id", jstype = JS_STRING];
uint64 chan_id = 1 [jstype = JS_STRING];
/// Index identifying the htlc on the channel.
uint64 htlc_index = 2 [json_name = "htlc_index"];
uint64 htlc_index = 2;
/// The amount of the htlc in msat.
uint64 amt_msat = 3 [json_name = "amt_msat"];
uint64 amt_msat = 3;
/// Block height at which this htlc was accepted.
int32 accept_height = 4 [json_name = "accept_height"];
int32 accept_height = 4;
/// Time at which this htlc was accepted.
int64 accept_time = 5 [json_name = "accept_time"];
int64 accept_time = 5;
/// Time at which this htlc was settled or canceled.
int64 resolve_time = 6 [json_name = "resolve_time"];
int64 resolve_time = 6;
/// Block height at which this htlc expires.
int32 expiry_height = 7 [json_name = "expiry_height"];
int32 expiry_height = 7;
/// Current state the htlc is in.
InvoiceHTLCState state = 8 [json_name = "state"];
InvoiceHTLCState state = 8;
/// Custom tlv records.
map<uint64, bytes> custom_records = 9 [json_name = "custom_records"];
map<uint64, bytes> custom_records = 9;
/// The total amount of the mpp payment in msat.
uint64 mpp_total_amt_msat = 10 [json_name = "mpp_total_amt_msat"];
uint64 mpp_total_amt_msat = 10;
}
message AddInvoiceResponse {
bytes r_hash = 1 [json_name = "r_hash"];
bytes r_hash = 1;
/**
A bare-bones invoice for a payment within the Lightning Network. With the
details of the invoice, the sender has all the data necessary to send a
payment to the recipient.
*/
string payment_request = 2 [json_name = "payment_request"];
string payment_request = 2;
/**
The "add" index of this invoice. Each newly created invoice will increment
@ -2664,7 +2668,7 @@ message AddInvoiceResponse {
SubscribeInvoices call can use this to instantly get notified of all added
invoices with an add_index greater than this one.
*/
uint64 add_index = 16 [json_name = "add_index"];
uint64 add_index = 16;
}
message PaymentHash {
/**
@ -2673,13 +2677,13 @@ message PaymentHash {
Deprecated now that the REST gateway supports base64 encoding of bytes
fields.
*/
string r_hash_str = 1 [json_name = "r_hash_str", deprecated = true];
string r_hash_str = 1 [deprecated = true];
/**
The payment hash of the invoice to be looked up. When using REST, this field
must be encoded as base64.
*/
bytes r_hash = 2 [json_name = "r_hash"];
bytes r_hash = 2;
}
message ListInvoiceRequest {
@ -2687,41 +2691,41 @@ message ListInvoiceRequest {
If set, only invoices that are not settled and not canceled will be returned
in the response.
*/
bool pending_only = 1 [json_name = "pending_only"];
bool pending_only = 1;
/**
The index of an invoice that will be used as either the start or end of a
query to determine which invoices should be returned in the response.
*/
uint64 index_offset = 4 [json_name = "index_offset"];
uint64 index_offset = 4;
/// The max number of invoices to return in the response to this query.
uint64 num_max_invoices = 5 [json_name = "num_max_invoices"];
uint64 num_max_invoices = 5;
/**
If set, the invoices returned will result from seeking backwards from the
specified index offset. This can be used to paginate backwards.
*/
bool reversed = 6 [json_name = "reversed"];
bool reversed = 6;
}
message ListInvoiceResponse {
/**
A list of invoices from the time slice of the time series specified in the
request.
*/
repeated Invoice invoices = 1 [json_name = "invoices"];
repeated Invoice invoices = 1;
/**
The index of the last item in the set of returned invoices. This can be used
to seek further, pagination style.
*/
uint64 last_index_offset = 2 [json_name = "last_index_offset"];
uint64 last_index_offset = 2;
/**
The index of the last item in the set of returned invoices. This can be used
to seek backwards, pagination style.
*/
uint64 first_index_offset = 3 [json_name = "first_index_offset"];
uint64 first_index_offset = 3;
}
message InvoiceSubscription {
@ -2731,7 +2735,7 @@ message InvoiceSubscription {
value. This allows callers to catch up on any events they missed while they
weren't connected to the streaming RPC.
*/
uint64 add_index = 1 [json_name = "add_index"];
uint64 add_index = 1;
/**
If specified (non-zero), then we'll first start by sending out
@ -2739,37 +2743,37 @@ message InvoiceSubscription {
this value. This allows callers to catch up on any events they missed while
they weren't connected to the streaming RPC.
*/
uint64 settle_index = 2 [json_name = "settle_index"];
uint64 settle_index = 2;
}
message Payment {
/// The payment hash
string payment_hash = 1 [json_name = "payment_hash"];
string payment_hash = 1;
/// Deprecated, use value_sat or value_msat.
int64 value = 2 [json_name = "value", deprecated = true];
int64 value = 2 [deprecated = true];
/// Deprecated, use creation_time_ns
int64 creation_date = 3 [json_name = "creation_date", deprecated = true];
int64 creation_date = 3 [deprecated = true];
/// The path this payment took.
repeated string path = 4 [json_name = "path", deprecated = true];
repeated string path = 4 [deprecated = true];
/// Deprecated, use fee_sat or fee_msat.
int64 fee = 5 [json_name = "fee", deprecated = true];
int64 fee = 5 [deprecated = true];
/// The payment preimage
string payment_preimage = 6 [json_name = "payment_preimage"];
string payment_preimage = 6;
/// The value of the payment in satoshis
int64 value_sat = 7 [json_name = "value_sat"];
int64 value_sat = 7;
/// The value of the payment in milli-satoshis
int64 value_msat = 8 [json_name = "value_msat"];
int64 value_msat = 8;
/// The optional payment request being fulfilled.
string payment_request = 9 [json_name = "payment_request"];
string payment_request = 9;
enum PaymentStatus {
UNKNOWN = 0;
@ -2779,42 +2783,42 @@ message Payment {
}
// The status of the payment.
PaymentStatus status = 10 [json_name = "status"];
PaymentStatus status = 10;
/// The fee paid for this payment in satoshis
int64 fee_sat = 11 [json_name = "fee_sat"];
int64 fee_sat = 11;
/// The fee paid for this payment in milli-satoshis
int64 fee_msat = 12 [json_name = "fee_msat"];
int64 fee_msat = 12;
/// The time in UNIX nanoseconds at which the payment was created.
int64 creation_time_ns = 13 [json_name = "creation_time_ns"];
int64 creation_time_ns = 13;
/// The HTLCs made in attempt to settle the payment [EXPERIMENTAL].
repeated HTLCAttempt htlcs = 14 [json_name = "htlcs"];
repeated HTLCAttempt htlcs = 14;
}
message HTLCAttempt {
enum HTLCStatus {
IN_FLIGHT = 0;
SUCCEEDED = 1;
FAILED = 2;
}
enum HTLCStatus {
IN_FLIGHT = 0;
SUCCEEDED = 1;
FAILED = 2;
}
/// The status of the HTLC.
HTLCStatus status = 1 [json_name = "status"];
/// The status of the HTLC.
HTLCStatus status = 1;
/// The route taken by this HTLC.
Route route = 2 [json_name = "route"];
/// The route taken by this HTLC.
Route route = 2;
/// The time in UNIX nanoseconds at which this HTLC was sent.
int64 attempt_time_ns = 3 [json_name = "attempt_time_ns"];
/// The time in UNIX nanoseconds at which this HTLC was sent.
int64 attempt_time_ns = 3;
/**
The time in UNIX nanoseconds at which this HTLC was settled or failed.
This value will not be set if the HTLC is still IN_FLIGHT.
*/
int64 resolve_time_ns = 4 [json_name = "resolve_time_ns"];
/**
The time in UNIX nanoseconds at which this HTLC was settled or failed.
This value will not be set if the HTLC is still IN_FLIGHT.
*/
int64 resolve_time_ns = 4;
}
message ListPaymentsRequest {
@ -2828,7 +2832,7 @@ message ListPaymentsRequest {
message ListPaymentsResponse {
/// The list of payments
repeated Payment payments = 1 [json_name = "payments"];
repeated Payment payments = 1;
}
message DeleteAllPaymentsRequest {
@ -2850,7 +2854,7 @@ message DebugLevelRequest {
string level_spec = 2;
}
message DebugLevelResponse {
string sub_systems = 1 [json_name = "sub_systems"];
string sub_systems = 1;
}
message PayReqString {
@ -2858,160 +2862,160 @@ message PayReqString {
string pay_req = 1;
}
message PayReq {
string destination = 1 [json_name = "destination"];
string payment_hash = 2 [json_name = "payment_hash"];
int64 num_satoshis = 3 [json_name = "num_satoshis"];
int64 timestamp = 4 [json_name = "timestamp"];
int64 expiry = 5 [json_name = "expiry"];
string description = 6 [json_name = "description"];
string description_hash = 7 [json_name = "description_hash"];
string fallback_addr = 8 [json_name = "fallback_addr"];
int64 cltv_expiry = 9 [json_name = "cltv_expiry"];
repeated RouteHint route_hints = 10 [json_name = "route_hints"];
bytes payment_addr = 11 [json_name = "payment_addr"];
int64 num_msat = 12 [json_name = "num_msat"];
map<uint32, Feature> features = 13 [json_name = "features"];
string destination = 1;
string payment_hash = 2;
int64 num_satoshis = 3;
int64 timestamp = 4;
int64 expiry = 5;
string description = 6;
string description_hash = 7;
string fallback_addr = 8;
int64 cltv_expiry = 9;
repeated RouteHint route_hints = 10;
bytes payment_addr = 11;
int64 num_msat = 12;
map<uint32, Feature> features = 13;
}
enum FeatureBit {
DATALOSS_PROTECT_REQ = 0;
DATALOSS_PROTECT_OPT = 1;
INITIAL_ROUING_SYNC = 3;
UPFRONT_SHUTDOWN_SCRIPT_REQ = 4;
UPFRONT_SHUTDOWN_SCRIPT_OPT = 5;
GOSSIP_QUERIES_REQ = 6;
GOSSIP_QUERIES_OPT = 7;
TLV_ONION_REQ = 8;
TLV_ONION_OPT = 9;
EXT_GOSSIP_QUERIES_REQ = 10;
EXT_GOSSIP_QUERIES_OPT = 11;
STATIC_REMOTE_KEY_REQ = 12;
STATIC_REMOTE_KEY_OPT = 13;
PAYMENT_ADDR_REQ = 14;
PAYMENT_ADDR_OPT = 15;
MPP_REQ = 16;
MPP_OPT = 17;
DATALOSS_PROTECT_REQ = 0;
DATALOSS_PROTECT_OPT = 1;
INITIAL_ROUING_SYNC = 3;
UPFRONT_SHUTDOWN_SCRIPT_REQ = 4;
UPFRONT_SHUTDOWN_SCRIPT_OPT = 5;
GOSSIP_QUERIES_REQ = 6;
GOSSIP_QUERIES_OPT = 7;
TLV_ONION_REQ = 8;
TLV_ONION_OPT = 9;
EXT_GOSSIP_QUERIES_REQ = 10;
EXT_GOSSIP_QUERIES_OPT = 11;
STATIC_REMOTE_KEY_REQ = 12;
STATIC_REMOTE_KEY_OPT = 13;
PAYMENT_ADDR_REQ = 14;
PAYMENT_ADDR_OPT = 15;
MPP_REQ = 16;
MPP_OPT = 17;
}
message Feature {
string name = 2 [json_name = "name"];
bool is_required = 3 [json_name = "is_required"];
bool is_known = 4 [json_name = "is_known"];
string name = 2;
bool is_required = 3;
bool is_known = 4;
}
message FeeReportRequest {}
message FeeReportRequest {
}
message ChannelFeeReport {
/// The short channel id that this fee report belongs to.
uint64 chan_id = 5 [jstype = JS_STRING];
/// The channel that this fee report belongs to.
string chan_point = 1 [json_name = "channel_point"];
string chan_point = 1;
/// The base fee charged regardless of the number of milli-satoshis sent.
int64 base_fee_msat = 2 [json_name = "base_fee_msat"];
int64 base_fee_msat = 2;
/// The amount charged per milli-satoshis transferred expressed in millionths of a satoshi.
int64 fee_per_mil = 3 [json_name = "fee_per_mil"];
int64 fee_per_mil = 3;
/// The effective fee rate in milli-satoshis. Computed by dividing the fee_per_mil value by 1 million.
double fee_rate = 4 [json_name = "fee_rate"];
double fee_rate = 4;
}
message FeeReportResponse {
/// An array of channel fee reports which describes the current fee schedule for each channel.
repeated ChannelFeeReport channel_fees = 1 [json_name = "channel_fees"];
repeated ChannelFeeReport channel_fees = 1;
/// The total amount of fee revenue (in satoshis) the switch has collected over the past 24 hrs.
uint64 day_fee_sum = 2 [json_name = "day_fee_sum"];
uint64 day_fee_sum = 2;
/// The total amount of fee revenue (in satoshis) the switch has collected over the past 1 week.
uint64 week_fee_sum = 3 [json_name = "week_fee_sum"];
uint64 week_fee_sum = 3;
/// The total amount of fee revenue (in satoshis) the switch has collected over the past 1 month.
uint64 month_fee_sum = 4 [json_name = "month_fee_sum"];
uint64 month_fee_sum = 4;
}
message PolicyUpdateRequest {
oneof scope {
/// If set, then this update applies to all currently active channels.
bool global = 1 [json_name = "global"] ;
bool global = 1;
/// If set, this update will target a specific channel.
ChannelPoint chan_point = 2 [json_name = "chan_point"];
ChannelPoint chan_point = 2;
}
/// The base fee charged regardless of the number of milli-satoshis sent.
int64 base_fee_msat = 3 [json_name = "base_fee_msat"];
int64 base_fee_msat = 3;
/// The effective fee rate in milli-satoshis. The precision of this value goes up to 6 decimal places, so 1e-6.
double fee_rate = 4 [json_name = "fee_rate"];
double fee_rate = 4;
/// The required timelock delta for HTLCs forwarded over the channel.
uint32 time_lock_delta = 5 [json_name = "time_lock_delta"];
uint32 time_lock_delta = 5;
/// If set, the maximum HTLC size in milli-satoshis. If unset, the maximum HTLC will be unchanged.
uint64 max_htlc_msat = 6 [json_name = "max_htlc_msat"];
uint64 max_htlc_msat = 6;
/// The minimum HTLC size in milli-satoshis. Only applied if min_htlc_msat_specified is true.
uint64 min_htlc_msat = 7 [json_name = "min_htlc_msat"];
uint64 min_htlc_msat = 7;
/// If true, min_htlc_msat is applied.
bool min_htlc_msat_specified = 8 [json_name = "set_min_htlc_msat"];
bool min_htlc_msat_specified = 8;
}
message PolicyUpdateResponse {
}
message ForwardingHistoryRequest {
/// Start time is the starting point of the forwarding history request. All records beyond this point will be included, respecting the end time, and the index offset.
uint64 start_time = 1 [json_name = "start_time"];
uint64 start_time = 1;
/// End time is the end point of the forwarding history request. The response will carry at most 50k records between the start time and the end time. The index offset can be used to implement pagination.
uint64 end_time = 2 [json_name = "end_time"];
uint64 end_time = 2;
/// Index offset is the offset in the time series to start at. As each response can only contain 50k records, callers can use this to skip around within a packed time series.
uint32 index_offset = 3 [json_name = "index_offset"];
uint32 index_offset = 3;
/// The max number of events to return in the response to this query.
uint32 num_max_events = 4 [json_name = "num_max_events"];
uint32 num_max_events = 4;
}
message ForwardingEvent {
/// Timestamp is the time (unix epoch offset) that this circuit was completed.
uint64 timestamp = 1 [json_name = "timestamp"];
uint64 timestamp = 1;
/// The incoming channel ID that carried the HTLC that created the circuit.
uint64 chan_id_in = 2 [json_name = "chan_id_in", jstype = JS_STRING];
uint64 chan_id_in = 2 [jstype = JS_STRING];
/// The outgoing channel ID that carried the preimage that completed the circuit.
uint64 chan_id_out = 4 [json_name = "chan_id_out", jstype = JS_STRING];
uint64 chan_id_out = 4 [jstype = JS_STRING];
/// The total amount (in satoshis) of the incoming HTLC that created half the circuit.
uint64 amt_in = 5 [json_name = "amt_in"];
uint64 amt_in = 5;
/// The total amount (in satoshis) of the outgoing HTLC that created the second half of the circuit.
uint64 amt_out = 6 [json_name = "amt_out"];
uint64 amt_out = 6;
/// The total fee (in satoshis) that this payment circuit carried.
uint64 fee = 7 [json_name = "fee"];
uint64 fee = 7;
/// The total fee (in milli-satoshis) that this payment circuit carried.
uint64 fee_msat = 8 [json_name = "fee_msat"];
uint64 fee_msat = 8;
/// The total amount (in milli-satoshis) of the incoming HTLC that created half the circuit.
uint64 amt_in_msat = 9 [json_name = "amt_in_msat"];
uint64 amt_in_msat = 9;
/// The total amount (in milli-satoshis) of the outgoing HTLC that created the second half of the circuit.
uint64 amt_out_msat = 10 [json_name = "amt_out_msat"];
uint64 amt_out_msat = 10;
// TODO(roasbeef): add settlement latency?
// * use FPE on the chan id?
// * also list failures?
}
message ForwardingHistoryResponse {
/// A list of forwarding events from the time slice of the time series specified in the request.
repeated ForwardingEvent forwarding_events = 1 [json_name = "forwarding_events"];
/// A list of forwarding events from the time slice of the time series specified in the request.
repeated ForwardingEvent forwarding_events = 1;
/// The index of the last time in the set of returned forwarding events. Can be used to seek further, pagination style.
uint32 last_offset_index = 2 [json_name = "last_offset_index"];
/// The index of the last time in the set of returned forwarding events. Can be used to seek further, pagination style.
uint32 last_offset_index = 2;
}
message ExportChannelBackupRequest {
@ -3023,7 +3027,7 @@ message ChannelBackup {
/**
Identifies the channel that this backup belongs to.
*/
ChannelPoint chan_point = 1 [ json_name = "chan_point" ];
ChannelPoint chan_point = 1;
/**
Is an encrypted single-chan backup. this can be passed to
@ -3031,14 +3035,14 @@ message ChannelBackup {
order to trigger the recovery protocol. When using REST, this field must be
encoded as base64.
*/
bytes chan_backup = 2 [ json_name = "chan_backup" ];
bytes chan_backup = 2;
}
message MultiChanBackup {
/**
Is the set of all channels that are included in this multi-channel backup.
*/
repeated ChannelPoint chan_points = 1 [ json_name = "chan_points" ];
repeated ChannelPoint chan_points = 1;
/**
A single encrypted blob containing all the static channel backups of the
@ -3046,29 +3050,30 @@ message MultiChanBackup {
safely be replaced with any prior/future versions. When using REST, this
field must be encoded as base64.
*/
bytes multi_chan_backup = 2 [ json_name = "multi_chan_backup" ];
bytes multi_chan_backup = 2;
}
message ChanBackupExportRequest {}
message ChanBackupSnapshot {
message ChanBackupExportRequest {
}
message ChanBackupSnapshot {
/**
The set of new channels that have been added since the last channel backup
snapshot was requested.
*/
ChannelBackups single_chan_backups = 1 [ json_name = "single_chan_backups" ];
ChannelBackups single_chan_backups = 1;
/**
A multi-channel backup that covers all open channels currently known to
lnd.
*/
MultiChanBackup multi_chan_backup = 2 [ json_name = "multi_chan_backup" ];
MultiChanBackup multi_chan_backup = 2;
}
message ChannelBackups {
/**
A set of single-chan static channel backups.
*/
repeated ChannelBackup chan_backups = 1 [ json_name = "chan_backups" ];
repeated ChannelBackup chan_backups = 1;
}
message RestoreChanBackupRequest {
@ -3076,34 +3081,36 @@ message RestoreChanBackupRequest {
/**
The channels to restore as a list of channel/backup pairs.
*/
ChannelBackups chan_backups = 1 [ json_name = "chan_backups" ];
ChannelBackups chan_backups = 1;
/**
The channels to restore in the packed multi backup format. When using
REST, this field must be encoded as base64.
*/
bytes multi_chan_backup = 2 [ json_name = "multi_chan_backup" ];
bytes multi_chan_backup = 2;
}
}
message RestoreBackupResponse {}
message RestoreBackupResponse {
}
message ChannelBackupSubscription {}
message ChannelBackupSubscription {
}
message VerifyChanBackupResponse {
}
message MacaroonPermission {
/// The entity a permission grants access to.
string entity = 1 [json_name = "entity"];
string entity = 1;
/// The action that is granted.
string action = 2 [json_name = "action"];
string action = 2;
}
message BakeMacaroonRequest {
/// The list of permissions the new macaroon should grant.
repeated MacaroonPermission permissions = 1 [json_name = "permissions"];
repeated MacaroonPermission permissions = 1;
}
message BakeMacaroonResponse {
/// The hex encoded macaroon, serialized in binary format.
string macaroon = 1 [json_name = "macaroon"];
string macaroon = 1;
}