From eb4cebcc13891383b1925e3ce4a6af12b063577b Mon Sep 17 00:00:00 2001 From: DongLieu Date: Tue, 24 Oct 2023 11:16:34 +0700 Subject: [PATCH 01/22] Add Cli query pools by denom --- proto/osmosis/poolmanager/v1beta1/query.proto | 17 + scripts/multinode-local-testnet.sh | 4 +- scripts/setup_superfluid.sh | 14 +- scripts/stake-uosmo.json | 7 + stake-uosmo.json | 7 + x/poolmanager/client/cli/query.go | 10 + x/poolmanager/client/grpc/grpc_query.go | 10 + x/poolmanager/client/query_proto_wrap.go | 24 + x/poolmanager/client/queryproto/query.pb.go | 638 ++++++++++++++---- .../client/queryproto/query.pb.gw.go | 83 +++ x/poolmanager/router.go | 34 + 11 files changed, 716 insertions(+), 132 deletions(-) mode change 100644 => 100755 scripts/setup_superfluid.sh create mode 100644 scripts/stake-uosmo.json create mode 100644 stake-uosmo.json diff --git a/proto/osmosis/poolmanager/v1beta1/query.proto b/proto/osmosis/poolmanager/v1beta1/query.proto index 39c49eccb09..dccf3a77238 100644 --- a/proto/osmosis/poolmanager/v1beta1/query.proto +++ b/proto/osmosis/poolmanager/v1beta1/query.proto @@ -91,6 +91,10 @@ service Query { rpc AllPools(AllPoolsRequest) returns (AllPoolsResponse) { option (google.api.http).get = "/osmosis/poolmanager/v1beta1/all-pools"; } + // List pools by denom + rpc ListPoolsByDenom(ListPoolsByDenomRequest) returns (ListPoolsByDenomResponse) { + option (google.api.http).get = "/osmosis/poolmanager/v1beta1/list-pools-by-denom"; + } // SpotPrice defines a gRPC query handler that returns the spot price given // a base denomination and a quote denomination. @@ -234,6 +238,19 @@ message AllPoolsResponse { [ (cosmos_proto.accepts_interface) = "PoolI" ]; } +// ======================================================= + +message ListPoolsByDenomRequest { + string denom = 1 + [ (gogoproto.moretags) = "yaml:\"base_asset_denom\"" ]; +} + + +message ListPoolsByDenomResponse { + repeated google.protobuf.Any pools = 1 + [ (cosmos_proto.accepts_interface) = "PoolI" ]; +} +// ========================================================== // SpotPriceRequest defines the gRPC request structure for a SpotPrice // query. message SpotPriceRequest { diff --git a/scripts/multinode-local-testnet.sh b/scripts/multinode-local-testnet.sh index d7731b8f6ae..bd1a9d1778b 100755 --- a/scripts/multinode-local-testnet.sh +++ b/scripts/multinode-local-testnet.sh @@ -128,8 +128,8 @@ tmux new -s validator3 -d osmosisd start --home=$HOME/.osmosisd/validator3 # send uosmo from first validator to second validator echo "Waiting 7 seconds to send funds to validators 2 and 3..." sleep 7 -osmosisd tx bank send validator1 $(osmosisd keys show validator2 -a --keyring-backend=test --home=$HOME/.osmosisd/validator2) 500000000uosmo --keyring-backend=test --home=$HOME/.osmosisd/validator1 --chain-id=testing --broadcast-mode block --node http://localhost:26657 --yes -osmosisd tx bank send validator1 $(osmosisd keys show validator3 -a --keyring-backend=test --home=$HOME/.osmosisd/validator3) 400000000uosmo --keyring-backend=test --home=$HOME/.osmosisd/validator1 --chain-id=testing --broadcast-mode block --node http://localhost:26657 --yes +osmosisd tx bank send validator1 $(osmosisd keys show validator2 -a --keyring-backend=test --home=$HOME/.osmosisd/validator2) 500000000uosmo --keyring-backend=test --home=$HOME/.osmosisd/validator1 --chain-id=testing --broadcast-mode block --node http://localhost:26657 --yes --fees 1000stake +osmosisd tx bank send validator1 $(osmosisd keys show validator3 -a --keyring-backend=test --home=$HOME/.osmosisd/validator3) 400000000uosmo --keyring-backend=test --home=$HOME/.osmosisd/validator1 --chain-id=testing --broadcast-mode block --node http://localhost:26657 --yes --fees 1000stake # create second & third validator osmosisd tx staking create-validator --amount=500000000uosmo --from=validator2 --pubkey=$(osmosisd tendermint show-validator --home=$HOME/.osmosisd/validator2) --moniker="validator2" --chain-id="testing" --commission-rate="0.1" --commission-max-rate="0.2" --commission-max-change-rate="0.05" --min-self-delegation="500000000" --keyring-backend=test --home=$HOME/.osmosisd/validator2 --broadcast-mode block --node http://localhost:26657 --yes diff --git a/scripts/setup_superfluid.sh b/scripts/setup_superfluid.sh old mode 100644 new mode 100755 index ee5f4c94bee..13926c1cfee --- a/scripts/setup_superfluid.sh +++ b/scripts/setup_superfluid.sh @@ -12,25 +12,25 @@ # } # create pool -osmosisd tx gamm create-pool --pool-file=./stake-uosmo.json --from=validator1 --keyring-backend=test --chain-id=testing --yes --home=$HOME/.osmosisd/validator1 +osmosisd tx gamm create-pool --pool-file=./stake-uosmo.json --from=validator1 --keyring-backend=test --chain-id=testing --yes --home=$HOME/.osmosisd/validator1 --fees 1000stake sleep 7 # test swap in pool created -osmosisd tx gamm swap-exact-amount-in 100000uosmo 50000 --swap-route-pool-ids=1 --swap-route-denoms=stake --from=validator1 --keyring-backend=test --chain-id=testing --yes --home=$HOME/.osmosisd/validator1 +osmosisd tx gamm swap-exact-amount-in 100000uosmo 50000 --swap-route-pool-ids=1 --swap-route-denoms=stake --from=validator1 --keyring-backend=test --chain-id=testing --yes --home=$HOME/.osmosisd/validator1 --fees 1000stake sleep 7 # create a lock up with lockable duration 360h -osmosisd tx lockup lock-tokens 10000000000000000000gamm/pool/1 --duration=360h --from=validator1 --keyring-backend=test --chain-id=testing --broadcast-mode=block --yes --home=$HOME/.osmosisd/validator1 +osmosisd tx lockup lock-tokens 10000000000000000000gamm/pool/1 --duration=360h --from=validator1 --keyring-backend=test --chain-id=testing --broadcast-mode=block --yes --home=$HOME/.osmosisd/validator1 --fees 1000stake sleep 7 # submit and pass proposal for superfluid -osmosisd tx gov submit-proposal set-superfluid-assets-proposal --title="set superfluid assets" --description="set superfluid assets description" --superfluid-assets="gamm/pool/1" --deposit=10000000uosmo --from=validator1 --chain-id=testing --keyring-backend=test --broadcast-mode=block --yes --home=$HOME/.osmosisd/validator1 +osmosisd tx gov submit-proposal set-superfluid-assets-proposal --title="set superfluid assets" --description="set superfluid assets description" --superfluid-assets="gamm/pool/1" --deposit=10000000uosmo --from=validator1 --chain-id=testing --keyring-backend=test --broadcast-mode=block --yes --home=$HOME/.osmosisd/validator1 sleep 7 -osmosisd tx gov deposit 1 10000000stake --from=validator1 --keyring-backend=test --chain-id=testing --broadcast-mode=block --yes --home=$HOME/.osmosisd/validator1 +osmosisd tx gov deposit 1 10000000stake --from=validator1 --keyring-backend=test --chain-id=testing --broadcast-mode=block --yes --home=$HOME/.osmosisd/validator1 sleep 7 -osmosisd tx gov vote 1 yes --from=validator1 --keyring-backend=test --chain-id=testing --yes --home=$HOME/.osmosisd/validator1 +osmosisd tx gov vote 1 yes --from=validator1 --keyring-backend=test --chain-id=testing --yes --home=$HOME/.osmosisd/validator1 sleep 7 -osmosisd tx gov vote 1 yes --from=validator2 --keyring-backend=test --chain-id=testing --yes --home=$HOME/.osmosisd/validator2 +osmosisd tx gov vote 1 yes --from=validator2 --keyring-backend=test --chain-id=testing --yes --home=$HOME/.osmosisd/validator2 sleep 7 diff --git a/scripts/stake-uosmo.json b/scripts/stake-uosmo.json new file mode 100644 index 00000000000..d3cf59481b1 --- /dev/null +++ b/scripts/stake-uosmo.json @@ -0,0 +1,7 @@ +{ + "weights": "5stake,5uosmo", + "initial-deposit": "1000000stake,1000000uosmo", + "swap-fee": "0.010000000000000000", + "exit-fee": "0.010000000000000000", + "future-governor": "168h" +} \ No newline at end of file diff --git a/stake-uosmo.json b/stake-uosmo.json new file mode 100644 index 00000000000..8157186dd79 --- /dev/null +++ b/stake-uosmo.json @@ -0,0 +1,7 @@ +{ + "weights": "5stake,5uosmo", + "initial-deposit": "1000000stake,1000000uosmo", + "swap-fee": "0.01", + "exit-fee": "0.01", + "future-governor": "168h" +} \ No newline at end of file diff --git a/x/poolmanager/client/cli/query.go b/x/poolmanager/client/cli/query.go index 47232192c45..5d676549615 100644 --- a/x/poolmanager/client/cli/query.go +++ b/x/poolmanager/client/cli/query.go @@ -32,6 +32,7 @@ func GetQueryCmd() *cobra.Command { osmocli.AddQueryCmd(cmd, queryproto.NewQueryClient, GetCmdTotalVolumeForPool) osmocli.AddQueryCmd(cmd, queryproto.NewQueryClient, GetCmdTradingPairTakerFee) osmocli.AddQueryCmd(cmd, queryproto.NewQueryClient, GetCmdEstimateTradeBasedOnPriceImpact) + osmocli.AddQueryCmd(cmd, queryproto.NewQueryClient, GetCmdListPoolsByDenom) cmd.AddCommand( osmocli.GetParams[*queryproto.ParamsRequest]( types.ModuleName, queryproto.NewQueryClient), @@ -105,6 +106,15 @@ func GetCmdSpotPrice() (*osmocli.QueryDescriptor, *queryproto.SpotPriceRequest) `, }, &queryproto.SpotPriceRequest{} } +func GetCmdListPoolsByDenom() (*osmocli.QueryDescriptor, *queryproto.ListPoolsByDenomRequest) { + return &osmocli.QueryDescriptor{ + Use: "list-pools-by-denom", + Short: "Query list-pools-by-denom", + Long: `Query list-pools-by-denom +{{.CommandPrefix}} list-pools-by-denom uosmo +`, + }, &queryproto.ListPoolsByDenomRequest{} +} func EstimateSwapExactAmountInParseArgs(args []string, fs *flag.FlagSet) (proto.Message, error) { poolID, err := strconv.Atoi(args[0]) diff --git a/x/poolmanager/client/grpc/grpc_query.go b/x/poolmanager/client/grpc/grpc_query.go index a47c7e9b9d3..4bdc58d6da4 100644 --- a/x/poolmanager/client/grpc/grpc_query.go +++ b/x/poolmanager/client/grpc/grpc_query.go @@ -71,6 +71,16 @@ func (q Querier) SpotPrice(grpcCtx context.Context, return q.Q.SpotPrice(ctx, *req) } +func (q Querier) ListPoolsByDenom(grpcCtx context.Context, + req *queryproto.ListPoolsByDenomRequest, +) (*queryproto.ListPoolsByDenomResponse, error) { + if req == nil { + return nil, status.Error(codes.InvalidArgument, "empty request") + } + ctx := sdk.UnwrapSDKContext(grpcCtx) + return q.Q.ListPoolsByDenom(ctx, *req) +} + func (q Querier) Pool(grpcCtx context.Context, req *queryproto.PoolRequest, ) (*queryproto.PoolResponse, error) { diff --git a/x/poolmanager/client/query_proto_wrap.go b/x/poolmanager/client/query_proto_wrap.go index a88917012be..4f0fe90cf2d 100644 --- a/x/poolmanager/client/query_proto_wrap.go +++ b/x/poolmanager/client/query_proto_wrap.go @@ -214,6 +214,30 @@ func (q Querier) AllPools(ctx sdk.Context, req queryproto.AllPoolsRequest) (*que }, nil } +// SpotPrice returns the spot price of the pool with the given quote and base asset denoms. 18 decimals. +func (q Querier) ListPoolsByDenom(ctx sdk.Context, req queryproto.ListPoolsByDenomRequest) (*queryproto.ListPoolsByDenomResponse, error) { + if req.Denom == "" { + return nil, status.Error(codes.InvalidArgument, "invalid quote asset denom") + } + pools, err := q.K.ListPoolsByDenom(ctx, req.Denom) + if err != nil { + return nil, status.Error(codes.Internal, err.Error()) + } + + var anyPools []*codectypes.Any + for _, pool := range pools { + any, err := codectypes.NewAnyWithValue(pool.AsSerializablePool()) + if err != nil { + return nil, err + } + anyPools = append(anyPools, any) + } + + return &queryproto.ListPoolsByDenomResponse{ + Pools: anyPools, + }, nil +} + // SpotPrice returns the spot price of the pool with the given quote and base asset denoms. 18 decimals. func (q Querier) SpotPrice(ctx sdk.Context, req queryproto.SpotPriceRequest) (*queryproto.SpotPriceResponse, error) { if req.BaseAssetDenom == "" { diff --git a/x/poolmanager/client/queryproto/query.pb.go b/x/poolmanager/client/queryproto/query.pb.go index b1854156588..f664b2a425f 100644 --- a/x/poolmanager/client/queryproto/query.pb.go +++ b/x/poolmanager/client/queryproto/query.pb.go @@ -1434,6 +1434,94 @@ func (m *EstimateTradeBasedOnPriceImpactResponse) GetOutputCoin() types2.Coin { return types2.Coin{} } +type ListPoolsByDenomRequest struct { + Denom string `protobuf:"bytes,1,opt,name=denom,proto3" json:"denom,omitempty" yaml:"base_asset_denom"` +} + +func (m *ListPoolsByDenomRequest) Reset() { *m = ListPoolsByDenomRequest{} } +func (m *ListPoolsByDenomRequest) String() string { return proto.CompactTextString(m) } +func (*ListPoolsByDenomRequest) ProtoMessage() {} +func (*ListPoolsByDenomRequest) Descriptor() ([]byte, []int) { + return fileDescriptor_6256a4106f701b7d, []int{28} +} +func (m *ListPoolsByDenomRequest) XXX_Unmarshal(b []byte) error { + return m.Unmarshal(b) +} +func (m *ListPoolsByDenomRequest) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { + if deterministic { + return xxx_messageInfo_ListPoolsByDenomRequest.Marshal(b, m, deterministic) + } else { + b = b[:cap(b)] + n, err := m.MarshalToSizedBuffer(b) + if err != nil { + return nil, err + } + return b[:n], nil + } +} +func (m *ListPoolsByDenomRequest) XXX_Merge(src proto.Message) { + xxx_messageInfo_ListPoolsByDenomRequest.Merge(m, src) +} +func (m *ListPoolsByDenomRequest) XXX_Size() int { + return m.Size() +} +func (m *ListPoolsByDenomRequest) XXX_DiscardUnknown() { + xxx_messageInfo_ListPoolsByDenomRequest.DiscardUnknown(m) +} + +var xxx_messageInfo_ListPoolsByDenomRequest proto.InternalMessageInfo + +func (m *ListPoolsByDenomRequest) GetDenom() string { + if m != nil { + return m.Denom + } + return "" +} + +type ListPoolsByDenomResponse struct { + Pools []*types1.Any `protobuf:"bytes,1,rep,name=pools,proto3" json:"pools,omitempty"` +} + +func (m *ListPoolsByDenomResponse) Reset() { *m = ListPoolsByDenomResponse{} } +func (m *ListPoolsByDenomResponse) String() string { return proto.CompactTextString(m) } +func (*ListPoolsByDenomResponse) ProtoMessage() {} +func (*ListPoolsByDenomResponse) Descriptor() ([]byte, []int) { + return fileDescriptor_6256a4106f701b7d, []int{29} +} +func (m *ListPoolsByDenomResponse) XXX_Unmarshal(b []byte) error { + return m.Unmarshal(b) +} +func (m *ListPoolsByDenomResponse) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { + if deterministic { + return xxx_messageInfo_ListPoolsByDenomResponse.Marshal(b, m, deterministic) + } else { + b = b[:cap(b)] + n, err := m.MarshalToSizedBuffer(b) + if err != nil { + return nil, err + } + return b[:n], nil + } +} +func (m *ListPoolsByDenomResponse) XXX_Merge(src proto.Message) { + xxx_messageInfo_ListPoolsByDenomResponse.Merge(m, src) +} +func (m *ListPoolsByDenomResponse) XXX_Size() int { + return m.Size() +} +func (m *ListPoolsByDenomResponse) XXX_DiscardUnknown() { + xxx_messageInfo_ListPoolsByDenomResponse.DiscardUnknown(m) +} + +var xxx_messageInfo_ListPoolsByDenomResponse proto.InternalMessageInfo + +func (m *ListPoolsByDenomResponse) GetPools() []*types1.Any { + if m != nil { + return m.Pools + } + return nil +} + func init() { proto.RegisterType((*ParamsRequest)(nil), "osmosis.poolmanager.v1beta1.ParamsRequest") proto.RegisterType((*ParamsResponse)(nil), "osmosis.poolmanager.v1beta1.ParamsResponse") @@ -1463,6 +1551,8 @@ func init() { proto.RegisterType((*TradingPairTakerFeeResponse)(nil), "osmosis.poolmanager.v1beta1.TradingPairTakerFeeResponse") proto.RegisterType((*EstimateTradeBasedOnPriceImpactRequest)(nil), "osmosis.poolmanager.v1beta1.EstimateTradeBasedOnPriceImpactRequest") proto.RegisterType((*EstimateTradeBasedOnPriceImpactResponse)(nil), "osmosis.poolmanager.v1beta1.EstimateTradeBasedOnPriceImpactResponse") + proto.RegisterType((*ListPoolsByDenomRequest)(nil), "osmosis.poolmanager.v1beta1.ListPoolsByDenomRequest") + proto.RegisterType((*ListPoolsByDenomResponse)(nil), "osmosis.poolmanager.v1beta1.ListPoolsByDenomResponse") } func init() { @@ -1470,129 +1560,134 @@ func init() { } var fileDescriptor_6256a4106f701b7d = []byte{ - // 1950 bytes of a gzipped FileDescriptorProto - 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xcc, 0x59, 0xcb, 0x73, 0x1b, 0x49, - 0x19, 0xcf, 0xc8, 0x8a, 0xd7, 0xfa, 0x1c, 0x3f, 0xd2, 0x89, 0x13, 0x5b, 0x09, 0x96, 0xb7, 0xb3, - 0x64, 0xbd, 0x71, 0x3c, 0x8a, 0xed, 0x2c, 0x09, 0x81, 0x7d, 0x58, 0xb6, 0xb3, 0x11, 0x2c, 0xc4, - 0x4c, 0xbc, 0x0f, 0x16, 0xc2, 0xd4, 0xd8, 0xea, 0x28, 0x43, 0x34, 0xd3, 0x8a, 0xa6, 0xc7, 0xb1, - 0x8b, 0xda, 0x0b, 0x55, 0x14, 0x9c, 0xa8, 0x05, 0x0e, 0x7b, 0xe0, 0x40, 0x71, 0xe0, 0xb2, 0x7b, - 0x85, 0xff, 0x21, 0xb5, 0x55, 0x50, 0xae, 0x82, 0x2a, 0x28, 0x0e, 0x82, 0x4a, 0x38, 0x50, 0x45, - 0x2e, 0xe8, 0x2f, 0xa0, 0xfa, 0x31, 0x23, 0x69, 0x2c, 0x8d, 0x46, 0xb2, 0x0f, 0x9c, 0x2c, 0x75, - 0x7f, 0xaf, 0xdf, 0xaf, 0xbf, 0xaf, 0x67, 0x7e, 0x32, 0xbc, 0x4a, 0x3d, 0x87, 0x7a, 0xb6, 0x97, - 0xaf, 0x52, 0x5a, 0x71, 0x2c, 0xd7, 0x2a, 0x93, 0x5a, 0x7e, 0x77, 0x69, 0x9b, 0x30, 0x6b, 0x29, - 0xff, 0xd8, 0x27, 0xb5, 0x7d, 0xbd, 0x5a, 0xa3, 0x8c, 0xa2, 0x0b, 0xca, 0x50, 0x6f, 0x31, 0xd4, - 0x95, 0x61, 0xf6, 0x6c, 0x99, 0x96, 0xa9, 0xb0, 0xcb, 0xf3, 0x4f, 0xd2, 0x25, 0xfb, 0x5a, 0x5c, - 0xec, 0x32, 0x71, 0x89, 0x08, 0x27, 0x4c, 0x5f, 0x89, 0x33, 0x65, 0x7b, 0xca, 0xea, 0x6a, 0x9c, - 0x95, 0xf7, 0xc4, 0xaa, 0x9a, 0x35, 0xea, 0x33, 0xa2, 0xac, 0x67, 0x77, 0x84, 0x79, 0x7e, 0xdb, - 0xf2, 0x48, 0x68, 0xb5, 0x43, 0x6d, 0x57, 0xed, 0x5f, 0x69, 0xdd, 0x17, 0x50, 0x43, 0xab, 0xaa, - 0x55, 0xb6, 0x5d, 0x8b, 0xd9, 0x34, 0xb0, 0xbd, 0x58, 0xa6, 0xb4, 0x5c, 0x21, 0x79, 0xab, 0x6a, - 0xe7, 0x2d, 0xd7, 0xa5, 0x4c, 0x6c, 0x06, 0xd5, 0xcf, 0xa8, 0x5d, 0xf1, 0x6d, 0xdb, 0x7f, 0x90, - 0xb7, 0xdc, 0xfd, 0x60, 0x4b, 0x26, 0x31, 0x25, 0x39, 0xf2, 0x8b, 0xda, 0xca, 0x45, 0xbd, 0x98, - 0xed, 0x10, 0x8f, 0x59, 0x4e, 0x55, 0x1a, 0xe0, 0x09, 0x18, 0xdb, 0xb4, 0x6a, 0x96, 0xe3, 0x19, - 0xe4, 0xb1, 0x4f, 0x3c, 0x86, 0xef, 0xc1, 0x78, 0xb0, 0xe0, 0x55, 0xa9, 0xeb, 0x11, 0xb4, 0x0a, - 0xc3, 0x55, 0xb1, 0x32, 0xad, 0xcd, 0x69, 0xf3, 0xa3, 0xcb, 0x97, 0xf4, 0x98, 0x63, 0xd2, 0xa5, - 0x73, 0x21, 0xfd, 0xb4, 0x9e, 0x3b, 0x61, 0x28, 0x47, 0xfc, 0x42, 0x83, 0xb9, 0x0d, 0x8f, 0xd9, - 0x8e, 0xc5, 0xc8, 0xbd, 0x27, 0x56, 0x75, 0x63, 0xcf, 0xda, 0x61, 0xab, 0x0e, 0xf5, 0x5d, 0x56, - 0x74, 0x55, 0x66, 0xb4, 0x00, 0x2f, 0xf1, 0x80, 0xa6, 0x5d, 0x9a, 0x4e, 0xcd, 0x69, 0xf3, 0xe9, - 0x02, 0x6a, 0xd4, 0x73, 0xe3, 0xfb, 0x96, 0x53, 0xb9, 0x85, 0xd5, 0x06, 0x36, 0x86, 0xf9, 0xa7, - 0x62, 0x09, 0xe9, 0x30, 0xc2, 0xe8, 0x23, 0xe2, 0x9a, 0xb6, 0x3b, 0x3d, 0x34, 0xa7, 0xcd, 0x67, - 0x0a, 0x67, 0x1a, 0xf5, 0xdc, 0x84, 0xb4, 0x0e, 0x76, 0xb0, 0xf1, 0x92, 0xf8, 0x58, 0x74, 0xd1, - 0x7d, 0x18, 0x16, 0xe7, 0xe6, 0x4d, 0xa7, 0xe7, 0x86, 0xe6, 0x47, 0x97, 0xf5, 0x58, 0x10, 0xbc, - 0xc6, 0xb0, 0x3c, 0xee, 0x56, 0x98, 0xe2, 0x78, 0x1a, 0xf5, 0xdc, 0x98, 0xcc, 0x20, 0x63, 0x61, - 0x43, 0x05, 0xfd, 0x46, 0x7a, 0x44, 0x9b, 0x4c, 0x19, 0xc3, 0x1e, 0x71, 0x4b, 0xa4, 0x86, 0x3f, - 0x4b, 0xc1, 0x72, 0x57, 0xb8, 0x1f, 0xd8, 0xec, 0xe1, 0x66, 0xcd, 0x76, 0x6c, 0x66, 0xef, 0x92, - 0xad, 0xfd, 0x2a, 0xf1, 0x3a, 0x10, 0xa0, 0xf5, 0x45, 0x40, 0x2a, 0x01, 0x01, 0x6f, 0xc1, 0xb8, - 0xac, 0xd5, 0x0c, 0x72, 0x0c, 0xcd, 0x0d, 0xcd, 0xa7, 0x0b, 0x33, 0x8d, 0x7a, 0x6e, 0xaa, 0x15, - 0x94, 0x19, 0xa6, 0x3a, 0x25, 0x17, 0x36, 0x65, 0xc2, 0xf7, 0xe1, 0x9c, 0x32, 0x90, 0xd1, 0xa9, - 0xcf, 0xcc, 0x12, 0x71, 0xa9, 0x23, 0x18, 0xcd, 0x14, 0x5e, 0x6e, 0xd4, 0x73, 0x5f, 0x6a, 0x0b, - 0x14, 0xb1, 0xc3, 0xc6, 0x19, 0xb9, 0xb1, 0xc5, 0xd7, 0xef, 0xfa, 0x6c, 0x5d, 0xac, 0xfe, 0x51, - 0x83, 0x2b, 0x21, 0x59, 0xb6, 0x5b, 0xae, 0x10, 0x9e, 0x30, 0x49, 0x97, 0x1c, 0x3f, 0x49, 0x05, - 0x98, 0x88, 0x82, 0x93, 0xcd, 0x95, 0x6d, 0xd4, 0x73, 0xe7, 0x5a, 0xdd, 0x5a, 0x50, 0x8d, 0xb1, - 0x36, 0x3c, 0x3f, 0xd5, 0xe0, 0xe5, 0x98, 0x5e, 0x57, 0x43, 0xb5, 0x0d, 0x93, 0xcd, 0x40, 0x96, - 0xd8, 0x15, 0x78, 0x32, 0x85, 0x9b, 0xbc, 0xd3, 0xfe, 0x5e, 0xcf, 0x4d, 0xc9, 0x41, 0xf6, 0x4a, - 0x8f, 0x74, 0x9b, 0xe6, 0x1d, 0x8b, 0x3d, 0xd4, 0x8b, 0x2e, 0x6b, 0xd4, 0x73, 0xe7, 0xa3, 0x75, - 0x48, 0x77, 0x6c, 0x8c, 0x07, 0x85, 0xc8, 0x6c, 0xf8, 0xbf, 0xdd, 0x2b, 0xb9, 0xeb, 0xb3, 0x81, - 0xc6, 0xee, 0x07, 0xe1, 0x18, 0x0d, 0x89, 0x31, 0xca, 0x27, 0x1c, 0x23, 0x9e, 0x2f, 0xc1, 0x1c, - 0xa1, 0x25, 0xc8, 0x84, 0xb8, 0xa6, 0xd3, 0x82, 0x8f, 0xb3, 0x8d, 0x7a, 0x6e, 0x32, 0x02, 0x19, - 0x1b, 0x23, 0x01, 0xd6, 0xc8, 0xe8, 0x7d, 0x9e, 0x82, 0x95, 0xee, 0x98, 0x8f, 0x69, 0xf6, 0x0e, - 0xcf, 0x52, 0xaa, 0xbf, 0x59, 0xba, 0x07, 0x53, 0x6d, 0x33, 0x62, 0xbb, 0x61, 0xb7, 0xf1, 0x51, - 0x9a, 0x6b, 0xd4, 0x73, 0x17, 0x3b, 0x8c, 0x52, 0x60, 0x86, 0x0d, 0xd4, 0x32, 0x49, 0x45, 0x57, - 0x34, 0xde, 0x00, 0xdc, 0xe1, 0x3f, 0x69, 0xb0, 0xd0, 0x73, 0xf6, 0x3a, 0xf7, 0x4a, 0x22, 0x96, - 0x22, 0xe8, 0xe4, 0x08, 0xb6, 0xb0, 0x14, 0x85, 0x75, 0x8a, 0x75, 0x05, 0x34, 0x94, 0x08, 0xd0, - 0x4f, 0x34, 0xc0, 0x71, 0x2d, 0xaf, 0xa6, 0xcf, 0x0c, 0xe6, 0xdc, 0x76, 0xdb, 0x87, 0xef, 0x46, - 0xaf, 0xe1, 0x3b, 0x17, 0x29, 0x3c, 0x98, 0xbd, 0x31, 0x55, 0xb9, 0x1a, 0xbd, 0xd3, 0x30, 0xf1, - 0x6d, 0xdf, 0xe1, 0x64, 0x86, 0x0f, 0xd6, 0x0d, 0x98, 0x6c, 0x2e, 0xa9, 0x3a, 0x96, 0x20, 0xe3, - 0xfa, 0x8e, 0xe8, 0x12, 0x4f, 0x31, 0xda, 0x82, 0x30, 0xdc, 0xc2, 0xc6, 0x88, 0xab, 0x5c, 0xf1, - 0x2d, 0x18, 0xe5, 0x1f, 0x06, 0x39, 0x11, 0xbc, 0x06, 0xa7, 0xa4, 0xaf, 0x4a, 0xbf, 0x02, 0x69, - 0xbe, 0xa3, 0x9e, 0xeb, 0x67, 0x75, 0xf9, 0xb2, 0xa0, 0x07, 0x2f, 0x0b, 0xfa, 0xaa, 0xbb, 0x5f, - 0xc8, 0x7c, 0xf1, 0xfb, 0xc5, 0x93, 0xa2, 0x6d, 0x0d, 0x61, 0xcc, 0xa1, 0xad, 0x56, 0x2a, 0x6d, - 0xd0, 0x8a, 0x30, 0xd9, 0x5c, 0x52, 0xb1, 0x5f, 0x87, 0x93, 0x01, 0xac, 0xa1, 0x24, 0xc1, 0xa5, - 0x35, 0x3e, 0xd0, 0x60, 0xf2, 0x5e, 0x95, 0xb2, 0xcd, 0x9a, 0xbd, 0x43, 0x06, 0x6a, 0xbb, 0x0d, - 0x98, 0xe4, 0x6f, 0x5b, 0xa6, 0xe5, 0x79, 0x84, 0xb5, 0x35, 0xde, 0x85, 0xe6, 0xe5, 0x19, 0xb5, - 0xc0, 0xc6, 0x38, 0x5f, 0x5a, 0xe5, 0x2b, 0xb2, 0xf9, 0xee, 0xc0, 0xe9, 0xc7, 0x3e, 0x65, 0xed, - 0x71, 0x64, 0x13, 0x5e, 0x6c, 0xd4, 0x73, 0xd3, 0x32, 0xce, 0x21, 0x13, 0x6c, 0x4c, 0x88, 0xb5, - 0x66, 0x24, 0x5c, 0x84, 0xd3, 0x2d, 0x88, 0x14, 0x3d, 0xd7, 0x01, 0xbc, 0x2a, 0x65, 0x66, 0x95, - 0xaf, 0xaa, 0xe6, 0x9b, 0x6a, 0xd4, 0x73, 0xa7, 0x65, 0xdc, 0xe6, 0x1e, 0x36, 0x32, 0x5e, 0xe0, - 0x8d, 0xef, 0xc0, 0xcc, 0x16, 0x65, 0x96, 0xa0, 0xfa, 0x5d, 0xfb, 0xb1, 0x6f, 0x97, 0x6c, 0xb6, - 0x3f, 0x50, 0x2b, 0xfc, 0x5a, 0x83, 0x6c, 0xa7, 0x50, 0xaa, 0xbc, 0x8f, 0x21, 0x53, 0x09, 0x16, - 0xd5, 0x09, 0xce, 0xe8, 0xea, 0xcd, 0x92, 0x13, 0x15, 0x5e, 0xf1, 0x6b, 0xd4, 0x76, 0x0b, 0xeb, - 0xea, 0x52, 0x57, 0x7d, 0x1b, 0x7a, 0xe2, 0xcf, 0xfe, 0x91, 0x9b, 0x2f, 0xdb, 0xec, 0xa1, 0xbf, - 0xad, 0xef, 0x50, 0x47, 0xbd, 0x9a, 0xaa, 0x3f, 0x8b, 0x5e, 0xe9, 0x51, 0x9e, 0xf1, 0x3b, 0x58, - 0x04, 0xf1, 0x8c, 0x66, 0x46, 0x7c, 0x1e, 0xa6, 0x44, 0x71, 0x51, 0x8c, 0xf8, 0x53, 0x0d, 0xce, - 0x45, 0x77, 0xfe, 0x3f, 0x4a, 0x0e, 0x8e, 0xe6, 0x7d, 0x5a, 0xf1, 0x1d, 0x72, 0x9b, 0xd6, 0x06, - 0x9e, 0xd2, 0x5f, 0x06, 0x47, 0x13, 0x09, 0xa5, 0x70, 0x32, 0x18, 0xde, 0x15, 0x1b, 0xbd, 0x41, - 0xae, 0xb6, 0x3f, 0x6c, 0xa5, 0x5b, 0x7f, 0x08, 0x55, 0x2e, 0xbc, 0x0b, 0xd9, 0xad, 0x9a, 0x55, - 0xb2, 0xdd, 0xf2, 0xa6, 0x65, 0xd7, 0xb6, 0xac, 0x47, 0xa4, 0x76, 0x9b, 0xb4, 0x0e, 0xa8, 0xe8, - 0x7e, 0xf3, 0x9a, 0x6a, 0xe5, 0x16, 0x7c, 0x6a, 0x03, 0x1b, 0xc3, 0xe2, 0xd3, 0xb5, 0xa6, 0xf1, - 0x92, 0x9a, 0xcb, 0x43, 0xc6, 0x4b, 0x81, 0xf1, 0x12, 0xfe, 0x21, 0x5c, 0xe8, 0x98, 0x57, 0x91, - 0xf1, 0x4d, 0xc8, 0x30, 0xbe, 0x66, 0x3e, 0x20, 0xc1, 0x14, 0xe9, 0xea, 0x0a, 0xbf, 0x9c, 0x00, - 0xe3, 0x3a, 0xd9, 0x31, 0x46, 0x98, 0x0a, 0x8a, 0xff, 0x92, 0x82, 0xcb, 0xc1, 0xc3, 0x83, 0x27, - 0x25, 0x05, 0xcb, 0x23, 0xa5, 0xbb, 0xae, 0x98, 0xbd, 0xa2, 0x53, 0xb5, 0x76, 0xc2, 0x07, 0xe1, - 0xd7, 0x21, 0xf3, 0xa0, 0x46, 0x1d, 0x93, 0x4b, 0x3d, 0x75, 0x7d, 0xc6, 0x9c, 0x83, 0x14, 0x43, - 0x23, 0xdc, 0x83, 0x7f, 0x47, 0x18, 0xc6, 0x18, 0x15, 0xbe, 0xad, 0xf7, 0x93, 0x31, 0xca, 0x28, - 0xdf, 0x96, 0xf7, 0xcf, 0xf9, 0x66, 0xcb, 0xf0, 0x5b, 0x27, 0x1d, 0xde, 0x6f, 0x1f, 0xc2, 0xa4, - 0x63, 0xed, 0xc9, 0xcb, 0xc1, 0xb4, 0x45, 0x55, 0xea, 0x69, 0xdf, 0x2f, 0xf2, 0x71, 0xc7, 0xda, - 0x6b, 0xc1, 0x86, 0xde, 0x83, 0x71, 0xb2, 0xc7, 0x48, 0xcd, 0xb5, 0x2a, 0xea, 0x5e, 0x3a, 0x39, - 0x50, 0xdc, 0xb1, 0x20, 0x8a, 0xbc, 0xb4, 0x3e, 0xd7, 0xe0, 0xd5, 0x9e, 0xb4, 0xaa, 0xf3, 0x7c, - 0x13, 0xc0, 0x76, 0xab, 0x3e, 0xeb, 0x8b, 0xd8, 0x8c, 0x70, 0x11, 0xcc, 0xbe, 0x0d, 0xa3, 0xd4, - 0x67, 0x61, 0x80, 0x54, 0xb2, 0x00, 0x20, 0x7d, 0xf8, 0xca, 0xf2, 0x5f, 0xb3, 0x70, 0xf2, 0x3b, - 0x5c, 0xa8, 0xa3, 0x9f, 0x6b, 0x30, 0x2c, 0xd5, 0x2c, 0xba, 0x92, 0x40, 0xf2, 0xaa, 0xd6, 0xc8, - 0x2e, 0x24, 0xb2, 0x95, 0x78, 0xf1, 0xc2, 0x8f, 0xff, 0xfc, 0xaf, 0x5f, 0xa5, 0xbe, 0x8c, 0x2e, - 0xe5, 0xe3, 0x7e, 0x76, 0x50, 0x55, 0xfc, 0x5b, 0x83, 0x99, 0xae, 0xca, 0x02, 0xbd, 0x11, 0x9b, - 0xb7, 0x97, 0xfa, 0xce, 0xbe, 0x39, 0xa8, 0xbb, 0x42, 0xf2, 0xae, 0x40, 0x72, 0x1b, 0xad, 0xc7, - 0x22, 0xf9, 0x91, 0xea, 0xe9, 0x8f, 0xf3, 0x44, 0x45, 0x94, 0xbf, 0xa9, 0x10, 0x1e, 0x53, 0xbd, - 0x4c, 0x99, 0xb6, 0x8b, 0x7e, 0x9b, 0x6a, 0x79, 0x31, 0xed, 0xad, 0xa0, 0xd1, 0xdd, 0xc1, 0xaa, - 0xef, 0xaa, 0x07, 0x8e, 0x4c, 0x87, 0x25, 0xe8, 0xf8, 0x1e, 0xfa, 0xee, 0x71, 0xd0, 0x61, 0x3e, - 0xb1, 0xd9, 0x43, 0x3e, 0x92, 0xb2, 0x50, 0x53, 0x8c, 0x1a, 0xfa, 0x59, 0x0a, 0x2e, 0x25, 0x10, - 0xce, 0xe8, 0x9d, 0x64, 0x50, 0x7a, 0x4a, 0xef, 0x23, 0x73, 0xf2, 0xa1, 0xe0, 0xc4, 0x40, 0x9b, - 0x7d, 0x73, 0x22, 0x6a, 0x93, 0x62, 0xaa, 0x63, 0xbb, 0xbc, 0xd0, 0x20, 0xdb, 0xfd, 0xb5, 0x1f, - 0x0d, 0x54, 0x78, 0x53, 0xf6, 0x64, 0xdf, 0x1a, 0xd8, 0x5f, 0x21, 0xff, 0x96, 0x40, 0xfe, 0x0e, - 0xda, 0x38, 0x7a, 0x37, 0x50, 0x9f, 0xa1, 0xdf, 0xa5, 0xe0, 0x6a, 0x3f, 0x22, 0x17, 0x6d, 0x0e, - 0x08, 0xa0, 0xfb, 0x7c, 0x1c, 0x99, 0x92, 0x6d, 0x41, 0xc9, 0xf7, 0xd1, 0x47, 0xc7, 0x42, 0x49, - 0xe7, 0x09, 0xf9, 0x24, 0x05, 0xaf, 0x24, 0x91, 0xb7, 0xe8, 0xce, 0xd1, 0x46, 0xe4, 0x38, 0x5b, - 0xe5, 0xbe, 0xe0, 0xe5, 0x03, 0xf4, 0x5e, 0x9f, 0xbc, 0x70, 0x16, 0x7a, 0x0c, 0x0a, 0x6f, 0x9d, - 0x4f, 0x35, 0x18, 0x09, 0x64, 0x28, 0xba, 0x1a, 0x5b, 0x6c, 0x44, 0xc0, 0x66, 0x17, 0x13, 0x5a, - 0x2b, 0x20, 0xba, 0x00, 0x32, 0x8f, 0x2e, 0xc7, 0x02, 0x09, 0x35, 0x2e, 0xfa, 0x85, 0x06, 0x69, - 0x1e, 0x01, 0xcd, 0xc7, 0x3f, 0x40, 0x9b, 0xaf, 0xd5, 0xd9, 0xd7, 0x12, 0x58, 0xaa, 0x6a, 0xae, - 0x8b, 0x6a, 0x74, 0x74, 0x35, 0xb6, 0x1a, 0x51, 0x49, 0x93, 0x5c, 0xc1, 0x56, 0xa0, 0x6c, 0x7b, - 0xb0, 0x15, 0xd1, 0xc4, 0x3d, 0xd8, 0x8a, 0xca, 0xe5, 0x84, 0x6c, 0x59, 0x95, 0xca, 0xa2, 0x64, - 0xeb, 0x37, 0x1a, 0x64, 0x42, 0x55, 0x89, 0xe2, 0x93, 0x45, 0xf5, 0x74, 0x56, 0x4f, 0x6a, 0xae, - 0x8a, 0x5b, 0x11, 0xc5, 0x2d, 0xa2, 0x85, 0x8e, 0xc5, 0x45, 0x48, 0xcb, 0x8b, 0x57, 0x47, 0x0f, - 0x1d, 0x68, 0x80, 0x0e, 0x2b, 0x4c, 0xf4, 0x95, 0xd8, 0xdc, 0x5d, 0xd5, 0x6d, 0xf6, 0x46, 0xdf, - 0x7e, 0xaa, 0xf8, 0xa2, 0x28, 0x7e, 0x0d, 0xad, 0xf6, 0x73, 0xf2, 0x79, 0xc6, 0x03, 0xca, 0x41, - 0x0a, 0x35, 0x1e, 0xfa, 0x83, 0x06, 0xe3, 0xed, 0xea, 0x13, 0x2d, 0xf7, 0x2e, 0xeb, 0x10, 0x94, - 0x95, 0xbe, 0x7c, 0x14, 0x8c, 0x5b, 0x02, 0xc6, 0x75, 0xb4, 0x9c, 0x00, 0x86, 0x2c, 0xbe, 0x59, - 0xf7, 0xd3, 0xe0, 0x28, 0xda, 0x14, 0x65, 0x92, 0xa3, 0xe8, 0xa4, 0x66, 0x93, 0x1c, 0x45, 0x47, - 0xe9, 0x8a, 0x57, 0x05, 0x86, 0xaf, 0xa1, 0xaf, 0x0e, 0x70, 0x14, 0x52, 0x87, 0xa2, 0x2f, 0x34, - 0x38, 0xd3, 0x41, 0x10, 0xa2, 0x1e, 0x35, 0x75, 0x95, 0xae, 0xd9, 0x9b, 0xfd, 0x3b, 0x2a, 0x34, - 0x6f, 0x0b, 0x34, 0xb7, 0xd0, 0xcd, 0x24, 0x27, 0x22, 0xe3, 0x98, 0x55, 0xcb, 0xae, 0x99, 0x42, - 0x70, 0x3e, 0x20, 0x04, 0xfd, 0x47, 0x83, 0x5c, 0x0f, 0x65, 0x84, 0xd6, 0x12, 0x3d, 0x50, 0xe2, - 0xe5, 0x6a, 0x76, 0xfd, 0x68, 0x41, 0x14, 0xe0, 0x37, 0x04, 0xe0, 0x1b, 0xe8, 0xf5, 0x7e, 0x1f, - 0x4d, 0x4c, 0x04, 0xbe, 0xff, 0xf4, 0xd9, 0xac, 0x76, 0xf0, 0x6c, 0x56, 0xfb, 0xe7, 0xb3, 0x59, - 0xed, 0x93, 0xe7, 0xb3, 0x27, 0x0e, 0x9e, 0xcf, 0x9e, 0xf8, 0xdb, 0xf3, 0xd9, 0x13, 0x1f, 0xad, - 0xb5, 0x08, 0x4b, 0x15, 0x7a, 0xb1, 0x62, 0x6d, 0x7b, 0x61, 0x9e, 0xdd, 0xe5, 0x6b, 0xf9, 0xbd, - 0xb6, 0x6c, 0x3b, 0x15, 0x9b, 0xb8, 0x4c, 0xfe, 0x4b, 0x55, 0xfe, 0xa4, 0x38, 0x2c, 0xfe, 0xac, - 0xfc, 0x2f, 0x00, 0x00, 0xff, 0xff, 0xae, 0xdc, 0x0c, 0xcf, 0x6e, 0x1e, 0x00, 0x00, + // 2029 bytes of a gzipped FileDescriptorProto + 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xcc, 0x59, 0xcd, 0x73, 0x1b, 0x49, + 0x15, 0xcf, 0xc8, 0xb2, 0xd7, 0x7a, 0x8e, 0x6d, 0xa5, 0x13, 0x27, 0xb6, 0x12, 0x2c, 0x6f, 0x67, + 0xc9, 0x7a, 0xe3, 0x78, 0x14, 0xdb, 0x09, 0x09, 0x81, 0xfd, 0xb0, 0x6c, 0x67, 0x23, 0x08, 0xc4, + 0x3b, 0xf1, 0x7e, 0xb0, 0x10, 0xa6, 0xc6, 0x52, 0x47, 0x19, 0xa2, 0x99, 0x51, 0x34, 0x3d, 0x8e, + 0x55, 0xd4, 0x5e, 0xa8, 0xa2, 0xe0, 0x44, 0x2d, 0xec, 0x61, 0x0f, 0x1c, 0x28, 0x0e, 0x5c, 0x76, + 0xaf, 0x70, 0xe0, 0x3f, 0x48, 0x6d, 0x15, 0x94, 0xab, 0xe0, 0x40, 0x71, 0x10, 0x54, 0xc2, 0x81, + 0x2a, 0xf6, 0x82, 0xfe, 0x02, 0xaa, 0x3f, 0x66, 0x24, 0x8d, 0xa5, 0xd1, 0x48, 0xf6, 0x81, 0x93, + 0x47, 0xdd, 0xef, 0xeb, 0xf7, 0xeb, 0xf7, 0xba, 0xfb, 0xb5, 0xe1, 0x55, 0xc7, 0xb5, 0x1c, 0xd7, + 0x74, 0x73, 0x55, 0xc7, 0xa9, 0x58, 0x86, 0x6d, 0x94, 0x49, 0x2d, 0xb7, 0xb7, 0xb2, 0x4b, 0xa8, + 0xb1, 0x92, 0x7b, 0xe2, 0x91, 0x5a, 0x5d, 0xad, 0xd6, 0x1c, 0xea, 0xa0, 0xf3, 0x52, 0x50, 0x6d, + 0x13, 0x54, 0xa5, 0x60, 0xe6, 0x4c, 0xd9, 0x29, 0x3b, 0x5c, 0x2e, 0xc7, 0xbe, 0x84, 0x4a, 0xe6, + 0xb5, 0x28, 0xdb, 0x65, 0x62, 0x13, 0x6e, 0x8e, 0x8b, 0xbe, 0x12, 0x25, 0x4a, 0xf7, 0xa5, 0xd4, + 0x95, 0x28, 0x29, 0xf7, 0xa9, 0x51, 0xd5, 0x6b, 0x8e, 0x47, 0x89, 0x94, 0x9e, 0x2f, 0x72, 0xf1, + 0xdc, 0xae, 0xe1, 0x92, 0x40, 0xaa, 0xe8, 0x98, 0xb6, 0x9c, 0xbf, 0xdc, 0x3e, 0xcf, 0xa1, 0x06, + 0x52, 0x55, 0xa3, 0x6c, 0xda, 0x06, 0x35, 0x1d, 0x5f, 0xf6, 0x42, 0xd9, 0x71, 0xca, 0x15, 0x92, + 0x33, 0xaa, 0x66, 0xce, 0xb0, 0x6d, 0x87, 0xf2, 0x49, 0x3f, 0xfa, 0x39, 0x39, 0xcb, 0x7f, 0xed, + 0x7a, 0x0f, 0x73, 0x86, 0x5d, 0xf7, 0xa7, 0x84, 0x13, 0x5d, 0x90, 0x23, 0x7e, 0xc8, 0xa9, 0x6c, + 0x58, 0x8b, 0x9a, 0x16, 0x71, 0xa9, 0x61, 0x55, 0x85, 0x00, 0x9e, 0x86, 0xc9, 0x6d, 0xa3, 0x66, + 0x58, 0xae, 0x46, 0x9e, 0x78, 0xc4, 0xa5, 0xf8, 0x3e, 0x4c, 0xf9, 0x03, 0x6e, 0xd5, 0xb1, 0x5d, + 0x82, 0xd6, 0x61, 0xac, 0xca, 0x47, 0x66, 0x95, 0x05, 0x65, 0x71, 0x62, 0xf5, 0xa2, 0x1a, 0xb1, + 0x4c, 0xaa, 0x50, 0xce, 0x27, 0x9f, 0x35, 0xb2, 0x27, 0x34, 0xa9, 0x88, 0xbf, 0x54, 0x60, 0x61, + 0xcb, 0xa5, 0xa6, 0x65, 0x50, 0x72, 0xff, 0xa9, 0x51, 0xdd, 0xda, 0x37, 0x8a, 0x74, 0xdd, 0x72, + 0x3c, 0x9b, 0x16, 0x6c, 0xe9, 0x19, 0x2d, 0xc1, 0x4b, 0xcc, 0xa0, 0x6e, 0x96, 0x66, 0x13, 0x0b, + 0xca, 0x62, 0x32, 0x8f, 0x9a, 0x8d, 0xec, 0x54, 0xdd, 0xb0, 0x2a, 0xb7, 0xb0, 0x9c, 0xc0, 0xda, + 0x18, 0xfb, 0x2a, 0x94, 0x90, 0x0a, 0xe3, 0xd4, 0x79, 0x4c, 0x6c, 0xdd, 0xb4, 0x67, 0x47, 0x16, + 0x94, 0xc5, 0x54, 0xfe, 0x74, 0xb3, 0x91, 0x9d, 0x16, 0xd2, 0xfe, 0x0c, 0xd6, 0x5e, 0xe2, 0x9f, + 0x05, 0x1b, 0x3d, 0x80, 0x31, 0xbe, 0x6e, 0xee, 0x6c, 0x72, 0x61, 0x64, 0x71, 0x62, 0x55, 0x8d, + 0x04, 0xc1, 0x62, 0x0c, 0xc2, 0x63, 0x6a, 0xf9, 0x19, 0x86, 0xa7, 0xd9, 0xc8, 0x4e, 0x0a, 0x0f, + 0xc2, 0x16, 0xd6, 0xa4, 0xd1, 0x6f, 0x25, 0xc7, 0x95, 0x74, 0x42, 0x1b, 0x73, 0x89, 0x5d, 0x22, + 0x35, 0xfc, 0x59, 0x02, 0x56, 0x7b, 0xc2, 0x7d, 0xdf, 0xa4, 0x8f, 0xb6, 0x6b, 0xa6, 0x65, 0x52, + 0x73, 0x8f, 0xec, 0xd4, 0xab, 0xc4, 0xed, 0x42, 0x80, 0x32, 0x10, 0x01, 0x89, 0x18, 0x04, 0xbc, + 0x09, 0x53, 0x22, 0x56, 0xdd, 0xf7, 0x31, 0xb2, 0x30, 0xb2, 0x98, 0xcc, 0xcf, 0x35, 0x1b, 0xd9, + 0x99, 0x76, 0x50, 0x7a, 0xe0, 0xea, 0xa4, 0x18, 0xd8, 0x16, 0x0e, 0xdf, 0x83, 0xb3, 0x52, 0x40, + 0x58, 0x77, 0x3c, 0xaa, 0x97, 0x88, 0xed, 0x58, 0x9c, 0xd1, 0x54, 0xfe, 0xe5, 0x66, 0x23, 0xfb, + 0x95, 0x0e, 0x43, 0x21, 0x39, 0xac, 0x9d, 0x16, 0x13, 0x3b, 0x6c, 0xfc, 0x9e, 0x47, 0x37, 0xf9, + 0xe8, 0x9f, 0x14, 0xb8, 0x1c, 0x90, 0x65, 0xda, 0xe5, 0x0a, 0x61, 0x0e, 0xe3, 0x64, 0xc9, 0xf1, + 0x93, 0x94, 0x87, 0xe9, 0x30, 0x38, 0x91, 0x5c, 0x99, 0x66, 0x23, 0x7b, 0xb6, 0x5d, 0xad, 0x0d, + 0xd5, 0x24, 0xed, 0xc0, 0xf3, 0x33, 0x05, 0x5e, 0x8e, 0xc8, 0x75, 0x59, 0x54, 0xbb, 0x90, 0x6e, + 0x19, 0x32, 0xf8, 0x2c, 0xc7, 0x93, 0xca, 0xdf, 0x64, 0x99, 0xf6, 0xf7, 0x46, 0x76, 0x46, 0x14, + 0xb2, 0x5b, 0x7a, 0xac, 0x9a, 0x4e, 0xce, 0x32, 0xe8, 0x23, 0xb5, 0x60, 0xd3, 0x66, 0x23, 0x7b, + 0x2e, 0x1c, 0x87, 0x50, 0xc7, 0xda, 0x94, 0x1f, 0x88, 0xf0, 0x86, 0xff, 0xdb, 0x3b, 0x92, 0x7b, + 0x1e, 0x1d, 0xaa, 0xec, 0x7e, 0x18, 0x94, 0xd1, 0x08, 0x2f, 0xa3, 0x5c, 0xcc, 0x32, 0x62, 0xfe, + 0x62, 0xd4, 0x11, 0x5a, 0x81, 0x54, 0x80, 0x6b, 0x36, 0xc9, 0xf9, 0x38, 0xd3, 0x6c, 0x64, 0xd3, + 0x21, 0xc8, 0x58, 0x1b, 0xf7, 0xb1, 0x86, 0x4a, 0xef, 0xf3, 0x04, 0xac, 0xf5, 0xc6, 0x7c, 0x4c, + 0xb5, 0x77, 0xb8, 0x96, 0x12, 0x83, 0xd5, 0xd2, 0x7d, 0x98, 0xe9, 0xa8, 0x11, 0xd3, 0x0e, 0xb2, + 0x8d, 0x95, 0xd2, 0x42, 0xb3, 0x91, 0xbd, 0xd0, 0xa5, 0x94, 0x7c, 0x31, 0xac, 0xa1, 0xb6, 0x4a, + 0x2a, 0xd8, 0x3c, 0xf1, 0x86, 0xe0, 0x0e, 0xff, 0x59, 0x81, 0xa5, 0xbe, 0xb5, 0xd7, 0x3d, 0x57, + 0x62, 0xb1, 0x14, 0x42, 0x27, 0x4a, 0xb0, 0x8d, 0xa5, 0x30, 0xac, 0x93, 0xb4, 0x27, 0xa0, 0x91, + 0x58, 0x80, 0x7e, 0xaa, 0x00, 0x8e, 0x4a, 0x79, 0x59, 0x7d, 0xba, 0x5f, 0xe7, 0xa6, 0xdd, 0x59, + 0x7c, 0x37, 0xfa, 0x15, 0xdf, 0xd9, 0x50, 0xe0, 0x7e, 0xed, 0x4d, 0xca, 0xc8, 0x65, 0xe9, 0x9d, + 0x82, 0xe9, 0xef, 0x7a, 0x16, 0x23, 0x33, 0x38, 0x58, 0xb7, 0x20, 0xdd, 0x1a, 0x92, 0x71, 0xac, + 0x40, 0xca, 0xf6, 0x2c, 0x9e, 0x25, 0xae, 0x64, 0xb4, 0x0d, 0x61, 0x30, 0x85, 0xb5, 0x71, 0x5b, + 0xaa, 0xe2, 0x5b, 0x30, 0xc1, 0x3e, 0x86, 0x59, 0x11, 0xbc, 0x01, 0x27, 0x85, 0xae, 0x74, 0xbf, + 0x06, 0x49, 0x36, 0x23, 0xcf, 0xf5, 0x33, 0xaa, 0xb8, 0x2c, 0xa8, 0xfe, 0x65, 0x41, 0x5d, 0xb7, + 0xeb, 0xf9, 0xd4, 0x17, 0xbf, 0x5f, 0x1e, 0xe5, 0x69, 0xab, 0x71, 0x61, 0x06, 0x6d, 0xbd, 0x52, + 0xe9, 0x80, 0x56, 0x80, 0x74, 0x6b, 0x48, 0xda, 0xbe, 0x0e, 0xa3, 0x3e, 0xac, 0x91, 0x38, 0xc6, + 0x85, 0x34, 0x3e, 0x50, 0x20, 0x7d, 0xbf, 0xea, 0xd0, 0xed, 0x9a, 0x59, 0x24, 0x43, 0xa5, 0xdd, + 0x16, 0xa4, 0xd9, 0x6d, 0x4b, 0x37, 0x5c, 0x97, 0xd0, 0x8e, 0xc4, 0x3b, 0xdf, 0xda, 0x3c, 0xc3, + 0x12, 0x58, 0x9b, 0x62, 0x43, 0xeb, 0x6c, 0x44, 0x24, 0xdf, 0x1d, 0x38, 0xf5, 0xc4, 0x73, 0x68, + 0xa7, 0x1d, 0x91, 0x84, 0x17, 0x9a, 0x8d, 0xec, 0xac, 0xb0, 0x73, 0x48, 0x04, 0x6b, 0xd3, 0x7c, + 0xac, 0x65, 0x09, 0x17, 0xe0, 0x54, 0x1b, 0x22, 0x49, 0xcf, 0x35, 0x00, 0xb7, 0xea, 0x50, 0xbd, + 0xca, 0x46, 0x65, 0xf2, 0xcd, 0x34, 0x1b, 0xd9, 0x53, 0xc2, 0x6e, 0x6b, 0x0e, 0x6b, 0x29, 0xd7, + 0xd7, 0xc6, 0x77, 0x60, 0x6e, 0xc7, 0xa1, 0x06, 0xa7, 0xfa, 0xae, 0xf9, 0xc4, 0x33, 0x4b, 0x26, + 0xad, 0x0f, 0x95, 0x0a, 0xbf, 0x56, 0x20, 0xd3, 0xcd, 0x94, 0x0c, 0xef, 0x23, 0x48, 0x55, 0xfc, + 0x41, 0xb9, 0x82, 0x73, 0xaa, 0xbc, 0x59, 0x32, 0xa2, 0x82, 0x2d, 0x7e, 0xc3, 0x31, 0xed, 0xfc, + 0xa6, 0xdc, 0xd4, 0x65, 0xde, 0x06, 0x9a, 0xf8, 0xb3, 0x7f, 0x64, 0x17, 0xcb, 0x26, 0x7d, 0xe4, + 0xed, 0xaa, 0x45, 0xc7, 0x92, 0x57, 0x53, 0xf9, 0x67, 0xd9, 0x2d, 0x3d, 0xce, 0x51, 0xb6, 0x07, + 0x73, 0x23, 0xae, 0xd6, 0xf2, 0x88, 0xcf, 0xc1, 0x0c, 0x0f, 0x2e, 0x8c, 0x11, 0x7f, 0xaa, 0xc0, + 0xd9, 0xf0, 0xcc, 0xff, 0x47, 0xc8, 0xfe, 0xd2, 0xbc, 0xe7, 0x54, 0x3c, 0x8b, 0xdc, 0x76, 0x6a, + 0x43, 0x57, 0xe9, 0xaf, 0xfc, 0xa5, 0x09, 0x99, 0x92, 0x38, 0x29, 0x8c, 0xed, 0xf1, 0x89, 0xfe, + 0x20, 0xd7, 0x3b, 0x0f, 0x5b, 0xa1, 0x36, 0x18, 0x42, 0xe9, 0x0b, 0xef, 0x41, 0x66, 0xa7, 0x66, + 0x94, 0x4c, 0xbb, 0xbc, 0x6d, 0x98, 0xb5, 0x1d, 0xe3, 0x31, 0xa9, 0xdd, 0x26, 0xed, 0x05, 0xca, + 0xb3, 0x5f, 0xbf, 0x2a, 0x53, 0xb9, 0x0d, 0x9f, 0x9c, 0xc0, 0xda, 0x18, 0xff, 0xba, 0xda, 0x12, + 0x5e, 0x91, 0x75, 0x79, 0x48, 0x78, 0xc5, 0x17, 0x5e, 0xc1, 0x3f, 0x82, 0xf3, 0x5d, 0xfd, 0x4a, + 0x32, 0xbe, 0x0d, 0x29, 0xca, 0xc6, 0xf4, 0x87, 0xc4, 0xaf, 0x22, 0x55, 0x6e, 0xe1, 0x97, 0x62, + 0x60, 0xdc, 0x24, 0x45, 0x6d, 0x9c, 0x4a, 0xa3, 0xf8, 0xaf, 0x09, 0xb8, 0xe4, 0x1f, 0x1e, 0xcc, + 0x29, 0xc9, 0x1b, 0x2e, 0x29, 0xdd, 0xb3, 0x79, 0xed, 0x15, 0xac, 0xaa, 0x51, 0x0c, 0x0e, 0xc2, + 0x6f, 0x42, 0xea, 0x61, 0xcd, 0xb1, 0x74, 0xd6, 0xea, 0xc9, 0xed, 0x33, 0x62, 0x1d, 0x44, 0x33, + 0x34, 0xce, 0x34, 0xd8, 0x6f, 0x84, 0x61, 0x92, 0x3a, 0x5c, 0xb7, 0x7d, 0x7f, 0xd2, 0x26, 0xa8, + 0xc3, 0xa6, 0xc5, 0xfe, 0x73, 0xae, 0x95, 0x32, 0x6c, 0xd7, 0x49, 0x06, 0xfb, 0xdb, 0x07, 0x90, + 0xb6, 0x8c, 0x7d, 0xb1, 0x39, 0xe8, 0x26, 0x8f, 0x4a, 0x9e, 0xf6, 0x83, 0x22, 0x9f, 0xb2, 0x8c, + 0xfd, 0x36, 0x6c, 0xe8, 0x5d, 0x98, 0x22, 0xfb, 0x94, 0xd4, 0x6c, 0xa3, 0x22, 0xf7, 0xa5, 0xd1, + 0xa1, 0xec, 0x4e, 0xfa, 0x56, 0xc4, 0xa6, 0xf5, 0xb9, 0x02, 0xaf, 0xf6, 0xa5, 0x55, 0xae, 0xe7, + 0x1b, 0x00, 0xa6, 0x5d, 0xf5, 0xe8, 0x40, 0xc4, 0xa6, 0xb8, 0x0a, 0x67, 0xf6, 0x2d, 0x98, 0x70, + 0x3c, 0x1a, 0x18, 0x48, 0xc4, 0x33, 0x00, 0x42, 0x87, 0x8d, 0xe0, 0xbb, 0x70, 0xee, 0xae, 0xe9, + 0x52, 0x7e, 0x98, 0xe5, 0xeb, 0x7c, 0x2d, 0xfc, 0x45, 0x5f, 0x81, 0x51, 0xb1, 0x5c, 0x4a, 0xff, + 0xe3, 0x44, 0x48, 0xe2, 0x77, 0x60, 0xf6, 0xb0, 0xb5, 0x23, 0x9d, 0x90, 0xab, 0x9f, 0x5c, 0x80, + 0xd1, 0x77, 0x3c, 0x52, 0xab, 0xa3, 0x5f, 0x28, 0x30, 0x26, 0xda, 0x6d, 0x74, 0x39, 0x46, 0x4f, + 0x2e, 0x61, 0x64, 0x96, 0x62, 0xc9, 0x8a, 0x20, 0xf1, 0xd2, 0x4f, 0xfe, 0xf2, 0xaf, 0x4f, 0x12, + 0x5f, 0x45, 0x17, 0x73, 0x51, 0xef, 0x22, 0x32, 0x8a, 0x7f, 0x2b, 0x30, 0xd7, 0xb3, 0xf5, 0x41, + 0xaf, 0x47, 0xfa, 0xed, 0xf7, 0x3c, 0x90, 0x79, 0x63, 0x58, 0x75, 0x89, 0xe4, 0x2e, 0x47, 0x72, + 0x1b, 0x6d, 0x46, 0x22, 0xf9, 0xb1, 0x2c, 0xba, 0x8f, 0x72, 0x44, 0x5a, 0x14, 0x8f, 0x3e, 0x84, + 0xd9, 0x94, 0xb7, 0x3d, 0xdd, 0xb4, 0xd1, 0x6f, 0x13, 0x6d, 0x37, 0xe7, 0xfe, 0x2d, 0x3e, 0xba, + 0x37, 0x5c, 0xf4, 0x3d, 0x1b, 0x96, 0x23, 0xd3, 0x61, 0x70, 0x3a, 0xbe, 0x8f, 0xbe, 0x77, 0x1c, + 0x74, 0xe8, 0x4f, 0x4d, 0xfa, 0x88, 0xed, 0x19, 0x22, 0x50, 0x9d, 0xef, 0x05, 0xe8, 0xe7, 0x09, + 0xb8, 0x18, 0xa3, 0xb3, 0x47, 0x6f, 0xc7, 0x83, 0xd2, 0xf7, 0x6d, 0xe0, 0xc8, 0x9c, 0x7c, 0xc0, + 0x39, 0xd1, 0xd0, 0xf6, 0xc0, 0x9c, 0xf0, 0xd8, 0x44, 0xb7, 0xd7, 0x35, 0x5d, 0xbe, 0x54, 0x20, + 0xd3, 0xbb, 0x2f, 0x41, 0x43, 0x05, 0xde, 0xea, 0xcb, 0x32, 0x6f, 0x0e, 0xad, 0x2f, 0x91, 0x7f, + 0x87, 0x23, 0x7f, 0x1b, 0x6d, 0x1d, 0x3d, 0x1b, 0x1c, 0x8f, 0xa2, 0xdf, 0x25, 0xe0, 0xca, 0x20, + 0x5d, 0x38, 0xda, 0x1e, 0x12, 0x40, 0xef, 0xfa, 0x38, 0x32, 0x25, 0xbb, 0x9c, 0x92, 0x1f, 0xa0, + 0x0f, 0x8f, 0x85, 0x92, 0xee, 0x15, 0xf2, 0x71, 0x02, 0x5e, 0x89, 0xd3, 0x7f, 0xa3, 0x3b, 0x47, + 0x2b, 0x91, 0xe3, 0x4c, 0x95, 0x07, 0x9c, 0x97, 0xf7, 0xd1, 0xbb, 0x03, 0xf2, 0xc2, 0x58, 0xe8, + 0x53, 0x28, 0x2c, 0x75, 0x3e, 0x55, 0x60, 0xdc, 0xef, 0x93, 0xd1, 0x95, 0xc8, 0x60, 0x43, 0x1d, + 0x76, 0x66, 0x39, 0xa6, 0xb4, 0x04, 0xa2, 0x72, 0x20, 0x8b, 0xe8, 0x52, 0x24, 0x90, 0xa0, 0x09, + 0x47, 0xbf, 0x54, 0x20, 0xc9, 0x2c, 0xa0, 0xc5, 0xe8, 0x03, 0xb4, 0x75, 0xef, 0xcf, 0xbc, 0x16, + 0x43, 0x52, 0x46, 0x73, 0x8d, 0x47, 0xa3, 0xa2, 0x2b, 0x91, 0xd1, 0xf0, 0x48, 0x5a, 0xe4, 0x72, + 0xb6, 0xfc, 0xd6, 0xbb, 0x0f, 0x5b, 0xa1, 0xa6, 0xbd, 0x0f, 0x5b, 0xe1, 0x7e, 0x3e, 0x26, 0x5b, + 0x46, 0xa5, 0xb2, 0x2c, 0xd8, 0xfa, 0xa3, 0x02, 0xe9, 0xf0, 0xd5, 0x07, 0x5d, 0x8b, 0xf4, 0xd9, + 0xe3, 0xde, 0x95, 0xb9, 0x3e, 0xa0, 0x96, 0x8c, 0xf8, 0x26, 0x8f, 0x78, 0x15, 0x5d, 0x8d, 0x8c, + 0xb8, 0x62, 0xba, 0x54, 0x84, 0xbc, 0xbc, 0x5b, 0x5f, 0xe6, 0xb7, 0x36, 0xf4, 0x1b, 0x05, 0x52, + 0x41, 0xcb, 0x8e, 0xa2, 0x89, 0x0a, 0x3f, 0x56, 0x64, 0xd4, 0xb8, 0xe2, 0x32, 0xcc, 0x35, 0x1e, + 0xe6, 0x32, 0x5a, 0xea, 0x1a, 0x66, 0x68, 0xc1, 0x73, 0xfc, 0x5e, 0xee, 0xa2, 0x03, 0x05, 0xd0, + 0xe1, 0xf6, 0x1d, 0x7d, 0x2d, 0xd2, 0x77, 0xcf, 0xa7, 0x83, 0xcc, 0x8d, 0x81, 0xf5, 0x64, 0xf0, + 0x05, 0x1e, 0xfc, 0x06, 0x5a, 0x1f, 0x24, 0x6b, 0x73, 0x94, 0x19, 0x14, 0x9b, 0x40, 0xd0, 0x40, + 0xa3, 0x3f, 0x28, 0x30, 0xd5, 0xd9, 0xda, 0xa3, 0xd5, 0xfe, 0x61, 0x1d, 0x82, 0xb2, 0x36, 0x90, + 0x8e, 0x84, 0x71, 0x8b, 0xc3, 0xb8, 0x86, 0x56, 0x63, 0xc0, 0x10, 0xc1, 0xb7, 0xe2, 0x7e, 0xe6, + 0x2f, 0x45, 0x47, 0xbb, 0x1e, 0x67, 0x29, 0xba, 0x3d, 0x15, 0xc4, 0x59, 0x8a, 0xae, 0xef, 0x02, + 0x78, 0x9d, 0x63, 0xf8, 0x06, 0xfa, 0xfa, 0x10, 0x4b, 0x21, 0x9a, 0x7c, 0xf4, 0x85, 0x02, 0xa7, + 0xbb, 0x74, 0xdb, 0xa8, 0x4f, 0x4c, 0x3d, 0xdf, 0x05, 0x32, 0x37, 0x07, 0x57, 0x94, 0x68, 0xde, + 0xe2, 0x68, 0x6e, 0xa1, 0x9b, 0x71, 0x56, 0x44, 0xd8, 0xd1, 0xab, 0x86, 0x59, 0xd3, 0x79, 0x37, + 0xff, 0x90, 0x10, 0xf4, 0x1f, 0x05, 0xb2, 0x7d, 0xda, 0x4e, 0xb4, 0x11, 0xeb, 0x30, 0x8c, 0x7e, + 0x0b, 0xc8, 0x6c, 0x1e, 0xcd, 0x88, 0x04, 0xfc, 0x3a, 0x07, 0x7c, 0x03, 0x5d, 0x1f, 0xf4, 0x58, + 0xa5, 0xdc, 0xf0, 0x83, 0x67, 0xcf, 0xe7, 0x95, 0x83, 0xe7, 0xf3, 0xca, 0x3f, 0x9f, 0xcf, 0x2b, + 0x1f, 0xbf, 0x98, 0x3f, 0x71, 0xf0, 0x62, 0xfe, 0xc4, 0xdf, 0x5e, 0xcc, 0x9f, 0xf8, 0x70, 0xa3, + 0xad, 0x6b, 0x97, 0xa6, 0x97, 0x2b, 0xc6, 0xae, 0x1b, 0xf8, 0xd9, 0x5b, 0xbd, 0x9a, 0xdb, 0xef, + 0xf0, 0x56, 0xac, 0x98, 0xc4, 0xa6, 0xe2, 0xff, 0xd5, 0xa2, 0x1b, 0x1d, 0xe3, 0x7f, 0xd6, 0xfe, + 0x17, 0x00, 0x00, 0xff, 0xff, 0x53, 0xcc, 0x25, 0x6a, 0xcb, 0x1f, 0x00, 0x00, } // Reference imports to suppress errors if they are not otherwise used. @@ -1633,6 +1728,7 @@ type QueryClient interface { Pool(ctx context.Context, in *PoolRequest, opts ...grpc.CallOption) (*PoolResponse, error) // AllPools returns all pools on the Osmosis chain sorted by IDs. AllPools(ctx context.Context, in *AllPoolsRequest, opts ...grpc.CallOption) (*AllPoolsResponse, error) + ListPoolsByDenom(ctx context.Context, in *ListPoolsByDenomRequest, opts ...grpc.CallOption) (*ListPoolsByDenomResponse, error) // SpotPrice defines a gRPC query handler that returns the spot price given // a base denomination and a quote denomination. SpotPrice(ctx context.Context, in *SpotPriceRequest, opts ...grpc.CallOption) (*SpotPriceResponse, error) @@ -1748,6 +1844,15 @@ func (c *queryClient) AllPools(ctx context.Context, in *AllPoolsRequest, opts .. return out, nil } +func (c *queryClient) ListPoolsByDenom(ctx context.Context, in *ListPoolsByDenomRequest, opts ...grpc.CallOption) (*ListPoolsByDenomResponse, error) { + out := new(ListPoolsByDenomResponse) + err := c.cc.Invoke(ctx, "/osmosis.poolmanager.v1beta1.Query/ListPoolsByDenom", in, out, opts...) + if err != nil { + return nil, err + } + return out, nil +} + func (c *queryClient) SpotPrice(ctx context.Context, in *SpotPriceRequest, opts ...grpc.CallOption) (*SpotPriceResponse, error) { out := new(SpotPriceResponse) err := c.cc.Invoke(ctx, "/osmosis.poolmanager.v1beta1.Query/SpotPrice", in, out, opts...) @@ -1830,6 +1935,7 @@ type QueryServer interface { Pool(context.Context, *PoolRequest) (*PoolResponse, error) // AllPools returns all pools on the Osmosis chain sorted by IDs. AllPools(context.Context, *AllPoolsRequest) (*AllPoolsResponse, error) + ListPoolsByDenom(context.Context, *ListPoolsByDenomRequest) (*ListPoolsByDenomResponse, error) // SpotPrice defines a gRPC query handler that returns the spot price given // a base denomination and a quote denomination. SpotPrice(context.Context, *SpotPriceRequest) (*SpotPriceResponse, error) @@ -1881,6 +1987,9 @@ func (*UnimplementedQueryServer) Pool(ctx context.Context, req *PoolRequest) (*P func (*UnimplementedQueryServer) AllPools(ctx context.Context, req *AllPoolsRequest) (*AllPoolsResponse, error) { return nil, status.Errorf(codes.Unimplemented, "method AllPools not implemented") } +func (*UnimplementedQueryServer) ListPoolsByDenom(ctx context.Context, req *ListPoolsByDenomRequest) (*ListPoolsByDenomResponse, error) { + return nil, status.Errorf(codes.Unimplemented, "method ListPoolsByDenom not implemented") +} func (*UnimplementedQueryServer) SpotPrice(ctx context.Context, req *SpotPriceRequest) (*SpotPriceResponse, error) { return nil, status.Errorf(codes.Unimplemented, "method SpotPrice not implemented") } @@ -2084,6 +2193,24 @@ func _Query_AllPools_Handler(srv interface{}, ctx context.Context, dec func(inte return interceptor(ctx, in, info, handler) } +func _Query_ListPoolsByDenom_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { + in := new(ListPoolsByDenomRequest) + if err := dec(in); err != nil { + return nil, err + } + if interceptor == nil { + return srv.(QueryServer).ListPoolsByDenom(ctx, in) + } + info := &grpc.UnaryServerInfo{ + Server: srv, + FullMethod: "/osmosis.poolmanager.v1beta1.Query/ListPoolsByDenom", + } + handler := func(ctx context.Context, req interface{}) (interface{}, error) { + return srv.(QueryServer).ListPoolsByDenom(ctx, req.(*ListPoolsByDenomRequest)) + } + return interceptor(ctx, in, info, handler) +} + func _Query_SpotPrice_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { in := new(SpotPriceRequest) if err := dec(in); err != nil { @@ -2236,6 +2363,10 @@ var _Query_serviceDesc = grpc.ServiceDesc{ MethodName: "AllPools", Handler: _Query_AllPools_Handler, }, + { + MethodName: "ListPoolsByDenom", + Handler: _Query_ListPoolsByDenom_Handler, + }, { MethodName: "SpotPrice", Handler: _Query_SpotPrice_Handler, @@ -3307,6 +3438,73 @@ func (m *EstimateTradeBasedOnPriceImpactResponse) MarshalToSizedBuffer(dAtA []by return len(dAtA) - i, nil } +func (m *ListPoolsByDenomRequest) Marshal() (dAtA []byte, err error) { + size := m.Size() + dAtA = make([]byte, size) + n, err := m.MarshalToSizedBuffer(dAtA[:size]) + if err != nil { + return nil, err + } + return dAtA[:n], nil +} + +func (m *ListPoolsByDenomRequest) MarshalTo(dAtA []byte) (int, error) { + size := m.Size() + return m.MarshalToSizedBuffer(dAtA[:size]) +} + +func (m *ListPoolsByDenomRequest) MarshalToSizedBuffer(dAtA []byte) (int, error) { + i := len(dAtA) + _ = i + var l int + _ = l + if len(m.Denom) > 0 { + i -= len(m.Denom) + copy(dAtA[i:], m.Denom) + i = encodeVarintQuery(dAtA, i, uint64(len(m.Denom))) + i-- + dAtA[i] = 0xa + } + return len(dAtA) - i, nil +} + +func (m *ListPoolsByDenomResponse) Marshal() (dAtA []byte, err error) { + size := m.Size() + dAtA = make([]byte, size) + n, err := m.MarshalToSizedBuffer(dAtA[:size]) + if err != nil { + return nil, err + } + return dAtA[:n], nil +} + +func (m *ListPoolsByDenomResponse) MarshalTo(dAtA []byte) (int, error) { + size := m.Size() + return m.MarshalToSizedBuffer(dAtA[:size]) +} + +func (m *ListPoolsByDenomResponse) MarshalToSizedBuffer(dAtA []byte) (int, error) { + i := len(dAtA) + _ = i + var l int + _ = l + if len(m.Pools) > 0 { + for iNdEx := len(m.Pools) - 1; iNdEx >= 0; iNdEx-- { + { + size, err := m.Pools[iNdEx].MarshalToSizedBuffer(dAtA[:i]) + if err != nil { + return 0, err + } + i -= size + i = encodeVarintQuery(dAtA, i, uint64(size)) + } + i-- + dAtA[i] = 0xa + } + } + return len(dAtA) - i, nil +} + func encodeVarintQuery(dAtA []byte, offset int, v uint64) int { offset -= sovQuery(v) base := offset @@ -3746,6 +3944,34 @@ func (m *EstimateTradeBasedOnPriceImpactResponse) Size() (n int) { return n } +func (m *ListPoolsByDenomRequest) Size() (n int) { + if m == nil { + return 0 + } + var l int + _ = l + l = len(m.Denom) + if l > 0 { + n += 1 + l + sovQuery(uint64(l)) + } + return n +} + +func (m *ListPoolsByDenomResponse) Size() (n int) { + if m == nil { + return 0 + } + var l int + _ = l + if len(m.Pools) > 0 { + for _, e := range m.Pools { + l = e.Size() + n += 1 + l + sovQuery(uint64(l)) + } + } + return n +} + func sovQuery(x uint64) (n int) { return (math_bits.Len64(x|1) + 6) / 7 } @@ -6586,6 +6812,172 @@ func (m *EstimateTradeBasedOnPriceImpactResponse) Unmarshal(dAtA []byte) error { } return nil } +func (m *ListPoolsByDenomRequest) Unmarshal(dAtA []byte) error { + l := len(dAtA) + iNdEx := 0 + for iNdEx < l { + preIndex := iNdEx + var wire uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowQuery + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + wire |= uint64(b&0x7F) << shift + if b < 0x80 { + break + } + } + fieldNum := int32(wire >> 3) + wireType := int(wire & 0x7) + if wireType == 4 { + return fmt.Errorf("proto: ListPoolsByDenomRequest: wiretype end group for non-group") + } + if fieldNum <= 0 { + return fmt.Errorf("proto: ListPoolsByDenomRequest: illegal tag %d (wire type %d)", fieldNum, wire) + } + switch fieldNum { + case 1: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field Denom", wireType) + } + var stringLen uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowQuery + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + stringLen |= uint64(b&0x7F) << shift + if b < 0x80 { + break + } + } + intStringLen := int(stringLen) + if intStringLen < 0 { + return ErrInvalidLengthQuery + } + postIndex := iNdEx + intStringLen + if postIndex < 0 { + return ErrInvalidLengthQuery + } + if postIndex > l { + return io.ErrUnexpectedEOF + } + m.Denom = string(dAtA[iNdEx:postIndex]) + iNdEx = postIndex + default: + iNdEx = preIndex + skippy, err := skipQuery(dAtA[iNdEx:]) + if err != nil { + return err + } + if (skippy < 0) || (iNdEx+skippy) < 0 { + return ErrInvalidLengthQuery + } + if (iNdEx + skippy) > l { + return io.ErrUnexpectedEOF + } + iNdEx += skippy + } + } + + if iNdEx > l { + return io.ErrUnexpectedEOF + } + return nil +} +func (m *ListPoolsByDenomResponse) Unmarshal(dAtA []byte) error { + l := len(dAtA) + iNdEx := 0 + for iNdEx < l { + preIndex := iNdEx + var wire uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowQuery + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + wire |= uint64(b&0x7F) << shift + if b < 0x80 { + break + } + } + fieldNum := int32(wire >> 3) + wireType := int(wire & 0x7) + if wireType == 4 { + return fmt.Errorf("proto: ListPoolsByDenomResponse: wiretype end group for non-group") + } + if fieldNum <= 0 { + return fmt.Errorf("proto: ListPoolsByDenomResponse: illegal tag %d (wire type %d)", fieldNum, wire) + } + switch fieldNum { + case 1: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field Pools", wireType) + } + var msglen int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowQuery + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + msglen |= int(b&0x7F) << shift + if b < 0x80 { + break + } + } + if msglen < 0 { + return ErrInvalidLengthQuery + } + postIndex := iNdEx + msglen + if postIndex < 0 { + return ErrInvalidLengthQuery + } + if postIndex > l { + return io.ErrUnexpectedEOF + } + m.Pools = append(m.Pools, &types1.Any{}) + if err := m.Pools[len(m.Pools)-1].Unmarshal(dAtA[iNdEx:postIndex]); err != nil { + return err + } + iNdEx = postIndex + default: + iNdEx = preIndex + skippy, err := skipQuery(dAtA[iNdEx:]) + if err != nil { + return err + } + if (skippy < 0) || (iNdEx+skippy) < 0 { + return ErrInvalidLengthQuery + } + if (iNdEx + skippy) > l { + return io.ErrUnexpectedEOF + } + iNdEx += skippy + } + } + + if iNdEx > l { + return io.ErrUnexpectedEOF + } + return nil +} func skipQuery(dAtA []byte) (n int, err error) { l := len(dAtA) iNdEx := 0 diff --git a/x/poolmanager/client/queryproto/query.pb.gw.go b/x/poolmanager/client/queryproto/query.pb.gw.go index a22f9280715..5053847b8d3 100644 --- a/x/poolmanager/client/queryproto/query.pb.gw.go +++ b/x/poolmanager/client/queryproto/query.pb.gw.go @@ -573,6 +573,42 @@ func local_request_Query_AllPools_0(ctx context.Context, marshaler runtime.Marsh } +var ( + filter_Query_ListPoolsByDenom_0 = &utilities.DoubleArray{Encoding: map[string]int{}, Base: []int(nil), Check: []int(nil)} +) + +func request_Query_ListPoolsByDenom_0(ctx context.Context, marshaler runtime.Marshaler, client QueryClient, req *http.Request, pathParams map[string]string) (proto.Message, runtime.ServerMetadata, error) { + var protoReq ListPoolsByDenomRequest + var metadata runtime.ServerMetadata + + if err := req.ParseForm(); err != nil { + return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", err) + } + if err := runtime.PopulateQueryParameters(&protoReq, req.Form, filter_Query_ListPoolsByDenom_0); err != nil { + return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", err) + } + + msg, err := client.ListPoolsByDenom(ctx, &protoReq, grpc.Header(&metadata.HeaderMD), grpc.Trailer(&metadata.TrailerMD)) + return msg, metadata, err + +} + +func local_request_Query_ListPoolsByDenom_0(ctx context.Context, marshaler runtime.Marshaler, server QueryServer, req *http.Request, pathParams map[string]string) (proto.Message, runtime.ServerMetadata, error) { + var protoReq ListPoolsByDenomRequest + var metadata runtime.ServerMetadata + + if err := req.ParseForm(); err != nil { + return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", err) + } + if err := runtime.PopulateQueryParameters(&protoReq, req.Form, filter_Query_ListPoolsByDenom_0); err != nil { + return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", err) + } + + msg, err := server.ListPoolsByDenom(ctx, &protoReq) + return msg, metadata, err + +} + var ( filter_Query_SpotPrice_0 = &utilities.DoubleArray{Encoding: map[string]int{"pool_id": 0}, Base: []int{1, 1, 0}, Check: []int{0, 1, 2}} ) @@ -1115,6 +1151,29 @@ func RegisterQueryHandlerServer(ctx context.Context, mux *runtime.ServeMux, serv }) + mux.Handle("GET", pattern_Query_ListPoolsByDenom_0, func(w http.ResponseWriter, req *http.Request, pathParams map[string]string) { + ctx, cancel := context.WithCancel(req.Context()) + defer cancel() + var stream runtime.ServerTransportStream + ctx = grpc.NewContextWithServerTransportStream(ctx, &stream) + 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_Query_ListPoolsByDenom_0(rctx, inboundMarshaler, server, req, pathParams) + md.HeaderMD, md.TrailerMD = metadata.Join(md.HeaderMD, stream.Header()), metadata.Join(md.TrailerMD, stream.Trailer()) + ctx = runtime.NewServerMetadataContext(ctx, md) + if err != nil { + runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) + return + } + + forward_Query_ListPoolsByDenom_0(ctx, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...) + + }) + mux.Handle("GET", pattern_Query_SpotPrice_0, func(w http.ResponseWriter, req *http.Request, pathParams map[string]string) { ctx, cancel := context.WithCancel(req.Context()) defer cancel() @@ -1494,6 +1553,26 @@ func RegisterQueryHandlerClient(ctx context.Context, mux *runtime.ServeMux, clie }) + mux.Handle("GET", pattern_Query_ListPoolsByDenom_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_Query_ListPoolsByDenom_0(rctx, inboundMarshaler, client, req, pathParams) + ctx = runtime.NewServerMetadataContext(ctx, md) + if err != nil { + runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) + return + } + + forward_Query_ListPoolsByDenom_0(ctx, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...) + + }) + mux.Handle("GET", pattern_Query_SpotPrice_0, func(w http.ResponseWriter, req *http.Request, pathParams map[string]string) { ctx, cancel := context.WithCancel(req.Context()) defer cancel() @@ -1638,6 +1717,8 @@ var ( pattern_Query_AllPools_0 = runtime.MustPattern(runtime.NewPattern(1, []int{2, 0, 2, 1, 2, 2, 2, 3}, []string{"osmosis", "poolmanager", "v1beta1", "all-pools"}, "", runtime.AssumeColonVerbOpt(false))) + pattern_Query_ListPoolsByDenom_0 = runtime.MustPattern(runtime.NewPattern(1, []int{2, 0, 2, 1, 2, 2, 2, 3}, []string{"osmosis", "poolmanager", "v1beta1", "list-pools-by-denom"}, "", runtime.AssumeColonVerbOpt(false))) + pattern_Query_SpotPrice_0 = runtime.MustPattern(runtime.NewPattern(1, []int{2, 0, 2, 1, 2, 2, 1, 0, 4, 1, 5, 3, 2, 4}, []string{"osmosis", "poolmanager", "pools", "pool_id", "prices"}, "", runtime.AssumeColonVerbOpt(false))) pattern_Query_TotalPoolLiquidity_0 = runtime.MustPattern(runtime.NewPattern(1, []int{2, 0, 2, 1, 2, 2, 2, 3, 1, 0, 4, 1, 5, 4, 2, 5}, []string{"osmosis", "poolmanager", "v1beta1", "pools", "pool_id", "total_pool_liquidity"}, "", runtime.AssumeColonVerbOpt(false))) @@ -1672,6 +1753,8 @@ var ( forward_Query_AllPools_0 = runtime.ForwardResponseMessage + forward_Query_ListPoolsByDenom_0 = runtime.ForwardResponseMessage + forward_Query_SpotPrice_0 = runtime.ForwardResponseMessage forward_Query_TotalPoolLiquidity_0 = runtime.ForwardResponseMessage diff --git a/x/poolmanager/router.go b/x/poolmanager/router.go index e13eb8b049e..ed8e68d9a00 100644 --- a/x/poolmanager/router.go +++ b/x/poolmanager/router.go @@ -548,6 +548,40 @@ func (k Keeper) AllPools( return sortedPools, nil } +func (k Keeper) ListPoolsByDenom( + ctx sdk.Context, + Denom string, +) ([]types.PoolI, error) { + less := func(i, j types.PoolI) bool { + return i.GetId() < j.GetId() + } + // Allocate the slice with the exact capacity to avoid reallocations. + poolCount := k.GetNextPoolId(ctx) + sortedPools := make([]types.PoolI, 0, poolCount) + for _, poolModule := range k.poolModules { + currentModulePools, err := poolModule.GetPools(ctx) + if err != nil { + return nil, err + } + + var poolsByDenom []types.PoolI + for _, pool := range currentModulePools { + coins, err := k.GetTotalPoolLiquidity(ctx, pool.GetId()) + if err != nil { + return nil, err + } + if coins.AmountOf(Denom).GT(osmomath.ZeroInt()) { + if err != nil { + return nil, err + } + poolsByDenom = append(poolsByDenom, pool) + } + } + sortedPools = osmoutils.MergeSlices(sortedPools, poolsByDenom, less) + } + return sortedPools, nil +} + // createMultihopExpectedSwapOuts defines the output denom and output amount for the last pool in // the routeStep of pools the caller is intending to hop through in a fixed-output multihop tx. It estimates the input // amount for this last pool and then chains that input as the output of the previous pool in the routeStep, repeating From a9df2c72ff2f2cd4249c7d60ee928a3667cf035b Mon Sep 17 00:00:00 2001 From: DongLieu Date: Thu, 26 Oct 2023 11:24:05 +0700 Subject: [PATCH 02/22] revert --- scripts/multinode-local-testnet.sh | 4 ++-- scripts/setup_superfluid.sh | 16 ++++++++-------- scripts/stake-uosmo.json | 7 ------- 3 files changed, 10 insertions(+), 17 deletions(-) delete mode 100644 scripts/stake-uosmo.json diff --git a/scripts/multinode-local-testnet.sh b/scripts/multinode-local-testnet.sh index bd1a9d1778b..d7731b8f6ae 100755 --- a/scripts/multinode-local-testnet.sh +++ b/scripts/multinode-local-testnet.sh @@ -128,8 +128,8 @@ tmux new -s validator3 -d osmosisd start --home=$HOME/.osmosisd/validator3 # send uosmo from first validator to second validator echo "Waiting 7 seconds to send funds to validators 2 and 3..." sleep 7 -osmosisd tx bank send validator1 $(osmosisd keys show validator2 -a --keyring-backend=test --home=$HOME/.osmosisd/validator2) 500000000uosmo --keyring-backend=test --home=$HOME/.osmosisd/validator1 --chain-id=testing --broadcast-mode block --node http://localhost:26657 --yes --fees 1000stake -osmosisd tx bank send validator1 $(osmosisd keys show validator3 -a --keyring-backend=test --home=$HOME/.osmosisd/validator3) 400000000uosmo --keyring-backend=test --home=$HOME/.osmosisd/validator1 --chain-id=testing --broadcast-mode block --node http://localhost:26657 --yes --fees 1000stake +osmosisd tx bank send validator1 $(osmosisd keys show validator2 -a --keyring-backend=test --home=$HOME/.osmosisd/validator2) 500000000uosmo --keyring-backend=test --home=$HOME/.osmosisd/validator1 --chain-id=testing --broadcast-mode block --node http://localhost:26657 --yes +osmosisd tx bank send validator1 $(osmosisd keys show validator3 -a --keyring-backend=test --home=$HOME/.osmosisd/validator3) 400000000uosmo --keyring-backend=test --home=$HOME/.osmosisd/validator1 --chain-id=testing --broadcast-mode block --node http://localhost:26657 --yes # create second & third validator osmosisd tx staking create-validator --amount=500000000uosmo --from=validator2 --pubkey=$(osmosisd tendermint show-validator --home=$HOME/.osmosisd/validator2) --moniker="validator2" --chain-id="testing" --commission-rate="0.1" --commission-max-rate="0.2" --commission-max-change-rate="0.05" --min-self-delegation="500000000" --keyring-backend=test --home=$HOME/.osmosisd/validator2 --broadcast-mode block --node http://localhost:26657 --yes diff --git a/scripts/setup_superfluid.sh b/scripts/setup_superfluid.sh index 13926c1cfee..ead323b8959 100755 --- a/scripts/setup_superfluid.sh +++ b/scripts/setup_superfluid.sh @@ -12,25 +12,25 @@ # } # create pool -osmosisd tx gamm create-pool --pool-file=./stake-uosmo.json --from=validator1 --keyring-backend=test --chain-id=testing --yes --home=$HOME/.osmosisd/validator1 --fees 1000stake +osmosisd tx gamm create-pool --pool-file=./stake-uosmo.json --from=validator1 --keyring-backend=test --chain-id=testing --yes --home=$HOME/.osmosisd/validator1 sleep 7 # test swap in pool created -osmosisd tx gamm swap-exact-amount-in 100000uosmo 50000 --swap-route-pool-ids=1 --swap-route-denoms=stake --from=validator1 --keyring-backend=test --chain-id=testing --yes --home=$HOME/.osmosisd/validator1 --fees 1000stake +osmosisd tx gamm swap-exact-amount-in 100000uosmo 50000 --swap-route-pool-ids=1 --swap-route-denoms=stake --from=validator1 --keyring-backend=test --chain-id=testing --yes --home=$HOME/.osmosisd/validator1 sleep 7 # create a lock up with lockable duration 360h -osmosisd tx lockup lock-tokens 10000000000000000000gamm/pool/1 --duration=360h --from=validator1 --keyring-backend=test --chain-id=testing --broadcast-mode=block --yes --home=$HOME/.osmosisd/validator1 --fees 1000stake +osmosisd tx lockup lock-tokens 10000000000000000000gamm/pool/1 --duration=360h --from=validator1 --keyring-backend=test --chain-id=testing --broadcast-mode=block --yes --home=$HOME/.osmosisd/validator1 sleep 7 # submit and pass proposal for superfluid -osmosisd tx gov submit-proposal set-superfluid-assets-proposal --title="set superfluid assets" --description="set superfluid assets description" --superfluid-assets="gamm/pool/1" --deposit=10000000uosmo --from=validator1 --chain-id=testing --keyring-backend=test --broadcast-mode=block --yes --home=$HOME/.osmosisd/validator1 +osmosisd tx gov submit-proposal set-superfluid-assets-proposal --title="set superfluid assets" --description="set superfluid assets description" --superfluid-assets="gamm/pool/1" --deposit=10000000uosmo --from=validator1 --chain-id=testing --keyring-backend=test --broadcast-mode=block --yes --home=$HOME/.osmosisd/validator1 sleep 7 -osmosisd tx gov deposit 1 10000000stake --from=validator1 --keyring-backend=test --chain-id=testing --broadcast-mode=block --yes --home=$HOME/.osmosisd/validator1 +osmosisd tx gov deposit 1 10000000stake --from=validator1 --keyring-backend=test --chain-id=testing --broadcast-mode=block --yes --home=$HOME/.osmosisd/validator1 sleep 7 -osmosisd tx gov vote 1 yes --from=validator1 --keyring-backend=test --chain-id=testing --yes --home=$HOME/.osmosisd/validator1 -sleep 7 -osmosisd tx gov vote 1 yes --from=validator2 --keyring-backend=test --chain-id=testing --yes --home=$HOME/.osmosisd/validator2 +osmosisd tx gov vote 1 yes --from=validator1 --keyring-backend=test --chain-id=testing --yes --home=$HOME/.osmosisd/validator1 sleep 7 +osmosisd tx gov vote 1 yes --from=validator2 --keyring-backend=test --chain-id=testing --yes --home=$HOME/.osmosisd/validator2 +sleep 7 \ No newline at end of file diff --git a/scripts/stake-uosmo.json b/scripts/stake-uosmo.json deleted file mode 100644 index d3cf59481b1..00000000000 --- a/scripts/stake-uosmo.json +++ /dev/null @@ -1,7 +0,0 @@ -{ - "weights": "5stake,5uosmo", - "initial-deposit": "1000000stake,1000000uosmo", - "swap-fee": "0.010000000000000000", - "exit-fee": "0.010000000000000000", - "future-governor": "168h" -} \ No newline at end of file From fc7cd188f2a953499d4fd0a0f9b8c738fab522c6 Mon Sep 17 00:00:00 2001 From: DongLieu Date: Thu, 26 Oct 2023 11:26:25 +0700 Subject: [PATCH 03/22] minor --- stake-uosmo.json | 7 ------- 1 file changed, 7 deletions(-) delete mode 100644 stake-uosmo.json diff --git a/stake-uosmo.json b/stake-uosmo.json deleted file mode 100644 index 8157186dd79..00000000000 --- a/stake-uosmo.json +++ /dev/null @@ -1,7 +0,0 @@ -{ - "weights": "5stake,5uosmo", - "initial-deposit": "1000000stake,1000000uosmo", - "swap-fee": "0.01", - "exit-fee": "0.01", - "future-governor": "168h" -} \ No newline at end of file From 59b9dfd732fff76758a8d1e13609099fb8bd69b4 Mon Sep 17 00:00:00 2001 From: DongLieu Date: Thu, 26 Oct 2023 12:51:13 +0700 Subject: [PATCH 04/22] minor --- proto/osmosis/poolmanager/v1beta1/query.proto | 4 ++-- x/poolmanager/client/query_proto_wrap.go | 2 +- x/poolmanager/router.go | 3 +++ 3 files changed, 6 insertions(+), 3 deletions(-) diff --git a/proto/osmosis/poolmanager/v1beta1/query.proto b/proto/osmosis/poolmanager/v1beta1/query.proto index dccf3a77238..8f5cd29c291 100644 --- a/proto/osmosis/poolmanager/v1beta1/query.proto +++ b/proto/osmosis/poolmanager/v1beta1/query.proto @@ -91,7 +91,7 @@ service Query { rpc AllPools(AllPoolsRequest) returns (AllPoolsResponse) { option (google.api.http).get = "/osmosis/poolmanager/v1beta1/all-pools"; } - // List pools by denom + // ListPoolsByDenom return all pools by denom on the Osmosis chain. rpc ListPoolsByDenom(ListPoolsByDenomRequest) returns (ListPoolsByDenomResponse) { option (google.api.http).get = "/osmosis/poolmanager/v1beta1/list-pools-by-denom"; } @@ -239,7 +239,7 @@ message AllPoolsResponse { } // ======================================================= - +// ListPoolsByDenomRequest message ListPoolsByDenomRequest { string denom = 1 [ (gogoproto.moretags) = "yaml:\"base_asset_denom\"" ]; diff --git a/x/poolmanager/client/query_proto_wrap.go b/x/poolmanager/client/query_proto_wrap.go index 4f0fe90cf2d..45c2b4fbd25 100644 --- a/x/poolmanager/client/query_proto_wrap.go +++ b/x/poolmanager/client/query_proto_wrap.go @@ -214,7 +214,7 @@ func (q Querier) AllPools(ctx sdk.Context, req queryproto.AllPoolsRequest) (*que }, nil } -// SpotPrice returns the spot price of the pool with the given quote and base asset denoms. 18 decimals. +// ListPoolsByDenom return list pools by denom func (q Querier) ListPoolsByDenom(ctx sdk.Context, req queryproto.ListPoolsByDenomRequest) (*queryproto.ListPoolsByDenomResponse, error) { if req.Denom == "" { return nil, status.Error(codes.InvalidArgument, "invalid quote asset denom") diff --git a/x/poolmanager/router.go b/x/poolmanager/router.go index ed8e68d9a00..a4548f100ad 100644 --- a/x/poolmanager/router.go +++ b/x/poolmanager/router.go @@ -548,6 +548,9 @@ func (k Keeper) AllPools( return sortedPools, nil } +// ListPoolsByDenom returns all pools by denom sorted by their ids +// from every pool module registered in the +// pool manager keeper. func (k Keeper) ListPoolsByDenom( ctx sdk.Context, Denom string, From 60cda3acde7f9a97c07d574e5d0825c6efdd1f4b Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=C4=90=C3=B4ng=20Li=E1=BB=81u?= <93205232+DongLieu@users.noreply.github.com> Date: Fri, 27 Oct 2023 12:02:20 +0700 Subject: [PATCH 05/22] Update x/poolmanager/client/query_proto_wrap.go Co-authored-by: Ruslan Akhtariev <46343690+pysel@users.noreply.github.com> --- x/poolmanager/client/query_proto_wrap.go | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/x/poolmanager/client/query_proto_wrap.go b/x/poolmanager/client/query_proto_wrap.go index 45c2b4fbd25..eb1a95bfcca 100644 --- a/x/poolmanager/client/query_proto_wrap.go +++ b/x/poolmanager/client/query_proto_wrap.go @@ -214,7 +214,7 @@ func (q Querier) AllPools(ctx sdk.Context, req queryproto.AllPoolsRequest) (*que }, nil } -// ListPoolsByDenom return list pools by denom +// ListPoolsByDenom returns a list of pools filtered by denom func (q Querier) ListPoolsByDenom(ctx sdk.Context, req queryproto.ListPoolsByDenomRequest) (*queryproto.ListPoolsByDenomResponse, error) { if req.Denom == "" { return nil, status.Error(codes.InvalidArgument, "invalid quote asset denom") From 767245fe20b02293733972c6dc10f9e019994f91 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=C4=90=C3=B4ng=20Li=E1=BB=81u?= <93205232+DongLieu@users.noreply.github.com> Date: Fri, 27 Oct 2023 12:02:40 +0700 Subject: [PATCH 06/22] Update x/poolmanager/client/query_proto_wrap.go Co-authored-by: Ruslan Akhtariev <46343690+pysel@users.noreply.github.com> --- x/poolmanager/client/query_proto_wrap.go | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/x/poolmanager/client/query_proto_wrap.go b/x/poolmanager/client/query_proto_wrap.go index eb1a95bfcca..5425bbde0de 100644 --- a/x/poolmanager/client/query_proto_wrap.go +++ b/x/poolmanager/client/query_proto_wrap.go @@ -217,7 +217,7 @@ func (q Querier) AllPools(ctx sdk.Context, req queryproto.AllPoolsRequest) (*que // ListPoolsByDenom returns a list of pools filtered by denom func (q Querier) ListPoolsByDenom(ctx sdk.Context, req queryproto.ListPoolsByDenomRequest) (*queryproto.ListPoolsByDenomResponse, error) { if req.Denom == "" { - return nil, status.Error(codes.InvalidArgument, "invalid quote asset denom") + return nil, status.Error(codes.InvalidArgument, "invalid denom") } pools, err := q.K.ListPoolsByDenom(ctx, req.Denom) if err != nil { From c7e97b454d7f03bab71b68c1823ce932ec7156ad Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=C4=90=C3=B4ng=20Li=E1=BB=81u?= <93205232+DongLieu@users.noreply.github.com> Date: Fri, 27 Oct 2023 12:04:07 +0700 Subject: [PATCH 07/22] Update x/poolmanager/router.go Co-authored-by: Ruslan Akhtariev <46343690+pysel@users.noreply.github.com> --- x/poolmanager/router.go | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/x/poolmanager/router.go b/x/poolmanager/router.go index a4548f100ad..21541f2749f 100644 --- a/x/poolmanager/router.go +++ b/x/poolmanager/router.go @@ -553,7 +553,7 @@ func (k Keeper) AllPools( // pool manager keeper. func (k Keeper) ListPoolsByDenom( ctx sdk.Context, - Denom string, + denom string, ) ([]types.PoolI, error) { less := func(i, j types.PoolI) bool { return i.GetId() < j.GetId() From b6a1548b180d81959c1cde630dce8704dee310fd Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=C4=90=C3=B4ng=20Li=E1=BB=81u?= <93205232+DongLieu@users.noreply.github.com> Date: Fri, 27 Oct 2023 12:04:29 +0700 Subject: [PATCH 08/22] Update proto/osmosis/poolmanager/v1beta1/query.proto Co-authored-by: Matt, Park <45252226+mattverse@users.noreply.github.com> --- proto/osmosis/poolmanager/v1beta1/query.proto | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/proto/osmosis/poolmanager/v1beta1/query.proto b/proto/osmosis/poolmanager/v1beta1/query.proto index 8f5cd29c291..f837f409775 100644 --- a/proto/osmosis/poolmanager/v1beta1/query.proto +++ b/proto/osmosis/poolmanager/v1beta1/query.proto @@ -91,7 +91,7 @@ service Query { rpc AllPools(AllPoolsRequest) returns (AllPoolsResponse) { option (google.api.http).get = "/osmosis/poolmanager/v1beta1/all-pools"; } - // ListPoolsByDenom return all pools by denom on the Osmosis chain. + // ListPoolsByDenom return all pools by denom rpc ListPoolsByDenom(ListPoolsByDenomRequest) returns (ListPoolsByDenomResponse) { option (google.api.http).get = "/osmosis/poolmanager/v1beta1/list-pools-by-denom"; } From db8ab8669d16dce0d98cea3f9add41cd9fd95815 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=C4=90=C3=B4ng=20Li=E1=BB=81u?= <93205232+DongLieu@users.noreply.github.com> Date: Fri, 27 Oct 2023 12:04:48 +0700 Subject: [PATCH 09/22] Update x/poolmanager/router.go Co-authored-by: Matt, Park <45252226+mattverse@users.noreply.github.com> --- x/poolmanager/router.go | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/x/poolmanager/router.go b/x/poolmanager/router.go index 21541f2749f..e75949d90dc 100644 --- a/x/poolmanager/router.go +++ b/x/poolmanager/router.go @@ -558,7 +558,7 @@ func (k Keeper) ListPoolsByDenom( less := func(i, j types.PoolI) bool { return i.GetId() < j.GetId() } - // Allocate the slice with the exact capacity to avoid reallocations. + // Allocate the slice with the exact capacity to avoid reallocations. poolCount := k.GetNextPoolId(ctx) sortedPools := make([]types.PoolI, 0, poolCount) for _, poolModule := range k.poolModules { From a676097f8d501e64dc25e6c6690b22d90b13ee91 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=C4=90=C3=B4ng=20Li=E1=BB=81u?= <93205232+DongLieu@users.noreply.github.com> Date: Fri, 27 Oct 2023 12:05:24 +0700 Subject: [PATCH 10/22] Update proto/osmosis/poolmanager/v1beta1/query.proto Co-authored-by: Matt, Park <45252226+mattverse@users.noreply.github.com> --- proto/osmosis/poolmanager/v1beta1/query.proto | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/proto/osmosis/poolmanager/v1beta1/query.proto b/proto/osmosis/poolmanager/v1beta1/query.proto index f837f409775..e487d144e40 100644 --- a/proto/osmosis/poolmanager/v1beta1/query.proto +++ b/proto/osmosis/poolmanager/v1beta1/query.proto @@ -242,7 +242,7 @@ message AllPoolsResponse { // ListPoolsByDenomRequest message ListPoolsByDenomRequest { string denom = 1 - [ (gogoproto.moretags) = "yaml:\"base_asset_denom\"" ]; + [ (gogoproto.moretags) = "yaml:\"denom\"" ]; } From d27e288f26b48b8adcdb7e7b3bdc2bf7f4e18f6e Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=C4=90=C3=B4ng=20Li=E1=BB=81u?= <93205232+DongLieu@users.noreply.github.com> Date: Fri, 27 Oct 2023 12:09:18 +0700 Subject: [PATCH 11/22] Update x/poolmanager/router.go Co-authored-by: Matt, Park <45252226+mattverse@users.noreply.github.com> --- x/poolmanager/router.go | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/x/poolmanager/router.go b/x/poolmanager/router.go index e75949d90dc..2241c9e3afc 100644 --- a/x/poolmanager/router.go +++ b/x/poolmanager/router.go @@ -560,7 +560,7 @@ func (k Keeper) ListPoolsByDenom( } // Allocate the slice with the exact capacity to avoid reallocations. poolCount := k.GetNextPoolId(ctx) - sortedPools := make([]types.PoolI, 0, poolCount) + sortedPools := make([]types.PoolI) for _, poolModule := range k.poolModules { currentModulePools, err := poolModule.GetPools(ctx) if err != nil { From ebda3b47102ccc0677617efd486c473355bb6998 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=C4=90=C3=B4ng=20Li=E1=BB=81u?= <93205232+DongLieu@users.noreply.github.com> Date: Fri, 27 Oct 2023 12:12:10 +0700 Subject: [PATCH 12/22] Update x/poolmanager/router.go Co-authored-by: Matt, Park <45252226+mattverse@users.noreply.github.com> --- x/poolmanager/router.go | 3 --- 1 file changed, 3 deletions(-) diff --git a/x/poolmanager/router.go b/x/poolmanager/router.go index 2241c9e3afc..c78c43d1c3f 100644 --- a/x/poolmanager/router.go +++ b/x/poolmanager/router.go @@ -574,9 +574,6 @@ func (k Keeper) ListPoolsByDenom( return nil, err } if coins.AmountOf(Denom).GT(osmomath.ZeroInt()) { - if err != nil { - return nil, err - } poolsByDenom = append(poolsByDenom, pool) } } From 49dcac49bbecbd2bcbef4c8a637350a6e0398c78 Mon Sep 17 00:00:00 2001 From: DongLieu Date: Fri, 27 Oct 2023 12:17:30 +0700 Subject: [PATCH 13/22] minor and lint --- x/poolmanager/router.go | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/x/poolmanager/router.go b/x/poolmanager/router.go index c78c43d1c3f..47c329f69ee 100644 --- a/x/poolmanager/router.go +++ b/x/poolmanager/router.go @@ -560,7 +560,7 @@ func (k Keeper) ListPoolsByDenom( } // Allocate the slice with the exact capacity to avoid reallocations. poolCount := k.GetNextPoolId(ctx) - sortedPools := make([]types.PoolI) + sortedPools := make([]types.PoolI, poolCount) for _, poolModule := range k.poolModules { currentModulePools, err := poolModule.GetPools(ctx) if err != nil { @@ -573,7 +573,7 @@ func (k Keeper) ListPoolsByDenom( if err != nil { return nil, err } - if coins.AmountOf(Denom).GT(osmomath.ZeroInt()) { + if coins.AmountOf(denom).GT(osmomath.ZeroInt()) { poolsByDenom = append(poolsByDenom, pool) } } From 0f5179c2dab22001e714661f61e81fb84f03f595 Mon Sep 17 00:00:00 2001 From: DongLieu Date: Fri, 27 Oct 2023 12:37:25 +0700 Subject: [PATCH 14/22] Use dynamic slice instead of Allocate the slice --- x/poolmanager/router.go | 4 +--- 1 file changed, 1 insertion(+), 3 deletions(-) diff --git a/x/poolmanager/router.go b/x/poolmanager/router.go index 47c329f69ee..4da50c598bc 100644 --- a/x/poolmanager/router.go +++ b/x/poolmanager/router.go @@ -558,9 +558,7 @@ func (k Keeper) ListPoolsByDenom( less := func(i, j types.PoolI) bool { return i.GetId() < j.GetId() } - // Allocate the slice with the exact capacity to avoid reallocations. - poolCount := k.GetNextPoolId(ctx) - sortedPools := make([]types.PoolI, poolCount) + var sortedPools []types.PoolI for _, poolModule := range k.poolModules { currentModulePools, err := poolModule.GetPools(ctx) if err != nil { From 7c4a1145684f3cac8d132709ffbfa2976848fdff Mon Sep 17 00:00:00 2001 From: DongLieu Date: Fri, 27 Oct 2023 12:39:04 +0700 Subject: [PATCH 15/22] changelog --- CHANGELOG.md | 1 + 1 file changed, 1 insertion(+) diff --git a/CHANGELOG.md b/CHANGELOG.md index fc060840be9..1f13ec88b80 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -44,6 +44,7 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0 ### Features +* [#6766](https://github.com/osmosis-labs/osmosis/pull/6766) CLI: Query pool by coin denom * [#6468](https://github.com/osmosis-labs/osmosis/pull/6468) feat: remove osmo multihop discount * [#6420](https://github.com/osmosis-labs/osmosis/pull/6420) feat[CL]: Creates a governance set whitelist of addresses that can bypass the normal pool creation restrictions on concentrated liquidity pools * [#6623](https://github.com/osmosis-labs/osmosis/pull/6420) feat: transfer cl positions to new owner From bd8b379765233301b928352d511c977ccef9ce97 Mon Sep 17 00:00:00 2001 From: DongLieu Date: Fri, 27 Oct 2023 13:44:03 +0700 Subject: [PATCH 16/22] make proto-gen --- go.mod | 1 + go.sum | 4 +- x/poolmanager/client/queryproto/query.pb.go | 1134 ++++++++++--------- 3 files changed, 572 insertions(+), 567 deletions(-) diff --git a/go.mod b/go.mod index a3424397c1a..b94dc102d56 100644 --- a/go.mod +++ b/go.mod @@ -95,6 +95,7 @@ require ( go.uber.org/atomic v1.10.0 // indirect go.uber.org/goleak v1.1.12 // indirect go.uber.org/zap v1.24.0 // indirect + golang.org/x/arch v0.5.0 // indirect google.golang.org/genproto v0.0.0-20230913181813-007df8e322eb // indirect google.golang.org/genproto/googleapis/rpc v0.0.0-20230920204549-e6e6cdab5c13 // indirect ) diff --git a/go.sum b/go.sum index 5b0851711ad..3660c4a917d 100644 --- a/go.sum +++ b/go.sum @@ -966,11 +966,8 @@ github.com/osmosis-labs/go-mutesting v0.0.0-20221208041716-b43bcd97b3b3 h1:Ylmch github.com/osmosis-labs/go-mutesting v0.0.0-20221208041716-b43bcd97b3b3/go.mod h1:lV6KnqXYD/ayTe7310MHtM3I2q8Z6bBfMAi+bhwPYtI= github.com/osmosis-labs/osmosis/osmomath v0.0.7-0.20231014001935-1946419d44eb h1:pXsC6vqGD+pbMGt+fVBHi9XBk/KDQuRZde2fh4s/1+k= github.com/osmosis-labs/osmosis/osmomath v0.0.7-0.20231014001935-1946419d44eb/go.mod h1:jNZ952fypVNMzOsh31LAUS27JbF9naNJGtELxId6ZCg= -github.com/osmosis-labs/osmosis/osmoutils v0.0.7-0.20231011004221-fd24b80f8366 h1:EJDJ88w2Yv5LnlaJw5x53C0k/dp/fnEYOfBYOQiMsTc= -github.com/osmosis-labs/osmosis/osmoutils v0.0.7-0.20231011004221-fd24b80f8366/go.mod h1:Zmyx5zMUBN2KV94booSFn2v8KQcUKeCHqyWpKZ4PRMo= github.com/osmosis-labs/osmosis/osmoutils v0.0.7-0.20231017074304-84e27b5e2aad h1:UcQ/XLz0SqWMrA+BhgDXy9ukD4C+FlN4ULdazZmFOsE= github.com/osmosis-labs/osmosis/osmoutils v0.0.7-0.20231017074304-84e27b5e2aad/go.mod h1:16AXMzbTLkYE5If5VLTA07fV9JNcLFwgf/VoW5sHrtU= -github.com/osmosis-labs/osmosis/v19 v19.0.0 h1:gqcas/XfxtEuZXsWGTO9vNMHiY78Qs09FBQw73djIVM= github.com/osmosis-labs/osmosis/x/epochs v0.0.3-0.20231011004221-fd24b80f8366 h1:E6H0V3MKbSNwo1iXE9Kzatd2M02MgZpS5AiJ6CKK5us= github.com/osmosis-labs/osmosis/x/epochs v0.0.3-0.20231011004221-fd24b80f8366/go.mod h1:vU0IHK5W38dqMeux3MkSaT3MZU6whAkx7vNuxv1IzeU= github.com/osmosis-labs/osmosis/x/ibc-hooks v0.0.9-0.20231014001935-1946419d44eb h1:6lYLEiJERdD+QK925XYyHkvNyvQTghVFufMH5VAQLpg= @@ -1340,6 +1337,7 @@ go.uber.org/zap v1.13.0/go.mod h1:zwrFLgMcdUuIBviXEYEH1YKNaOBnKXsx2IPda5bBwHM= go.uber.org/zap v1.24.0 h1:FiJd5l1UOLj0wCgbSE0rwwXHzEdAZS6hiiSnxJN/D60= go.uber.org/zap v1.24.0/go.mod h1:2kMP+WWQ8aoFoedH3T2sq6iJ2yDWpHbP0f6MQbS9Gkg= golang.org/x/arch v0.5.0 h1:jpGode6huXQxcskEIpOCvrU+tzo81b6+oFLUYXWtH/Y= +golang.org/x/arch v0.5.0/go.mod h1:5om86z9Hs0C8fWVUuoMHwpExlXzs5Tkyp9hOrfG7pp8= golang.org/x/crypto v0.0.0-20170930174604-9419663f5a44/go.mod h1:6SG95UA2DQfeDnfUPMdvaQW0Q7yPrPDi9nlGo2tz2b4= golang.org/x/crypto v0.0.0-20180904163835-0709b304e793/go.mod h1:6SG95UA2DQfeDnfUPMdvaQW0Q7yPrPDi9nlGo2tz2b4= golang.org/x/crypto v0.0.0-20181029021203-45a5f77698d3/go.mod h1:6SG95UA2DQfeDnfUPMdvaQW0Q7yPrPDi9nlGo2tz2b4= diff --git a/x/poolmanager/client/queryproto/query.pb.go b/x/poolmanager/client/queryproto/query.pb.go index f664b2a425f..310ce32e631 100644 --- a/x/poolmanager/client/queryproto/query.pb.go +++ b/x/poolmanager/client/queryproto/query.pb.go @@ -837,6 +837,97 @@ func (m *AllPoolsResponse) GetPools() []*types1.Any { return nil } +// ======================================================= +// ListPoolsByDenomRequest +type ListPoolsByDenomRequest struct { + Denom string `protobuf:"bytes,1,opt,name=denom,proto3" json:"denom,omitempty" yaml:"denom"` +} + +func (m *ListPoolsByDenomRequest) Reset() { *m = ListPoolsByDenomRequest{} } +func (m *ListPoolsByDenomRequest) String() string { return proto.CompactTextString(m) } +func (*ListPoolsByDenomRequest) ProtoMessage() {} +func (*ListPoolsByDenomRequest) Descriptor() ([]byte, []int) { + return fileDescriptor_6256a4106f701b7d, []int{16} +} +func (m *ListPoolsByDenomRequest) XXX_Unmarshal(b []byte) error { + return m.Unmarshal(b) +} +func (m *ListPoolsByDenomRequest) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { + if deterministic { + return xxx_messageInfo_ListPoolsByDenomRequest.Marshal(b, m, deterministic) + } else { + b = b[:cap(b)] + n, err := m.MarshalToSizedBuffer(b) + if err != nil { + return nil, err + } + return b[:n], nil + } +} +func (m *ListPoolsByDenomRequest) XXX_Merge(src proto.Message) { + xxx_messageInfo_ListPoolsByDenomRequest.Merge(m, src) +} +func (m *ListPoolsByDenomRequest) XXX_Size() int { + return m.Size() +} +func (m *ListPoolsByDenomRequest) XXX_DiscardUnknown() { + xxx_messageInfo_ListPoolsByDenomRequest.DiscardUnknown(m) +} + +var xxx_messageInfo_ListPoolsByDenomRequest proto.InternalMessageInfo + +func (m *ListPoolsByDenomRequest) GetDenom() string { + if m != nil { + return m.Denom + } + return "" +} + +type ListPoolsByDenomResponse struct { + Pools []*types1.Any `protobuf:"bytes,1,rep,name=pools,proto3" json:"pools,omitempty"` +} + +func (m *ListPoolsByDenomResponse) Reset() { *m = ListPoolsByDenomResponse{} } +func (m *ListPoolsByDenomResponse) String() string { return proto.CompactTextString(m) } +func (*ListPoolsByDenomResponse) ProtoMessage() {} +func (*ListPoolsByDenomResponse) Descriptor() ([]byte, []int) { + return fileDescriptor_6256a4106f701b7d, []int{17} +} +func (m *ListPoolsByDenomResponse) XXX_Unmarshal(b []byte) error { + return m.Unmarshal(b) +} +func (m *ListPoolsByDenomResponse) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { + if deterministic { + return xxx_messageInfo_ListPoolsByDenomResponse.Marshal(b, m, deterministic) + } else { + b = b[:cap(b)] + n, err := m.MarshalToSizedBuffer(b) + if err != nil { + return nil, err + } + return b[:n], nil + } +} +func (m *ListPoolsByDenomResponse) XXX_Merge(src proto.Message) { + xxx_messageInfo_ListPoolsByDenomResponse.Merge(m, src) +} +func (m *ListPoolsByDenomResponse) XXX_Size() int { + return m.Size() +} +func (m *ListPoolsByDenomResponse) XXX_DiscardUnknown() { + xxx_messageInfo_ListPoolsByDenomResponse.DiscardUnknown(m) +} + +var xxx_messageInfo_ListPoolsByDenomResponse proto.InternalMessageInfo + +func (m *ListPoolsByDenomResponse) GetPools() []*types1.Any { + if m != nil { + return m.Pools + } + return nil +} + +// ========================================================== // SpotPriceRequest defines the gRPC request structure for a SpotPrice // query. type SpotPriceRequest struct { @@ -849,7 +940,7 @@ func (m *SpotPriceRequest) Reset() { *m = SpotPriceRequest{} } func (m *SpotPriceRequest) String() string { return proto.CompactTextString(m) } func (*SpotPriceRequest) ProtoMessage() {} func (*SpotPriceRequest) Descriptor() ([]byte, []int) { - return fileDescriptor_6256a4106f701b7d, []int{16} + return fileDescriptor_6256a4106f701b7d, []int{18} } func (m *SpotPriceRequest) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -910,7 +1001,7 @@ func (m *SpotPriceResponse) Reset() { *m = SpotPriceResponse{} } func (m *SpotPriceResponse) String() string { return proto.CompactTextString(m) } func (*SpotPriceResponse) ProtoMessage() {} func (*SpotPriceResponse) Descriptor() ([]byte, []int) { - return fileDescriptor_6256a4106f701b7d, []int{17} + return fileDescriptor_6256a4106f701b7d, []int{19} } func (m *SpotPriceResponse) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -955,7 +1046,7 @@ func (m *TotalPoolLiquidityRequest) Reset() { *m = TotalPoolLiquidityReq func (m *TotalPoolLiquidityRequest) String() string { return proto.CompactTextString(m) } func (*TotalPoolLiquidityRequest) ProtoMessage() {} func (*TotalPoolLiquidityRequest) Descriptor() ([]byte, []int) { - return fileDescriptor_6256a4106f701b7d, []int{18} + return fileDescriptor_6256a4106f701b7d, []int{20} } func (m *TotalPoolLiquidityRequest) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -999,7 +1090,7 @@ func (m *TotalPoolLiquidityResponse) Reset() { *m = TotalPoolLiquidityRe func (m *TotalPoolLiquidityResponse) String() string { return proto.CompactTextString(m) } func (*TotalPoolLiquidityResponse) ProtoMessage() {} func (*TotalPoolLiquidityResponse) Descriptor() ([]byte, []int) { - return fileDescriptor_6256a4106f701b7d, []int{19} + return fileDescriptor_6256a4106f701b7d, []int{21} } func (m *TotalPoolLiquidityResponse) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -1043,7 +1134,7 @@ func (m *TotalLiquidityRequest) Reset() { *m = TotalLiquidityRequest{} } func (m *TotalLiquidityRequest) String() string { return proto.CompactTextString(m) } func (*TotalLiquidityRequest) ProtoMessage() {} func (*TotalLiquidityRequest) Descriptor() ([]byte, []int) { - return fileDescriptor_6256a4106f701b7d, []int{20} + return fileDescriptor_6256a4106f701b7d, []int{22} } func (m *TotalLiquidityRequest) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -1080,7 +1171,7 @@ func (m *TotalLiquidityResponse) Reset() { *m = TotalLiquidityResponse{} func (m *TotalLiquidityResponse) String() string { return proto.CompactTextString(m) } func (*TotalLiquidityResponse) ProtoMessage() {} func (*TotalLiquidityResponse) Descriptor() ([]byte, []int) { - return fileDescriptor_6256a4106f701b7d, []int{21} + return fileDescriptor_6256a4106f701b7d, []int{23} } func (m *TotalLiquidityResponse) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -1125,7 +1216,7 @@ func (m *TotalVolumeForPoolRequest) Reset() { *m = TotalVolumeForPoolReq func (m *TotalVolumeForPoolRequest) String() string { return proto.CompactTextString(m) } func (*TotalVolumeForPoolRequest) ProtoMessage() {} func (*TotalVolumeForPoolRequest) Descriptor() ([]byte, []int) { - return fileDescriptor_6256a4106f701b7d, []int{22} + return fileDescriptor_6256a4106f701b7d, []int{24} } func (m *TotalVolumeForPoolRequest) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -1169,7 +1260,7 @@ func (m *TotalVolumeForPoolResponse) Reset() { *m = TotalVolumeForPoolRe func (m *TotalVolumeForPoolResponse) String() string { return proto.CompactTextString(m) } func (*TotalVolumeForPoolResponse) ProtoMessage() {} func (*TotalVolumeForPoolResponse) Descriptor() ([]byte, []int) { - return fileDescriptor_6256a4106f701b7d, []int{23} + return fileDescriptor_6256a4106f701b7d, []int{25} } func (m *TotalVolumeForPoolResponse) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -1215,7 +1306,7 @@ func (m *TradingPairTakerFeeRequest) Reset() { *m = TradingPairTakerFeeR func (m *TradingPairTakerFeeRequest) String() string { return proto.CompactTextString(m) } func (*TradingPairTakerFeeRequest) ProtoMessage() {} func (*TradingPairTakerFeeRequest) Descriptor() ([]byte, []int) { - return fileDescriptor_6256a4106f701b7d, []int{24} + return fileDescriptor_6256a4106f701b7d, []int{26} } func (m *TradingPairTakerFeeRequest) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -1266,7 +1357,7 @@ func (m *TradingPairTakerFeeResponse) Reset() { *m = TradingPairTakerFee func (m *TradingPairTakerFeeResponse) String() string { return proto.CompactTextString(m) } func (*TradingPairTakerFeeResponse) ProtoMessage() {} func (*TradingPairTakerFeeResponse) Descriptor() ([]byte, []int) { - return fileDescriptor_6256a4106f701b7d, []int{25} + return fileDescriptor_6256a4106f701b7d, []int{27} } func (m *TradingPairTakerFeeResponse) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -1322,7 +1413,7 @@ func (m *EstimateTradeBasedOnPriceImpactRequest) Reset() { func (m *EstimateTradeBasedOnPriceImpactRequest) String() string { return proto.CompactTextString(m) } func (*EstimateTradeBasedOnPriceImpactRequest) ProtoMessage() {} func (*EstimateTradeBasedOnPriceImpactRequest) Descriptor() ([]byte, []int) { - return fileDescriptor_6256a4106f701b7d, []int{26} + return fileDescriptor_6256a4106f701b7d, []int{28} } func (m *EstimateTradeBasedOnPriceImpactRequest) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -1391,7 +1482,7 @@ func (m *EstimateTradeBasedOnPriceImpactResponse) Reset() { func (m *EstimateTradeBasedOnPriceImpactResponse) String() string { return proto.CompactTextString(m) } func (*EstimateTradeBasedOnPriceImpactResponse) ProtoMessage() {} func (*EstimateTradeBasedOnPriceImpactResponse) Descriptor() ([]byte, []int) { - return fileDescriptor_6256a4106f701b7d, []int{27} + return fileDescriptor_6256a4106f701b7d, []int{29} } func (m *EstimateTradeBasedOnPriceImpactResponse) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -1434,94 +1525,6 @@ func (m *EstimateTradeBasedOnPriceImpactResponse) GetOutputCoin() types2.Coin { return types2.Coin{} } -type ListPoolsByDenomRequest struct { - Denom string `protobuf:"bytes,1,opt,name=denom,proto3" json:"denom,omitempty" yaml:"base_asset_denom"` -} - -func (m *ListPoolsByDenomRequest) Reset() { *m = ListPoolsByDenomRequest{} } -func (m *ListPoolsByDenomRequest) String() string { return proto.CompactTextString(m) } -func (*ListPoolsByDenomRequest) ProtoMessage() {} -func (*ListPoolsByDenomRequest) Descriptor() ([]byte, []int) { - return fileDescriptor_6256a4106f701b7d, []int{28} -} -func (m *ListPoolsByDenomRequest) XXX_Unmarshal(b []byte) error { - return m.Unmarshal(b) -} -func (m *ListPoolsByDenomRequest) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { - if deterministic { - return xxx_messageInfo_ListPoolsByDenomRequest.Marshal(b, m, deterministic) - } else { - b = b[:cap(b)] - n, err := m.MarshalToSizedBuffer(b) - if err != nil { - return nil, err - } - return b[:n], nil - } -} -func (m *ListPoolsByDenomRequest) XXX_Merge(src proto.Message) { - xxx_messageInfo_ListPoolsByDenomRequest.Merge(m, src) -} -func (m *ListPoolsByDenomRequest) XXX_Size() int { - return m.Size() -} -func (m *ListPoolsByDenomRequest) XXX_DiscardUnknown() { - xxx_messageInfo_ListPoolsByDenomRequest.DiscardUnknown(m) -} - -var xxx_messageInfo_ListPoolsByDenomRequest proto.InternalMessageInfo - -func (m *ListPoolsByDenomRequest) GetDenom() string { - if m != nil { - return m.Denom - } - return "" -} - -type ListPoolsByDenomResponse struct { - Pools []*types1.Any `protobuf:"bytes,1,rep,name=pools,proto3" json:"pools,omitempty"` -} - -func (m *ListPoolsByDenomResponse) Reset() { *m = ListPoolsByDenomResponse{} } -func (m *ListPoolsByDenomResponse) String() string { return proto.CompactTextString(m) } -func (*ListPoolsByDenomResponse) ProtoMessage() {} -func (*ListPoolsByDenomResponse) Descriptor() ([]byte, []int) { - return fileDescriptor_6256a4106f701b7d, []int{29} -} -func (m *ListPoolsByDenomResponse) XXX_Unmarshal(b []byte) error { - return m.Unmarshal(b) -} -func (m *ListPoolsByDenomResponse) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { - if deterministic { - return xxx_messageInfo_ListPoolsByDenomResponse.Marshal(b, m, deterministic) - } else { - b = b[:cap(b)] - n, err := m.MarshalToSizedBuffer(b) - if err != nil { - return nil, err - } - return b[:n], nil - } -} -func (m *ListPoolsByDenomResponse) XXX_Merge(src proto.Message) { - xxx_messageInfo_ListPoolsByDenomResponse.Merge(m, src) -} -func (m *ListPoolsByDenomResponse) XXX_Size() int { - return m.Size() -} -func (m *ListPoolsByDenomResponse) XXX_DiscardUnknown() { - xxx_messageInfo_ListPoolsByDenomResponse.DiscardUnknown(m) -} - -var xxx_messageInfo_ListPoolsByDenomResponse proto.InternalMessageInfo - -func (m *ListPoolsByDenomResponse) GetPools() []*types1.Any { - if m != nil { - return m.Pools - } - return nil -} - func init() { proto.RegisterType((*ParamsRequest)(nil), "osmosis.poolmanager.v1beta1.ParamsRequest") proto.RegisterType((*ParamsResponse)(nil), "osmosis.poolmanager.v1beta1.ParamsResponse") @@ -1539,6 +1542,8 @@ func init() { proto.RegisterType((*PoolResponse)(nil), "osmosis.poolmanager.v1beta1.PoolResponse") proto.RegisterType((*AllPoolsRequest)(nil), "osmosis.poolmanager.v1beta1.AllPoolsRequest") proto.RegisterType((*AllPoolsResponse)(nil), "osmosis.poolmanager.v1beta1.AllPoolsResponse") + proto.RegisterType((*ListPoolsByDenomRequest)(nil), "osmosis.poolmanager.v1beta1.ListPoolsByDenomRequest") + proto.RegisterType((*ListPoolsByDenomResponse)(nil), "osmosis.poolmanager.v1beta1.ListPoolsByDenomResponse") proto.RegisterType((*SpotPriceRequest)(nil), "osmosis.poolmanager.v1beta1.SpotPriceRequest") proto.RegisterType((*SpotPriceResponse)(nil), "osmosis.poolmanager.v1beta1.SpotPriceResponse") proto.RegisterType((*TotalPoolLiquidityRequest)(nil), "osmosis.poolmanager.v1beta1.TotalPoolLiquidityRequest") @@ -1551,8 +1556,6 @@ func init() { proto.RegisterType((*TradingPairTakerFeeResponse)(nil), "osmosis.poolmanager.v1beta1.TradingPairTakerFeeResponse") proto.RegisterType((*EstimateTradeBasedOnPriceImpactRequest)(nil), "osmosis.poolmanager.v1beta1.EstimateTradeBasedOnPriceImpactRequest") proto.RegisterType((*EstimateTradeBasedOnPriceImpactResponse)(nil), "osmosis.poolmanager.v1beta1.EstimateTradeBasedOnPriceImpactResponse") - proto.RegisterType((*ListPoolsByDenomRequest)(nil), "osmosis.poolmanager.v1beta1.ListPoolsByDenomRequest") - proto.RegisterType((*ListPoolsByDenomResponse)(nil), "osmosis.poolmanager.v1beta1.ListPoolsByDenomResponse") } func init() { @@ -1560,134 +1563,135 @@ func init() { } var fileDescriptor_6256a4106f701b7d = []byte{ - // 2029 bytes of a gzipped FileDescriptorProto + // 2034 bytes of a gzipped FileDescriptorProto 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xcc, 0x59, 0xcd, 0x73, 0x1b, 0x49, 0x15, 0xcf, 0xc8, 0xb2, 0xd7, 0x7a, 0x8e, 0x6d, 0xa5, 0x13, 0x27, 0xb6, 0x12, 0x2c, 0x6f, 0x67, - 0xc9, 0x7a, 0xe3, 0x78, 0x14, 0xdb, 0x09, 0x09, 0x81, 0xfd, 0xb0, 0x6c, 0x67, 0x23, 0x08, 0xc4, - 0x3b, 0xf1, 0x7e, 0xb0, 0x10, 0xa6, 0xc6, 0x52, 0x47, 0x19, 0xa2, 0x99, 0x51, 0x34, 0x3d, 0x8e, + 0xc9, 0x7a, 0xe3, 0x78, 0x14, 0xdb, 0x09, 0x09, 0x81, 0xfd, 0x90, 0x6c, 0x67, 0x23, 0x08, 0xc4, + 0x3b, 0xf1, 0x7e, 0xb0, 0x10, 0xa6, 0xc6, 0x56, 0x47, 0x19, 0xa2, 0x99, 0x51, 0x34, 0x3d, 0x8e, 0x55, 0xd4, 0x5e, 0xa8, 0xa2, 0xe0, 0x44, 0x2d, 0xec, 0x61, 0x0f, 0x1c, 0x28, 0x0e, 0x5c, 0x76, 0xaf, 0x70, 0xe0, 0x3f, 0x48, 0x6d, 0x15, 0x94, 0xab, 0xe0, 0x40, 0x71, 0x10, 0x54, 0xc2, 0x81, - 0x2a, 0xf6, 0x82, 0xfe, 0x02, 0xaa, 0x3f, 0x66, 0x24, 0x8d, 0xa5, 0xd1, 0x48, 0xf6, 0x81, 0x93, - 0x47, 0xdd, 0xef, 0xeb, 0xf7, 0xeb, 0xf7, 0xba, 0xfb, 0xb5, 0xe1, 0x55, 0xc7, 0xb5, 0x1c, 0xd7, - 0x74, 0x73, 0x55, 0xc7, 0xa9, 0x58, 0x86, 0x6d, 0x94, 0x49, 0x2d, 0xb7, 0xb7, 0xb2, 0x4b, 0xa8, - 0xb1, 0x92, 0x7b, 0xe2, 0x91, 0x5a, 0x5d, 0xad, 0xd6, 0x1c, 0xea, 0xa0, 0xf3, 0x52, 0x50, 0x6d, - 0x13, 0x54, 0xa5, 0x60, 0xe6, 0x4c, 0xd9, 0x29, 0x3b, 0x5c, 0x2e, 0xc7, 0xbe, 0x84, 0x4a, 0xe6, - 0xb5, 0x28, 0xdb, 0x65, 0x62, 0x13, 0x6e, 0x8e, 0x8b, 0xbe, 0x12, 0x25, 0x4a, 0xf7, 0xa5, 0xd4, - 0x95, 0x28, 0x29, 0xf7, 0xa9, 0x51, 0xd5, 0x6b, 0x8e, 0x47, 0x89, 0x94, 0x9e, 0x2f, 0x72, 0xf1, - 0xdc, 0xae, 0xe1, 0x92, 0x40, 0xaa, 0xe8, 0x98, 0xb6, 0x9c, 0xbf, 0xdc, 0x3e, 0xcf, 0xa1, 0x06, - 0x52, 0x55, 0xa3, 0x6c, 0xda, 0x06, 0x35, 0x1d, 0x5f, 0xf6, 0x42, 0xd9, 0x71, 0xca, 0x15, 0x92, - 0x33, 0xaa, 0x66, 0xce, 0xb0, 0x6d, 0x87, 0xf2, 0x49, 0x3f, 0xfa, 0x39, 0x39, 0xcb, 0x7f, 0xed, - 0x7a, 0x0f, 0x73, 0x86, 0x5d, 0xf7, 0xa7, 0x84, 0x13, 0x5d, 0x90, 0x23, 0x7e, 0xc8, 0xa9, 0x6c, - 0x58, 0x8b, 0x9a, 0x16, 0x71, 0xa9, 0x61, 0x55, 0x85, 0x00, 0x9e, 0x86, 0xc9, 0x6d, 0xa3, 0x66, - 0x58, 0xae, 0x46, 0x9e, 0x78, 0xc4, 0xa5, 0xf8, 0x3e, 0x4c, 0xf9, 0x03, 0x6e, 0xd5, 0xb1, 0x5d, - 0x82, 0xd6, 0x61, 0xac, 0xca, 0x47, 0x66, 0x95, 0x05, 0x65, 0x71, 0x62, 0xf5, 0xa2, 0x1a, 0xb1, - 0x4c, 0xaa, 0x50, 0xce, 0x27, 0x9f, 0x35, 0xb2, 0x27, 0x34, 0xa9, 0x88, 0xbf, 0x54, 0x60, 0x61, - 0xcb, 0xa5, 0xa6, 0x65, 0x50, 0x72, 0xff, 0xa9, 0x51, 0xdd, 0xda, 0x37, 0x8a, 0x74, 0xdd, 0x72, - 0x3c, 0x9b, 0x16, 0x6c, 0xe9, 0x19, 0x2d, 0xc1, 0x4b, 0xcc, 0xa0, 0x6e, 0x96, 0x66, 0x13, 0x0b, - 0xca, 0x62, 0x32, 0x8f, 0x9a, 0x8d, 0xec, 0x54, 0xdd, 0xb0, 0x2a, 0xb7, 0xb0, 0x9c, 0xc0, 0xda, - 0x18, 0xfb, 0x2a, 0x94, 0x90, 0x0a, 0xe3, 0xd4, 0x79, 0x4c, 0x6c, 0xdd, 0xb4, 0x67, 0x47, 0x16, - 0x94, 0xc5, 0x54, 0xfe, 0x74, 0xb3, 0x91, 0x9d, 0x16, 0xd2, 0xfe, 0x0c, 0xd6, 0x5e, 0xe2, 0x9f, - 0x05, 0x1b, 0x3d, 0x80, 0x31, 0xbe, 0x6e, 0xee, 0x6c, 0x72, 0x61, 0x64, 0x71, 0x62, 0x55, 0x8d, - 0x04, 0xc1, 0x62, 0x0c, 0xc2, 0x63, 0x6a, 0xf9, 0x19, 0x86, 0xa7, 0xd9, 0xc8, 0x4e, 0x0a, 0x0f, - 0xc2, 0x16, 0xd6, 0xa4, 0xd1, 0x6f, 0x25, 0xc7, 0x95, 0x74, 0x42, 0x1b, 0x73, 0x89, 0x5d, 0x22, - 0x35, 0xfc, 0x59, 0x02, 0x56, 0x7b, 0xc2, 0x7d, 0xdf, 0xa4, 0x8f, 0xb6, 0x6b, 0xa6, 0x65, 0x52, - 0x73, 0x8f, 0xec, 0xd4, 0xab, 0xc4, 0xed, 0x42, 0x80, 0x32, 0x10, 0x01, 0x89, 0x18, 0x04, 0xbc, - 0x09, 0x53, 0x22, 0x56, 0xdd, 0xf7, 0x31, 0xb2, 0x30, 0xb2, 0x98, 0xcc, 0xcf, 0x35, 0x1b, 0xd9, - 0x99, 0x76, 0x50, 0x7a, 0xe0, 0xea, 0xa4, 0x18, 0xd8, 0x16, 0x0e, 0xdf, 0x83, 0xb3, 0x52, 0x40, - 0x58, 0x77, 0x3c, 0xaa, 0x97, 0x88, 0xed, 0x58, 0x9c, 0xd1, 0x54, 0xfe, 0xe5, 0x66, 0x23, 0xfb, - 0x95, 0x0e, 0x43, 0x21, 0x39, 0xac, 0x9d, 0x16, 0x13, 0x3b, 0x6c, 0xfc, 0x9e, 0x47, 0x37, 0xf9, - 0xe8, 0x9f, 0x14, 0xb8, 0x1c, 0x90, 0x65, 0xda, 0xe5, 0x0a, 0x61, 0x0e, 0xe3, 0x64, 0xc9, 0xf1, - 0x93, 0x94, 0x87, 0xe9, 0x30, 0x38, 0x91, 0x5c, 0x99, 0x66, 0x23, 0x7b, 0xb6, 0x5d, 0xad, 0x0d, - 0xd5, 0x24, 0xed, 0xc0, 0xf3, 0x33, 0x05, 0x5e, 0x8e, 0xc8, 0x75, 0x59, 0x54, 0xbb, 0x90, 0x6e, - 0x19, 0x32, 0xf8, 0x2c, 0xc7, 0x93, 0xca, 0xdf, 0x64, 0x99, 0xf6, 0xf7, 0x46, 0x76, 0x46, 0x14, - 0xb2, 0x5b, 0x7a, 0xac, 0x9a, 0x4e, 0xce, 0x32, 0xe8, 0x23, 0xb5, 0x60, 0xd3, 0x66, 0x23, 0x7b, - 0x2e, 0x1c, 0x87, 0x50, 0xc7, 0xda, 0x94, 0x1f, 0x88, 0xf0, 0x86, 0xff, 0xdb, 0x3b, 0x92, 0x7b, - 0x1e, 0x1d, 0xaa, 0xec, 0x7e, 0x18, 0x94, 0xd1, 0x08, 0x2f, 0xa3, 0x5c, 0xcc, 0x32, 0x62, 0xfe, - 0x62, 0xd4, 0x11, 0x5a, 0x81, 0x54, 0x80, 0x6b, 0x36, 0xc9, 0xf9, 0x38, 0xd3, 0x6c, 0x64, 0xd3, - 0x21, 0xc8, 0x58, 0x1b, 0xf7, 0xb1, 0x86, 0x4a, 0xef, 0xf3, 0x04, 0xac, 0xf5, 0xc6, 0x7c, 0x4c, - 0xb5, 0x77, 0xb8, 0x96, 0x12, 0x83, 0xd5, 0xd2, 0x7d, 0x98, 0xe9, 0xa8, 0x11, 0xd3, 0x0e, 0xb2, - 0x8d, 0x95, 0xd2, 0x42, 0xb3, 0x91, 0xbd, 0xd0, 0xa5, 0x94, 0x7c, 0x31, 0xac, 0xa1, 0xb6, 0x4a, - 0x2a, 0xd8, 0x3c, 0xf1, 0x86, 0xe0, 0x0e, 0xff, 0x59, 0x81, 0xa5, 0xbe, 0xb5, 0xd7, 0x3d, 0x57, - 0x62, 0xb1, 0x14, 0x42, 0x27, 0x4a, 0xb0, 0x8d, 0xa5, 0x30, 0xac, 0x93, 0xb4, 0x27, 0xa0, 0x91, - 0x58, 0x80, 0x7e, 0xaa, 0x00, 0x8e, 0x4a, 0x79, 0x59, 0x7d, 0xba, 0x5f, 0xe7, 0xa6, 0xdd, 0x59, - 0x7c, 0x37, 0xfa, 0x15, 0xdf, 0xd9, 0x50, 0xe0, 0x7e, 0xed, 0x4d, 0xca, 0xc8, 0x65, 0xe9, 0x9d, - 0x82, 0xe9, 0xef, 0x7a, 0x16, 0x23, 0x33, 0x38, 0x58, 0xb7, 0x20, 0xdd, 0x1a, 0x92, 0x71, 0xac, - 0x40, 0xca, 0xf6, 0x2c, 0x9e, 0x25, 0xae, 0x64, 0xb4, 0x0d, 0x61, 0x30, 0x85, 0xb5, 0x71, 0x5b, - 0xaa, 0xe2, 0x5b, 0x30, 0xc1, 0x3e, 0x86, 0x59, 0x11, 0xbc, 0x01, 0x27, 0x85, 0xae, 0x74, 0xbf, - 0x06, 0x49, 0x36, 0x23, 0xcf, 0xf5, 0x33, 0xaa, 0xb8, 0x2c, 0xa8, 0xfe, 0x65, 0x41, 0x5d, 0xb7, - 0xeb, 0xf9, 0xd4, 0x17, 0xbf, 0x5f, 0x1e, 0xe5, 0x69, 0xab, 0x71, 0x61, 0x06, 0x6d, 0xbd, 0x52, - 0xe9, 0x80, 0x56, 0x80, 0x74, 0x6b, 0x48, 0xda, 0xbe, 0x0e, 0xa3, 0x3e, 0xac, 0x91, 0x38, 0xc6, - 0x85, 0x34, 0x3e, 0x50, 0x20, 0x7d, 0xbf, 0xea, 0xd0, 0xed, 0x9a, 0x59, 0x24, 0x43, 0xa5, 0xdd, - 0x16, 0xa4, 0xd9, 0x6d, 0x4b, 0x37, 0x5c, 0x97, 0xd0, 0x8e, 0xc4, 0x3b, 0xdf, 0xda, 0x3c, 0xc3, - 0x12, 0x58, 0x9b, 0x62, 0x43, 0xeb, 0x6c, 0x44, 0x24, 0xdf, 0x1d, 0x38, 0xf5, 0xc4, 0x73, 0x68, - 0xa7, 0x1d, 0x91, 0x84, 0x17, 0x9a, 0x8d, 0xec, 0xac, 0xb0, 0x73, 0x48, 0x04, 0x6b, 0xd3, 0x7c, - 0xac, 0x65, 0x09, 0x17, 0xe0, 0x54, 0x1b, 0x22, 0x49, 0xcf, 0x35, 0x00, 0xb7, 0xea, 0x50, 0xbd, - 0xca, 0x46, 0x65, 0xf2, 0xcd, 0x34, 0x1b, 0xd9, 0x53, 0xc2, 0x6e, 0x6b, 0x0e, 0x6b, 0x29, 0xd7, - 0xd7, 0xc6, 0x77, 0x60, 0x6e, 0xc7, 0xa1, 0x06, 0xa7, 0xfa, 0xae, 0xf9, 0xc4, 0x33, 0x4b, 0x26, - 0xad, 0x0f, 0x95, 0x0a, 0xbf, 0x56, 0x20, 0xd3, 0xcd, 0x94, 0x0c, 0xef, 0x23, 0x48, 0x55, 0xfc, - 0x41, 0xb9, 0x82, 0x73, 0xaa, 0xbc, 0x59, 0x32, 0xa2, 0x82, 0x2d, 0x7e, 0xc3, 0x31, 0xed, 0xfc, - 0xa6, 0xdc, 0xd4, 0x65, 0xde, 0x06, 0x9a, 0xf8, 0xb3, 0x7f, 0x64, 0x17, 0xcb, 0x26, 0x7d, 0xe4, - 0xed, 0xaa, 0x45, 0xc7, 0x92, 0x57, 0x53, 0xf9, 0x67, 0xd9, 0x2d, 0x3d, 0xce, 0x51, 0xb6, 0x07, - 0x73, 0x23, 0xae, 0xd6, 0xf2, 0x88, 0xcf, 0xc1, 0x0c, 0x0f, 0x2e, 0x8c, 0x11, 0x7f, 0xaa, 0xc0, - 0xd9, 0xf0, 0xcc, 0xff, 0x47, 0xc8, 0xfe, 0xd2, 0xbc, 0xe7, 0x54, 0x3c, 0x8b, 0xdc, 0x76, 0x6a, - 0x43, 0x57, 0xe9, 0xaf, 0xfc, 0xa5, 0x09, 0x99, 0x92, 0x38, 0x29, 0x8c, 0xed, 0xf1, 0x89, 0xfe, - 0x20, 0xd7, 0x3b, 0x0f, 0x5b, 0xa1, 0x36, 0x18, 0x42, 0xe9, 0x0b, 0xef, 0x41, 0x66, 0xa7, 0x66, - 0x94, 0x4c, 0xbb, 0xbc, 0x6d, 0x98, 0xb5, 0x1d, 0xe3, 0x31, 0xa9, 0xdd, 0x26, 0xed, 0x05, 0xca, - 0xb3, 0x5f, 0xbf, 0x2a, 0x53, 0xb9, 0x0d, 0x9f, 0x9c, 0xc0, 0xda, 0x18, 0xff, 0xba, 0xda, 0x12, - 0x5e, 0x91, 0x75, 0x79, 0x48, 0x78, 0xc5, 0x17, 0x5e, 0xc1, 0x3f, 0x82, 0xf3, 0x5d, 0xfd, 0x4a, - 0x32, 0xbe, 0x0d, 0x29, 0xca, 0xc6, 0xf4, 0x87, 0xc4, 0xaf, 0x22, 0x55, 0x6e, 0xe1, 0x97, 0x62, - 0x60, 0xdc, 0x24, 0x45, 0x6d, 0x9c, 0x4a, 0xa3, 0xf8, 0xaf, 0x09, 0xb8, 0xe4, 0x1f, 0x1e, 0xcc, - 0x29, 0xc9, 0x1b, 0x2e, 0x29, 0xdd, 0xb3, 0x79, 0xed, 0x15, 0xac, 0xaa, 0x51, 0x0c, 0x0e, 0xc2, - 0x6f, 0x42, 0xea, 0x61, 0xcd, 0xb1, 0x74, 0xd6, 0xea, 0xc9, 0xed, 0x33, 0x62, 0x1d, 0x44, 0x33, - 0x34, 0xce, 0x34, 0xd8, 0x6f, 0x84, 0x61, 0x92, 0x3a, 0x5c, 0xb7, 0x7d, 0x7f, 0xd2, 0x26, 0xa8, - 0xc3, 0xa6, 0xc5, 0xfe, 0x73, 0xae, 0x95, 0x32, 0x6c, 0xd7, 0x49, 0x06, 0xfb, 0xdb, 0x07, 0x90, - 0xb6, 0x8c, 0x7d, 0xb1, 0x39, 0xe8, 0x26, 0x8f, 0x4a, 0x9e, 0xf6, 0x83, 0x22, 0x9f, 0xb2, 0x8c, - 0xfd, 0x36, 0x6c, 0xe8, 0x5d, 0x98, 0x22, 0xfb, 0x94, 0xd4, 0x6c, 0xa3, 0x22, 0xf7, 0xa5, 0xd1, - 0xa1, 0xec, 0x4e, 0xfa, 0x56, 0xc4, 0xa6, 0xf5, 0xb9, 0x02, 0xaf, 0xf6, 0xa5, 0x55, 0xae, 0xe7, - 0x1b, 0x00, 0xa6, 0x5d, 0xf5, 0xe8, 0x40, 0xc4, 0xa6, 0xb8, 0x0a, 0x67, 0xf6, 0x2d, 0x98, 0x70, - 0x3c, 0x1a, 0x18, 0x48, 0xc4, 0x33, 0x00, 0x42, 0x87, 0x8d, 0xe0, 0xbb, 0x70, 0xee, 0xae, 0xe9, - 0x52, 0x7e, 0x98, 0xe5, 0xeb, 0x7c, 0x2d, 0xfc, 0x45, 0x5f, 0x81, 0x51, 0xb1, 0x5c, 0x4a, 0xff, - 0xe3, 0x44, 0x48, 0xe2, 0x77, 0x60, 0xf6, 0xb0, 0xb5, 0x23, 0x9d, 0x90, 0xab, 0x9f, 0x5c, 0x80, - 0xd1, 0x77, 0x3c, 0x52, 0xab, 0xa3, 0x5f, 0x28, 0x30, 0x26, 0xda, 0x6d, 0x74, 0x39, 0x46, 0x4f, - 0x2e, 0x61, 0x64, 0x96, 0x62, 0xc9, 0x8a, 0x20, 0xf1, 0xd2, 0x4f, 0xfe, 0xf2, 0xaf, 0x4f, 0x12, - 0x5f, 0x45, 0x17, 0x73, 0x51, 0xef, 0x22, 0x32, 0x8a, 0x7f, 0x2b, 0x30, 0xd7, 0xb3, 0xf5, 0x41, - 0xaf, 0x47, 0xfa, 0xed, 0xf7, 0x3c, 0x90, 0x79, 0x63, 0x58, 0x75, 0x89, 0xe4, 0x2e, 0x47, 0x72, - 0x1b, 0x6d, 0x46, 0x22, 0xf9, 0xb1, 0x2c, 0xba, 0x8f, 0x72, 0x44, 0x5a, 0x14, 0x8f, 0x3e, 0x84, - 0xd9, 0x94, 0xb7, 0x3d, 0xdd, 0xb4, 0xd1, 0x6f, 0x13, 0x6d, 0x37, 0xe7, 0xfe, 0x2d, 0x3e, 0xba, - 0x37, 0x5c, 0xf4, 0x3d, 0x1b, 0x96, 0x23, 0xd3, 0x61, 0x70, 0x3a, 0xbe, 0x8f, 0xbe, 0x77, 0x1c, - 0x74, 0xe8, 0x4f, 0x4d, 0xfa, 0x88, 0xed, 0x19, 0x22, 0x50, 0x9d, 0xef, 0x05, 0xe8, 0xe7, 0x09, - 0xb8, 0x18, 0xa3, 0xb3, 0x47, 0x6f, 0xc7, 0x83, 0xd2, 0xf7, 0x6d, 0xe0, 0xc8, 0x9c, 0x7c, 0xc0, - 0x39, 0xd1, 0xd0, 0xf6, 0xc0, 0x9c, 0xf0, 0xd8, 0x44, 0xb7, 0xd7, 0x35, 0x5d, 0xbe, 0x54, 0x20, - 0xd3, 0xbb, 0x2f, 0x41, 0x43, 0x05, 0xde, 0xea, 0xcb, 0x32, 0x6f, 0x0e, 0xad, 0x2f, 0x91, 0x7f, - 0x87, 0x23, 0x7f, 0x1b, 0x6d, 0x1d, 0x3d, 0x1b, 0x1c, 0x8f, 0xa2, 0xdf, 0x25, 0xe0, 0xca, 0x20, - 0x5d, 0x38, 0xda, 0x1e, 0x12, 0x40, 0xef, 0xfa, 0x38, 0x32, 0x25, 0xbb, 0x9c, 0x92, 0x1f, 0xa0, - 0x0f, 0x8f, 0x85, 0x92, 0xee, 0x15, 0xf2, 0x71, 0x02, 0x5e, 0x89, 0xd3, 0x7f, 0xa3, 0x3b, 0x47, - 0x2b, 0x91, 0xe3, 0x4c, 0x95, 0x07, 0x9c, 0x97, 0xf7, 0xd1, 0xbb, 0x03, 0xf2, 0xc2, 0x58, 0xe8, - 0x53, 0x28, 0x2c, 0x75, 0x3e, 0x55, 0x60, 0xdc, 0xef, 0x93, 0xd1, 0x95, 0xc8, 0x60, 0x43, 0x1d, - 0x76, 0x66, 0x39, 0xa6, 0xb4, 0x04, 0xa2, 0x72, 0x20, 0x8b, 0xe8, 0x52, 0x24, 0x90, 0xa0, 0x09, - 0x47, 0xbf, 0x54, 0x20, 0xc9, 0x2c, 0xa0, 0xc5, 0xe8, 0x03, 0xb4, 0x75, 0xef, 0xcf, 0xbc, 0x16, - 0x43, 0x52, 0x46, 0x73, 0x8d, 0x47, 0xa3, 0xa2, 0x2b, 0x91, 0xd1, 0xf0, 0x48, 0x5a, 0xe4, 0x72, - 0xb6, 0xfc, 0xd6, 0xbb, 0x0f, 0x5b, 0xa1, 0xa6, 0xbd, 0x0f, 0x5b, 0xe1, 0x7e, 0x3e, 0x26, 0x5b, - 0x46, 0xa5, 0xb2, 0x2c, 0xd8, 0xfa, 0xa3, 0x02, 0xe9, 0xf0, 0xd5, 0x07, 0x5d, 0x8b, 0xf4, 0xd9, - 0xe3, 0xde, 0x95, 0xb9, 0x3e, 0xa0, 0x96, 0x8c, 0xf8, 0x26, 0x8f, 0x78, 0x15, 0x5d, 0x8d, 0x8c, - 0xb8, 0x62, 0xba, 0x54, 0x84, 0xbc, 0xbc, 0x5b, 0x5f, 0xe6, 0xb7, 0x36, 0xf4, 0x1b, 0x05, 0x52, - 0x41, 0xcb, 0x8e, 0xa2, 0x89, 0x0a, 0x3f, 0x56, 0x64, 0xd4, 0xb8, 0xe2, 0x32, 0xcc, 0x35, 0x1e, - 0xe6, 0x32, 0x5a, 0xea, 0x1a, 0x66, 0x68, 0xc1, 0x73, 0xfc, 0x5e, 0xee, 0xa2, 0x03, 0x05, 0xd0, - 0xe1, 0xf6, 0x1d, 0x7d, 0x2d, 0xd2, 0x77, 0xcf, 0xa7, 0x83, 0xcc, 0x8d, 0x81, 0xf5, 0x64, 0xf0, - 0x05, 0x1e, 0xfc, 0x06, 0x5a, 0x1f, 0x24, 0x6b, 0x73, 0x94, 0x19, 0x14, 0x9b, 0x40, 0xd0, 0x40, - 0xa3, 0x3f, 0x28, 0x30, 0xd5, 0xd9, 0xda, 0xa3, 0xd5, 0xfe, 0x61, 0x1d, 0x82, 0xb2, 0x36, 0x90, - 0x8e, 0x84, 0x71, 0x8b, 0xc3, 0xb8, 0x86, 0x56, 0x63, 0xc0, 0x10, 0xc1, 0xb7, 0xe2, 0x7e, 0xe6, - 0x2f, 0x45, 0x47, 0xbb, 0x1e, 0x67, 0x29, 0xba, 0x3d, 0x15, 0xc4, 0x59, 0x8a, 0xae, 0xef, 0x02, - 0x78, 0x9d, 0x63, 0xf8, 0x06, 0xfa, 0xfa, 0x10, 0x4b, 0x21, 0x9a, 0x7c, 0xf4, 0x85, 0x02, 0xa7, - 0xbb, 0x74, 0xdb, 0xa8, 0x4f, 0x4c, 0x3d, 0xdf, 0x05, 0x32, 0x37, 0x07, 0x57, 0x94, 0x68, 0xde, - 0xe2, 0x68, 0x6e, 0xa1, 0x9b, 0x71, 0x56, 0x44, 0xd8, 0xd1, 0xab, 0x86, 0x59, 0xd3, 0x79, 0x37, - 0xff, 0x90, 0x10, 0xf4, 0x1f, 0x05, 0xb2, 0x7d, 0xda, 0x4e, 0xb4, 0x11, 0xeb, 0x30, 0x8c, 0x7e, - 0x0b, 0xc8, 0x6c, 0x1e, 0xcd, 0x88, 0x04, 0xfc, 0x3a, 0x07, 0x7c, 0x03, 0x5d, 0x1f, 0xf4, 0x58, - 0xa5, 0xdc, 0xf0, 0x83, 0x67, 0xcf, 0xe7, 0x95, 0x83, 0xe7, 0xf3, 0xca, 0x3f, 0x9f, 0xcf, 0x2b, - 0x1f, 0xbf, 0x98, 0x3f, 0x71, 0xf0, 0x62, 0xfe, 0xc4, 0xdf, 0x5e, 0xcc, 0x9f, 0xf8, 0x70, 0xa3, - 0xad, 0x6b, 0x97, 0xa6, 0x97, 0x2b, 0xc6, 0xae, 0x1b, 0xf8, 0xd9, 0x5b, 0xbd, 0x9a, 0xdb, 0xef, - 0xf0, 0x56, 0xac, 0x98, 0xc4, 0xa6, 0xe2, 0xff, 0xd5, 0xa2, 0x1b, 0x1d, 0xe3, 0x7f, 0xd6, 0xfe, - 0x17, 0x00, 0x00, 0xff, 0xff, 0x53, 0xcc, 0x25, 0x6a, 0xcb, 0x1f, 0x00, 0x00, + 0x2a, 0xf6, 0x82, 0xfe, 0x02, 0xaa, 0x3f, 0x66, 0x24, 0x8d, 0xa5, 0xd1, 0x48, 0xf6, 0x81, 0x53, + 0xe4, 0xee, 0xf7, 0x5e, 0xbf, 0xdf, 0xaf, 0xdf, 0xaf, 0xbb, 0xdf, 0x04, 0x5e, 0x75, 0x5c, 0xcb, + 0x71, 0x4d, 0x37, 0x57, 0x75, 0x9c, 0x8a, 0x65, 0xd8, 0x46, 0x99, 0xd4, 0x72, 0x7b, 0x2b, 0x3b, + 0x84, 0x1a, 0x2b, 0xb9, 0x27, 0x1e, 0xa9, 0xd5, 0xd5, 0x6a, 0xcd, 0xa1, 0x0e, 0x3a, 0x2f, 0x0d, + 0xd5, 0x36, 0x43, 0x55, 0x1a, 0x66, 0xce, 0x94, 0x9d, 0xb2, 0xc3, 0xed, 0x72, 0xec, 0x97, 0x70, + 0xc9, 0xbc, 0x16, 0x15, 0xbb, 0x4c, 0x6c, 0xc2, 0xc3, 0x71, 0xd3, 0x57, 0xa2, 0x4c, 0xe9, 0xbe, + 0xb4, 0xba, 0x12, 0x65, 0xe5, 0x3e, 0x35, 0xaa, 0x7a, 0xcd, 0xf1, 0x28, 0x91, 0xd6, 0xf3, 0xbb, + 0xdc, 0x3c, 0xb7, 0x63, 0xb8, 0x24, 0xb0, 0xda, 0x75, 0x4c, 0x5b, 0xce, 0x5f, 0x6e, 0x9f, 0xe7, + 0x50, 0x03, 0xab, 0xaa, 0x51, 0x36, 0x6d, 0x83, 0x9a, 0x8e, 0x6f, 0x7b, 0xa1, 0xec, 0x38, 0xe5, + 0x0a, 0xc9, 0x19, 0x55, 0x33, 0x67, 0xd8, 0xb6, 0x43, 0xf9, 0xa4, 0x9f, 0xfd, 0x9c, 0x9c, 0xe5, + 0x7f, 0xed, 0x78, 0x0f, 0x73, 0x86, 0x5d, 0xf7, 0xa7, 0xc4, 0x22, 0xba, 0x20, 0x47, 0xfc, 0x21, + 0xa7, 0xb2, 0x61, 0x2f, 0x6a, 0x5a, 0xc4, 0xa5, 0x86, 0x55, 0x15, 0x06, 0x78, 0x1a, 0x26, 0xb7, + 0x8c, 0x9a, 0x61, 0xb9, 0x1a, 0x79, 0xe2, 0x11, 0x97, 0xe2, 0xfb, 0x30, 0xe5, 0x0f, 0xb8, 0x55, + 0xc7, 0x76, 0x09, 0xca, 0xc3, 0x58, 0x95, 0x8f, 0xcc, 0x2a, 0x0b, 0xca, 0xe2, 0xc4, 0xea, 0x45, + 0x35, 0x62, 0x9b, 0x54, 0xe1, 0x5c, 0x48, 0x3e, 0x6b, 0x64, 0x4f, 0x68, 0xd2, 0x11, 0x7f, 0xa9, + 0xc0, 0xc2, 0xa6, 0x4b, 0x4d, 0xcb, 0xa0, 0xe4, 0xfe, 0x53, 0xa3, 0xba, 0xb9, 0x6f, 0xec, 0xd2, + 0xbc, 0xe5, 0x78, 0x36, 0x2d, 0xda, 0x72, 0x65, 0xb4, 0x04, 0x2f, 0xb1, 0x80, 0xba, 0x59, 0x9a, + 0x4d, 0x2c, 0x28, 0x8b, 0xc9, 0x02, 0x6a, 0x36, 0xb2, 0x53, 0x75, 0xc3, 0xaa, 0xdc, 0xc2, 0x72, + 0x02, 0x6b, 0x63, 0xec, 0x57, 0xb1, 0x84, 0x54, 0x18, 0xa7, 0xce, 0x63, 0x62, 0xeb, 0xa6, 0x3d, + 0x3b, 0xb2, 0xa0, 0x2c, 0xa6, 0x0a, 0xa7, 0x9b, 0x8d, 0xec, 0xb4, 0xb0, 0xf6, 0x67, 0xb0, 0xf6, + 0x12, 0xff, 0x59, 0xb4, 0xd1, 0x03, 0x18, 0xe3, 0xfb, 0xe6, 0xce, 0x26, 0x17, 0x46, 0x16, 0x27, + 0x56, 0xd5, 0x48, 0x10, 0x2c, 0xc7, 0x20, 0x3d, 0xe6, 0x56, 0x98, 0x61, 0x78, 0x9a, 0x8d, 0xec, + 0xa4, 0x58, 0x41, 0xc4, 0xc2, 0x9a, 0x0c, 0xfa, 0xad, 0xe4, 0xb8, 0x92, 0x4e, 0x68, 0x63, 0x2e, + 0xb1, 0x4b, 0xa4, 0x86, 0x3f, 0x4b, 0xc0, 0x6a, 0x4f, 0xb8, 0xef, 0x9b, 0xf4, 0xd1, 0x56, 0xcd, + 0xb4, 0x4c, 0x6a, 0xee, 0x91, 0xed, 0x7a, 0x95, 0xb8, 0x5d, 0x08, 0x50, 0x06, 0x22, 0x20, 0x11, + 0x83, 0x80, 0x37, 0x61, 0x4a, 0xe4, 0xaa, 0xfb, 0x6b, 0x8c, 0x2c, 0x8c, 0x2c, 0x26, 0x0b, 0x73, + 0xcd, 0x46, 0x76, 0xa6, 0x1d, 0x94, 0x1e, 0x2c, 0x75, 0x52, 0x0c, 0x6c, 0x89, 0x05, 0xdf, 0x83, + 0xb3, 0xd2, 0x40, 0x44, 0x77, 0x3c, 0xaa, 0x97, 0x88, 0xed, 0x58, 0x9c, 0xd1, 0x54, 0xe1, 0xe5, + 0x66, 0x23, 0xfb, 0x95, 0x8e, 0x40, 0x21, 0x3b, 0xac, 0x9d, 0x16, 0x13, 0xdb, 0x6c, 0xfc, 0x9e, + 0x47, 0x37, 0xf8, 0xe8, 0x9f, 0x14, 0xb8, 0x1c, 0x90, 0x65, 0xda, 0xe5, 0x0a, 0x61, 0x0b, 0xc6, + 0xa9, 0x92, 0xe3, 0x27, 0xa9, 0x00, 0xd3, 0x61, 0x70, 0xa2, 0xb8, 0x32, 0xcd, 0x46, 0xf6, 0x6c, + 0xbb, 0x5b, 0x1b, 0xaa, 0x49, 0xda, 0x81, 0xe7, 0x67, 0x0a, 0xbc, 0x1c, 0x51, 0xeb, 0x52, 0x54, + 0x3b, 0x90, 0x6e, 0x05, 0x32, 0xf8, 0x2c, 0xc7, 0x93, 0x2a, 0xdc, 0x64, 0x95, 0xf6, 0xf7, 0x46, + 0x76, 0x46, 0x08, 0xd9, 0x2d, 0x3d, 0x56, 0x4d, 0x27, 0x67, 0x19, 0xf4, 0x91, 0x5a, 0xb4, 0x69, + 0xb3, 0x91, 0x3d, 0x17, 0xce, 0x43, 0xb8, 0x63, 0x6d, 0xca, 0x4f, 0x44, 0xac, 0x86, 0xff, 0xdb, + 0x3b, 0x93, 0x7b, 0x1e, 0x1d, 0x4a, 0x76, 0x3f, 0x0c, 0x64, 0x34, 0xc2, 0x65, 0x94, 0x8b, 0x29, + 0x23, 0xb6, 0x5e, 0x0c, 0x1d, 0xa1, 0x15, 0x48, 0x05, 0xb8, 0x66, 0x93, 0x9c, 0x8f, 0x33, 0xcd, + 0x46, 0x36, 0x1d, 0x82, 0x8c, 0xb5, 0x71, 0x1f, 0x6b, 0x48, 0x7a, 0x9f, 0x27, 0x60, 0xad, 0x37, + 0xe6, 0x63, 0xd2, 0xde, 0x61, 0x2d, 0x25, 0x06, 0xd3, 0xd2, 0x7d, 0x98, 0xe9, 0xd0, 0x88, 0x69, + 0x07, 0xd5, 0xc6, 0xa4, 0xb4, 0xd0, 0x6c, 0x64, 0x2f, 0x74, 0x91, 0x92, 0x6f, 0x86, 0x35, 0xd4, + 0xa6, 0xa4, 0xa2, 0xcd, 0x0b, 0x6f, 0x08, 0xee, 0xf0, 0x9f, 0x15, 0x58, 0xea, 0xab, 0xbd, 0xee, + 0xb5, 0x12, 0x8b, 0xa5, 0x10, 0x3a, 0x21, 0xc1, 0x36, 0x96, 0xc2, 0xb0, 0x4e, 0xd2, 0x9e, 0x80, + 0x46, 0x62, 0x01, 0xfa, 0xa9, 0x02, 0x38, 0xaa, 0xe4, 0xa5, 0xfa, 0x74, 0x5f, 0xe7, 0xa6, 0xdd, + 0x29, 0xbe, 0x1b, 0xfd, 0xc4, 0x77, 0x36, 0x94, 0xb8, 0xaf, 0xbd, 0x49, 0x99, 0xb9, 0x94, 0xde, + 0x29, 0x98, 0xfe, 0xae, 0x67, 0x31, 0x32, 0x83, 0x8b, 0x75, 0x13, 0xd2, 0xad, 0x21, 0x99, 0xc7, + 0x0a, 0xa4, 0x6c, 0xcf, 0xe2, 0x55, 0xe2, 0x4a, 0x46, 0xdb, 0x10, 0x06, 0x53, 0x58, 0x1b, 0xb7, + 0xa5, 0x2b, 0xbe, 0x05, 0x13, 0xec, 0xc7, 0x30, 0x3b, 0x82, 0xd7, 0xe1, 0xa4, 0xf0, 0x95, 0xcb, + 0xaf, 0x41, 0x92, 0xcd, 0xc8, 0x7b, 0xfd, 0x8c, 0x2a, 0x1e, 0x0b, 0xaa, 0xff, 0x58, 0x50, 0xf3, + 0x76, 0xbd, 0x90, 0xfa, 0xe2, 0xf7, 0xcb, 0xa3, 0xbc, 0x6c, 0x35, 0x6e, 0xcc, 0xa0, 0xe5, 0x2b, + 0x95, 0x0e, 0x68, 0x45, 0x48, 0xb7, 0x86, 0x64, 0xec, 0xeb, 0x30, 0xea, 0xc3, 0x1a, 0x89, 0x13, + 0x5c, 0x58, 0xe3, 0x3c, 0x9c, 0xbb, 0x6b, 0xba, 0x94, 0xc7, 0x2a, 0xd4, 0x79, 0x1d, 0xf8, 0x50, + 0x2f, 0xc1, 0xa8, 0x28, 0x23, 0xb1, 0x55, 0xe9, 0x66, 0x23, 0x7b, 0x52, 0x00, 0x95, 0xd5, 0x23, + 0xa6, 0xf1, 0x3b, 0x30, 0x7b, 0x38, 0xc4, 0xd1, 0xb2, 0x3a, 0x50, 0x20, 0x7d, 0xbf, 0xea, 0xd0, + 0xad, 0x9a, 0xb9, 0x4b, 0x86, 0x12, 0xc3, 0x26, 0xa4, 0xd9, 0x1b, 0x50, 0x37, 0x5c, 0x97, 0xd0, + 0x0e, 0x39, 0x9c, 0x6f, 0x1d, 0xe9, 0x61, 0x0b, 0xac, 0x4d, 0xb1, 0xa1, 0x3c, 0x1b, 0x11, 0x92, + 0xb8, 0x03, 0xa7, 0x9e, 0x78, 0x0e, 0xed, 0x8c, 0x23, 0xa4, 0x71, 0xa1, 0xd9, 0xc8, 0xce, 0x8a, + 0x38, 0x87, 0x4c, 0xb0, 0x36, 0xcd, 0xc7, 0x5a, 0x91, 0x70, 0x11, 0x4e, 0xb5, 0x21, 0x92, 0xf4, + 0x5c, 0x03, 0x70, 0xab, 0x0e, 0xd5, 0xab, 0x6c, 0x54, 0xf2, 0x3c, 0xd3, 0x6c, 0x64, 0x4f, 0x89, + 0xb8, 0xad, 0x39, 0xac, 0xa5, 0x5c, 0xdf, 0x1b, 0xdf, 0x81, 0xb9, 0x6d, 0x87, 0x1a, 0xbc, 0x00, + 0xee, 0x9a, 0x4f, 0x3c, 0xb3, 0x64, 0xd2, 0xfa, 0x50, 0x05, 0xfa, 0x6b, 0x05, 0x32, 0xdd, 0x42, + 0xc9, 0xf4, 0x3e, 0x82, 0x54, 0xc5, 0x1f, 0x94, 0x3b, 0x38, 0xa7, 0xca, 0xf7, 0x2e, 0x23, 0x2a, + 0xb8, 0x78, 0xd6, 0x1d, 0xd3, 0x2e, 0x6c, 0xc8, 0xab, 0x46, 0xaa, 0x29, 0xf0, 0xc4, 0x9f, 0xfd, + 0x23, 0xbb, 0x58, 0x36, 0xe9, 0x23, 0x6f, 0x47, 0xdd, 0x75, 0x2c, 0xf9, 0x60, 0x96, 0xff, 0x2c, + 0xbb, 0xa5, 0xc7, 0x39, 0xca, 0x6e, 0x06, 0x1e, 0xc4, 0xd5, 0x5a, 0x2b, 0xe2, 0x73, 0x30, 0xc3, + 0x93, 0x0b, 0x63, 0xc4, 0x9f, 0x2a, 0x70, 0x36, 0x3c, 0xf3, 0xff, 0x91, 0xb2, 0xbf, 0x35, 0xef, + 0x39, 0x15, 0xcf, 0x22, 0xb7, 0x9d, 0xda, 0xd0, 0x67, 0xc7, 0xaf, 0xfc, 0xad, 0x09, 0x85, 0x92, + 0x38, 0x29, 0x8c, 0xed, 0xf1, 0x89, 0xfe, 0x20, 0xf3, 0x9d, 0x4f, 0x00, 0xe1, 0x36, 0x18, 0x42, + 0xb9, 0x16, 0xde, 0x83, 0xcc, 0x76, 0xcd, 0x28, 0x99, 0x76, 0x79, 0xcb, 0x30, 0x6b, 0xdb, 0xc6, + 0x63, 0x52, 0xbb, 0x4d, 0xda, 0x05, 0xca, 0xab, 0x5f, 0xbf, 0x2a, 0x4b, 0xb9, 0x0d, 0x9f, 0x9c, + 0xc0, 0xda, 0x18, 0xff, 0x75, 0xb5, 0x65, 0xbc, 0x22, 0x75, 0x79, 0xc8, 0x78, 0xc5, 0x37, 0x5e, + 0xc1, 0x3f, 0x82, 0xf3, 0x5d, 0xd7, 0x95, 0x64, 0x7c, 0x1b, 0x52, 0x94, 0x8d, 0xe9, 0x0f, 0x89, + 0xaf, 0x22, 0x55, 0x5e, 0x2c, 0x97, 0x62, 0x60, 0xdc, 0x20, 0xbb, 0xda, 0x38, 0x95, 0x41, 0xf1, + 0x5f, 0x13, 0x70, 0xc9, 0xbf, 0xd2, 0xd8, 0xa2, 0xa4, 0x60, 0xb8, 0xa4, 0x74, 0xcf, 0xe6, 0xda, + 0x2b, 0x5a, 0x55, 0x63, 0x37, 0xb8, 0x9e, 0xbf, 0x09, 0xa9, 0x87, 0x35, 0xc7, 0xd2, 0x59, 0x03, + 0x2a, 0x0f, 0xf5, 0x88, 0x7d, 0x10, 0x2d, 0xda, 0x38, 0xf3, 0x60, 0x7f, 0x23, 0x0c, 0x93, 0xd4, + 0xe1, 0xbe, 0xed, 0xe7, 0x93, 0x36, 0x41, 0x1d, 0x36, 0x2d, 0xce, 0x9f, 0x73, 0xad, 0x92, 0x61, + 0xa7, 0x4e, 0x32, 0x38, 0xdf, 0x3e, 0x80, 0xb4, 0x65, 0xec, 0x8b, 0xc3, 0x41, 0x37, 0x79, 0x56, + 0xf2, 0x0d, 0x32, 0x28, 0xf2, 0x29, 0xcb, 0xd8, 0x6f, 0xc3, 0x86, 0xde, 0x85, 0x29, 0xb2, 0x4f, + 0x49, 0xcd, 0x36, 0x2a, 0xf2, 0x5c, 0x1a, 0x1d, 0x2a, 0xee, 0xa4, 0x1f, 0x45, 0x1c, 0x5a, 0x9f, + 0x2b, 0xf0, 0x6a, 0x5f, 0x5a, 0xe5, 0x7e, 0xbe, 0x01, 0x60, 0xda, 0x55, 0x8f, 0x0e, 0x44, 0x6c, + 0x8a, 0xbb, 0x70, 0x66, 0xdf, 0x82, 0x09, 0xc7, 0xa3, 0x41, 0x80, 0x44, 0xbc, 0x00, 0x20, 0x7c, + 0xd8, 0xc8, 0xea, 0x27, 0x17, 0x60, 0xf4, 0x1d, 0x8f, 0xd4, 0xea, 0xe8, 0x17, 0x0a, 0x8c, 0x89, + 0x1e, 0x1b, 0x5d, 0x8e, 0xd1, 0x88, 0xcb, 0xd2, 0xc8, 0x2c, 0xc5, 0xb2, 0x15, 0x78, 0xf1, 0xd2, + 0x4f, 0xfe, 0xf2, 0xaf, 0x4f, 0x12, 0x5f, 0x45, 0x17, 0x73, 0x51, 0x1f, 0x43, 0x64, 0x16, 0xff, + 0x56, 0x60, 0xae, 0x67, 0xbf, 0x83, 0x5e, 0x8f, 0x5c, 0xb7, 0xdf, 0x37, 0x81, 0xcc, 0x1b, 0xc3, + 0xba, 0x4b, 0x24, 0x77, 0x39, 0x92, 0xdb, 0x68, 0x23, 0x12, 0xc9, 0x8f, 0x65, 0x4d, 0x7f, 0x94, + 0x23, 0x32, 0xa2, 0xf8, 0xd2, 0x43, 0x58, 0x4c, 0xf9, 0xc4, 0xd3, 0x4d, 0x1b, 0xfd, 0x36, 0xd1, + 0xf6, 0x5c, 0xee, 0xdf, 0xd7, 0xa3, 0x7b, 0xc3, 0x65, 0xdf, 0xb3, 0x4b, 0x39, 0x32, 0x1d, 0x06, + 0xa7, 0xe3, 0xfb, 0xe8, 0x7b, 0xc7, 0x41, 0x87, 0xfe, 0xd4, 0xa4, 0x8f, 0x98, 0x24, 0x45, 0xa2, + 0x3a, 0x97, 0x1a, 0xfa, 0x79, 0x02, 0x2e, 0xc6, 0x68, 0xe7, 0xd1, 0xdb, 0xf1, 0xa0, 0xf4, 0xfd, + 0x20, 0x70, 0x64, 0x4e, 0x3e, 0xe0, 0x9c, 0x68, 0x68, 0x6b, 0x60, 0x4e, 0x78, 0x6e, 0xa2, 0xc5, + 0xeb, 0x5a, 0x2e, 0x5f, 0x2a, 0x90, 0xe9, 0xdd, 0x8c, 0xa0, 0xa1, 0x12, 0x6f, 0x35, 0x63, 0x99, + 0x37, 0x87, 0xf6, 0x97, 0xc8, 0xbf, 0xc3, 0x91, 0xbf, 0x8d, 0x36, 0x8f, 0x5e, 0x0d, 0x8e, 0x47, + 0xd1, 0xef, 0x12, 0x70, 0x65, 0x90, 0xd6, 0x1b, 0x6d, 0x0d, 0x09, 0xa0, 0xb7, 0x3e, 0x8e, 0x4c, + 0xc9, 0x0e, 0xa7, 0xe4, 0x07, 0xe8, 0xc3, 0x63, 0xa1, 0xa4, 0xbb, 0x42, 0x3e, 0x4e, 0xc0, 0x2b, + 0x71, 0x9a, 0x6e, 0x74, 0xe7, 0x68, 0x12, 0x39, 0xce, 0x52, 0x79, 0xc0, 0x79, 0x79, 0x1f, 0xbd, + 0x3b, 0x20, 0x2f, 0x8c, 0x85, 0x3e, 0x42, 0x61, 0xa5, 0xf3, 0xa9, 0x02, 0xe3, 0x7e, 0x73, 0x8c, + 0xae, 0x44, 0x26, 0x1b, 0x6a, 0xab, 0x33, 0xcb, 0x31, 0xad, 0x25, 0x10, 0x95, 0x03, 0x59, 0x44, + 0x97, 0x22, 0x81, 0x04, 0x9d, 0x37, 0xfa, 0xa5, 0x02, 0x49, 0x16, 0x01, 0x2d, 0x46, 0x5f, 0xa0, + 0xad, 0x67, 0x75, 0xe6, 0xb5, 0x18, 0x96, 0x32, 0x9b, 0x6b, 0x3c, 0x1b, 0x15, 0x5d, 0x89, 0xcc, + 0x86, 0x67, 0xd2, 0x22, 0x97, 0xb3, 0xe5, 0xf7, 0xdb, 0x7d, 0xd8, 0x0a, 0x75, 0xea, 0x7d, 0xd8, + 0x0a, 0x37, 0xf1, 0x31, 0xd9, 0x32, 0x2a, 0x95, 0x65, 0xc1, 0xd6, 0x1f, 0x15, 0x48, 0x87, 0x7b, + 0x6f, 0x74, 0x2d, 0x72, 0xcd, 0x1e, 0xdd, 0x7e, 0xe6, 0xfa, 0x80, 0x5e, 0x32, 0xe3, 0x9b, 0x3c, + 0xe3, 0x55, 0x74, 0x35, 0x32, 0xe3, 0x8a, 0xe9, 0x52, 0x91, 0xf2, 0xf2, 0x4e, 0x7d, 0x99, 0xbf, + 0x76, 0xd1, 0x6f, 0x14, 0x48, 0x05, 0x1d, 0x31, 0x8a, 0x26, 0x2a, 0xfc, 0x2d, 0x20, 0xa3, 0xc6, + 0x35, 0x97, 0x69, 0xae, 0xf1, 0x34, 0x97, 0xd1, 0x52, 0xd7, 0x34, 0x43, 0x1b, 0x9e, 0xe3, 0xcf, + 0x5e, 0x17, 0x1d, 0x28, 0x80, 0x0e, 0x77, 0xc7, 0xe8, 0x6b, 0x91, 0x6b, 0xf7, 0xec, 0xcc, 0x33, + 0x37, 0x06, 0xf6, 0x93, 0xc9, 0x17, 0x79, 0xf2, 0xeb, 0x28, 0x3f, 0x48, 0xd5, 0xe6, 0x28, 0x0b, + 0x28, 0x0e, 0x81, 0xa0, 0x3f, 0x45, 0x7f, 0x50, 0x60, 0xaa, 0xb3, 0x73, 0x46, 0xab, 0xfd, 0xd3, + 0x3a, 0x04, 0x65, 0x6d, 0x20, 0x1f, 0x09, 0xe3, 0x16, 0x87, 0x71, 0x0d, 0xad, 0xc6, 0x80, 0x21, + 0x92, 0x6f, 0xe5, 0xfd, 0xcc, 0xdf, 0x8a, 0x8e, 0x6e, 0x38, 0xce, 0x56, 0x74, 0xeb, 0xc4, 0xe3, + 0x6c, 0x45, 0xd7, 0xb6, 0x1b, 0xe7, 0x39, 0x86, 0x6f, 0xa0, 0xaf, 0x0f, 0xb1, 0x15, 0xa2, 0x87, + 0x46, 0x5f, 0x28, 0x70, 0xba, 0x4b, 0x33, 0x8b, 0xfa, 0xe4, 0xd4, 0xb3, 0xed, 0xce, 0xdc, 0x1c, + 0xdc, 0x51, 0xa2, 0x79, 0x8b, 0xa3, 0xb9, 0x85, 0x6e, 0xc6, 0xd9, 0x11, 0x11, 0x47, 0xaf, 0x1a, + 0x66, 0x4d, 0xe7, 0xcd, 0xf2, 0x43, 0x42, 0xd0, 0x7f, 0x14, 0xc8, 0xf6, 0xe9, 0xea, 0xd0, 0x7a, + 0xac, 0xcb, 0x30, 0xba, 0xd5, 0xce, 0x6c, 0x1c, 0x2d, 0x88, 0x04, 0xfc, 0x3a, 0x07, 0x7c, 0x03, + 0x5d, 0x1f, 0xf4, 0x5a, 0xa5, 0x3c, 0xf0, 0x83, 0x67, 0xcf, 0xe7, 0x95, 0x83, 0xe7, 0xf3, 0xca, + 0x3f, 0x9f, 0xcf, 0x2b, 0x1f, 0xbf, 0x98, 0x3f, 0x71, 0xf0, 0x62, 0xfe, 0xc4, 0xdf, 0x5e, 0xcc, + 0x9f, 0xf8, 0x70, 0xbd, 0xad, 0x29, 0x96, 0xa1, 0x97, 0x2b, 0xc6, 0x8e, 0x1b, 0xac, 0xb3, 0xb7, + 0x7a, 0x35, 0xb7, 0xdf, 0xb1, 0xda, 0x6e, 0xc5, 0x24, 0x36, 0x15, 0xff, 0x49, 0x2d, 0x3e, 0x87, + 0x8e, 0xf1, 0x7f, 0xd6, 0xfe, 0x17, 0x00, 0x00, 0xff, 0xff, 0x1f, 0x8e, 0xf3, 0xd1, 0xc0, 0x1f, + 0x00, 0x00, } // Reference imports to suppress errors if they are not otherwise used. @@ -1728,6 +1732,7 @@ type QueryClient interface { Pool(ctx context.Context, in *PoolRequest, opts ...grpc.CallOption) (*PoolResponse, error) // AllPools returns all pools on the Osmosis chain sorted by IDs. AllPools(ctx context.Context, in *AllPoolsRequest, opts ...grpc.CallOption) (*AllPoolsResponse, error) + // ListPoolsByDenom return all pools by denom ListPoolsByDenom(ctx context.Context, in *ListPoolsByDenomRequest, opts ...grpc.CallOption) (*ListPoolsByDenomResponse, error) // SpotPrice defines a gRPC query handler that returns the spot price given // a base denomination and a quote denomination. @@ -1935,6 +1940,7 @@ type QueryServer interface { Pool(context.Context, *PoolRequest) (*PoolResponse, error) // AllPools returns all pools on the Osmosis chain sorted by IDs. AllPools(context.Context, *AllPoolsRequest) (*AllPoolsResponse, error) + // ListPoolsByDenom return all pools by denom ListPoolsByDenom(context.Context, *ListPoolsByDenomRequest) (*ListPoolsByDenomResponse, error) // SpotPrice defines a gRPC query handler that returns the spot price given // a base denomination and a quote denomination. @@ -2998,7 +3004,7 @@ func (m *AllPoolsResponse) MarshalToSizedBuffer(dAtA []byte) (int, error) { return len(dAtA) - i, nil } -func (m *SpotPriceRequest) Marshal() (dAtA []byte, err error) { +func (m *ListPoolsByDenomRequest) Marshal() (dAtA []byte, err error) { size := m.Size() dAtA = make([]byte, size) n, err := m.MarshalToSizedBuffer(dAtA[:size]) @@ -3008,39 +3014,27 @@ func (m *SpotPriceRequest) Marshal() (dAtA []byte, err error) { return dAtA[:n], nil } -func (m *SpotPriceRequest) MarshalTo(dAtA []byte) (int, error) { +func (m *ListPoolsByDenomRequest) MarshalTo(dAtA []byte) (int, error) { size := m.Size() return m.MarshalToSizedBuffer(dAtA[:size]) } -func (m *SpotPriceRequest) MarshalToSizedBuffer(dAtA []byte) (int, error) { +func (m *ListPoolsByDenomRequest) MarshalToSizedBuffer(dAtA []byte) (int, error) { i := len(dAtA) _ = i var l int _ = l - if len(m.QuoteAssetDenom) > 0 { - i -= len(m.QuoteAssetDenom) - copy(dAtA[i:], m.QuoteAssetDenom) - i = encodeVarintQuery(dAtA, i, uint64(len(m.QuoteAssetDenom))) - i-- - dAtA[i] = 0x1a - } - if len(m.BaseAssetDenom) > 0 { - i -= len(m.BaseAssetDenom) - copy(dAtA[i:], m.BaseAssetDenom) - i = encodeVarintQuery(dAtA, i, uint64(len(m.BaseAssetDenom))) - i-- - dAtA[i] = 0x12 - } - if m.PoolId != 0 { - i = encodeVarintQuery(dAtA, i, uint64(m.PoolId)) + if len(m.Denom) > 0 { + i -= len(m.Denom) + copy(dAtA[i:], m.Denom) + i = encodeVarintQuery(dAtA, i, uint64(len(m.Denom))) i-- - dAtA[i] = 0x8 + dAtA[i] = 0xa } return len(dAtA) - i, nil } -func (m *SpotPriceResponse) Marshal() (dAtA []byte, err error) { +func (m *ListPoolsByDenomResponse) Marshal() (dAtA []byte, err error) { size := m.Size() dAtA = make([]byte, size) n, err := m.MarshalToSizedBuffer(dAtA[:size]) @@ -3050,27 +3044,106 @@ func (m *SpotPriceResponse) Marshal() (dAtA []byte, err error) { return dAtA[:n], nil } -func (m *SpotPriceResponse) MarshalTo(dAtA []byte) (int, error) { +func (m *ListPoolsByDenomResponse) MarshalTo(dAtA []byte) (int, error) { size := m.Size() return m.MarshalToSizedBuffer(dAtA[:size]) } -func (m *SpotPriceResponse) MarshalToSizedBuffer(dAtA []byte) (int, error) { +func (m *ListPoolsByDenomResponse) MarshalToSizedBuffer(dAtA []byte) (int, error) { i := len(dAtA) _ = i var l int _ = l - if len(m.SpotPrice) > 0 { - i -= len(m.SpotPrice) - copy(dAtA[i:], m.SpotPrice) - i = encodeVarintQuery(dAtA, i, uint64(len(m.SpotPrice))) - i-- - dAtA[i] = 0xa + if len(m.Pools) > 0 { + for iNdEx := len(m.Pools) - 1; iNdEx >= 0; iNdEx-- { + { + size, err := m.Pools[iNdEx].MarshalToSizedBuffer(dAtA[:i]) + if err != nil { + return 0, err + } + i -= size + i = encodeVarintQuery(dAtA, i, uint64(size)) + } + i-- + dAtA[i] = 0xa + } } return len(dAtA) - i, nil } -func (m *TotalPoolLiquidityRequest) Marshal() (dAtA []byte, err error) { +func (m *SpotPriceRequest) Marshal() (dAtA []byte, err error) { + size := m.Size() + dAtA = make([]byte, size) + n, err := m.MarshalToSizedBuffer(dAtA[:size]) + if err != nil { + return nil, err + } + return dAtA[:n], nil +} + +func (m *SpotPriceRequest) MarshalTo(dAtA []byte) (int, error) { + size := m.Size() + return m.MarshalToSizedBuffer(dAtA[:size]) +} + +func (m *SpotPriceRequest) MarshalToSizedBuffer(dAtA []byte) (int, error) { + i := len(dAtA) + _ = i + var l int + _ = l + if len(m.QuoteAssetDenom) > 0 { + i -= len(m.QuoteAssetDenom) + copy(dAtA[i:], m.QuoteAssetDenom) + i = encodeVarintQuery(dAtA, i, uint64(len(m.QuoteAssetDenom))) + i-- + dAtA[i] = 0x1a + } + if len(m.BaseAssetDenom) > 0 { + i -= len(m.BaseAssetDenom) + copy(dAtA[i:], m.BaseAssetDenom) + i = encodeVarintQuery(dAtA, i, uint64(len(m.BaseAssetDenom))) + i-- + dAtA[i] = 0x12 + } + if m.PoolId != 0 { + i = encodeVarintQuery(dAtA, i, uint64(m.PoolId)) + i-- + dAtA[i] = 0x8 + } + return len(dAtA) - i, nil +} + +func (m *SpotPriceResponse) Marshal() (dAtA []byte, err error) { + size := m.Size() + dAtA = make([]byte, size) + n, err := m.MarshalToSizedBuffer(dAtA[:size]) + if err != nil { + return nil, err + } + return dAtA[:n], nil +} + +func (m *SpotPriceResponse) MarshalTo(dAtA []byte) (int, error) { + size := m.Size() + return m.MarshalToSizedBuffer(dAtA[:size]) +} + +func (m *SpotPriceResponse) MarshalToSizedBuffer(dAtA []byte) (int, error) { + i := len(dAtA) + _ = i + var l int + _ = l + if len(m.SpotPrice) > 0 { + i -= len(m.SpotPrice) + copy(dAtA[i:], m.SpotPrice) + i = encodeVarintQuery(dAtA, i, uint64(len(m.SpotPrice))) + i-- + dAtA[i] = 0xa + } + return len(dAtA) - i, nil +} + +func (m *TotalPoolLiquidityRequest) Marshal() (dAtA []byte, err error) { size := m.Size() dAtA = make([]byte, size) n, err := m.MarshalToSizedBuffer(dAtA[:size]) @@ -3438,73 +3511,6 @@ func (m *EstimateTradeBasedOnPriceImpactResponse) MarshalToSizedBuffer(dAtA []by return len(dAtA) - i, nil } -func (m *ListPoolsByDenomRequest) Marshal() (dAtA []byte, err error) { - size := m.Size() - dAtA = make([]byte, size) - n, err := m.MarshalToSizedBuffer(dAtA[:size]) - if err != nil { - return nil, err - } - return dAtA[:n], nil -} - -func (m *ListPoolsByDenomRequest) MarshalTo(dAtA []byte) (int, error) { - size := m.Size() - return m.MarshalToSizedBuffer(dAtA[:size]) -} - -func (m *ListPoolsByDenomRequest) MarshalToSizedBuffer(dAtA []byte) (int, error) { - i := len(dAtA) - _ = i - var l int - _ = l - if len(m.Denom) > 0 { - i -= len(m.Denom) - copy(dAtA[i:], m.Denom) - i = encodeVarintQuery(dAtA, i, uint64(len(m.Denom))) - i-- - dAtA[i] = 0xa - } - return len(dAtA) - i, nil -} - -func (m *ListPoolsByDenomResponse) Marshal() (dAtA []byte, err error) { - size := m.Size() - dAtA = make([]byte, size) - n, err := m.MarshalToSizedBuffer(dAtA[:size]) - if err != nil { - return nil, err - } - return dAtA[:n], nil -} - -func (m *ListPoolsByDenomResponse) MarshalTo(dAtA []byte) (int, error) { - size := m.Size() - return m.MarshalToSizedBuffer(dAtA[:size]) -} - -func (m *ListPoolsByDenomResponse) MarshalToSizedBuffer(dAtA []byte) (int, error) { - i := len(dAtA) - _ = i - var l int - _ = l - if len(m.Pools) > 0 { - for iNdEx := len(m.Pools) - 1; iNdEx >= 0; iNdEx-- { - { - size, err := m.Pools[iNdEx].MarshalToSizedBuffer(dAtA[:i]) - if err != nil { - return 0, err - } - i -= size - i = encodeVarintQuery(dAtA, i, uint64(size)) - } - i-- - dAtA[i] = 0xa - } - } - return len(dAtA) - i, nil -} - func encodeVarintQuery(dAtA []byte, offset int, v uint64) int { offset -= sovQuery(v) base := offset @@ -3770,6 +3776,34 @@ func (m *AllPoolsResponse) Size() (n int) { return n } +func (m *ListPoolsByDenomRequest) Size() (n int) { + if m == nil { + return 0 + } + var l int + _ = l + l = len(m.Denom) + if l > 0 { + n += 1 + l + sovQuery(uint64(l)) + } + return n +} + +func (m *ListPoolsByDenomResponse) Size() (n int) { + if m == nil { + return 0 + } + var l int + _ = l + if len(m.Pools) > 0 { + for _, e := range m.Pools { + l = e.Size() + n += 1 + l + sovQuery(uint64(l)) + } + } + return n +} + func (m *SpotPriceRequest) Size() (n int) { if m == nil { return 0 @@ -3944,34 +3978,6 @@ func (m *EstimateTradeBasedOnPriceImpactResponse) Size() (n int) { return n } -func (m *ListPoolsByDenomRequest) Size() (n int) { - if m == nil { - return 0 - } - var l int - _ = l - l = len(m.Denom) - if l > 0 { - n += 1 + l + sovQuery(uint64(l)) - } - return n -} - -func (m *ListPoolsByDenomResponse) Size() (n int) { - if m == nil { - return 0 - } - var l int - _ = l - if len(m.Pools) > 0 { - for _, e := range m.Pools { - l = e.Size() - n += 1 + l + sovQuery(uint64(l)) - } - } - return n -} - func sovQuery(x uint64) (n int) { return (math_bits.Len64(x|1) + 6) / 7 } @@ -5641,7 +5647,7 @@ func (m *AllPoolsResponse) Unmarshal(dAtA []byte) error { } return nil } -func (m *SpotPriceRequest) Unmarshal(dAtA []byte) error { +func (m *ListPoolsByDenomRequest) Unmarshal(dAtA []byte) error { l := len(dAtA) iNdEx := 0 for iNdEx < l { @@ -5664,34 +5670,15 @@ func (m *SpotPriceRequest) Unmarshal(dAtA []byte) error { fieldNum := int32(wire >> 3) wireType := int(wire & 0x7) if wireType == 4 { - return fmt.Errorf("proto: SpotPriceRequest: wiretype end group for non-group") + return fmt.Errorf("proto: ListPoolsByDenomRequest: wiretype end group for non-group") } if fieldNum <= 0 { - return fmt.Errorf("proto: SpotPriceRequest: illegal tag %d (wire type %d)", fieldNum, wire) + return fmt.Errorf("proto: ListPoolsByDenomRequest: illegal tag %d (wire type %d)", fieldNum, wire) } switch fieldNum { case 1: - if wireType != 0 { - return fmt.Errorf("proto: wrong wireType = %d for field PoolId", wireType) - } - m.PoolId = 0 - for shift := uint(0); ; shift += 7 { - if shift >= 64 { - return ErrIntOverflowQuery - } - if iNdEx >= l { - return io.ErrUnexpectedEOF - } - b := dAtA[iNdEx] - iNdEx++ - m.PoolId |= uint64(b&0x7F) << shift - if b < 0x80 { - break - } - } - case 2: if wireType != 2 { - return fmt.Errorf("proto: wrong wireType = %d for field BaseAssetDenom", wireType) + return fmt.Errorf("proto: wrong wireType = %d for field Denom", wireType) } var stringLen uint64 for shift := uint(0); ; shift += 7 { @@ -5719,34 +5706,219 @@ func (m *SpotPriceRequest) Unmarshal(dAtA []byte) error { if postIndex > l { return io.ErrUnexpectedEOF } - m.BaseAssetDenom = string(dAtA[iNdEx:postIndex]) + m.Denom = string(dAtA[iNdEx:postIndex]) iNdEx = postIndex - case 3: - if wireType != 2 { - return fmt.Errorf("proto: wrong wireType = %d for field QuoteAssetDenom", wireType) - } - var stringLen uint64 - for shift := uint(0); ; shift += 7 { - if shift >= 64 { - return ErrIntOverflowQuery - } - if iNdEx >= l { - return io.ErrUnexpectedEOF - } - b := dAtA[iNdEx] - iNdEx++ - stringLen |= uint64(b&0x7F) << shift - if b < 0x80 { - break - } + default: + iNdEx = preIndex + skippy, err := skipQuery(dAtA[iNdEx:]) + if err != nil { + return err } - intStringLen := int(stringLen) - if intStringLen < 0 { + if (skippy < 0) || (iNdEx+skippy) < 0 { return ErrInvalidLengthQuery } - postIndex := iNdEx + intStringLen - if postIndex < 0 { - return ErrInvalidLengthQuery + if (iNdEx + skippy) > l { + return io.ErrUnexpectedEOF + } + iNdEx += skippy + } + } + + if iNdEx > l { + return io.ErrUnexpectedEOF + } + return nil +} +func (m *ListPoolsByDenomResponse) Unmarshal(dAtA []byte) error { + l := len(dAtA) + iNdEx := 0 + for iNdEx < l { + preIndex := iNdEx + var wire uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowQuery + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + wire |= uint64(b&0x7F) << shift + if b < 0x80 { + break + } + } + fieldNum := int32(wire >> 3) + wireType := int(wire & 0x7) + if wireType == 4 { + return fmt.Errorf("proto: ListPoolsByDenomResponse: wiretype end group for non-group") + } + if fieldNum <= 0 { + return fmt.Errorf("proto: ListPoolsByDenomResponse: illegal tag %d (wire type %d)", fieldNum, wire) + } + switch fieldNum { + case 1: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field Pools", wireType) + } + var msglen int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowQuery + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + msglen |= int(b&0x7F) << shift + if b < 0x80 { + break + } + } + if msglen < 0 { + return ErrInvalidLengthQuery + } + postIndex := iNdEx + msglen + if postIndex < 0 { + return ErrInvalidLengthQuery + } + if postIndex > l { + return io.ErrUnexpectedEOF + } + m.Pools = append(m.Pools, &types1.Any{}) + if err := m.Pools[len(m.Pools)-1].Unmarshal(dAtA[iNdEx:postIndex]); err != nil { + return err + } + iNdEx = postIndex + default: + iNdEx = preIndex + skippy, err := skipQuery(dAtA[iNdEx:]) + if err != nil { + return err + } + if (skippy < 0) || (iNdEx+skippy) < 0 { + return ErrInvalidLengthQuery + } + if (iNdEx + skippy) > l { + return io.ErrUnexpectedEOF + } + iNdEx += skippy + } + } + + if iNdEx > l { + return io.ErrUnexpectedEOF + } + return nil +} +func (m *SpotPriceRequest) Unmarshal(dAtA []byte) error { + l := len(dAtA) + iNdEx := 0 + for iNdEx < l { + preIndex := iNdEx + var wire uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowQuery + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + wire |= uint64(b&0x7F) << shift + if b < 0x80 { + break + } + } + fieldNum := int32(wire >> 3) + wireType := int(wire & 0x7) + if wireType == 4 { + return fmt.Errorf("proto: SpotPriceRequest: wiretype end group for non-group") + } + if fieldNum <= 0 { + return fmt.Errorf("proto: SpotPriceRequest: illegal tag %d (wire type %d)", fieldNum, wire) + } + switch fieldNum { + case 1: + if wireType != 0 { + return fmt.Errorf("proto: wrong wireType = %d for field PoolId", wireType) + } + m.PoolId = 0 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowQuery + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + m.PoolId |= uint64(b&0x7F) << shift + if b < 0x80 { + break + } + } + case 2: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field BaseAssetDenom", wireType) + } + var stringLen uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowQuery + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + stringLen |= uint64(b&0x7F) << shift + if b < 0x80 { + break + } + } + intStringLen := int(stringLen) + if intStringLen < 0 { + return ErrInvalidLengthQuery + } + postIndex := iNdEx + intStringLen + if postIndex < 0 { + return ErrInvalidLengthQuery + } + if postIndex > l { + return io.ErrUnexpectedEOF + } + m.BaseAssetDenom = string(dAtA[iNdEx:postIndex]) + iNdEx = postIndex + case 3: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field QuoteAssetDenom", wireType) + } + var stringLen uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowQuery + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + stringLen |= uint64(b&0x7F) << shift + if b < 0x80 { + break + } + } + intStringLen := int(stringLen) + if intStringLen < 0 { + return ErrInvalidLengthQuery + } + postIndex := iNdEx + intStringLen + if postIndex < 0 { + return ErrInvalidLengthQuery } if postIndex > l { return io.ErrUnexpectedEOF @@ -6812,172 +6984,6 @@ func (m *EstimateTradeBasedOnPriceImpactResponse) Unmarshal(dAtA []byte) error { } return nil } -func (m *ListPoolsByDenomRequest) Unmarshal(dAtA []byte) error { - l := len(dAtA) - iNdEx := 0 - for iNdEx < l { - preIndex := iNdEx - var wire uint64 - for shift := uint(0); ; shift += 7 { - if shift >= 64 { - return ErrIntOverflowQuery - } - if iNdEx >= l { - return io.ErrUnexpectedEOF - } - b := dAtA[iNdEx] - iNdEx++ - wire |= uint64(b&0x7F) << shift - if b < 0x80 { - break - } - } - fieldNum := int32(wire >> 3) - wireType := int(wire & 0x7) - if wireType == 4 { - return fmt.Errorf("proto: ListPoolsByDenomRequest: wiretype end group for non-group") - } - if fieldNum <= 0 { - return fmt.Errorf("proto: ListPoolsByDenomRequest: illegal tag %d (wire type %d)", fieldNum, wire) - } - switch fieldNum { - case 1: - if wireType != 2 { - return fmt.Errorf("proto: wrong wireType = %d for field Denom", wireType) - } - var stringLen uint64 - for shift := uint(0); ; shift += 7 { - if shift >= 64 { - return ErrIntOverflowQuery - } - if iNdEx >= l { - return io.ErrUnexpectedEOF - } - b := dAtA[iNdEx] - iNdEx++ - stringLen |= uint64(b&0x7F) << shift - if b < 0x80 { - break - } - } - intStringLen := int(stringLen) - if intStringLen < 0 { - return ErrInvalidLengthQuery - } - postIndex := iNdEx + intStringLen - if postIndex < 0 { - return ErrInvalidLengthQuery - } - if postIndex > l { - return io.ErrUnexpectedEOF - } - m.Denom = string(dAtA[iNdEx:postIndex]) - iNdEx = postIndex - default: - iNdEx = preIndex - skippy, err := skipQuery(dAtA[iNdEx:]) - if err != nil { - return err - } - if (skippy < 0) || (iNdEx+skippy) < 0 { - return ErrInvalidLengthQuery - } - if (iNdEx + skippy) > l { - return io.ErrUnexpectedEOF - } - iNdEx += skippy - } - } - - if iNdEx > l { - return io.ErrUnexpectedEOF - } - return nil -} -func (m *ListPoolsByDenomResponse) Unmarshal(dAtA []byte) error { - l := len(dAtA) - iNdEx := 0 - for iNdEx < l { - preIndex := iNdEx - var wire uint64 - for shift := uint(0); ; shift += 7 { - if shift >= 64 { - return ErrIntOverflowQuery - } - if iNdEx >= l { - return io.ErrUnexpectedEOF - } - b := dAtA[iNdEx] - iNdEx++ - wire |= uint64(b&0x7F) << shift - if b < 0x80 { - break - } - } - fieldNum := int32(wire >> 3) - wireType := int(wire & 0x7) - if wireType == 4 { - return fmt.Errorf("proto: ListPoolsByDenomResponse: wiretype end group for non-group") - } - if fieldNum <= 0 { - return fmt.Errorf("proto: ListPoolsByDenomResponse: illegal tag %d (wire type %d)", fieldNum, wire) - } - switch fieldNum { - case 1: - if wireType != 2 { - return fmt.Errorf("proto: wrong wireType = %d for field Pools", wireType) - } - var msglen int - for shift := uint(0); ; shift += 7 { - if shift >= 64 { - return ErrIntOverflowQuery - } - if iNdEx >= l { - return io.ErrUnexpectedEOF - } - b := dAtA[iNdEx] - iNdEx++ - msglen |= int(b&0x7F) << shift - if b < 0x80 { - break - } - } - if msglen < 0 { - return ErrInvalidLengthQuery - } - postIndex := iNdEx + msglen - if postIndex < 0 { - return ErrInvalidLengthQuery - } - if postIndex > l { - return io.ErrUnexpectedEOF - } - m.Pools = append(m.Pools, &types1.Any{}) - if err := m.Pools[len(m.Pools)-1].Unmarshal(dAtA[iNdEx:postIndex]); err != nil { - return err - } - iNdEx = postIndex - default: - iNdEx = preIndex - skippy, err := skipQuery(dAtA[iNdEx:]) - if err != nil { - return err - } - if (skippy < 0) || (iNdEx+skippy) < 0 { - return ErrInvalidLengthQuery - } - if (iNdEx + skippy) > l { - return io.ErrUnexpectedEOF - } - iNdEx += skippy - } - } - - if iNdEx > l { - return io.ErrUnexpectedEOF - } - return nil -} func skipQuery(dAtA []byte) (n int, err error) { l := len(dAtA) iNdEx := 0 From e22a2442811fa6bd80908003375a18a685d84122 Mon Sep 17 00:00:00 2001 From: Hieu Vu <72878483+hieuvubk@users.noreply.github.com> Date: Thu, 2 Nov 2023 14:08:51 +0700 Subject: [PATCH 17/22] lint proto --- proto/osmosis/poolmanager/v1beta1/query.proto | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/proto/osmosis/poolmanager/v1beta1/query.proto b/proto/osmosis/poolmanager/v1beta1/query.proto index e487d144e40..03d25dbec6d 100644 --- a/proto/osmosis/poolmanager/v1beta1/query.proto +++ b/proto/osmosis/poolmanager/v1beta1/query.proto @@ -92,8 +92,10 @@ service Query { option (google.api.http).get = "/osmosis/poolmanager/v1beta1/all-pools"; } // ListPoolsByDenom return all pools by denom - rpc ListPoolsByDenom(ListPoolsByDenomRequest) returns (ListPoolsByDenomResponse) { - option (google.api.http).get = "/osmosis/poolmanager/v1beta1/list-pools-by-denom"; + rpc ListPoolsByDenom(ListPoolsByDenomRequest) + returns (ListPoolsByDenomResponse) { + option (google.api.http).get = + "/osmosis/poolmanager/v1beta1/list-pools-by-denom"; } // SpotPrice defines a gRPC query handler that returns the spot price given @@ -241,11 +243,9 @@ message AllPoolsResponse { // ======================================================= // ListPoolsByDenomRequest message ListPoolsByDenomRequest { - string denom = 1 - [ (gogoproto.moretags) = "yaml:\"denom\"" ]; + string denom = 1 [ (gogoproto.moretags) = "yaml:\"denom\"" ]; } - message ListPoolsByDenomResponse { repeated google.protobuf.Any pools = 1 [ (cosmos_proto.accepts_interface) = "PoolI" ]; From 182a26125d3b1a2b0c00343d23669c8322a0981b Mon Sep 17 00:00:00 2001 From: DongLieu Date: Sun, 5 Nov 2023 16:47:42 +0700 Subject: [PATCH 18/22] add test --- x/poolmanager/router_test.go | 79 ++++++++++++++++++++++++++++++++++++ 1 file changed, 79 insertions(+) diff --git a/x/poolmanager/router_test.go b/x/poolmanager/router_test.go index a758eb59431..0c7bad2e8db 100644 --- a/x/poolmanager/router_test.go +++ b/x/poolmanager/router_test.go @@ -3815,3 +3815,82 @@ func (s *KeeperTestSuite) testSwapExactAmpountInVolumeTracked(noTakerFeeVariant totalVolume = s.App.PoolManagerKeeper.GetTotalVolumeForPool(s.Ctx, concentratedPool.GetId()) s.Require().Equal(tokenIn.String(), totalVolume.String()) } + +func (suite *KeeperTestSuite) TestListPoolsByDenom() { + suite.Setup() + + tests := map[string]struct { + denom string + poolCoins []sdk.Coins + expectedNumPools int + expectedError bool + poolType []types.PoolType + }{ + "Single pool, pool contain denom": { + poolType: []types.PoolType{types.Balancer}, + poolCoins: []sdk.Coins{ + sdk.NewCoins(sdk.NewCoin(BAR, defaultInitPoolAmount), sdk.NewCoin(UOSMO, defaultInitPoolAmount)), // pool 1 bar-uosmo + }, + denom: BAR, + expectedNumPools: 1, + }, + "Single pool, pool does not contain denom": { + poolType: []types.PoolType{types.Balancer}, + poolCoins: []sdk.Coins{ + sdk.NewCoins(sdk.NewCoin(BAR, defaultInitPoolAmount), sdk.NewCoin(UOSMO, defaultInitPoolAmount)), // pool 1 bar-uosmo + }, + denom: FOO, + expectedNumPools: 0, + }, + "Tow pools, pools contains denom": { + poolType: []types.PoolType{types.Balancer, types.Balancer}, + poolCoins: []sdk.Coins{ + sdk.NewCoins(sdk.NewCoin(BAR, defaultInitPoolAmount), sdk.NewCoin(UOSMO, defaultInitPoolAmount)), // pool 1 bar-uosmo + sdk.NewCoins(sdk.NewCoin(BAR, defaultInitPoolAmount), sdk.NewCoin(FOO, defaultInitPoolAmount)), // pool 2. baz-foo + }, + denom: BAR, + expectedNumPools: 2, + }, + "Tow pools, pools does not contains denom": { + poolType: []types.PoolType{types.Balancer, types.Balancer}, + poolCoins: []sdk.Coins{ + sdk.NewCoins(sdk.NewCoin(BAR, defaultInitPoolAmount), sdk.NewCoin(UOSMO, defaultInitPoolAmount)), // pool 1 bar-uosmo + sdk.NewCoins(sdk.NewCoin(BAZ, defaultInitPoolAmount), sdk.NewCoin(UOSMO, defaultInitPoolAmount)), // pool 2. baz-foo + }, + denom: FOO, + expectedNumPools: 0, + }, + "Many pools": { + poolType: []types.PoolType{types.Balancer, types.Balancer, types.Balancer, types.Balancer}, + poolCoins: []sdk.Coins{ + sdk.NewCoins(sdk.NewCoin(BAR, defaultInitPoolAmount), sdk.NewCoin(UOSMO, defaultInitPoolAmount)), // pool 1 bar-uosmo + sdk.NewCoins(sdk.NewCoin(BAZ, defaultInitPoolAmount), sdk.NewCoin(FOO, defaultInitPoolAmount)), // pool 2. baz-foo + sdk.NewCoins(sdk.NewCoin(BAR, defaultInitPoolAmount), sdk.NewCoin(BAZ, defaultInitPoolAmount)), // pool 3. bar-baz + sdk.NewCoins(sdk.NewCoin(BAZ, defaultInitPoolAmount), sdk.NewCoin(UOSMO, defaultInitPoolAmount)), // pool 4. baz-uosmo + }, + denom: BAR, + expectedNumPools: 2, + }, + } + + for name, tc := range tests { + suite.Run(name, func() { + suite.SetupTest() + ctx := suite.Ctx + poolManagerKeeper := suite.App.PoolManagerKeeper + + for i := range tc.poolType { + suite.FundAcc(suite.TestAccs[0], tc.poolCoins[i]) + suite.CreatePoolFromTypeWithCoins(tc.poolType[i], tc.poolCoins[i]) + } + + poolsResult, err := poolManagerKeeper.ListPoolsByDenom(ctx, tc.denom) + if tc.expectedError { + suite.Require().Error(err) + } else { + suite.Require().NoError(err) + suite.Require().Equal(tc.expectedNumPools, len(poolsResult)) + } + }) + } +} From 18022fddc9f4ca8a246ed7ad518f5e666925d469 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=C4=90=C3=B4ng=20Li=E1=BB=81u?= <93205232+DongLieu@users.noreply.github.com> Date: Tue, 7 Nov 2023 14:39:59 +0700 Subject: [PATCH 19/22] Update x/poolmanager/router_test.go Co-authored-by: Matt, Park <45252226+mattverse@users.noreply.github.com> --- x/poolmanager/router_test.go | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/x/poolmanager/router_test.go b/x/poolmanager/router_test.go index 0c7bad2e8db..92a57a7a40b 100644 --- a/x/poolmanager/router_test.go +++ b/x/poolmanager/router_test.go @@ -3842,7 +3842,7 @@ func (suite *KeeperTestSuite) TestListPoolsByDenom() { denom: FOO, expectedNumPools: 0, }, - "Tow pools, pools contains denom": { + "Two pools, pools contains denom": { poolType: []types.PoolType{types.Balancer, types.Balancer}, poolCoins: []sdk.Coins{ sdk.NewCoins(sdk.NewCoin(BAR, defaultInitPoolAmount), sdk.NewCoin(UOSMO, defaultInitPoolAmount)), // pool 1 bar-uosmo From dbaee052b93e0030012842bb5be2a1112407d974 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=C4=90=C3=B4ng=20Li=E1=BB=81u?= <93205232+DongLieu@users.noreply.github.com> Date: Tue, 7 Nov 2023 14:40:09 +0700 Subject: [PATCH 20/22] Update x/poolmanager/router_test.go Co-authored-by: Matt, Park <45252226+mattverse@users.noreply.github.com> --- x/poolmanager/router_test.go | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/x/poolmanager/router_test.go b/x/poolmanager/router_test.go index 92a57a7a40b..6c1dd3b417f 100644 --- a/x/poolmanager/router_test.go +++ b/x/poolmanager/router_test.go @@ -3851,7 +3851,7 @@ func (suite *KeeperTestSuite) TestListPoolsByDenom() { denom: BAR, expectedNumPools: 2, }, - "Tow pools, pools does not contains denom": { + "Two pools, pools does not contains denom": { poolType: []types.PoolType{types.Balancer, types.Balancer}, poolCoins: []sdk.Coins{ sdk.NewCoins(sdk.NewCoin(BAR, defaultInitPoolAmount), sdk.NewCoin(UOSMO, defaultInitPoolAmount)), // pool 1 bar-uosmo From 51d4e04b73708f8c7cd8fe3b8d9f39f64cf2a761 Mon Sep 17 00:00:00 2001 From: DongLieu Date: Tue, 7 Nov 2023 15:04:42 +0700 Subject: [PATCH 21/22] make proto-all --- x/poolmanager/client/queryproto/query.pb.go | 256 ++++++++++---------- 1 file changed, 128 insertions(+), 128 deletions(-) diff --git a/x/poolmanager/client/queryproto/query.pb.go b/x/poolmanager/client/queryproto/query.pb.go index f1fb2cc6e28..6250272defd 100644 --- a/x/poolmanager/client/queryproto/query.pb.go +++ b/x/poolmanager/client/queryproto/query.pb.go @@ -1567,135 +1567,135 @@ func init() { } var fileDescriptor_6256a4106f701b7d = []byte{ - // 2034 bytes of a gzipped FileDescriptorProto + // 2046 bytes of a gzipped FileDescriptorProto 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xcc, 0x59, 0xcd, 0x73, 0x1b, 0x49, - 0x15, 0xcf, 0xc8, 0xb2, 0xd7, 0x7a, 0x8e, 0x6d, 0xa5, 0x13, 0x27, 0xb6, 0x12, 0x2c, 0x6f, 0x67, - 0xc9, 0x7a, 0xe3, 0x78, 0x14, 0xdb, 0x09, 0x09, 0x81, 0xfd, 0x90, 0x6c, 0x67, 0x23, 0x08, 0xc4, - 0x3b, 0xf1, 0x7e, 0xb0, 0x10, 0xa6, 0xc6, 0x56, 0x47, 0x19, 0xa2, 0x99, 0x51, 0x34, 0x3d, 0x8e, - 0x55, 0xd4, 0x5e, 0xa8, 0xa2, 0xe0, 0x44, 0x2d, 0xec, 0x61, 0x0f, 0x1c, 0x28, 0x0e, 0x5c, 0x76, - 0xaf, 0x70, 0xe0, 0x3f, 0x48, 0x6d, 0x15, 0x94, 0xab, 0xe0, 0x40, 0x71, 0x10, 0x54, 0xc2, 0x81, - 0x2a, 0xf6, 0x82, 0xfe, 0x02, 0xaa, 0x3f, 0x66, 0x24, 0x8d, 0xa5, 0xd1, 0x48, 0xf6, 0x81, 0x53, - 0xe4, 0xee, 0xf7, 0x5e, 0xbf, 0xdf, 0xaf, 0xdf, 0xaf, 0xbb, 0xdf, 0x04, 0x5e, 0x75, 0x5c, 0xcb, - 0x71, 0x4d, 0x37, 0x57, 0x75, 0x9c, 0x8a, 0x65, 0xd8, 0x46, 0x99, 0xd4, 0x72, 0x7b, 0x2b, 0x3b, - 0x84, 0x1a, 0x2b, 0xb9, 0x27, 0x1e, 0xa9, 0xd5, 0xd5, 0x6a, 0xcd, 0xa1, 0x0e, 0x3a, 0x2f, 0x0d, - 0xd5, 0x36, 0x43, 0x55, 0x1a, 0x66, 0xce, 0x94, 0x9d, 0xb2, 0xc3, 0xed, 0x72, 0xec, 0x97, 0x70, - 0xc9, 0xbc, 0x16, 0x15, 0xbb, 0x4c, 0x6c, 0xc2, 0xc3, 0x71, 0xd3, 0x57, 0xa2, 0x4c, 0xe9, 0xbe, - 0xb4, 0xba, 0x12, 0x65, 0xe5, 0x3e, 0x35, 0xaa, 0x7a, 0xcd, 0xf1, 0x28, 0x91, 0xd6, 0xf3, 0xbb, - 0xdc, 0x3c, 0xb7, 0x63, 0xb8, 0x24, 0xb0, 0xda, 0x75, 0x4c, 0x5b, 0xce, 0x5f, 0x6e, 0x9f, 0xe7, - 0x50, 0x03, 0xab, 0xaa, 0x51, 0x36, 0x6d, 0x83, 0x9a, 0x8e, 0x6f, 0x7b, 0xa1, 0xec, 0x38, 0xe5, - 0x0a, 0xc9, 0x19, 0x55, 0x33, 0x67, 0xd8, 0xb6, 0x43, 0xf9, 0xa4, 0x9f, 0xfd, 0x9c, 0x9c, 0xe5, - 0x7f, 0xed, 0x78, 0x0f, 0x73, 0x86, 0x5d, 0xf7, 0xa7, 0xc4, 0x22, 0xba, 0x20, 0x47, 0xfc, 0x21, - 0xa7, 0xb2, 0x61, 0x2f, 0x6a, 0x5a, 0xc4, 0xa5, 0x86, 0x55, 0x15, 0x06, 0x78, 0x1a, 0x26, 0xb7, - 0x8c, 0x9a, 0x61, 0xb9, 0x1a, 0x79, 0xe2, 0x11, 0x97, 0xe2, 0xfb, 0x30, 0xe5, 0x0f, 0xb8, 0x55, - 0xc7, 0x76, 0x09, 0xca, 0xc3, 0x58, 0x95, 0x8f, 0xcc, 0x2a, 0x0b, 0xca, 0xe2, 0xc4, 0xea, 0x45, - 0x35, 0x62, 0x9b, 0x54, 0xe1, 0x5c, 0x48, 0x3e, 0x6b, 0x64, 0x4f, 0x68, 0xd2, 0x11, 0x7f, 0xa9, - 0xc0, 0xc2, 0xa6, 0x4b, 0x4d, 0xcb, 0xa0, 0xe4, 0xfe, 0x53, 0xa3, 0xba, 0xb9, 0x6f, 0xec, 0xd2, - 0xbc, 0xe5, 0x78, 0x36, 0x2d, 0xda, 0x72, 0x65, 0xb4, 0x04, 0x2f, 0xb1, 0x80, 0xba, 0x59, 0x9a, - 0x4d, 0x2c, 0x28, 0x8b, 0xc9, 0x02, 0x6a, 0x36, 0xb2, 0x53, 0x75, 0xc3, 0xaa, 0xdc, 0xc2, 0x72, - 0x02, 0x6b, 0x63, 0xec, 0x57, 0xb1, 0x84, 0x54, 0x18, 0xa7, 0xce, 0x63, 0x62, 0xeb, 0xa6, 0x3d, - 0x3b, 0xb2, 0xa0, 0x2c, 0xa6, 0x0a, 0xa7, 0x9b, 0x8d, 0xec, 0xb4, 0xb0, 0xf6, 0x67, 0xb0, 0xf6, - 0x12, 0xff, 0x59, 0xb4, 0xd1, 0x03, 0x18, 0xe3, 0xfb, 0xe6, 0xce, 0x26, 0x17, 0x46, 0x16, 0x27, - 0x56, 0xd5, 0x48, 0x10, 0x2c, 0xc7, 0x20, 0x3d, 0xe6, 0x56, 0x98, 0x61, 0x78, 0x9a, 0x8d, 0xec, - 0xa4, 0x58, 0x41, 0xc4, 0xc2, 0x9a, 0x0c, 0xfa, 0xad, 0xe4, 0xb8, 0x92, 0x4e, 0x68, 0x63, 0x2e, - 0xb1, 0x4b, 0xa4, 0x86, 0x3f, 0x4b, 0xc0, 0x6a, 0x4f, 0xb8, 0xef, 0x9b, 0xf4, 0xd1, 0x56, 0xcd, - 0xb4, 0x4c, 0x6a, 0xee, 0x91, 0xed, 0x7a, 0x95, 0xb8, 0x5d, 0x08, 0x50, 0x06, 0x22, 0x20, 0x11, - 0x83, 0x80, 0x37, 0x61, 0x4a, 0xe4, 0xaa, 0xfb, 0x6b, 0x8c, 0x2c, 0x8c, 0x2c, 0x26, 0x0b, 0x73, - 0xcd, 0x46, 0x76, 0xa6, 0x1d, 0x94, 0x1e, 0x2c, 0x75, 0x52, 0x0c, 0x6c, 0x89, 0x05, 0xdf, 0x83, - 0xb3, 0xd2, 0x40, 0x44, 0x77, 0x3c, 0xaa, 0x97, 0x88, 0xed, 0x58, 0x9c, 0xd1, 0x54, 0xe1, 0xe5, - 0x66, 0x23, 0xfb, 0x95, 0x8e, 0x40, 0x21, 0x3b, 0xac, 0x9d, 0x16, 0x13, 0xdb, 0x6c, 0xfc, 0x9e, - 0x47, 0x37, 0xf8, 0xe8, 0x9f, 0x14, 0xb8, 0x1c, 0x90, 0x65, 0xda, 0xe5, 0x0a, 0x61, 0x0b, 0xc6, - 0xa9, 0x92, 0xe3, 0x27, 0xa9, 0x00, 0xd3, 0x61, 0x70, 0xa2, 0xb8, 0x32, 0xcd, 0x46, 0xf6, 0x6c, - 0xbb, 0x5b, 0x1b, 0xaa, 0x49, 0xda, 0x81, 0xe7, 0x67, 0x0a, 0xbc, 0x1c, 0x51, 0xeb, 0x52, 0x54, - 0x3b, 0x90, 0x6e, 0x05, 0x32, 0xf8, 0x2c, 0xc7, 0x93, 0x2a, 0xdc, 0x64, 0x95, 0xf6, 0xf7, 0x46, - 0x76, 0x46, 0x08, 0xd9, 0x2d, 0x3d, 0x56, 0x4d, 0x27, 0x67, 0x19, 0xf4, 0x91, 0x5a, 0xb4, 0x69, - 0xb3, 0x91, 0x3d, 0x17, 0xce, 0x43, 0xb8, 0x63, 0x6d, 0xca, 0x4f, 0x44, 0xac, 0x86, 0xff, 0xdb, - 0x3b, 0x93, 0x7b, 0x1e, 0x1d, 0x4a, 0x76, 0x3f, 0x0c, 0x64, 0x34, 0xc2, 0x65, 0x94, 0x8b, 0x29, - 0x23, 0xb6, 0x5e, 0x0c, 0x1d, 0xa1, 0x15, 0x48, 0x05, 0xb8, 0x66, 0x93, 0x9c, 0x8f, 0x33, 0xcd, - 0x46, 0x36, 0x1d, 0x82, 0x8c, 0xb5, 0x71, 0x1f, 0x6b, 0x48, 0x7a, 0x9f, 0x27, 0x60, 0xad, 0x37, - 0xe6, 0x63, 0xd2, 0xde, 0x61, 0x2d, 0x25, 0x06, 0xd3, 0xd2, 0x7d, 0x98, 0xe9, 0xd0, 0x88, 0x69, - 0x07, 0xd5, 0xc6, 0xa4, 0xb4, 0xd0, 0x6c, 0x64, 0x2f, 0x74, 0x91, 0x92, 0x6f, 0x86, 0x35, 0xd4, - 0xa6, 0xa4, 0xa2, 0xcd, 0x0b, 0x6f, 0x08, 0xee, 0xf0, 0x9f, 0x15, 0x58, 0xea, 0xab, 0xbd, 0xee, - 0xb5, 0x12, 0x8b, 0xa5, 0x10, 0x3a, 0x21, 0xc1, 0x36, 0x96, 0xc2, 0xb0, 0x4e, 0xd2, 0x9e, 0x80, - 0x46, 0x62, 0x01, 0xfa, 0xa9, 0x02, 0x38, 0xaa, 0xe4, 0xa5, 0xfa, 0x74, 0x5f, 0xe7, 0xa6, 0xdd, - 0x29, 0xbe, 0x1b, 0xfd, 0xc4, 0x77, 0x36, 0x94, 0xb8, 0xaf, 0xbd, 0x49, 0x99, 0xb9, 0x94, 0xde, - 0x29, 0x98, 0xfe, 0xae, 0x67, 0x31, 0x32, 0x83, 0x8b, 0x75, 0x13, 0xd2, 0xad, 0x21, 0x99, 0xc7, - 0x0a, 0xa4, 0x6c, 0xcf, 0xe2, 0x55, 0xe2, 0x4a, 0x46, 0xdb, 0x10, 0x06, 0x53, 0x58, 0x1b, 0xb7, - 0xa5, 0x2b, 0xbe, 0x05, 0x13, 0xec, 0xc7, 0x30, 0x3b, 0x82, 0xd7, 0xe1, 0xa4, 0xf0, 0x95, 0xcb, - 0xaf, 0x41, 0x92, 0xcd, 0xc8, 0x7b, 0xfd, 0x8c, 0x2a, 0x1e, 0x0b, 0xaa, 0xff, 0x58, 0x50, 0xf3, - 0x76, 0xbd, 0x90, 0xfa, 0xe2, 0xf7, 0xcb, 0xa3, 0xbc, 0x6c, 0x35, 0x6e, 0xcc, 0xa0, 0xe5, 0x2b, - 0x95, 0x0e, 0x68, 0x45, 0x48, 0xb7, 0x86, 0x64, 0xec, 0xeb, 0x30, 0xea, 0xc3, 0x1a, 0x89, 0x13, - 0x5c, 0x58, 0xe3, 0x3c, 0x9c, 0xbb, 0x6b, 0xba, 0x94, 0xc7, 0x2a, 0xd4, 0x79, 0x1d, 0xf8, 0x50, - 0x2f, 0xc1, 0xa8, 0x28, 0x23, 0xb1, 0x55, 0xe9, 0x66, 0x23, 0x7b, 0x52, 0x00, 0x95, 0xd5, 0x23, - 0xa6, 0xf1, 0x3b, 0x30, 0x7b, 0x38, 0xc4, 0xd1, 0xb2, 0x3a, 0x50, 0x20, 0x7d, 0xbf, 0xea, 0xd0, - 0xad, 0x9a, 0xb9, 0x4b, 0x86, 0x12, 0xc3, 0x26, 0xa4, 0xd9, 0x1b, 0x50, 0x37, 0x5c, 0x97, 0xd0, - 0x0e, 0x39, 0x9c, 0x6f, 0x1d, 0xe9, 0x61, 0x0b, 0xac, 0x4d, 0xb1, 0xa1, 0x3c, 0x1b, 0x11, 0x92, - 0xb8, 0x03, 0xa7, 0x9e, 0x78, 0x0e, 0xed, 0x8c, 0x23, 0xa4, 0x71, 0xa1, 0xd9, 0xc8, 0xce, 0x8a, - 0x38, 0x87, 0x4c, 0xb0, 0x36, 0xcd, 0xc7, 0x5a, 0x91, 0x70, 0x11, 0x4e, 0xb5, 0x21, 0x92, 0xf4, - 0x5c, 0x03, 0x70, 0xab, 0x0e, 0xd5, 0xab, 0x6c, 0x54, 0xf2, 0x3c, 0xd3, 0x6c, 0x64, 0x4f, 0x89, - 0xb8, 0xad, 0x39, 0xac, 0xa5, 0x5c, 0xdf, 0x1b, 0xdf, 0x81, 0xb9, 0x6d, 0x87, 0x1a, 0xbc, 0x00, - 0xee, 0x9a, 0x4f, 0x3c, 0xb3, 0x64, 0xd2, 0xfa, 0x50, 0x05, 0xfa, 0x6b, 0x05, 0x32, 0xdd, 0x42, - 0xc9, 0xf4, 0x3e, 0x82, 0x54, 0xc5, 0x1f, 0x94, 0x3b, 0x38, 0xa7, 0xca, 0xf7, 0x2e, 0x23, 0x2a, - 0xb8, 0x78, 0xd6, 0x1d, 0xd3, 0x2e, 0x6c, 0xc8, 0xab, 0x46, 0xaa, 0x29, 0xf0, 0xc4, 0x9f, 0xfd, - 0x23, 0xbb, 0x58, 0x36, 0xe9, 0x23, 0x6f, 0x47, 0xdd, 0x75, 0x2c, 0xf9, 0x60, 0x96, 0xff, 0x2c, - 0xbb, 0xa5, 0xc7, 0x39, 0xca, 0x6e, 0x06, 0x1e, 0xc4, 0xd5, 0x5a, 0x2b, 0xe2, 0x73, 0x30, 0xc3, - 0x93, 0x0b, 0x63, 0xc4, 0x9f, 0x2a, 0x70, 0x36, 0x3c, 0xf3, 0xff, 0x91, 0xb2, 0xbf, 0x35, 0xef, - 0x39, 0x15, 0xcf, 0x22, 0xb7, 0x9d, 0xda, 0xd0, 0x67, 0xc7, 0xaf, 0xfc, 0xad, 0x09, 0x85, 0x92, - 0x38, 0x29, 0x8c, 0xed, 0xf1, 0x89, 0xfe, 0x20, 0xf3, 0x9d, 0x4f, 0x00, 0xe1, 0x36, 0x18, 0x42, - 0xb9, 0x16, 0xde, 0x83, 0xcc, 0x76, 0xcd, 0x28, 0x99, 0x76, 0x79, 0xcb, 0x30, 0x6b, 0xdb, 0xc6, - 0x63, 0x52, 0xbb, 0x4d, 0xda, 0x05, 0xca, 0xab, 0x5f, 0xbf, 0x2a, 0x4b, 0xb9, 0x0d, 0x9f, 0x9c, - 0xc0, 0xda, 0x18, 0xff, 0x75, 0xb5, 0x65, 0xbc, 0x22, 0x75, 0x79, 0xc8, 0x78, 0xc5, 0x37, 0x5e, - 0xc1, 0x3f, 0x82, 0xf3, 0x5d, 0xd7, 0x95, 0x64, 0x7c, 0x1b, 0x52, 0x94, 0x8d, 0xe9, 0x0f, 0x89, - 0xaf, 0x22, 0x55, 0x5e, 0x2c, 0x97, 0x62, 0x60, 0xdc, 0x20, 0xbb, 0xda, 0x38, 0x95, 0x41, 0xf1, - 0x5f, 0x13, 0x70, 0xc9, 0xbf, 0xd2, 0xd8, 0xa2, 0xa4, 0x60, 0xb8, 0xa4, 0x74, 0xcf, 0xe6, 0xda, - 0x2b, 0x5a, 0x55, 0x63, 0x37, 0xb8, 0x9e, 0xbf, 0x09, 0xa9, 0x87, 0x35, 0xc7, 0xd2, 0x59, 0x03, - 0x2a, 0x0f, 0xf5, 0x88, 0x7d, 0x10, 0x2d, 0xda, 0x38, 0xf3, 0x60, 0x7f, 0x23, 0x0c, 0x93, 0xd4, - 0xe1, 0xbe, 0xed, 0xe7, 0x93, 0x36, 0x41, 0x1d, 0x36, 0x2d, 0xce, 0x9f, 0x73, 0xad, 0x92, 0x61, - 0xa7, 0x4e, 0x32, 0x38, 0xdf, 0x3e, 0x80, 0xb4, 0x65, 0xec, 0x8b, 0xc3, 0x41, 0x37, 0x79, 0x56, - 0xf2, 0x0d, 0x32, 0x28, 0xf2, 0x29, 0xcb, 0xd8, 0x6f, 0xc3, 0x86, 0xde, 0x85, 0x29, 0xb2, 0x4f, - 0x49, 0xcd, 0x36, 0x2a, 0xf2, 0x5c, 0x1a, 0x1d, 0x2a, 0xee, 0xa4, 0x1f, 0x45, 0x1c, 0x5a, 0x9f, - 0x2b, 0xf0, 0x6a, 0x5f, 0x5a, 0xe5, 0x7e, 0xbe, 0x01, 0x60, 0xda, 0x55, 0x8f, 0x0e, 0x44, 0x6c, - 0x8a, 0xbb, 0x70, 0x66, 0xdf, 0x82, 0x09, 0xc7, 0xa3, 0x41, 0x80, 0x44, 0xbc, 0x00, 0x20, 0x7c, - 0xd8, 0xc8, 0xea, 0x27, 0x17, 0x60, 0xf4, 0x1d, 0x8f, 0xd4, 0xea, 0xe8, 0x17, 0x0a, 0x8c, 0x89, - 0x1e, 0x1b, 0x5d, 0x8e, 0xd1, 0x88, 0xcb, 0xd2, 0xc8, 0x2c, 0xc5, 0xb2, 0x15, 0x78, 0xf1, 0xd2, - 0x4f, 0xfe, 0xf2, 0xaf, 0x4f, 0x12, 0x5f, 0x45, 0x17, 0x73, 0x51, 0x1f, 0x43, 0x64, 0x16, 0xff, - 0x56, 0x60, 0xae, 0x67, 0xbf, 0x83, 0x5e, 0x8f, 0x5c, 0xb7, 0xdf, 0x37, 0x81, 0xcc, 0x1b, 0xc3, - 0xba, 0x4b, 0x24, 0x77, 0x39, 0x92, 0xdb, 0x68, 0x23, 0x12, 0xc9, 0x8f, 0x65, 0x4d, 0x7f, 0x94, - 0x23, 0x32, 0xa2, 0xf8, 0xd2, 0x43, 0x58, 0x4c, 0xf9, 0xc4, 0xd3, 0x4d, 0x1b, 0xfd, 0x36, 0xd1, - 0xf6, 0x5c, 0xee, 0xdf, 0xd7, 0xa3, 0x7b, 0xc3, 0x65, 0xdf, 0xb3, 0x4b, 0x39, 0x32, 0x1d, 0x06, - 0xa7, 0xe3, 0xfb, 0xe8, 0x7b, 0xc7, 0x41, 0x87, 0xfe, 0xd4, 0xa4, 0x8f, 0x98, 0x24, 0x45, 0xa2, - 0x3a, 0x97, 0x1a, 0xfa, 0x79, 0x02, 0x2e, 0xc6, 0x68, 0xe7, 0xd1, 0xdb, 0xf1, 0xa0, 0xf4, 0xfd, - 0x20, 0x70, 0x64, 0x4e, 0x3e, 0xe0, 0x9c, 0x68, 0x68, 0x6b, 0x60, 0x4e, 0x78, 0x6e, 0xa2, 0xc5, - 0xeb, 0x5a, 0x2e, 0x5f, 0x2a, 0x90, 0xe9, 0xdd, 0x8c, 0xa0, 0xa1, 0x12, 0x6f, 0x35, 0x63, 0x99, - 0x37, 0x87, 0xf6, 0x97, 0xc8, 0xbf, 0xc3, 0x91, 0xbf, 0x8d, 0x36, 0x8f, 0x5e, 0x0d, 0x8e, 0x47, - 0xd1, 0xef, 0x12, 0x70, 0x65, 0x90, 0xd6, 0x1b, 0x6d, 0x0d, 0x09, 0xa0, 0xb7, 0x3e, 0x8e, 0x4c, - 0xc9, 0x0e, 0xa7, 0xe4, 0x07, 0xe8, 0xc3, 0x63, 0xa1, 0xa4, 0xbb, 0x42, 0x3e, 0x4e, 0xc0, 0x2b, - 0x71, 0x9a, 0x6e, 0x74, 0xe7, 0x68, 0x12, 0x39, 0xce, 0x52, 0x79, 0xc0, 0x79, 0x79, 0x1f, 0xbd, - 0x3b, 0x20, 0x2f, 0x8c, 0x85, 0x3e, 0x42, 0x61, 0xa5, 0xf3, 0xa9, 0x02, 0xe3, 0x7e, 0x73, 0x8c, - 0xae, 0x44, 0x26, 0x1b, 0x6a, 0xab, 0x33, 0xcb, 0x31, 0xad, 0x25, 0x10, 0x95, 0x03, 0x59, 0x44, - 0x97, 0x22, 0x81, 0x04, 0x9d, 0x37, 0xfa, 0xa5, 0x02, 0x49, 0x16, 0x01, 0x2d, 0x46, 0x5f, 0xa0, - 0xad, 0x67, 0x75, 0xe6, 0xb5, 0x18, 0x96, 0x32, 0x9b, 0x6b, 0x3c, 0x1b, 0x15, 0x5d, 0x89, 0xcc, - 0x86, 0x67, 0xd2, 0x22, 0x97, 0xb3, 0xe5, 0xf7, 0xdb, 0x7d, 0xd8, 0x0a, 0x75, 0xea, 0x7d, 0xd8, - 0x0a, 0x37, 0xf1, 0x31, 0xd9, 0x32, 0x2a, 0x95, 0x65, 0xc1, 0xd6, 0x1f, 0x15, 0x48, 0x87, 0x7b, - 0x6f, 0x74, 0x2d, 0x72, 0xcd, 0x1e, 0xdd, 0x7e, 0xe6, 0xfa, 0x80, 0x5e, 0x32, 0xe3, 0x9b, 0x3c, - 0xe3, 0x55, 0x74, 0x35, 0x32, 0xe3, 0x8a, 0xe9, 0x52, 0x91, 0xf2, 0xf2, 0x4e, 0x7d, 0x99, 0xbf, - 0x76, 0xd1, 0x6f, 0x14, 0x48, 0x05, 0x1d, 0x31, 0x8a, 0x26, 0x2a, 0xfc, 0x2d, 0x20, 0xa3, 0xc6, - 0x35, 0x97, 0x69, 0xae, 0xf1, 0x34, 0x97, 0xd1, 0x52, 0xd7, 0x34, 0x43, 0x1b, 0x9e, 0xe3, 0xcf, - 0x5e, 0x17, 0x1d, 0x28, 0x80, 0x0e, 0x77, 0xc7, 0xe8, 0x6b, 0x91, 0x6b, 0xf7, 0xec, 0xcc, 0x33, - 0x37, 0x06, 0xf6, 0x93, 0xc9, 0x17, 0x79, 0xf2, 0xeb, 0x28, 0x3f, 0x48, 0xd5, 0xe6, 0x28, 0x0b, - 0x28, 0x0e, 0x81, 0xa0, 0x3f, 0x45, 0x7f, 0x50, 0x60, 0xaa, 0xb3, 0x73, 0x46, 0xab, 0xfd, 0xd3, - 0x3a, 0x04, 0x65, 0x6d, 0x20, 0x1f, 0x09, 0xe3, 0x16, 0x87, 0x71, 0x0d, 0xad, 0xc6, 0x80, 0x21, - 0x92, 0x6f, 0xe5, 0xfd, 0xcc, 0xdf, 0x8a, 0x8e, 0x6e, 0x38, 0xce, 0x56, 0x74, 0xeb, 0xc4, 0xe3, - 0x6c, 0x45, 0xd7, 0xb6, 0x1b, 0xe7, 0x39, 0x86, 0x6f, 0xa0, 0xaf, 0x0f, 0xb1, 0x15, 0xa2, 0x87, - 0x46, 0x5f, 0x28, 0x70, 0xba, 0x4b, 0x33, 0x8b, 0xfa, 0xe4, 0xd4, 0xb3, 0xed, 0xce, 0xdc, 0x1c, - 0xdc, 0x51, 0xa2, 0x79, 0x8b, 0xa3, 0xb9, 0x85, 0x6e, 0xc6, 0xd9, 0x11, 0x11, 0x47, 0xaf, 0x1a, - 0x66, 0x4d, 0xe7, 0xcd, 0xf2, 0x43, 0x42, 0xd0, 0x7f, 0x14, 0xc8, 0xf6, 0xe9, 0xea, 0xd0, 0x7a, - 0xac, 0xcb, 0x30, 0xba, 0xd5, 0xce, 0x6c, 0x1c, 0x2d, 0x88, 0x04, 0xfc, 0x3a, 0x07, 0x7c, 0x03, - 0x5d, 0x1f, 0xf4, 0x5a, 0xa5, 0x3c, 0xf0, 0x83, 0x67, 0xcf, 0xe7, 0x95, 0x83, 0xe7, 0xf3, 0xca, - 0x3f, 0x9f, 0xcf, 0x2b, 0x1f, 0xbf, 0x98, 0x3f, 0x71, 0xf0, 0x62, 0xfe, 0xc4, 0xdf, 0x5e, 0xcc, - 0x9f, 0xf8, 0x70, 0xbd, 0xad, 0x29, 0x96, 0xa1, 0x97, 0x2b, 0xc6, 0x8e, 0x1b, 0xac, 0xb3, 0xb7, - 0x7a, 0x35, 0xb7, 0xdf, 0xb1, 0xda, 0x6e, 0xc5, 0x24, 0x36, 0x15, 0xff, 0x49, 0x2d, 0x3e, 0x87, - 0x8e, 0xf1, 0x7f, 0xd6, 0xfe, 0x17, 0x00, 0x00, 0xff, 0xff, 0x1f, 0x8e, 0xf3, 0xd1, 0xc0, 0x1f, - 0x00, 0x00, + 0x15, 0xcf, 0xc8, 0x1f, 0x6b, 0x3d, 0xc7, 0xb2, 0xd2, 0x1b, 0x27, 0xb6, 0x12, 0x2c, 0x6f, 0x67, + 0xc9, 0x7a, 0xe3, 0x68, 0x14, 0xdb, 0x09, 0x09, 0x81, 0xdd, 0xac, 0x64, 0x3b, 0x1b, 0x41, 0x20, + 0xde, 0x89, 0xf7, 0x83, 0x85, 0x30, 0x35, 0xb6, 0x3a, 0xca, 0x10, 0xcd, 0x8c, 0xa2, 0xe9, 0x71, + 0xac, 0xa2, 0xf6, 0x42, 0x15, 0x05, 0x27, 0x6a, 0x61, 0x0f, 0x7b, 0xe0, 0x40, 0x71, 0xe0, 0xc2, + 0xc7, 0x0d, 0x0e, 0xfc, 0x07, 0xa9, 0xad, 0x82, 0x4a, 0x15, 0x1c, 0x28, 0x0e, 0x82, 0x4a, 0x38, + 0x50, 0x05, 0xc5, 0x41, 0xfc, 0x03, 0x54, 0x7f, 0xcc, 0x48, 0x1a, 0x4b, 0xa3, 0x91, 0x9c, 0x03, + 0xa7, 0xc8, 0xdd, 0xef, 0xbd, 0x7e, 0xbf, 0x5f, 0xbf, 0x5f, 0x77, 0xbf, 0x09, 0xbc, 0xe6, 0xb8, + 0x96, 0xe3, 0x9a, 0x6e, 0xbe, 0xe6, 0x38, 0x55, 0xcb, 0xb0, 0x8d, 0x0a, 0xa9, 0xe7, 0xf7, 0x57, + 0x77, 0x09, 0x35, 0x56, 0xf3, 0x8f, 0x3c, 0x52, 0x6f, 0xa8, 0xb5, 0xba, 0x43, 0x1d, 0x74, 0x46, + 0x1a, 0xaa, 0x1d, 0x86, 0xaa, 0x34, 0xcc, 0x9c, 0xac, 0x38, 0x15, 0x87, 0xdb, 0xe5, 0xd9, 0x2f, + 0xe1, 0x92, 0x79, 0x3d, 0x2a, 0x76, 0x85, 0xd8, 0x84, 0x87, 0xe3, 0xa6, 0xaf, 0x46, 0x99, 0xd2, + 0x03, 0x69, 0x75, 0x31, 0xca, 0xca, 0x7d, 0x6c, 0xd4, 0xf4, 0xba, 0xe3, 0x51, 0x22, 0xad, 0x17, + 0xf7, 0xb8, 0x79, 0x7e, 0xd7, 0x70, 0x49, 0x60, 0xb5, 0xe7, 0x98, 0xb6, 0x9c, 0xbf, 0xd0, 0x39, + 0xcf, 0xa1, 0x06, 0x56, 0x35, 0xa3, 0x62, 0xda, 0x06, 0x35, 0x1d, 0xdf, 0xf6, 0x6c, 0xc5, 0x71, + 0x2a, 0x55, 0x92, 0x37, 0x6a, 0x66, 0xde, 0xb0, 0x6d, 0x87, 0xf2, 0x49, 0x3f, 0xfb, 0x05, 0x39, + 0xcb, 0xff, 0xda, 0xf5, 0xee, 0xe7, 0x0d, 0xbb, 0xe1, 0x4f, 0x89, 0x45, 0x74, 0x41, 0x8e, 0xf8, + 0x43, 0x4e, 0x65, 0xc3, 0x5e, 0xd4, 0xb4, 0x88, 0x4b, 0x0d, 0xab, 0x26, 0x0c, 0xf0, 0x2c, 0xcc, + 0x6c, 0x1b, 0x75, 0xc3, 0x72, 0x35, 0xf2, 0xc8, 0x23, 0x2e, 0xc5, 0x77, 0x21, 0xe5, 0x0f, 0xb8, + 0x35, 0xc7, 0x76, 0x09, 0x2a, 0xc0, 0x64, 0x8d, 0x8f, 0xcc, 0x2b, 0x4b, 0xca, 0xf2, 0xf4, 0xda, + 0x39, 0x35, 0x62, 0x9b, 0x54, 0xe1, 0x5c, 0x1c, 0x7f, 0xd2, 0xcc, 0x1e, 0xd3, 0xa4, 0x23, 0xfe, + 0x8f, 0x02, 0x4b, 0x5b, 0x2e, 0x35, 0x2d, 0x83, 0x92, 0xbb, 0x8f, 0x8d, 0xda, 0xd6, 0x81, 0xb1, + 0x47, 0x0b, 0x96, 0xe3, 0xd9, 0xb4, 0x64, 0xcb, 0x95, 0x51, 0x0e, 0x5e, 0x62, 0x01, 0x75, 0xb3, + 0x3c, 0x9f, 0x58, 0x52, 0x96, 0xc7, 0x8b, 0x27, 0x5b, 0xcd, 0x6c, 0xaa, 0x61, 0x58, 0xd5, 0xeb, + 0x58, 0x4e, 0xe0, 0x79, 0x45, 0x9b, 0x64, 0xbf, 0x4b, 0x65, 0xa4, 0xc2, 0x14, 0x75, 0x1e, 0x12, + 0x5b, 0x37, 0xed, 0xf9, 0xb1, 0x25, 0x65, 0x39, 0x59, 0x7c, 0xb9, 0xd5, 0xcc, 0xce, 0x0a, 0x7b, + 0x7f, 0x06, 0x6b, 0x2f, 0xf1, 0x9f, 0x25, 0x1b, 0xdd, 0x83, 0x49, 0xbe, 0x73, 0xee, 0xfc, 0xf8, + 0xd2, 0xd8, 0xf2, 0xf4, 0x9a, 0x1a, 0x09, 0x83, 0x65, 0x19, 0x24, 0xc8, 0xdc, 0x8a, 0x73, 0x0c, + 0x51, 0xab, 0x99, 0x9d, 0x11, 0x2b, 0x88, 0x58, 0x58, 0x93, 0x41, 0xbf, 0x32, 0x3e, 0xa5, 0xa4, + 0x13, 0xda, 0xa4, 0x4b, 0xec, 0x32, 0xa9, 0xe3, 0x5f, 0x27, 0x60, 0xad, 0x2f, 0xe0, 0xf7, 0x4d, + 0xfa, 0x60, 0xbb, 0x6e, 0x5a, 0x26, 0x35, 0xf7, 0xc9, 0x4e, 0xa3, 0x46, 0xdc, 0x1e, 0x14, 0x28, + 0x43, 0x52, 0x90, 0x88, 0x41, 0xc1, 0x0d, 0x48, 0x89, 0x6c, 0x75, 0x7f, 0x95, 0xb1, 0xa5, 0xb1, + 0xe5, 0xf1, 0xe2, 0x42, 0xab, 0x99, 0x9d, 0xeb, 0x84, 0xe5, 0xcf, 0x63, 0xed, 0xb8, 0x18, 0xd8, + 0x16, 0x0b, 0xbe, 0x07, 0xa7, 0xa4, 0x81, 0x88, 0xee, 0x78, 0x54, 0x2f, 0x13, 0xdb, 0xb1, 0x38, + 0xa7, 0xc9, 0xe2, 0x2b, 0xad, 0x66, 0xf6, 0x73, 0x5d, 0x81, 0x42, 0x76, 0x58, 0x7b, 0x59, 0x4c, + 0xec, 0xb0, 0xf1, 0x3b, 0x1e, 0xdd, 0xe4, 0xa3, 0x7f, 0x50, 0xe0, 0x42, 0x40, 0x97, 0x69, 0x57, + 0xaa, 0x84, 0x2d, 0xd8, 0xb7, 0x52, 0x56, 0xc2, 0x34, 0xa1, 0xc3, 0x34, 0x8d, 0x4c, 0x52, 0x11, + 0x66, 0xc3, 0xe0, 0x44, 0x79, 0x65, 0x5a, 0xcd, 0xec, 0xa9, 0x4e, 0xb7, 0x0e, 0x54, 0x33, 0xb4, + 0x0b, 0xcf, 0x0f, 0x14, 0x78, 0x25, 0xa2, 0xde, 0xa5, 0xb0, 0x76, 0x21, 0xdd, 0x0e, 0x64, 0xf0, + 0x59, 0x8e, 0x27, 0x59, 0xbc, 0xc6, 0x6a, 0xed, 0xaf, 0xcd, 0xec, 0x9c, 0x10, 0xb3, 0x5b, 0x7e, + 0xa8, 0x9a, 0x4e, 0xde, 0x32, 0xe8, 0x03, 0xb5, 0x64, 0xd3, 0x56, 0x33, 0x7b, 0x3a, 0x9c, 0x87, + 0x70, 0xc7, 0x5a, 0xca, 0x4f, 0x44, 0xac, 0x86, 0xff, 0xdb, 0x3f, 0x93, 0x3b, 0x1e, 0x1d, 0x51, + 0x7a, 0xdf, 0x0e, 0xa4, 0x34, 0xc6, 0xa5, 0x94, 0x8f, 0x29, 0x25, 0xb6, 0x62, 0x0c, 0x2d, 0xa1, + 0x55, 0x48, 0x06, 0xc8, 0xe6, 0xc7, 0x39, 0x23, 0x2c, 0xa1, 0x74, 0x08, 0x34, 0xd6, 0xa6, 0x7c, + 0xb4, 0x21, 0xf9, 0xfd, 0x26, 0x01, 0xeb, 0xfd, 0x51, 0xbf, 0x30, 0xfd, 0x1d, 0xd6, 0x53, 0x62, + 0x38, 0x3d, 0xdd, 0x85, 0xb9, 0x2e, 0x9d, 0x98, 0x76, 0x50, 0x71, 0x4c, 0x4e, 0x4b, 0xad, 0x66, + 0xf6, 0x6c, 0x0f, 0x39, 0xf9, 0x66, 0x58, 0x43, 0x1d, 0x6a, 0x2a, 0xd9, 0xbc, 0xf8, 0x46, 0x60, + 0x0f, 0xff, 0x51, 0x81, 0x95, 0x81, 0xfa, 0xeb, 0xa8, 0x97, 0xa1, 0x04, 0x78, 0x03, 0x52, 0x21, + 0x74, 0x42, 0x86, 0x1d, 0x2c, 0x85, 0x61, 0x1d, 0xa7, 0x7d, 0x01, 0x8d, 0xc5, 0x02, 0xf4, 0x7d, + 0x05, 0x70, 0x54, 0xd9, 0x4b, 0x05, 0xea, 0xbe, 0xd6, 0x4d, 0xbb, 0x5b, 0x80, 0x57, 0x07, 0x09, + 0xf0, 0x54, 0x28, 0x71, 0x5f, 0x7f, 0x33, 0x32, 0x73, 0x29, 0xbf, 0x13, 0x30, 0xfb, 0x75, 0xcf, + 0x62, 0x64, 0x06, 0x17, 0xec, 0x16, 0xa4, 0xdb, 0x43, 0x32, 0x8f, 0x55, 0x48, 0xda, 0x9e, 0xc5, + 0xab, 0xc4, 0xed, 0xa8, 0x3c, 0x89, 0x30, 0x98, 0xc2, 0xda, 0x94, 0x2d, 0x5d, 0xf1, 0x75, 0x98, + 0x66, 0x3f, 0x46, 0xd9, 0x11, 0xbc, 0x01, 0xc7, 0x85, 0xaf, 0x5c, 0x7e, 0x1d, 0xc6, 0xd9, 0x8c, + 0xbc, 0xdf, 0x4f, 0xaa, 0xe2, 0xd1, 0xa0, 0xfa, 0x8f, 0x06, 0xb5, 0x60, 0x37, 0x8a, 0xc9, 0xcf, + 0x7e, 0x9b, 0x9b, 0xe0, 0x65, 0xab, 0x71, 0x63, 0x06, 0xad, 0x50, 0xad, 0x76, 0x41, 0x2b, 0x41, + 0xba, 0x3d, 0x24, 0x63, 0x5f, 0x81, 0x09, 0x1f, 0xd6, 0x58, 0x9c, 0xe0, 0xc2, 0x1a, 0x17, 0xe0, + 0xf4, 0x6d, 0xd3, 0xa5, 0x3c, 0x56, 0xb1, 0xc1, 0xeb, 0xc0, 0x87, 0x7a, 0x1e, 0x26, 0x44, 0x19, + 0x89, 0xad, 0x4a, 0xb7, 0x9a, 0xd9, 0xe3, 0x02, 0xa8, 0xac, 0x1e, 0x31, 0x8d, 0xdf, 0x81, 0xf9, + 0xc3, 0x21, 0x8e, 0x96, 0xd5, 0x53, 0x05, 0xd2, 0x77, 0x6b, 0x0e, 0xdd, 0xae, 0x9b, 0x7b, 0x64, + 0x24, 0x31, 0x6c, 0x41, 0x9a, 0xbd, 0x05, 0x75, 0xc3, 0x75, 0x09, 0xed, 0x92, 0xc3, 0x99, 0xf6, + 0xb1, 0x1e, 0xb6, 0xc0, 0x5a, 0x8a, 0x0d, 0x15, 0xd8, 0x88, 0x90, 0xc4, 0x2d, 0x38, 0xf1, 0xc8, + 0x73, 0x68, 0x77, 0x1c, 0x21, 0x8d, 0xb3, 0xad, 0x66, 0x76, 0x5e, 0xc4, 0x39, 0x64, 0x82, 0xb5, + 0x59, 0x3e, 0xd6, 0x8e, 0x84, 0x4b, 0x70, 0xa2, 0x03, 0x91, 0xa4, 0xe7, 0x32, 0x80, 0x5b, 0x73, + 0xa8, 0x5e, 0x63, 0xa3, 0x92, 0xe7, 0xb9, 0x56, 0x33, 0x7b, 0x42, 0xc4, 0x6d, 0xcf, 0x61, 0x2d, + 0xe9, 0xfa, 0xde, 0xf8, 0x16, 0x2c, 0xec, 0x38, 0xd4, 0xe0, 0x05, 0x70, 0xdb, 0x7c, 0xe4, 0x99, + 0x65, 0x93, 0x36, 0x46, 0x2a, 0xd0, 0x9f, 0x2a, 0x90, 0xe9, 0x15, 0x4a, 0xa6, 0xf7, 0x11, 0x24, + 0xab, 0xfe, 0xa0, 0xdc, 0xc1, 0x05, 0x55, 0xbe, 0x7b, 0x19, 0x51, 0xc1, 0xd5, 0xb3, 0xe1, 0x98, + 0x76, 0x71, 0x53, 0x5e, 0x36, 0x52, 0x4d, 0x81, 0x27, 0xfe, 0xe5, 0xdf, 0xb2, 0xcb, 0x15, 0x93, + 0x3e, 0xf0, 0x76, 0xd5, 0x3d, 0xc7, 0x92, 0x0f, 0x67, 0xf9, 0x4f, 0xce, 0x2d, 0x3f, 0xcc, 0x53, + 0x76, 0x37, 0xf0, 0x20, 0xae, 0xd6, 0x5e, 0x11, 0x9f, 0x86, 0x39, 0x9e, 0x5c, 0x18, 0x23, 0xfe, + 0x54, 0x81, 0x53, 0xe1, 0x99, 0xff, 0x8f, 0x94, 0xfd, 0xad, 0x79, 0xcf, 0xa9, 0x7a, 0x16, 0xb9, + 0xe9, 0xd4, 0x47, 0x3e, 0x3b, 0x7e, 0xe2, 0x6f, 0x4d, 0x28, 0x94, 0xc4, 0x49, 0x61, 0x72, 0x9f, + 0x4f, 0x0c, 0x06, 0x59, 0xe8, 0x7e, 0x04, 0x08, 0xb7, 0xe1, 0x10, 0xca, 0xb5, 0xf0, 0x3e, 0x64, + 0x76, 0xea, 0x46, 0xd9, 0xb4, 0x2b, 0xdb, 0x86, 0x59, 0xdf, 0x31, 0x1e, 0x92, 0xfa, 0x4d, 0xd2, + 0x29, 0x50, 0x5e, 0xfd, 0xfa, 0x25, 0x59, 0xca, 0x1d, 0xf8, 0xe4, 0x04, 0xd6, 0x26, 0xf9, 0xaf, + 0x4b, 0x6d, 0xe3, 0x55, 0xa9, 0xcb, 0x43, 0xc6, 0xab, 0xbe, 0xf1, 0x2a, 0xfe, 0x0e, 0x9c, 0xe9, + 0xb9, 0xae, 0x24, 0xe3, 0xab, 0x90, 0xa4, 0x6c, 0x4c, 0xbf, 0x4f, 0x7c, 0x15, 0xa9, 0xf2, 0x62, + 0x39, 0x1f, 0x03, 0xe3, 0x26, 0xd9, 0xd3, 0xa6, 0xa8, 0x0c, 0x8a, 0xff, 0x9c, 0x80, 0xf3, 0xfe, + 0x95, 0xc6, 0x16, 0x25, 0x45, 0xc3, 0x25, 0xe5, 0x3b, 0x36, 0xd7, 0x5e, 0xc9, 0xaa, 0x19, 0x7b, + 0xc1, 0xf5, 0xfc, 0x65, 0x48, 0xde, 0xaf, 0x3b, 0x96, 0xce, 0x1a, 0x51, 0x79, 0xa8, 0x47, 0xec, + 0x83, 0x68, 0xd5, 0xa6, 0x98, 0x07, 0xfb, 0x1b, 0x61, 0x98, 0xa1, 0x0e, 0xf7, 0xed, 0x3c, 0x9f, + 0xb4, 0x69, 0xea, 0xb0, 0x69, 0x71, 0xfe, 0x9c, 0x6e, 0x97, 0x0c, 0x3b, 0x75, 0xc6, 0x83, 0xf3, + 0xed, 0x03, 0x48, 0x5b, 0xc6, 0x81, 0x38, 0x1c, 0x74, 0x93, 0x67, 0x25, 0xdf, 0x20, 0xc3, 0x22, + 0x4f, 0x59, 0xc6, 0x41, 0x07, 0x36, 0xf4, 0x2e, 0xa4, 0xc8, 0x01, 0x25, 0x75, 0xdb, 0xa8, 0xca, + 0x73, 0x69, 0x62, 0xa4, 0xb8, 0x33, 0x7e, 0x14, 0x71, 0x68, 0xfd, 0x4a, 0x81, 0xd7, 0x06, 0xd2, + 0x2a, 0xf7, 0xf3, 0x4d, 0x00, 0xd3, 0xae, 0x79, 0x74, 0x28, 0x62, 0x93, 0xdc, 0x85, 0x33, 0xfb, + 0x16, 0x4c, 0x3b, 0x1e, 0x0d, 0x02, 0x24, 0xe2, 0x05, 0x00, 0xe1, 0xc3, 0x46, 0xd6, 0x3e, 0x39, + 0x0b, 0x13, 0xef, 0x78, 0xa4, 0xde, 0x40, 0x3f, 0x52, 0x60, 0x52, 0xf4, 0xda, 0xe8, 0x42, 0x8c, + 0x86, 0x5c, 0x96, 0x46, 0x66, 0x25, 0x96, 0xad, 0xc0, 0x8b, 0x57, 0xbe, 0xf7, 0xa7, 0x7f, 0x7c, + 0x92, 0xf8, 0x3c, 0x3a, 0x97, 0x8f, 0xfa, 0x28, 0x22, 0xb3, 0xf8, 0xa7, 0x02, 0x0b, 0x7d, 0x7b, + 0x1e, 0xf4, 0x46, 0xe4, 0xba, 0x83, 0xbe, 0x0d, 0x64, 0xde, 0x1c, 0xd5, 0x5d, 0x22, 0xb9, 0xcd, + 0x91, 0xdc, 0x44, 0x9b, 0x91, 0x48, 0xbe, 0x2b, 0x6b, 0xfa, 0xa3, 0x3c, 0x91, 0x11, 0xc5, 0x17, + 0x1f, 0xc2, 0x62, 0xca, 0x27, 0x9e, 0x6e, 0xda, 0xe8, 0xe7, 0x89, 0x8e, 0xe7, 0xf2, 0xe0, 0xee, + 0x1e, 0xdd, 0x19, 0x2d, 0xfb, 0xbe, 0x7d, 0xca, 0x91, 0xe9, 0x30, 0x38, 0x1d, 0xdf, 0x44, 0xdf, + 0x78, 0x11, 0x74, 0xe8, 0x8f, 0x4d, 0xfa, 0x80, 0x49, 0x52, 0x24, 0xaa, 0x73, 0xa9, 0xa1, 0x1f, + 0x26, 0xe0, 0x5c, 0x8c, 0x96, 0x1e, 0xbd, 0x1d, 0x0f, 0xca, 0xc0, 0x8f, 0x02, 0x47, 0xe6, 0xe4, + 0x03, 0xce, 0x89, 0x86, 0xb6, 0x87, 0xe6, 0x84, 0xe7, 0x26, 0x5a, 0xbc, 0x9e, 0xe5, 0xf2, 0x6f, + 0x05, 0x32, 0xfd, 0x9b, 0x11, 0x34, 0x52, 0xe2, 0xed, 0x66, 0x2c, 0x73, 0x63, 0x64, 0x7f, 0x89, + 0xfc, 0x6b, 0x1c, 0xf9, 0xdb, 0x68, 0xeb, 0xe8, 0xd5, 0xe0, 0x78, 0x14, 0xfd, 0x22, 0x01, 0x17, + 0x87, 0x69, 0xbe, 0xd1, 0xf6, 0x88, 0x00, 0xfa, 0xeb, 0xe3, 0xc8, 0x94, 0xec, 0x72, 0x4a, 0xbe, + 0x85, 0x3e, 0x7c, 0x21, 0x94, 0xf4, 0x56, 0xc8, 0xc7, 0x09, 0x78, 0x35, 0x4e, 0xd3, 0x8d, 0x6e, + 0x1d, 0x4d, 0x22, 0x2f, 0xb2, 0x54, 0xee, 0x71, 0x5e, 0xde, 0x47, 0xef, 0x0e, 0xc9, 0x0b, 0x63, + 0x61, 0x80, 0x50, 0x58, 0xe9, 0x7c, 0xaa, 0xc0, 0x94, 0xdf, 0x1c, 0xa3, 0x8b, 0x91, 0xc9, 0x86, + 0xda, 0xea, 0x4c, 0x2e, 0xa6, 0xb5, 0x04, 0xa2, 0x72, 0x20, 0xcb, 0xe8, 0x7c, 0x24, 0x90, 0xa0, + 0xf3, 0x46, 0x3f, 0x56, 0x60, 0x9c, 0x45, 0x40, 0xcb, 0xd1, 0x17, 0x68, 0xfb, 0x59, 0x9d, 0x79, + 0x3d, 0x86, 0xa5, 0xcc, 0xe6, 0x32, 0xcf, 0x46, 0x45, 0x17, 0x23, 0xb3, 0xe1, 0x99, 0xb4, 0xc9, + 0xe5, 0x6c, 0xf9, 0xfd, 0xf6, 0x00, 0xb6, 0x42, 0x9d, 0xfa, 0x00, 0xb6, 0xc2, 0x4d, 0x7c, 0x4c, + 0xb6, 0x8c, 0x6a, 0x35, 0x27, 0xd8, 0xfa, 0xbd, 0x02, 0xe9, 0x70, 0xef, 0x8d, 0x2e, 0x47, 0xae, + 0xd9, 0xa7, 0xdb, 0xcf, 0x5c, 0x19, 0xd2, 0x4b, 0x66, 0x7c, 0x8d, 0x67, 0xbc, 0x86, 0x2e, 0x45, + 0x66, 0x5c, 0x35, 0x5d, 0x2a, 0x52, 0xce, 0xed, 0x36, 0x72, 0xfc, 0xb5, 0x8b, 0x7e, 0xa6, 0x40, + 0x32, 0xe8, 0x88, 0x51, 0x34, 0x51, 0xe1, 0x6f, 0x01, 0x19, 0x35, 0xae, 0xb9, 0x4c, 0x73, 0x9d, + 0xa7, 0x99, 0x43, 0x2b, 0x3d, 0xd3, 0x0c, 0x6d, 0x78, 0x9e, 0x3f, 0x7b, 0x5d, 0xf4, 0x54, 0x01, + 0x74, 0xb8, 0x3b, 0x46, 0x5f, 0x88, 0x5c, 0xbb, 0x6f, 0x67, 0x9e, 0xb9, 0x3a, 0xb4, 0x9f, 0x4c, + 0xbe, 0xc4, 0x93, 0xdf, 0x40, 0x85, 0x61, 0xaa, 0x36, 0x4f, 0x59, 0x40, 0x71, 0x08, 0x04, 0xfd, + 0x29, 0xfa, 0x9d, 0x02, 0xa9, 0xee, 0xce, 0x19, 0xad, 0x0d, 0x4e, 0xeb, 0x10, 0x94, 0xf5, 0xa1, + 0x7c, 0x24, 0x8c, 0xeb, 0x1c, 0xc6, 0x65, 0xb4, 0x16, 0x03, 0x86, 0x48, 0xbe, 0x9d, 0xf7, 0x13, + 0x7f, 0x2b, 0xba, 0xba, 0xe1, 0x38, 0x5b, 0xd1, 0xab, 0x13, 0x8f, 0xb3, 0x15, 0x3d, 0xdb, 0x6e, + 0x5c, 0xe0, 0x18, 0xbe, 0x84, 0xbe, 0x38, 0xc2, 0x56, 0x88, 0x1e, 0x1a, 0x7d, 0xa6, 0xc0, 0xcb, + 0x3d, 0x9a, 0x59, 0x34, 0x20, 0xa7, 0xbe, 0x6d, 0x77, 0xe6, 0xda, 0xf0, 0x8e, 0x12, 0xcd, 0x5b, + 0x1c, 0xcd, 0x75, 0x74, 0x2d, 0xce, 0x8e, 0x88, 0x38, 0x7a, 0xcd, 0x30, 0xeb, 0x3a, 0x6f, 0x96, + 0xef, 0x13, 0x82, 0xfe, 0xa5, 0x40, 0x76, 0x40, 0x57, 0x87, 0x36, 0x62, 0x5d, 0x86, 0xd1, 0xad, + 0x76, 0x66, 0xf3, 0x68, 0x41, 0x24, 0xe0, 0x37, 0x38, 0xe0, 0xab, 0xe8, 0xca, 0xb0, 0xd7, 0x2a, + 0xe5, 0x81, 0xef, 0x3d, 0x79, 0xb6, 0xa8, 0x3c, 0x7d, 0xb6, 0xa8, 0xfc, 0xfd, 0xd9, 0xa2, 0xf2, + 0xf1, 0xf3, 0xc5, 0x63, 0x4f, 0x9f, 0x2f, 0x1e, 0xfb, 0xcb, 0xf3, 0xc5, 0x63, 0x1f, 0x6e, 0x74, + 0x34, 0xc5, 0x32, 0x74, 0xae, 0x6a, 0xec, 0xba, 0xc1, 0x3a, 0xfb, 0x6b, 0x97, 0xf2, 0x07, 0x5d, + 0xab, 0xed, 0x55, 0x4d, 0x62, 0x53, 0xf1, 0x9f, 0xd5, 0xe2, 0x73, 0xe8, 0x24, 0xff, 0x67, 0xfd, + 0x7f, 0x01, 0x00, 0x00, 0xff, 0xff, 0x12, 0xa7, 0x1d, 0x71, 0xc8, 0x1f, 0x00, 0x00, } // Reference imports to suppress errors if they are not otherwise used. From cdccac1e5359ad1958fadb02d593de41710f3a97 Mon Sep 17 00:00:00 2001 From: DongLieu Date: Tue, 7 Nov 2023 15:06:52 +0700 Subject: [PATCH 22/22] use a few poolType Concentrated --- x/poolmanager/router_test.go | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/x/poolmanager/router_test.go b/x/poolmanager/router_test.go index a6d87982688..2db4cbf750c 100644 --- a/x/poolmanager/router_test.go +++ b/x/poolmanager/router_test.go @@ -3852,7 +3852,7 @@ func (suite *KeeperTestSuite) TestListPoolsByDenom() { expectedNumPools: 2, }, "Two pools, pools does not contains denom": { - poolType: []types.PoolType{types.Balancer, types.Balancer}, + poolType: []types.PoolType{types.Balancer, types.Concentrated}, poolCoins: []sdk.Coins{ sdk.NewCoins(sdk.NewCoin(BAR, defaultInitPoolAmount), sdk.NewCoin(UOSMO, defaultInitPoolAmount)), // pool 1 bar-uosmo sdk.NewCoins(sdk.NewCoin(BAZ, defaultInitPoolAmount), sdk.NewCoin(UOSMO, defaultInitPoolAmount)), // pool 2. baz-foo @@ -3861,7 +3861,7 @@ func (suite *KeeperTestSuite) TestListPoolsByDenom() { expectedNumPools: 0, }, "Many pools": { - poolType: []types.PoolType{types.Balancer, types.Balancer, types.Balancer, types.Balancer}, + poolType: []types.PoolType{types.Concentrated, types.Balancer, types.Concentrated, types.Balancer}, poolCoins: []sdk.Coins{ sdk.NewCoins(sdk.NewCoin(BAR, defaultInitPoolAmount), sdk.NewCoin(UOSMO, defaultInitPoolAmount)), // pool 1 bar-uosmo sdk.NewCoins(sdk.NewCoin(BAZ, defaultInitPoolAmount), sdk.NewCoin(FOO, defaultInitPoolAmount)), // pool 2. baz-foo