Merge pull request #165 from guggero/batch-rpcs

Add RPC to query multiple batches
This commit is contained in:
Johan T. Halseth 2020-12-01 12:08:10 +01:00 committed by GitHub
commit 91aa076044
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
14 changed files with 1026 additions and 456 deletions

View file

@ -146,6 +146,10 @@ rpc:
@$(call print, "Compiling protos.")
cd ./poolrpc; ./gen_protos.sh
rpc-format:
@$(call print, "Formatting protos.")
cd ./poolrpc; find . -name "*.proto" | xargs clang-format --style=file -i
clean:
@$(call print, "Cleaning source.$(NC)")
$(RM) ./pool

View file

@ -1182,6 +1182,21 @@ func (c *Client) BatchSnapshot(ctx context.Context,
})
}
// BatchSnapshots returns a list of batch snapshots starting at the start batch
// ID and going back through the history of batches, returning at most the
// number of specified batches. A maximum of 100 snapshots can be queried in
// one call. If no start batch ID is provided, the most recent finalized batch
// is used as the starting point to go back from.
//
// NOTE: This isn't wrapped in "native" types, as atm we only use this to
// shuffle information back to the client over our RPC interface.
func (c *Client) BatchSnapshots(ctx context.Context,
req *poolrpc.BatchSnapshotsRequest) (*poolrpc.BatchSnapshotsResponse,
error) {
return c.client.BatchSnapshots(ctx, req)
}
// NodeRating returns the current up to date ratings information for the target
// node pubkey.
func (c *Client) NodeRating(ctx context.Context,

View file

@ -7,6 +7,7 @@ import (
"github.com/btcsuite/btcd/chaincfg/chainhash"
"github.com/lightninglabs/pool/poolrpc"
"github.com/lightninglabs/protobuf-hex-display/proto"
"github.com/urfave/cli"
)
@ -100,9 +101,10 @@ var batchSnapshotCommand = cli.Command{
Name: "snapshot",
ShortName: "s",
Usage: "return information about a prior cleared auction batch",
ArgsUsage: "batch_id",
Description: `
Returns information about a prior batch such as the clearing
price and the set of orders included in the batch. The
Returns information about a prior batch or batches such as the
clearing price and the set of orders included in the batch. The
prev_batch_id field can be used to explore prior batches in the
sequence, similar to a block chain.
`,
@ -113,6 +115,13 @@ var batchSnapshotCommand = cli.Command{
"for, if left blank, information about the " +
"latest batch is returned",
},
cli.Uint64Flag{
Name: "num_batches",
Usage: "the number of batches to show, starting at " +
"the batch_id and going back through the " +
"history of finalized batches",
Value: 1,
},
},
Action: batchSnapshot,
}
@ -124,7 +133,11 @@ func batchSnapshot(ctx *cli.Context) error {
}
defer cleanup()
var batchIDStr string
var (
batchIDStr string
ctxb = context.Background()
resp proto.Message
)
switch {
case ctx.Args().Present():
batchIDStr = ctx.Args().First()
@ -138,18 +151,17 @@ func batchSnapshot(ctx *cli.Context) error {
return fmt.Errorf("unable to decode batch ID: %v", err)
}
ctxb := context.Background()
batchSnapshot, err := client.BatchSnapshot(
ctxb,
&poolrpc.BatchSnapshotRequest{
BatchId: batchID,
resp, err = client.BatchSnapshots(
ctxb, &poolrpc.BatchSnapshotsRequest{
StartBatchId: batchID,
NumBatchesBack: uint32(ctx.Uint64("num_batches")),
},
)
if err != nil {
return err
}
printRespJSON(batchSnapshot)
printRespJSON(resp)
return nil
}

View file

@ -94,6 +94,10 @@ var (
Entity: "auction",
Action: "read",
}},
"/poolrpc.Trader/BatchSnapshots": {{
Entity: "auction",
Action: "read",
}},
}
// allPermissions is the list of all existing permissions that exist

View file

@ -12,12 +12,22 @@ import (
"github.com/lightninglabs/lndclient"
"github.com/lightninglabs/pool/account"
"github.com/lightninglabs/pool/poolrpc"
"github.com/lightninglabs/pool/poolscript"
"github.com/lightninglabs/pool/terms"
"github.com/lightningnetwork/lnd/input"
"github.com/lightningnetwork/lnd/lnrpc"
"github.com/lightningnetwork/lnd/lnwallet/chainfee"
)
const (
// MaxBatchIDHistoryLookup is the maximum number of iterations we do
// when iterating batch IDs. It's unlikely to happen but in case we
// start from an invalid value we want to avoid an endless loop. If we
// ever have more than that many batches, we need to handle them in
// multiple steps anyway.
MaxBatchIDHistoryLookup = 10_000
)
// BatchVersion is the type for the batch verification protocol.
type BatchVersion uint32
@ -393,3 +403,42 @@ type BatchStorer interface {
// trader to participate in a new batch.
MarkBatchComplete() error
}
// DecrementingBatchIDs lists all possible batch IDs that can exist between a
// start and end key. Start key must be the larger/higher key, decrementing it a
// given number of times should finally result in the end key. If the keys
// aren't related or are too far apart, we return a maximum number of IDs that
// corresponds to our safety net parameter and the end key won't be contained in
// the list. The returned list is in descending order, meaning the first entry
// is the start key, the last entry is the end key.
func DecrementingBatchIDs(startKey, endKey *btcec.PublicKey) []BatchID {
var (
result = []BatchID{NewBatchID(startKey)}
tempBatchKey = startKey
numIDs = 0
)
// No need to loop if start and end are the same.
if startKey.IsEqual(endKey) {
return result
}
for !tempBatchKey.IsEqual(endKey) {
numIDs++
// Unlikely to happen but in case we start from an invalid value
// we want to avoid an endless loop. This will cause the list to
// be incomplete if we ever have more than the maximum number of
// batches. But there is no scenario where it makes sense to
// work with more than that number of batches in one step. So if
// we ever do have more than that maximum number of batches, we
// need to query them in multiple steps.
if numIDs >= MaxBatchIDHistoryLookup {
break
}
tempBatchKey = poolscript.DecrementKey(tempBatchKey)
result = append(result, NewBatchID(tempBatchKey))
}
return result
}

47
order/batch_test.go Normal file
View file

@ -0,0 +1,47 @@
package order
import (
"encoding/hex"
"testing"
"github.com/btcsuite/btcd/btcec"
"github.com/lightninglabs/pool/poolscript"
"github.com/stretchr/testify/require"
)
var (
initialKeyBytes, _ = hex.DecodeString(
"034ba8df633bc689472b1fecb9ca0a7d9462467477c975108029f87ca6fb7fc1c1",
)
initialKey, _ = btcec.ParsePubKey(initialKeyBytes, btcec.S256())
unrelatedKeyBytes, _ = hex.DecodeString(
"02975a91ca82550b19355b4826e67c6d2b064f9ec62fb4fd44e044ffbeb8d35127",
)
unrelatedKey, _ = btcec.ParsePubKey(unrelatedKeyBytes, btcec.S256())
)
func TestDecrementingBatchIDs(t *testing.T) {
// Test single and one step apart keys.
require.Len(t, DecrementingBatchIDs(initialKey, initialKey), 1)
require.Len(t, DecrementingBatchIDs(
poolscript.IncrementKey(initialKey), initialKey,
), 2)
// Try 10 keys now.
tenKey := initialKey
for i := 0; i < 10; i++ {
tenKey = poolscript.IncrementKey(tenKey)
}
ids := DecrementingBatchIDs(tenKey, initialKey)
require.Len(t, ids, 11)
require.Equal(t, NewBatchID(tenKey), ids[0])
require.Equal(t, NewBatchID(initialKey), ids[10])
// Make sure we don't loop forever if unrelated keys are used.
ids = DecrementingBatchIDs(unrelatedKey, initialKey)
// We don't use require.Len() here, otherwise if this ever fails, the
// library prints the whole result which is huuuuuge.
require.Equal(t, MaxBatchIDHistoryLookup, len(ids))
}

7
poolrpc/.clang-format Normal file
View file

@ -0,0 +1,7 @@
---
Language: Proto
BasedOnStyle: Google
IndentWidth: 4
AllowShortFunctionsOnASingleLine: None
SpaceBeforeParens: Always
CompactNamespaces: false

View file

@ -4011,6 +4011,100 @@ func (m *ServerNodeRatingResponse) GetNodeRatings() []*NodeRating {
return nil
}
type BatchSnapshotsRequest struct {
//
//The unique identifier of the first batch to return, encoded as a compressed
//pubkey. This represents the newest/most current batch to fetch. If this is
//empty or a zero batch ID, the most recent finalized batch is used as the
//starting point to go back from.
StartBatchId []byte `protobuf:"bytes,1,opt,name=start_batch_id,json=startBatchId,proto3" json:"start_batch_id,omitempty"`
//
//The number of batches to return at most, including the start batch.
NumBatchesBack uint32 `protobuf:"varint,2,opt,name=num_batches_back,json=numBatchesBack,proto3" json:"num_batches_back,omitempty"`
XXX_NoUnkeyedLiteral struct{} `json:"-"`
XXX_unrecognized []byte `json:"-"`
XXX_sizecache int32 `json:"-"`
}
func (m *BatchSnapshotsRequest) Reset() { *m = BatchSnapshotsRequest{} }
func (m *BatchSnapshotsRequest) String() string { return proto.CompactTextString(m) }
func (*BatchSnapshotsRequest) ProtoMessage() {}
func (*BatchSnapshotsRequest) Descriptor() ([]byte, []int) {
return fileDescriptor_f3883418d94ca37f, []int{55}
}
func (m *BatchSnapshotsRequest) XXX_Unmarshal(b []byte) error {
return xxx_messageInfo_BatchSnapshotsRequest.Unmarshal(m, b)
}
func (m *BatchSnapshotsRequest) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
return xxx_messageInfo_BatchSnapshotsRequest.Marshal(b, m, deterministic)
}
func (m *BatchSnapshotsRequest) XXX_Merge(src proto.Message) {
xxx_messageInfo_BatchSnapshotsRequest.Merge(m, src)
}
func (m *BatchSnapshotsRequest) XXX_Size() int {
return xxx_messageInfo_BatchSnapshotsRequest.Size(m)
}
func (m *BatchSnapshotsRequest) XXX_DiscardUnknown() {
xxx_messageInfo_BatchSnapshotsRequest.DiscardUnknown(m)
}
var xxx_messageInfo_BatchSnapshotsRequest proto.InternalMessageInfo
func (m *BatchSnapshotsRequest) GetStartBatchId() []byte {
if m != nil {
return m.StartBatchId
}
return nil
}
func (m *BatchSnapshotsRequest) GetNumBatchesBack() uint32 {
if m != nil {
return m.NumBatchesBack
}
return 0
}
type BatchSnapshotsResponse struct {
// The list of batches requested.
Batches []*BatchSnapshotResponse `protobuf:"bytes,1,rep,name=batches,proto3" json:"batches,omitempty"`
XXX_NoUnkeyedLiteral struct{} `json:"-"`
XXX_unrecognized []byte `json:"-"`
XXX_sizecache int32 `json:"-"`
}
func (m *BatchSnapshotsResponse) Reset() { *m = BatchSnapshotsResponse{} }
func (m *BatchSnapshotsResponse) String() string { return proto.CompactTextString(m) }
func (*BatchSnapshotsResponse) ProtoMessage() {}
func (*BatchSnapshotsResponse) Descriptor() ([]byte, []int) {
return fileDescriptor_f3883418d94ca37f, []int{56}
}
func (m *BatchSnapshotsResponse) XXX_Unmarshal(b []byte) error {
return xxx_messageInfo_BatchSnapshotsResponse.Unmarshal(m, b)
}
func (m *BatchSnapshotsResponse) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
return xxx_messageInfo_BatchSnapshotsResponse.Marshal(b, m, deterministic)
}
func (m *BatchSnapshotsResponse) XXX_Merge(src proto.Message) {
xxx_messageInfo_BatchSnapshotsResponse.Merge(m, src)
}
func (m *BatchSnapshotsResponse) XXX_Size() int {
return xxx_messageInfo_BatchSnapshotsResponse.Size(m)
}
func (m *BatchSnapshotsResponse) XXX_DiscardUnknown() {
xxx_messageInfo_BatchSnapshotsResponse.DiscardUnknown(m)
}
var xxx_messageInfo_BatchSnapshotsResponse proto.InternalMessageInfo
func (m *BatchSnapshotsResponse) GetBatches() []*BatchSnapshotResponse {
if m != nil {
return m.Batches
}
return nil
}
func init() {
proto.RegisterEnum("poolrpc.ChannelType", ChannelType_name, ChannelType_value)
proto.RegisterEnum("poolrpc.AuctionAccountState", AuctionAccountState_name, AuctionAccountState_value)
@ -4083,246 +4177,253 @@ func init() {
proto.RegisterType((*ServerNodeRatingRequest)(nil), "poolrpc.ServerNodeRatingRequest")
proto.RegisterType((*NodeRating)(nil), "poolrpc.NodeRating")
proto.RegisterType((*ServerNodeRatingResponse)(nil), "poolrpc.ServerNodeRatingResponse")
proto.RegisterType((*BatchSnapshotsRequest)(nil), "poolrpc.BatchSnapshotsRequest")
proto.RegisterType((*BatchSnapshotsResponse)(nil), "poolrpc.BatchSnapshotsResponse")
}
func init() { proto.RegisterFile("auctioneer.proto", fileDescriptor_f3883418d94ca37f) }
var fileDescriptor_f3883418d94ca37f = []byte{
// 3741 bytes of a gzipped FileDescriptorProto
0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xcc, 0x3a, 0xcb, 0x72, 0xdb, 0x58,
0x76, 0xe2, 0x43, 0x22, 0x79, 0x08, 0x52, 0xd0, 0xd5, 0xc3, 0x14, 0xdb, 0x72, 0xcb, 0xe8, 0x9e,
0x8e, 0x5b, 0xdd, 0x96, 0x6d, 0xb9, 0xc7, 0xe9, 0xe9, 0x71, 0x3a, 0x01, 0x49, 0x68, 0x48, 0x9b,
0x22, 0x39, 0x20, 0x69, 0xb7, 0x27, 0x95, 0x42, 0x81, 0xe4, 0x25, 0x85, 0x88, 0x04, 0x18, 0x00,
0xb4, 0xa5, 0x2c, 0x66, 0x31, 0xbb, 0x7c, 0x40, 0x2a, 0xa9, 0x4a, 0xcd, 0x2e, 0xfb, 0xa4, 0x92,
0x4d, 0x96, 0xa9, 0x2c, 0xf2, 0x19, 0x99, 0xa4, 0x2a, 0x3f, 0x91, 0x5d, 0xea, 0x3e, 0x00, 0x02,
0x20, 0x28, 0x39, 0x93, 0xa4, 0x6a, 0x36, 0x12, 0x70, 0x1e, 0xf7, 0x9e, 0x7b, 0xee, 0x79, 0x83,
0x20, 0xea, 0x8b, 0xa1, 0x6b, 0x58, 0x26, 0xc6, 0xf6, 0xe9, 0xdc, 0xb6, 0x5c, 0x0b, 0x65, 0xe6,
0x96, 0x35, 0xb5, 0xe7, 0x43, 0xe9, 0x57, 0x09, 0xd8, 0x57, 0xb1, 0x83, 0xed, 0xf7, 0x58, 0x1e,
0x0e, 0xad, 0x85, 0xe9, 0xaa, 0xf8, 0xcf, 0x16, 0xd8, 0x71, 0xd1, 0x67, 0x50, 0xd0, 0x19, 0x44,
0x7b, 0xaf, 0x4f, 0x17, 0xb8, 0x94, 0x38, 0x4e, 0x3c, 0x4a, 0xab, 0x02, 0x07, 0xbe, 0x21, 0x30,
0xf4, 0x23, 0x28, 0x7a, 0x44, 0xf8, 0x7a, 0x6e, 0xd8, 0x37, 0xa5, 0xe4, 0x71, 0xe2, 0x51, 0x41,
0xf5, 0x58, 0x15, 0x0a, 0x44, 0x47, 0x00, 0xae, 0xad, 0x8f, 0xb0, 0xad, 0x5d, 0xe1, 0x9b, 0x52,
0xea, 0x38, 0xf1, 0x48, 0x50, 0x73, 0x0c, 0xf2, 0x1a, 0xdf, 0x48, 0x57, 0x70, 0x10, 0x95, 0xc1,
0x99, 0x5b, 0xa6, 0xc3, 0xd6, 0xf7, 0x65, 0xa7, 0xcc, 0x09, 0xca, 0x5c, 0x58, 0x42, 0x5f, 0xe3,
0x1b, 0x74, 0x02, 0x3b, 0x86, 0x69, 0xb8, 0x86, 0x3e, 0xd5, 0x06, 0xba, 0x3b, 0xbc, 0xa4, 0x94,
0x49, 0x4a, 0xb9, 0xcd, 0x11, 0x15, 0x02, 0x27, 0x9b, 0xfd, 0x67, 0x02, 0x4a, 0x5d, 0xb2, 0x97,
0xdd, 0x30, 0x0d, 0x37, 0x72, 0xe8, 0x17, 0xcb, 0x43, 0xcf, 0x2d, 0xc3, 0x74, 0xe9, 0x76, 0xf9,
0xb3, 0x9d, 0x53, 0xae, 0xaf, 0xd3, 0xf6, 0xc2, 0xed, 0x10, 0x84, 0xaf, 0x07, 0xfa, 0x16, 0xd4,
0x83, 0x33, 0xb4, 0x8d, 0xb9, 0xcb, 0x77, 0xf7, 0x56, 0xeb, 0x52, 0xe0, 0xaa, 0x4e, 0x53, 0x1f,
0xa5, 0xd3, 0xf4, 0xdd, 0x3a, 0xdd, 0x8c, 0xea, 0xf4, 0x13, 0x38, 0x8c, 0x39, 0x25, 0x53, 0xab,
0xb4, 0xf0, 0x54, 0xd0, 0x5d, 0x0c, 0x66, 0x86, 0xdb, 0xb6, 0x47, 0xd8, 0xf6, 0x54, 0xf0, 0x05,
0xa4, 0x74, 0xe7, 0x8a, 0x1f, 0x1c, 0xf9, 0x07, 0x67, 0xf4, 0xb2, 0x73, 0x55, 0xdf, 0x50, 0x09,
0x01, 0xa1, 0x1b, 0x18, 0x23, 0x7a, 0xce, 0x55, 0xba, 0x8a, 0x31, 0x22, 0x74, 0x03, 0x63, 0x54,
0xc9, 0x41, 0x66, 0x84, 0x5d, 0xdd, 0x98, 0x3a, 0xc4, 0xd8, 0x0e, 0x63, 0xf6, 0xe5, 0x77, 0xfd,
0x12, 0x0a, 0x86, 0xf9, 0x5e, 0x9f, 0x1a, 0x23, 0xcd, 0x22, 0x08, 0x2e, 0xc2, 0xbe, 0xbf, 0x74,
0x83, 0x61, 0x29, 0x57, 0x7d, 0x43, 0x15, 0x8c, 0xc0, 0x3b, 0xba, 0x0f, 0x59, 0x7d, 0x38, 0xc4,
0x73, 0x17, 0x33, 0x99, 0xb2, 0xf5, 0x0d, 0xd5, 0x87, 0x04, 0x85, 0x68, 0x7a, 0x67, 0xaf, 0xea,
0xe6, 0x10, 0x4f, 0x43, 0x67, 0x7f, 0x0a, 0x7b, 0x74, 0x6b, 0xcd, 0xb4, 0xcc, 0x21, 0xd6, 0xe6,
0x36, 0x36, 0x66, 0xfa, 0x04, 0x73, 0xa3, 0x43, 0x14, 0xd7, 0x22, 0xa8, 0x0e, 0xc7, 0x2c, 0xd5,
0x1c, 0x5a, 0x8d, 0xab, 0xf9, 0xdf, 0x93, 0xb0, 0x57, 0x9d, 0x1a, 0xd8, 0x74, 0x65, 0x66, 0xae,
0x17, 0xd8, 0x71, 0xf4, 0x09, 0x46, 0xdf, 0xc0, 0xd6, 0xd0, 0x9a, 0xcd, 0x0c, 0xcf, 0xbe, 0xca,
0xfe, 0x19, 0xf9, 0x4d, 0x55, 0x29, 0x76, 0x86, 0x4d, 0xb7, 0xbe, 0xa1, 0x72, 0x5a, 0xf4, 0x12,
0x72, 0xce, 0x62, 0x40, 0xec, 0x6b, 0x80, 0xb9, 0xde, 0xef, 0x47, 0x19, 0xbb, 0x8c, 0x60, 0x4e,
0x76, 0xab, 0x6f, 0xa8, 0x4b, 0x06, 0xf4, 0x1c, 0xb6, 0x98, 0x3a, 0xa8, 0xd1, 0xe5, 0xcf, 0x0e,
0x97, 0x36, 0x4d, 0x84, 0xbe, 0x20, 0xfe, 0x21, 0x53, 0x02, 0xb2, 0x25, 0x23, 0x25, 0x4c, 0x36,
0xfe, 0x53, 0x3c, 0x74, 0xa9, 0x0d, 0xc6, 0x33, 0xa9, 0x94, 0x80, 0x30, 0x31, 0x52, 0xf4, 0x18,
0xd2, 0x8e, 0x31, 0x31, 0xa9, 0x4d, 0xe6, 0xcf, 0xee, 0xc5, 0xb0, 0x74, 0x8d, 0x09, 0x91, 0x8e,
0x92, 0xa1, 0x6f, 0x20, 0x63, 0xe3, 0xa1, 0xf5, 0x1e, 0xdb, 0xa5, 0x2d, 0xca, 0x51, 0x8a, 0x1e,
0x4a, 0x65, 0xe8, 0x9b, 0xfa, 0x86, 0xea, 0x91, 0x56, 0x36, 0x21, 0x35, 0x73, 0x26, 0xd2, 0x3b,
0xd8, 0x59, 0x51, 0x19, 0xfa, 0x14, 0xf2, 0x4c, 0x65, 0xda, 0xa5, 0xee, 0x5c, 0xf2, 0xdb, 0x03,
0x06, 0xaa, 0xeb, 0xce, 0x25, 0xf1, 0x43, 0x16, 0x27, 0xde, 0x63, 0xdb, 0x31, 0x2c, 0x93, 0x47,
0x2d, 0x81, 0x02, 0xdf, 0x30, 0x98, 0x64, 0xc3, 0x6e, 0x8c, 0x52, 0x23, 0x7e, 0x97, 0x88, 0xf8,
0x1d, 0x7a, 0x08, 0x02, 0xdf, 0x9b, 0xda, 0x10, 0x8f, 0x03, 0x5c, 0x1e, 0x6a, 0x3b, 0xe8, 0x10,
0xb2, 0xfa, 0xc2, 0xbd, 0xd4, 0x1c, 0x63, 0xc2, 0x63, 0x61, 0x86, 0xbc, 0x77, 0x8d, 0x89, 0xf4,
0x18, 0xc4, 0xe8, 0x6d, 0x10, 0x72, 0x26, 0xac, 0x31, 0xe2, 0xdb, 0x65, 0xe8, 0x7b, 0x63, 0x24,
0xfd, 0x6d, 0x2a, 0x48, 0xcf, 0x2e, 0xe2, 0x16, 0x7a, 0x74, 0x40, 0xae, 0x53, 0x77, 0xf8, 0x81,
0x73, 0x2a, 0x7f, 0x43, 0x3f, 0x83, 0x3c, 0x7b, 0xd2, 0x86, 0xd6, 0x88, 0x45, 0xa5, 0xe2, 0xd9,
0x17, 0x6b, 0xef, 0xfa, 0x94, 0xfd, 0x53, 0x29, 0x8b, 0x0a, 0x8c, 0xb5, 0x6a, 0x8d, 0x30, 0x7a,
0x03, 0xdb, 0xcc, 0x08, 0x30, 0x77, 0x62, 0xa7, 0x94, 0x3e, 0x4e, 0x3d, 0xca, 0x9f, 0x3d, 0xbe,
0x6b, 0x31, 0xcc, 0xfc, 0xd8, 0x51, 0x4c, 0xd7, 0xbe, 0x51, 0x8b, 0x76, 0x08, 0x58, 0x7e, 0x0b,
0xbb, 0x31, 0x64, 0x48, 0x84, 0x94, 0x77, 0x09, 0x39, 0x95, 0x3c, 0xa2, 0x13, 0xd8, 0x64, 0x91,
0x95, 0xf9, 0xc7, 0x5e, 0x78, 0x5b, 0x2e, 0x37, 0x23, 0xf9, 0x2e, 0xf9, 0x6d, 0x42, 0x1a, 0x82,
0x10, 0x3c, 0x0c, 0xca, 0x43, 0xa6, 0xdf, 0x7a, 0xdd, 0x6a, 0xbf, 0x6d, 0x89, 0x1b, 0xe8, 0x00,
0x50, 0x57, 0x51, 0xdf, 0x28, 0xaa, 0x76, 0xd1, 0xe8, 0x56, 0x94, 0xba, 0xfc, 0xa6, 0xd1, 0x56,
0xc5, 0x04, 0x2a, 0xc3, 0x41, 0x45, 0xee, 0x55, 0xeb, 0xda, 0x1b, 0x45, 0xed, 0x36, 0xda, 0x2d,
0x82, 0xbe, 0x20, 0x00, 0x31, 0x89, 0x10, 0x14, 0x3b, 0xb2, 0xda, 0x6b, 0xc8, 0x4d, 0x4d, 0x55,
0x5e, 0x29, 0xd5, 0x9e, 0x98, 0x92, 0xfe, 0x31, 0x01, 0xf9, 0xc0, 0xfe, 0x81, 0x6b, 0x48, 0xdc,
0x76, 0x0d, 0xc9, 0xb8, 0x6b, 0xe0, 0x4a, 0x0b, 0x1e, 0x67, 0xe5, 0x1a, 0xa4, 0x2a, 0xec, 0xac,
0x10, 0x10, 0xc9, 0x6a, 0xfd, 0x4e, 0xb3, 0x51, 0x95, 0x7b, 0x8a, 0xd6, 0x51, 0x14, 0x55, 0xdc,
0x20, 0x27, 0xa9, 0xd6, 0xe5, 0x56, 0x4b, 0x69, 0x6a, 0xe7, 0xfd, 0x56, 0xad, 0xd1, 0xfa, 0x99,
0x76, 0x2e, 0x37, 0x9a, 0x4a, 0x4d, 0x4c, 0x48, 0xff, 0x95, 0x80, 0x7c, 0xf5, 0x52, 0x37, 0x4d,
0x3c, 0x6d, 0x98, 0x63, 0x0b, 0x3d, 0x82, 0xb4, 0x7b, 0x33, 0x67, 0xc1, 0xb0, 0x18, 0xd0, 0x2c,
0xa7, 0xe9, 0xdd, 0xcc, 0xb1, 0x4a, 0x29, 0xd0, 0xe7, 0x50, 0x9c, 0x5a, 0x43, 0x7d, 0xaa, 0x99,
0xd6, 0x08, 0x07, 0x72, 0xb1, 0x40, 0xa1, 0x2d, 0x6b, 0x84, 0x89, 0xa7, 0x7c, 0x41, 0x6c, 0x65,
0x66, 0xb9, 0x78, 0x49, 0xc6, 0xbc, 0xa1, 0xc0, 0xc0, 0x1e, 0xdd, 0xef, 0x43, 0x89, 0xad, 0x36,
0xd7, 0x6f, 0x88, 0x7b, 0x6b, 0x03, 0xdd, 0xc1, 0x3c, 0x3d, 0xa7, 0x29, 0xc3, 0x3e, 0xc5, 0x77,
0x18, 0xba, 0xa2, 0x3b, 0x98, 0x25, 0xe5, 0x9f, 0xc0, 0x21, 0xdf, 0x20, 0x86, 0x93, 0x25, 0xcc,
0x03, 0x46, 0x10, 0x65, 0x95, 0x7e, 0x93, 0x84, 0x62, 0x38, 0x5c, 0xdd, 0xe6, 0x56, 0xaf, 0x41,
0xf0, 0xb3, 0xbf, 0x31, 0x71, 0x4a, 0x49, 0x6a, 0xf2, 0x8f, 0xd6, 0x04, 0x3e, 0x3f, 0x54, 0x1b,
0x13, 0x6e, 0xed, 0x79, 0x7d, 0x09, 0x41, 0x2d, 0x28, 0x0c, 0x99, 0x46, 0x35, 0xc3, 0x1c, 0x5b,
0x4e, 0x29, 0x45, 0x57, 0xfb, 0x72, 0xdd, 0x6a, 0x81, 0x2b, 0xe2, 0xcb, 0x09, 0xc3, 0x00, 0xa8,
0xfc, 0x3d, 0x88, 0xd1, 0x0d, 0x63, 0xfc, 0x66, 0x2f, 0xe8, 0x37, 0x42, 0xc0, 0x43, 0xca, 0x7d,
0xd8, 0x59, 0xd9, 0xe2, 0x7f, 0xe2, 0x78, 0x01, 0xe6, 0xa0, 0xe3, 0x3d, 0x85, 0xed, 0x48, 0x74,
0xbf, 0x23, 0xb2, 0x4a, 0x7f, 0x93, 0x82, 0x3d, 0x5e, 0x85, 0x84, 0xb3, 0xe9, 0xb7, 0x90, 0x1b,
0x5e, 0xea, 0xd3, 0x29, 0x36, 0x79, 0xaa, 0x0e, 0xa6, 0x10, 0x9e, 0x9d, 0x3d, 0x3c, 0xc9, 0x89,
0x3e, 0x31, 0xfa, 0x31, 0x64, 0x9c, 0xc5, 0x70, 0x88, 0x1d, 0x87, 0x8b, 0xbd, 0xcc, 0x6f, 0x5d,
0x2f, 0x71, 0x76, 0x19, 0x01, 0xc9, 0x3d, 0x9c, 0x16, 0x3d, 0x81, 0x4d, 0x6c, 0xdb, 0x96, 0xcd,
0x33, 0xe9, 0xbd, 0x55, 0x26, 0x85, 0xa0, 0xeb, 0x1b, 0x2a, 0xa3, 0x43, 0x2f, 0x20, 0x33, 0xb7,
0xf1, 0x5c, 0xb7, 0x31, 0xcf, 0xa3, 0xe5, 0x98, 0xdb, 0xec, 0x30, 0x0a, 0xb2, 0x11, 0x27, 0x46,
0x67, 0xa1, 0x4c, 0x7a, 0x7f, 0x8d, 0x09, 0x54, 0xf0, 0xc4, 0x58, 0xa6, 0xd3, 0x9f, 0x40, 0x76,
0x6c, 0x98, 0xfa, 0xd4, 0xf8, 0x73, 0xcc, 0xf3, 0xe9, 0x27, 0x31, 0x7c, 0xe7, 0x9c, 0x84, 0x54,
0x49, 0x1e, 0x39, 0x7a, 0x0e, 0x19, 0x6e, 0x89, 0xa5, 0x4c, 0xe4, 0x64, 0x5c, 0xe5, 0xfc, 0xca,
0x88, 0x8c, 0x9c, 0xd2, 0x4b, 0xc4, 0x1d, 0xd8, 0x8e, 0xa8, 0x1a, 0xdd, 0x8f, 0xde, 0x8b, 0x10,
0xd4, 0x7d, 0x24, 0x49, 0x27, 0xa3, 0x49, 0x5a, 0x7a, 0x06, 0x62, 0xf4, 0x12, 0xee, 0x32, 0x91,
0xbf, 0x4f, 0xf3, 0xc0, 0x17, 0x54, 0x28, 0xea, 0x41, 0x71, 0x46, 0xde, 0x97, 0x39, 0x29, 0xb1,
0x36, 0x27, 0x71, 0x9e, 0xd3, 0x0b, 0xc6, 0x10, 0xcc, 0x49, 0x85, 0x59, 0x10, 0x86, 0x4e, 0x61,
0x77, 0x38, 0xc5, 0xba, 0x6d, 0x98, 0x13, 0x6d, 0x6e, 0x1b, 0x43, 0xac, 0xd9, 0xba, 0x8b, 0x79,
0x25, 0xb1, 0xe3, 0xa1, 0x3a, 0x04, 0xa3, 0xea, 0x2e, 0x46, 0x7f, 0x08, 0xe2, 0xf0, 0x52, 0xb7,
0x27, 0x78, 0xa4, 0x71, 0xd5, 0x79, 0xae, 0xbd, 0x17, 0xad, 0x77, 0x6a, 0xc6, 0x78, 0xac, 0x6e,
0x73, 0x6a, 0x0e, 0x73, 0xd0, 0x77, 0x50, 0xc0, 0xd7, 0x78, 0xb8, 0x20, 0xf7, 0xa0, 0x8d, 0xb1,
0x67, 0x4a, 0xcb, 0xfa, 0x58, 0xf1, 0xb0, 0xe7, 0x18, 0xab, 0x02, 0x0e, 0xbc, 0xa1, 0xaf, 0x60,
0x87, 0x05, 0x2f, 0xd7, 0xd6, 0x4d, 0x47, 0xa7, 0x77, 0xc9, 0x43, 0xa0, 0x48, 0x11, 0xbd, 0x25,
0x1c, 0x7d, 0x0d, 0xbb, 0x63, 0xcc, 0x8e, 0xa3, 0x39, 0xba, 0xab, 0xcd, 0x89, 0xba, 0x3f, 0x50,
0x63, 0x4a, 0xab, 0xdb, 0x63, 0x4c, 0xcf, 0xd3, 0xd5, 0xdd, 0x0e, 0xb6, 0x5f, 0x7f, 0x20, 0xc1,
0x9e, 0x52, 0xe3, 0x01, 0xa7, 0xa7, 0xb6, 0x93, 0x56, 0x05, 0x42, 0x48, 0x81, 0x5d, 0x3d, 0x5c,
0x94, 0x64, 0xc3, 0xd1, 0x73, 0xa5, 0x18, 0xcb, 0xad, 0x16, 0x63, 0xe5, 0xb7, 0x80, 0x56, 0xaf,
0x24, 0x26, 0x0c, 0x7d, 0x15, 0x0e, 0x43, 0x4b, 0xe5, 0x04, 0xb9, 0xc3, 0x71, 0x68, 0x37, 0xc6,
0x9b, 0x6e, 0x2b, 0xba, 0x2c, 0x40, 0xab, 0x7e, 0x74, 0x5b, 0x7a, 0x38, 0x02, 0xe0, 0xca, 0xbf,
0xe6, 0x0d, 0x93, 0xa0, 0xe6, 0x98, 0xd6, 0xaf, 0x8d, 0x11, 0x71, 0x84, 0x4b, 0x6c, 0x4c, 0x2e,
0x5d, 0xed, 0x92, 0x24, 0xa6, 0x14, 0x3d, 0x3d, 0x30, 0x50, 0x9d, 0x24, 0xa3, 0x7f, 0x4a, 0x42,
0x31, 0x1c, 0x59, 0x48, 0xb8, 0x66, 0x11, 0x88, 0x1d, 0x9d, 0x87, 0x99, 0x97, 0x00, 0xf4, 0x21,
0x58, 0x3e, 0x1c, 0xad, 0x09, 0x4e, 0xa7, 0xf4, 0xaf, 0x9a, 0xa3, 0x0c, 0xb4, 0x76, 0xbb, 0xbd,
0x49, 0x47, 0x75, 0xd8, 0xf5, 0x92, 0x9c, 0x4d, 0x9b, 0x75, 0x9d, 0x1a, 0x51, 0xfa, 0xd6, 0x40,
0xa1, 0x22, 0xdd, 0x6f, 0x3d, 0x3d, 0x16, 0xc9, 0x80, 0x4d, 0x76, 0x8a, 0x50, 0xb1, 0xb5, 0x0b,
0xdb, 0xbc, 0xd8, 0xea, 0xd6, 0xfb, 0xbd, 0x1a, 0x01, 0xd2, 0x4a, 0x4b, 0xae, 0x56, 0xdb, 0xfd,
0x56, 0x4f, 0xab, 0xb5, 0x95, 0xae, 0xd6, 0x6a, 0xf7, 0x34, 0xe5, 0x87, 0x46, 0xb7, 0x27, 0x26,
0x91, 0x04, 0x0f, 0x1a, 0xad, 0x6a, 0xfb, 0xa2, 0xd3, 0x54, 0x7a, 0x8a, 0xe6, 0x91, 0xa9, 0x0a,
0x59, 0x45, 0xee, 0x35, 0xda, 0x2d, 0x31, 0x25, 0xfd, 0x4b, 0x12, 0x8a, 0x61, 0x89, 0x96, 0x99,
0x8e, 0xcd, 0x33, 0xd8, 0x0b, 0x29, 0xc9, 0x42, 0x03, 0x0c, 0xfe, 0x76, 0x97, 0x52, 0x56, 0xe7,
0x13, 0xe9, 0xb8, 0xf9, 0xc4, 0x27, 0x90, 0x5b, 0xce, 0x25, 0x98, 0xdb, 0x31, 0x6b, 0x21, 0xc8,
0x33, 0xd8, 0x74, 0x5c, 0x12, 0x3a, 0xb6, 0xe8, 0x85, 0xdd, 0x5f, 0xa3, 0xca, 0x2e, 0xa1, 0x51,
0x19, 0x69, 0xd4, 0x66, 0x32, 0x51, 0x9b, 0x41, 0x8f, 0x21, 0x6b, 0x2d, 0x5c, 0x56, 0xea, 0x64,
0xd7, 0xcd, 0x30, 0x7c, 0x12, 0x22, 0xe0, 0x54, 0x77, 0xb1, 0xe3, 0x6a, 0xee, 0x35, 0xf5, 0x3f,
0x41, 0xcd, 0x32, 0x40, 0xef, 0x5a, 0xfa, 0x25, 0x08, 0x41, 0xef, 0x41, 0x2f, 0x40, 0xf0, 0xe2,
0xe9, 0xc0, 0x18, 0x79, 0xd1, 0x74, 0x37, 0xea, 0x6a, 0x15, 0x63, 0xa4, 0xe6, 0x67, 0xfe, 0xb3,
0x13, 0xe4, 0xd3, 0x9d, 0x2b, 0xaf, 0x4c, 0x5a, 0xe1, 0x93, 0x9d, 0x2b, 0x9f, 0x4f, 0x76, 0xae,
0x1c, 0xa9, 0x0f, 0xb0, 0x44, 0xa1, 0xcf, 0xef, 0x98, 0x4f, 0xb0, 0xe9, 0xc4, 0x43, 0x10, 0x16,
0xa6, 0xe1, 0x3a, 0xda, 0xd8, 0x98, 0x4e, 0xf9, 0x48, 0xa0, 0xa0, 0xe6, 0x29, 0xec, 0x9c, 0x82,
0x02, 0xcb, 0x56, 0x8c, 0x11, 0x59, 0x76, 0xc0, 0x5d, 0x37, 0x76, 0x9c, 0x41, 0x87, 0x19, 0x1f,
0xb3, 0xec, 0x3f, 0x27, 0x21, 0x1f, 0x88, 0xe3, 0xc4, 0x44, 0xb0, 0x39, 0x22, 0x59, 0x62, 0xa0,
0x4f, 0x75, 0xd2, 0x12, 0x32, 0xc3, 0x2b, 0x30, 0x68, 0x85, 0x01, 0x51, 0x0d, 0x04, 0x4e, 0xc6,
0x8c, 0x81, 0x79, 0xef, 0xc3, 0xb8, 0xd4, 0x70, 0x1a, 0xb2, 0x88, 0x3c, 0x63, 0xa3, 0x2f, 0x64,
0x33, 0xef, 0x4e, 0x35, 0xc3, 0x1c, 0xe1, 0x6b, 0x6a, 0xb2, 0x9b, 0x6a, 0xc1, 0x83, 0x36, 0x08,
0x30, 0x62, 0xd5, 0xe9, 0x68, 0x1a, 0xfd, 0x25, 0x08, 0xc1, 0x2d, 0xd0, 0x1e, 0x88, 0xed, 0x7e,
0xaf, 0xd3, 0x27, 0xde, 0x55, 0x55, 0x15, 0xb9, 0xa7, 0xd4, 0xc4, 0x0d, 0xf4, 0x10, 0x8e, 0x38,
0xb4, 0xd6, 0xef, 0x12, 0xb7, 0xec, 0x29, 0xad, 0x9a, 0x52, 0xd3, 0xda, 0xe7, 0xe7, 0xd5, 0xba,
0xdc, 0x20, 0xee, 0x7b, 0x04, 0x87, 0x41, 0x12, 0xb9, 0x46, 0xf0, 0xbd, 0xb6, 0x76, 0xae, 0x28,
0x5d, 0x31, 0x49, 0xfa, 0x2b, 0x8e, 0x3e, 0xef, 0x37, 0x9b, 0xef, 0xb4, 0x6e, 0x47, 0x69, 0x91,
0x7e, 0xe9, 0xaf, 0x53, 0x90, 0x67, 0x8a, 0x67, 0x06, 0x77, 0x47, 0xcb, 0x7d, 0x04, 0x40, 0x73,
0xd5, 0xd8, 0xb8, 0xf6, 0xaf, 0x24, 0x47, 0x20, 0xe7, 0x04, 0x40, 0x92, 0x84, 0x3e, 0x73, 0xf9,
0xa8, 0x8d, 0x3c, 0xa2, 0x63, 0x10, 0x66, 0x86, 0xa9, 0x91, 0x32, 0x59, 0x23, 0xa8, 0x34, 0x45,
0xc1, 0xcc, 0x30, 0x49, 0xb1, 0x2a, 0xcf, 0xe8, 0x04, 0x21, 0x30, 0x08, 0xa2, 0x9e, 0x29, 0xa8,
0xb0, 0x9c, 0xff, 0x10, 0x87, 0x61, 0x04, 0xa4, 0x89, 0xcf, 0x30, 0x87, 0xa1, 0x80, 0xae, 0x31,
0x41, 0x12, 0x14, 0x66, 0x8b, 0xa9, 0x6b, 0x10, 0x24, 0x15, 0x99, 0x65, 0xbc, 0x3c, 0x05, 0x76,
0x8d, 0x09, 0x11, 0xfa, 0x10, 0xb2, 0xb4, 0xed, 0x99, 0x2f, 0x06, 0xdc, 0xe1, 0x32, 0xe4, 0xbd,
0xb3, 0x18, 0xa0, 0x67, 0x90, 0xa3, 0x28, 0x7d, 0x34, 0xb2, 0x4b, 0x10, 0x29, 0x11, 0x48, 0x57,
0x24, 0x8f, 0x46, 0x36, 0x76, 0x1c, 0x95, 0xae, 0x40, 0x5e, 0x88, 0x38, 0xf4, 0x34, 0xb4, 0x41,
0x13, 0xa8, 0x06, 0xb2, 0x04, 0x40, 0x9a, 0x32, 0xf4, 0x3d, 0x1c, 0xcd, 0xf4, 0x6b, 0x3e, 0x19,
0x8d, 0xcb, 0xec, 0x05, 0x7a, 0xfe, 0x7b, 0x33, 0xfd, 0x9a, 0x4e, 0x49, 0xcf, 0xc3, 0x19, 0xfe,
0x55, 0x3a, 0xbb, 0x29, 0x6e, 0xbd, 0x4a, 0x67, 0xf3, 0xa2, 0x20, 0xfd, 0x6b, 0x02, 0x72, 0xbe,
0x4f, 0xa0, 0x53, 0x7f, 0xac, 0xc6, 0x1d, 0x67, 0x2f, 0xe2, 0x38, 0x2c, 0xdd, 0x7a, 0x44, 0xe8,
0x0c, 0xf6, 0xa7, 0x98, 0xf4, 0x60, 0xa3, 0x85, 0x4d, 0x73, 0x81, 0x36, 0x98, 0x5a, 0xc3, 0x2b,
0x87, 0x5f, 0xda, 0x2e, 0x45, 0xd6, 0x38, 0xae, 0x42, 0x51, 0xa8, 0x04, 0x19, 0xaf, 0x30, 0x60,
0x73, 0x50, 0xef, 0x15, 0xfd, 0x18, 0x0a, 0xe4, 0x1a, 0xa9, 0xae, 0x5c, 0x03, 0xdb, 0x34, 0xb2,
0x16, 0x03, 0x81, 0x8e, 0xe8, 0xaa, 0x67, 0x60, 0x5b, 0xcd, 0xcf, 0x0c, 0xd3, 0x7b, 0x79, 0x95,
0xce, 0xa6, 0xc4, 0xb4, 0xf4, 0x17, 0xfe, 0x41, 0x48, 0x50, 0xf9, 0x3f, 0x3b, 0x48, 0xfa, 0xa3,
0x0e, 0xb2, 0x19, 0x3a, 0x88, 0x74, 0x0a, 0xf9, 0xc0, 0xf8, 0x30, 0x6a, 0x7c, 0x89, 0xa8, 0xf1,
0x49, 0xff, 0x90, 0x00, 0x21, 0x38, 0x0c, 0xbd, 0x93, 0x03, 0xc9, 0x90, 0x1f, 0xeb, 0xc6, 0x54,
0x0b, 0x4c, 0x7f, 0x8a, 0x67, 0xc7, 0xb1, 0x93, 0xd5, 0xd3, 0x73, 0xdd, 0x98, 0x7a, 0x33, 0x85,
0xb1, 0xff, 0x4c, 0xf6, 0xa0, 0x4b, 0x38, 0x2e, 0xa9, 0x6b, 0xa9, 0x3b, 0xe5, 0x18, 0x41, 0x97,
0x42, 0xa4, 0x23, 0x80, 0x25, 0x2b, 0xda, 0x86, 0x7c, 0xa3, 0xf5, 0x46, 0x6e, 0x36, 0x6a, 0x9a,
0x7c, 0xd1, 0x13, 0x37, 0xa4, 0x3f, 0xf6, 0x7c, 0xba, 0x61, 0xce, 0x17, 0xe1, 0x04, 0x95, 0xb8,
0x3b, 0x41, 0x1d, 0x01, 0x10, 0x67, 0x0a, 0x0d, 0xd7, 0x73, 0x8e, 0x31, 0x61, 0x83, 0x75, 0xe9,
0x25, 0x08, 0xfc, 0x9e, 0x16, 0x2e, 0x59, 0x7d, 0x6d, 0x92, 0x0f, 0x2d, 0xc0, 0xdf, 0xa4, 0xbf,
0x4b, 0x42, 0x99, 0xb1, 0x5f, 0x58, 0x23, 0x63, 0x7c, 0x13, 0xf9, 0x28, 0x70, 0x47, 0xf8, 0x79,
0x0e, 0x60, 0xe2, 0x0f, 0x9a, 0x41, 0x8e, 0xe5, 0x25, 0xb5, 0xa8, 0xf9, 0xd0, 0x33, 0xab, 0x39,
0x13, 0x7f, 0xa0, 0x4f, 0x24, 0x17, 0xe6, 0x09, 0x93, 0x45, 0xc5, 0xf5, 0x1a, 0x81, 0xfd, 0xa8,
0xd1, 0x51, 0xac, 0x4a, 0x96, 0x67, 0x8f, 0x0e, 0x7a, 0xcb, 0x36, 0x9b, 0xeb, 0xb6, 0x3e, 0x73,
0x78, 0xf1, 0xf5, 0x6d, 0x84, 0x2d, 0xee, 0x10, 0xa7, 0x2d, 0xfc, 0x81, 0x43, 0x3a, 0x84, 0x17,
0xbb, 0xd8, 0x76, 0xa8, 0x40, 0xf4, 0xd5, 0x29, 0x7f, 0x0d, 0x7b, 0x71, 0x24, 0xf1, 0x9a, 0x94,
0xbe, 0x87, 0x4f, 0x62, 0xf7, 0xe2, 0xa3, 0xfc, 0x4f, 0x21, 0x1f, 0x18, 0x88, 0x78, 0xf6, 0xb8,
0x9c, 0x72, 0x48, 0xdf, 0xc1, 0xbd, 0x80, 0x5f, 0xb1, 0x44, 0xc6, 0xb5, 0x7d, 0xa7, 0xf5, 0xdb,
0xde, 0x00, 0x3f, 0xc8, 0xcb, 0x37, 0xfe, 0xd2, 0xab, 0xa5, 0xd8, 0x90, 0x6a, 0x37, 0xdc, 0xe1,
0x85, 0x4a, 0xa8, 0xaf, 0x60, 0x87, 0xa5, 0xf2, 0x85, 0x39, 0x5e, 0x4c, 0x43, 0xf9, 0x5c, 0xa4,
0x88, 0xfe, 0x12, 0x2e, 0x15, 0x41, 0xe8, 0x61, 0x7b, 0xe6, 0x70, 0x21, 0xa5, 0x5f, 0xa5, 0xa1,
0xc0, 0x01, 0x7c, 0xe7, 0x13, 0xd8, 0x21, 0x41, 0x36, 0xee, 0x93, 0xd9, 0xf6, 0x4c, 0xbf, 0x96,
0x83, 0x5f, 0x78, 0xfe, 0x00, 0x0e, 0x09, 0x2d, 0x3b, 0x66, 0x6c, 0x28, 0xac, 0x24, 0x4b, 0x09,
0xf5, 0x60, 0xa6, 0x5f, 0x53, 0xb9, 0x23, 0x81, 0x64, 0xa5, 0x11, 0x4c, 0x7d, 0x7c, 0x23, 0xd8,
0x85, 0xed, 0x70, 0xe0, 0xf2, 0x06, 0xb4, 0x27, 0x3e, 0x77, 0xe8, 0x5c, 0xa7, 0xcd, 0x60, 0x24,
0xf3, 0xa6, 0xb3, 0xa1, 0xf0, 0xe6, 0xa0, 0xe7, 0x70, 0x60, 0xe2, 0x6b, 0x97, 0x67, 0x98, 0xa1,
0x65, 0x8e, 0x35, 0x97, 0xf4, 0xae, 0x2e, 0x0f, 0x74, 0xbb, 0x04, 0x4b, 0x53, 0x4b, 0xd5, 0x32,
0xc7, 0x3d, 0x8a, 0x42, 0x7f, 0x04, 0x0f, 0x02, 0x4c, 0xeb, 0x1b, 0xce, 0x92, 0xcf, 0x1c, 0xc9,
0x4b, 0xe8, 0xa7, 0x50, 0x0e, 0x6e, 0x4b, 0x3a, 0x6e, 0xcd, 0x35, 0x66, 0xd8, 0x71, 0xf5, 0xd9,
0x9c, 0x77, 0xa1, 0xf7, 0x96, 0x5b, 0x13, 0x7c, 0xcf, 0x43, 0x97, 0x65, 0xd8, 0x8d, 0x39, 0x5a,
0xb0, 0xa3, 0x2c, 0xc4, 0x4c, 0xc6, 0xb2, 0xc1, 0xd6, 0xb1, 0x02, 0x7b, 0x2a, 0x9e, 0xe2, 0xf7,
0xba, 0xc9, 0x76, 0xf0, 0x2c, 0xb8, 0x08, 0x49, 0xbf, 0x09, 0x4c, 0x1a, 0x23, 0x54, 0xa6, 0x9f,
0xa6, 0x58, 0xc7, 0x4f, 0xc2, 0x83, 0xa0, 0xfa, 0xef, 0xd2, 0x7f, 0xa4, 0xa0, 0x10, 0x5a, 0x24,
0x98, 0x26, 0x12, 0xe1, 0x7c, 0xc7, 0xd6, 0x4d, 0xfa, 0xeb, 0xfe, 0xaf, 0x27, 0x0a, 0x9d, 0x95,
0xc1, 0x48, 0x3a, 0x32, 0x6b, 0x0c, 0x89, 0xf6, 0xdb, 0x0f, 0x45, 0x36, 0xd7, 0x0d, 0x45, 0x56,
0x4c, 0x79, 0xeb, 0xe3, 0x4d, 0xf9, 0x18, 0xf2, 0xc1, 0x69, 0x06, 0x2b, 0xc2, 0x82, 0xa0, 0x75,
0x83, 0x8c, 0x6c, 0xec, 0x20, 0xe3, 0xff, 0x6f, 0xc4, 0x50, 0x03, 0x21, 0x78, 0x0c, 0x36, 0x2a,
0x70, 0x30, 0x3d, 0x2f, 0x8b, 0x10, 0x19, 0xf2, 0xce, 0x51, 0x9e, 0xc4, 0x74, 0xf9, 0xb4, 0x9a,
0xe1, 0x62, 0x4a, 0x3f, 0x85, 0x7c, 0xa0, 0xf6, 0x23, 0x66, 0x62, 0x62, 0xf7, 0x83, 0x65, 0x5f,
0x71, 0xd9, 0xbc, 0x57, 0x84, 0x20, 0x4d, 0x2b, 0x47, 0xf6, 0x89, 0x87, 0x3e, 0x4b, 0x32, 0x64,
0xbd, 0xa4, 0x4a, 0xf0, 0x74, 0x10, 0xc1, 0x0c, 0x94, 0x3e, 0x93, 0xbe, 0x86, 0xa5, 0x22, 0xde,
0x35, 0xf0, 0xbe, 0x86, 0xc1, 0x68, 0xcf, 0x20, 0xfd, 0x55, 0x02, 0xf2, 0xb2, 0x73, 0xd5, 0x35,
0xf5, 0xb9, 0x73, 0x69, 0xb9, 0xb7, 0xd8, 0xe9, 0x6f, 0x53, 0xe5, 0x85, 0x6b, 0xf8, 0x54, 0xb4,
0x86, 0x0f, 0xd5, 0xb7, 0xe9, 0x70, 0x7d, 0x4b, 0x25, 0xab, 0x18, 0xa3, 0xdf, 0x41, 0xc9, 0xfe,
0x2d, 0x01, 0x7b, 0x41, 0xab, 0xf0, 0x45, 0x0c, 0x7d, 0x64, 0x0f, 0x78, 0xeb, 0x52, 0xbf, 0x31,
0x1f, 0xd9, 0x97, 0x74, 0x81, 0xd3, 0xb2, 0xbe, 0xf4, 0x33, 0x60, 0x8e, 0x48, 0xfc, 0x8e, 0x1a,
0x0f, 0x93, 0x53, 0xf0, 0x80, 0xd4, 0xd9, 0xbe, 0x06, 0xe4, 0x5a, 0xae, 0x3e, 0x25, 0xbe, 0xe0,
0xb0, 0x78, 0x89, 0x47, 0xbc, 0xf9, 0x11, 0x29, 0xa6, 0xab, 0xbb, 0x4e, 0x95, 0xc1, 0xc9, 0x92,
0x2c, 0x3f, 0x72, 0x0f, 0xe7, 0x4e, 0xcc, 0xfa, 0x5f, 0x7e, 0x28, 0xe9, 0x19, 0xec, 0xd1, 0xd0,
0xe0, 0x4b, 0xc3, 0x43, 0xe0, 0x2d, 0xe3, 0xb3, 0xdf, 0x24, 0x61, 0x3f, 0xc2, 0xc3, 0x53, 0xe8,
0xfa, 0x7b, 0x0b, 0x2e, 0x97, 0x0c, 0x0f, 0xd7, 0x24, 0x28, 0xcc, 0x6d, 0xfc, 0x5e, 0xf3, 0xf1,
0x6c, 0x46, 0x93, 0x27, 0xc0, 0x0a, 0xa7, 0x59, 0x13, 0x95, 0xd2, 0xeb, 0xa2, 0x52, 0x6d, 0x25,
0x2e, 0x6e, 0xd2, 0xb8, 0x78, 0x14, 0xeb, 0xea, 0xfe, 0x39, 0x22, 0xb1, 0xf0, 0x01, 0xe4, 0xbd,
0xb1, 0x1f, 0x91, 0x2b, 0x43, 0xdd, 0xd1, 0x9b, 0xfb, 0x35, 0x46, 0xcb, 0x43, 0xb9, 0xd7, 0xbc,
0xc1, 0xcc, 0x70, 0x24, 0x7a, 0x09, 0xf7, 0x7d, 0xd6, 0xf5, 0x11, 0xec, 0x80, 0x93, 0x47, 0xf2,
0xa2, 0xf4, 0xd2, 0x2b, 0xae, 0x48, 0xbc, 0x50, 0x75, 0x97, 0xdc, 0x3f, 0xbf, 0x97, 0x87, 0x20,
0x78, 0x5d, 0xe7, 0x15, 0xbe, 0x61, 0xa3, 0x1b, 0x41, 0xcd, 0xf3, 0xce, 0x93, 0x80, 0xa4, 0x3f,
0x01, 0x58, 0xf2, 0x91, 0x6a, 0x2c, 0xc0, 0xe0, 0x55, 0x63, 0x4b, 0x7a, 0x74, 0xca, 0x9b, 0x55,
0xda, 0x80, 0x25, 0xd7, 0x35, 0x60, 0xb4, 0x53, 0x25, 0x4f, 0x92, 0xea, 0x55, 0x6f, 0x41, 0xe1,
0xb8, 0x01, 0xbc, 0xe0, 0xd2, 0xd9, 0x14, 0xbc, 0x3a, 0x58, 0x0a, 0xb0, 0x50, 0xa9, 0xd8, 0xb3,
0x73, 0xf2, 0xa5, 0xff, 0xa1, 0x92, 0xf6, 0xbb, 0x05, 0xc8, 0xf5, 0xde, 0x2a, 0xf2, 0xeb, 0xa6,
0xd2, 0xed, 0x8a, 0x1b, 0x28, 0x0f, 0x19, 0xb9, 0x55, 0xad, 0xb7, 0xd5, 0xae, 0x98, 0x38, 0xf9,
0xcb, 0x04, 0xec, 0xc6, 0xcc, 0xd5, 0xe8, 0xa7, 0xde, 0x1e, 0xfb, 0x30, 0xca, 0x3e, 0x83, 0xb6,
0x3b, 0x4a, 0x4b, 0xdc, 0x40, 0x45, 0x00, 0x06, 0xa7, 0xef, 0x09, 0xb4, 0x03, 0x05, 0xf6, 0xae,
0xfc, 0xd0, 0x69, 0xa8, 0x4a, 0x4d, 0x4c, 0xa2, 0x12, 0xec, 0x85, 0x59, 0xfb, 0x9d, 0x9a, 0xdc,
0x53, 0xc4, 0x14, 0x12, 0x41, 0x60, 0x98, 0x6a, 0xb3, 0xdd, 0x55, 0x6a, 0x62, 0x1a, 0xdd, 0x83,
0xdd, 0x30, 0x2d, 0xfd, 0x8e, 0x2c, 0x6e, 0x9e, 0x7c, 0x03, 0x59, 0x4f, 0x59, 0x84, 0xad, 0xd7,
0x50, 0x54, 0xad, 0xa6, 0x9c, 0xcb, 0xfd, 0x66, 0x4f, 0xdc, 0x40, 0x00, 0x5b, 0x14, 0xf2, 0x54,
0x4c, 0xf8, 0xcf, 0xcf, 0xc4, 0xe4, 0xc9, 0xaf, 0x13, 0x00, 0xcb, 0xca, 0x16, 0xed, 0xc2, 0x76,
0x5b, 0xad, 0x29, 0xaa, 0xd6, 0xed, 0x57, 0x2e, 0x1a, 0x3d, 0x36, 0xa6, 0xd9, 0x81, 0x02, 0x03,
0x56, 0x9b, 0x8a, 0x4c, 0x24, 0xa6, 0x53, 0x55, 0x06, 0xe2, 0x5f, 0xaa, 0x9b, 0xef, 0xb4, 0xf3,
0x46, 0xb3, 0x49, 0x4f, 0x83, 0xa0, 0xc8, 0x70, 0xca, 0x0f, 0x4a, 0xb5, 0x4f, 0x96, 0x48, 0x2d,
0x61, 0x55, 0xb9, 0x55, 0x55, 0x9a, 0xf4, 0x24, 0xfe, 0xb2, 0x9e, 0x22, 0x36, 0x89, 0xdc, 0x0c,
0xc4, 0x3f, 0x21, 0x6f, 0x9d, 0xfd, 0x3a, 0xe3, 0x7f, 0x3c, 0x94, 0xfd, 0x81, 0x28, 0xfa, 0x39,
0x14, 0xc3, 0x3f, 0xf7, 0x42, 0x0f, 0x02, 0x05, 0x47, 0xcc, 0x6f, 0xd1, 0xca, 0x9f, 0xae, 0xc5,
0x73, 0xcb, 0xe9, 0x41, 0x3e, 0xf0, 0x3b, 0x27, 0xf4, 0x70, 0xa5, 0xfd, 0x8a, 0xfe, 0xd2, 0xab,
0x2c, 0xdd, 0x46, 0xc2, 0x57, 0xfd, 0x05, 0x14, 0x42, 0xfd, 0x0d, 0xfa, 0xec, 0x23, 0x3a, 0xad,
0xf2, 0xe7, 0xb7, 0x13, 0x2d, 0x25, 0x0e, 0xfc, 0x08, 0x6a, 0x45, 0xe2, 0xd5, 0x1f, 0x66, 0xad,
0x48, 0x1c, 0xf7, 0x1b, 0xaa, 0x5e, 0x78, 0x92, 0x10, 0x5d, 0x75, 0xf5, 0x27, 0x4f, 0x2b, 0xab,
0xc6, 0xfc, 0x8e, 0x09, 0xfd, 0x3c, 0x64, 0x65, 0xc7, 0x71, 0xa3, 0x91, 0x60, 0x0b, 0x57, 0x7e,
0x78, 0x0b, 0x05, 0x5f, 0xf2, 0x1d, 0xec, 0xfb, 0xdf, 0x23, 0x68, 0x98, 0xe6, 0xf6, 0x81, 0x96,
0x31, 0x36, 0xee, 0x97, 0x53, 0xe5, 0xa3, 0xe8, 0xc0, 0x37, 0x84, 0x7e, 0x94, 0x78, 0x9a, 0x40,
0x2f, 0x60, 0x93, 0xb6, 0x30, 0x68, 0x3f, 0xda, 0xd2, 0x30, 0xe9, 0x0e, 0xe2, 0x3b, 0x1d, 0xd4,
0x82, 0xfd, 0x50, 0xb9, 0xeb, 0x27, 0xeb, 0xa3, 0xf8, 0x72, 0x78, 0x75, 0xbd, 0x70, 0x21, 0xdf,
0x82, 0xc2, 0xba, 0x75, 0xe2, 0x72, 0x66, 0xf9, 0xc1, 0x3a, 0xf4, 0xf2, 0x16, 0x02, 0x81, 0x39,
0x7a, 0x0b, 0x2b, 0xb1, 0x7e, 0xe5, 0x16, 0x56, 0x03, 0x6e, 0xe5, 0xf7, 0x7e, 0xf1, 0xa3, 0x89,
0xe1, 0x5e, 0x2e, 0x06, 0xa7, 0x43, 0x6b, 0xf6, 0x64, 0x6a, 0x4c, 0x2e, 0x5d, 0xd3, 0x30, 0x27,
0x53, 0x7d, 0xe0, 0x3c, 0x21, 0xcc, 0x4f, 0xf8, 0x0a, 0x83, 0x2d, 0xfa, 0xb3, 0xd1, 0xe7, 0xff,
0x1d, 0x00, 0x00, 0xff, 0xff, 0xe2, 0x3b, 0x3f, 0x30, 0x4a, 0x2a, 0x00, 0x00,
// 3822 bytes of a gzipped FileDescriptorProto
0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xcc, 0x3a, 0x4b, 0x73, 0xe3, 0xd8,
0x5a, 0xf1, 0x23, 0xb1, 0xfd, 0x59, 0x76, 0x94, 0x93, 0x47, 0x3b, 0x9e, 0x4e, 0x4f, 0x5a, 0x33,
0x77, 0xc8, 0x64, 0x66, 0x32, 0x33, 0xe9, 0xb9, 0x4d, 0xdf, 0xb9, 0xcd, 0x80, 0x6c, 0x2b, 0xd7,
0xee, 0x76, 0x6c, 0x8f, 0x6c, 0x77, 0x4f, 0x5f, 0x8a, 0x52, 0xc9, 0xf6, 0xb1, 0x23, 0x62, 0x4b,
0x46, 0x92, 0xbb, 0x13, 0x16, 0x77, 0x71, 0x77, 0xfc, 0x00, 0x0a, 0xaa, 0x28, 0x76, 0xec, 0xa1,
0x60, 0xc3, 0x92, 0x62, 0xc1, 0xcf, 0xe0, 0x42, 0x15, 0x3f, 0x80, 0x2d, 0x3b, 0xea, 0x3c, 0x24,
0x4b, 0xb2, 0x9c, 0x34, 0x03, 0x54, 0xdd, 0x4d, 0x22, 0x7d, 0x8f, 0x73, 0xbe, 0xef, 0x9c, 0xef,
0x2d, 0x83, 0xa8, 0x2f, 0x86, 0xae, 0x61, 0x99, 0x18, 0xdb, 0x67, 0x73, 0xdb, 0x72, 0x2d, 0x94,
0x99, 0x5b, 0xd6, 0xd4, 0x9e, 0x0f, 0xa5, 0x5f, 0x27, 0x60, 0x5f, 0xc5, 0x0e, 0xb6, 0xdf, 0x62,
0x79, 0x38, 0xb4, 0x16, 0xa6, 0xab, 0xe2, 0x3f, 0x59, 0x60, 0xc7, 0x45, 0x1f, 0x41, 0x41, 0x67,
0x10, 0xed, 0xad, 0x3e, 0x5d, 0xe0, 0x52, 0xe2, 0x38, 0x71, 0x92, 0x56, 0x05, 0x0e, 0x7c, 0x45,
0x60, 0xe8, 0x27, 0x50, 0xf4, 0x88, 0xf0, 0xcd, 0xdc, 0xb0, 0x6f, 0x4b, 0xc9, 0xe3, 0xc4, 0x49,
0x41, 0xf5, 0x58, 0x15, 0x0a, 0x44, 0x47, 0x00, 0xae, 0xad, 0x8f, 0xb0, 0xad, 0x5d, 0xe3, 0xdb,
0x52, 0xea, 0x38, 0x71, 0x22, 0xa8, 0x39, 0x06, 0x79, 0x89, 0x6f, 0xa5, 0x6b, 0x38, 0x88, 0xca,
0xe0, 0xcc, 0x2d, 0xd3, 0x61, 0xeb, 0xfb, 0xb2, 0x53, 0xe6, 0x04, 0x65, 0x2e, 0x2c, 0xa1, 0x2f,
0xf1, 0x2d, 0x3a, 0x85, 0x1d, 0xc3, 0x34, 0x5c, 0x43, 0x9f, 0x6a, 0x03, 0xdd, 0x1d, 0x5e, 0x51,
0xca, 0x24, 0xa5, 0xdc, 0xe6, 0x88, 0x0a, 0x81, 0x93, 0xcd, 0xfe, 0x23, 0x01, 0xa5, 0x2e, 0xd9,
0xcb, 0x6e, 0x98, 0x86, 0x1b, 0x51, 0xfa, 0xe9, 0x52, 0xe9, 0xb9, 0x65, 0x98, 0x2e, 0xdd, 0x2e,
0x7f, 0xbe, 0x73, 0xc6, 0xcf, 0xeb, 0xac, 0xbd, 0x70, 0x3b, 0x04, 0xe1, 0x9f, 0x03, 0x7d, 0x0b,
0x9e, 0x83, 0x33, 0xb4, 0x8d, 0xb9, 0xcb, 0x77, 0xf7, 0x56, 0xeb, 0x52, 0xe0, 0xea, 0x99, 0xa6,
0xde, 0xeb, 0x4c, 0xd3, 0xf7, 0x9f, 0xe9, 0x66, 0xf4, 0x4c, 0x3f, 0x80, 0xc3, 0x18, 0x2d, 0xd9,
0xb1, 0x4a, 0x0b, 0xef, 0x08, 0xba, 0x8b, 0xc1, 0xcc, 0x70, 0xdb, 0xf6, 0x08, 0xdb, 0xde, 0x11,
0x7c, 0x02, 0x29, 0xdd, 0xb9, 0xe6, 0x8a, 0x23, 0x5f, 0x71, 0x46, 0x2f, 0x3b, 0xd7, 0xf5, 0x0d,
0x95, 0x10, 0x10, 0xba, 0x81, 0x31, 0xa2, 0x7a, 0xae, 0xd2, 0x55, 0x8c, 0x11, 0xa1, 0x1b, 0x18,
0xa3, 0x4a, 0x0e, 0x32, 0x23, 0xec, 0xea, 0xc6, 0xd4, 0x21, 0xc6, 0x76, 0x18, 0xb3, 0x2f, 0xbf,
0xeb, 0xe7, 0x50, 0x30, 0xcc, 0xb7, 0xfa, 0xd4, 0x18, 0x69, 0x16, 0x41, 0x70, 0x11, 0xf6, 0xfd,
0xa5, 0x1b, 0x0c, 0x4b, 0xb9, 0xea, 0x1b, 0xaa, 0x60, 0x04, 0xde, 0xd1, 0x43, 0xc8, 0xea, 0xc3,
0x21, 0x9e, 0xbb, 0x98, 0xc9, 0x94, 0xad, 0x6f, 0xa8, 0x3e, 0x24, 0x28, 0x44, 0xd3, 0xd3, 0xbd,
0xaa, 0x9b, 0x43, 0x3c, 0x0d, 0xe9, 0xfe, 0x15, 0xec, 0xd1, 0xad, 0x35, 0xd3, 0x32, 0x87, 0x58,
0x9b, 0xdb, 0xd8, 0x98, 0xe9, 0x13, 0xcc, 0x8d, 0x0e, 0x51, 0x5c, 0x8b, 0xa0, 0x3a, 0x1c, 0xb3,
0x3c, 0xe6, 0xd0, 0x6a, 0xfc, 0x98, 0xff, 0x2d, 0x09, 0x7b, 0xd5, 0xa9, 0x81, 0x4d, 0x57, 0x66,
0xe6, 0x7a, 0x89, 0x1d, 0x47, 0x9f, 0x60, 0xf4, 0x0d, 0x6c, 0x0d, 0xad, 0xd9, 0xcc, 0xf0, 0xec,
0xab, 0xec, 0xeb, 0xc8, 0x6f, 0xaa, 0x4a, 0xb1, 0x33, 0x6c, 0xba, 0xf5, 0x0d, 0x95, 0xd3, 0xa2,
0xe7, 0x90, 0x73, 0x16, 0x03, 0x62, 0x5f, 0x03, 0xcc, 0xcf, 0xfd, 0x61, 0x94, 0xb1, 0xcb, 0x08,
0xe6, 0x64, 0xb7, 0xfa, 0x86, 0xba, 0x64, 0x40, 0x4f, 0x60, 0x8b, 0x1d, 0x07, 0x35, 0xba, 0xfc,
0xf9, 0xe1, 0xd2, 0xa6, 0x89, 0xd0, 0x97, 0xc4, 0x3f, 0x64, 0x4a, 0x40, 0xb6, 0x64, 0xa4, 0x84,
0xc9, 0xc6, 0x7f, 0x8c, 0x87, 0x2e, 0xb5, 0xc1, 0x78, 0x26, 0x95, 0x12, 0x10, 0x26, 0x46, 0x8a,
0xbe, 0x80, 0xb4, 0x63, 0x4c, 0x4c, 0x6a, 0x93, 0xf9, 0xf3, 0x07, 0x31, 0x2c, 0x5d, 0x63, 0x42,
0xa4, 0xa3, 0x64, 0xe8, 0x1b, 0xc8, 0xd8, 0x78, 0x68, 0xbd, 0xc5, 0x76, 0x69, 0x8b, 0x72, 0x94,
0xa2, 0x4a, 0xa9, 0x0c, 0x7d, 0x5b, 0xdf, 0x50, 0x3d, 0xd2, 0xca, 0x26, 0xa4, 0x66, 0xce, 0x44,
0x7a, 0x03, 0x3b, 0x2b, 0x47, 0x86, 0x3e, 0x84, 0x3c, 0x3b, 0x32, 0xed, 0x4a, 0x77, 0xae, 0xf8,
0xed, 0x01, 0x03, 0xd5, 0x75, 0xe7, 0x8a, 0xf8, 0x21, 0x8b, 0x13, 0x6f, 0xb1, 0xed, 0x18, 0x96,
0xc9, 0xa3, 0x96, 0x40, 0x81, 0xaf, 0x18, 0x4c, 0xb2, 0x61, 0x37, 0xe6, 0x50, 0x23, 0x7e, 0x97,
0x88, 0xf8, 0x1d, 0x7a, 0x0c, 0x02, 0xdf, 0x9b, 0xda, 0x10, 0x8f, 0x03, 0x5c, 0x1e, 0x6a, 0x3b,
0xe8, 0x10, 0xb2, 0xfa, 0xc2, 0xbd, 0xd2, 0x1c, 0x63, 0xc2, 0x63, 0x61, 0x86, 0xbc, 0x77, 0x8d,
0x89, 0xf4, 0x05, 0x88, 0xd1, 0xdb, 0x20, 0xe4, 0x4c, 0x58, 0x63, 0xc4, 0xb7, 0xcb, 0xd0, 0xf7,
0xc6, 0x48, 0xfa, 0x9b, 0x54, 0x90, 0x9e, 0x5d, 0xc4, 0x1d, 0xf4, 0xe8, 0x80, 0x5c, 0xa7, 0xee,
0x70, 0x85, 0x73, 0x2a, 0x7f, 0x43, 0xbf, 0x80, 0x3c, 0x7b, 0xd2, 0x86, 0xd6, 0x88, 0x45, 0xa5,
0xe2, 0xf9, 0x27, 0x6b, 0xef, 0xfa, 0x8c, 0xfd, 0x53, 0x29, 0x8b, 0x0a, 0x8c, 0xb5, 0x6a, 0x8d,
0x30, 0x7a, 0x05, 0xdb, 0xcc, 0x08, 0x30, 0x77, 0x62, 0xa7, 0x94, 0x3e, 0x4e, 0x9d, 0xe4, 0xcf,
0xbf, 0xb8, 0x6f, 0x31, 0xcc, 0xfc, 0xd8, 0x51, 0x4c, 0xd7, 0xbe, 0x55, 0x8b, 0x76, 0x08, 0x58,
0x7e, 0x0d, 0xbb, 0x31, 0x64, 0x48, 0x84, 0x94, 0x77, 0x09, 0x39, 0x95, 0x3c, 0xa2, 0x53, 0xd8,
0x64, 0x91, 0x95, 0xf9, 0xc7, 0x5e, 0x78, 0x5b, 0x2e, 0x37, 0x23, 0xf9, 0x36, 0xf9, 0x2c, 0x21,
0x0d, 0x41, 0x08, 0x2a, 0x83, 0xf2, 0x90, 0xe9, 0xb7, 0x5e, 0xb6, 0xda, 0xaf, 0x5b, 0xe2, 0x06,
0x3a, 0x00, 0xd4, 0x55, 0xd4, 0x57, 0x8a, 0xaa, 0x5d, 0x36, 0xba, 0x15, 0xa5, 0x2e, 0xbf, 0x6a,
0xb4, 0x55, 0x31, 0x81, 0xca, 0x70, 0x50, 0x91, 0x7b, 0xd5, 0xba, 0xf6, 0x4a, 0x51, 0xbb, 0x8d,
0x76, 0x8b, 0xa0, 0x2f, 0x09, 0x40, 0x4c, 0x22, 0x04, 0xc5, 0x8e, 0xac, 0xf6, 0x1a, 0x72, 0x53,
0x53, 0x95, 0x17, 0x4a, 0xb5, 0x27, 0xa6, 0xa4, 0x7f, 0x48, 0x40, 0x3e, 0xb0, 0x7f, 0xe0, 0x1a,
0x12, 0x77, 0x5d, 0x43, 0x32, 0xee, 0x1a, 0xf8, 0xa1, 0x05, 0xd5, 0x59, 0xb9, 0x06, 0xa9, 0x0a,
0x3b, 0x2b, 0x04, 0x44, 0xb2, 0x5a, 0xbf, 0xd3, 0x6c, 0x54, 0xe5, 0x9e, 0xa2, 0x75, 0x14, 0x45,
0x15, 0x37, 0x88, 0x26, 0xd5, 0xba, 0xdc, 0x6a, 0x29, 0x4d, 0xed, 0xa2, 0xdf, 0xaa, 0x35, 0x5a,
0xbf, 0xd0, 0x2e, 0xe4, 0x46, 0x53, 0xa9, 0x89, 0x09, 0xe9, 0xbf, 0x12, 0x90, 0xaf, 0x5e, 0xe9,
0xa6, 0x89, 0xa7, 0x0d, 0x73, 0x6c, 0xa1, 0x13, 0x48, 0xbb, 0xb7, 0x73, 0x16, 0x0c, 0x8b, 0x81,
0x93, 0xe5, 0x34, 0xbd, 0xdb, 0x39, 0x56, 0x29, 0x05, 0xfa, 0x18, 0x8a, 0x53, 0x6b, 0xa8, 0x4f,
0x35, 0xd3, 0x1a, 0xe1, 0x40, 0x2e, 0x16, 0x28, 0xb4, 0x65, 0x8d, 0x30, 0xf1, 0x94, 0x4f, 0x88,
0xad, 0xcc, 0x2c, 0x17, 0x2f, 0xc9, 0x98, 0x37, 0x14, 0x18, 0xd8, 0xa3, 0xfb, 0x5d, 0x28, 0xb1,
0xd5, 0xe6, 0xfa, 0x2d, 0x71, 0x6f, 0x6d, 0xa0, 0x3b, 0x98, 0xa7, 0xe7, 0x34, 0x65, 0xd8, 0xa7,
0xf8, 0x0e, 0x43, 0x57, 0x74, 0x07, 0xb3, 0xa4, 0xfc, 0x33, 0x38, 0xe4, 0x1b, 0xc4, 0x70, 0xb2,
0x84, 0x79, 0xc0, 0x08, 0xa2, 0xac, 0xd2, 0x6f, 0x92, 0x50, 0x0c, 0x87, 0xab, 0xbb, 0xdc, 0xea,
0x25, 0x08, 0x7e, 0xf6, 0x37, 0x26, 0x4e, 0x29, 0x49, 0x4d, 0xfe, 0x64, 0x4d, 0xe0, 0xf3, 0x43,
0xb5, 0x31, 0xe1, 0xd6, 0x9e, 0xd7, 0x97, 0x10, 0xd4, 0x82, 0xc2, 0x90, 0x9d, 0xa8, 0x66, 0x98,
0x63, 0xcb, 0x29, 0xa5, 0xe8, 0x6a, 0x9f, 0xae, 0x5b, 0x2d, 0x70, 0x45, 0x7c, 0x39, 0x61, 0x18,
0x00, 0x95, 0xbf, 0x03, 0x31, 0xba, 0x61, 0x8c, 0xdf, 0xec, 0x05, 0xfd, 0x46, 0x08, 0x78, 0x48,
0xb9, 0x0f, 0x3b, 0x2b, 0x5b, 0xfc, 0x4f, 0x1c, 0x2f, 0xc0, 0x1c, 0x74, 0xbc, 0xaf, 0x60, 0x3b,
0x12, 0xdd, 0xef, 0x89, 0xac, 0xd2, 0x5f, 0xa5, 0x60, 0x8f, 0x57, 0x21, 0xe1, 0x6c, 0xfa, 0x0c,
0x72, 0xc3, 0x2b, 0x7d, 0x3a, 0xc5, 0x26, 0x4f, 0xd5, 0xc1, 0x14, 0xc2, 0xb3, 0xb3, 0x87, 0x27,
0x39, 0xd1, 0x27, 0x46, 0x3f, 0x85, 0x8c, 0xb3, 0x18, 0x0e, 0xb1, 0xe3, 0x70, 0xb1, 0x97, 0xf9,
0xad, 0xeb, 0x25, 0xce, 0x2e, 0x23, 0x20, 0xb9, 0x87, 0xd3, 0xa2, 0x2f, 0x61, 0x13, 0xdb, 0xb6,
0x65, 0xf3, 0x4c, 0xfa, 0x60, 0x95, 0x49, 0x21, 0xe8, 0xfa, 0x86, 0xca, 0xe8, 0xd0, 0x53, 0xc8,
0xcc, 0x6d, 0x3c, 0xd7, 0x6d, 0xcc, 0xf3, 0x68, 0x39, 0xe6, 0x36, 0x3b, 0x8c, 0x82, 0x6c, 0xc4,
0x89, 0xd1, 0x79, 0x28, 0x93, 0x3e, 0x5c, 0x63, 0x02, 0x15, 0x3c, 0x31, 0x96, 0xe9, 0xf4, 0x67,
0x90, 0x1d, 0x1b, 0xa6, 0x3e, 0x35, 0xfe, 0x14, 0xf3, 0x7c, 0xfa, 0x41, 0x0c, 0xdf, 0x05, 0x27,
0x21, 0x55, 0x92, 0x47, 0x8e, 0x9e, 0x40, 0x86, 0x5b, 0x62, 0x29, 0x13, 0xd1, 0x8c, 0x1f, 0x39,
0xbf, 0x32, 0x22, 0x23, 0xa7, 0xf4, 0x12, 0x71, 0x07, 0xb6, 0x23, 0x47, 0x8d, 0x1e, 0x46, 0xef,
0x45, 0x08, 0x9e, 0x7d, 0x24, 0x49, 0x27, 0xa3, 0x49, 0x5a, 0xfa, 0x1a, 0xc4, 0xe8, 0x25, 0xdc,
0x67, 0x22, 0x7f, 0x97, 0xe6, 0x81, 0x2f, 0x78, 0xa0, 0xa8, 0x07, 0xc5, 0x19, 0x79, 0x5f, 0xe6,
0xa4, 0xc4, 0xda, 0x9c, 0xc4, 0x79, 0xce, 0x2e, 0x19, 0x43, 0x30, 0x27, 0x15, 0x66, 0x41, 0x18,
0x3a, 0x83, 0xdd, 0xe1, 0x14, 0xeb, 0xb6, 0x61, 0x4e, 0xb4, 0xb9, 0x6d, 0x0c, 0xb1, 0x66, 0xeb,
0x2e, 0xe6, 0x95, 0xc4, 0x8e, 0x87, 0xea, 0x10, 0x8c, 0xaa, 0xbb, 0x18, 0xfd, 0x3e, 0x88, 0xc3,
0x2b, 0xdd, 0x9e, 0xe0, 0x91, 0xc6, 0x8f, 0xce, 0x73, 0xed, 0xbd, 0x68, 0xbd, 0x53, 0x33, 0xc6,
0x63, 0x75, 0x9b, 0x53, 0x73, 0x98, 0x83, 0xbe, 0x85, 0x02, 0xbe, 0xc1, 0xc3, 0x05, 0xb9, 0x07,
0x6d, 0x8c, 0x3d, 0x53, 0x5a, 0xd6, 0xc7, 0x8a, 0x87, 0xbd, 0xc0, 0x58, 0x15, 0x70, 0xe0, 0x0d,
0x7d, 0x06, 0x3b, 0x2c, 0x78, 0xb9, 0xb6, 0x6e, 0x3a, 0x3a, 0xbd, 0x4b, 0x1e, 0x02, 0x45, 0x8a,
0xe8, 0x2d, 0xe1, 0xe8, 0x73, 0xd8, 0x1d, 0x63, 0xa6, 0x8e, 0xe6, 0xe8, 0xae, 0x36, 0x27, 0xc7,
0xfd, 0x8e, 0x1a, 0x53, 0x5a, 0xdd, 0x1e, 0x63, 0xaa, 0x4f, 0x57, 0x77, 0x3b, 0xd8, 0x7e, 0xf9,
0x8e, 0x04, 0x7b, 0x4a, 0x8d, 0x07, 0x9c, 0x9e, 0xda, 0x4e, 0x5a, 0x15, 0x08, 0x21, 0x05, 0x76,
0xf5, 0x70, 0x51, 0x92, 0x0d, 0x47, 0xcf, 0x95, 0x62, 0x2c, 0xb7, 0x5a, 0x8c, 0x95, 0x5f, 0x03,
0x5a, 0xbd, 0x92, 0x98, 0x30, 0xf4, 0x59, 0x38, 0x0c, 0x2d, 0x0f, 0x27, 0xc8, 0x1d, 0x8e, 0x43,
0xbb, 0x31, 0xde, 0x74, 0x57, 0xd1, 0x65, 0x01, 0x5a, 0xf5, 0xa3, 0xbb, 0xd2, 0xc3, 0x11, 0x00,
0x3f, 0xfc, 0x1b, 0xde, 0x30, 0x09, 0x6a, 0x8e, 0x9d, 0xfa, 0x8d, 0x31, 0x22, 0x8e, 0x70, 0x85,
0x8d, 0xc9, 0x95, 0xab, 0x5d, 0x91, 0xc4, 0x94, 0xa2, 0xda, 0x03, 0x03, 0xd5, 0x49, 0x32, 0xfa,
0xc7, 0x24, 0x14, 0xc3, 0x91, 0x85, 0x84, 0x6b, 0x16, 0x81, 0x98, 0xea, 0x3c, 0xcc, 0x3c, 0x07,
0xa0, 0x0f, 0xc1, 0xf2, 0xe1, 0x68, 0x4d, 0x70, 0x3a, 0xa3, 0x7f, 0xd5, 0x1c, 0x65, 0xa0, 0xb5,
0xdb, 0xdd, 0x4d, 0x3a, 0xaa, 0xc3, 0xae, 0x97, 0xe4, 0x6c, 0xda, 0xac, 0xeb, 0xd4, 0x88, 0xd2,
0x77, 0x06, 0x0a, 0x15, 0xe9, 0x7e, 0xeb, 0xe9, 0xb1, 0x48, 0x06, 0x6c, 0x32, 0x2d, 0x42, 0xc5,
0xd6, 0x2e, 0x6c, 0xf3, 0x62, 0xab, 0x5b, 0xef, 0xf7, 0x6a, 0x04, 0x48, 0x2b, 0x2d, 0xb9, 0x5a,
0x6d, 0xf7, 0x5b, 0x3d, 0xad, 0xd6, 0x56, 0xba, 0x5a, 0xab, 0xdd, 0xd3, 0x94, 0x1f, 0x1a, 0xdd,
0x9e, 0x98, 0x44, 0x12, 0x3c, 0x6a, 0xb4, 0xaa, 0xed, 0xcb, 0x4e, 0x53, 0xe9, 0x29, 0x9a, 0x47,
0xa6, 0x2a, 0x64, 0x15, 0xb9, 0xd7, 0x68, 0xb7, 0xc4, 0x94, 0xf4, 0xcf, 0x49, 0x28, 0x86, 0x25,
0x5a, 0x66, 0x3a, 0x36, 0xcf, 0x60, 0x2f, 0xa4, 0x24, 0x0b, 0x0d, 0x30, 0xf8, 0xdb, 0x7d, 0x87,
0xb2, 0x3a, 0x9f, 0x48, 0xc7, 0xcd, 0x27, 0x3e, 0x80, 0xdc, 0x72, 0x2e, 0xc1, 0xdc, 0x8e, 0x59,
0x0b, 0x41, 0x9e, 0xc3, 0xa6, 0xe3, 0x92, 0xd0, 0xb1, 0x45, 0x2f, 0xec, 0xe1, 0x9a, 0xa3, 0xec,
0x12, 0x1a, 0x95, 0x91, 0x46, 0x6d, 0x26, 0x13, 0xb5, 0x19, 0xf4, 0x05, 0x64, 0xad, 0x85, 0xcb,
0x4a, 0x9d, 0xec, 0xba, 0x19, 0x86, 0x4f, 0x42, 0x04, 0x9c, 0xea, 0x2e, 0x76, 0x5c, 0xcd, 0xbd,
0xa1, 0xfe, 0x27, 0xa8, 0x59, 0x06, 0xe8, 0xdd, 0x48, 0xbf, 0x02, 0x21, 0xe8, 0x3d, 0xe8, 0x29,
0x08, 0x5e, 0x3c, 0x1d, 0x18, 0x23, 0x2f, 0x9a, 0xee, 0x46, 0x5d, 0xad, 0x62, 0x8c, 0xd4, 0xfc,
0xcc, 0x7f, 0x76, 0x82, 0x7c, 0xba, 0x73, 0xed, 0x95, 0x49, 0x2b, 0x7c, 0xb2, 0x73, 0xed, 0xf3,
0xc9, 0xce, 0xb5, 0x23, 0xf5, 0x01, 0x96, 0x28, 0xf4, 0xf1, 0x3d, 0xf3, 0x09, 0x36, 0x9d, 0x78,
0x0c, 0xc2, 0xc2, 0x34, 0x5c, 0x47, 0x1b, 0x1b, 0xd3, 0x29, 0x1f, 0x09, 0x14, 0xd4, 0x3c, 0x85,
0x5d, 0x50, 0x50, 0x60, 0xd9, 0x8a, 0x31, 0x22, 0xcb, 0x0e, 0xb8, 0xeb, 0xc6, 0x8e, 0x33, 0xe8,
0x30, 0xe3, 0x7d, 0x96, 0xfd, 0xa7, 0x24, 0xe4, 0x03, 0x71, 0x9c, 0x98, 0x08, 0x36, 0x47, 0x24,
0x4b, 0x0c, 0xf4, 0xa9, 0x4e, 0x5a, 0x42, 0x66, 0x78, 0x05, 0x06, 0xad, 0x30, 0x20, 0xaa, 0x81,
0xc0, 0xc9, 0x98, 0x31, 0x30, 0xef, 0x7d, 0x1c, 0x97, 0x1a, 0xce, 0x42, 0x16, 0x91, 0x67, 0x6c,
0xf4, 0x85, 0x6c, 0xe6, 0xdd, 0xa9, 0x66, 0x98, 0x23, 0x7c, 0x43, 0x4d, 0x76, 0x53, 0x2d, 0x78,
0xd0, 0x06, 0x01, 0x46, 0xac, 0x3a, 0x1d, 0x4d, 0xa3, 0xbf, 0x02, 0x21, 0xb8, 0x05, 0xda, 0x03,
0xb1, 0xdd, 0xef, 0x75, 0xfa, 0xc4, 0xbb, 0xaa, 0xaa, 0x22, 0xf7, 0x94, 0x9a, 0xb8, 0x81, 0x1e,
0xc3, 0x11, 0x87, 0xd6, 0xfa, 0x5d, 0xe2, 0x96, 0x3d, 0xa5, 0x55, 0x53, 0x6a, 0x5a, 0xfb, 0xe2,
0xa2, 0x5a, 0x97, 0x1b, 0xc4, 0x7d, 0x8f, 0xe0, 0x30, 0x48, 0x22, 0xd7, 0x08, 0xbe, 0xd7, 0xd6,
0x2e, 0x14, 0xa5, 0x2b, 0x26, 0x49, 0x7f, 0xc5, 0xd1, 0x17, 0xfd, 0x66, 0xf3, 0x8d, 0xd6, 0xed,
0x28, 0x2d, 0xd2, 0x2f, 0xfd, 0x65, 0x0a, 0xf2, 0xec, 0xe0, 0x99, 0xc1, 0xdd, 0xd3, 0x72, 0x1f,
0x01, 0xd0, 0x5c, 0x35, 0x36, 0x6e, 0xfc, 0x2b, 0xc9, 0x11, 0xc8, 0x05, 0x01, 0x90, 0x24, 0xa1,
0xcf, 0x5c, 0x3e, 0x6a, 0x23, 0x8f, 0xe8, 0x18, 0x84, 0x99, 0x61, 0x6a, 0xa4, 0x4c, 0xd6, 0x08,
0x2a, 0x4d, 0x51, 0x30, 0x33, 0x4c, 0x52, 0xac, 0xca, 0x33, 0x3a, 0x41, 0x08, 0x0c, 0x82, 0xa8,
0x67, 0x0a, 0x2a, 0x2c, 0xe7, 0x3f, 0xc4, 0x61, 0x18, 0x01, 0x69, 0xe2, 0x33, 0xcc, 0x61, 0x28,
0xa0, 0x6b, 0x4c, 0x90, 0x04, 0x85, 0xd9, 0x62, 0xea, 0x1a, 0x04, 0x49, 0x45, 0x66, 0x19, 0x2f,
0x4f, 0x81, 0x5d, 0x63, 0x42, 0x84, 0x3e, 0x84, 0x2c, 0x6d, 0x7b, 0xe6, 0x8b, 0x01, 0x77, 0xb8,
0x0c, 0x79, 0xef, 0x2c, 0x06, 0xe8, 0x6b, 0xc8, 0x51, 0x94, 0x3e, 0x1a, 0xd9, 0x25, 0x88, 0x94,
0x08, 0xa4, 0x2b, 0x92, 0x47, 0x23, 0x1b, 0x3b, 0x8e, 0x4a, 0x57, 0x20, 0x2f, 0x44, 0x1c, 0xaa,
0x0d, 0x6d, 0xd0, 0x04, 0x7a, 0x02, 0x59, 0x02, 0x20, 0x4d, 0x19, 0xfa, 0x0e, 0x8e, 0x66, 0xfa,
0x0d, 0x9f, 0x8c, 0xc6, 0x65, 0xf6, 0x02, 0xd5, 0xff, 0xc1, 0x4c, 0xbf, 0xa1, 0x53, 0xd2, 0x8b,
0x70, 0x86, 0x7f, 0x91, 0xce, 0x6e, 0x8a, 0x5b, 0x2f, 0xd2, 0xd9, 0xbc, 0x28, 0x48, 0xff, 0x92,
0x80, 0x9c, 0xef, 0x13, 0xe8, 0xcc, 0x1f, 0xab, 0x71, 0xc7, 0xd9, 0x8b, 0x38, 0x0e, 0x4b, 0xb7,
0x1e, 0x11, 0x3a, 0x87, 0xfd, 0x29, 0x26, 0x3d, 0xd8, 0x68, 0x61, 0xd3, 0x5c, 0xa0, 0x0d, 0xa6,
0xd6, 0xf0, 0xda, 0xe1, 0x97, 0xb6, 0x4b, 0x91, 0x35, 0x8e, 0xab, 0x50, 0x14, 0x2a, 0x41, 0xc6,
0x2b, 0x0c, 0xd8, 0x1c, 0xd4, 0x7b, 0x45, 0x3f, 0x85, 0x02, 0xb9, 0x46, 0x7a, 0x56, 0xae, 0x81,
0x6d, 0x1a, 0x59, 0x8b, 0x81, 0x40, 0x47, 0xce, 0xaa, 0x67, 0x60, 0x5b, 0xcd, 0xcf, 0x0c, 0xd3,
0x7b, 0x79, 0x91, 0xce, 0xa6, 0xc4, 0xb4, 0xf4, 0x67, 0xbe, 0x22, 0x24, 0xa8, 0xfc, 0x9f, 0x29,
0x92, 0x7e, 0x2f, 0x45, 0x36, 0x43, 0x8a, 0x48, 0x67, 0x90, 0x0f, 0x8c, 0x0f, 0xa3, 0xc6, 0x97,
0x88, 0x1a, 0x9f, 0xf4, 0xf7, 0x09, 0x10, 0x82, 0xc3, 0xd0, 0x7b, 0x39, 0x90, 0x0c, 0xf9, 0xb1,
0x6e, 0x4c, 0xb5, 0xc0, 0xf4, 0xa7, 0x78, 0x7e, 0x1c, 0x3b, 0x59, 0x3d, 0xbb, 0xd0, 0x8d, 0xa9,
0x37, 0x53, 0x18, 0xfb, 0xcf, 0x64, 0x0f, 0xba, 0x84, 0xe3, 0x92, 0xba, 0x96, 0xba, 0x53, 0x8e,
0x11, 0x74, 0x29, 0x44, 0x3a, 0x02, 0x58, 0xb2, 0xa2, 0x6d, 0xc8, 0x37, 0x5a, 0xaf, 0xe4, 0x66,
0xa3, 0xa6, 0xc9, 0x97, 0x3d, 0x71, 0x43, 0xfa, 0x43, 0xcf, 0xa7, 0x1b, 0xe6, 0x7c, 0x11, 0x4e,
0x50, 0x89, 0xfb, 0x13, 0xd4, 0x11, 0x00, 0x71, 0xa6, 0xd0, 0x70, 0x3d, 0xe7, 0x18, 0x13, 0x36,
0x58, 0x97, 0x9e, 0x83, 0xc0, 0xef, 0x69, 0xe1, 0x92, 0xd5, 0xd7, 0x26, 0xf9, 0xd0, 0x02, 0xfc,
0x4d, 0xfa, 0xdb, 0x24, 0x94, 0x19, 0xfb, 0xa5, 0x35, 0x32, 0xc6, 0xb7, 0x91, 0x8f, 0x02, 0xf7,
0x84, 0x9f, 0x27, 0x00, 0x26, 0x7e, 0xa7, 0x19, 0x44, 0x2d, 0x2f, 0xa9, 0x45, 0xcd, 0x87, 0xea,
0xac, 0xe6, 0x4c, 0xfc, 0x8e, 0x3e, 0x91, 0x5c, 0x98, 0x27, 0x4c, 0x16, 0x15, 0xd7, 0x6b, 0x04,
0xf6, 0xa3, 0x46, 0x47, 0xb1, 0x2a, 0x59, 0x9e, 0x3d, 0x3a, 0xe8, 0x35, 0xdb, 0x6c, 0xae, 0xdb,
0xfa, 0xcc, 0xe1, 0xc5, 0xd7, 0xb3, 0x08, 0x5b, 0x9c, 0x12, 0x67, 0x2d, 0xfc, 0x8e, 0x43, 0x3a,
0x84, 0x17, 0xbb, 0xd8, 0x76, 0xa8, 0x40, 0xf4, 0xd5, 0x29, 0x7f, 0x0e, 0x7b, 0x71, 0x24, 0xf1,
0x27, 0x29, 0x7d, 0x07, 0x1f, 0xc4, 0xee, 0xc5, 0x47, 0xf9, 0x1f, 0x42, 0x3e, 0x30, 0x10, 0xf1,
0xec, 0x71, 0x39, 0xe5, 0x90, 0xbe, 0x85, 0x07, 0x01, 0xbf, 0x62, 0x89, 0x8c, 0x9f, 0xf6, 0xbd,
0xd6, 0x6f, 0x7b, 0x03, 0xfc, 0x20, 0x2f, 0xdf, 0xf8, 0x53, 0xaf, 0x96, 0x62, 0x43, 0xaa, 0xdd,
0x70, 0x87, 0x17, 0x2a, 0xa1, 0x3e, 0x83, 0x1d, 0x96, 0xca, 0x17, 0xe6, 0x78, 0x31, 0x0d, 0xe5,
0x73, 0x91, 0x22, 0xfa, 0x4b, 0xb8, 0x54, 0x04, 0xa1, 0x87, 0xed, 0x99, 0xc3, 0x85, 0x94, 0x7e,
0x9d, 0x86, 0x02, 0x07, 0xf0, 0x9d, 0x4f, 0x61, 0x87, 0x04, 0xd9, 0xb8, 0x4f, 0x66, 0xdb, 0x33,
0xfd, 0x46, 0x0e, 0x7e, 0xe1, 0xf9, 0x3d, 0x38, 0x24, 0xb4, 0x4c, 0xcd, 0xd8, 0x50, 0x58, 0x49,
0x96, 0x12, 0xea, 0xc1, 0x4c, 0xbf, 0xa1, 0x72, 0x47, 0x02, 0xc9, 0x4a, 0x23, 0x98, 0x7a, 0xff,
0x46, 0xb0, 0x0b, 0xdb, 0xe1, 0xc0, 0xe5, 0x0d, 0x68, 0x4f, 0x7d, 0xee, 0x90, 0x5e, 0x67, 0xcd,
0x60, 0x24, 0xf3, 0xa6, 0xb3, 0xa1, 0xf0, 0xe6, 0xa0, 0x27, 0x70, 0x60, 0xe2, 0x1b, 0x97, 0x67,
0x98, 0xa1, 0x65, 0x8e, 0x35, 0x97, 0xf4, 0xae, 0x2e, 0x0f, 0x74, 0xbb, 0x04, 0x4b, 0x53, 0x4b,
0xd5, 0x32, 0xc7, 0x3d, 0x8a, 0x42, 0x7f, 0x00, 0x8f, 0x02, 0x4c, 0xeb, 0x1b, 0xce, 0x92, 0xcf,
0x1c, 0xc9, 0x4b, 0xe8, 0xe7, 0x50, 0x0e, 0x6e, 0x4b, 0x3a, 0x6e, 0xcd, 0x35, 0x66, 0xd8, 0x71,
0xf5, 0xd9, 0x9c, 0x77, 0xa1, 0x0f, 0x96, 0x5b, 0x13, 0x7c, 0xcf, 0x43, 0x97, 0x65, 0xd8, 0x8d,
0x51, 0x2d, 0xd8, 0x51, 0x16, 0x62, 0x26, 0x63, 0xd9, 0x60, 0xeb, 0x58, 0x81, 0x3d, 0x15, 0x4f,
0xf1, 0x5b, 0xdd, 0x64, 0x3b, 0x78, 0x16, 0x5c, 0x84, 0xa4, 0xdf, 0x04, 0x26, 0x8d, 0x11, 0x2a,
0xd3, 0x4f, 0x53, 0xac, 0xe3, 0x27, 0xe1, 0x41, 0x50, 0xfd, 0x77, 0xe9, 0xdf, 0x53, 0x50, 0x08,
0x2d, 0x12, 0x4c, 0x13, 0x89, 0x70, 0xbe, 0x63, 0xeb, 0x26, 0xfd, 0x75, 0xff, 0xd7, 0x13, 0x85,
0xce, 0xca, 0x60, 0x24, 0x1d, 0x99, 0x35, 0x86, 0x44, 0xfb, 0xf1, 0x43, 0x91, 0xcd, 0x75, 0x43,
0x91, 0x15, 0x53, 0xde, 0x7a, 0x7f, 0x53, 0x3e, 0x86, 0x7c, 0x70, 0x9a, 0xc1, 0x8a, 0xb0, 0x20,
0x68, 0xdd, 0x20, 0x23, 0x1b, 0x3b, 0xc8, 0xf8, 0xff, 0x1b, 0x31, 0xd4, 0x40, 0x08, 0xaa, 0xc1,
0x46, 0x05, 0x0e, 0xa6, 0xfa, 0xb2, 0x08, 0x91, 0x21, 0xef, 0x1c, 0xe5, 0x49, 0x4c, 0x97, 0x4f,
0xab, 0x19, 0x2e, 0xa6, 0xf4, 0x73, 0xc8, 0x07, 0x6a, 0x3f, 0x62, 0x26, 0x26, 0x76, 0xdf, 0x59,
0xf6, 0x35, 0x97, 0xcd, 0x7b, 0x45, 0x08, 0xd2, 0xb4, 0x72, 0x64, 0x9f, 0x78, 0xe8, 0xb3, 0x24,
0x43, 0xd6, 0x4b, 0xaa, 0x04, 0x4f, 0x07, 0x11, 0xcc, 0x40, 0xe9, 0x33, 0xe9, 0x6b, 0x58, 0x2a,
0xe2, 0x5d, 0x03, 0xef, 0x6b, 0x18, 0x8c, 0xf6, 0x0c, 0xd2, 0x5f, 0x24, 0x20, 0x2f, 0x3b, 0xd7,
0x5d, 0x53, 0x9f, 0x3b, 0x57, 0x96, 0x7b, 0x87, 0x9d, 0xfe, 0x98, 0x2a, 0x2f, 0x5c, 0xc3, 0xa7,
0xa2, 0x35, 0x7c, 0xa8, 0xbe, 0x4d, 0x87, 0xeb, 0x5b, 0x2a, 0x59, 0xc5, 0x18, 0xfd, 0x16, 0x4a,
0xf6, 0xaf, 0x09, 0xd8, 0x0b, 0x5a, 0x85, 0x2f, 0x62, 0xe8, 0x23, 0x7b, 0xc0, 0x5b, 0x97, 0xe7,
0x1b, 0xf3, 0x91, 0x7d, 0x49, 0x17, 0xd0, 0x96, 0xf5, 0xa5, 0x1f, 0x01, 0x73, 0x44, 0xe2, 0x77,
0xd4, 0x78, 0x98, 0x9c, 0x82, 0x07, 0xa4, 0xce, 0xf6, 0x39, 0x20, 0xd7, 0x72, 0xf5, 0x29, 0xf1,
0x05, 0x87, 0xc5, 0x4b, 0x3c, 0xe2, 0xcd, 0x8f, 0x48, 0x31, 0x5d, 0xdd, 0x75, 0xaa, 0x0c, 0x4e,
0x96, 0x64, 0xf9, 0x91, 0x7b, 0x38, 0x77, 0x62, 0xd6, 0xff, 0x72, 0xa5, 0xa4, 0xaf, 0x61, 0x8f,
0x86, 0x06, 0x5f, 0x1a, 0x1e, 0x02, 0xef, 0x18, 0x9f, 0xfd, 0x26, 0x09, 0xfb, 0x11, 0x1e, 0x9e,
0x42, 0xd7, 0xdf, 0x5b, 0x70, 0xb9, 0x64, 0x78, 0xb8, 0x26, 0x41, 0x61, 0x6e, 0xe3, 0xb7, 0x9a,
0x8f, 0x67, 0x33, 0x9a, 0x3c, 0x01, 0x56, 0x38, 0xcd, 0x9a, 0xa8, 0x94, 0x5e, 0x17, 0x95, 0x6a,
0x2b, 0x71, 0x71, 0x93, 0xc6, 0xc5, 0xa3, 0x58, 0x57, 0xf7, 0xf5, 0x88, 0xc4, 0xc2, 0x47, 0x90,
0xf7, 0xc6, 0x7e, 0x44, 0xae, 0x0c, 0x75, 0x47, 0x6f, 0xee, 0xd7, 0x18, 0x2d, 0x95, 0x72, 0x6f,
0x78, 0x83, 0x99, 0xe1, 0x48, 0xf4, 0x1c, 0x1e, 0xfa, 0xac, 0xeb, 0x23, 0xd8, 0x01, 0x27, 0x8f,
0xe4, 0x45, 0xe9, 0xb9, 0x57, 0x5c, 0x91, 0x78, 0xa1, 0xea, 0x2e, 0xb9, 0x7f, 0x7e, 0x2f, 0x8f,
0x41, 0xf0, 0xba, 0xce, 0x6b, 0x7c, 0xcb, 0x46, 0x37, 0x82, 0x9a, 0xe7, 0x9d, 0x27, 0x01, 0x49,
0x7f, 0x04, 0xb0, 0xe4, 0x23, 0xd5, 0x58, 0x80, 0xc1, 0xab, 0xc6, 0x96, 0xf4, 0xe8, 0x8c, 0x37,
0xab, 0xb4, 0x01, 0x4b, 0xae, 0x6b, 0xc0, 0x68, 0xa7, 0x4a, 0x9e, 0x24, 0xd5, 0xab, 0xde, 0x82,
0xc2, 0x71, 0x03, 0x78, 0xca, 0xa5, 0xb3, 0x29, 0x78, 0x75, 0xb0, 0x14, 0x60, 0xa1, 0x52, 0xb1,
0x67, 0x47, 0x9a, 0x44, 0x2c, 0xca, 0x2b, 0xd3, 0xd0, 0xc7, 0x50, 0x74, 0x5c, 0xdd, 0x76, 0xb5,
0x88, 0x31, 0x0a, 0x14, 0xea, 0x99, 0xc7, 0x09, 0x88, 0xe6, 0x62, 0xc6, 0x68, 0xb0, 0xa3, 0x0d,
0xf4, 0xe1, 0x35, 0x0f, 0x08, 0x45, 0x73, 0x31, 0xab, 0x30, 0x70, 0x45, 0x1f, 0x5e, 0x4b, 0x2a,
0x1c, 0x44, 0x37, 0xe2, 0xa2, 0x3f, 0x83, 0x0c, 0xe7, 0xe7, 0x52, 0x3f, 0x5a, 0x3a, 0x6b, 0x9c,
0xb1, 0xab, 0x1e, 0xf9, 0xe9, 0xa7, 0xfe, 0x57, 0x56, 0xda, 0xac, 0x17, 0x20, 0xd7, 0x7b, 0xad,
0xc8, 0x2f, 0x9b, 0x4a, 0xb7, 0x2b, 0x6e, 0xa0, 0x3c, 0x64, 0xe4, 0x56, 0xb5, 0xde, 0x56, 0xbb,
0x62, 0xe2, 0xf4, 0xcf, 0x13, 0xb0, 0x1b, 0x33, 0x14, 0xa4, 0xdf, 0xa9, 0x7b, 0xec, 0xab, 0x2e,
0xfb, 0x86, 0xdb, 0xee, 0x28, 0x2d, 0x71, 0x03, 0x15, 0x01, 0x18, 0x9c, 0xbe, 0x27, 0xd0, 0x0e,
0x14, 0xd8, 0xbb, 0xf2, 0x43, 0xa7, 0xa1, 0x2a, 0x35, 0x31, 0x89, 0x4a, 0xb0, 0x17, 0x66, 0xed,
0x77, 0x6a, 0x72, 0x4f, 0x11, 0x53, 0x48, 0x04, 0x81, 0x61, 0xaa, 0xcd, 0x76, 0x57, 0xa9, 0x89,
0x69, 0xf4, 0x00, 0x76, 0xc3, 0xb4, 0xf4, 0x23, 0xb8, 0xb8, 0x79, 0xfa, 0x0d, 0x64, 0xbd, 0x9b,
0x26, 0x6c, 0xbd, 0x86, 0xa2, 0x6a, 0x35, 0xe5, 0x42, 0xee, 0x37, 0x7b, 0xe2, 0x06, 0x02, 0xd8,
0xa2, 0x90, 0xaf, 0xc4, 0x84, 0xff, 0xfc, 0xb5, 0x98, 0x3c, 0xfd, 0xeb, 0x04, 0xc0, 0xb2, 0x2c,
0x47, 0xbb, 0xb0, 0xdd, 0x56, 0x6b, 0x8a, 0xaa, 0x75, 0xfb, 0x95, 0xcb, 0x46, 0x8f, 0xcd, 0x98,
0x76, 0xa0, 0xc0, 0x80, 0xd5, 0xa6, 0x22, 0x13, 0x89, 0xe9, 0x48, 0x98, 0x81, 0xf8, 0x67, 0xf6,
0xe6, 0x1b, 0xed, 0xa2, 0xd1, 0x6c, 0x52, 0x6d, 0x10, 0x14, 0x19, 0x4e, 0xf9, 0x41, 0xa9, 0xf6,
0xc9, 0x12, 0xa9, 0x25, 0xac, 0x2a, 0xb7, 0xaa, 0x4a, 0x93, 0x6a, 0xe2, 0x2f, 0xeb, 0x1d, 0xc4,
0x26, 0x91, 0x9b, 0x81, 0xf8, 0xf7, 0xef, 0xad, 0xf3, 0xff, 0xcc, 0xf8, 0x5f, 0x3e, 0x65, 0x7f,
0x9a, 0x8b, 0xbe, 0x87, 0x62, 0xf8, 0xb7, 0x6a, 0xe8, 0x51, 0xa0, 0x5a, 0x8a, 0xf9, 0x21, 0x5d,
0xf9, 0xc3, 0xb5, 0x78, 0x6e, 0x3b, 0x3d, 0xc8, 0x07, 0x7e, 0xa4, 0x85, 0x1e, 0xaf, 0xf4, 0x8e,
0xd1, 0x9f, 0xa9, 0x95, 0xa5, 0xbb, 0x48, 0xf8, 0xaa, 0xbf, 0x84, 0x42, 0xa8, 0x39, 0x43, 0x1f,
0xbd, 0x47, 0x9b, 0x58, 0xfe, 0xf8, 0x6e, 0xa2, 0xa5, 0xc4, 0x81, 0x5f, 0x70, 0xad, 0x48, 0xbc,
0xfa, 0xab, 0xb2, 0x15, 0x89, 0xe3, 0x7e, 0x00, 0xd6, 0x0b, 0x8f, 0x41, 0xa2, 0xab, 0xae, 0xfe,
0x5e, 0x6b, 0x65, 0xd5, 0x98, 0x1f, 0x61, 0xa1, 0xef, 0x43, 0x56, 0x76, 0x1c, 0x37, 0xd7, 0x09,
0xf6, 0x9f, 0xe5, 0xc7, 0x77, 0x50, 0xf0, 0x25, 0xdf, 0xc0, 0xbe, 0xff, 0x31, 0x85, 0x7a, 0x37,
0xb7, 0x0f, 0xb4, 0x4c, 0x10, 0x71, 0x3f, 0xfb, 0x2a, 0x1f, 0x45, 0xa7, 0xd5, 0x21, 0xf4, 0x49,
0xe2, 0xab, 0x04, 0x7a, 0x0a, 0x9b, 0xb4, 0xff, 0x42, 0xfb, 0xd1, 0x7e, 0x8c, 0x49, 0x77, 0x10,
0xdf, 0xa6, 0xa1, 0x16, 0xec, 0x87, 0x6a, 0x75, 0xbf, 0xd2, 0x38, 0x8a, 0xaf, 0xe5, 0x57, 0xd7,
0x0b, 0x77, 0x21, 0x2d, 0x28, 0xac, 0x5b, 0x27, 0x2e, 0xe1, 0x97, 0xef, 0x09, 0x77, 0xe4, 0x16,
0x02, 0x59, 0x25, 0x7a, 0x0b, 0x2b, 0x89, 0x6a, 0xe5, 0x16, 0x62, 0xb2, 0xc5, 0xf7, 0x50, 0x0c,
0x07, 0x63, 0xb4, 0x46, 0x08, 0x67, 0xd5, 0x13, 0xe3, 0xa3, 0x78, 0xe5, 0x77, 0x7e, 0xf9, 0x93,
0x89, 0xe1, 0x5e, 0x2d, 0x06, 0x67, 0x43, 0x6b, 0xf6, 0xe5, 0xd4, 0x98, 0x5c, 0xb9, 0xa6, 0x61,
0x4e, 0xa6, 0xfa, 0xc0, 0xf9, 0x92, 0xb0, 0x7e, 0xc9, 0xf9, 0x07, 0x5b, 0xf4, 0x67, 0xb4, 0x4f,
0xfe, 0x3b, 0x00, 0x00, 0xff, 0xff, 0x8e, 0x2b, 0x7b, 0x3b, 0x5a, 0x2b, 0x00, 0x00,
}
// Reference imports to suppress errors if they are not otherwise used.
@ -4348,6 +4449,7 @@ type ChannelAuctioneerClient interface {
RelevantBatchSnapshot(ctx context.Context, in *RelevantBatchRequest, opts ...grpc.CallOption) (*RelevantBatch, error)
BatchSnapshot(ctx context.Context, in *BatchSnapshotRequest, opts ...grpc.CallOption) (*BatchSnapshotResponse, error)
NodeRating(ctx context.Context, in *ServerNodeRatingRequest, opts ...grpc.CallOption) (*ServerNodeRatingResponse, error)
BatchSnapshots(ctx context.Context, in *BatchSnapshotsRequest, opts ...grpc.CallOption) (*BatchSnapshotsResponse, error)
}
type channelAuctioneerClient struct {
@ -4479,6 +4581,15 @@ func (c *channelAuctioneerClient) NodeRating(ctx context.Context, in *ServerNode
return out, nil
}
func (c *channelAuctioneerClient) BatchSnapshots(ctx context.Context, in *BatchSnapshotsRequest, opts ...grpc.CallOption) (*BatchSnapshotsResponse, error) {
out := new(BatchSnapshotsResponse)
err := c.cc.Invoke(ctx, "/poolrpc.ChannelAuctioneer/BatchSnapshots", in, out, opts...)
if err != nil {
return nil, err
}
return out, nil
}
// ChannelAuctioneerServer is the server API for ChannelAuctioneer service.
type ChannelAuctioneerServer interface {
ReserveAccount(context.Context, *ReserveAccountRequest) (*ReserveAccountResponse, error)
@ -4492,6 +4603,7 @@ type ChannelAuctioneerServer interface {
RelevantBatchSnapshot(context.Context, *RelevantBatchRequest) (*RelevantBatch, error)
BatchSnapshot(context.Context, *BatchSnapshotRequest) (*BatchSnapshotResponse, error)
NodeRating(context.Context, *ServerNodeRatingRequest) (*ServerNodeRatingResponse, error)
BatchSnapshots(context.Context, *BatchSnapshotsRequest) (*BatchSnapshotsResponse, error)
}
// UnimplementedChannelAuctioneerServer can be embedded to have forward compatible implementations.
@ -4531,6 +4643,9 @@ func (*UnimplementedChannelAuctioneerServer) BatchSnapshot(ctx context.Context,
func (*UnimplementedChannelAuctioneerServer) NodeRating(ctx context.Context, req *ServerNodeRatingRequest) (*ServerNodeRatingResponse, error) {
return nil, status.Errorf(codes.Unimplemented, "method NodeRating not implemented")
}
func (*UnimplementedChannelAuctioneerServer) BatchSnapshots(ctx context.Context, req *BatchSnapshotsRequest) (*BatchSnapshotsResponse, error) {
return nil, status.Errorf(codes.Unimplemented, "method BatchSnapshots not implemented")
}
func RegisterChannelAuctioneerServer(s *grpc.Server, srv ChannelAuctioneerServer) {
s.RegisterService(&_ChannelAuctioneer_serviceDesc, srv)
@ -4742,6 +4857,24 @@ func _ChannelAuctioneer_NodeRating_Handler(srv interface{}, ctx context.Context,
return interceptor(ctx, in, info, handler)
}
func _ChannelAuctioneer_BatchSnapshots_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {
in := new(BatchSnapshotsRequest)
if err := dec(in); err != nil {
return nil, err
}
if interceptor == nil {
return srv.(ChannelAuctioneerServer).BatchSnapshots(ctx, in)
}
info := &grpc.UnaryServerInfo{
Server: srv,
FullMethod: "/poolrpc.ChannelAuctioneer/BatchSnapshots",
}
handler := func(ctx context.Context, req interface{}) (interface{}, error) {
return srv.(ChannelAuctioneerServer).BatchSnapshots(ctx, req.(*BatchSnapshotsRequest))
}
return interceptor(ctx, in, info, handler)
}
var _ChannelAuctioneer_serviceDesc = grpc.ServiceDesc{
ServiceName: "poolrpc.ChannelAuctioneer",
HandlerType: (*ChannelAuctioneerServer)(nil),
@ -4786,6 +4919,10 @@ var _ChannelAuctioneer_serviceDesc = grpc.ServiceDesc{
MethodName: "NodeRating",
Handler: _ChannelAuctioneer_NodeRating_Handler,
},
{
MethodName: "BatchSnapshots",
Handler: _ChannelAuctioneer_BatchSnapshots_Handler,
},
},
Streams: []grpc.StreamDesc{
{

View file

@ -6,16 +6,33 @@ option go_package = "github.com/lightninglabs/pool/poolrpc";
service ChannelAuctioneer {
rpc ReserveAccount (ReserveAccountRequest) returns (ReserveAccountResponse);
rpc InitAccount (ServerInitAccountRequest) returns (ServerInitAccountResponse);
rpc ModifyAccount (ServerModifyAccountRequest) returns (ServerModifyAccountResponse);
rpc SubmitOrder (ServerSubmitOrderRequest) returns (ServerSubmitOrderResponse);
rpc CancelOrder (ServerCancelOrderRequest) returns (ServerCancelOrderResponse);
rpc InitAccount (ServerInitAccountRequest)
returns (ServerInitAccountResponse);
rpc ModifyAccount (ServerModifyAccountRequest)
returns (ServerModifyAccountResponse);
rpc SubmitOrder (ServerSubmitOrderRequest)
returns (ServerSubmitOrderResponse);
rpc CancelOrder (ServerCancelOrderRequest)
returns (ServerCancelOrderResponse);
rpc OrderState (ServerOrderStateRequest) returns (ServerOrderStateResponse);
rpc SubscribeBatchAuction (stream ClientAuctionMessage) returns (stream ServerAuctionMessage);
rpc SubscribeBatchAuction (stream ClientAuctionMessage)
returns (stream ServerAuctionMessage);
rpc Terms (TermsRequest) returns (TermsResponse);
rpc RelevantBatchSnapshot (RelevantBatchRequest) returns (RelevantBatch);
rpc BatchSnapshot (BatchSnapshotRequest) returns (BatchSnapshotResponse);
rpc NodeRating(ServerNodeRatingRequest) returns (ServerNodeRatingResponse);
rpc NodeRating (ServerNodeRatingRequest) returns (ServerNodeRatingResponse);
rpc BatchSnapshots (BatchSnapshotsRequest) returns (BatchSnapshotsResponse);
}
message ReserveAccountRequest {
@ -525,7 +542,7 @@ message SubscribeError {
/*
The account the trader tried to subscribe to does not exist in the
auctioneer's database.
auctioneer's database.
*/
ACCOUNT_DOES_NOT_EXIST = 2;
@ -758,7 +775,7 @@ message ServerOrder {
/*
The multi signature key of the node creating the order, will be used for the
target channel's funding TX 2-of-2 multi signature output.
target channel's funding TX 2-of-2 multi signature output.
*/
bytes multi_sig_key = 8;
@ -773,7 +790,7 @@ message ServerOrder {
repeated NodeAddress node_addr = 10;
/*
// TODO(guggero): implement
// TODO(guggero): implement
int64 min_node_score = 11;
*/
reserved 11;
@ -860,9 +877,7 @@ message CancelOrder {
}
message InvalidOrder {
enum FailReason {
INVALID_AMT = 0;
}
enum FailReason { INVALID_AMT = 0; }
bytes order_nonce = 1;
FailReason fail_reason = 2;
@ -965,7 +980,7 @@ message TermsResponse {
/*
The maximum order duration in blocks currently allowed by the auctioneer.
*/
uint32 max_order_duration_blocks = 2 [deprecated=true];
uint32 max_order_duration_blocks = 2 [deprecated = true];
/*
The execution fee charged per matched order.
@ -1163,3 +1178,23 @@ message ServerNodeRatingResponse {
// A series of node ratings for each of the queried nodes.
repeated NodeRating node_ratings = 1;
}
message BatchSnapshotsRequest {
/*
The unique identifier of the first batch to return, encoded as a compressed
pubkey. This represents the newest/most current batch to fetch. If this is
empty or a zero batch ID, the most recent finalized batch is used as the
starting point to go back from.
*/
bytes start_batch_id = 1;
/*
The number of batches to return at most, including the start batch.
*/
uint32 num_batches_back = 2;
}
message BatchSnapshotsResponse {
// The list of batches requested.
repeated BatchSnapshotResponse batches = 1;
}

View file

@ -2968,200 +2968,203 @@ func init() {
func init() { proto.RegisterFile("trader.proto", fileDescriptor_b8f61804588c75fe) }
var fileDescriptor_b8f61804588c75fe = []byte{
// 3080 bytes of a gzipped FileDescriptorProto
0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xc4, 0x59, 0xcb, 0x73, 0x1b, 0xc7,
0xd1, 0x27, 0xc0, 0x77, 0xe3, 0x41, 0x70, 0xc0, 0x97, 0x20, 0xd1, 0xa2, 0xf6, 0xfb, 0x6c, 0x4b,
0xb4, 0x3f, 0xd1, 0xd6, 0x67, 0xe9, 0xfb, 0x4a, 0x71, 0xe2, 0x80, 0x24, 0x68, 0x22, 0xa6, 0x40,
0x64, 0x48, 0x29, 0x7e, 0x54, 0x65, 0x6b, 0x80, 0x1d, 0x92, 0x6b, 0x02, 0xbb, 0xf0, 0xee, 0x80,
0x8f, 0xb8, 0x7c, 0x49, 0x72, 0xc8, 0x2d, 0xa9, 0xb8, 0x92, 0x6b, 0xfe, 0x89, 0x54, 0xe5, 0x90,
0xaa, 0x1c, 0x72, 0x4a, 0x55, 0x72, 0x49, 0xe5, 0x9c, 0x5b, 0xfe, 0x90, 0xd4, 0xf4, 0xcc, 0x00,
0xb3, 0x0b, 0x50, 0x7e, 0x5c, 0x72, 0xc3, 0x76, 0xf7, 0xcc, 0x6f, 0xfa, 0x35, 0xdd, 0xd3, 0x80,
0xbc, 0x88, 0x98, 0xc7, 0xa3, 0x87, 0xbd, 0x28, 0x14, 0x21, 0x99, 0xed, 0x85, 0x61, 0x27, 0xea,
0xb5, 0x2b, 0x77, 0x4e, 0xc3, 0xf0, 0xb4, 0xc3, 0xb7, 0x58, 0xcf, 0xdf, 0x62, 0x41, 0x10, 0x0a,
0x26, 0xfc, 0x30, 0x88, 0x95, 0x58, 0xa5, 0xc4, 0xfa, 0x6d, 0xf9, 0xcd, 0xcd, 0x42, 0xe7, 0x6f,
0x19, 0x20, 0xf5, 0xc0, 0x17, 0xd5, 0x76, 0x3b, 0xec, 0x07, 0x82, 0xf2, 0xcf, 0xfa, 0x3c, 0x16,
0xe4, 0xbf, 0xa0, 0xc0, 0x14, 0xc5, 0xbd, 0x60, 0x9d, 0x3e, 0x5f, 0xcb, 0x6c, 0x64, 0xee, 0x4f,
0xd1, 0xbc, 0x26, 0xbe, 0x90, 0x34, 0xf2, 0x00, 0x16, 0x58, 0x2b, 0x0e, 0x3b, 0x7d, 0xc1, 0xdd,
0x33, 0xee, 0x9f, 0x9e, 0x89, 0xb5, 0xec, 0x46, 0xe6, 0x7e, 0x61, 0x7f, 0x82, 0x16, 0x0d, 0x63,
0x1f, 0xe9, 0x52, 0x34, 0xe2, 0x1d, 0x26, 0xfc, 0x8b, 0x81, 0xe8, 0xa4, 0x11, 0x35, 0x0c, 0x2d,
0x7a, 0x0f, 0x72, 0xed, 0x30, 0x38, 0x71, 0x05, 0x8b, 0x4e, 0xb9, 0x58, 0x9b, 0x42, 0xb1, 0x0c,
0x05, 0x49, 0x3c, 0x46, 0xda, 0x76, 0x09, 0x8a, 0xe6, 0x74, 0xfc, 0xaa, 0xe7, 0x47, 0xd7, 0xdb,
0x33, 0x30, 0x75, 0xc2, 0x79, 0xec, 0x70, 0x28, 0xff, 0xb0, 0x1f, 0x0a, 0xfe, 0x6d, 0xd4, 0x49,
0x01, 0x1b, 0x55, 0x6c, 0x60, 0x03, 0x73, 0x09, 0x4b, 0x49, 0x98, 0xb8, 0x17, 0x06, 0x31, 0x27,
0xff, 0x07, 0xb7, 0xba, 0x7e, 0xc0, 0x23, 0xf7, 0x84, 0x73, 0x37, 0x62, 0x82, 0xbb, 0x31, 0x13,
0x6e, 0x8f, 0x47, 0xee, 0xf9, 0xa5, 0xc6, 0x5c, 0x42, 0x81, 0x3d, 0xce, 0x29, 0x13, 0xfc, 0x88,
0x89, 0x26, 0x8f, 0x3e, 0xb8, 0x24, 0xaf, 0xc1, 0xc2, 0x70, 0xa1, 0x08, 0x05, 0xeb, 0x20, 0xfe,
0x14, 0x2d, 0x18, 0xf1, 0x63, 0x49, 0x74, 0x9e, 0x40, 0xf9, 0xc0, 0x8f, 0x8d, 0xb7, 0x62, 0xa3,
0xdf, 0x5d, 0xc8, 0xb1, 0x36, 0x1a, 0x37, 0x0c, 0x3a, 0xd7, 0x88, 0x34, 0x47, 0x41, 0x91, 0x0e,
0x83, 0xce, 0xb5, 0xb3, 0x0b, 0x4b, 0xc9, 0x75, 0xfa, 0xc0, 0x6f, 0xc2, 0x9c, 0xb6, 0x41, 0xbc,
0x96, 0xd9, 0x98, 0xbc, 0x9f, 0x7b, 0x54, 0x7a, 0xa8, 0x43, 0xe9, 0xa1, 0x51, 0x6e, 0x20, 0xe1,
0xbc, 0x07, 0x33, 0x87, 0x7d, 0xd1, 0xeb, 0x0b, 0x72, 0x1b, 0xe6, 0xd1, 0x90, 0x52, 0x3f, 0xad,
0xd8, 0x1c, 0x12, 0x8e, 0x98, 0x20, 0x6b, 0x30, 0xcb, 0x3c, 0x2f, 0xe2, 0x71, 0x8c, 0x4a, 0xcc,
0x53, 0xf3, 0xe9, 0xfc, 0x3c, 0x03, 0x05, 0xb5, 0xc3, 0x8f, 0x7c, 0x71, 0xb6, 0xc7, 0xb9, 0x2d,
0x9b, 0x49, 0xc8, 0x7e, 0x0d, 0x77, 0x90, 0x87, 0x50, 0x1e, 0x67, 0x68, 0x19, 0x59, 0x53, 0xfb,
0x13, 0x74, 0xe1, 0x24, 0x69, 0xe5, 0x81, 0xfb, 0x76, 0x60, 0x45, 0x9d, 0x22, 0x96, 0xc7, 0xa8,
0x77, 0x7b, 0x1d, 0xbf, 0xed, 0x0b, 0x79, 0x9c, 0x07, 0x30, 0x1b, 0x2a, 0x8e, 0x36, 0xc7, 0xc2,
0xc0, 0x1c, 0x6a, 0x05, 0x35, 0x7c, 0xe7, 0x2f, 0x19, 0x28, 0xef, 0x74, 0xc2, 0x38, 0x1d, 0x6b,
0xeb, 0x00, 0x2a, 0x35, 0xdd, 0x73, 0xae, 0x5c, 0x91, 0xa7, 0xf3, 0x8a, 0xf2, 0x01, 0xbf, 0x26,
0xdf, 0x87, 0x05, 0xb5, 0x83, 0x7b, 0xe9, 0x8b, 0x33, 0xe9, 0x6f, 0x54, 0x2d, 0xf7, 0x68, 0x25,
0x85, 0xa4, 0x2d, 0xb4, 0x3f, 0x41, 0x0b, 0x61, 0xc2, 0x64, 0xdf, 0x19, 0x9e, 0x71, 0x12, 0x57,
0xde, 0x4d, 0xad, 0x4c, 0x6b, 0xb5, 0x3f, 0x31, 0x38, 0xf5, 0x76, 0x19, 0x16, 0x4f, 0xfa, 0x81,
0x17, 0xbb, 0x1e, 0x8f, 0x85, 0x1f, 0xe0, 0xed, 0xe0, 0x3c, 0x86, 0xa5, 0xa4, 0x26, 0x3a, 0x3a,
0xd6, 0x01, 0xda, 0x92, 0xee, 0x8a, 0x2b, 0xdf, 0x33, 0xaa, 0x20, 0xe5, 0xf8, 0xca, 0xf7, 0x9c,
0x5f, 0x65, 0x60, 0x45, 0x42, 0x79, 0x11, 0xbb, 0xfc, 0x66, 0x46, 0xb0, 0xcc, 0x9c, 0x7d, 0xb9,
0x99, 0xc9, 0x9b, 0x2f, 0xf1, 0xf1, 0x88, 0x87, 0x9d, 0x4f, 0x61, 0x75, 0xe4, 0x44, 0x5a, 0x99,
0x4d, 0x98, 0xd5, 0x81, 0x8c, 0xe7, 0x19, 0x17, 0xe9, 0x46, 0x40, 0xde, 0x17, 0x97, 0x7a, 0x1b,
0xa5, 0x7b, 0x16, 0x35, 0xc8, 0x1b, 0x22, 0xaa, 0xff, 0xb3, 0x0c, 0x2c, 0xef, 0xf2, 0x5e, 0x18,
0x8f, 0xdc, 0x9e, 0x5f, 0xa1, 0xfd, 0x3a, 0x00, 0xeb, 0xe2, 0x65, 0x24, 0xb3, 0x47, 0xe5, 0xf9,
0xbc, 0xa2, 0xc8, 0xf4, 0xf9, 0x66, 0x1a, 0x9f, 0xc2, 0x4a, 0xfa, 0x10, 0xdf, 0x42, 0xe1, 0x7b,
0x90, 0xf7, 0xd4, 0x2e, 0xb6, 0xbe, 0x39, 0x4d, 0x43, 0x75, 0x3d, 0x58, 0xde, 0xee, 0x77, 0x7b,
0x7a, 0xa9, 0xbc, 0xc0, 0xbe, 0x9e, 0xb6, 0x37, 0xa8, 0x93, 0x1d, 0xaf, 0xce, 0x1a, 0xac, 0xa4,
0x51, 0x94, 0x3a, 0xce, 0x6f, 0xb2, 0x30, 0xab, 0xc9, 0x5f, 0x05, 0xf9, 0x3f, 0x30, 0x27, 0xc3,
0x27, 0xf4, 0x03, 0xa1, 0x93, 0x6b, 0xd1, 0x8e, 0xaf, 0xa6, 0x64, 0xd0, 0x81, 0x08, 0x59, 0x82,
0x69, 0x55, 0x15, 0x94, 0x89, 0xd5, 0x07, 0x79, 0x03, 0x16, 0xd9, 0x05, 0xf3, 0x3b, 0xac, 0xd5,
0xe1, 0x6e, 0x8b, 0x75, 0x58, 0xd0, 0xe6, 0x58, 0x8d, 0xa6, 0x68, 0x69, 0xc0, 0xd8, 0x56, 0x74,
0x29, 0x8c, 0x95, 0x08, 0xf3, 0xc9, 0x54, 0xb8, 0x69, 0x79, 0x65, 0xd1, 0xd2, 0x90, 0xa1, 0x2b,
0xdc, 0x1b, 0x30, 0x1d, 0x0b, 0x26, 0xf8, 0xda, 0xcc, 0x46, 0xe6, 0x7e, 0xf1, 0xd1, 0x72, 0xda,
0x2d, 0x47, 0x92, 0x49, 0x95, 0x8c, 0xbc, 0xda, 0x3b, 0x4c, 0xf0, 0x58, 0x3b, 0x66, 0x16, 0x75,
0x05, 0x45, 0x42, 0xbf, 0xb4, 0x81, 0x1c, 0xf5, 0x5b, 0x5d, 0x5f, 0x1c, 0x46, 0x1e, 0x8f, 0x8c,
0x53, 0x36, 0x60, 0x92, 0xc5, 0xe7, 0xda, 0xf1, 0xf9, 0x21, 0x42, 0x7c, 0xbe, 0x3f, 0x41, 0x25,
0x4b, 0x4a, 0xb4, 0xb4, 0xa7, 0x6d, 0x89, 0x6d, 0xdf, 0x93, 0x12, 0x2d, 0xdf, 0xdb, 0x9e, 0x87,
0x59, 0x8f, 0x0b, 0xe6, 0x77, 0x62, 0xe7, 0xd7, 0x19, 0x28, 0x27, 0x50, 0x74, 0x8c, 0xbd, 0x0b,
0x05, 0x3f, 0xb8, 0x60, 0x1d, 0xdf, 0x73, 0x43, 0xc9, 0xd0, 0x80, 0x43, 0x95, 0xea, 0x8a, 0x8b,
0xab, 0xf6, 0x27, 0x68, 0xde, 0xb7, 0xbe, 0xc9, 0x23, 0x58, 0x62, 0xed, 0x36, 0xef, 0x09, 0xae,
0x97, 0xbb, 0x41, 0x28, 0xad, 0x8c, 0xd1, 0xb7, 0x3f, 0x41, 0x89, 0xe1, 0xa2, 0x78, 0x43, 0xf2,
0xec, 0x43, 0x35, 0x60, 0x51, 0x16, 0x35, 0x64, 0x0e, 0x4a, 0xe1, 0x1a, 0xcc, 0x5e, 0xf0, 0xa8,
0x15, 0xc6, 0x5c, 0x97, 0x41, 0xf3, 0x99, 0x2e, 0x92, 0xd9, 0x91, 0x22, 0xf9, 0x21, 0x10, 0x7b,
0x3f, 0xad, 0xe2, 0x06, 0x4c, 0xb1, 0xf8, 0xdc, 0xd4, 0x83, 0x84, 0x29, 0x29, 0x72, 0xa4, 0x44,
0xcb, 0xf7, 0xcc, 0x55, 0x96, 0x30, 0x25, 0x45, 0x8e, 0xf3, 0x18, 0xc8, 0x8e, 0x8c, 0x93, 0x4e,
0xc2, 0x47, 0x77, 0x21, 0x67, 0x6b, 0xad, 0xc2, 0x18, 0xc2, 0x81, 0xae, 0xce, 0x32, 0x94, 0x13,
0xcb, 0x74, 0x26, 0xfc, 0x73, 0x12, 0xa6, 0x95, 0x01, 0xbf, 0xfa, 0xa2, 0xc1, 0xb4, 0x3b, 0xf1,
0xaf, 0xb8, 0xf2, 0x74, 0x81, 0xce, 0x4b, 0xca, 0x9e, 0x24, 0x90, 0x12, 0x4c, 0xb2, 0xae, 0xd0,
0x51, 0x2f, 0x7f, 0x92, 0xef, 0xc1, 0x7a, 0x97, 0x5d, 0xb9, 0x2d, 0x26, 0xda, 0x67, 0x63, 0x7b,
0x18, 0x15, 0xff, 0xab, 0x5d, 0x76, 0xb5, 0x2d, 0x65, 0xd2, 0x6d, 0x4c, 0x4a, 0xa3, 0xe9, 0xb4,
0x46, 0xe4, 0x41, 0x32, 0xf4, 0xcb, 0xc3, 0xb4, 0x94, 0x32, 0x89, 0xc0, 0x5f, 0x82, 0xe9, 0x7e,
0xe0, 0x8b, 0x18, 0x43, 0xbe, 0x40, 0xd5, 0x87, 0x4c, 0x34, 0xfc, 0xe1, 0xf6, 0x83, 0x93, 0x7e,
0xe7, 0xc4, 0xef, 0x74, 0xb8, 0xb7, 0x36, 0xa7, 0x12, 0x0d, 0x19, 0xcf, 0x87, 0x74, 0xf2, 0x26,
0x90, 0x88, 0xc7, 0x3c, 0xba, 0xe0, 0x9e, 0x3b, 0x6c, 0x57, 0xe6, 0x55, 0x0e, 0x1b, 0xce, 0x0b,
0xd3, 0xb6, 0x3c, 0x82, 0xe5, 0x76, 0xc4, 0x55, 0x06, 0x0b, 0xbf, 0xcb, 0x63, 0xc1, 0xba, 0x3d,
0x37, 0x88, 0xd7, 0x00, 0x17, 0x94, 0x0d, 0xf3, 0xd8, 0xf0, 0x1a, 0xf2, 0x38, 0x33, 0xfc, 0x82,
0xcb, 0xee, 0x29, 0x87, 0xce, 0x4f, 0x29, 0x54, 0x93, 0x3c, 0xaa, 0x45, 0x74, 0x93, 0xe7, 0xaa,
0xf3, 0x77, 0xa5, 0xfd, 0xd6, 0xf2, 0x78, 0x72, 0xd9, 0xe4, 0x3d, 0x97, 0xd4, 0x67, 0x92, 0xe8,
0xfc, 0x3e, 0x03, 0x93, 0xdb, 0xbe, 0x47, 0xee, 0x0f, 0x42, 0x5d, 0xa7, 0x55, 0x31, 0xb9, 0x3b,
0x35, 0x6c, 0x79, 0xf4, 0x0e, 0x67, 0x31, 0x77, 0xbd, 0xbe, 0xbe, 0x82, 0x5a, 0x9d, 0xb0, 0x7d,
0x1e, 0x6b, 0x9f, 0x97, 0x91, 0xb9, 0xab, 0x79, 0xdb, 0xc8, 0xd2, 0x89, 0x12, 0xfb, 0x61, 0xa0,
0x5a, 0x71, 0x6a, 0x3e, 0xc9, 0x63, 0x90, 0x07, 0x72, 0x83, 0xd0, 0xe3, 0xae, 0xf0, 0x79, 0x84,
0x5e, 0x2f, 0x5a, 0x77, 0x68, 0x23, 0xf4, 0xf8, 0xb1, 0xcf, 0x23, 0x9a, 0xeb, 0xfa, 0x81, 0xf9,
0x70, 0xbe, 0x80, 0xc9, 0x6a, 0x7c, 0xfe, 0x9f, 0x3a, 0xb5, 0xf3, 0xe7, 0x0c, 0xc0, 0xd0, 0xe8,
0xb2, 0xa2, 0x25, 0x9c, 0x28, 0xcf, 0x32, 0x49, 0x73, 0xc2, 0x72, 0xde, 0x6d, 0x98, 0x47, 0xcf,
0xb8, 0xb1, 0x88, 0x74, 0xa7, 0x3a, 0x87, 0x84, 0x23, 0x11, 0x91, 0xa7, 0x90, 0xc7, 0x38, 0x74,
0xdb, 0x67, 0x2c, 0x38, 0xe5, 0xba, 0xd5, 0x1a, 0x5e, 0x6c, 0xcf, 0x7b, 0x1e, 0x13, 0xdc, 0x43,
0xb0, 0xfd, 0x09, 0x9a, 0x43, 0xe1, 0x1d, 0x94, 0x25, 0x5b, 0x30, 0x8b, 0xee, 0xe5, 0x1e, 0x9a,
0xce, 0x0e, 0x0b, 0xf4, 0xb0, 0x59, 0x64, 0xa4, 0xb6, 0x67, 0x61, 0x1a, 0x81, 0x9d, 0xdf, 0x65,
0x20, 0x6f, 0xef, 0x4c, 0x9e, 0x42, 0xb1, 0x17, 0xf1, 0x0b, 0x3f, 0xec, 0xc7, 0xae, 0xca, 0x9c,
0xcc, 0xcd, 0x99, 0x53, 0x30, 0xa2, 0xf8, 0x49, 0xde, 0x82, 0xf9, 0x80, 0x5f, 0xea, 0x65, 0xd9,
0x9b, 0x97, 0xcd, 0x05, 0xfc, 0x52, 0xad, 0xb8, 0x07, 0x79, 0x15, 0x9d, 0x3a, 0xb1, 0x94, 0x89,
0x73, 0x48, 0xdb, 0x43, 0x92, 0xf3, 0xd7, 0x0c, 0xc0, 0x50, 0x09, 0xf2, 0x0e, 0xe4, 0x50, 0x89,
0x1b, 0x0e, 0x87, 0x92, 0x0a, 0x05, 0xba, 0x83, 0xdf, 0x23, 0x38, 0xd9, 0x11, 0x1c, 0xd9, 0x82,
0x69, 0xeb, 0xe8, 0xca, 0x32, 0xa9, 0x5a, 0x30, 0x4d, 0x54, 0xf7, 0xdf, 0x7b, 0x50, 0x88, 0xf8,
0xa7, 0xbc, 0x2d, 0xdc, 0x88, 0xb3, 0x38, 0x0c, 0x74, 0xa4, 0x56, 0x92, 0xf8, 0x14, 0x45, 0x28,
0x4a, 0xd0, 0x7c, 0x64, 0x7d, 0xc9, 0x76, 0x83, 0xf2, 0x76, 0x78, 0xc1, 0xa3, 0xd4, 0x93, 0xca,
0x39, 0x84, 0xd5, 0x11, 0x8e, 0xae, 0x08, 0xef, 0xc0, 0x4a, 0xd0, 0xef, 0xba, 0x91, 0x62, 0x73,
0xcf, 0xb5, 0x9e, 0x50, 0x52, 0x8f, 0xa5, 0xa0, 0xdf, 0xa5, 0x86, 0x69, 0x56, 0x3b, 0x65, 0x58,
0xac, 0xaa, 0xd7, 0xf7, 0xb0, 0x77, 0x72, 0x9a, 0x40, 0x6c, 0xa2, 0x06, 0x78, 0x0a, 0x05, 0x7e,
0xc5, 0xdb, 0x7d, 0xcc, 0x09, 0xf9, 0x42, 0x48, 0x57, 0xd5, 0x9a, 0xe1, 0xca, 0x55, 0x79, 0x6e,
0x7d, 0x39, 0x7f, 0x9f, 0x82, 0xe9, 0x03, 0x99, 0x38, 0xe4, 0x09, 0x14, 0x64, 0xec, 0x06, 0xbc,
0xe3, 0xaa, 0x56, 0x28, 0x73, 0x53, 0x2b, 0x94, 0xd7, 0x72, 0xf8, 0x25, 0xaf, 0x29, 0xb3, 0x8e,
0x75, 0xed, 0x1e, 0xd5, 0x6c, 0x57, 0xed, 0x62, 0x9f, 0xfa, 0x04, 0x56, 0x8d, 0x5c, 0x3a, 0x81,
0x55, 0xdc, 0x2c, 0x6b, 0x76, 0x2a, 0x85, 0xdf, 0x82, 0x25, 0xb3, 0x4e, 0xa5, 0xbf, 0x7a, 0xc3,
0xab, 0x97, 0x3e, 0x25, 0x9a, 0x87, 0x3a, 0xd4, 0x90, 0x23, 0xcb, 0x4a, 0x2f, 0xe2, 0x5d, 0xbf,
0xdf, 0xc5, 0xd3, 0x4c, 0xe3, 0x69, 0x40, 0x93, 0xe4, 0x51, 0x36, 0x65, 0xfb, 0x65, 0x19, 0x0c,
0xc5, 0x66, 0x54, 0x87, 0x69, 0x5b, 0x47, 0xca, 0x3a, 0x68, 0x16, 0x7f, 0x28, 0x37, 0x8b, 0x72,
0x39, 0x24, 0x6a, 0x99, 0x87, 0x50, 0x6e, 0x77, 0x38, 0x8b, 0xfc, 0xe0, 0x54, 0x95, 0xc0, 0x5e,
0xe4, 0xb7, 0x39, 0xd6, 0x99, 0x29, 0xba, 0x68, 0x58, 0xb2, 0xf4, 0x35, 0x25, 0x83, 0xdc, 0x87,
0x92, 0xaa, 0x7b, 0x58, 0x69, 0x71, 0x89, 0x2e, 0x33, 0x45, 0xa4, 0x63, 0xbd, 0xa5, 0xba, 0x9d,
0xb3, 0x2b, 0x24, 0x8c, 0x54, 0xc8, 0x3b, 0x30, 0xdf, 0xeb, 0x47, 0xed, 0x33, 0x16, 0x73, 0x6f,
0x2d, 0x87, 0x3d, 0xca, 0x90, 0x40, 0x1e, 0x0f, 0x6d, 0x1e, 0xf1, 0x6e, 0x28, 0xb8, 0xba, 0xa5,
0x65, 0xf5, 0xcf, 0xe3, 0x56, 0xc6, 0xb4, 0x14, 0xb9, 0xf2, 0x6e, 0x96, 0x8d, 0xc0, 0x77, 0x61,
0xd1, 0x2c, 0x1b, 0xde, 0xea, 0x85, 0x9b, 0x6e, 0x75, 0xe3, 0xfe, 0xc1, 0xcd, 0xbe, 0x0f, 0x05,
0x74, 0xc7, 0xa0, 0xc9, 0xba, 0x0d, 0xf3, 0xaa, 0x47, 0x90, 0x6d, 0x8f, 0x6c, 0x8c, 0xf2, 0x74,
0x0e, 0x09, 0x75, 0x2f, 0x26, 0x15, 0x6b, 0xa6, 0x90, 0x55, 0xbc, 0xc1, 0x04, 0xe1, 0xb7, 0x19,
0x28, 0x9a, 0xad, 0x74, 0xb0, 0xbf, 0x06, 0x33, 0x18, 0x06, 0xa6, 0xc3, 0x1a, 0x96, 0x0b, 0x14,
0xa4, 0x9a, 0x4b, 0xb6, 0x60, 0x09, 0x07, 0x23, 0x18, 0x94, 0x9c, 0x45, 0x01, 0xf7, 0xac, 0xd8,
0x5c, 0x44, 0x5e, 0xb5, 0x2b, 0x6a, 0xc8, 0x91, 0x4e, 0x7c, 0x03, 0xc8, 0x70, 0x41, 0x8f, 0xf9,
0x4a, 0x5c, 0x3f, 0xa3, 0x8c, 0x78, 0x93, 0xf9, 0x52, 0xd8, 0x59, 0x80, 0xc2, 0x71, 0x78, 0xce,
0x83, 0x41, 0xfe, 0xbf, 0x0b, 0x45, 0x43, 0x18, 0xbc, 0xa7, 0x66, 0x04, 0x52, 0xf4, 0x41, 0xc9,
0xf0, 0xa0, 0x31, 0x13, 0x28, 0x4c, 0xb5, 0x84, 0xf3, 0xc7, 0x2c, 0xcc, 0x0f, 0xa8, 0xf2, 0x2e,
0x6b, 0xc9, 0x40, 0xef, 0xb2, 0x36, 0x8b, 0xc2, 0x30, 0xd0, 0x9d, 0x5a, 0x5e, 0x12, 0x9f, 0x69,
0x9a, 0xbc, 0x13, 0x7b, 0xec, 0xba, 0x2b, 0xeb, 0xd1, 0x19, 0x8b, 0xcf, 0xcc, 0x13, 0x4c, 0xd3,
0xf6, 0x59, 0x7c, 0x46, 0x1e, 0x40, 0xc9, 0x88, 0xf4, 0x22, 0xee, 0x77, 0x99, 0xae, 0x4b, 0x79,
0xba, 0xa0, 0xe9, 0x4d, 0x4d, 0x96, 0x11, 0xa9, 0xdf, 0x98, 0xa8, 0x79, 0x57, 0xaa, 0x3e, 0x85,
0x25, 0xb0, 0xa8, 0xe8, 0x52, 0xf1, 0x67, 0x31, 0x13, 0xe4, 0x6d, 0x58, 0x8e, 0xc2, 0xbe, 0x90,
0xa1, 0x2e, 0x33, 0x62, 0x28, 0x3e, 0x8d, 0xe2, 0x44, 0x33, 0xf7, 0x38, 0x1f, 0x2c, 0xd1, 0xb5,
0xd5, 0xc5, 0x8e, 0x88, 0x7b, 0x98, 0x69, 0xba, 0xb6, 0xee, 0x28, 0x92, 0xac, 0xd3, 0x98, 0xd6,
0x5c, 0x3d, 0x59, 0xe6, 0xa8, 0xf9, 0x94, 0x8b, 0x63, 0x11, 0x46, 0xec, 0x94, 0xbb, 0x01, 0xeb,
0xaa, 0xa4, 0x9a, 0x97, 0xf5, 0x13, 0x69, 0x0d, 0xd6, 0xe5, 0xce, 0x0a, 0x2c, 0x1d, 0xd8, 0xb5,
0xdf, 0xf8, 0xe4, 0x0f, 0x19, 0x58, 0x4e, 0x31, 0xb4, 0x6f, 0x3e, 0x81, 0x85, 0x64, 0x2b, 0x61,
0x9c, 0xf4, 0x28, 0x19, 0x4d, 0xe9, 0x85, 0x49, 0x6a, 0x5c, 0x0b, 0x44, 0x74, 0x4d, 0x8b, 0x89,
0xc6, 0x23, 0xae, 0x54, 0xa1, 0x3c, 0x46, 0x4c, 0xb6, 0xcf, 0xa6, 0xeb, 0x2e, 0x50, 0xf9, 0x73,
0xf8, 0x90, 0x54, 0x6f, 0x0b, 0xf5, 0xf1, 0x34, 0xfb, 0xff, 0x19, 0xa9, 0x51, 0x83, 0x5f, 0x09,
0x6c, 0x9a, 0xeb, 0xc1, 0x49, 0x68, 0x34, 0xfa, 0x65, 0x06, 0x96, 0x53, 0x0c, 0xad, 0xd1, 0xdd,
0xe4, 0xf8, 0x4b, 0xbd, 0x25, 0xed, 0xe1, 0xd7, 0x0d, 0xef, 0xea, 0x99, 0xb1, 0xef, 0x6a, 0xf2,
0x3a, 0x2c, 0xe0, 0xb5, 0x35, 0xec, 0x6c, 0xf5, 0xbd, 0x57, 0x44, 0xf2, 0xa0, 0xa7, 0x75, 0x9e,
0xc0, 0xa2, 0xcc, 0x7b, 0xca, 0xa4, 0xd3, 0x4d, 0xbe, 0xdf, 0x83, 0x3c, 0xde, 0x1b, 0xbd, 0x7e,
0xeb, 0x9c, 0x5f, 0x9b, 0x94, 0xcf, 0x49, 0x5a, 0x53, 0x91, 0x9c, 0x03, 0x20, 0xf6, 0x3a, 0xad,
0xc5, 0x13, 0xbd, 0x30, 0x42, 0xb2, 0x71, 0x4a, 0x39, 0x71, 0xe7, 0xe8, 0x25, 0xb8, 0x9b, 0xfa,
0x1d, 0x6f, 0x7e, 0x99, 0x81, 0xbc, 0xfd, 0x1a, 0x26, 0x25, 0xc8, 0x37, 0x6b, 0x8d, 0xdd, 0x7a,
0xe3, 0x7d, 0xf7, 0xb0, 0x59, 0x6b, 0x94, 0x26, 0x08, 0x81, 0xa2, 0xa1, 0x3c, 0x6f, 0xee, 0x56,
0x8f, 0x6b, 0xa5, 0x0c, 0x99, 0x83, 0x29, 0xe4, 0x66, 0x49, 0x0e, 0x66, 0x6b, 0x1f, 0x36, 0xeb,
0xb4, 0xb6, 0x5b, 0x9a, 0xb4, 0x45, 0x77, 0x0e, 0x0e, 0x8f, 0x6a, 0xbb, 0xa5, 0x29, 0x02, 0x30,
0xa3, 0x7f, 0x4f, 0x93, 0x32, 0x2c, 0xd0, 0xda, 0xce, 0xe1, 0x8b, 0x1a, 0xfd, 0xc8, 0xdd, 0xab,
0xd6, 0x0f, 0x6a, 0xbb, 0xa5, 0x19, 0xb2, 0x08, 0x05, 0xb3, 0x68, 0xbb, 0x7a, 0xbc, 0xb3, 0x5f,
0x9a, 0xdd, 0x6c, 0xea, 0xd6, 0x47, 0x1d, 0x29, 0x07, 0xb3, 0x4d, 0x5a, 0x6b, 0x56, 0x69, 0xad,
0x34, 0x41, 0xf2, 0x30, 0x57, 0xdd, 0xd9, 0xa9, 0x35, 0x8f, 0x6b, 0xbb, 0xa5, 0x8c, 0xfc, 0xa2,
0xb5, 0x1f, 0xd4, 0x76, 0xe4, 0x57, 0x56, 0x42, 0x1d, 0xd5, 0xdf, 0x6f, 0xe0, 0x51, 0x0a, 0x30,
0xbf, 0x57, 0x6f, 0x54, 0x0f, 0xea, 0x1f, 0xcb, 0x53, 0x6c, 0xfe, 0x29, 0x03, 0x8b, 0x23, 0x3d,
0x8a, 0x54, 0xa3, 0x71, 0xd8, 0x90, 0xdb, 0xae, 0x00, 0x39, 0xaa, 0xd1, 0x17, 0x35, 0xea, 0x3e,
0xab, 0x1f, 0x6d, 0xd7, 0xf6, 0xab, 0x2f, 0xea, 0x87, 0xb4, 0x94, 0x21, 0x15, 0x58, 0xc1, 0x43,
0xb9, 0x2f, 0x6a, 0xf4, 0xa8, 0x7e, 0xd8, 0x90, 0xec, 0x67, 0x78, 0xca, 0x2c, 0x59, 0x87, 0x5b,
0xcd, 0x2a, 0x3d, 0xae, 0x57, 0x0f, 0x5c, 0x75, 0x08, 0x77, 0xe7, 0xf0, 0xe0, 0xa0, 0x7a, 0x5c,
0xa3, 0xd5, 0x83, 0xd2, 0x24, 0xb9, 0x07, 0xeb, 0x29, 0xf6, 0xee, 0xf3, 0xe6, 0x41, 0x7d, 0xa7,
0x7a, 0x5c, 0x73, 0x9b, 0xb5, 0x1a, 0x2d, 0x4d, 0x91, 0x07, 0xf0, 0x6a, 0x7a, 0x87, 0xfd, 0x6a,
0xa3, 0x51, 0x3b, 0x70, 0xf7, 0x9e, 0x2b, 0x8b, 0x68, 0x2b, 0x4d, 0x3f, 0xfa, 0xc5, 0x02, 0xcc,
0x1c, 0xe3, 0x83, 0x93, 0x84, 0x90, 0xb7, 0x87, 0xe2, 0xe4, 0xce, 0xc0, 0xcb, 0x63, 0x46, 0xf2,
0x95, 0xf5, 0x1b, 0xb8, 0xfa, 0x8d, 0xeb, 0xfc, 0xf4, 0x1f, 0xff, 0xfa, 0x32, 0x7b, 0xc7, 0x59,
0xdd, 0xba, 0x78, 0x7b, 0x4b, 0x4a, 0x6e, 0x99, 0x1a, 0xb2, 0xf5, 0x99, 0x94, 0x7f, 0x9a, 0xd9,
0x24, 0x1f, 0x43, 0xce, 0xfa, 0xeb, 0x82, 0xdc, 0xb6, 0x86, 0x0e, 0xe9, 0x91, 0x5c, 0x65, 0x64,
0xf6, 0xe5, 0xdc, 0x41, 0x84, 0x15, 0x67, 0x71, 0x04, 0x41, 0xee, 0x7d, 0x02, 0x79, 0x7b, 0x60,
0x6e, 0x29, 0x33, 0x66, 0xfe, 0x6e, 0x29, 0x33, 0x6e, 0xca, 0xee, 0xdc, 0x42, 0xa8, 0x32, 0x19,
0x85, 0x92, 0x38, 0xf6, 0xe8, 0xd5, 0xc2, 0x19, 0x33, 0x5b, 0xb6, 0x70, 0xc6, 0xcd, 0x6b, 0x0d,
0xce, 0xe6, 0x18, 0x9c, 0xcf, 0x61, 0x21, 0x35, 0x18, 0x25, 0xc3, 0xb1, 0xf1, 0xf8, 0x21, 0x6e,
0x65, 0xe3, 0x66, 0x01, 0x0d, 0xf8, 0x2a, 0x02, 0xde, 0x75, 0x2a, 0xa3, 0x5e, 0x32, 0xa3, 0x52,
0x69, 0xcc, 0x4b, 0x28, 0x26, 0x67, 0x94, 0xe4, 0x95, 0xc1, 0xd6, 0x63, 0x27, 0xa8, 0x95, 0xbb,
0x37, 0xf2, 0x35, 0xf2, 0x7f, 0x23, 0xf2, 0x2b, 0xce, 0xad, 0x51, 0x64, 0x3d, 0xb4, 0x94, 0xc0,
0x02, 0x8a, 0xc9, 0x69, 0xa2, 0x05, 0x3c, 0x76, 0x98, 0x69, 0x01, 0xdf, 0x30, 0x86, 0xbc, 0x87,
0xc0, 0xb7, 0x9d, 0x95, 0x51, 0xe0, 0x56, 0xbf, 0xdb, 0x93, 0xa8, 0x3f, 0x81, 0x85, 0xd4, 0xd3,
0xc1, 0xb2, 0xf5, 0xf8, 0xe7, 0x86, 0x65, 0xeb, 0x1b, 0x5e, 0x1d, 0x2f, 0xd3, 0x58, 0xbf, 0x44,
0x24, 0xb6, 0x07, 0x39, 0x6b, 0x4e, 0x67, 0xe5, 0xc4, 0xe8, 0x8c, 0xb0, 0x72, 0x67, 0x3c, 0x53,
0xe3, 0x55, 0x10, 0x6f, 0xc9, 0x59, 0x18, 0xe0, 0x61, 0x97, 0x8a, 0xd9, 0xf1, 0x63, 0x80, 0xe1,
0xa4, 0x8c, 0x54, 0x12, 0xd1, 0x9f, 0x18, 0xc7, 0x55, 0x6e, 0x8f, 0xe5, 0x69, 0x88, 0x55, 0x84,
0x58, 0x24, 0x69, 0x08, 0x12, 0x42, 0xce, 0x1a, 0x7c, 0x59, 0x5a, 0x8c, 0x4e, 0xd1, 0x2c, 0x2d,
0xc6, 0xcd, 0xca, 0x74, 0x84, 0x6e, 0xae, 0xa7, 0x20, 0xb6, 0x3e, 0xb7, 0xda, 0xf0, 0x2f, 0xc8,
0x27, 0x00, 0xc3, 0x77, 0x98, 0xa5, 0xd0, 0xc8, 0x8b, 0xcd, 0x52, 0x68, 0xf4, 0xe1, 0xe6, 0x2c,
0x21, 0x5a, 0x91, 0xe4, 0x07, 0x68, 0x27, 0x9c, 0x93, 0xcf, 0x74, 0xcf, 0x3b, 0xe8, 0x1f, 0xc8,
0xfa, 0x4d, 0x5d, 0x89, 0xc2, 0x78, 0xe5, 0xe5, 0x4d, 0x8b, 0xb3, 0x81, 0x30, 0x15, 0xb2, 0x36,
0x80, 0x49, 0x35, 0x3f, 0xe4, 0x1c, 0x0a, 0x89, 0xb6, 0xc2, 0x42, 0x1c, 0xd7, 0x87, 0x58, 0x88,
0x63, 0xbb, 0x11, 0xe7, 0x36, 0x22, 0x2e, 0x93, 0xf2, 0x00, 0x11, 0xdb, 0xfd, 0xad, 0x80, 0x5f,
0x09, 0x12, 0x42, 0x01, 0x57, 0x1c, 0x05, 0xac, 0x17, 0x9f, 0x85, 0xc2, 0x02, 0x4b, 0xd0, 0x47,
0xc1, 0x52, 0x6c, 0x0d, 0x76, 0x17, 0xc1, 0x6e, 0x91, 0xd5, 0x14, 0x58, 0x6c, 0xf6, 0xff, 0x08,
0x0a, 0xef, 0x73, 0x31, 0xe8, 0xaf, 0x63, 0x32, 0xfc, 0xef, 0x2c, 0xd1, 0xc4, 0x57, 0x56, 0x47,
0xe8, 0xe3, 0x22, 0xaf, 0x13, 0x33, 0xb1, 0xa5, 0x1a, 0x77, 0x42, 0x61, 0x46, 0xbd, 0x4f, 0xac,
0x3d, 0x13, 0x6f, 0x1f, 0x6b, 0xcf, 0xe4, 0x43, 0x66, 0x4c, 0x34, 0xeb, 0x97, 0x0b, 0x87, 0xdc,
0xb0, 0xcf, 0xb1, 0xd3, 0x65, 0xa4, 0xd1, 0xb2, 0xa2, 0x6b, 0xb4, 0x99, 0x72, 0xd6, 0x11, 0x60,
0x95, 0x2c, 0x0f, 0x00, 0xec, 0xde, 0x6a, 0xfb, 0xf5, 0x8f, 0x5f, 0x3d, 0xf5, 0xc5, 0x59, 0xbf,
0xf5, 0xb0, 0x1d, 0x76, 0xb7, 0x3a, 0xfe, 0xe9, 0x99, 0x08, 0xfc, 0xe0, 0xb4, 0xc3, 0x5a, 0xb1,
0x92, 0xd6, 0x5b, 0xb7, 0x66, 0xf0, 0xaf, 0xff, 0xff, 0xfd, 0x77, 0x00, 0x00, 0x00, 0xff, 0xff,
0x92, 0x49, 0xff, 0x06, 0x43, 0x20, 0x00, 0x00,
// 3132 bytes of a gzipped FileDescriptorProto
0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xc4, 0x5a, 0xcd, 0x73, 0x1b, 0xc7,
0x95, 0xe7, 0xf0, 0x9b, 0x0f, 0x1f, 0x04, 0x1b, 0xfc, 0x12, 0x24, 0x5a, 0xd4, 0xec, 0xda, 0x96,
0x68, 0xaf, 0x68, 0x6b, 0x2d, 0xed, 0x96, 0xd6, 0x6b, 0x2f, 0x48, 0x82, 0x26, 0xd6, 0x14, 0x88,
0x34, 0x29, 0xc5, 0x1f, 0x55, 0x99, 0x6a, 0x60, 0x9a, 0xe4, 0x98, 0x98, 0x19, 0x78, 0xa6, 0x41,
0x52, 0x51, 0xe9, 0x92, 0xe4, 0x9e, 0x54, 0x5c, 0x49, 0x8e, 0xa9, 0xca, 0xdf, 0x90, 0xaa, 0x1c,
0x52, 0x95, 0x43, 0x4e, 0xa9, 0x4a, 0x2e, 0xa9, 0x9c, 0x73, 0xcb, 0x1f, 0x92, 0xea, 0xd7, 0xdd,
0xc0, 0xcc, 0x00, 0x90, 0x3f, 0x2e, 0xb9, 0x61, 0xde, 0x7b, 0xdd, 0xbf, 0x7e, 0x5f, 0xfd, 0x5e,
0x3f, 0x12, 0xf2, 0x22, 0x62, 0x2e, 0x8f, 0xee, 0x77, 0xa3, 0x50, 0x84, 0x64, 0xae, 0x1b, 0x86,
0x9d, 0xa8, 0xdb, 0xae, 0xdc, 0x3a, 0x0b, 0xc3, 0xb3, 0x0e, 0xdf, 0x66, 0x5d, 0x6f, 0x9b, 0x05,
0x41, 0x28, 0x98, 0xf0, 0xc2, 0x20, 0x56, 0x62, 0x95, 0x12, 0xeb, 0xb5, 0xe5, 0x37, 0x37, 0x0b,
0xed, 0xbf, 0x58, 0x40, 0xea, 0x81, 0x27, 0xaa, 0xed, 0x76, 0xd8, 0x0b, 0x04, 0xe5, 0x5f, 0xf6,
0x78, 0x2c, 0xc8, 0xbf, 0x41, 0x81, 0x29, 0x8a, 0x73, 0xc9, 0x3a, 0x3d, 0xbe, 0x6e, 0x6d, 0x5a,
0x77, 0xa7, 0x69, 0x5e, 0x13, 0x9f, 0x49, 0x1a, 0xb9, 0x07, 0x8b, 0xac, 0x15, 0x87, 0x9d, 0x9e,
0xe0, 0xce, 0x39, 0xf7, 0xce, 0xce, 0xc5, 0xfa, 0xe4, 0xa6, 0x75, 0xb7, 0x70, 0x30, 0x41, 0x8b,
0x86, 0x71, 0x80, 0x74, 0x29, 0x1a, 0xf1, 0x0e, 0x13, 0xde, 0x65, 0x5f, 0x74, 0xca, 0x88, 0x1a,
0x86, 0x16, 0xbd, 0x03, 0xb9, 0x76, 0x18, 0x9c, 0x3a, 0x82, 0x45, 0x67, 0x5c, 0xac, 0x4f, 0xa3,
0x98, 0x45, 0x41, 0x12, 0x4f, 0x90, 0xb6, 0x53, 0x82, 0xa2, 0x39, 0x1d, 0xbf, 0xee, 0x7a, 0xd1,
0xf3, 0x9d, 0x59, 0x98, 0x3e, 0xe5, 0x3c, 0xb6, 0x39, 0x94, 0xbf, 0xd7, 0x0b, 0x05, 0xff, 0x2e,
0xea, 0x64, 0x80, 0x8d, 0x2a, 0x49, 0x60, 0x03, 0x73, 0x05, 0xcb, 0x69, 0x98, 0xb8, 0x1b, 0x06,
0x31, 0x27, 0xff, 0x05, 0x37, 0x7c, 0x2f, 0xe0, 0x91, 0x73, 0xca, 0xb9, 0x13, 0x31, 0xc1, 0x9d,
0x98, 0x09, 0xa7, 0xcb, 0x23, 0xe7, 0xe2, 0x4a, 0x63, 0x2e, 0xa3, 0xc0, 0x3e, 0xe7, 0x94, 0x09,
0x7e, 0xcc, 0x44, 0x93, 0x47, 0x1f, 0x5f, 0x91, 0x37, 0x60, 0x71, 0xb0, 0x50, 0x84, 0x82, 0x75,
0x10, 0x7f, 0x9a, 0x16, 0x8c, 0xf8, 0x89, 0x24, 0xda, 0x8f, 0xa0, 0x7c, 0xe8, 0xc5, 0xc6, 0x5b,
0xb1, 0xd1, 0xef, 0x36, 0xe4, 0x58, 0x1b, 0x8d, 0x1b, 0x06, 0x9d, 0xe7, 0x88, 0x34, 0x4f, 0x41,
0x91, 0x8e, 0x82, 0xce, 0x73, 0x7b, 0x0f, 0x96, 0xd3, 0xeb, 0xf4, 0x81, 0xdf, 0x86, 0x79, 0x6d,
0x83, 0x78, 0xdd, 0xda, 0x9c, 0xba, 0x9b, 0x7b, 0x50, 0xba, 0xaf, 0x43, 0xe9, 0xbe, 0x51, 0xae,
0x2f, 0x61, 0x7f, 0x08, 0xb3, 0x47, 0x3d, 0xd1, 0xed, 0x09, 0x72, 0x13, 0x16, 0xd0, 0x90, 0x52,
0x3f, 0xad, 0xd8, 0x3c, 0x12, 0x8e, 0x99, 0x20, 0xeb, 0x30, 0xc7, 0x5c, 0x37, 0xe2, 0x71, 0x8c,
0x4a, 0x2c, 0x50, 0xf3, 0x69, 0xff, 0xc4, 0x82, 0x82, 0xda, 0xe1, 0xfb, 0x9e, 0x38, 0xdf, 0xe7,
0x3c, 0x29, 0x6b, 0xa5, 0x64, 0xbf, 0x81, 0x3b, 0xc8, 0x7d, 0x28, 0x8f, 0x32, 0xb4, 0x8c, 0xac,
0xe9, 0x83, 0x09, 0xba, 0x78, 0x9a, 0xb6, 0x72, 0xdf, 0x7d, 0xbb, 0xb0, 0xaa, 0x4e, 0x11, 0xcb,
0x63, 0xd4, 0xfd, 0x6e, 0xc7, 0x6b, 0x7b, 0x42, 0x1e, 0xe7, 0x1e, 0xcc, 0x85, 0x8a, 0xa3, 0xcd,
0xb1, 0xd8, 0x37, 0x87, 0x5a, 0x41, 0x0d, 0xdf, 0xfe, 0x93, 0x05, 0xe5, 0xdd, 0x4e, 0x18, 0x67,
0x63, 0x6d, 0x03, 0x40, 0xa5, 0xa6, 0x73, 0xc1, 0x95, 0x2b, 0xf2, 0x74, 0x41, 0x51, 0x3e, 0xe6,
0xcf, 0xc9, 0xff, 0xc1, 0xa2, 0xda, 0xc1, 0xb9, 0xf2, 0xc4, 0xb9, 0xf4, 0x37, 0xaa, 0x96, 0x7b,
0xb0, 0x9a, 0x41, 0xd2, 0x16, 0x3a, 0x98, 0xa0, 0x85, 0x30, 0x65, 0xb2, 0xff, 0x19, 0x9c, 0x71,
0x0a, 0x57, 0xde, 0xce, 0xac, 0xcc, 0x6a, 0x75, 0x30, 0xd1, 0x3f, 0xf5, 0x4e, 0x19, 0x96, 0x4e,
0x7b, 0x81, 0x1b, 0x3b, 0x2e, 0x8f, 0x85, 0x17, 0xe0, 0xed, 0x60, 0x3f, 0x84, 0xe5, 0xb4, 0x26,
0x3a, 0x3a, 0x36, 0x00, 0xda, 0x92, 0xee, 0x88, 0x6b, 0xcf, 0x35, 0xaa, 0x20, 0xe5, 0xe4, 0xda,
0x73, 0xed, 0x9f, 0x59, 0xb0, 0x2a, 0xa1, 0xdc, 0x88, 0x5d, 0x7d, 0x3b, 0x23, 0x24, 0xcc, 0x3c,
0xf9, 0x6a, 0x33, 0x93, 0xb7, 0x5f, 0xe1, 0xe3, 0x21, 0x0f, 0xdb, 0x5f, 0xc0, 0xda, 0xd0, 0x89,
0xb4, 0x32, 0x5b, 0x30, 0xa7, 0x03, 0x19, 0xcf, 0x33, 0x2a, 0xd2, 0x8d, 0x80, 0xbc, 0x2f, 0xae,
0xf4, 0x36, 0x4a, 0xf7, 0x49, 0xd4, 0x20, 0x6f, 0x88, 0xa8, 0xfe, 0x8f, 0x2d, 0x58, 0xd9, 0xe3,
0xdd, 0x30, 0x1e, 0xba, 0x3d, 0xbf, 0x46, 0xfb, 0x0d, 0x00, 0xe6, 0xe3, 0x65, 0x24, 0xb3, 0x47,
0xe5, 0xf9, 0x82, 0xa2, 0xc8, 0xf4, 0xf9, 0x76, 0x1a, 0x9f, 0xc1, 0x6a, 0xf6, 0x10, 0xdf, 0x41,
0xe1, 0x3b, 0x90, 0x77, 0xd5, 0x2e, 0x49, 0x7d, 0x73, 0x9a, 0x86, 0xea, 0xba, 0xb0, 0xb2, 0xd3,
0xf3, 0xbb, 0x7a, 0xa9, 0xbc, 0xc0, 0xbe, 0x99, 0xb6, 0x63, 0xd4, 0x99, 0x1c, 0xad, 0xce, 0x3a,
0xac, 0x66, 0x51, 0x94, 0x3a, 0xf6, 0x2f, 0x26, 0x61, 0x4e, 0x93, 0xbf, 0x0e, 0xf2, 0x3f, 0x60,
0x5e, 0x86, 0x4f, 0xe8, 0x05, 0x42, 0x27, 0xd7, 0x52, 0x32, 0xbe, 0x9a, 0x92, 0x41, 0xfb, 0x22,
0x64, 0x19, 0x66, 0x54, 0x55, 0x50, 0x26, 0x56, 0x1f, 0xe4, 0x2d, 0x58, 0x62, 0x97, 0xcc, 0xeb,
0xb0, 0x56, 0x87, 0x3b, 0x2d, 0xd6, 0x61, 0x41, 0x9b, 0x63, 0x35, 0x9a, 0xa6, 0xa5, 0x3e, 0x63,
0x47, 0xd1, 0xa5, 0x30, 0x56, 0x22, 0xcc, 0x27, 0x53, 0xe1, 0x66, 0xe4, 0x95, 0x45, 0x4b, 0x03,
0x86, 0xae, 0x70, 0x6f, 0xc1, 0x4c, 0x2c, 0x98, 0xe0, 0xeb, 0xb3, 0x9b, 0xd6, 0xdd, 0xe2, 0x83,
0x95, 0xac, 0x5b, 0x8e, 0x25, 0x93, 0x2a, 0x19, 0x79, 0xb5, 0x77, 0x98, 0xe0, 0xb1, 0x76, 0xcc,
0x1c, 0xea, 0x0a, 0x8a, 0x84, 0x7e, 0x69, 0x03, 0x39, 0xee, 0xb5, 0x7c, 0x4f, 0x1c, 0x45, 0x2e,
0x8f, 0x8c, 0x53, 0x36, 0x61, 0x8a, 0xc5, 0x17, 0xda, 0xf1, 0xf9, 0x01, 0x42, 0x7c, 0x71, 0x30,
0x41, 0x25, 0x4b, 0x4a, 0xb4, 0xb4, 0xa7, 0x93, 0x12, 0x3b, 0x9e, 0x2b, 0x25, 0x5a, 0x9e, 0xbb,
0xb3, 0x00, 0x73, 0x2e, 0x17, 0xcc, 0xeb, 0xc4, 0xf6, 0xcf, 0x2d, 0x28, 0xa7, 0x50, 0x74, 0x8c,
0xbd, 0x0f, 0x05, 0x2f, 0xb8, 0x64, 0x1d, 0xcf, 0x75, 0x42, 0xc9, 0xd0, 0x80, 0x03, 0x95, 0xea,
0x8a, 0x8b, 0xab, 0x0e, 0x26, 0x68, 0xde, 0x4b, 0x7c, 0x93, 0x07, 0xb0, 0xcc, 0xda, 0x6d, 0xde,
0x15, 0x5c, 0x2f, 0x77, 0x82, 0x50, 0x5a, 0x19, 0xa3, 0xef, 0x60, 0x82, 0x12, 0xc3, 0x45, 0xf1,
0x86, 0xe4, 0x25, 0x0f, 0xd5, 0x80, 0x25, 0x59, 0xd4, 0x90, 0xd9, 0x2f, 0x85, 0xeb, 0x30, 0x77,
0xc9, 0xa3, 0x56, 0x18, 0x73, 0x5d, 0x06, 0xcd, 0x67, 0xb6, 0x48, 0x4e, 0x0e, 0x15, 0xc9, 0x4f,
0x80, 0x24, 0xf7, 0xd3, 0x2a, 0x6e, 0xc2, 0x34, 0x8b, 0x2f, 0x4c, 0x3d, 0x48, 0x99, 0x92, 0x22,
0x47, 0x4a, 0xb4, 0x3c, 0xd7, 0x5c, 0x65, 0x29, 0x53, 0x52, 0xe4, 0xd8, 0x0f, 0x81, 0xec, 0xca,
0x38, 0xe9, 0xa4, 0x7c, 0x74, 0x1b, 0x72, 0x49, 0xad, 0x55, 0x18, 0x43, 0xd8, 0xd7, 0xd5, 0x5e,
0x81, 0x72, 0x6a, 0x99, 0xce, 0x84, 0xbf, 0x4f, 0xc1, 0x8c, 0x32, 0xe0, 0xd7, 0x5f, 0x34, 0x98,
0x76, 0xa7, 0xde, 0x35, 0x57, 0x9e, 0x2e, 0xd0, 0x05, 0x49, 0xd9, 0x97, 0x04, 0x52, 0x82, 0x29,
0xe6, 0x0b, 0x1d, 0xf5, 0xf2, 0x27, 0xf9, 0x00, 0x36, 0x7c, 0x76, 0xed, 0xb4, 0x98, 0x68, 0x9f,
0x8f, 0xec, 0x61, 0x54, 0xfc, 0xaf, 0xf9, 0xec, 0x7a, 0x47, 0xca, 0x64, 0xdb, 0x98, 0x8c, 0x46,
0x33, 0x59, 0x8d, 0xc8, 0xbd, 0x74, 0xe8, 0x97, 0x07, 0x69, 0x29, 0x65, 0x52, 0x81, 0xbf, 0x0c,
0x33, 0xbd, 0xc0, 0x13, 0x31, 0x86, 0x7c, 0x81, 0xaa, 0x0f, 0x99, 0x68, 0xf8, 0xc3, 0xe9, 0x05,
0xa7, 0xbd, 0xce, 0xa9, 0xd7, 0xe9, 0x70, 0x77, 0x7d, 0x5e, 0x25, 0x1a, 0x32, 0x9e, 0x0e, 0xe8,
0xe4, 0x6d, 0x20, 0x11, 0x8f, 0x79, 0x74, 0xc9, 0x5d, 0x67, 0xd0, 0xae, 0x2c, 0xa8, 0x1c, 0x36,
0x9c, 0x67, 0xa6, 0x6d, 0x79, 0x00, 0x2b, 0xed, 0x88, 0xab, 0x0c, 0x16, 0x9e, 0xcf, 0x63, 0xc1,
0xfc, 0xae, 0x13, 0xc4, 0xeb, 0x80, 0x0b, 0xca, 0x86, 0x79, 0x62, 0x78, 0x0d, 0x79, 0x9c, 0x59,
0x7e, 0xc9, 0x65, 0xf7, 0x94, 0x43, 0xe7, 0x67, 0x14, 0xaa, 0x49, 0x1e, 0xd5, 0x22, 0xba, 0xc9,
0x73, 0xd4, 0xf9, 0x7d, 0x69, 0xbf, 0xf5, 0x3c, 0x9e, 0x5c, 0x36, 0x79, 0x4f, 0x25, 0xf5, 0x89,
0x24, 0xda, 0xbf, 0xb5, 0x60, 0x6a, 0xc7, 0x73, 0xc9, 0xdd, 0x7e, 0xa8, 0xeb, 0xb4, 0x2a, 0xa6,
0x77, 0xa7, 0x86, 0x2d, 0x8f, 0xde, 0xe1, 0x2c, 0xe6, 0x8e, 0xdb, 0xd3, 0x57, 0x50, 0xab, 0x13,
0xb6, 0x2f, 0x62, 0xed, 0xf3, 0x32, 0x32, 0xf7, 0x34, 0x6f, 0x07, 0x59, 0x3a, 0x51, 0x62, 0x2f,
0x0c, 0x54, 0x2b, 0x4e, 0xcd, 0x27, 0x79, 0x08, 0xf2, 0x40, 0x4e, 0x10, 0xba, 0xdc, 0x11, 0x1e,
0x8f, 0xd0, 0xeb, 0xc5, 0xc4, 0x1d, 0xda, 0x08, 0x5d, 0x7e, 0xe2, 0xf1, 0x88, 0xe6, 0x7c, 0x2f,
0x30, 0x1f, 0xf6, 0x4b, 0x98, 0xaa, 0xc6, 0x17, 0xff, 0xaa, 0x53, 0xdb, 0x7f, 0xb4, 0x00, 0x06,
0x46, 0x97, 0x15, 0x2d, 0xe5, 0x44, 0x79, 0x96, 0x29, 0x9a, 0x13, 0x09, 0xe7, 0xdd, 0x84, 0x05,
0xf4, 0x8c, 0x13, 0x8b, 0x48, 0x77, 0xaa, 0xf3, 0x48, 0x38, 0x16, 0x11, 0x79, 0x0c, 0x79, 0x8c,
0x43, 0xa7, 0x7d, 0xce, 0x82, 0x33, 0xae, 0x5b, 0xad, 0xc1, 0xc5, 0xf6, 0xb4, 0xeb, 0x32, 0xc1,
0x5d, 0x04, 0x3b, 0x98, 0xa0, 0x39, 0x14, 0xde, 0x45, 0x59, 0xb2, 0x0d, 0x73, 0xe8, 0x5e, 0xee,
0xa2, 0xe9, 0x92, 0x61, 0x81, 0x1e, 0x36, 0x8b, 0x8c, 0xd4, 0xce, 0x1c, 0xcc, 0x20, 0xb0, 0xfd,
0x6b, 0x0b, 0xf2, 0xc9, 0x9d, 0xc9, 0x63, 0x28, 0x76, 0x23, 0x7e, 0xe9, 0x85, 0xbd, 0xd8, 0x51,
0x99, 0x63, 0x8d, 0xcf, 0x9c, 0x82, 0x11, 0xc5, 0x4f, 0xf2, 0x0e, 0x2c, 0x04, 0xfc, 0x4a, 0x2f,
0x9b, 0x1c, 0xbf, 0x6c, 0x3e, 0xe0, 0x57, 0x6a, 0xc5, 0x1d, 0xc8, 0xab, 0xe8, 0xd4, 0x89, 0xa5,
0x4c, 0x9c, 0x43, 0xda, 0x3e, 0x92, 0xec, 0x3f, 0x5b, 0x00, 0x03, 0x25, 0xc8, 0x7b, 0x90, 0x43,
0x25, 0xc6, 0x1c, 0x0e, 0x25, 0x15, 0x0a, 0xf8, 0xfd, 0xdf, 0x43, 0x38, 0x93, 0x43, 0x38, 0xb2,
0x05, 0xd3, 0xd6, 0xd1, 0x95, 0x65, 0x4a, 0xb5, 0x60, 0x9a, 0xa8, 0xee, 0xbf, 0x0f, 0xa1, 0x10,
0xf1, 0x2f, 0x78, 0x5b, 0x38, 0x11, 0x67, 0x71, 0x18, 0xe8, 0x48, 0xad, 0xa4, 0xf1, 0x29, 0x8a,
0x50, 0x94, 0xa0, 0xf9, 0x28, 0xf1, 0x25, 0xdb, 0x0d, 0xca, 0xdb, 0xe1, 0x25, 0x8f, 0x32, 0x4f,
0x2a, 0xfb, 0x08, 0xd6, 0x86, 0x38, 0xba, 0x22, 0xbc, 0x07, 0xab, 0x41, 0xcf, 0x77, 0x22, 0xc5,
0xe6, 0xae, 0x93, 0x78, 0x42, 0x49, 0x3d, 0x96, 0x83, 0x9e, 0x4f, 0x0d, 0xd3, 0xac, 0xb6, 0xcb,
0xb0, 0x54, 0x55, 0xaf, 0xef, 0x41, 0xef, 0x64, 0x37, 0x81, 0x24, 0x89, 0x1a, 0xe0, 0x31, 0x14,
0xf8, 0x35, 0x6f, 0xf7, 0x30, 0x27, 0xe4, 0x0b, 0x21, 0x5b, 0x55, 0x6b, 0x86, 0x2b, 0x57, 0xe5,
0x79, 0xe2, 0xcb, 0xfe, 0xeb, 0x34, 0xcc, 0x1c, 0xca, 0xc4, 0x21, 0x8f, 0xa0, 0x20, 0x63, 0x37,
0xe0, 0x1d, 0x47, 0xb5, 0x42, 0xd6, 0xb8, 0x56, 0x28, 0xaf, 0xe5, 0xf0, 0x4b, 0x5e, 0x53, 0x66,
0x1d, 0xf3, 0x93, 0x3d, 0xaa, 0xd9, 0xae, 0xea, 0x63, 0x9f, 0xfa, 0x08, 0xd6, 0x8c, 0x5c, 0x36,
0x81, 0x55, 0xdc, 0xac, 0x68, 0x76, 0x26, 0x85, 0xdf, 0x81, 0x65, 0xb3, 0x4e, 0xa5, 0xbf, 0x7a,
0xc3, 0xab, 0x97, 0x3e, 0x25, 0x9a, 0x87, 0x3a, 0xd4, 0x90, 0x23, 0xcb, 0x4a, 0x37, 0xe2, 0xbe,
0xd7, 0xf3, 0xf1, 0x34, 0x33, 0x78, 0x1a, 0xd0, 0x24, 0x79, 0x94, 0x2d, 0xd9, 0x7e, 0x25, 0x0c,
0x86, 0x62, 0xb3, 0xaa, 0xc3, 0x4c, 0x5a, 0x47, 0xca, 0xda, 0x68, 0x16, 0x6f, 0x20, 0x37, 0x87,
0x72, 0x39, 0x24, 0x6a, 0x99, 0xfb, 0x50, 0x6e, 0x77, 0x38, 0x8b, 0xbc, 0xe0, 0x4c, 0x95, 0xc0,
0x6e, 0xe4, 0xb5, 0x39, 0xd6, 0x99, 0x69, 0xba, 0x64, 0x58, 0xb2, 0xf4, 0x35, 0x25, 0x83, 0xdc,
0x85, 0x92, 0xaa, 0x7b, 0x58, 0x69, 0x71, 0x89, 0x2e, 0x33, 0x45, 0xa4, 0x63, 0xbd, 0xa5, 0xba,
0x9d, 0x4b, 0x56, 0x48, 0x18, 0xaa, 0x90, 0xb7, 0x60, 0xa1, 0xdb, 0x8b, 0xda, 0xe7, 0x2c, 0xe6,
0xee, 0x7a, 0x0e, 0x7b, 0x94, 0x01, 0x81, 0x3c, 0x1c, 0xd8, 0x3c, 0xe2, 0x7e, 0x28, 0xb8, 0xba,
0xa5, 0x65, 0xf5, 0xcf, 0xe3, 0x56, 0xc6, 0xb4, 0x14, 0xb9, 0xf2, 0x6e, 0x96, 0x8d, 0xc0, 0xff,
0xc2, 0x92, 0x59, 0x36, 0xb8, 0xd5, 0x0b, 0xe3, 0x6e, 0x75, 0xe3, 0xfe, 0xfe, 0xcd, 0x7e, 0x00,
0x05, 0x74, 0x47, 0xbf, 0xc9, 0xba, 0x09, 0x0b, 0xaa, 0x47, 0x90, 0x6d, 0x8f, 0x6c, 0x8c, 0xf2,
0x74, 0x1e, 0x09, 0x75, 0x37, 0x26, 0x95, 0xc4, 0x4c, 0x61, 0x52, 0xf1, 0xfa, 0x13, 0x84, 0x5f,
0x5a, 0x50, 0x34, 0x5b, 0xe9, 0x60, 0x7f, 0x03, 0x66, 0x31, 0x0c, 0x4c, 0x87, 0x35, 0x28, 0x17,
0x28, 0x48, 0x35, 0x97, 0x6c, 0xc3, 0x32, 0x0e, 0x46, 0x30, 0x28, 0x39, 0x8b, 0x02, 0xee, 0x26,
0x62, 0x73, 0x09, 0x79, 0x55, 0x5f, 0xd4, 0x90, 0x23, 0x9d, 0xf8, 0x16, 0x90, 0xc1, 0x82, 0x2e,
0xf3, 0x94, 0xb8, 0x7e, 0x46, 0x19, 0xf1, 0x26, 0xf3, 0xa4, 0xb0, 0xbd, 0x08, 0x85, 0x93, 0xf0,
0x82, 0x07, 0xfd, 0xfc, 0x7f, 0x1f, 0x8a, 0x86, 0xd0, 0x7f, 0x4f, 0xcd, 0x0a, 0xa4, 0xe8, 0x83,
0x92, 0xc1, 0x41, 0x63, 0x26, 0x50, 0x98, 0x6a, 0x09, 0xfb, 0xf7, 0x93, 0xb0, 0xd0, 0xa7, 0xca,
0xbb, 0xac, 0x25, 0x03, 0xdd, 0x67, 0x6d, 0x16, 0x85, 0x61, 0xa0, 0x3b, 0xb5, 0xbc, 0x24, 0x3e,
0xd1, 0x34, 0x79, 0x27, 0x76, 0xd9, 0x73, 0x5f, 0xd6, 0xa3, 0x73, 0x16, 0x9f, 0x9b, 0x27, 0x98,
0xa6, 0x1d, 0xb0, 0xf8, 0x9c, 0xdc, 0x83, 0x92, 0x11, 0xe9, 0x46, 0xdc, 0xf3, 0x99, 0xae, 0x4b,
0x79, 0xba, 0xa8, 0xe9, 0x4d, 0x4d, 0x96, 0x11, 0xa9, 0xdf, 0x98, 0xa8, 0xb9, 0x2f, 0x55, 0x9f,
0xc6, 0x12, 0x58, 0x54, 0x74, 0xa9, 0xf8, 0x93, 0x98, 0x09, 0xf2, 0x2e, 0xac, 0x44, 0x61, 0x4f,
0xc8, 0x50, 0x97, 0x19, 0x31, 0x10, 0x9f, 0x41, 0x71, 0xa2, 0x99, 0xfb, 0x9c, 0xf7, 0x97, 0xe8,
0xda, 0xea, 0x60, 0x47, 0xc4, 0x5d, 0xcc, 0x34, 0x5d, 0x5b, 0x77, 0x15, 0x49, 0xd6, 0x69, 0x4c,
0x6b, 0xae, 0x9e, 0x2c, 0xf3, 0xd4, 0x7c, 0xca, 0xc5, 0xb1, 0x08, 0x23, 0x76, 0xc6, 0x9d, 0x80,
0xf9, 0x2a, 0xa9, 0x16, 0x64, 0xfd, 0x44, 0x5a, 0x83, 0xf9, 0xdc, 0x5e, 0x85, 0xe5, 0xc3, 0x64,
0xed, 0x37, 0x3e, 0xf9, 0x9d, 0x05, 0x2b, 0x19, 0x86, 0xf6, 0xcd, 0xe7, 0xb0, 0x98, 0x6e, 0x25,
0x8c, 0x93, 0x1e, 0xa4, 0xa3, 0x29, 0xbb, 0x30, 0x4d, 0x8d, 0x6b, 0x81, 0x88, 0x9e, 0xd3, 0x62,
0xaa, 0xf1, 0x88, 0x2b, 0x55, 0x28, 0x8f, 0x10, 0x93, 0xed, 0xb3, 0xe9, 0xba, 0x0b, 0x54, 0xfe,
0x1c, 0x3c, 0x24, 0xd5, 0xdb, 0x42, 0x7d, 0x3c, 0x9e, 0xfc, 0x6f, 0x4b, 0x6a, 0xd4, 0xe0, 0xd7,
0x02, 0x9b, 0xe6, 0x7a, 0x70, 0x1a, 0x1a, 0x8d, 0x7e, 0x6a, 0xc1, 0x4a, 0x86, 0xa1, 0x35, 0xba,
0x9d, 0x1e, 0x7f, 0xa9, 0xb7, 0x64, 0x72, 0xf8, 0x35, 0xe6, 0x5d, 0x3d, 0x3b, 0xf2, 0x5d, 0x4d,
0xde, 0x84, 0x45, 0xbc, 0xb6, 0x06, 0x9d, 0xad, 0xbe, 0xf7, 0x8a, 0x48, 0xee, 0xf7, 0xb4, 0xf6,
0x23, 0x58, 0x92, 0x79, 0x4f, 0x99, 0x74, 0xba, 0xc9, 0xf7, 0x3b, 0x90, 0xc7, 0x7b, 0xa3, 0xdb,
0x6b, 0x5d, 0xf0, 0xe7, 0x26, 0xe5, 0x73, 0x92, 0xd6, 0x54, 0x24, 0xfb, 0x10, 0x48, 0x72, 0x9d,
0xd6, 0xe2, 0x91, 0x5e, 0x18, 0x21, 0xd9, 0x38, 0xa5, 0x9c, 0xba, 0x73, 0xf4, 0x12, 0xdc, 0x4d,
0xfd, 0x8e, 0xb7, 0xbe, 0xb2, 0x20, 0x9f, 0x7c, 0x0d, 0x93, 0x12, 0xe4, 0x9b, 0xb5, 0xc6, 0x5e,
0xbd, 0xf1, 0x91, 0x73, 0xd4, 0xac, 0x35, 0x4a, 0x13, 0x84, 0x40, 0xd1, 0x50, 0x9e, 0x36, 0xf7,
0xaa, 0x27, 0xb5, 0x92, 0x45, 0xe6, 0x61, 0x1a, 0xb9, 0x93, 0x24, 0x07, 0x73, 0xb5, 0x4f, 0x9a,
0x75, 0x5a, 0xdb, 0x2b, 0x4d, 0x25, 0x45, 0x77, 0x0f, 0x8f, 0x8e, 0x6b, 0x7b, 0xa5, 0x69, 0x02,
0x30, 0xab, 0x7f, 0xcf, 0x90, 0x32, 0x2c, 0xd2, 0xda, 0xee, 0xd1, 0xb3, 0x1a, 0xfd, 0xd4, 0xd9,
0xaf, 0xd6, 0x0f, 0x6b, 0x7b, 0xa5, 0x59, 0xb2, 0x04, 0x05, 0xb3, 0x68, 0xa7, 0x7a, 0xb2, 0x7b,
0x50, 0x9a, 0xdb, 0x6a, 0xea, 0xd6, 0x47, 0x1d, 0x29, 0x07, 0x73, 0x4d, 0x5a, 0x6b, 0x56, 0x69,
0xad, 0x34, 0x41, 0xf2, 0x30, 0x5f, 0xdd, 0xdd, 0xad, 0x35, 0x4f, 0x6a, 0x7b, 0x25, 0x4b, 0x7e,
0xd1, 0xda, 0xff, 0xd7, 0x76, 0xe5, 0xd7, 0xa4, 0x84, 0x3a, 0xae, 0x7f, 0xd4, 0xc0, 0xa3, 0x14,
0x60, 0x61, 0xbf, 0xde, 0xa8, 0x1e, 0xd6, 0x3f, 0x93, 0xa7, 0xd8, 0xfa, 0x83, 0x05, 0x4b, 0x43,
0x3d, 0x8a, 0x54, 0xa3, 0x71, 0xd4, 0x90, 0xdb, 0xae, 0x02, 0x39, 0xae, 0xd1, 0x67, 0x35, 0xea,
0x3c, 0xa9, 0x1f, 0xef, 0xd4, 0x0e, 0xaa, 0xcf, 0xea, 0x47, 0xb4, 0x64, 0x91, 0x0a, 0xac, 0xe2,
0xa1, 0x9c, 0x67, 0x35, 0x7a, 0x5c, 0x3f, 0x6a, 0x48, 0xf6, 0x13, 0x3c, 0xe5, 0x24, 0xd9, 0x80,
0x1b, 0xcd, 0x2a, 0x3d, 0xa9, 0x57, 0x0f, 0x1d, 0x75, 0x08, 0x67, 0xf7, 0xe8, 0xf0, 0xb0, 0x7a,
0x52, 0xa3, 0xd5, 0xc3, 0xd2, 0x14, 0xb9, 0x03, 0x1b, 0x19, 0xf6, 0xde, 0xd3, 0xe6, 0x61, 0x7d,
0xb7, 0x7a, 0x52, 0x73, 0x9a, 0xb5, 0x1a, 0x2d, 0x4d, 0x93, 0x7b, 0xf0, 0x7a, 0x76, 0x87, 0x83,
0x6a, 0xa3, 0x51, 0x3b, 0x74, 0xf6, 0x9f, 0x2a, 0x8b, 0x68, 0x2b, 0xcd, 0x3c, 0xf8, 0x4d, 0x09,
0x66, 0x4f, 0xf0, 0xc1, 0x49, 0x42, 0xc8, 0x27, 0x87, 0xe2, 0xe4, 0x56, 0xdf, 0xcb, 0x23, 0x46,
0xf2, 0x95, 0x8d, 0x31, 0x5c, 0xfd, 0xc6, 0xb5, 0x7f, 0xf4, 0xb7, 0x7f, 0x7c, 0x35, 0x79, 0xcb,
0x5e, 0xdb, 0xbe, 0x7c, 0x77, 0x5b, 0x4a, 0x6e, 0x9b, 0x1a, 0xb2, 0xfd, 0xa5, 0x94, 0x7f, 0x6c,
0x6d, 0x91, 0xcf, 0x20, 0x97, 0xf8, 0xd3, 0x05, 0xb9, 0x99, 0x18, 0x3a, 0x64, 0x47, 0x72, 0x95,
0xa1, 0xd9, 0x97, 0x7d, 0x0b, 0x11, 0x56, 0xed, 0xa5, 0x21, 0x04, 0xb9, 0xf7, 0x29, 0xe4, 0x93,
0x03, 0xf3, 0x84, 0x32, 0x23, 0xe6, 0xef, 0x09, 0x65, 0x46, 0x4d, 0xd9, 0xed, 0x1b, 0x08, 0x55,
0x26, 0xc3, 0x50, 0x12, 0x27, 0x39, 0x7a, 0x4d, 0xe0, 0x8c, 0x98, 0x2d, 0x27, 0x70, 0x46, 0xcd,
0x6b, 0x0d, 0xce, 0xd6, 0x08, 0x9c, 0x17, 0xb0, 0x98, 0x19, 0x8c, 0x92, 0xc1, 0xd8, 0x78, 0xf4,
0x10, 0xb7, 0xb2, 0x39, 0x5e, 0x40, 0x03, 0xbe, 0x8e, 0x80, 0xb7, 0xed, 0xca, 0xb0, 0x97, 0xcc,
0xa8, 0x54, 0x1a, 0xf3, 0x0a, 0x8a, 0xe9, 0x19, 0x25, 0x79, 0xad, 0xbf, 0xf5, 0xc8, 0x09, 0x6a,
0xe5, 0xf6, 0x58, 0xbe, 0x46, 0xfe, 0x77, 0x44, 0x7e, 0xcd, 0xbe, 0x31, 0x8c, 0xac, 0x87, 0x96,
0x12, 0x58, 0x40, 0x31, 0x3d, 0x4d, 0x4c, 0x00, 0x8f, 0x1c, 0x66, 0x26, 0x80, 0xc7, 0x8c, 0x21,
0xef, 0x20, 0xf0, 0x4d, 0x7b, 0x75, 0x18, 0xb8, 0xd5, 0xf3, 0xbb, 0x12, 0xf5, 0x87, 0xb0, 0x98,
0x79, 0x3a, 0x24, 0x6c, 0x3d, 0xfa, 0xb9, 0x91, 0xb0, 0xf5, 0x98, 0x57, 0xc7, 0xab, 0x34, 0xd6,
0x2f, 0x11, 0x89, 0xed, 0x42, 0x2e, 0x31, 0xa7, 0x4b, 0xe4, 0xc4, 0xf0, 0x8c, 0xb0, 0x72, 0x6b,
0x34, 0x53, 0xe3, 0x55, 0x10, 0x6f, 0xd9, 0x5e, 0xec, 0xe3, 0x61, 0x97, 0x8a, 0xd9, 0xf1, 0x03,
0x80, 0xc1, 0xa4, 0x8c, 0x54, 0x52, 0xd1, 0x9f, 0x1a, 0xc7, 0x55, 0x6e, 0x8e, 0xe4, 0x69, 0x88,
0x35, 0x84, 0x58, 0x22, 0x59, 0x08, 0x12, 0x42, 0x2e, 0x31, 0xf8, 0x4a, 0x68, 0x31, 0x3c, 0x45,
0x4b, 0x68, 0x31, 0x6a, 0x56, 0xa6, 0x23, 0x74, 0x6b, 0x23, 0x03, 0xb1, 0xfd, 0x22, 0xd1, 0x86,
0xbf, 0x24, 0x9f, 0x03, 0x0c, 0xde, 0x61, 0x09, 0x85, 0x86, 0x5e, 0x6c, 0x09, 0x85, 0x86, 0x1f,
0x6e, 0xf6, 0x32, 0xa2, 0x15, 0x49, 0xbe, 0x8f, 0x76, 0xca, 0x39, 0xf9, 0x52, 0xf7, 0xbc, 0xfd,
0xfe, 0x81, 0x6c, 0x8c, 0xeb, 0x4a, 0x14, 0xc6, 0x6b, 0xaf, 0x6e, 0x5a, 0xec, 0x4d, 0x84, 0xa9,
0x90, 0xf5, 0x3e, 0x4c, 0xa6, 0xf9, 0x21, 0x17, 0x50, 0x48, 0xb5, 0x15, 0x09, 0xc4, 0x51, 0x7d,
0x48, 0x02, 0x71, 0x64, 0x37, 0x62, 0xdf, 0x44, 0xc4, 0x15, 0x52, 0xee, 0x23, 0x62, 0xbb, 0xbf,
0x1d, 0xf0, 0x6b, 0x41, 0x42, 0x28, 0xe0, 0x8a, 0xe3, 0x80, 0x75, 0xe3, 0xf3, 0x50, 0x24, 0xc0,
0x52, 0xf4, 0x61, 0xb0, 0x0c, 0x5b, 0x83, 0xdd, 0x46, 0xb0, 0x1b, 0x64, 0x2d, 0x03, 0x16, 0x9b,
0xfd, 0x3f, 0x85, 0xc2, 0x47, 0x5c, 0xf4, 0xfb, 0xeb, 0x98, 0x0c, 0xfe, 0x76, 0x96, 0x6a, 0xe2,
0x2b, 0x6b, 0x43, 0xf4, 0x51, 0x91, 0xd7, 0x89, 0x99, 0xd8, 0x56, 0x8d, 0x3b, 0xa1, 0x30, 0xab,
0xde, 0x27, 0x89, 0x3d, 0x53, 0x6f, 0x9f, 0xc4, 0x9e, 0xe9, 0x87, 0xcc, 0x88, 0x68, 0xd6, 0x2f,
0x17, 0x0e, 0xb9, 0x41, 0x9f, 0x93, 0x4c, 0x97, 0xa1, 0x46, 0x2b, 0x11, 0x5d, 0xc3, 0xcd, 0x94,
0xbd, 0x81, 0x00, 0x6b, 0x64, 0xa5, 0x0f, 0x90, 0xec, 0xad, 0xc8, 0xaf, 0x2c, 0x28, 0xa6, 0x0c,
0x1a, 0x93, 0x31, 0x96, 0x8e, 0x47, 0xdc, 0x76, 0x19, 0xbe, 0x86, 0xdc, 0x43, 0xc8, 0x0f, 0xc8,
0xfb, 0x63, 0x5c, 0x11, 0x6f, 0xbf, 0x88, 0x05, 0x8b, 0x84, 0x63, 0x9e, 0x83, 0x2f, 0xb7, 0x5f,
0x04, 0x3d, 0x5f, 0x7d, 0xf2, 0xd8, 0x69, 0xb1, 0xf6, 0xc5, 0xcb, 0x9d, 0x37, 0x3f, 0x7b, 0xfd,
0xcc, 0x13, 0xe7, 0xbd, 0xd6, 0xfd, 0x76, 0xe8, 0x6f, 0x77, 0xbc, 0xb3, 0x73, 0x11, 0x78, 0xc1,
0x59, 0x87, 0xb5, 0x62, 0xb5, 0xa9, 0x3e, 0x45, 0x6b, 0x16, 0xff, 0x29, 0xe1, 0x3f, 0xff, 0x19,
0x00, 0x00, 0xff, 0xff, 0x2f, 0x44, 0xde, 0x60, 0xdd, 0x20, 0x00, 0x00,
}
// Reference imports to suppress errors if they are not otherwise used.
@ -3239,6 +3242,8 @@ type TraderClient interface {
NextBatchInfo(ctx context.Context, in *NextBatchInfoRequest, opts ...grpc.CallOption) (*NextBatchInfoResponse, error)
// pool: `auction snapshot`
//BatchSnapshot returns the snapshot of a past batch identified by its ID.
//If no ID is provided, the snapshot of the last finalized batch is returned.
//Deprecated, use BatchSnapshots instead.
BatchSnapshot(ctx context.Context, in *BatchSnapshotRequest, opts ...grpc.CallOption) (*BatchSnapshotResponse, error)
// pool: `listauth`
//GetLsatTokens returns all LSAT tokens the daemon ever paid for.
@ -3251,6 +3256,13 @@ type TraderClient interface {
//Returns the Node Tier information for this target Lightning node, and other
//related ranking information.
NodeRatings(ctx context.Context, in *NodeRatingRequest, opts ...grpc.CallOption) (*NodeRatingResponse, error)
// pool: `auction snapshot`
//BatchSnapshots returns a list of batch snapshots starting at the start batch
//ID and going back through the history of batches, returning at most the
//number of specified batches. A maximum of 100 snapshots can be queried in
//one call. If no start batch ID is provided, the most recent finalized batch
//is used as the starting point to go back from.
BatchSnapshots(ctx context.Context, in *BatchSnapshotsRequest, opts ...grpc.CallOption) (*BatchSnapshotsResponse, error)
}
type traderClient struct {
@ -3423,6 +3435,15 @@ func (c *traderClient) NodeRatings(ctx context.Context, in *NodeRatingRequest, o
return out, nil
}
func (c *traderClient) BatchSnapshots(ctx context.Context, in *BatchSnapshotsRequest, opts ...grpc.CallOption) (*BatchSnapshotsResponse, error) {
out := new(BatchSnapshotsResponse)
err := c.cc.Invoke(ctx, "/poolrpc.Trader/BatchSnapshots", in, out, opts...)
if err != nil {
return nil, err
}
return out, nil
}
// TraderServer is the server API for Trader service.
type TraderServer interface {
//
@ -3488,6 +3509,8 @@ type TraderServer interface {
NextBatchInfo(context.Context, *NextBatchInfoRequest) (*NextBatchInfoResponse, error)
// pool: `auction snapshot`
//BatchSnapshot returns the snapshot of a past batch identified by its ID.
//If no ID is provided, the snapshot of the last finalized batch is returned.
//Deprecated, use BatchSnapshots instead.
BatchSnapshot(context.Context, *BatchSnapshotRequest) (*BatchSnapshotResponse, error)
// pool: `listauth`
//GetLsatTokens returns all LSAT tokens the daemon ever paid for.
@ -3500,6 +3523,13 @@ type TraderServer interface {
//Returns the Node Tier information for this target Lightning node, and other
//related ranking information.
NodeRatings(context.Context, *NodeRatingRequest) (*NodeRatingResponse, error)
// pool: `auction snapshot`
//BatchSnapshots returns a list of batch snapshots starting at the start batch
//ID and going back through the history of batches, returning at most the
//number of specified batches. A maximum of 100 snapshots can be queried in
//one call. If no start batch ID is provided, the most recent finalized batch
//is used as the starting point to go back from.
BatchSnapshots(context.Context, *BatchSnapshotsRequest) (*BatchSnapshotsResponse, error)
}
// UnimplementedTraderServer can be embedded to have forward compatible implementations.
@ -3560,6 +3590,9 @@ func (*UnimplementedTraderServer) Leases(ctx context.Context, req *LeasesRequest
func (*UnimplementedTraderServer) NodeRatings(ctx context.Context, req *NodeRatingRequest) (*NodeRatingResponse, error) {
return nil, status.Errorf(codes.Unimplemented, "method NodeRatings not implemented")
}
func (*UnimplementedTraderServer) BatchSnapshots(ctx context.Context, req *BatchSnapshotsRequest) (*BatchSnapshotsResponse, error) {
return nil, status.Errorf(codes.Unimplemented, "method BatchSnapshots not implemented")
}
func RegisterTraderServer(s *grpc.Server, srv TraderServer) {
s.RegisterService(&_Trader_serviceDesc, srv)
@ -3889,6 +3922,24 @@ func _Trader_NodeRatings_Handler(srv interface{}, ctx context.Context, dec func(
return interceptor(ctx, in, info, handler)
}
func _Trader_BatchSnapshots_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {
in := new(BatchSnapshotsRequest)
if err := dec(in); err != nil {
return nil, err
}
if interceptor == nil {
return srv.(TraderServer).BatchSnapshots(ctx, in)
}
info := &grpc.UnaryServerInfo{
Server: srv,
FullMethod: "/poolrpc.Trader/BatchSnapshots",
}
handler := func(ctx context.Context, req interface{}) (interface{}, error) {
return srv.(TraderServer).BatchSnapshots(ctx, req.(*BatchSnapshotsRequest))
}
return interceptor(ctx, in, info, handler)
}
var _Trader_serviceDesc = grpc.ServiceDesc{
ServiceName: "poolrpc.Trader",
HandlerType: (*TraderServer)(nil),
@ -3965,6 +4016,10 @@ var _Trader_serviceDesc = grpc.ServiceDesc{
MethodName: "NodeRatings",
Handler: _Trader_NodeRatings_Handler,
},
{
MethodName: "BatchSnapshots",
Handler: _Trader_BatchSnapshots_Handler,
},
},
Streams: []grpc.StreamDesc{},
Metadata: "trader.proto",

View file

@ -593,6 +593,82 @@ func local_request_Trader_NodeRatings_0(ctx context.Context, marshaler runtime.M
}
func request_Trader_BatchSnapshots_0(ctx context.Context, marshaler runtime.Marshaler, client TraderClient, req *http.Request, pathParams map[string]string) (proto.Message, runtime.ServerMetadata, error) {
var protoReq BatchSnapshotsRequest
var metadata runtime.ServerMetadata
var (
val string
ok bool
err error
_ = err
)
val, ok = pathParams["start_batch_id"]
if !ok {
return nil, metadata, status.Errorf(codes.InvalidArgument, "missing parameter %s", "start_batch_id")
}
protoReq.StartBatchId, err = runtime.Bytes(val)
if err != nil {
return nil, metadata, status.Errorf(codes.InvalidArgument, "type mismatch, parameter: %s, error: %v", "start_batch_id", err)
}
val, ok = pathParams["num_batches_back"]
if !ok {
return nil, metadata, status.Errorf(codes.InvalidArgument, "missing parameter %s", "num_batches_back")
}
protoReq.NumBatchesBack, err = runtime.Uint32(val)
if err != nil {
return nil, metadata, status.Errorf(codes.InvalidArgument, "type mismatch, parameter: %s, error: %v", "num_batches_back", err)
}
msg, err := client.BatchSnapshots(ctx, &protoReq, grpc.Header(&metadata.HeaderMD), grpc.Trailer(&metadata.TrailerMD))
return msg, metadata, err
}
func local_request_Trader_BatchSnapshots_0(ctx context.Context, marshaler runtime.Marshaler, server TraderServer, req *http.Request, pathParams map[string]string) (proto.Message, runtime.ServerMetadata, error) {
var protoReq BatchSnapshotsRequest
var metadata runtime.ServerMetadata
var (
val string
ok bool
err error
_ = err
)
val, ok = pathParams["start_batch_id"]
if !ok {
return nil, metadata, status.Errorf(codes.InvalidArgument, "missing parameter %s", "start_batch_id")
}
protoReq.StartBatchId, err = runtime.Bytes(val)
if err != nil {
return nil, metadata, status.Errorf(codes.InvalidArgument, "type mismatch, parameter: %s, error: %v", "start_batch_id", err)
}
val, ok = pathParams["num_batches_back"]
if !ok {
return nil, metadata, status.Errorf(codes.InvalidArgument, "missing parameter %s", "num_batches_back")
}
protoReq.NumBatchesBack, err = runtime.Uint32(val)
if err != nil {
return nil, metadata, status.Errorf(codes.InvalidArgument, "type mismatch, parameter: %s, error: %v", "num_batches_back", err)
}
msg, err := server.BatchSnapshots(ctx, &protoReq)
return msg, metadata, err
}
// RegisterTraderHandlerServer registers the http handlers for service Trader to "mux".
// UnaryRPC :call TraderServer directly.
// StreamingRPC :currently unsupported pending https://github.com/grpc/grpc-go/issues/906.
@ -958,6 +1034,26 @@ func RegisterTraderHandlerServer(ctx context.Context, mux *runtime.ServeMux, ser
})
mux.Handle("GET", pattern_Trader_BatchSnapshots_0, func(w http.ResponseWriter, req *http.Request, pathParams map[string]string) {
ctx, cancel := context.WithCancel(req.Context())
defer cancel()
inboundMarshaler, outboundMarshaler := runtime.MarshalerForRequest(mux, req)
rctx, err := runtime.AnnotateIncomingContext(ctx, mux, req)
if err != nil {
runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err)
return
}
resp, md, err := local_request_Trader_BatchSnapshots_0(rctx, inboundMarshaler, server, req, pathParams)
ctx = runtime.NewServerMetadataContext(ctx, md)
if err != nil {
runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err)
return
}
forward_Trader_BatchSnapshots_0(ctx, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...)
})
return nil
}
@ -1359,6 +1455,26 @@ func RegisterTraderHandlerClient(ctx context.Context, mux *runtime.ServeMux, cli
})
mux.Handle("GET", pattern_Trader_BatchSnapshots_0, func(w http.ResponseWriter, req *http.Request, pathParams map[string]string) {
ctx, cancel := context.WithCancel(req.Context())
defer cancel()
inboundMarshaler, outboundMarshaler := runtime.MarshalerForRequest(mux, req)
rctx, err := runtime.AnnotateContext(ctx, mux, req)
if err != nil {
runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err)
return
}
resp, md, err := request_Trader_BatchSnapshots_0(rctx, inboundMarshaler, client, req, pathParams)
ctx = runtime.NewServerMetadataContext(ctx, md)
if err != nil {
runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err)
return
}
forward_Trader_BatchSnapshots_0(ctx, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...)
})
return nil
}
@ -1398,6 +1514,8 @@ var (
pattern_Trader_Leases_0 = runtime.MustPattern(runtime.NewPattern(1, []int{2, 0, 2, 1, 2, 2}, []string{"v1", "pool", "leases"}, "", runtime.AssumeColonVerbOpt(true)))
pattern_Trader_NodeRatings_0 = runtime.MustPattern(runtime.NewPattern(1, []int{2, 0, 2, 1, 2, 2}, []string{"v1", "pool", "node_ratings"}, "", runtime.AssumeColonVerbOpt(true)))
pattern_Trader_BatchSnapshots_0 = runtime.MustPattern(runtime.NewPattern(1, []int{2, 0, 2, 1, 2, 2, 2, 3, 1, 0, 4, 1, 5, 4, 1, 0, 4, 1, 5, 5}, []string{"v1", "pool", "batch", "snapshots", "start_batch_id", "num_batches_back"}, "", runtime.AssumeColonVerbOpt(true)))
)
var (
@ -1436,4 +1554,6 @@ var (
forward_Trader_Leases_0 = runtime.ForwardResponseMessage
forward_Trader_NodeRatings_0 = runtime.ForwardResponseMessage
forward_Trader_BatchSnapshots_0 = runtime.ForwardResponseMessage
)

View file

@ -55,7 +55,8 @@ service Trader {
WithdrawAccount splits off parts of the account balance into the specified
outputs while recreating the account with a reduced balance.
*/
rpc WithdrawAccount (WithdrawAccountRequest) returns (WithdrawAccountResponse) {
rpc WithdrawAccount (WithdrawAccountRequest)
returns (WithdrawAccountResponse) {
option (google.api.http) = {
post: "/v1/pool/accounts/withdraw"
body: "*"
@ -66,7 +67,8 @@ service Trader {
DepositAccount adds more funds from the connected lnd node's wallet to an
account.
*/
rpc DepositAccount (DepositAccountRequest) returns (DepositAccountResponse) {
rpc DepositAccount (DepositAccountRequest)
returns (DepositAccountResponse) {
option (google.api.http) = {
post: "/v1/pool/accounts/deposit"
body: "*"
@ -81,7 +83,8 @@ service Trader {
account, and this RPC is invoked again, then a replacing transaction (RBF)
of the child will be broadcast.
*/
rpc BumpAccountFee (BumpAccountFeeRequest) returns (BumpAccountFeeResponse) {
rpc BumpAccountFee (BumpAccountFeeRequest)
returns (BumpAccountFeeResponse) {
option (google.api.http) = {
post: "/v1/pool/accounts/bump"
body: "*"
@ -92,7 +95,8 @@ service Trader {
RecoverAccounts queries the auction server for this trader daemon's accounts
in case we lost our local account database.
*/
rpc RecoverAccounts (RecoverAccountsRequest) returns (RecoverAccountsResponse) {
rpc RecoverAccounts (RecoverAccountsRequest)
returns (RecoverAccountsResponse) {
option (google.api.http) = {
post: "/v1/pool/accounts/recover"
body: "*"
@ -162,6 +166,8 @@ service Trader {
/* pool: `auction snapshot`
BatchSnapshot returns the snapshot of a past batch identified by its ID.
If no ID is provided, the snapshot of the last finalized batch is returned.
Deprecated, use BatchSnapshots instead.
*/
rpc BatchSnapshot (BatchSnapshotRequest) returns (BatchSnapshotResponse) {
option (google.api.http) = {
@ -197,6 +203,20 @@ service Trader {
get: "/v1/pool/node_ratings"
};
};
/* pool: `auction snapshot`
BatchSnapshots returns a list of batch snapshots starting at the start batch
ID and going back through the history of batches, returning at most the
number of specified batches. A maximum of 100 snapshots can be queried in
one call. If no start batch ID is provided, the most recent finalized batch
is used as the starting point to go back from.
*/
rpc BatchSnapshots (BatchSnapshotsRequest)
returns (BatchSnapshotsResponse) {
option (google.api.http) = {
get: "/v1/pool/batch/snapshots/{start_batch_id}/{num_batches_back}"
};
};
}
message InitAccountRequest {

View file

@ -342,7 +342,7 @@
},
"/v1/pool/batch/snapshot": {
"get": {
"summary": "pool: `auction snapshot`\nBatchSnapshot returns the snapshot of a past batch identified by its ID.",
"summary": "pool: `auction snapshot`\nBatchSnapshot returns the snapshot of a past batch identified by its ID.\nIf no ID is provided, the snapshot of the last finalized batch is returned.\nDeprecated, use BatchSnapshots instead.",
"operationId": "BatchSnapshot",
"responses": {
"200": {
@ -373,6 +373,47 @@
]
}
},
"/v1/pool/batch/snapshots/{start_batch_id}/{num_batches_back}": {
"get": {
"summary": "pool: `auction snapshot`\nBatchSnapshots returns a list of batch snapshots starting at the start batch\nID and going back through the history of batches, returning at most the\nnumber of specified batches. A maximum of 100 snapshots can be queried in\none call. If no start batch ID is provided, the most recent finalized batch\nis used as the starting point to go back from.",
"operationId": "BatchSnapshots",
"responses": {
"200": {
"description": "A successful response.",
"schema": {
"$ref": "#/definitions/poolrpcBatchSnapshotsResponse"
}
},
"default": {
"description": "An unexpected error response",
"schema": {
"$ref": "#/definitions/gatewayruntimeError"
}
}
},
"parameters": [
{
"name": "start_batch_id",
"description": "The unique identifier of the first batch to return, encoded as a compressed\npubkey. This represents the newest/most current batch to fetch. If this is\nempty or a zero batch ID, the most recent finalized batch is used as the\nstarting point to go back from.",
"in": "path",
"required": true,
"type": "string",
"format": "byte"
},
{
"name": "num_batches_back",
"description": "The number of batches to return at most, including the start batch.",
"in": "path",
"required": true,
"type": "integer",
"format": "int64"
}
],
"tags": [
"Trader"
]
}
},
"/v1/pool/fee": {
"get": {
"summary": "pool: `auction fee`\nAuctionFee returns the current auction order execution fee specified by the\nauction server.",
@ -791,6 +832,18 @@
}
}
},
"poolrpcBatchSnapshotsResponse": {
"type": "object",
"properties": {
"batches": {
"type": "array",
"items": {
"$ref": "#/definitions/poolrpcBatchSnapshotResponse"
},
"description": "The list of batches requested."
}
}
},
"poolrpcBid": {
"type": "object",
"properties": {

View file

@ -1907,6 +1907,18 @@ func (s *rpcServer) BatchSnapshot(ctx context.Context,
return s.auctioneer.BatchSnapshot(ctx, batchID)
}
// BatchSnapshots returns a list of batch snapshots starting at the start batch
// ID and going back through the history of batches, returning at most the
// number of specified batches. A maximum of 100 snapshots can be queried in
// one call. If no start batch ID is provided, the most recent finalized batch
// is used as the starting point to go back from.
func (s *rpcServer) BatchSnapshots(ctx context.Context,
req *poolrpc.BatchSnapshotsRequest) (*poolrpc.BatchSnapshotsResponse,
error) {
return s.auctioneer.BatchSnapshots(ctx, req)
}
// LeaseDurations returns the current set of valid lease duration in the
// market as is, and also information w.r.t if the market is currently active.
func (s *rpcServer) LeaseDurations(ctx context.Context,