From 8d25c011e7c318ca454e13a93f96155cebba3935 Mon Sep 17 00:00:00 2001 From: akhilkumarpilli Date: Thu, 6 May 2021 11:06:35 +0530 Subject: [PATCH 01/10] Update SDK to v0.42.4 and add upgrade handler --- app/app.go | 6 +----- go.mod | 4 +--- go.sum | 2 ++ 3 files changed, 4 insertions(+), 8 deletions(-) diff --git a/app/app.go b/app/app.go index b72c0dc5e5..09636e5a69 100644 --- a/app/app.go +++ b/app/app.go @@ -63,7 +63,6 @@ import ( stakingkeeper "github.com/cosmos/cosmos-sdk/x/staking/keeper" stakingtypes "github.com/cosmos/cosmos-sdk/x/staking/types" - "github.com/ovrclk/akash/app/migrations" "github.com/ovrclk/akash/x/audit" "github.com/ovrclk/akash/x/cert" escrowkeeper "github.com/ovrclk/akash/x/escrow/keeper" @@ -263,11 +262,8 @@ func NewApp( app.keeper.upgrade = upgradekeeper.NewKeeper(skipUpgradeHeights, app.keys[upgradetypes.StoreKey], appCodec, homePath) - app.keeper.upgrade.SetUpgradeHandler("akashnet-2-upgrade-1", func(ctx sdk.Context, plan upgradetypes.Plan) { - migrations.MigrateAkashnet2Upgrade1(ctx, app.keeper.acct, app.keeper.bank, app.keeper.staking) + app.keeper.upgrade.SetUpgradeHandler("v0.42-upgrade", func(ctx sdk.Context, plan upgradetypes.Plan) { - // Set staking HistoricalEntries to 10000, required positive value for ibc - app.GetSubspace(stakingtypes.ModuleName).Set(ctx, stakingtypes.KeyHistoricalEntries, uint32(10000)) }) // register the staking hooks diff --git a/go.mod b/go.mod index 8e2e3bc6a2..bf6a6c87ff 100644 --- a/go.mod +++ b/go.mod @@ -6,7 +6,7 @@ require ( github.com/avast/retry-go v2.7.0+incompatible github.com/blang/semver v3.5.1+incompatible github.com/boz/go-lifecycle v0.1.1-0.20190620234137-5139c86739b8 - github.com/cosmos/cosmos-sdk v0.41.3 + github.com/cosmos/cosmos-sdk v0.42.4 github.com/davecgh/go-spew v1.1.2-0.20180830191138-d8f796af33cc // indirect github.com/go-kit/kit v0.10.0 github.com/gogo/protobuf v1.3.3 @@ -56,8 +56,6 @@ replace google.golang.org/grpc => google.golang.org/grpc v1.33.2 replace github.com/grpc-ecosystem/grpc-gateway => github.com/grpc-ecosystem/grpc-gateway v1.14.7 -replace github.com/cosmos/cosmos-sdk => github.com/ovrclk/cosmos-sdk v0.41.4-akash-4 - replace github.com/tendermint/tendermint => github.com/ovrclk/tendermint v0.34.9-akash-1 replace ( diff --git a/go.sum b/go.sum index b6d60b8395..4cd16654ed 100644 --- a/go.sum +++ b/go.sum @@ -130,6 +130,8 @@ github.com/coreos/go-systemd v0.0.0-20180511133405-39ca1b05acc7/go.mod h1:F5haX7 github.com/coreos/go-systemd v0.0.0-20190321100706-95778dfbb74e/go.mod h1:F5haX7vjVVG0kc13fIWeqUViNPyEJxv/OmvnBo0Yme4= github.com/coreos/pkg v0.0.0-20160727233714-3ac0863d7acf/go.mod h1:E3G3o1h8I7cfcXa63jLwjI0eiQQMgzzUDFVpN/nH/eA= github.com/coreos/pkg v0.0.0-20180928190104-399ea9e2e55f/go.mod h1:E3G3o1h8I7cfcXa63jLwjI0eiQQMgzzUDFVpN/nH/eA= +github.com/cosmos/cosmos-sdk v0.42.4 h1:yaD4PyOx0LnyfiWasC5egg1U76lT83GRxjJjupPo7Gk= +github.com/cosmos/cosmos-sdk v0.42.4/go.mod h1:I1Zw1zmU4rA/NITaakTb71pXQnQrWyFBhqo3WSeg0vA= github.com/cosmos/go-bip39 v0.0.0-20180819234021-555e2067c45d/go.mod h1:tSxLoYXyBmiFeKpvmq4dzayMdCjCnu8uqmCysIGBT2Y= github.com/cosmos/go-bip39 v1.0.0 h1:pcomnQdrdH22njcAatO0yWojsUnCO3y2tNoV1cb6hHY= github.com/cosmos/go-bip39 v1.0.0/go.mod h1:RNJv0H/pOIVgxw6KS7QeX2a0Uo0aKUlfhZ4xuwvCdJw= From 1f13e621964eea565e89721876885cd90d29ad0d Mon Sep 17 00:00:00 2001 From: akhilkumarpilli Date: Wed, 26 May 2021 16:33:10 +0530 Subject: [PATCH 02/10] Migrate few files to v0.43 --- app/app.go | 113 +++++++++++++--------- app/app_test.go | 2 +- app/config.go | 16 +++- app/export.go | 2 +- app/genesis.go | 2 +- app/mac.go | 2 +- app/sim_test.go | 4 +- cmd/akash/cmd/genaccounts.go | 4 +- cmd/akash/cmd/root.go | 13 ++- go.mod | 20 ++-- go.sum | 175 +++++++++++++++++++++++++++++++++++ integration/e2e_test.go | 24 ++--- x/audit/module.go | 8 +- 13 files changed, 298 insertions(+), 87 deletions(-) diff --git a/app/app.go b/app/app.go index 09636e5a69..3ea144e028 100644 --- a/app/app.go +++ b/app/app.go @@ -25,6 +25,9 @@ import ( authtx "github.com/cosmos/cosmos-sdk/x/auth/tx" authtypes "github.com/cosmos/cosmos-sdk/x/auth/types" "github.com/cosmos/cosmos-sdk/x/auth/vesting" + "github.com/cosmos/cosmos-sdk/x/authz" + authzkeeper "github.com/cosmos/cosmos-sdk/x/authz/keeper" + authzmodule "github.com/cosmos/cosmos-sdk/x/authz/module" "github.com/cosmos/cosmos-sdk/x/bank" bankkeeper "github.com/cosmos/cosmos-sdk/x/bank/keeper" banktypes "github.com/cosmos/cosmos-sdk/x/bank/types" @@ -36,20 +39,23 @@ import ( "github.com/cosmos/cosmos-sdk/x/evidence" evidencekeeper "github.com/cosmos/cosmos-sdk/x/evidence/keeper" evidencetypes "github.com/cosmos/cosmos-sdk/x/evidence/types" + "github.com/cosmos/cosmos-sdk/x/feegrant" + feegrantkeeper "github.com/cosmos/cosmos-sdk/x/feegrant/keeper" + feegrantmodule "github.com/cosmos/cosmos-sdk/x/feegrant/module" "github.com/cosmos/cosmos-sdk/x/genutil" genutiltypes "github.com/cosmos/cosmos-sdk/x/genutil/types" "github.com/cosmos/cosmos-sdk/x/gov" govkeeper "github.com/cosmos/cosmos-sdk/x/gov/keeper" govtypes "github.com/cosmos/cosmos-sdk/x/gov/types" - transfer "github.com/cosmos/cosmos-sdk/x/ibc/applications/transfer" - ibc "github.com/cosmos/cosmos-sdk/x/ibc/core" - porttypes "github.com/cosmos/cosmos-sdk/x/ibc/core/05-port/types" "github.com/cosmos/cosmos-sdk/x/mint" mintkeeper "github.com/cosmos/cosmos-sdk/x/mint/keeper" minttypes "github.com/cosmos/cosmos-sdk/x/mint/types" "github.com/cosmos/cosmos-sdk/x/upgrade" upgradekeeper "github.com/cosmos/cosmos-sdk/x/upgrade/keeper" upgradetypes "github.com/cosmos/cosmos-sdk/x/upgrade/types" + transfer "github.com/cosmos/ibc-go/modules/apps/transfer" + ibc "github.com/cosmos/ibc-go/modules/core" + porttypes "github.com/cosmos/ibc-go/modules/core/05-port/types" "github.com/gorilla/mux" "github.com/rakyll/statik/fs" "github.com/spf13/cast" @@ -80,14 +86,14 @@ import ( distr "github.com/cosmos/cosmos-sdk/x/distribution" distrkeeper "github.com/cosmos/cosmos-sdk/x/distribution/keeper" distrtypes "github.com/cosmos/cosmos-sdk/x/distribution/types" - ibctransferkeeper "github.com/cosmos/cosmos-sdk/x/ibc/applications/transfer/keeper" - ibctransfertypes "github.com/cosmos/cosmos-sdk/x/ibc/applications/transfer/types" - ibcclient "github.com/cosmos/cosmos-sdk/x/ibc/core/02-client" - ibchost "github.com/cosmos/cosmos-sdk/x/ibc/core/24-host" - ibckeeper "github.com/cosmos/cosmos-sdk/x/ibc/core/keeper" "github.com/cosmos/cosmos-sdk/x/slashing" slashingkeeper "github.com/cosmos/cosmos-sdk/x/slashing/keeper" slashingtypes "github.com/cosmos/cosmos-sdk/x/slashing/types" + ibctransferkeeper "github.com/cosmos/ibc-go/modules/apps/transfer/keeper" + ibctransfertypes "github.com/cosmos/ibc-go/modules/apps/transfer/types" + ibcclient "github.com/cosmos/ibc-go/modules/core/02-client" + ibchost "github.com/cosmos/ibc-go/modules/core/24-host" + ibckeeper "github.com/cosmos/ibc-go/modules/core/keeper" dkeeper "github.com/ovrclk/akash/x/deployment/keeper" mkeeper "github.com/ovrclk/akash/x/market/keeper" @@ -104,16 +110,13 @@ const ( var ( DefaultHome = os.ExpandEnv("$HOME/.akash") _ servertypes.Application = (*AkashApp)(nil) - - // module accounts that are allowed to receive tokens - allowedReceivingModAcc = map[string]bool{} ) // AkashApp extends ABCI appplication type AkashApp struct { *bam.BaseApp cdc *codec.LegacyAmino - appCodec codec.Marshaler + appCodec codec.Codec interfaceRegistry codectypes.InterfaceRegistry invCheckPeriod uint @@ -134,9 +137,11 @@ type AkashApp struct { crisis crisiskeeper.Keeper upgrade upgradekeeper.Keeper params paramskeeper.Keeper + authz authzkeeper.Keeper ibc *ibckeeper.Keeper evidence evidencekeeper.Keeper transfer ibctransferkeeper.Keeper + feegrant feegrantkeeper.Keeper // make scoped keepers public for test purposes scopedIBC capabilitykeeper.ScopedKeeper @@ -155,6 +160,9 @@ type AkashApp struct { // simulation manager sm *module.SimulationManager + + // the configurator + configurator module.Configurator } // https://github.com/cosmos/sdk-tutorials/blob/c6754a1e313eb1ed973c5c91dcc606f2fd288811/app.go#L73 @@ -173,7 +181,7 @@ func NewApp( bapp := bam.NewBaseApp(AppName, logger, db, encodingConfig.TxConfig.TxDecoder(), options...) bapp.SetCommitMultiStoreTracer(tio) - bapp.SetAppVersion(version.Version) + bapp.SetVersion(version.Version) bapp.SetInterfaceRegistry(interfaceRegistry) keys := kvStoreKeys() @@ -214,7 +222,7 @@ func NewApp( app.keys[banktypes.StoreKey], app.keeper.acct, app.GetSubspace(banktypes.ModuleName), - app.BlockedAddrs(), + app.ModuleAccountAddrs(), ) skeeper := stakingkeeper.NewKeeper( @@ -260,10 +268,14 @@ func NewApp( authtypes.FeeCollectorName, ) - app.keeper.upgrade = upgradekeeper.NewKeeper(skipUpgradeHeights, app.keys[upgradetypes.StoreKey], appCodec, homePath) + app.keeper.feegrant = feegrantkeeper.NewKeeper(appCodec, keys[feegrant.StoreKey], app.keeper.acct) - app.keeper.upgrade.SetUpgradeHandler("v0.42-upgrade", func(ctx sdk.Context, plan upgradetypes.Plan) { + app.keeper.upgrade = upgradekeeper.NewKeeper(skipUpgradeHeights, app.keys[upgradetypes.StoreKey], appCodec, + homePath, app.BaseApp) + app.keeper.upgrade.SetUpgradeHandler("v0.43.0-beta1-upgrade", func(ctx sdk.Context, plan upgradetypes.Plan, + fromVM module.VersionMap) (module.VersionMap, error) { + return app.mm.RunMigrations(ctx, app.configurator, fromVM) }) // register the staking hooks @@ -275,10 +287,11 @@ func NewApp( ), ) + app.keeper.authz = authzkeeper.NewKeeper(keys[authzkeeper.StoreKey], appCodec, app.BaseApp.MsgServiceRouter()) + // register IBC Keeper - app.keeper.ibc = ibckeeper.NewKeeper( - appCodec, app.keys[ibchost.StoreKey], app.GetSubspace(ibchost.ModuleName), app.keeper.staking, scopedIBCKeeper, - ) + app.keeper.ibc = ibckeeper.NewKeeper(appCodec, app.keys[ibchost.StoreKey], app.GetSubspace(ibchost.ModuleName), + app.keeper.staking, app.keeper.upgrade, scopedIBCKeeper) // register the proposal types govRouter := govtypes.NewRouter() @@ -286,9 +299,9 @@ func NewApp( AddRoute(paramproposal.RouterKey, params.NewParamChangeProposalHandler(app.keeper.params)). AddRoute(distrtypes.RouterKey, distr.NewCommunityPoolSpendProposalHandler(app.keeper.distr)). AddRoute(upgradetypes.RouterKey, upgrade.NewSoftwareUpgradeProposalHandler(app.keeper.upgrade)). - AddRoute(ibchost.RouterKey, ibcclient.NewClientUpdateProposalHandler(app.keeper.ibc.ClientKeeper)) + AddRoute(ibchost.RouterKey, ibcclient.NewClientProposalHandler(app.keeper.ibc.ClientKeeper)) - app.keeper.gov = govkeeper.NewKeeper( + govKeeper := govkeeper.NewKeeper( appCodec, app.keys[govtypes.StoreKey], app.GetSubspace(govtypes.ModuleName), @@ -298,6 +311,12 @@ func NewApp( govRouter, ) + app.keeper.gov = *govKeeper.SetHooks( + govtypes.NewMultiGovHooks( + // register the governance hooks + ), + ) + // register Transfer Keepers app.keeper.transfer = ibctransferkeeper.NewKeeper( appCodec, app.keys[ibctransfertypes.StoreKey], app.GetSubspace(ibctransfertypes.ModuleName), @@ -333,6 +352,8 @@ func NewApp( bank.NewAppModule(appCodec, app.keeper.bank, app.keeper.acct), capability.NewAppModule(appCodec, *app.keeper.cap), crisis.NewAppModule(&app.keeper.crisis, skipGenesisInvariants), + feegrantmodule.NewAppModule(appCodec, app.keeper.acct, app.keeper,bank, + app.keeper.feegrant, app.interfaceRegistry), gov.NewAppModule(appCodec, app.keeper.gov, app.keeper.acct, app.keeper.bank), mint.NewAppModule(appCodec, app.keeper.mint, app.keeper.acct), slashing.NewAppModule(appCodec, app.keeper.slashing, app.keeper.acct, app.keeper.bank, app.keeper.staking), @@ -343,6 +364,7 @@ func NewApp( ibc.NewAppModule(app.keeper.ibc), params.NewAppModule(app.keeper.params), transferModule, + authzmodule.NewAppModule(appCodec, app.keeper.authz, app.keeper.acct, app.keeper.bank, app.interfaceRegistry), }, app.akashAppModules()...)..., ) @@ -374,6 +396,8 @@ func NewApp( genutiltypes.ModuleName, evidencetypes.ModuleName, ibctransfertypes.ModuleName, + authz.ModuleName, + feegrant.ModuleName, }, app.akashInitGenesisOrder()..., @@ -382,7 +406,8 @@ func NewApp( app.mm.RegisterInvariants(&app.keeper.crisis) app.mm.RegisterRoutes(app.Router(), app.QueryRouter(), encodingConfig.Amino) - app.mm.RegisterServices(module.NewConfigurator(app.MsgServiceRouter(), app.GRPCQueryRouter())) + app.configurator = module.NewConfigurator(app.appCodec,app.MsgServiceRouter(), app.GRPCQueryRouter()) + app.mm.RegisterServices(app.configurator) // add test gRPC service for testing gRPC queries in isolation testdata.RegisterQueryServer(app.GRPCQueryRouter(), testdata.QueryImpl{}) @@ -392,6 +417,8 @@ func NewApp( auth.NewAppModule(appCodec, app.keeper.acct, authsims.RandomGenesisAccounts), bank.NewAppModule(appCodec, app.keeper.bank, app.keeper.acct), capability.NewAppModule(appCodec, *app.keeper.cap), + feegrantmodule.NewAppModule(appCodec, app.keeper.acct, app.keeper,bank, + app.keeper.feegrant, app.interfaceRegistry), gov.NewAppModule(appCodec, app.keeper.gov, app.keeper.acct, app.keeper.bank), mint.NewAppModule(appCodec, app.keeper.mint, app.keeper.acct), staking.NewAppModule(appCodec, app.keeper.staking, app.keeper.acct, app.keeper.bank), @@ -401,6 +428,7 @@ func NewApp( evidence.NewAppModule(app.keeper.evidence), ibc.NewAppModule(app.keeper.ibc), transferModule, + authzmodule.NewAppModule(appCodec, app.keeper.authz, app.keeper.acct, app.keeper.bank, app.interfaceRegistry), }, app.akashSimModules()..., )..., @@ -417,15 +445,21 @@ func NewApp( app.SetInitChainer(app.InitChainer) app.SetBeginBlocker(app.BeginBlocker) - app.SetAnteHandler( - ante.NewAnteHandler( - app.keeper.acct, - app.keeper.bank, - ante.DefaultSigVerificationGasConsumer, - encodingConfig.TxConfig.SignModeHandler(), - ), + anteHandler, err := ante.NewAnteHandler( + ante.HandlerOptions{ + AccountKeeper: app.keeper.acct, + BankKeeper: app.keeper.bank, + SignModeHandler: encodingConfig.TxConfig.SignModeHandler(), + FeegrantKeeper: app.keeper.feegrant, + SigGasConsumer: ante.DefaultSigVerificationGasConsumer, + }, ) + if err != nil { + panic(err) + } + + app.SetAnteHandler(anteHandler) app.SetEndBlocker(app.EndBlocker) if loadLatest { @@ -453,7 +487,7 @@ func NewApp( // MakeCodecs constructs the *std.Codec and *codec.LegacyAmino instances used by // simapp. It is useful for tests and clients who do not want to construct the // full simapp -func MakeCodecs() (codec.Marshaler, *codec.LegacyAmino) { +func MakeCodecs() (codec.Codec, *codec.LegacyAmino) { config := MakeEncodingConfig() return config.Marshaler, config.Amino } @@ -464,9 +498,10 @@ func (app *AkashApp) Name() string { return app.BaseApp.Name() } // InitChainer application update at chain initialization func (app *AkashApp) InitChainer(ctx sdk.Context, req abci.RequestInitChain) abci.ResponseInitChain { var genesisState simapp.GenesisState - if err := tmjson.Unmarshal(req.AppStateBytes, &genesisState); err != nil { + if err := json.Unmarshal(req.AppStateBytes, &genesisState); err != nil { panic(err) } + app.keeper.upgrade.SetModuleVersionMap(ctx, app.mm.GetVersionMap()) return app.mm.InitGenesis(ctx, app.appCodec, genesisState) } @@ -488,7 +523,7 @@ func (app *AkashApp) LegacyAmino() *codec.LegacyAmino { } // AppCodec returns AkashApp's app codec. -func (app *AkashApp) AppCodec() codec.Marshaler { +func (app *AkashApp) AppCodec() codec.Codec { return app.appCodec } @@ -497,18 +532,6 @@ func (app *AkashApp) ModuleAccountAddrs() map[string]bool { return MacAddrs() } -// BlockedAddrs returns all the app's module account addresses that are not -// allowed to receive external tokens. -func (app *AkashApp) BlockedAddrs() map[string]bool { - perms := MacPerms() - blockedAddrs := make(map[string]bool) - for acc := range perms { - blockedAddrs[authtypes.NewModuleAddress(acc).String()] = !allowedReceivingModAcc[acc] - } - - return blockedAddrs -} - // InterfaceRegistry returns AkashApp's InterfaceRegistry func (app *AkashApp) InterfaceRegistry() codectypes.InterfaceRegistry { return app.interfaceRegistry @@ -584,7 +607,7 @@ func (app *AkashApp) LoadHeight(height int64) error { } // initParamsKeeper init params keeper and its subspaces -func initParamsKeeper(appCodec codec.BinaryMarshaler, legacyAmino *codec.LegacyAmino, key, tkey sdk.StoreKey) paramskeeper.Keeper { +func initParamsKeeper(appCodec codec.BinaryCodec, legacyAmino *codec.LegacyAmino, key, tkey sdk.StoreKey) paramskeeper.Keeper { paramsKeeper := paramskeeper.NewKeeper(appCodec, legacyAmino, key, tkey) paramsKeeper.Subspace(authtypes.ModuleName) diff --git a/app/app_test.go b/app/app_test.go index a4b4a1640c..88a6a58ac8 100644 --- a/app/app_test.go +++ b/app/app_test.go @@ -19,7 +19,7 @@ func TestAppExport(t *testing.T) { db, nil, true, 0, map[int64]bool{}, DefaultHome, simapp.EmptyAppOptions{}) for acc := range MacPerms() { - require.Equal(t, !allowedReceivingModAcc[acc], app1.keeper.bank.BlockedAddr(app1.keeper.acct.GetModuleAddress(acc)), + require.True(t, app1.keeper.bank.BlockedAddr(app1.keeper.acct.GetModuleAddress(acc)), "ensure that blocked addresses are properly set in bank keeper") } diff --git a/app/config.go b/app/config.go index 574081628f..2d9f6eda30 100644 --- a/app/config.go +++ b/app/config.go @@ -8,6 +8,8 @@ import ( "github.com/cosmos/cosmos-sdk/x/auth" authtypes "github.com/cosmos/cosmos-sdk/x/auth/types" "github.com/cosmos/cosmos-sdk/x/auth/vesting" + authzkeeper "github.com/cosmos/cosmos-sdk/x/authz/keeper" + authzmodule "github.com/cosmos/cosmos-sdk/x/authz/module" "github.com/cosmos/cosmos-sdk/x/bank" banktypes "github.com/cosmos/cosmos-sdk/x/bank/types" "github.com/cosmos/cosmos-sdk/x/capability" @@ -18,13 +20,11 @@ import ( distrtypes "github.com/cosmos/cosmos-sdk/x/distribution/types" "github.com/cosmos/cosmos-sdk/x/evidence" evidencetypes "github.com/cosmos/cosmos-sdk/x/evidence/types" + "github.com/cosmos/cosmos-sdk/x/feegrant" + feegrantmodule "github.com/cosmos/cosmos-sdk/x/feegrant/module" "github.com/cosmos/cosmos-sdk/x/genutil" "github.com/cosmos/cosmos-sdk/x/gov" govtypes "github.com/cosmos/cosmos-sdk/x/gov/types" - transfer "github.com/cosmos/cosmos-sdk/x/ibc/applications/transfer" - ibctransfertypes "github.com/cosmos/cosmos-sdk/x/ibc/applications/transfer/types" - ibc "github.com/cosmos/cosmos-sdk/x/ibc/core" - ibchost "github.com/cosmos/cosmos-sdk/x/ibc/core/24-host" "github.com/cosmos/cosmos-sdk/x/mint" minttypes "github.com/cosmos/cosmos-sdk/x/mint/types" "github.com/cosmos/cosmos-sdk/x/params" @@ -37,6 +37,10 @@ import ( "github.com/cosmos/cosmos-sdk/x/upgrade" upgradeclient "github.com/cosmos/cosmos-sdk/x/upgrade/client" upgradetypes "github.com/cosmos/cosmos-sdk/x/upgrade/types" + transfer "github.com/cosmos/ibc-go/modules/apps/transfer" + ibctransfertypes "github.com/cosmos/ibc-go/modules/apps/transfer/types" + ibc "github.com/cosmos/ibc-go/modules/core" + ibchost "github.com/cosmos/ibc-go/modules/core/24-host" appparams "github.com/ovrclk/akash/app/params" ) @@ -65,9 +69,11 @@ var ( params.AppModuleBasic{}, crisis.AppModuleBasic{}, slashing.AppModuleBasic{}, + feegrantmodule.AppModuleBasic{}, ibc.AppModuleBasic{}, upgrade.AppModuleBasic{}, evidence.AppModuleBasic{}, + authzmodule.AppModuleBasic{}, transfer.AppModuleBasic{}, vesting.AppModuleBasic{}, }, @@ -105,9 +111,11 @@ func kvStoreKeys() map[string]*sdk.KVStoreKey { paramstypes.StoreKey, ibchost.StoreKey, upgradetypes.StoreKey, + feegrant.StoreKey, evidencetypes.StoreKey, ibctransfertypes.StoreKey, capabilitytypes.StoreKey, + authzkeeper.StoreKey, }, akashKVStoreKeys()..., )..., diff --git a/app/export.go b/app/export.go index a43677e879..919bdbd2b7 100644 --- a/app/export.go +++ b/app/export.go @@ -167,7 +167,7 @@ func (app *AkashApp) prepForZeroHeightGenesis(ctx sdk.Context, jailAllowedAddrs counter := int16(0) for ; iter.Valid(); iter.Next() { - addr := sdk.ValAddress(iter.Key()[1:]) + addr := sdk.ValAddress(stakingtypes.AddressFromValidatorsKey(iter.Key())) validator, found := app.keeper.staking.GetValidator(ctx, addr) if !found { panic("expected validator, not found") diff --git a/app/genesis.go b/app/genesis.go index 68b9dc6bae..d025431563 100644 --- a/app/genesis.go +++ b/app/genesis.go @@ -4,7 +4,7 @@ import ( "encoding/json" ) -// The genesis state of the blockchain is represented here as a map of raw json +// GenesisState of the blockchain is represented here as a map of raw json // messages key'd by a identifier string. // The identifier is used to determine which module genesis information belongs // to so it may be appropriately routed during init chain. diff --git a/app/mac.go b/app/mac.go index 8a60279433..a320a45061 100644 --- a/app/mac.go +++ b/app/mac.go @@ -4,9 +4,9 @@ import ( authtypes "github.com/cosmos/cosmos-sdk/x/auth/types" distrtypes "github.com/cosmos/cosmos-sdk/x/distribution/types" govtypes "github.com/cosmos/cosmos-sdk/x/gov/types" - ibctransfertypes "github.com/cosmos/cosmos-sdk/x/ibc/applications/transfer/types" minttypes "github.com/cosmos/cosmos-sdk/x/mint/types" stakingtypes "github.com/cosmos/cosmos-sdk/x/staking/types" + ibctransfertypes "github.com/cosmos/ibc-go/modules/apps/transfer/types" escrowtypes "github.com/ovrclk/akash/x/escrow/types" ) diff --git a/app/sim_test.go b/app/sim_test.go index 962fecefb6..8df038409d 100644 --- a/app/sim_test.go +++ b/app/sim_test.go @@ -25,13 +25,13 @@ import ( distrtypes "github.com/cosmos/cosmos-sdk/x/distribution/types" evidencetypes "github.com/cosmos/cosmos-sdk/x/evidence/types" govtypes "github.com/cosmos/cosmos-sdk/x/gov/types" - ibctransfertypes "github.com/cosmos/cosmos-sdk/x/ibc/applications/transfer/types" - ibchost "github.com/cosmos/cosmos-sdk/x/ibc/core/24-host" minttypes "github.com/cosmos/cosmos-sdk/x/mint/types" paramtypes "github.com/cosmos/cosmos-sdk/x/params/types" "github.com/cosmos/cosmos-sdk/x/simulation" slashingtypes "github.com/cosmos/cosmos-sdk/x/slashing/types" stakingtypes "github.com/cosmos/cosmos-sdk/x/staking/types" + ibctransfertypes "github.com/cosmos/ibc-go/modules/apps/transfer/types" + ibchost "github.com/cosmos/ibc-go/modules/core/24-host" ) // Get flags every time the simulator is run diff --git a/cmd/akash/cmd/genaccounts.go b/cmd/akash/cmd/genaccounts.go index 86e8939603..fcef8b6b26 100644 --- a/cmd/akash/cmd/genaccounts.go +++ b/cmd/akash/cmd/genaccounts.go @@ -44,8 +44,8 @@ contain valid denominations. Accounts may optionally be supplied with vesting pa Args: cobra.ExactArgs(2), RunE: func(cmd *cobra.Command, args []string) error { clientCtx := client.GetClientContextFromCmd(cmd) - depCdc := clientCtx.JSONMarshaler - cdc := depCdc.(codec.Marshaler) + depCdc := clientCtx.JSONCodec + cdc := depCdc.(codec.Codec) serverCtx := server.GetServerContextFromCmd(cmd) config := serverCtx.Config diff --git a/cmd/akash/cmd/root.go b/cmd/akash/cmd/root.go index 1d81317e98..a7a986a181 100644 --- a/cmd/akash/cmd/root.go +++ b/cmd/akash/cmd/root.go @@ -10,6 +10,7 @@ import ( "github.com/cosmos/cosmos-sdk/baseapp" "github.com/cosmos/cosmos-sdk/client" + config "github.com/cosmos/cosmos-sdk/client/config" "github.com/cosmos/cosmos-sdk/client/debug" "github.com/cosmos/cosmos-sdk/client/flags" "github.com/cosmos/cosmos-sdk/client/keys" @@ -20,7 +21,6 @@ import ( "github.com/cosmos/cosmos-sdk/snapshots" "github.com/cosmos/cosmos-sdk/store" sdk "github.com/cosmos/cosmos-sdk/types" - authclient "github.com/cosmos/cosmos-sdk/x/auth/client" authcmd "github.com/cosmos/cosmos-sdk/x/auth/client/cli" authtypes "github.com/cosmos/cosmos-sdk/x/auth/types" vestingcli "github.com/cosmos/cosmos-sdk/x/auth/vesting/client/cli" @@ -65,7 +65,7 @@ func bindFlags(cmd *cobra.Command, v *viper.Viper) { func NewRootCmd() (*cobra.Command, params.EncodingConfig) { encodingConfig := app.MakeEncodingConfig() initClientCtx := client.Context{}. - WithJSONMarshaler(encodingConfig.Marshaler). + WithJSONCodec(encodingConfig.Marshaler). WithInterfaceRegistry(encodingConfig.InterfaceRegistry). WithTxConfig(encodingConfig.TxConfig). WithLegacyAmino(encodingConfig.Amino). @@ -80,6 +80,13 @@ func NewRootCmd() (*cobra.Command, params.EncodingConfig) { Long: "Akash CLI Utility.\n\nAkash is a peer-to-peer marketplace for computing resources and \na deployment platform for heavily distributed applications. \nFind out more at https://akash.network", SilenceUsage: true, PersistentPreRunE: func(cmd *cobra.Command, _ []string) error { + initClientCtx = client.ReadHomeFlag(initClientCtx, cmd) + + initClientCtx, err := config.ReadFromClientConfig(initClientCtx) + if err != nil { + return err + } + if err := server.InterceptConfigsPreRunHandler(cmd); err != nil { return err } @@ -119,7 +126,6 @@ func Execute(rootCmd *cobra.Command) error { func initRootCmd(rootCmd *cobra.Command, encodingConfig params.EncodingConfig) { sdkutil.InitSDKConfig() - authclient.Codec = encodingConfig.Marshaler rootCmd.AddCommand( rpc.StatusCommand(), dcmd.RootCmd(), @@ -136,6 +142,7 @@ func initRootCmd(rootCmd *cobra.Command, encodingConfig params.EncodingConfig) { AddGenesisAccountCmd(app.DefaultHome), tmcli.NewCompletionCmd(rootCmd, true), debug.Cmd(), + config.Cmd(), ) rootCmd.SetOut(rootCmd.OutOrStdout()) diff --git a/go.mod b/go.mod index a70cd3f00b..a4d2abdfd6 100644 --- a/go.mod +++ b/go.mod @@ -6,11 +6,12 @@ require ( github.com/avast/retry-go v2.7.0+incompatible github.com/blang/semver v3.5.1+incompatible github.com/boz/go-lifecycle v0.1.1-0.20190620234137-5139c86739b8 - github.com/cosmos/cosmos-sdk v0.42.4 + github.com/cosmos/cosmos-sdk v0.43.0-beta1 + github.com/cosmos/ibc-go v1.0.0-alpha2 github.com/davecgh/go-spew v1.1.2-0.20180830191138-d8f796af33cc // indirect github.com/go-kit/kit v0.10.0 github.com/gogo/protobuf v1.3.3 - github.com/golang/protobuf v1.4.3 + github.com/golang/protobuf v1.5.2 github.com/gorilla/context v1.1.1 github.com/gorilla/mux v1.8.0 github.com/gorilla/websocket v1.4.2 @@ -20,26 +21,25 @@ require ( github.com/libp2p/go-buffer-pool v0.0.3-0.20190619091711-d94255cb3dfc // indirect github.com/pkg/errors v0.9.1 github.com/pmezard/go-difflib v1.0.1-0.20181226105442-5d4384ee4fb2 // indirect - github.com/prometheus/client_golang v1.8.0 + github.com/prometheus/client_golang v1.10.0 github.com/rakyll/statik v0.1.7 github.com/rs/cors v1.7.1-0.20191011001009-dcbccb712443 // indirect - github.com/rs/zerolog v1.20.0 + github.com/rs/zerolog v1.21.0 github.com/satori/go.uuid v1.2.0 github.com/shopspring/decimal v1.2.0 github.com/spf13/cast v1.3.1 - github.com/spf13/cobra v1.1.1 + github.com/spf13/cobra v1.1.3 github.com/spf13/pflag v1.0.5 github.com/spf13/viper v1.7.1 github.com/stretchr/objx v0.2.1-0.20190415111823-35313a95ee26 // indirect github.com/stretchr/testify v1.7.0 github.com/subosito/gotenv v1.2.1-0.20190917103637-de67a6614a4d // indirect - github.com/tendermint/tendermint v0.34.9 + github.com/tendermint/tendermint v0.34.10 github.com/tendermint/tm-db v0.6.4 - golang.org/x/sync v0.0.0-20201020160332-67f06af15bc9 - golang.org/x/sys v0.0.0-20210113181707-4bcb84eeeb78 // indirect + golang.org/x/sync v0.0.0-20201207232520-09787c993a3a google.golang.org/appengine v1.6.6-0.20191016204603-16bce7d3dc4e // indirect google.golang.org/genproto v0.0.0-20210114201628-6edceaf6022f - google.golang.org/grpc v1.35.0 + google.golang.org/grpc v1.37.0 gopkg.in/yaml.v3 v3.0.0-20200615113413-eeeca48fe776 k8s.io/api v0.19.3 k8s.io/apimachinery v0.19.3 @@ -57,8 +57,6 @@ replace google.golang.org/grpc => google.golang.org/grpc v1.33.2 replace github.com/grpc-ecosystem/grpc-gateway => github.com/grpc-ecosystem/grpc-gateway v1.14.7 -replace github.com/tendermint/tendermint => github.com/ovrclk/tendermint v0.34.9-akash-1 - replace ( github.com/cosmos/ledger-cosmos-go => github.com/ovrclk/ledger-cosmos-go v0.13.2 github.com/zondax/hid => github.com/troian/hid v0.9.9 diff --git a/go.sum b/go.sum index 4cd16654ed..081a4de266 100644 --- a/go.sum +++ b/go.sum @@ -11,13 +11,19 @@ cloud.google.com/go/firestore v1.1.0/go.mod h1:ulACoGHTpvq5r8rxGJ4ddJZBZqakUQqCl cloud.google.com/go/pubsub v1.0.1/go.mod h1:R0Gpsv3s54REJCy4fxDixWD93lHJMoZTyQ2kNxGRt3I= cloud.google.com/go/storage v1.0.0/go.mod h1:IhtSnM/ZTZV8YYJWCY8RULGVqBDmpoyjwiyrjsg+URw= dmitri.shuralyov.com/gpu/mtl v0.0.0-20190408044501-666a987793e9/go.mod h1:H6x//7gZCb22OMCxBHrMx7a5I7Hp++hsVxbQ4BYO7hU= +filippo.io/edwards25519 v1.0.0-beta.2 h1:/BZRNzm8N4K4eWfK28dL4yescorxtO7YG1yun8fy+pI= +filippo.io/edwards25519 v1.0.0-beta.2/go.mod h1:X+pm78QAUPtFLi1z9PYIlS/bdDnvbCOGKtZ+ACWEf7o= github.com/99designs/go-keychain v0.0.0-20191008050251-8e49817e8af4 h1:/vQbFIOMbk2FiG/kXiLl8BRyzTWDw7gX/Hz7Dd5eDMs= github.com/99designs/go-keychain v0.0.0-20191008050251-8e49817e8af4/go.mod h1:hN7oaIRCjzsZ2dE+yG5k+rsdt3qcwykqK6HVGcKwsw4= github.com/99designs/keyring v1.1.6 h1:kVDC2uCgVwecxCk+9zoCt2uEL6dt+dfVzMvGgnVcIuM= github.com/99designs/keyring v1.1.6/go.mod h1:16e0ds7LGQQcT59QqkTg72Hh5ShM51Byv5PEmW6uoRU= +github.com/Azure/azure-pipeline-go v0.2.1/go.mod h1:UGSo8XybXnIGZ3epmeBw7Jdz+HiUVpqIlpz/HKHylF4= +github.com/Azure/azure-pipeline-go v0.2.2/go.mod h1:4rQ/NZncSvGqNkkOsNpOU1tgoNuIlp9AfUH5G1tvCHc= +github.com/Azure/azure-storage-blob-go v0.7.0/go.mod h1:f9YQKtsG1nMisotuTPpO0tjNuEjKRYAcJU8/ydDI++4= github.com/Azure/go-autorest/autorest v0.9.0/go.mod h1:xyHB1BMZT0cuDHU7I0+g046+BFDTQ8rEZB0s4Yfa6bI= github.com/Azure/go-autorest/autorest v0.9.6/go.mod h1:/FALq9T/kS7b5J5qsQ+RSTUdAmGFqi0vUdVNNx8q630= github.com/Azure/go-autorest/autorest/adal v0.5.0/go.mod h1:8Z9fGy2MpX0PvDjB1pEgQTmVqjGhiHBW7RJJEciWzS0= +github.com/Azure/go-autorest/autorest/adal v0.8.0/go.mod h1:Z6vX6WXXuyieHAXwMj0S6HY6e6wcHn37qQMBQlvY3lc= github.com/Azure/go-autorest/autorest/adal v0.8.2/go.mod h1:ZjhuQClTqx435SRJ2iMlOxPYt3d2C/T/7TiQCVZSn3Q= github.com/Azure/go-autorest/autorest/date v0.1.0/go.mod h1:plvfp3oPSKwf2DNjlBjWF/7vwR+cUD/ELuzDCXwHUVA= github.com/Azure/go-autorest/autorest/date v0.2.0/go.mod h1:vcORJHLJEh643/Ioh9+vPmf1Ij9AEBM5FuBIXLmIy0g= @@ -47,6 +53,8 @@ github.com/PuerkitoBio/urlesc v0.0.0-20170810143723-de5bf2ad4578 h1:d+Bc7a5rLufV github.com/PuerkitoBio/urlesc v0.0.0-20170810143723-de5bf2ad4578/go.mod h1:uGdkoq3SwY9Y+13GIhn11/XLaGBb4BfwItxLd5jeuXE= github.com/Shopify/sarama v1.19.0/go.mod h1:FVkBWblsNy7DGZRfXLU0O9RCGt5g3g3yEuWXgklEdEo= github.com/Shopify/toxiproxy v2.1.4+incompatible/go.mod h1:OXgGpZ6Cli1/URJOF1DMxUHB2q5Ap20/P/eIdh4G0pI= +github.com/StackExchange/wmi v0.0.0-20180116203802-5d049714c4a6/go.mod h1:3eOhrUMpNV+6aFIbp5/iudMxNCF27Vw2OZgy4xEx0Fg= +github.com/VictoriaMetrics/fastcache v1.5.7/go.mod h1:ptDBkNMQI4RtmVo8VS/XwRY6RoTu1dAWCbrk+6WsEM8= github.com/VividCortex/gohistogram v1.0.0 h1:6+hBz+qvs0JOrrNhhmR7lFxo5sINxBCGXrdtl/UvroE= github.com/VividCortex/gohistogram v1.0.0/go.mod h1:Pf5mBqqDxYaXu3hDrrU+w6nw50o/4+TcAqDqk/vUH7g= github.com/Workiva/go-datastructures v1.0.52 h1:PLSK6pwn8mYdaoaCZEMsXBpBotr4HHn9abU0yMQt0NI= @@ -60,19 +68,24 @@ github.com/alecthomas/units v0.0.0-20190717042225-c3de453c63f4/go.mod h1:ybxpYRF github.com/alecthomas/units v0.0.0-20190924025748-f65c72e2690d/go.mod h1:rBZYJk541a8SKzHPHnH3zbiI+7dagKZ0cgpgrD7Fyho= github.com/alessio/shellescape v1.2.2 h1:8LnL+ncxhWT2TR00dfJRT25JWWrhkMZXneHVWnetDZg= github.com/alessio/shellescape v1.2.2/go.mod h1:PZAiSCk0LJaZkiCSkPv8qIobYglO3FPpyFjDCtHLS30= +github.com/allegro/bigcache v1.2.1-0.20190218064605-e24eb225f156/go.mod h1:Cb/ax3seSYIx7SuZdm2G2xzfwmv3TPSk2ucNfQESPXM= github.com/antihax/optional v1.0.0/go.mod h1:uupD/76wgC+ih3iEmQUL+0Ugr19nfwCT1kdvxnR2qWY= github.com/apache/thrift v0.12.0/go.mod h1:cp2SuWMxlEZw2r+iP2GNCdIi4C1qmUzdZFSVb+bacwQ= github.com/apache/thrift v0.13.0/go.mod h1:cp2SuWMxlEZw2r+iP2GNCdIi4C1qmUzdZFSVb+bacwQ= +github.com/aristanetworks/goarista v0.0.0-20170210015632-ea17b1a17847/go.mod h1:D/tb0zPVXnP7fmsLZjtdUhSsumbK/ij54UXjjVgMGxQ= github.com/armon/circbuf v0.0.0-20150827004946-bbbad097214e/go.mod h1:3U/XgcO3hCbHZ8TKRvWD2dDTCfh9M9ya+I9JpbB7O8o= github.com/armon/consul-api v0.0.0-20180202201655-eb2c6b5be1b6/go.mod h1:grANhF5doyWs3UAsr3K4I6qtAmlQcZDesFNEHPZAzj8= github.com/armon/go-metrics v0.0.0-20180917152333-f0300d1749da/go.mod h1:Q73ZrmVTwzkszR9V5SSuryQ31EELlFMUz1kKyl939pY= github.com/armon/go-metrics v0.3.6 h1:x/tmtOF9cDBoXH7XoAGOz2qqm1DknFD1590XmD/DUJ8= github.com/armon/go-metrics v0.3.6/go.mod h1:4O98XIr/9W0sxpJ8UaYkvjk10Iff7SnFrb4QAOwNTFc= +github.com/armon/go-metrics v0.3.8 h1:oOxq3KPj0WhCuy50EhzwiyMyG2ovRQZpZLXQuOh2a/M= +github.com/armon/go-metrics v0.3.8/go.mod h1:4O98XIr/9W0sxpJ8UaYkvjk10Iff7SnFrb4QAOwNTFc= github.com/armon/go-radix v0.0.0-20180808171621-7fddfc383310/go.mod h1:ufUuZ+zHj4x4TnLV4JWEpy2hxWSpsRywHrMgIH9cCH8= github.com/aryann/difflib v0.0.0-20170710044230-e206f873d14a/go.mod h1:DAHtR1m6lCRdSC2Tm3DSWRPvIPr6xNKyeHdqDQSQT+A= github.com/avast/retry-go v2.7.0+incompatible h1:XaGnzl7gESAideSjr+I8Hki/JBi+Yb9baHlMRPeSC84= github.com/avast/retry-go v2.7.0+incompatible/go.mod h1:XtSnn+n/sHqQIpZ10K1qAevBhOOCWBLXXy3hyiqqBrY= github.com/aws/aws-lambda-go v1.13.3/go.mod h1:4UKl9IzQMoD+QF79YdCuzCwp8VbmG4VAQwij/eHl5CU= +github.com/aws/aws-sdk-go v1.25.48/go.mod h1:KmX6BPdI08NWTb3/sm4ZGu5ShLoqVDhKgpiN924inxo= github.com/aws/aws-sdk-go v1.27.0/go.mod h1:KmX6BPdI08NWTb3/sm4ZGu5ShLoqVDhKgpiN924inxo= github.com/aws/aws-sdk-go-v2 v0.18.0/go.mod h1:JWVYvqSMppoMJC0x5wdwiImzgXTI9FuZwxzkQq9wy+g= github.com/beorn7/perks v0.0.0-20180321164747-3a771d992973/go.mod h1:Dwedo/Wpr24TaqPxmxbtue+5NUziq4I4S80YR8gNf3Q= @@ -86,6 +99,7 @@ github.com/blang/semver v3.5.1+incompatible h1:cQNTCjp13qL8KC3Nbxr/y2Bqb63oX6wdn github.com/blang/semver v3.5.1+incompatible/go.mod h1:kRBLl5iJ+tD4TcOOxsy/0fnwebNt5EWlYSAyrTnjyyk= github.com/boz/go-lifecycle v0.1.1-0.20190620234137-5139c86739b8 h1:0SsyL78bVw6RwFKVKFHv8kdREXxuGbQKDlo7FVy7Zss= github.com/boz/go-lifecycle v0.1.1-0.20190620234137-5139c86739b8/go.mod h1:zdagAUMcC2C0OmQkBlJZFV77uF4GCVaGphAexGi7oho= +github.com/btcsuite/btcd v0.0.0-20171128150713-2e60448ffcc6/go.mod h1:Dmm/EzmjnCiweXmzRIAiUWCInVmPgjkzgv5k4tVyXiQ= github.com/btcsuite/btcd v0.0.0-20190115013929-ed77733ec07d/go.mod h1:d3C0AkH6BRcvO8T0UEPu53cnw4IbV63x1bEjildYhO0= github.com/btcsuite/btcd v0.20.1-beta/go.mod h1:wVuoA8VJLEcwgqHBwHmzLRazpKxTv13Px/pDuV7OomQ= github.com/btcsuite/btcd v0.21.0-beta h1:At9hIZdJW0s9E/fAz28nrz6AmcNlSVucCH796ZteX1M= @@ -105,6 +119,7 @@ github.com/btcsuite/winsvc v1.0.0/go.mod h1:jsenWakMcC0zFBFurPLEAyrnc/teJEM1O46f github.com/casbin/casbin/v2 v2.1.2/go.mod h1:YcPU1XXisHhLzuxH9coDNf2FbKpjGlbCg3n9yuLkIJQ= github.com/cenkalti/backoff v2.2.1+incompatible/go.mod h1:90ReRw6GdpyfrHakVjL/QHaoyV4aDUVVkXQJJJ3NXXM= github.com/census-instrumentation/opencensus-proto v0.2.1/go.mod h1:f6KPmirojxKA12rnyqOA5BBL4O983OfeGPqjHWSTneU= +github.com/cespare/cp v0.1.0/go.mod h1:SOGHArjBr4JWaSDEVpWpo/hNg6RoKrls6Oh40hiwW+s= github.com/cespare/xxhash v1.1.0 h1:a6HrQnmkObjyL+Gs60czilIUGqrzKutQD6XZog3p+ko= github.com/cespare/xxhash v1.1.0/go.mod h1:XrSqR1VqqWfGrhpAt58auRo0WTKS1nRRg3ghfAqPWnc= github.com/cespare/xxhash/v2 v2.1.1 h1:6MnRN8NT7+YBpUIWxHtefFZOKTAPgGjpQSxqLNn0+qY= @@ -115,11 +130,17 @@ github.com/chzyer/test v0.0.0-20180213035817-a1ea475d72b1/go.mod h1:Q3SI9o4m/ZMn github.com/circonus-labs/circonus-gometrics v2.3.1+incompatible/go.mod h1:nmEj6Dob7S7YxXgwXpfOuvO54S+tGdZdw9fuRZt25Ag= github.com/circonus-labs/circonusllhist v0.1.3/go.mod h1:kMXHVDlOchFAehlya5ePtbp5jckzBHf4XRpQvBOLI+I= github.com/clbanning/x2j v0.0.0-20191024224557-825249438eec/go.mod h1:jMjuTZXRI4dUb/I5gc9Hdhagfvm9+RyrPryS/auMzxE= +github.com/cloudflare/cloudflare-go v0.10.2-0.20190916151808-a80f83b9add9/go.mod h1:1MxXX1Ux4x6mqPmjkUgTP1CdXIBXKX7T+Jk9Gxrmx+U= github.com/cncf/udpa/go v0.0.0-20191209042840-269d4d468f6f/go.mod h1:M8M6+tZqaGXZJjfX53e64911xZQV5JYwmTeXPW+k8Sc= github.com/cockroachdb/datadriven v0.0.0-20190809214429-80d97fb3cbaa/go.mod h1:zn76sxSg3SzpJ0PPJaLDCu+Bu0Lg3sKTORVIj19EIF8= github.com/codahale/hdrhistogram v0.0.0-20161010025455-3a0bb77429bd/go.mod h1:sE/e/2PUdi/liOCUjSTXgM1o87ZssimdTWN964YiIeI= +github.com/coinbase/rosetta-sdk-go v0.5.8/go.mod h1:xd4wYUhV3LkY78SPH8BUhc88rXfn2jYgN9BfiSjbcvM= +github.com/coinbase/rosetta-sdk-go v0.5.9 h1:CuGQE3HFmYwdEACJnuOtVI9cofqPsGvq6FdFIzaOPKI= +github.com/coinbase/rosetta-sdk-go v0.5.9/go.mod h1:xd4wYUhV3LkY78SPH8BUhc88rXfn2jYgN9BfiSjbcvM= github.com/confio/ics23/go v0.6.3 h1:PuGK2V1NJWZ8sSkNDq91jgT/cahFEW9RGp4Y5jxulf0= github.com/confio/ics23/go v0.6.3/go.mod h1:E45NqnlpxGnpfTWL/xauN7MRwEE28T4Dd4uraToOaKg= +github.com/confio/ics23/go v0.6.6 h1:pkOy18YxxJ/r0XFDCnrl4Bjv6h4LkBSpLS6F38mrKL8= +github.com/confio/ics23/go v0.6.6/go.mod h1:E45NqnlpxGnpfTWL/xauN7MRwEE28T4Dd4uraToOaKg= github.com/coreos/bbolt v1.3.2/go.mod h1:iRUV2dpdMOn7Bo10OQBFzIJO9kkE559Wcmn+qkEiiKk= github.com/coreos/etcd v3.3.10+incompatible/go.mod h1:uF7uidLiAD3TWHmW31ZFd/JWoc32PjwdhPthX9715RE= github.com/coreos/etcd v3.3.13+incompatible/go.mod h1:uF7uidLiAD3TWHmW31ZFd/JWoc32PjwdhPthX9715RE= @@ -132,11 +153,17 @@ github.com/coreos/pkg v0.0.0-20160727233714-3ac0863d7acf/go.mod h1:E3G3o1h8I7cfc github.com/coreos/pkg v0.0.0-20180928190104-399ea9e2e55f/go.mod h1:E3G3o1h8I7cfcXa63jLwjI0eiQQMgzzUDFVpN/nH/eA= github.com/cosmos/cosmos-sdk v0.42.4 h1:yaD4PyOx0LnyfiWasC5egg1U76lT83GRxjJjupPo7Gk= github.com/cosmos/cosmos-sdk v0.42.4/go.mod h1:I1Zw1zmU4rA/NITaakTb71pXQnQrWyFBhqo3WSeg0vA= +github.com/cosmos/cosmos-sdk v0.43.0-beta1 h1:cfRZY+opamo+zF+MuEbvriZwoSzfCuEh1fqUM8fFHbg= +github.com/cosmos/cosmos-sdk v0.43.0-beta1/go.mod h1:rpCPaC3MnityU4Io4CDZqZB4GMtPqNeYXxPk8iRqmYM= github.com/cosmos/go-bip39 v0.0.0-20180819234021-555e2067c45d/go.mod h1:tSxLoYXyBmiFeKpvmq4dzayMdCjCnu8uqmCysIGBT2Y= github.com/cosmos/go-bip39 v1.0.0 h1:pcomnQdrdH22njcAatO0yWojsUnCO3y2tNoV1cb6hHY= github.com/cosmos/go-bip39 v1.0.0/go.mod h1:RNJv0H/pOIVgxw6KS7QeX2a0Uo0aKUlfhZ4xuwvCdJw= github.com/cosmos/iavl v0.15.3 h1:xE9r6HW8GeKeoYJN4zefpljZ1oukVScP/7M8oj6SUts= github.com/cosmos/iavl v0.15.3/go.mod h1:OLjQiAQ4fGD2KDZooyJG9yz+p2ao2IAYSbke8mVvSA4= +github.com/cosmos/iavl v0.16.0 h1:ICIOB8xysirTX27GmVAaoeSpeozzgSu9d49w36xkVJA= +github.com/cosmos/iavl v0.16.0/go.mod h1:2A8O/Jz9YwtjqXMO0CjnnbTYEEaovE8jWcwrakH3PoE= +github.com/cosmos/ibc-go v1.0.0-alpha2 h1:G7CQLTgH5CLXp6UajmBcM6GcWb63p+ZTmIYzZoC7rfg= +github.com/cosmos/ibc-go v1.0.0-alpha2/go.mod h1:NU4IARjXt3Hj5xcju207SWjDMpqMx3CHUXejGe0EXfY= github.com/cpuguy83/go-md2man v1.0.10 h1:BSKMNlYxDvnunlTymqtgONjNnaRV1sTpcovwwjF22jk= github.com/cpuguy83/go-md2man v1.0.10/go.mod h1:SmD6nW6nTyfqj6ABTjUi3V3JVMnlJmwcJI5acqYI6dE= github.com/cpuguy83/go-md2man/v2 v2.0.0-20190314233015-f79a8a8ca69d/go.mod h1:maD7wRr/U5Z6m/iR4s+kqSMx2CaBsrgA7czyZG/E6dU= @@ -150,7 +177,10 @@ github.com/davecgh/go-spew v1.1.0/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSs github.com/davecgh/go-spew v1.1.1/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38= github.com/davecgh/go-spew v1.1.2-0.20180830191138-d8f796af33cc h1:U9qPSI2PIWSS1VwoXQT9A3Wy9MM3WgvqSxFWenqJduM= github.com/davecgh/go-spew v1.1.2-0.20180830191138-d8f796af33cc/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38= +github.com/deckarep/golang-set v0.0.0-20180603214616-504e848d77ea/go.mod h1:93vsz/8Wt4joVM7c2AVqh+YRMiUSc14yDtF28KmMOgQ= github.com/decred/dcrd/lru v1.0.0/go.mod h1:mxKOwFd7lFjN2GZYsiz/ecgqR6kkYAl+0pz0tEMk218= +github.com/desertbit/timer v0.0.0-20180107155436-c41aec40b27f h1:U5y3Y5UE0w7amNe7Z5G/twsBW0KEalRQXZzf8ufSh9I= +github.com/desertbit/timer v0.0.0-20180107155436-c41aec40b27f/go.mod h1:xH/i4TFMt8koVQZ6WFms69WAsDWr2XsYL3Hkl7jkoLE= github.com/dgraph-io/badger/v2 v2.2007.2 h1:EjjK0KqwaFMlPin1ajhP943VPENHJdEz1KLIegjaI3k= github.com/dgraph-io/badger/v2 v2.2007.2/go.mod h1:26P/7fbL4kUZVEVKLAKXkBXKOydDmM2p1e+NhhnBCAE= github.com/dgraph-io/ristretto v0.0.3-0.20200630154024-f66de99634de/go.mod h1:KPxhHT9ZxKefz+PCeOGsrHpl1qZ7i70dGTu2u+Ahh6E= @@ -161,16 +191,21 @@ github.com/dgryski/go-farm v0.0.0-20190423205320-6a90982ecee2/go.mod h1:SqUrOPUn github.com/dgryski/go-farm v0.0.0-20200201041132-a6ae2369ad13 h1:fAjc9m62+UWV/WAFKLNi6ZS0675eEUC9y3AlwSbQu1Y= github.com/dgryski/go-farm v0.0.0-20200201041132-a6ae2369ad13/go.mod h1:SqUrOPUnsFjfmXRMNPybcSiG0BgUW2AuFH8PAnS2iTw= github.com/dgryski/go-sip13 v0.0.0-20181026042036-e10d5fee7954/go.mod h1:vAd38F8PWV+bWy6jNmig1y/TA+kYO4g3RSRF0IAv0no= +github.com/dlclark/regexp2 v1.2.0/go.mod h1:2pZnwuY/m+8K6iRw6wQdMtk+rH5tNGR1i55kozfMjCc= +github.com/docker/docker v1.4.2-0.20180625184442-8e610b2b55bf/go.mod h1:eEKB0N0r5NX/I1kEveEz05bcu8tLC/8azJZsviup8Sk= github.com/docker/spdystream v0.0.0-20160310174837-449fdfce4d96/go.mod h1:Qh8CwZgvJUkLughtfhJv5dyTYa91l1fOUCrgjqmcifM= github.com/docopt/docopt-go v0.0.0-20180111231733-ee0de3bc6815/go.mod h1:WwZ+bS3ebgob9U8Nd0kOddGdZWjyMGR8Wziv+TBNwSE= +github.com/dop251/goja v0.0.0-20200721192441-a695b0cdd498/go.mod h1:Mw6PkjjMXWbTj+nnj4s3QPXq1jaT0s5pC0iFD4+BOAA= github.com/dustin/go-humanize v0.0.0-20171111073723-bb3d318650d4/go.mod h1:HtrtbFcZ19U5GC7JDqmcUSB87Iq5E25KnS6fMYU6eOk= github.com/dustin/go-humanize v1.0.0 h1:VSnTsYCnlFHaM2/igO1h6X3HA71jcobQuxemgkq4zYo= github.com/dustin/go-humanize v1.0.0/go.mod h1:HtrtbFcZ19U5GC7JDqmcUSB87Iq5E25KnS6fMYU6eOk= github.com/dvsekhvalnov/jose2go v0.0.0-20200901110807-248326c1351b h1:HBah4D48ypg3J7Np4N+HY/ZR76fx3HEUGxDU6Uk39oQ= github.com/dvsekhvalnov/jose2go v0.0.0-20200901110807-248326c1351b/go.mod h1:7BvyPhdbLxMXIYTFPLsyJRFMsKmOZnQmzh6Gb+uquuM= +github.com/dvyukov/go-fuzz v0.0.0-20200318091601-be3528f3a813/go.mod h1:11Gm+ccJnvAhCNLlf5+cS9KjtbaD5I5zaZpFMsTHWTw= github.com/eapache/go-resiliency v1.1.0/go.mod h1:kFI+JgMyC7bLPUVY133qvEBtVayf5mFgVsvEsIPBvNs= github.com/eapache/go-xerial-snappy v0.0.0-20180814174437-776d5712da21/go.mod h1:+020luEh2TKB4/GOp8oxxtq0Daoen/Cii55CzbTV6DU= github.com/eapache/queue v1.1.0/go.mod h1:6eCeP0CKFpHLu8blIFXhExK/dRa7WDZfr6jVFPTqq+I= +github.com/edsrzf/mmap-go v0.0.0-20160512033002-935e0e8a636c/go.mod h1:YO35OhQPt3KJa3ryjFM5Bs14WD66h8eGKpfaBNrHW5M= github.com/edsrzf/mmap-go v1.0.0/go.mod h1:YO35OhQPt3KJa3ryjFM5Bs14WD66h8eGKpfaBNrHW5M= github.com/elazarl/goproxy v0.0.0-20180725130230-947c36da3153/go.mod h1:/Zj4wYkgs4iZTTu3o/KG3Itv/qCCa8VVMlb3i9OVuzc= github.com/emicklei/go-restful v0.0.0-20170410110728-ff4f55a20633/go.mod h1:otzb+WCGbkyDHkqmQmT5YD2WR4BBwUdeQoFo8l/7tVs= @@ -180,6 +215,7 @@ github.com/enigmampc/btcutil v1.0.3-0.20200723161021-e2fb6adb2a25 h1:2vLKys4RBU4 github.com/enigmampc/btcutil v1.0.3-0.20200723161021-e2fb6adb2a25/go.mod h1:hTr8+TLQmkUkgcuh3mcr5fjrT9c64ZzsBCdCEC6UppY= github.com/envoyproxy/go-control-plane v0.9.4/go.mod h1:6rpuAdCZL397s3pYoYcLgu1mIlRU8Am5FuJP05cCM98= github.com/envoyproxy/protoc-gen-validate v0.1.0/go.mod h1:iSmxcyjqTsJpI2R4NaDN7+kN2VEUnK/pcBlmesArF7c= +github.com/ethereum/go-ethereum v1.9.23/go.mod h1:JIfVb6esrqALTExdz9hRYvrP0xBDf6wCncIu1hNwHpM= github.com/evanphx/json-patch v4.9.0+incompatible h1:kLcOMZeuLAJvL2BPWLMIj5oaZQobrkAqrL+WFZwQses= github.com/evanphx/json-patch v4.9.0+incompatible/go.mod h1:50XU6AFN0ol/bzJsmQLiYLvXMP4fmwYFNcr97nuDLSk= github.com/evanphx/json-patch/v5 v5.1.0 h1:B0aXl1o/1cP8NbviYiBMkcHBtUjIJ1/Ccg6b+SwCLQg= @@ -190,9 +226,12 @@ github.com/facebookgo/stack v0.0.0-20160209184415-751773369052 h1:JWuenKqqX8nojt github.com/facebookgo/stack v0.0.0-20160209184415-751773369052/go.mod h1:UbMTZqLaRiH3MsBH8va0n7s1pQYcu3uTb8G4tygF4Zg= github.com/facebookgo/subset v0.0.0-20150612182917-8dac2c3c4870 h1:E2s37DuLxFhQDg5gKsWoLBOB0n+ZW8s599zru8FJ2/Y= github.com/facebookgo/subset v0.0.0-20150612182917-8dac2c3c4870/go.mod h1:5tD+neXqOorC30/tWg0LCSkrqj/AR6gu8yY8/fpw1q0= +github.com/fatih/color v1.3.0/go.mod h1:Zm6kSWBoL9eyXnKyktHP6abPY2pDugNf5KwzbycvMj4= github.com/fatih/color v1.7.0/go.mod h1:Zm6kSWBoL9eyXnKyktHP6abPY2pDugNf5KwzbycvMj4= +github.com/fatih/color v1.9.0/go.mod h1:eQcE1qtQxscV5RaZvpXrrb8Drkc3/DdQ+uUYCNjL+zU= github.com/felixge/httpsnoop v1.0.1 h1:lvB5Jl89CsZtGIWuTcDM1E/vkVs49/Ml7JJe07l8SPQ= github.com/felixge/httpsnoop v1.0.1/go.mod h1:m8KPJKqk1gH5J9DgRY2ASl2lWCfGKXixSwevea8zH2U= +github.com/fjl/memsize v0.0.0-20180418122429-ca190fb6ffbc/go.mod h1:VvhXpOYNQvB+uIk2RvXzuaQtkQJzzIx6lSBe1xv7hi0= github.com/fortytw2/leaktest v1.3.0 h1:u8491cBMTQ8ft8aeV+adlcytMZylmA5nnwwkRZjI8vw= github.com/fortytw2/leaktest v1.3.0/go.mod h1:jDsjWgpAGjm2CA7WthBh/CdZYEPF31XHquHwclZch5g= github.com/franela/goblin v0.0.0-20200105215937-c9ffbefa60db/go.mod h1:7dvUGVsVBjqR7JHJk0brhHOZYGmfBYOrK0ZhYMEtBr4= @@ -200,8 +239,11 @@ github.com/franela/goreq v0.0.0-20171204163338-bcd34c9993f8/go.mod h1:ZhphrRTfi2 github.com/fsnotify/fsnotify v1.4.7/go.mod h1:jwhsz4b93w/PPRr/qN1Yymfu8t87LnFCMoQvtojpjFo= github.com/fsnotify/fsnotify v1.4.9 h1:hsms1Qyu0jgnwNXIxa+/V/PDsU6CfLf6CNO8H7IWoS4= github.com/fsnotify/fsnotify v1.4.9/go.mod h1:znqG4EE+3YCdAaPaxE2ZRY/06pZUdp0tY4IgpuI1SZQ= +github.com/gballet/go-libpcsclite v0.0.0-20190607065134-2772fd86a8ff/go.mod h1:x7DCsMOv1taUwEWCzT4cmDeAkigA5/QCwUodaVOe8Ww= github.com/ghodss/yaml v0.0.0-20150909031657-73d445a93680/go.mod h1:4dBDuWmgqj2HViK6kFavaiC9ZROes6MMH2rRYeMEF04= github.com/ghodss/yaml v1.0.0/go.mod h1:4dBDuWmgqj2HViK6kFavaiC9ZROes6MMH2rRYeMEF04= +github.com/gin-contrib/sse v0.1.0/go.mod h1:RHrZQHXnP2xjPF+u1gW/2HnVO7nvIa9PG3Gm+fLHvGI= +github.com/gin-gonic/gin v1.6.3/go.mod h1:75u5sXoLsGZoRN5Sgbi1eraJ4GU3++wFwWzhwvtwp4M= github.com/go-gl/glfw v0.0.0-20190409004039-e6da0acd62b1/go.mod h1:vR7hzQXu2zJy9AVAgeJqvqgH9Q5CA+iKCZ2gyEVpxRU= github.com/go-gl/glfw/v3.3/glfw v0.0.0-20191125211704-12ad95a8df72/go.mod h1:tQ2UAYgL5IevRw8kRxooKSPJfGvJ9fJQFa0TUsXzTg8= github.com/go-gl/glfw/v3.3/glfw v0.0.0-20200222043503-6f7a984d4dc4/go.mod h1:tQ2UAYgL5IevRw8kRxooKSPJfGvJ9fJQFa0TUsXzTg8= @@ -216,6 +258,7 @@ github.com/go-logfmt/logfmt v0.5.0/go.mod h1:wCYkCAKZfumFQihp8CzCvQ3paCTfi41vtzG github.com/go-logr/logr v0.1.0/go.mod h1:ixOQHD9gLJUVQQ2ZOR7zLEifBX6tGkNJF4QyIY7sIas= github.com/go-logr/logr v0.2.0 h1:QvGt2nLcHH0WK9orKa+ppBPAxREcH364nPUedEpK0TY= github.com/go-logr/logr v0.2.0/go.mod h1:z6/tIYblkpsD+a4lm/fGIIU9mZ+XfAiaFtq7xTgseGU= +github.com/go-ole/go-ole v1.2.1/go.mod h1:7FAglXiTm7HKlQRDeOQ6ZNUHidzCWXuZWq/1dTyBNF8= github.com/go-openapi/jsonpointer v0.0.0-20160704185906-46af16f9f7b1/go.mod h1:+35s3my2LFTysnkMfxsJBAMHj/DoqoB9knIWoYG/Vk0= github.com/go-openapi/jsonpointer v0.19.2/go.mod h1:3akKfEdA7DF1sugOqz1dVQHBcuDBPKZGEoHC/NkiQRg= github.com/go-openapi/jsonpointer v0.19.3 h1:gihV7YNZK1iK6Tgwwsxo2rJbD1GTbdm72325Bq8FI3w= @@ -231,9 +274,17 @@ github.com/go-openapi/swag v0.0.0-20160704191624-1d0bd113de87/go.mod h1:DXUve3Dp github.com/go-openapi/swag v0.19.2/go.mod h1:POnQmlKehdgb5mhVOsnJFsivZCEZ/vjK9gh66Z9tfKk= github.com/go-openapi/swag v0.19.5 h1:lTz6Ys4CmqqCQmZPBlbQENR1/GucA2bzYTE12Pw4tFY= github.com/go-openapi/swag v0.19.5/go.mod h1:POnQmlKehdgb5mhVOsnJFsivZCEZ/vjK9gh66Z9tfKk= +github.com/go-playground/assert/v2 v2.0.1/go.mod h1:VDjEfimB/XKnb+ZQfWdccd7VUvScMdVu0Titje2rxJ4= +github.com/go-playground/locales v0.13.0/go.mod h1:taPMhCMXrRLJO55olJkUXHZBHCxTMfnGwq/HNwmWNS8= +github.com/go-playground/universal-translator v0.17.0/go.mod h1:UkSxE5sNxxRwHyU+Scu5vgOQjsIJAF8j9muTVoKLVtA= +github.com/go-playground/validator/v10 v10.2.0/go.mod h1:uOYAAleCW8F/7oMFd6aG0GOhaH6EGOAJShg8Id5JGkI= +github.com/go-sourcemap/sourcemap v2.1.2+incompatible/go.mod h1:F8jJfvm2KbVjc5NqelyYJmf/v5J0dwNLS2mL4sNA1Jg= github.com/go-sql-driver/mysql v1.4.0/go.mod h1:zAC/RDZ24gD3HViQzih4MyKcchzm+sOG5ZlKdlhCg5w= github.com/go-stack/stack v1.8.0 h1:5SgMzNM5HxrEjV0ww2lTmX6E2Izsfxas4+YHWRs3Lsk= github.com/go-stack/stack v1.8.0/go.mod h1:v0f6uXyyMGvRgIKkXu+yp6POWl0qKG85gN/melR3HDY= +github.com/gobwas/httphead v0.0.0-20180130184737-2c6c146eadee/go.mod h1:L0fX3K22YWvt/FAX9NnzrNzcI4wNYi9Yku4O0LKYflo= +github.com/gobwas/pool v0.2.0/go.mod h1:q8bcK0KcYlCgd9e7WYLm9LpyS+YeLd8JVDW6WezmKEw= +github.com/gobwas/ws v1.0.2/go.mod h1:szmBTxLgaFppYjEmNtny/v3w89xOydFnnZMcgRRu/EM= github.com/godbus/dbus v0.0.0-20190726142602-4481cbc300e2 h1:ZpnhV/YsD2/4cESfV5+Hoeu/iUR3ruzNvZ+yQfO03a0= github.com/godbus/dbus v0.0.0-20190726142602-4481cbc300e2/go.mod h1:bBOAhwG1umN6/6ZUMtDFBMQR8jRg9O75tm9K00oMsK4= github.com/gogo/gateway v1.1.0 h1:u0SuhL9+Il+UbjM9VIE3ntfRujKbvVpFvNB4HbjeVQ0= @@ -263,8 +314,12 @@ github.com/golang/protobuf v1.4.1/go.mod h1:U8fpvMrcmy5pZrNK1lt4xCsGvpyWQ/VVv6QD github.com/golang/protobuf v1.4.2/go.mod h1:oDoupMAO8OvCJWAcko0GGGIgR6R6ocIYbsSw735rRwI= github.com/golang/protobuf v1.4.3 h1:JjCZWpVbqXDqFVmTfYWEVTMIYrL/NPdPSCHPJ0T/raM= github.com/golang/protobuf v1.4.3/go.mod h1:oDoupMAO8OvCJWAcko0GGGIgR6R6ocIYbsSw735rRwI= +github.com/golang/protobuf v1.5.0/go.mod h1:FsONVRAS9T7sI+LIUmWTfcYkHO4aIWwzhcaSAoJOfIk= +github.com/golang/protobuf v1.5.2 h1:ROPKBNFfQgOUMifHyP+KYbvpjbdoFNs+aK7DXlji0Tw= +github.com/golang/protobuf v1.5.2/go.mod h1:XVQd3VNwM+JqD3oG2Ue2ip4fOMUkwXdXDdiuN0vRsmY= github.com/golang/snappy v0.0.0-20180518054509-2e65f85255db/go.mod h1:/XxbfmMg8lxefKM7IXC3fBNl/7bRcc72aCRzEWrmP2Q= github.com/golang/snappy v0.0.1/go.mod h1:/XxbfmMg8lxefKM7IXC3fBNl/7bRcc72aCRzEWrmP2Q= +github.com/golang/snappy v0.0.2-0.20200707131729-196ae77b8a26/go.mod h1:/XxbfmMg8lxefKM7IXC3fBNl/7bRcc72aCRzEWrmP2Q= github.com/golang/snappy v0.0.2 h1:aeE13tS0IiQgFjYdoL8qN3K1N2bXXtI6Vi51/y7BpMw= github.com/golang/snappy v0.0.2/go.mod h1:/XxbfmMg8lxefKM7IXC3fBNl/7bRcc72aCRzEWrmP2Q= github.com/google/btree v0.0.0-20180813153112-4030bb1f1f0c/go.mod h1:lNA+9X1NB3Zf8V7Ke586lFgjr2dZNuvo3lPJSGZ5JPQ= @@ -276,10 +331,16 @@ github.com/google/go-cmp v0.3.1/go.mod h1:8QqcDgzrUqlUb/G2PQTWiueGozuR1884gddMyw github.com/google/go-cmp v0.4.0/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/gNBxE= github.com/google/go-cmp v0.5.0 h1:/QaMHBdZ26BB3SSst0Iwl10Epc+xhTquomWX0oZEB6w= github.com/google/go-cmp v0.5.0/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/gNBxE= +github.com/google/go-cmp v0.5.2/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/gNBxE= +github.com/google/go-cmp v0.5.4/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/gNBxE= +github.com/google/go-cmp v0.5.5 h1:Khx7svrCpmxxtHBq5j2mp/xVjsi8hQMfNLvJFAlrGgU= +github.com/google/go-cmp v0.5.5/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/gNBxE= github.com/google/gofuzz v0.0.0-20170612174753-24818f796faf/go.mod h1:HP5RmnzzSNb993RKQDq4+1A4ia9nllfqcQFTQJedwGI= github.com/google/gofuzz v1.0.0/go.mod h1:dBl0BpW6vV/+mYPU4Po3pmUjxk6FQPldtuIdl/M65Eg= github.com/google/gofuzz v1.1.0 h1:Hsa8mG0dQ46ij8Sl2AYJDUv1oA9/d6Vk+3LG99Oe02g= github.com/google/gofuzz v1.1.0/go.mod h1:dBl0BpW6vV/+mYPU4Po3pmUjxk6FQPldtuIdl/M65Eg= +github.com/google/gofuzz v1.1.1-0.20200604201612-c04b05f3adfa h1:Q75Upo5UN4JbPFURXZ8nLKYUvF85dyFRop/vQ0Rv+64= +github.com/google/gofuzz v1.1.1-0.20200604201612-c04b05f3adfa/go.mod h1:dBl0BpW6vV/+mYPU4Po3pmUjxk6FQPldtuIdl/M65Eg= github.com/google/martian v2.1.0+incompatible/go.mod h1:9I4somxYTbIHy5NJKHRl3wXiIaQGbYVAs8BPL6v8lEs= github.com/google/orderedcode v0.0.1 h1:UzfcAexk9Vhv8+9pNOgRu41f16lHq725vPwnSeiG/Us= github.com/google/orderedcode v0.0.1/go.mod h1:iVyU4/qPKHY5h/wSd6rZZCDcLJNxiWO6dvsYES2Sb20= @@ -297,6 +358,7 @@ github.com/googleapis/gnostic v0.4.1 h1:DLJCy1n/vrD4HPjOvYcT8aYQXpPIzoRZONaYwyyc github.com/googleapis/gnostic v0.4.1/go.mod h1:LRhVm6pbyptWbWbuZ38d1eyptfvIytN3ir6b65WBswg= github.com/gopherjs/gopherjs v0.0.0-20181017120253-0766667cb4d1 h1:EGx4pi6eqNxGaHF6qqu48+N2wcFQ5qg5FXgOdqsJ5d8= github.com/gopherjs/gopherjs v0.0.0-20181017120253-0766667cb4d1/go.mod h1:wJfORRmW1u3UXTncJ5qlYoELFm8eSnnEO6hX4iZ3EWY= +github.com/gordonklaus/ineffassign v0.0.0-20200309095847-7953dde2c7bf/go.mod h1:cuNKsD1zp2v6XfE/orVX2QE1LC+i254ceGcVeDT3pTU= github.com/gorilla/context v1.1.1 h1:AWwleXJkX/nhcU9bZSnZoi3h/qGYqQAGhq6zZe/aQW8= github.com/gorilla/context v1.1.1/go.mod h1:kBGZzfjB9CEq2AlWe17Uuf7NDRt0dE0s8S51q0aT7Yg= github.com/gorilla/handlers v1.5.1 h1:9lRY6j8DEeeBT10CvO9hGW0gmky0BprnvDI5vfhUHH4= @@ -307,13 +369,18 @@ github.com/gorilla/mux v1.8.0 h1:i40aqfkR1h2SlN9hojwV5ZA91wcXFOvkdNIeFDP5koI= github.com/gorilla/mux v1.8.0/go.mod h1:DVbg23sWSpFRCP0SfiEN6jmj59UnW/n46BH5rLB71So= github.com/gorilla/websocket v0.0.0-20170926233335-4201258b820c/go.mod h1:E7qHFY5m1UJ88s3WnNqhKjPHQ0heANvMoAMk2YaljkQ= github.com/gorilla/websocket v1.4.0/go.mod h1:E7qHFY5m1UJ88s3WnNqhKjPHQ0heANvMoAMk2YaljkQ= +github.com/gorilla/websocket v1.4.1-0.20190629185528-ae1634f6a989/go.mod h1:E7qHFY5m1UJ88s3WnNqhKjPHQ0heANvMoAMk2YaljkQ= +github.com/gorilla/websocket v1.4.1/go.mod h1:YR8l580nyteQvAITg2hZ9XVh4b55+EU/adAjf1fMHhE= github.com/gorilla/websocket v1.4.2 h1:+/TMaTYc4QFitKJxsQ7Yye35DkWvkdLcvGKqM+x0Ufc= github.com/gorilla/websocket v1.4.2/go.mod h1:YR8l580nyteQvAITg2hZ9XVh4b55+EU/adAjf1fMHhE= +github.com/graph-gophers/graphql-go v0.0.0-20191115155744-f33e81362277/go.mod h1:9CQHMSxwO4MprSdzoIEobiHpoLtHm77vfxsvsIN5Vuc= github.com/gregjones/httpcache v0.0.0-20180305231024-9cad4c3443a7/go.mod h1:FecbI9+v66THATjSRHfNgh1IVFe/9kFxbXtjV0ctIMA= github.com/grpc-ecosystem/go-grpc-middleware v1.0.0/go.mod h1:FiyG127CGDf3tlThmgyCl78X/SZQqEOJBCDaAfeWzPs= github.com/grpc-ecosystem/go-grpc-middleware v1.0.1-0.20190118093823-f849b5445de4/go.mod h1:FiyG127CGDf3tlThmgyCl78X/SZQqEOJBCDaAfeWzPs= github.com/grpc-ecosystem/go-grpc-middleware v1.2.2 h1:FlFbCRLd5Jr4iYXZufAvgWN6Ao0JrI5chLINnUXDDr0= github.com/grpc-ecosystem/go-grpc-middleware v1.2.2/go.mod h1:EaizFBKfUKtMIF5iaDEhniwNedqGo9FuLFzppDr3uwI= +github.com/grpc-ecosystem/go-grpc-middleware v1.3.0 h1:+9834+KizmvFV7pXQGSXQTsaWhq2GjuNUt0aUU0YBYw= +github.com/grpc-ecosystem/go-grpc-middleware v1.3.0/go.mod h1:z0ButlSOZa5vEBq9m2m2hlwIgKw+rp3sdCBRoJY+30Y= github.com/grpc-ecosystem/go-grpc-prometheus v1.2.0/go.mod h1:8NvIoxWQoOIhqOTXgfV/d3M/q6VIi02HzZEHgUlZvzk= github.com/grpc-ecosystem/grpc-gateway v1.14.7 h1:Nk5kuHrnWUTf/0GL1a/vchH/om9Ap2/HnVna+jYZgTY= github.com/grpc-ecosystem/grpc-gateway v1.14.7/go.mod h1:oYZKL012gGh6LMyg/xA7Q2yq6j8bu0wa+9w14EEthWU= @@ -355,16 +422,26 @@ github.com/hashicorp/logutils v1.0.0/go.mod h1:QIAnNjmIWmVIIkWDTG1z5v++HQmx9WQRO github.com/hashicorp/mdns v1.0.0/go.mod h1:tL+uN++7HEJ6SQLQ2/p+z2pH24WQKWjBPkE0mNTz8vQ= github.com/hashicorp/memberlist v0.1.3/go.mod h1:ajVTdAv/9Im8oMAAj5G31PhhMCZJV2pPBoIllUwCN7I= github.com/hashicorp/serf v0.8.2/go.mod h1:6hOLApaqBFA1NXqRQAsxw9QxuDEvNxSQRwA/JwenrHc= +github.com/hdevalence/ed25519consensus v0.0.0-20210204194344-59a8610d2b87 h1:uUjLpLt6bVvZ72SQc/B4dXcPBw4Vgd7soowdRl52qEM= +github.com/hdevalence/ed25519consensus v0.0.0-20210204194344-59a8610d2b87/go.mod h1:XGsKKeXxeRr95aEOgipvluMPlgjr7dGlk9ZTWOjcUcg= +github.com/holiman/uint256 v1.1.1/go.mod h1:y4ga/t+u+Xwd7CpDgZESaRcWy0I7XMlTMA25ApIH5Jw= github.com/hpcloud/tail v1.0.0/go.mod h1:ab1qPbhIpdTxEkNHXyeSf5vhxWSCs/tWer42PpOxQnU= github.com/hudl/fargo v1.3.0/go.mod h1:y3CKSmjA+wD2gak7sUSXTAoopbhU08POFhmITJgmKTg= +github.com/huin/goupnp v1.0.0/go.mod h1:n9v9KO1tAxYH82qOn+UTIFQDmx5n1Zxd/ClZDMX7Bnc= +github.com/huin/goutil v0.0.0-20170803182201-1ca381bf3150/go.mod h1:PpLOETDnJ0o3iZrZfqZzyLl6l7F3c6L1oWn7OICBi6o= github.com/ianlancetaylor/demangle v0.0.0-20181102032728-5e5cf60278f6/go.mod h1:aSSvb/t6k1mPoxDqO4vJh6VOCGPwU4O0C2/Eqndh1Sc= github.com/imdario/mergo v0.3.5 h1:JboBksRwiiAJWvIYJVo46AfV+IAIKZpfrSzVKj42R4Q= github.com/imdario/mergo v0.3.5/go.mod h1:2EnlNZ0deacrJVfApfmtdGgDfMuh/nq6Ok1EcJh5FfA= +github.com/improbable-eng/grpc-web v0.14.0 h1:GdoK+cXABdB+1keuqsV1drSFO2XLYIxqt/4Rj8SWGBk= +github.com/improbable-eng/grpc-web v0.14.0/go.mod h1:6hRR09jOEG81ADP5wCQju1z71g6OL4eEvELdran/3cs= github.com/inconshreveable/mousetrap v1.0.0 h1:Z8tu5sraLXCXIcARxBp/8cbvlwVa7Z1NHg9XEKhtSvM= github.com/inconshreveable/mousetrap v1.0.0/go.mod h1:PxqpIevigyE2G7u3NXJIT2ANytuPF1OarO4DADm73n8= +github.com/influxdata/influxdb v1.2.3-0.20180221223340-01288bdb0883/go.mod h1:qZna6X/4elxqT3yI9iZYdZrWWdeFOOprn86kgg4+IzY= github.com/influxdata/influxdb1-client v0.0.0-20191209144304-8bf82d3c094d/go.mod h1:qj24IKcXYK6Iy9ceXlo3Tc+vtHo9lIhSX5JddghvEPo= +github.com/jackpal/go-nat-pmp v1.0.2-0.20160603034137-1fa385a6f458/go.mod h1:QPH045xvCAeXUZOxsnwmrtiCoxIr9eob+4orBN1SBKc= github.com/jessevdk/go-flags v0.0.0-20141203071132-1679536dcc89/go.mod h1:4FA24M0QyGHXBuZZK/XkWh8h0e1EYbRYJSGM75WSRxI= github.com/jessevdk/go-flags v1.4.0/go.mod h1:4FA24M0QyGHXBuZZK/XkWh8h0e1EYbRYJSGM75WSRxI= +github.com/jhump/protoreflect v1.8.2/go.mod h1:7GcYQDdMU/O/BBrl/cX6PNHpXh6cenjd8pneu5yW7Tg= github.com/jmespath/go-jmespath v0.0.0-20180206201540-c2b33e8439af/go.mod h1:Nht3zPeWKUH0NzdCt2Blrr5ys8VGpn0CEB0cQHVjt7k= github.com/jmhodges/levigo v1.0.0/go.mod h1:Q6Qx+uH3RAqyK4rFQroq9RL7mdkABMcfhEI+nNuzMJQ= github.com/jmhodges/levigo v1.0.1-0.20191019112844-b572e7f4cdac h1:GcJkaxD5Wy/Ucn+L0USlpbGJy9O6+7r0nBI7ftJ7Uu0= @@ -382,12 +459,16 @@ github.com/jstemmer/go-junit-report v0.0.0-20190106144839-af01ea7f8024/go.mod h1 github.com/jstemmer/go-junit-report v0.9.1/go.mod h1:Brl9GWCQeLvo8nXZwPNNblvFj/XSXhF0NWZEnDohbsk= github.com/jtolds/gls v4.20.0+incompatible h1:xdiiI2gbIgH/gLH7ADydsJ1uDOEzR8yvV7C0MuV77Wo= github.com/jtolds/gls v4.20.0+incompatible/go.mod h1:QJZ7F/aHp+rZTRtaJ1ow/lLfFfVYBRgL+9YlvaHOwJU= +github.com/julienschmidt/httprouter v1.1.1-0.20170430222011-975b5c4c7c21/go.mod h1:SYymIcj16QtmaHHD7aYtjjsJG7VTCxuUUipMqKk8s4w= github.com/julienschmidt/httprouter v1.2.0/go.mod h1:SYymIcj16QtmaHHD7aYtjjsJG7VTCxuUUipMqKk8s4w= github.com/julienschmidt/httprouter v1.3.0/go.mod h1:JR6WtHb+2LUe8TCKY3cZOxFyyO8IZAc4RVcycCCAKdM= +github.com/karalabe/usb v0.0.0-20190919080040-51dc0efba356/go.mod h1:Od972xHfMJowv7NGVDiWVxk2zxnWgjLlJzE+F4F7AGU= github.com/kisielk/errcheck v1.5.0/go.mod h1:pFxgyoBC7bSaBwPgfKdkLd5X25qrDl4LWUI2bnpBCr8= github.com/kisielk/gotool v1.0.0/go.mod h1:XhKaO+MFFWcvkIS/tQcRk01m1F5IRFswLeQ+oQHNcck= github.com/kkdai/bstream v0.0.0-20161212061736-f391b8402d23/go.mod h1:J+Gs4SYgM6CZQHDETBtE9HaSEkGmuNXF86RwHhHUvq4= github.com/kkdai/bstream v1.0.0/go.mod h1:FDnDOHt5Yx4p3FaHcioFT0QjDOtgUpvjeZqAs+NVZZA= +github.com/klauspost/compress v1.10.3 h1:OP96hzwJVBIHYU52pVTI6CczrxPvrGfgqF9N5eTO0Q8= +github.com/klauspost/compress v1.10.3/go.mod h1:aoV0uJVorq1K+umq18yTdKaF57EivdYsUV+/s2qKfXs= github.com/konsorten/go-windows-terminal-sequences v1.0.1/go.mod h1:T0+1ngSBFLxvqU3pZ+m/2kptfBszLMUkC4ZK/EgS/cQ= github.com/konsorten/go-windows-terminal-sequences v1.0.3/go.mod h1:T0+1ngSBFLxvqU3pZ+m/2kptfBszLMUkC4ZK/EgS/cQ= github.com/kr/fs v0.1.0/go.mod h1:FFnZGqtBN9Gxj7eW1uZ42v5BccTP0vu6NEaFoC2HwRg= @@ -399,26 +480,41 @@ github.com/kr/pty v1.1.1/go.mod h1:pFQYn66WHrOpPYNljwOMqo10TkYh1fy3cYio2l3bCsQ= github.com/kr/pty v1.1.5/go.mod h1:9r2w37qlBe7rQ6e1fg1S/9xpWHSnaqNdHD3WcMdbPDA= github.com/kr/text v0.1.0 h1:45sCR5RtlFHMR4UwH9sdQ5TC8v0qDQCHnXt+kaKSTVE= github.com/kr/text v0.1.0/go.mod h1:4Jbv+DJW3UT/LiOwJeYQe1efqtUx/iVham/4vfdArNI= +github.com/kylelemons/godebug v1.1.0/go.mod h1:9/0rRGxNHcop5bhtWyNeEfOS8JIWk580+fNqagV/RAw= +github.com/leodido/go-urn v1.2.0/go.mod h1:+8+nEpDfqqsY+g338gtMEUOtuK+4dEMhiQEgxpxOKII= github.com/libp2p/go-buffer-pool v0.0.2/go.mod h1:MvaB6xw5vOrDl8rYZGLFdKAuk/hRoRZd1Vi32+RXyFM= github.com/libp2p/go-buffer-pool v0.0.3-0.20190619091711-d94255cb3dfc h1:0hdbTX4400jUo9y5f7n+O1s15cAcyrL0O+K+2B2iD3I= github.com/libp2p/go-buffer-pool v0.0.3-0.20190619091711-d94255cb3dfc/go.mod h1:MvaB6xw5vOrDl8rYZGLFdKAuk/hRoRZd1Vi32+RXyFM= github.com/lightstep/lightstep-tracer-common/golang/gogo v0.0.0-20190605223551-bc2310a04743/go.mod h1:qklhhLq1aX+mtWk9cPHPzaBjWImj5ULL6C7HFJtXQMM= github.com/lightstep/lightstep-tracer-go v0.18.1/go.mod h1:jlF1pusYV4pidLvZ+XD0UBX0ZE6WURAspgAczcDHrL4= +github.com/lucasjones/reggen v0.0.0-20180717132126-cdb49ff09d77/go.mod h1:5ELEyG+X8f+meRWHuqUOewBOhvHkl7M76pdGEansxW4= github.com/magiconair/properties v1.8.0/go.mod h1:PppfXfuXeibc/6YijjN8zIbojt8czPbwD3XqdrwzmxQ= github.com/magiconair/properties v1.8.1/go.mod h1:PppfXfuXeibc/6YijjN8zIbojt8czPbwD3XqdrwzmxQ= github.com/magiconair/properties v1.8.4 h1:8KGKTcQQGm0Kv7vEbKFErAoAOFyyacLStRtQSeYtvkY= github.com/magiconair/properties v1.8.4/go.mod h1:y3VJvCyxH9uVvJTWEGAELF3aiYNyPKd5NZ3oSwXrF60= +github.com/magiconair/properties v1.8.5 h1:b6kJs+EmPFMYGkow9GiUyCyOvIwYetYJ3fSaWak/Gls= +github.com/magiconair/properties v1.8.5/go.mod h1:y3VJvCyxH9uVvJTWEGAELF3aiYNyPKd5NZ3oSwXrF60= github.com/mailru/easyjson v0.0.0-20160728113105-d5b7844b561a/go.mod h1:C1wdFJiN94OJF2b5HbByQZoLdCWB1Yqtg26g4irojpc= github.com/mailru/easyjson v0.0.0-20190614124828-94de47d64c63/go.mod h1:C1wdFJiN94OJF2b5HbByQZoLdCWB1Yqtg26g4irojpc= github.com/mailru/easyjson v0.0.0-20190626092158-b2ccc519800e/go.mod h1:C1wdFJiN94OJF2b5HbByQZoLdCWB1Yqtg26g4irojpc= github.com/mailru/easyjson v0.7.0 h1:aizVhC/NAAcKWb+5QsU1iNOZb4Yws5UO2I+aIprQITM= github.com/mailru/easyjson v0.7.0/go.mod h1:KAzv3t3aY1NaHWoQz1+4F1ccyAH66Jk7yos7ldAVICs= github.com/mattn/go-colorable v0.0.9/go.mod h1:9vuHe8Xs5qXnSaW/c/ABM9alt+Vo+STaOChaDxuIBZU= +github.com/mattn/go-colorable v0.1.0/go.mod h1:9vuHe8Xs5qXnSaW/c/ABM9alt+Vo+STaOChaDxuIBZU= +github.com/mattn/go-colorable v0.1.4/go.mod h1:U0ppj6V5qS13XJ6of8GYAs25YV2eR4EVcfRqFIhoBtE= +github.com/mattn/go-colorable v0.1.7/go.mod h1:u6P/XSegPjTcexA+o6vUJrdnUu04hMope9wVRipJSqc= +github.com/mattn/go-ieproxy v0.0.0-20190610004146-91bb50d98149/go.mod h1:31jz6HNzdxOmlERGGEc4v/dMssOfmp2p5bT/okiKFFc= +github.com/mattn/go-ieproxy v0.0.0-20190702010315-6dee0af9227d/go.mod h1:31jz6HNzdxOmlERGGEc4v/dMssOfmp2p5bT/okiKFFc= github.com/mattn/go-isatty v0.0.3/go.mod h1:M+lRXTBqGeGNdLjl/ufCoiOlB5xdOkqRJdNxMWT7Zi4= github.com/mattn/go-isatty v0.0.4/go.mod h1:M+lRXTBqGeGNdLjl/ufCoiOlB5xdOkqRJdNxMWT7Zi4= +github.com/mattn/go-isatty v0.0.5-0.20180830101745-3fb116b82035/go.mod h1:M+lRXTBqGeGNdLjl/ufCoiOlB5xdOkqRJdNxMWT7Zi4= +github.com/mattn/go-isatty v0.0.8/go.mod h1:Iq45c/XA43vh69/j3iqttzPXn0bhXyGjM0Hdxcsrc5s= +github.com/mattn/go-isatty v0.0.11/go.mod h1:PhnuNfih5lzO57/f3n+odYbM4JtupLOxQOAqxQCu2WE= github.com/mattn/go-isatty v0.0.12 h1:wuysRhFDzyxgEmMf5xjvJ2M9dZoWAXNNr5LSBS7uHXY= github.com/mattn/go-isatty v0.0.12/go.mod h1:cbi8OIDigv2wuxKPP5vlRcQ1OAZbq2CE4Kysco4FUpU= github.com/mattn/go-runewidth v0.0.2/go.mod h1:LwmH8dsx7+W8Uxz3IHJYH5QSwggIsqBzpuz5H//U1FU= +github.com/mattn/go-runewidth v0.0.3/go.mod h1:LwmH8dsx7+W8Uxz3IHJYH5QSwggIsqBzpuz5H//U1FU= +github.com/mattn/go-runewidth v0.0.4/go.mod h1:LwmH8dsx7+W8Uxz3IHJYH5QSwggIsqBzpuz5H//U1FU= github.com/matttproud/golang_protobuf_extensions v1.0.1 h1:4hp9jkHxhMHkqkrB3Ix0jegS5sx/RkqARlsWZ6pIwiU= github.com/matttproud/golang_protobuf_extensions v1.0.1/go.mod h1:D8He9yQNgCq6Z5Ld7szi9bcBfOoFv/3dc6xSMkL2PC0= github.com/miekg/dns v1.0.14/go.mod h1:W1PPwlIAgtquWBMBEV9nkV9Cazfe8ScdGz/Lj7v3Nrg= @@ -436,6 +532,8 @@ github.com/mitchellh/iochan v1.0.0/go.mod h1:JwYml1nuB7xOzsp52dPpHFffvOCDupsG0Qu github.com/mitchellh/mapstructure v0.0.0-20160808181253-ca63d7c062ee/go.mod h1:FVVH3fgwuzCH5S8UJGiWEs2h04kUh9fWfEaFds41c1Y= github.com/mitchellh/mapstructure v1.1.2 h1:fmNYVwqnSfB9mZU6OS2O6GsXM+wcskZDuKQzvN1EDeE= github.com/mitchellh/mapstructure v1.1.2/go.mod h1:FVVH3fgwuzCH5S8UJGiWEs2h04kUh9fWfEaFds41c1Y= +github.com/mitchellh/mapstructure v1.3.3 h1:SzB1nHZ2Xi+17FP0zVQBHIZqvwRN9408fJO8h+eeNA8= +github.com/mitchellh/mapstructure v1.3.3/go.mod h1:bFUtVrKA4DC2yAKiSyO/QUcy7e+RRV2QTWOzhPopBRo= github.com/modern-go/concurrent v0.0.0-20180228061459-e0a39a4cb421/go.mod h1:6dJC0mAP4ikYIbvyc7fijjWJddQyLn8Ig3JB5CqoB9Q= github.com/modern-go/concurrent v0.0.0-20180306012644-bacd9c7ef1dd h1:TRLaZ9cD/w8PVh93nsPXa1VrQ6jlwL5oN8l14QlcNfg= github.com/modern-go/concurrent v0.0.0-20180306012644-bacd9c7ef1dd/go.mod h1:6dJC0mAP4ikYIbvyc7fijjWJddQyLn8Ig3JB5CqoB9Q= @@ -448,6 +546,8 @@ github.com/munnerz/goautoneg v0.0.0-20120707110453-a547fc61f48d/go.mod h1:+n7T8m github.com/mwitkow/go-conntrack v0.0.0-20161129095857-cc309e4a2223/go.mod h1:qRWi+5nqEBWmkhHvq77mSJWrCKwh8bxhgT7d/eI7P4U= github.com/mwitkow/go-conntrack v0.0.0-20190716064945-2f068394615f/go.mod h1:qRWi+5nqEBWmkhHvq77mSJWrCKwh8bxhgT7d/eI7P4U= github.com/mxk/go-flowrate v0.0.0-20140419014527-cca7078d478f/go.mod h1:ZdcZmHo+o7JKHSa8/e818NopupXU1YMK5fe1lsApnBw= +github.com/naoina/go-stringutil v0.1.0/go.mod h1:XJ2SJL9jCtBh+P9q5btrd/Ylo8XwT/h1USek5+NqSA0= +github.com/naoina/toml v0.1.2-0.20170918210437-9fafd6967416/go.mod h1:NBIhNtsFMo3G2szEBne+bO4gS192HuIYRqfvOWb4i1E= github.com/nats-io/jwt v0.3.0/go.mod h1:fRYCDE99xlTsqUzISS1Bi75UBJ6ljOJQOAAu5VglpSg= github.com/nats-io/jwt v0.3.2/go.mod h1:/euKqTS1ZD+zzjYrY7pseZrTtWQSjujC7xjPc8wL6eU= github.com/nats-io/nats-server/v2 v2.1.2/go.mod h1:Afk+wRZqkMQs/p45uXdrVLuab3gwv3Z8C4HTBu8GD/k= @@ -455,12 +555,15 @@ github.com/nats-io/nats.go v1.9.1/go.mod h1:ZjDU1L/7fJ09jvUSRVBR2e7+RnLiiIQyqyzE github.com/nats-io/nkeys v0.1.0/go.mod h1:xpnFELMwJABBLVhffcfd1MZx6VsNRFpEugbxziKVo7w= github.com/nats-io/nkeys v0.1.3/go.mod h1:xpnFELMwJABBLVhffcfd1MZx6VsNRFpEugbxziKVo7w= github.com/nats-io/nuid v1.0.1/go.mod h1:19wcPz3Ph3q0Jbyiqsd0kePYG7A95tJPxeL+1OSON2c= +github.com/nishanths/predeclared v0.0.0-20200524104333-86fad755b4d3/go.mod h1:nt3d53pc1VYcphSCIaYAJtnPYnr3Zyn8fMq2wvPGPso= github.com/nxadm/tail v1.4.4 h1:DQuhQpB1tVlglWS2hLQ5OV6B5r8aGxSrPc5Qo6uTN78= github.com/nxadm/tail v1.4.4/go.mod h1:kenIhsEOeOJmVchQTgglprH7qJGnHDVpk1VPCcaMI8A= github.com/oklog/oklog v0.3.2/go.mod h1:FCV+B7mhrz4o+ueLpx+KqkyXRGMWOYEvfiXtdGtbWGs= github.com/oklog/run v1.0.0/go.mod h1:dlhp/R75TPv97u0XWUtDeV/lRKWPKSdTuV0TZvrmrQA= github.com/oklog/ulid v1.3.1/go.mod h1:CirwcVhetQ6Lv90oh/F+FBtV6XMibvdAFo93nm5qn4U= github.com/olekukonko/tablewriter v0.0.0-20170122224234-a0225b3f23b5/go.mod h1:vsDQFd/mU46D+Z4whnwzcISnGGzXWMclvtLoiIKAKIo= +github.com/olekukonko/tablewriter v0.0.1/go.mod h1:vsDQFd/mU46D+Z4whnwzcISnGGzXWMclvtLoiIKAKIo= +github.com/olekukonko/tablewriter v0.0.2-0.20190409134802-7e037d187b0c/go.mod h1:vsDQFd/mU46D+Z4whnwzcISnGGzXWMclvtLoiIKAKIo= github.com/onsi/ginkgo v0.0.0-20170829012221-11459a886d9c/go.mod h1:lLunBs/Ym6LB5Z9jYTR76FiuTmxDTDusOGeTQH+WWjE= github.com/onsi/ginkgo v1.6.0/go.mod h1:lLunBs/Ym6LB5Z9jYTR76FiuTmxDTDusOGeTQH+WWjE= github.com/onsi/ginkgo v1.7.0/go.mod h1:lLunBs/Ym6LB5Z9jYTR76FiuTmxDTDusOGeTQH+WWjE= @@ -486,6 +589,7 @@ github.com/openzipkin/zipkin-go v0.2.1/go.mod h1:NaW6tEwdmWMaCDZzg8sh+IBNOxHMPnh github.com/openzipkin/zipkin-go v0.2.2/go.mod h1:NaW6tEwdmWMaCDZzg8sh+IBNOxHMPnhQw8ySjnjRyN4= github.com/otiai10/copy v1.4.2 h1:RTiz2sol3eoXPLF4o+YWqEybwfUa/Q2Nkc4ZIUs3fwI= github.com/otiai10/copy v1.4.2/go.mod h1:XWfuS3CrI0R6IE0FbgHsEazaXO8G0LpMp9o8tos0x4E= +github.com/otiai10/copy v1.6.0/go.mod h1:XWfuS3CrI0R6IE0FbgHsEazaXO8G0LpMp9o8tos0x4E= github.com/otiai10/curr v0.0.0-20150429015615-9b4961190c95/go.mod h1:9qAhocn7zKJG+0mI8eUu6xqkFDYS2kb2saOteoSB3cE= github.com/otiai10/curr v1.0.0/go.mod h1:LskTG5wDwr8Rs+nNQ+1LlxRjAtTZZjtJW4rMXl6j4vs= github.com/otiai10/mint v1.3.0/go.mod h1:F5AjcsTsWUqX+Na9fpHb52P8pcRX2CI6A3ctIT91xUo= @@ -502,6 +606,7 @@ github.com/pact-foundation/pact-go v1.0.4/go.mod h1:uExwJY4kCzNPcHRj+hCR/HBbOOIw github.com/pascaldekloe/goe v0.0.0-20180627143212-57f6aae5913c/go.mod h1:lzWF7FIEvWOWxwDKqyGYQf6ZUaNfKdP144TG7ZOy1lc= github.com/pascaldekloe/goe v0.1.0 h1:cBOtyMzM9HTpWjXfbbunk26uA6nG3a8n06Wieeh0MwY= github.com/pascaldekloe/goe v0.1.0/go.mod h1:lzWF7FIEvWOWxwDKqyGYQf6ZUaNfKdP144TG7ZOy1lc= +github.com/pborman/uuid v0.0.0-20170112150404-1b00554d8222/go.mod h1:VyrYX9gd7irzKovcSS6BIIEwPRkP2Wm2m9ufcdFSJ34= github.com/pborman/uuid v1.2.0/go.mod h1:X/NO0urCmaxf9VXbdlT7C2Yzkj2IKimNn4k+gtPdI/k= github.com/pelletier/go-toml v1.2.0/go.mod h1:5z9KED0ma1S8pY6P1sdut58dfprrGBbd/94hg7ilaic= github.com/pelletier/go-toml v1.8.0/go.mod h1:D6yutnOGMveHEPV7VQOuvI/gXY61bv+9bAOTRnLElKs= @@ -509,6 +614,7 @@ github.com/pelletier/go-toml v1.8.1 h1:1Nf83orprkJyknT6h7zbuEGUEjcyVlCxSUGTENmNC github.com/pelletier/go-toml v1.8.1/go.mod h1:T2/BmBdy8dvIRq1a/8aqjN41wvWlN4lrapLU/GW4pbc= github.com/performancecopilot/speed v3.0.0+incompatible/go.mod h1:/CLtqpZ5gBg1M9iaPbIdPPGyKcA8hKdoy6hAWba7Yac= github.com/peterbourgon/diskv v2.0.1+incompatible/go.mod h1:uqqh8zWWbv1HBMNONnaR/tNboyR3/BZd58JJSHlUSCU= +github.com/peterh/liner v1.1.1-0.20190123174540-a2c9a5303de7/go.mod h1:CRroGNssyjTd/qIG2FyxByd2S8JEAZXBl4qUrZf8GS0= github.com/petermattis/goid v0.0.0-20180202154549-b0b1615b78e5 h1:q2e307iGHPdTGp0hoxKjt1H5pDo6utceo3dQVK3I5XQ= github.com/petermattis/goid v0.0.0-20180202154549-b0b1615b78e5/go.mod h1:jvVRKCrJTQWu0XVbaOlby/2lO20uSCHEMzzplHXte1o= github.com/pierrec/lz4 v1.0.2-0.20190131084431-473cd7ce01a1/go.mod h1:3/3N9NVKO0jef7pBehbT1qWhCMrIgbYNnFAZCqQ5LRc= @@ -532,6 +638,8 @@ github.com/prometheus/client_golang v1.4.0/go.mod h1:e9GMxYsXl05ICDXkRhurwBS4Q3O github.com/prometheus/client_golang v1.7.1/go.mod h1:PY5Wy2awLA44sXw4AOSfFBetzPP4j5+D6mVACh+pe2M= github.com/prometheus/client_golang v1.8.0 h1:zvJNkoCFAnYFNC24FV8nW4JdRJ3GIFcLbg65lL/JDcw= github.com/prometheus/client_golang v1.8.0/go.mod h1:O9VU6huf47PktckDQfMTX0Y8tY0/7TSWwj+ITvv0TnM= +github.com/prometheus/client_golang v1.10.0 h1:/o0BDeWzLWXNZ+4q5gXltUvaMpJqckTa+jTNoB+z4cg= +github.com/prometheus/client_golang v1.10.0/go.mod h1:WJM3cc3yu7XKBKa/I8WeZm+V3eltZnBwfENSU7mdogU= github.com/prometheus/client_model v0.0.0-20180712105110-5c3871d89910/go.mod h1:MbSGuTsp3dbXC40dX6PRTWyKYBIrTGTE9sqQNg2J8bo= github.com/prometheus/client_model v0.0.0-20190115171406-56726106282f/go.mod h1:MbSGuTsp3dbXC40dX6PRTWyKYBIrTGTE9sqQNg2J8bo= github.com/prometheus/client_model v0.0.0-20190129233127-fd36f4220a90/go.mod h1:xMI15A0UPsDsEKsMN9yxemIoYk6Tm2C1GtYGdfGttqA= @@ -549,6 +657,9 @@ github.com/prometheus/common v0.10.0/go.mod h1:Tlit/dnDKsSWFlCLTWaA1cyBgKHSMdTB8 github.com/prometheus/common v0.14.0/go.mod h1:U+gB1OBLb1lF3O42bTCL+FK18tX9Oar16Clt/msog/s= github.com/prometheus/common v0.15.0 h1:4fgOnadei3EZvgRwxJ7RMpG1k1pOZth5Pc13tyspaKM= github.com/prometheus/common v0.15.0/go.mod h1:U+gB1OBLb1lF3O42bTCL+FK18tX9Oar16Clt/msog/s= +github.com/prometheus/common v0.18.0/go.mod h1:U+gB1OBLb1lF3O42bTCL+FK18tX9Oar16Clt/msog/s= +github.com/prometheus/common v0.23.0 h1:GXWvPYuTUenIa+BhOq/x+L/QZzCqASkVRny5KTlPDGM= +github.com/prometheus/common v0.23.0/go.mod h1:H6QK/N6XVT42whUeIdI3dp36w49c+/iMDk7UAI2qm7Q= github.com/prometheus/procfs v0.0.0-20181005140218-185b4288413d/go.mod h1:c3At6R/oaqEKCNdg8wHV1ftS6bRYblBhIjjI8uT2IGk= github.com/prometheus/procfs v0.0.0-20190117184657-bf6a532e95b1/go.mod h1:c3At6R/oaqEKCNdg8wHV1ftS6bRYblBhIjjI8uT2IGk= github.com/prometheus/procfs v0.0.0-20190507164030-5867b95ac084/go.mod h1:TjEm7ze935MbeOT/UhFTIMYKhuLP4wbCsTZCD3I8kEA= @@ -557,6 +668,9 @@ github.com/prometheus/procfs v0.0.8/go.mod h1:7Qr8sr6344vo1JqZ6HhLceV9o3AJ1Ff+Gx github.com/prometheus/procfs v0.1.3/go.mod h1:lV6e/gmhEcM9IjHGsFOCxxuZ+z1YqCvr4OA4YeYWdaU= github.com/prometheus/procfs v0.2.0 h1:wH4vA7pcjKuZzjF7lM8awk4fnuJO6idemZXoKnULUx4= github.com/prometheus/procfs v0.2.0/go.mod h1:lV6e/gmhEcM9IjHGsFOCxxuZ+z1YqCvr4OA4YeYWdaU= +github.com/prometheus/procfs v0.6.0 h1:mxy4L2jP6qMonqmq+aTtOx1ifVWUgG/TAmntgbh3xv4= +github.com/prometheus/procfs v0.6.0/go.mod h1:cz+aTbrPOrUb4q7XlbU9ygM+/jj0fzG6c1xBZuNvfVA= +github.com/prometheus/tsdb v0.6.2-0.20190402121629-4f204dcbc150/go.mod h1:qhTCs0VvXwvX/y3TZrWD7rabWM+ijKTux40TwIPHuXU= github.com/prometheus/tsdb v0.7.1/go.mod h1:qhTCs0VvXwvX/y3TZrWD7rabWM+ijKTux40TwIPHuXU= github.com/rakyll/statik v0.1.7 h1:OF3QCZUuyPxuGEP7B4ypUa7sB/iHtqOTDYZXGM8KOdQ= github.com/rakyll/statik v0.1.7/go.mod h1:AlZONWzMtEnMs7W4e/1LURLiI49pIMmp6V9Unghqrcc= @@ -567,14 +681,19 @@ github.com/regen-network/cosmos-proto v0.3.1 h1:rV7iM4SSFAagvy8RiyhiACbWEGotmqzy github.com/regen-network/cosmos-proto v0.3.1/go.mod h1:jO0sVX6a1B36nmE8C9xBFXpNwWejXC7QqCOnH3O0+YM= github.com/regen-network/protobuf v1.3.3-alpha.regen.1 h1:OHEc+q5iIAXpqiqFKeLpu5NwTIkVXUs48vFMwzqpqY4= github.com/regen-network/protobuf v1.3.3-alpha.regen.1/go.mod h1:2DjTFR1HhMQhiWC5sZ4OhQ3+NtdbZ6oBDKQwq5Ou+FI= +github.com/rjeczalik/notify v0.9.1/go.mod h1:rKwnCoCGeuQnwBtTSPL9Dad03Vh2n40ePRrjvIXnJho= github.com/rogpeppe/fastuuid v1.2.0/go.mod h1:jVj6XXZzXRy/MSR5jhDC/2q6DgLz+nrA6LYCDYWNEvQ= github.com/rogpeppe/go-internal v1.3.0/go.mod h1:M8bDsm7K2OlrFYOpmOWEs/qY81heoFRclV5y23lUDJ4= +github.com/rs/cors v0.0.0-20160617231935-a62a804a8a00/go.mod h1:gFx+x8UowdsKA9AchylcLynDq+nNFfI8FkUZdN/jGCU= github.com/rs/cors v1.7.0/go.mod h1:gFx+x8UowdsKA9AchylcLynDq+nNFfI8FkUZdN/jGCU= github.com/rs/cors v1.7.1-0.20191011001009-dcbccb712443 h1:UnXq+ihqH+nJzMBSIiuRtKIwXSw5ium5ryplPnzB218= github.com/rs/cors v1.7.1-0.20191011001009-dcbccb712443/go.mod h1:gFx+x8UowdsKA9AchylcLynDq+nNFfI8FkUZdN/jGCU= +github.com/rs/xhandler v0.0.0-20160618193221-ed27b6fd6521/go.mod h1:RvLn4FgxWubrpZHtQLnOf6EwhN2hEMusxZOhcW9H3UQ= github.com/rs/xid v1.2.1/go.mod h1:+uKXf+4Djp6Md1KODXJxgGQPKngRmWyn10oCKFzNHOQ= github.com/rs/zerolog v1.20.0 h1:38k9hgtUBdxFwE34yS8rTHmHBa4eN16E4DJlv177LNs= github.com/rs/zerolog v1.20.0/go.mod h1:IzD0RJ65iWH0w97OQQebJEvTZYvsCUm9WVLWBQrJRjo= +github.com/rs/zerolog v1.21.0 h1:Q3vdXlfLNT+OftyBHsU0Y445MD+8m8axjKgf2si0QcM= +github.com/rs/zerolog v1.21.0/go.mod h1:ZPhntP/xmq1nnND05hhpAh2QMhSsA4UN3MGZ6O2J3hM= github.com/russross/blackfriday v1.5.2 h1:HyvC0ARfnZBqnXwABFeSZHpKvJHJJfPz81GNueLj0oo= github.com/russross/blackfriday v1.5.2/go.mod h1:JO/DiYxRf+HjHt06OyowR9PTA263kcR/rfWxYHBV53g= github.com/russross/blackfriday/v2 v2.0.1 h1:lPqVAte+HuHNfhJ/0LC98ESWRz8afy9tM/0RK8m9o+Q= @@ -586,6 +705,7 @@ github.com/sasha-s/go-deadlock v0.2.1-0.20190427202633-1595213edefa/go.mod h1:F7 github.com/satori/go.uuid v1.2.0 h1:0uYX9dsZ2yD7q2RtLRtPSdGDWzjeM3TbMJP9utgA0ww= github.com/satori/go.uuid v1.2.0/go.mod h1:dA0hQrYB0VpLJoorglMZABFdXlWrHn1NEOzdhQKdks0= github.com/sean-/seed v0.0.0-20170313163322-e2103e2c3529/go.mod h1:DxrIzT+xaE7yg65j358z/aeFdxmN0P9QXhEzd20vsDc= +github.com/shirou/gopsutil v2.20.5+incompatible/go.mod h1:5b4v6he4MtMOwMlS0TUMTu2PcXUg8+E1lC7eC3UO/RA= github.com/shopspring/decimal v1.2.0 h1:abSATXmQEYyShuxI4/vyW3tV1MrKAJzCZ/0zLUXYbsQ= github.com/shopspring/decimal v1.2.0/go.mod h1:DKyhrW/HYNuLGql+MJL6WCR6knT2jwCFRcu2hWCYk4o= github.com/shurcooL/sanitized_anchor_name v1.0.0 h1:PdmoCO6wvbs+7yrJyMORt4/BmY5IYyJwS/kOiWx8mHo= @@ -615,6 +735,8 @@ github.com/spf13/cobra v0.0.5/go.mod h1:3K3wKZymM7VvHMDS9+Akkh4K60UwM26emMESw8tL github.com/spf13/cobra v1.0.0/go.mod h1:/6GTrnGXV9HjY+aR4k0oJ5tcvakLuG6EuKReYlHNrgE= github.com/spf13/cobra v1.1.1 h1:KfztREH0tPxJJ+geloSLaAkaPkr4ki2Er5quFV1TDo4= github.com/spf13/cobra v1.1.1/go.mod h1:WnodtKOvamDL/PwE2M4iKs8aMDBZ5Q5klgD3qfVJQMI= +github.com/spf13/cobra v1.1.3 h1:xghbfqPkxzxP3C/f3n5DdpAbdKLj4ZE4BWQI362l53M= +github.com/spf13/cobra v1.1.3/go.mod h1:pGADOWyqRD/YMrPZigI/zbliZ2wVD/23d+is3pSWzOo= github.com/spf13/jwalterweatherman v1.0.0/go.mod h1:cQK4TGJAtQXfYWX+Ddv3mKDzgVb68N+wFjFa4jdeBTo= github.com/spf13/jwalterweatherman v1.1.0 h1:ue6voC5bR5F8YxI5S67j9i582FU4Qvo2bmqnqMYADFk= github.com/spf13/jwalterweatherman v1.1.0/go.mod h1:aNWZUN0dPAAO/Ljvb5BEdw96iTZ0EXowPYD95IqWIGo= @@ -628,6 +750,9 @@ github.com/spf13/viper v1.4.0/go.mod h1:PTJ7Z/lr49W6bUbkmS1V3by4uWynFiR9p7+dSq/y github.com/spf13/viper v1.7.0/go.mod h1:8WkrPz2fc9jxqZNCJI/76HCieCp4Q8HaLFoCha5qpdg= github.com/spf13/viper v1.7.1 h1:pM5oEahlgWv/WnHXpgbKz7iLIxRf65tye2Ci+XFK5sk= github.com/spf13/viper v1.7.1/go.mod h1:8WkrPz2fc9jxqZNCJI/76HCieCp4Q8HaLFoCha5qpdg= +github.com/status-im/keycard-go v0.0.0-20190316090335-8537d3370df4/go.mod h1:RZLeN1LMWmRsyYjvAu+I6Dm9QmlDaIIt+Y+4Kd7Tp+Q= +github.com/steakknife/bloomfilter v0.0.0-20180922174646-6819c0d2a570/go.mod h1:8OR4w3TdeIHIh1g6EMY5p0gVNOovcWC+1vpc7naMuAw= +github.com/steakknife/hamming v0.0.0-20180906055917-c99c65617cd3/go.mod h1:hpGUWaI9xL8pRQCTXQgocU38Qw1g0Us7n5PxxTwTCYU= github.com/streadway/amqp v0.0.0-20190404075320-75d898a42a94/go.mod h1:AZpEONHx3DKn8O/DFsRAY58/XVQiIPMTMB1SddzLXVw= github.com/streadway/amqp v0.0.0-20190827072141-edfb9018d271/go.mod h1:AZpEONHx3DKn8O/DFsRAY58/XVQiIPMTMB1SddzLXVw= github.com/streadway/handy v0.0.0-20190108123426-d5acb3125c2a/go.mod h1:qNTQ5P5JnDBl6z3cMAg/SywNDC5ABu5ApDIw6lUbRmI= @@ -651,6 +776,8 @@ github.com/tecbot/gorocksdb v0.0.0-20191217155057-f0fad39f321c h1:g+WoO5jjkqGAzH github.com/tecbot/gorocksdb v0.0.0-20191217155057-f0fad39f321c/go.mod h1:ahpPrc7HpcfEWDQRZEmnXMzHY03mLDYMCxeDzy46i+8= github.com/tendermint/btcd v0.1.1 h1:0VcxPfflS2zZ3RiOAHkBiFUcPvbtRj5O7zHmcJWHV7s= github.com/tendermint/btcd v0.1.1/go.mod h1:DC6/m53jtQzr/NFmMNEu0rxf18/ktVoVtMrnDD5pN+U= +github.com/tendermint/cosmos-rosetta-gateway v0.3.0-rc2.0.20210304154332-87d6ca4410df h1:hoMLrOS4WyyMM+Y+iWdGu94o0zzp6Q43y7v89Q1/OIw= +github.com/tendermint/cosmos-rosetta-gateway v0.3.0-rc2.0.20210304154332-87d6ca4410df/go.mod h1:gBPw8WV2Erm4UGHlBRiM3zaEBst4bsuihmMCNQdgP/s= github.com/tendermint/crypto v0.0.0-20191022145703-50d29ede1e15 h1:hqAk8riJvK4RMWx1aInLzndwxKalgi5rTqgfXxOxbEI= github.com/tendermint/crypto v0.0.0-20191022145703-50d29ede1e15/go.mod h1:z4YtwM70uOnk8h0pjJYlj3zdYwi9l03By6iAIF5j/Pk= github.com/tendermint/go-amino v0.16.0 h1:GyhmgQKvqF82e2oZeuMSp9JTN0N09emoSZlb2lyGa2E= @@ -658,18 +785,29 @@ github.com/tendermint/go-amino v0.16.0/go.mod h1:TQU0M1i/ImAo+tYpZi73AU3V/dKeCoM github.com/tendermint/tm-db v0.6.3/go.mod h1:lfA1dL9/Y/Y8wwyPp2NMLyn5P5Ptr/gvDFNWtrCWSf8= github.com/tendermint/tm-db v0.6.4 h1:3N2jlnYQkXNQclQwd/eKV/NzlqPlfK21cpRRIx80XXQ= github.com/tendermint/tm-db v0.6.4/go.mod h1:dptYhIpJ2M5kUuenLr+Yyf3zQOv1SgBZcl8/BmWlMBw= +github.com/tidwall/gjson v1.6.1/go.mod h1:BaHyNc5bjzYkPqgLq7mdVzeiRtULKULXLgZFKsxEHI0= +github.com/tidwall/match v1.0.1/go.mod h1:LujAq0jyVjBy028G1WhWfIzbpQfMO8bBZ6Tyb0+pL9E= +github.com/tidwall/pretty v1.0.2/go.mod h1:XNkn88O1ChpSDQmQeStsy+sBenx6DDtFZJxhVysOjyk= +github.com/tidwall/sjson v1.1.2/go.mod h1:SEzaDwxiPzKzNfUEO4HbYF/m4UCSJDsGgNqsS1LvdoY= github.com/tmc/grpc-websocket-proxy v0.0.0-20170815181823-89b8d40f7ca8/go.mod h1:ncp9v5uamzpCO7NfCPTXjqaC+bZgJeR0sMTm6dMHP7U= github.com/tmc/grpc-websocket-proxy v0.0.0-20190109142713-0ad062ec5ee5/go.mod h1:ncp9v5uamzpCO7NfCPTXjqaC+bZgJeR0sMTm6dMHP7U= github.com/troian/hid v0.9.9 h1:5cSdziibXdFwmcP80t00SbHW+YDCFGTqNHqzH1qt6TI= github.com/troian/hid v0.9.9/go.mod h1:n6adloQ1876oEXZr6fFsthy4FDHxwJhh7QYQspm30Ds= github.com/tv42/httpunix v0.0.0-20150427012821-b75d8614f926/go.mod h1:9ESjWnEqriFuLhtthL60Sar/7RFoluCcXsuvEwTV5KM= +github.com/tyler-smith/go-bip39 v1.0.1-0.20181017060643-dbb3b84ba2ef/go.mod h1:sJ5fKU0s6JVwZjjcUEX2zFOnvq0ASQ2K9Zr6cf67kNs= github.com/ugorji/go v1.1.4/go.mod h1:uQMGLiO92mf5W77hV/PUCpI3pbzQx3CRekS0kk+RGrc= +github.com/ugorji/go v1.1.7/go.mod h1:kZn38zHttfInRq0xu/PH0az30d+z6vm202qpg1oXVMw= github.com/ugorji/go/codec v0.0.0-20181204163529-d75b2dcb6bc8/go.mod h1:VFNgLljTbGfSG7qAOspJ7OScBnGdDN/yBr0sguwnwf0= +github.com/ugorji/go/codec v1.1.7/go.mod h1:Ax+UKWsSmolVDwsd+7N3ZtXu+yMGCf907BLYF3GoBXY= github.com/urfave/cli v1.20.0/go.mod h1:70zkFmudgCuE/ngEzBv17Jvp/497gISqfk5gWijbERA= github.com/urfave/cli v1.22.1/go.mod h1:Gos4lmkARVdJ6EkW0WaNv/tZAAMe9V7XWyB60NtXRu0= +github.com/vmihailenco/msgpack/v5 v5.0.0-beta.9/go.mod h1:HVxBVPUK/+fZMonk4bi1islLa8V3cfnBug0+4dykPzo= +github.com/vmihailenco/tagparser v0.1.2/go.mod h1:OeAg3pn3UbLjkWt+rN9oFYB6u/cQgqMEUPoW2WPyhdI= +github.com/wsddn/go-ecdh v0.0.0-20161211032359-48726bab9208/go.mod h1:IotVbo4F+mw0EzQ08zFqg7pK3FebNXpaMsRy2RT+Ees= github.com/xiang90/probing v0.0.0-20190116061207-43a291ad63a2/go.mod h1:UETIi67q53MR2AWcXfiuqkDkRtnGDLqkBTpCHuJHxtU= github.com/xordataexchange/crypt v0.0.3-0.20170626215501-b2862e3d0a77/go.mod h1:aYKd//L2LvnjZzWKhF00oedf4jCCReLcmhLdhm1A27Q= github.com/yuin/goldmark v1.1.27/go.mod h1:3hX8gzYuyVAZsxl0MRgGTJEmQBFcNTphYh9decYSb74= +github.com/yuin/goldmark v1.1.32/go.mod h1:3hX8gzYuyVAZsxl0MRgGTJEmQBFcNTphYh9decYSb74= github.com/yuin/goldmark v1.2.1/go.mod h1:3hX8gzYuyVAZsxl0MRgGTJEmQBFcNTphYh9decYSb74= go.etcd.io/bbolt v1.3.2/go.mod h1:IbVyRI1SCnLcuJnV2u8VeU0CEYM7e686BmAb1XKL+uU= go.etcd.io/bbolt v1.3.3/go.mod h1:IbVyRI1SCnLcuJnV2u8VeU0CEYM7e686BmAb1XKL+uU= @@ -706,12 +844,14 @@ golang.org/x/crypto v0.0.0-20200510223506-06a226fb4e37/go.mod h1:LzIPMQfyMNhhGPh golang.org/x/crypto v0.0.0-20200622213623-75b288015ac9/go.mod h1:LzIPMQfyMNhhGPhUkYOs5KpL4U8rLKemX1yGLhDgUto= golang.org/x/crypto v0.0.0-20200709230013-948cd5f35899/go.mod h1:LzIPMQfyMNhhGPhUkYOs5KpL4U8rLKemX1yGLhDgUto= golang.org/x/crypto v0.0.0-20200728195943-123391ffb6de/go.mod h1:LzIPMQfyMNhhGPhUkYOs5KpL4U8rLKemX1yGLhDgUto= +golang.org/x/crypto v0.0.0-20200820211705-5c72a883971a/go.mod h1:LzIPMQfyMNhhGPhUkYOs5KpL4U8rLKemX1yGLhDgUto= golang.org/x/crypto v0.0.0-20201117144127-c1f2f97bffc9/go.mod h1:jdWPYTVW3xRLrWPugEBEK3UY2ZEsg3UU495nc5E+M+I= golang.org/x/crypto v0.0.0-20201221181555-eec23a3978ad h1:DN0cp81fZ3njFcrLCytUHRSUkqBjfTo4Tx9RJTWs0EY= golang.org/x/crypto v0.0.0-20201221181555-eec23a3978ad/go.mod h1:jdWPYTVW3xRLrWPugEBEK3UY2ZEsg3UU495nc5E+M+I= golang.org/x/exp v0.0.0-20190121172915-509febef88a4/go.mod h1:CJ0aWSM057203Lf6IL+f9T1iT9GByDxfZKAQTCR3kQA= golang.org/x/exp v0.0.0-20190306152737-a1d7652674e8/go.mod h1:CJ0aWSM057203Lf6IL+f9T1iT9GByDxfZKAQTCR3kQA= golang.org/x/exp v0.0.0-20190510132918-efd6b22b2522/go.mod h1:ZjyILWgesfNpC6sMxTJOJm9Kp84zZh5NQWvqDGG3Qr8= +golang.org/x/exp v0.0.0-20190731235908-ec7cb31e5a56/go.mod h1:JhuoJpWY28nO4Vef9tZUw9qufEGTyX1+7lmHxV5q5G4= golang.org/x/exp v0.0.0-20190829153037-c13cbed26979/go.mod h1:86+5VVa7VpoJ4kLfm080zCjGlMRFzhUhsZKEZO7MGek= golang.org/x/exp v0.0.0-20191030013958-a1ab85dbe136/go.mod h1:JXzH8nQsPlswgeRAPE3MuO9GYsAcnJvJ4vnMwN/5qkY= golang.org/x/exp v0.0.0-20191227195350-da58074b4299/go.mod h1:2RIsYlXP63K8oxa1u096TMicItID8zy7Y6sNkU49FU4= @@ -727,16 +867,19 @@ golang.org/x/lint v0.0.0-20190930215403-16217165b5de/go.mod h1:6SW0HCj/g11FgYtHl golang.org/x/lint v0.0.0-20191125180803-fdd1cda4f05f/go.mod h1:5qLYkcX4OjUUV8bRuDixDT3tpyyb+LUpUlRWLxfhWrs= golang.org/x/mobile v0.0.0-20190312151609-d3739f865fa6/go.mod h1:z+o9i4GpDbdi3rU15maQ/Ox0txvL9dWGYEHz965HBQE= golang.org/x/mobile v0.0.0-20190719004257-d2bd2a29d028/go.mod h1:E/iHnbuqvinMTCcRqshq8CkpyQDoeVncDDYHnLhea+o= +golang.org/x/mobile v0.0.0-20200801112145-973feb4309de/go.mod h1:skQtrUTUwhdJvXM/2KKJzY8pDgNr9I/FOMqDVRPBUS4= golang.org/x/mod v0.0.0-20190513183733-4bf6d317e70e/go.mod h1:mXi4GBBbnImb6dmsKGUJ2LatrhH/nqhxcFungHvyanc= golang.org/x/mod v0.1.0/go.mod h1:0QHyrYULN0/3qlju5TqG8bIK38QM8yzMo5ekMj3DlcY= golang.org/x/mod v0.1.1-0.20191105210325-c90efee705ee/go.mod h1:QqPTAvyqsEbceGzBzNggFXnrqF1CaUcvgkdR5Ot7KZg= golang.org/x/mod v0.1.1-0.20191107180719-034126e5016b/go.mod h1:QqPTAvyqsEbceGzBzNggFXnrqF1CaUcvgkdR5Ot7KZg= +golang.org/x/mod v0.1.1-0.20191209134235-331c550502dd/go.mod h1:s0Qsj1ACt9ePp/hMypM3fl4fZqREWJwdYDEqhRiZZUA= golang.org/x/mod v0.2.0/go.mod h1:s0Qsj1ACt9ePp/hMypM3fl4fZqREWJwdYDEqhRiZZUA= golang.org/x/mod v0.3.0 h1:RM4zey1++hCTbCVQfnWeKs9/IEsaBLA8vTkd0WVtmH4= golang.org/x/mod v0.3.0/go.mod h1:s0Qsj1ACt9ePp/hMypM3fl4fZqREWJwdYDEqhRiZZUA= golang.org/x/net v0.0.0-20180719180050-a680a1efc54d/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= golang.org/x/net v0.0.0-20180724234803-3673e40ba225/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= golang.org/x/net v0.0.0-20180906233101-161cd47e91fd/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= +golang.org/x/net v0.0.0-20181011144130-49bb7cea24b1/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= golang.org/x/net v0.0.0-20181023162649-9b4f9f5ad519/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= golang.org/x/net v0.0.0-20181114220301-adae6a3d119a/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= golang.org/x/net v0.0.0-20181201002055-351d144fa1fc/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= @@ -762,6 +905,8 @@ golang.org/x/net v0.0.0-20200520004742-59133d7f0dd7/go.mod h1:qpuaurCH72eLCgpAm/ golang.org/x/net v0.0.0-20200625001655-4c5254603344/go.mod h1:/O7V0waA8r7cgGh81Ro3o1hOxt32SMVPicZroKQ2sZA= golang.org/x/net v0.0.0-20200707034311-ab3426394381/go.mod h1:/O7V0waA8r7cgGh81Ro3o1hOxt32SMVPicZroKQ2sZA= golang.org/x/net v0.0.0-20200813134508-3edf25e44fcc/go.mod h1:/O7V0waA8r7cgGh81Ro3o1hOxt32SMVPicZroKQ2sZA= +golang.org/x/net v0.0.0-20200822124328-c89045814202/go.mod h1:/O7V0waA8r7cgGh81Ro3o1hOxt32SMVPicZroKQ2sZA= +golang.org/x/net v0.0.0-20200904194848-62affa334b73/go.mod h1:/O7V0waA8r7cgGh81Ro3o1hOxt32SMVPicZroKQ2sZA= golang.org/x/net v0.0.0-20201021035429-f5854403a974 h1:IX6qOQeG5uLjB/hjjwjedwfjND0hgjPMMyO1RoIXQNI= golang.org/x/net v0.0.0-20201021035429-f5854403a974/go.mod h1:sp8m0HH+o8qH0wwXwYZr8TS3Oi6o0r6Gce1SSxlDquU= golang.org/x/oauth2 v0.0.0-20180821212333-d2e6202438be/go.mod h1:N/0e6XlmueqKjAGxoOufVs8QHGRruUQn6yWY3a++T0U= @@ -776,8 +921,11 @@ golang.org/x/sync v0.0.0-20181221193216-37e7f081c4d4/go.mod h1:RxMgew5VJxzue5/jJ golang.org/x/sync v0.0.0-20190227155943-e225da77a7e6/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= golang.org/x/sync v0.0.0-20190423024810-112230192c58/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= golang.org/x/sync v0.0.0-20190911185100-cd5d95a43a6e/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= +golang.org/x/sync v0.0.0-20200625203802-6e8e738ad208/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= golang.org/x/sync v0.0.0-20201020160332-67f06af15bc9 h1:SQFwaSi55rU7vdNs9Yr0Z324VNlrF+0wMqRXT4St8ck= golang.org/x/sync v0.0.0-20201020160332-67f06af15bc9/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= +golang.org/x/sync v0.0.0-20201207232520-09787c993a3a h1:DcqTD9SDLc+1P/r1EmRBwnVsrOwW+kk2vWf9n+1sGhs= +golang.org/x/sync v0.0.0-20201207232520-09787c993a3a/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= golang.org/x/sys v0.0.0-20180823144017-11551d06cbcc/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= golang.org/x/sys v0.0.0-20180905080454-ebe1bf3edb33/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= golang.org/x/sys v0.0.0-20180909124046-d0be0721c37e/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= @@ -788,6 +936,7 @@ golang.org/x/sys v0.0.0-20181122145206-62eef0e2fa9b/go.mod h1:STP8DvDyc/dI5b8T5h golang.org/x/sys v0.0.0-20181205085412-a5c9d58dba9a/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= golang.org/x/sys v0.0.0-20190130150945-aca44879d564/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= golang.org/x/sys v0.0.0-20190215142949-d0b11bdaac8a/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= +golang.org/x/sys v0.0.0-20190222072716-a9d3bda3a223/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= golang.org/x/sys v0.0.0-20190312061237-fead79001313/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20190412213103-97732733099d/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20190422165155-953cdadca894/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= @@ -812,6 +961,7 @@ golang.org/x/sys v0.0.0-20200106162015-b016eb3dc98e/go.mod h1:h1NjWce9XRLGQEsW7w golang.org/x/sys v0.0.0-20200116001909-b77594299b42/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20200122134326-e047566fdf82/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20200202164722-d101bd2416d5/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20200223170610-d5e6a3e2c0ae/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20200323222414-85ca7c5b95cd/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20200420163511-1957bb5e6d1f/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20200519105757-fe76b779f299/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= @@ -819,11 +969,18 @@ golang.org/x/sys v0.0.0-20200615200032-f1bc736245b1/go.mod h1:h1NjWce9XRLGQEsW7w golang.org/x/sys v0.0.0-20200622214017-ed371f2e16b4/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20200625212154-ddb9806d33ae/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20200814200057-3d37ad5750ed/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20200824131525-c12d262b63d8/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20200909081042-eff7692f9009/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20200922070232-aee5d888a860/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20200928205150-006507a75852/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20200930185726-fdedc70b468f/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20201015000850-e3ed0017c211/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20210113181707-4bcb84eeeb78 h1:nVuTkr9L6Bq62qpUqKo/RnZCFfzDBL0bYo6w9OJUqZY= golang.org/x/sys v0.0.0-20210113181707-4bcb84eeeb78/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20210119212857-b64e53b001e4/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20210124154548-22da62e12c0c/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20210309074719-68d13333faf2 h1:46ULzRKLh1CwgRq2dC5SlBzEqqNCi8rreOZnNrbqcIY= +golang.org/x/sys v0.0.0-20210309074719-68d13333faf2/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/term v0.0.0-20201117132131-f5c789dd3221 h1:/ZHdbVpdR/jk3g30/d4yUL0JU9kksj8+F/bnQUVLGDM= golang.org/x/term v0.0.0-20201117132131-f5c789dd3221/go.mod h1:Nr5EML6q2oocZ2LXRh80K7BxOlk5/8JxuGnuhpl+muw= golang.org/x/text v0.3.0/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ= @@ -859,13 +1016,18 @@ golang.org/x/tools v0.0.0-20191029190741-b9c20aec41a5/go.mod h1:b+2E5dAYhXwXZwtn golang.org/x/tools v0.0.0-20191112195655-aa38f8e97acc/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo= golang.org/x/tools v0.0.0-20191119224855-298f0cb1881e/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo= golang.org/x/tools v0.0.0-20191125144606-a911d9008d1f/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo= +golang.org/x/tools v0.0.0-20191130070609-6e064ea0cf2d/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo= golang.org/x/tools v0.0.0-20191227053925-7b8e75db28f4/go.mod h1:TB2adYChydJhpapKDTa4BR/hXlZSLoq2Wpct/0txZ28= golang.org/x/tools v0.0.0-20200103221440-774c71fcf114/go.mod h1:TB2adYChydJhpapKDTa4BR/hXlZSLoq2Wpct/0txZ28= +golang.org/x/tools v0.0.0-20200117012304-6edc0a871e69/go.mod h1:TB2adYChydJhpapKDTa4BR/hXlZSLoq2Wpct/0txZ28= golang.org/x/tools v0.0.0-20200207183749-b753a1ba74fa/go.mod h1:TB2adYChydJhpapKDTa4BR/hXlZSLoq2Wpct/0txZ28= +golang.org/x/tools v0.0.0-20200522201501-cb1345f3a375/go.mod h1:EkVYQZoAsY45+roYkvgYkIh4xh/qjgUK9TdY2XT94GE= golang.org/x/tools v0.0.0-20200616133436-c1934b75d054/go.mod h1:EkVYQZoAsY45+roYkvgYkIh4xh/qjgUK9TdY2XT94GE= golang.org/x/tools v0.0.0-20200619180055-7c47624df98f/go.mod h1:EkVYQZoAsY45+roYkvgYkIh4xh/qjgUK9TdY2XT94GE= +golang.org/x/tools v0.0.0-20200717024301-6ddee64345a6/go.mod h1:njjCfa9FT2d7l9Bc6FUM5FLjQPp3cFF28FI3qnDFljA= golang.org/x/tools v0.0.0-20210106214847-113979e3529a h1:CB3a9Nez8M13wwlr/E2YtwoU+qYHKfC+JrDa45RXXoQ= golang.org/x/tools v0.0.0-20210106214847-113979e3529a/go.mod h1:emZCQorbCU4vsT4fOWvOPXz4eW1wZW4PmDk9uLelYpA= +golang.org/x/tools v0.1.0/go.mod h1:xkSsbof2nBLbhDlRMhhhyNLN/zl3eTqcnHD5viDpcZ0= golang.org/x/xerrors v0.0.0-20190717185122-a985d3407aa7/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= golang.org/x/xerrors v0.0.0-20191011141410-1b5146add898/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= golang.org/x/xerrors v0.0.0-20191204190536-9bdfabe68543/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= @@ -916,6 +1078,10 @@ google.golang.org/protobuf v1.23.1-0.20200526195155-81db48ad09cc/go.mod h1:EGpAD google.golang.org/protobuf v1.24.0/go.mod h1:r/3tXBNzIEhYS9I1OUVjXDlt8tc493IdKGjtUeSXeh4= google.golang.org/protobuf v1.25.0 h1:Ejskq+SyPohKW+1uil0JJMtmHCgJPJ/qWTxr8qp+R4c= google.golang.org/protobuf v1.25.0/go.mod h1:9JNX74DMeImyA3h4bdi1ymwjUzf21/xIlbajtzgsN7c= +google.golang.org/protobuf v1.25.1-0.20200805231151-a709e31e5d12/go.mod h1:9JNX74DMeImyA3h4bdi1ymwjUzf21/xIlbajtzgsN7c= +google.golang.org/protobuf v1.26.0-rc.1/go.mod h1:jlhhOSvTdKEhbULTjvd4ARK9grFBp09yW+WbY/TyQbw= +google.golang.org/protobuf v1.26.0 h1:bxAC2xTBsZGibn2RTntX0oH50xLsqy1OxA9tTL3p/lk= +google.golang.org/protobuf v1.26.0/go.mod h1:9q0QmTI4eRPtz6boOQmLYwt+qCgq0jsYwAQnmE0givc= gopkg.in/alecthomas/kingpin.v2 v2.2.6/go.mod h1:FMv+mEhP44yOT+4EoQTLFTRgOQ1FBLkstjWtayDeSgw= gopkg.in/check.v1 v0.0.0-20161208181325-20d25e280405/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0= gopkg.in/check.v1 v1.0.0-20180628173108-788fd7840127/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0= @@ -929,8 +1095,13 @@ gopkg.in/inf.v0 v0.9.1 h1:73M5CoZyi3ZLMOyDlQh031Cx6N9NDJ2Vvfl76EDAgDc= gopkg.in/inf.v0 v0.9.1/go.mod h1:cWUDdTG/fYaXco+Dcufb5Vnc6Gp2YChqWtbxRZE0mXw= gopkg.in/ini.v1 v1.51.0 h1:AQvPpx3LzTDM0AjnIRlVFwFFGC+npRopjZxLJj6gdno= gopkg.in/ini.v1 v1.51.0/go.mod h1:pNLf8WUiyNEtQjuu5G5vTm06TEv9tsIgeAvK8hOrP4k= +gopkg.in/ini.v1 v1.61.0 h1:LBCdW4FmFYL4s/vDZD1RQYX7oAR6IjujCYgMdbHBR10= +gopkg.in/ini.v1 v1.61.0/go.mod h1:pNLf8WUiyNEtQjuu5G5vTm06TEv9tsIgeAvK8hOrP4k= +gopkg.in/natefinch/npipe.v2 v2.0.0-20160621034901-c1b8fa8bdcce/go.mod h1:5AcXVHNjg+BDxry382+8OKon8SEWiKktQR07RKPsv1c= +gopkg.in/olebedev/go-duktape.v3 v3.0.0-20200619000410-60c24ae608a6/go.mod h1:uAJfkITjFhyEEuUfm7bsmCZRbW5WRq8s9EY8HZ6hCns= gopkg.in/tomb.v1 v1.0.0-20141024135613-dd632973f1e7 h1:uRGJdciOHaEIrze2W8Q3AKkepLTh2hOroT7a+7czfdQ= gopkg.in/tomb.v1 v1.0.0-20141024135613-dd632973f1e7/go.mod h1:dt/ZhP58zS4L8KSrWDmTeBkI65Dw0HsyUHuEVlX15mw= +gopkg.in/urfave/cli.v1 v1.20.0/go.mod h1:vuBzUtMdQeixQj8LVd+/98pzhxNGQoyuPBlsXHOQNO0= gopkg.in/warnings.v0 v0.1.2/go.mod h1:jksf8JmL6Qr/oQM2OXTHunEvvTAsrWBLb6OOjuVWRNI= gopkg.in/yaml.v2 v2.2.1/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI= gopkg.in/yaml.v2 v2.2.2/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI= @@ -944,11 +1115,13 @@ gopkg.in/yaml.v2 v2.4.0/go.mod h1:RDklbk79AGWmwhnvt/jBztapEOGDOx6ZbXqjP6csGnQ= gopkg.in/yaml.v3 v3.0.0-20200313102051-9f266ea9e77c/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM= gopkg.in/yaml.v3 v3.0.0-20200615113413-eeeca48fe776 h1:tQIYjPdBoyREyB9XMu+nnTclpTYkz2zFM+lzLJFO4gQ= gopkg.in/yaml.v3 v3.0.0-20200615113413-eeeca48fe776/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM= +gotest.tools v2.2.0+incompatible/go.mod h1:DsYFclhRJ6vuDpmuTbkuFWG+y2sxOXAzmJt81HFBacw= honnef.co/go/tools v0.0.0-20190102054323-c2f93a96b099/go.mod h1:rf3lG4BRIbNafJWhAfAdb/ePZxsR/4RtNHQocxwk9r4= honnef.co/go/tools v0.0.0-20190106161140-3f1c8253044a/go.mod h1:rf3lG4BRIbNafJWhAfAdb/ePZxsR/4RtNHQocxwk9r4= honnef.co/go/tools v0.0.0-20190418001031-e561f6794a2a/go.mod h1:rf3lG4BRIbNafJWhAfAdb/ePZxsR/4RtNHQocxwk9r4= honnef.co/go/tools v0.0.0-20190523083050-ea95bdfd59fc/go.mod h1:rf3lG4BRIbNafJWhAfAdb/ePZxsR/4RtNHQocxwk9r4= honnef.co/go/tools v0.0.1-2019.2.3/go.mod h1:a3bituU0lyd329TUQxRnasdCoJDkEUEAqEt0JzvZhAg= +honnef.co/go/tools v0.0.1-2020.1.4/go.mod h1:X/FiERA/W4tHapMX5mGpAtMSVEeEUOyHaw9vFzvIQ3k= k8s.io/api v0.19.3 h1:GN6ntFnv44Vptj/b+OnMW7FmzkpDoIDLZRvKX3XH9aU= k8s.io/api v0.19.3/go.mod h1:VF+5FT1B74Pw3KxMdKyinLo+zynBaMBiAfGMuldcNDs= k8s.io/apimachinery v0.19.2/go.mod h1:DnPGDnARWFvYa3pMHgSxtbZb7gpzzAZ1pTfaUNDVlmA= @@ -970,6 +1143,8 @@ k8s.io/metrics v0.19.3 h1:p/goUqtdCslX76mSNowzZkNxiKzNRQW4bUP02U34+QQ= k8s.io/metrics v0.19.3/go.mod h1:Eap/Lk1FiAIjkaArFuv41v+ph6dbDpVGwAg7jMI+4vg= k8s.io/utils v0.0.0-20200729134348-d5654de09c73 h1:uJmqzgNWG7XyClnU/mLPBWwfKKF1K8Hf8whTseBgJcg= k8s.io/utils v0.0.0-20200729134348-d5654de09c73/go.mod h1:jPW/WVKK9YHAvNhRxK0md/EJ228hCsBRufyofKtW8HA= +nhooyr.io/websocket v1.8.6 h1:s+C3xAMLwGmlI31Nyn/eAehUlZPwfYZu2JXM621Q5/k= +nhooyr.io/websocket v1.8.6/go.mod h1:B70DZP8IakI65RVQ51MsWP/8jndNma26DVA/nFSCgW0= rsc.io/binaryregexp v0.2.0/go.mod h1:qTv7/COck+e2FymRvadv62gMdZztPaShugOCi3I+8D8= sigs.k8s.io/kind v0.10.0 h1:Tm+QITIqdRd+efLOsxZHMAfLnr5K4e3/RH8MePspEXs= sigs.k8s.io/kind v0.10.0/go.mod h1:fb32zUw7ewC47bPwLnwhf47wd/vADtv3c38KP7sjIlo= diff --git a/integration/e2e_test.go b/integration/e2e_test.go index 03b8bd40d2..ea69f9a0ef 100644 --- a/integration/e2e_test.go +++ b/integration/e2e_test.go @@ -223,7 +223,7 @@ func (s *IntegrationTestSuite) SetupSuite() { s.Require().NoError(err) out := &types.QueryProvidersResponse{} - err = s.validator.ClientCtx.JSONMarshaler.UnmarshalJSON(resp.Bytes(), out) + err = s.validator.ClientCtx.JSONCodec.UnmarshalJSON(resp.Bytes(), out) s.Require().NoError(err) s.Require().Len(out.Providers, 1, "Provider Creation Failed") providers := out.Providers @@ -235,7 +235,7 @@ func (s *IntegrationTestSuite) SetupSuite() { s.Require().NoError(err) var provider types.Provider - err = s.validator.ClientCtx.JSONMarshaler.UnmarshalJSON(resp.Bytes(), &provider) + err = s.validator.ClientCtx.JSONCodec.UnmarshalJSON(resp.Bytes(), &provider) s.Require().NoError(err) s.Require().Equal(createdProvider, provider) @@ -272,7 +272,7 @@ func (s *IntegrationTestSuite) TearDownSuite() { s.Require().NoError(err) deployResp := &dtypes.QueryDeploymentsResponse{} - err = s.validator.ClientCtx.JSONMarshaler.UnmarshalJSON(resp.Bytes(), deployResp) + err = s.validator.ClientCtx.JSONCodec.UnmarshalJSON(resp.Bytes(), deployResp) s.Require().NoError(err) s.Require().False(0 == len(deployResp.Deployments), "no deployments created") @@ -304,7 +304,7 @@ func (s *IntegrationTestSuite) TearDownSuite() { s.Require().NoError(err) qResp := &dtypes.QueryDeploymentsResponse{} - err = s.validator.ClientCtx.JSONMarshaler.UnmarshalJSON(resp.Bytes(), qResp) + err = s.validator.ClientCtx.JSONCodec.UnmarshalJSON(resp.Bytes(), qResp) s.Require().NoError(err) s.Require().True(len(qResp.Deployments) == len(deployResp.Deployments), "Deployment Close Failed") @@ -463,7 +463,7 @@ func (s *E2EAppNodePort) TestE2EAppNodePort() { s.Require().NoError(err) leaseRes := &mtypes.QueryLeasesResponse{} - err = s.validator.ClientCtx.JSONMarshaler.UnmarshalJSON(resp.Bytes(), leaseRes) + err = s.validator.ClientCtx.JSONCodec.UnmarshalJSON(resp.Bytes(), leaseRes) s.Require().NoError(err) s.Require().Len(leaseRes.Leases, 1) @@ -591,7 +591,7 @@ func (s *E2EDeploymentUpdate) TestE2EDeploymentUpdate() { s.Require().NoError(err) leaseRes := &mtypes.QueryLeasesResponse{} - err = s.validator.ClientCtx.JSONMarshaler.UnmarshalJSON(resp.Bytes(), leaseRes) + err = s.validator.ClientCtx.JSONCodec.UnmarshalJSON(resp.Bytes(), leaseRes) s.Require().NoError(err) s.Require().Len(leaseRes.Leases, 1) @@ -679,7 +679,7 @@ func (s *E2EApp) TestE2EApp() { s.Require().NoError(err) deployResp := &dtypes.QueryDeploymentsResponse{} - err = s.validator.ClientCtx.JSONMarshaler.UnmarshalJSON(res.Bytes(), deployResp) + err = s.validator.ClientCtx.JSONCodec.UnmarshalJSON(res.Bytes(), deployResp) s.Require().NoError(err) s.Require().Len(deployResp.Deployments, 1, "Deployment Create Failed") deployments := deployResp.Deployments @@ -691,7 +691,7 @@ func (s *E2EApp) TestE2EApp() { s.Require().NoError(err) deploymentResp := dtypes.QueryDeploymentResponse{} - err = s.validator.ClientCtx.JSONMarshaler.UnmarshalJSON(res.Bytes(), &deploymentResp) + err = s.validator.ClientCtx.JSONCodec.UnmarshalJSON(res.Bytes(), &deploymentResp) s.Require().NoError(err) s.Require().Equal(createdDep, deploymentResp) s.Require().NotEmpty(deploymentResp.Deployment.Version) @@ -705,7 +705,7 @@ func (s *E2EApp) TestE2EApp() { s.Require().NoError(err, "Error when fetching deployments with owner filter") deployResp = &dtypes.QueryDeploymentsResponse{} - err = s.validator.ClientCtx.JSONMarshaler.UnmarshalJSON(res.Bytes(), deployResp) + err = s.validator.ClientCtx.JSONCodec.UnmarshalJSON(res.Bytes(), deployResp) s.Require().NoError(err) s.Require().Len(deployResp.Deployments, 1) @@ -715,7 +715,7 @@ func (s *E2EApp) TestE2EApp() { s.Require().NoError(err) result := &mtypes.QueryOrdersResponse{} - err = s.validator.ClientCtx.JSONMarshaler.UnmarshalJSON(res.Bytes(), result) + err = s.validator.ClientCtx.JSONCodec.UnmarshalJSON(res.Bytes(), result) s.Require().NoError(err) s.Require().Len(result.Orders, 1) orders := result.Orders @@ -729,7 +729,7 @@ func (s *E2EApp) TestE2EApp() { res, err = mcli.QueryBidsExec(cctxJSON) s.Require().NoError(err) bidsRes := &mtypes.QueryBidsResponse{} - err = s.validator.ClientCtx.JSONMarshaler.UnmarshalJSON(res.Bytes(), bidsRes) + err = s.validator.ClientCtx.JSONCodec.UnmarshalJSON(res.Bytes(), bidsRes) s.Require().NoError(err) s.Require().Len(bidsRes.Bids, 1) @@ -750,7 +750,7 @@ func (s *E2EApp) TestE2EApp() { s.Require().NoError(err) leaseRes := &mtypes.QueryLeasesResponse{} - err = s.validator.ClientCtx.JSONMarshaler.UnmarshalJSON(res.Bytes(), leaseRes) + err = s.validator.ClientCtx.JSONCodec.UnmarshalJSON(res.Bytes(), leaseRes) s.Require().NoError(err) s.Require().Len(leaseRes.Leases, 1) diff --git a/x/audit/module.go b/x/audit/module.go index 67e9b63f13..312a2bc93b 100644 --- a/x/audit/module.go +++ b/x/audit/module.go @@ -57,12 +57,12 @@ func (b AppModuleBasic) RegisterInterfaces(registry cdctypes.InterfaceRegistry) // DefaultGenesis returns default genesis state as raw bytes for the provider // module. -func (AppModuleBasic) DefaultGenesis(cdc codec.JSONMarshaler) json.RawMessage { +func (AppModuleBasic) DefaultGenesis(cdc codec.JSONCodec) json.RawMessage { return cdc.MustMarshalJSON(DefaultGenesisState()) } // ValidateGenesis validation check of the Genesis -func (AppModuleBasic) ValidateGenesis(cdc codec.JSONMarshaler, _ client.TxEncodingConfig, bz json.RawMessage) error { +func (AppModuleBasic) ValidateGenesis(cdc codec.JSONCodec, _ client.TxEncodingConfig, bz json.RawMessage) error { // AuditedAttributes may not be present in genesis file. // todo: in fact we don't have any requirements of genesis entry for audited attributes for now if bz == nil { @@ -177,7 +177,7 @@ func (am AppModule) EndBlock(ctx sdk.Context, _ abci.RequestEndBlock) []abci.Val // InitGenesis performs genesis initialization for the audit module. It returns // no validator updates. -func (am AppModule) InitGenesis(ctx sdk.Context, cdc codec.JSONMarshaler, data json.RawMessage) []abci.ValidatorUpdate { +func (am AppModule) InitGenesis(ctx sdk.Context, cdc codec.JSONCodec, data json.RawMessage) []abci.ValidatorUpdate { var genesisState types.GenesisState cdc.MustUnmarshalJSON(data, &genesisState) return InitGenesis(ctx, am.keeper, &genesisState) @@ -185,7 +185,7 @@ func (am AppModule) InitGenesis(ctx sdk.Context, cdc codec.JSONMarshaler, data j // ExportGenesis returns the exported genesis state as raw bytes for the audit // module. -func (am AppModule) ExportGenesis(ctx sdk.Context, cdc codec.JSONMarshaler) json.RawMessage { +func (am AppModule) ExportGenesis(ctx sdk.Context, cdc codec.JSONCodec) json.RawMessage { gs := ExportGenesis(ctx, am.keeper) return cdc.MustMarshalJSON(gs) } From 07f00445d1f3b9a057c39ba63fe0ca768165f71a Mon Sep 17 00:00:00 2001 From: akhilkumarpilli Date: Thu, 27 May 2021 14:45:01 +0530 Subject: [PATCH 03/10] Update SDK and add upgrade handler --- app/app.go | 51 +- app/app_configure.go | 11 + app/app_test.go | 217 + app/sim_test.go | 2 + client/broadcaster/client.go | 96 +- client/broadcaster/serial.go | 2 +- client/docs/statik/statik.go | 8 +- client/docs/swagger-ui/swagger.yaml | 44543 +++++++++++--------- deploy/cmd/utils.go | 5 +- go.mod | 1 + go.sum | 71 +- integration/e2e_test.go | 4 +- integration/test_helpers.go | 4 +- sdkutil/broadcast.go | 9 +- testutil/types.go | 6 +- x/audit/client/cli/query.go | 8 +- x/audit/keeper/grpc_query.go | 4 +- x/audit/keeper/keeper.go | 22 +- x/audit/module.go | 7 +- x/cert/client/cli/query.go | 3 +- x/cert/client/cli/tx.go | 2 +- x/cert/genesis.go | 2 +- x/cert/keeper/keeper.go | 20 +- x/cert/keeper/key.go | 4 +- x/cert/module.go | 15 +- x/cert/types/genesis.go | 2 +- x/deployment/client/cli/cli_test.go | 14 +- x/deployment/client/cli/grpc_rest_test.go | 8 +- x/deployment/client/cli/query.go | 8 +- x/deployment/keeper/grpc_query.go | 2 +- x/deployment/keeper/keeper.go | 34 +- x/deployment/module.go | 15 +- x/deployment/simulation/operations.go | 10 +- x/escrow/keeper/keeper.go | 24 +- x/escrow/module.go | 15 +- x/market/client/cli/bid.go | 6 +- x/market/client/cli/cli_test.go | 32 +- x/market/client/cli/grpc_rest_test.go | 20 +- x/market/client/cli/lease.go | 6 +- x/market/client/cli/order.go | 6 +- x/market/keeper/grpc_query.go | 6 +- x/market/keeper/keeper.go | 36 +- x/market/module.go | 15 +- x/market/simulation/operations.go | 8 +- x/provider/client/cli/cli_test.go | 6 +- x/provider/client/cli/grpc_rest_test.go | 6 +- x/provider/client/cli/query.go | 6 +- x/provider/keeper/grpc_query.go | 2 +- x/provider/keeper/keeper.go | 16 +- x/provider/module.go | 15 +- x/provider/simulation/operations.go | 6 +- 51 files changed, 24453 insertions(+), 20988 deletions(-) diff --git a/app/app.go b/app/app.go index 3ea144e028..7154d71da3 100644 --- a/app/app.go +++ b/app/app.go @@ -1,6 +1,7 @@ package app import ( + "encoding/json" "io" "net/http" "os" @@ -14,6 +15,7 @@ import ( "github.com/cosmos/cosmos-sdk/server/api" "github.com/cosmos/cosmos-sdk/server/config" "github.com/cosmos/cosmos-sdk/simapp" + storetypes "github.com/cosmos/cosmos-sdk/store/types" "github.com/cosmos/cosmos-sdk/testutil/testdata" sdk "github.com/cosmos/cosmos-sdk/types" "github.com/cosmos/cosmos-sdk/types/module" @@ -59,7 +61,6 @@ import ( "github.com/gorilla/mux" "github.com/rakyll/statik/fs" "github.com/spf13/cast" - tmjson "github.com/tendermint/tendermint/libs/json" "github.com/cosmos/cosmos-sdk/x/params" paramskeeper "github.com/cosmos/cosmos-sdk/x/params/keeper" @@ -274,10 +275,50 @@ func NewApp( homePath, app.BaseApp) app.keeper.upgrade.SetUpgradeHandler("v0.43.0-beta1-upgrade", func(ctx sdk.Context, plan upgradetypes.Plan, - fromVM module.VersionMap) (module.VersionMap, error) { + _ module.VersionMap) (module.VersionMap, error) { + // 1st-time running in-store migrations, using 1 as fromVersion to + // avoid running InitGenesis. + fromVM := map[string]uint64{ + "auth": 1, + "bank": 1, + "capability": 1, + "crisis": 1, + "distribution": 1, + "evidence": 1, + "gov": 1, + "mint": 1, + "params": 1, + "slashing": 1, + "staking": 1, + "upgrade": 1, + "vesting": 1, + "ibc": 1, + "genutil": 1, + "transfer": 1, + "audit": 1, + "cert": 1, + "deployment": 1, + "escrow": 1, + "market": 1, + "provider": 1, + } return app.mm.RunMigrations(ctx, app.configurator, fromVM) }) + upgradeInfo, err := app.keeper.upgrade.ReadUpgradeInfoFromDisk() + if err != nil { + panic(err) + } + + if upgradeInfo.Name == "v0.43.0-beta1-upgrade" && !app.keeper.upgrade.IsSkipHeight(upgradeInfo.Height) { + storeUpgrades := storetypes.StoreUpgrades{ + Added: []string{"authz", "feegrant"}, + } + + // configure store loader that checks if version == upgradeHeight and applies store upgrades + app.SetStoreLoader(upgradetypes.UpgradeStoreLoader(upgradeInfo.Height, &storeUpgrades)) + } + // register the staking hooks // NOTE: stakingKeeper above is passed by reference, so that it will contain these hooks app.keeper.staking = *skeeper.SetHooks( @@ -352,7 +393,7 @@ func NewApp( bank.NewAppModule(appCodec, app.keeper.bank, app.keeper.acct), capability.NewAppModule(appCodec, *app.keeper.cap), crisis.NewAppModule(&app.keeper.crisis, skipGenesisInvariants), - feegrantmodule.NewAppModule(appCodec, app.keeper.acct, app.keeper,bank, + feegrantmodule.NewAppModule(appCodec, app.keeper.acct, app.keeper.bank, app.keeper.feegrant, app.interfaceRegistry), gov.NewAppModule(appCodec, app.keeper.gov, app.keeper.acct, app.keeper.bank), mint.NewAppModule(appCodec, app.keeper.mint, app.keeper.acct), @@ -406,7 +447,7 @@ func NewApp( app.mm.RegisterInvariants(&app.keeper.crisis) app.mm.RegisterRoutes(app.Router(), app.QueryRouter(), encodingConfig.Amino) - app.configurator = module.NewConfigurator(app.appCodec,app.MsgServiceRouter(), app.GRPCQueryRouter()) + app.configurator = module.NewConfigurator(app.appCodec, app.MsgServiceRouter(), app.GRPCQueryRouter()) app.mm.RegisterServices(app.configurator) // add test gRPC service for testing gRPC queries in isolation @@ -417,7 +458,7 @@ func NewApp( auth.NewAppModule(appCodec, app.keeper.acct, authsims.RandomGenesisAccounts), bank.NewAppModule(appCodec, app.keeper.bank, app.keeper.acct), capability.NewAppModule(appCodec, *app.keeper.cap), - feegrantmodule.NewAppModule(appCodec, app.keeper.acct, app.keeper,bank, + feegrantmodule.NewAppModule(appCodec, app.keeper.acct, app.keeper.bank, app.keeper.feegrant, app.interfaceRegistry), gov.NewAppModule(appCodec, app.keeper.gov, app.keeper.acct, app.keeper.bank), mint.NewAppModule(appCodec, app.keeper.mint, app.keeper.acct), diff --git a/app/app_configure.go b/app/app_configure.go index 17b0bc8a4a..7fde33e5d9 100644 --- a/app/app_configure.go +++ b/app/app_configure.go @@ -173,3 +173,14 @@ func (app *AkashApp) akashSimModules() []module.AppModuleSimulation { ), } } + +func akashVersionMaps(vm module.VersionMap) module.VersionMap { + vm["audit"] = audit.AppModule{}.ConsensusVersion() + vm["cert"] = cert.AppModule{}.ConsensusVersion() + vm["deployment"] = deployment.AppModule{}.ConsensusVersion() + vm["escrow"] = escrow.AppModule{}.ConsensusVersion() + vm["market"] = market.AppModule{}.ConsensusVersion() + vm["provider"] = provider.AppModule{}.ConsensusVersion() + + return vm +} diff --git a/app/app_test.go b/app/app_test.go index 88a6a58ac8..f6cd790731 100644 --- a/app/app_test.go +++ b/app/app_test.go @@ -5,12 +5,38 @@ import ( "os" "testing" + "github.com/golang/mock/gomock" "github.com/stretchr/testify/require" "github.com/tendermint/tendermint/libs/log" dbm "github.com/tendermint/tm-db" "github.com/cosmos/cosmos-sdk/simapp" + transfer "github.com/cosmos/ibc-go/modules/apps/transfer" + ibc "github.com/cosmos/ibc-go/modules/core" abci "github.com/tendermint/tendermint/abci/types" + tmproto "github.com/tendermint/tendermint/proto/tendermint/types" + + "github.com/cosmos/cosmos-sdk/baseapp" + "github.com/cosmos/cosmos-sdk/tests/mocks" + sdk "github.com/cosmos/cosmos-sdk/types" + "github.com/cosmos/cosmos-sdk/types/module" + "github.com/cosmos/cosmos-sdk/x/auth" + "github.com/cosmos/cosmos-sdk/x/auth/vesting" + authzmodule "github.com/cosmos/cosmos-sdk/x/authz/module" + "github.com/cosmos/cosmos-sdk/x/bank" + banktypes "github.com/cosmos/cosmos-sdk/x/bank/types" + "github.com/cosmos/cosmos-sdk/x/capability" + "github.com/cosmos/cosmos-sdk/x/crisis" + "github.com/cosmos/cosmos-sdk/x/distribution" + "github.com/cosmos/cosmos-sdk/x/evidence" + feegrantmodule "github.com/cosmos/cosmos-sdk/x/feegrant/module" + "github.com/cosmos/cosmos-sdk/x/genutil" + "github.com/cosmos/cosmos-sdk/x/gov" + "github.com/cosmos/cosmos-sdk/x/mint" + "github.com/cosmos/cosmos-sdk/x/params" + "github.com/cosmos/cosmos-sdk/x/slashing" + "github.com/cosmos/cosmos-sdk/x/staking" + "github.com/cosmos/cosmos-sdk/x/upgrade" ) func TestAppExport(t *testing.T) { @@ -41,3 +67,194 @@ func TestAppExport(t *testing.T) { _, err = app2.ExportAppStateAndValidators(false, []string{}) require.NoError(t, err, "ExportAppStateAndValidators should not have an error") } + +func TestRunMigrations(t *testing.T) { + db := dbm.NewMemDB() + encCfg := MakeEncodingConfig() + logger := log.NewTMLogger(log.NewSyncWriter(os.Stdout)) + app := NewApp(logger, db, nil, true, 0, map[int64]bool{}, DefaultHome, simapp.EmptyAppOptions{}) + // Create a new baseapp and configurator for the purpose of this test. + bApp := baseapp.NewBaseApp(AppName, logger, db, encCfg.TxConfig.TxDecoder()) + bApp.SetCommitMultiStoreTracer(nil) + bApp.SetInterfaceRegistry(encCfg.InterfaceRegistry) + app.BaseApp = bApp + app.configurator = module.NewConfigurator(app.appCodec, app.MsgServiceRouter(), app.GRPCQueryRouter()) + + // We register all modules on the Configurator, except x/bank. x/bank will + // serve as the test subject on which we run the migration tests. + // + // The loop below is the same as calling `RegisterServices` on + // ModuleManager, except that we skip x/bank. + for _, module := range app.mm.Modules { + if module.Name() == banktypes.ModuleName { + continue + } + + module.RegisterServices(app.configurator) + } + + // Initialize the chain + app.InitChain(abci.RequestInitChain{}) + app.Commit() + + testCases := []struct { + name string + moduleName string + forVersion uint64 + expRegErr bool // errors while registering migration + expRegErrMsg string + expRunErr bool // errors while running migration + expRunErrMsg string + expCalled int + }{ + { + "cannot register migration for version 0", + "bank", 0, + true, "module migration versions should start at 1: invalid version", false, "", 0, + }, + { + "throws error on RunMigrations if no migration registered for bank", + "", 1, + false, "", true, "no migrations found for module bank: not found", 0, + }, + { + "can register and run migration handler for x/bank", + "bank", 1, + false, "", false, "", 1, + }, + { + "cannot register migration handler for same module & forVersion", + "bank", 1, + true, "another migration for module bank and version 1 already exists: internal logic error", false, "", 0, + }, + } + + for _, tc := range testCases { + t.Run(tc.name, func(t *testing.T) { + var err error + + // Since it's very hard to test actual in-place store migrations in + // tests (due to the difficulty of maintaining multiple versions of a + // module), we're just testing here that the migration logic is + // called. + called := 0 + + if tc.moduleName != "" { + // Register migration for module from version `forVersion` to `forVersion+1`. + err = app.configurator.RegisterMigration(tc.moduleName, tc.forVersion, func(sdk.Context) error { + called++ + + return nil + }) + + if tc.expRegErr { + require.EqualError(t, err, tc.expRegErrMsg) + + return + } + } + require.NoError(t, err) + + // Run migrations only for bank. That's why we put the initial + // version for bank as 1, and for all other modules, we put as + // their latest ConsensusVersion. + vm := module.VersionMap{ + "bank": 1, + "auth": auth.AppModule{}.ConsensusVersion(), + "authz": authzmodule.AppModule{}.ConsensusVersion(), + "staking": staking.AppModule{}.ConsensusVersion(), + "mint": mint.AppModule{}.ConsensusVersion(), + "distribution": distribution.AppModule{}.ConsensusVersion(), + "slashing": slashing.AppModule{}.ConsensusVersion(), + "gov": gov.AppModule{}.ConsensusVersion(), + "params": params.AppModule{}.ConsensusVersion(), + "upgrade": upgrade.AppModule{}.ConsensusVersion(), + "vesting": vesting.AppModule{}.ConsensusVersion(), + "feegrant": feegrantmodule.AppModule{}.ConsensusVersion(), + "evidence": evidence.AppModule{}.ConsensusVersion(), + "crisis": crisis.AppModule{}.ConsensusVersion(), + "genutil": genutil.AppModule{}.ConsensusVersion(), + "capability": capability.AppModule{}.ConsensusVersion(), + "ibc": ibc.AppModule{}.ConsensusVersion(), + "transfer": transfer.AppModule{}.ConsensusVersion(), + } + vm = akashVersionMaps(vm) + _, err = app.mm.RunMigrations(app.NewContext(true, tmproto.Header{Height: app.LastBlockHeight()}), + app.configurator, vm) + if tc.expRunErr { + require.EqualError(t, err, tc.expRunErrMsg) + } else { + require.NoError(t, err) + // Make sure bank's migration is called. + require.Equal(t, tc.expCalled, called) + } + }) + } +} + +func TestInitGenesisOnMigration(t *testing.T) { + db := dbm.NewMemDB() + logger := log.NewTMLogger(log.NewSyncWriter(os.Stdout)) + app := NewApp(logger, db, nil, true, 0, map[int64]bool{}, DefaultHome, simapp.EmptyAppOptions{}) + ctx := app.NewContext(true, tmproto.Header{Height: app.LastBlockHeight()}) + + // Create a mock module. This module will serve as the new module we're + // adding during a migration. + mockCtrl := gomock.NewController(t) + t.Cleanup(mockCtrl.Finish) + mockModule := mocks.NewMockAppModule(mockCtrl) + mockDefaultGenesis := json.RawMessage(`{"key": "value"}`) + mockModule.EXPECT().DefaultGenesis(gomock.Eq(app.appCodec)).Times(1).Return(mockDefaultGenesis) + mockModule.EXPECT().InitGenesis(gomock.Eq(ctx), gomock.Eq(app.appCodec), gomock.Eq(mockDefaultGenesis)).Times(1).Return(nil) + + app.mm.Modules["mock"] = mockModule + + // Run migrations only for "mock" module. We exclude it from + // the VersionMap to simulate upgrading with a new module. + vm := module.VersionMap{ + "bank": bank.AppModule{}.ConsensusVersion(), + "auth": auth.AppModule{}.ConsensusVersion(), + "authz": authzmodule.AppModule{}.ConsensusVersion(), + "staking": staking.AppModule{}.ConsensusVersion(), + "mint": mint.AppModule{}.ConsensusVersion(), + "distribution": distribution.AppModule{}.ConsensusVersion(), + "slashing": slashing.AppModule{}.ConsensusVersion(), + "gov": gov.AppModule{}.ConsensusVersion(), + "params": params.AppModule{}.ConsensusVersion(), + "upgrade": upgrade.AppModule{}.ConsensusVersion(), + "vesting": vesting.AppModule{}.ConsensusVersion(), + "feegrant": feegrantmodule.AppModule{}.ConsensusVersion(), + "evidence": evidence.AppModule{}.ConsensusVersion(), + "crisis": crisis.AppModule{}.ConsensusVersion(), + "genutil": genutil.AppModule{}.ConsensusVersion(), + "capability": capability.AppModule{}.ConsensusVersion(), + "ibc": ibc.AppModule{}.ConsensusVersion(), + "transfer": transfer.AppModule{}.ConsensusVersion(), + } + vm = akashVersionMaps(vm) + _, err := app.mm.RunMigrations(ctx, app.configurator, vm) + require.NoError(t, err) +} + +func TestUpgradeStateOnGenesis(t *testing.T) { + db := dbm.NewMemDB() + app := NewApp(log.NewTMLogger(log.NewSyncWriter(os.Stdout)), db, nil, true, 0, map[int64]bool{}, DefaultHome, simapp.EmptyAppOptions{}) + genesisState := NewDefaultGenesisState() + stateBytes, err := json.MarshalIndent(genesisState, "", " ") + require.NoError(t, err) + + // Initialize the chain + app.InitChain( + abci.RequestInitChain{ + Validators: []abci.ValidatorUpdate{}, + AppStateBytes: stateBytes, + }, + ) + + // make sure the upgrade keeper has version map in state + ctx := app.NewContext(false, tmproto.Header{}) + vm := app.keeper.upgrade.GetModuleVersionMap(ctx) + for v, i := range app.mm.Modules { + require.Equal(t, vm[v], i.ConsensusVersion()) + } +} diff --git a/app/sim_test.go b/app/sim_test.go index 8df038409d..51294e8319 100644 --- a/app/sim_test.go +++ b/app/sim_test.go @@ -20,6 +20,7 @@ import ( sdk "github.com/cosmos/cosmos-sdk/types" simtypes "github.com/cosmos/cosmos-sdk/types/simulation" authtypes "github.com/cosmos/cosmos-sdk/x/auth/types" + authzkeeper "github.com/cosmos/cosmos-sdk/x/authz/keeper" banktypes "github.com/cosmos/cosmos-sdk/x/bank/types" capabilitytypes "github.com/cosmos/cosmos-sdk/x/capability/types" distrtypes "github.com/cosmos/cosmos-sdk/x/distribution/types" @@ -174,6 +175,7 @@ func TestAppImportExport(t *testing.T) { {app.keys[capabilitytypes.StoreKey], newApp.keys[capabilitytypes.StoreKey], [][]byte{}}, {app.keys[ibchost.StoreKey], newApp.keys[ibchost.StoreKey], [][]byte{}}, {app.keys[ibctransfertypes.StoreKey], newApp.keys[ibctransfertypes.StoreKey], [][]byte{}}, + {app.keys[authzkeeper.StoreKey], newApp.keys[authzkeeper.StoreKey], [][]byte{}}, } for _, skp := range storeKeysPrefixes { diff --git a/client/broadcaster/client.go b/client/broadcaster/client.go index 6f99f29cfe..b525ced878 100644 --- a/client/broadcaster/client.go +++ b/client/broadcaster/client.go @@ -8,7 +8,10 @@ import ( sdkclient "github.com/cosmos/cosmos-sdk/client" "github.com/cosmos/cosmos-sdk/client/tx" "github.com/cosmos/cosmos-sdk/crypto/keyring" + "github.com/cosmos/cosmos-sdk/crypto/keys/secp256k1" sdk "github.com/cosmos/cosmos-sdk/types" + txtypes "github.com/cosmos/cosmos-sdk/types/tx" + "github.com/cosmos/cosmos-sdk/types/tx/signing" ) var ( @@ -35,7 +38,7 @@ func NewClient(cctx sdkclient.Context, txf tx.Factory, info keyring.Info) Client } func (c *simpleClient) Broadcast(_ context.Context, msgs ...sdk.Msg) error { - txf, err := tx.PrepareFactory(c.cctx, c.txf) + txf, err := PrepareFactory(c.cctx, c.txf) if err != nil { return err } @@ -74,3 +77,94 @@ func doBroadcast(cctx sdkclient.Context, txf tx.Factory, keyName string, msgs .. return response, nil } + +// PrepareFactory ensures the account defined by ctx.GetFromAddress() exists and +// if the account number and/or the account sequence number are zero (not set), +// they will be queried for and set on the provided Factory. A new Factory with +// the updated fields will be returned. +func PrepareFactory(clientCtx sdkclient.Context, txf tx.Factory) (tx.Factory, error) { + from := clientCtx.GetFromAddress() + + if err := txf.AccountRetriever().EnsureExists(clientCtx, from); err != nil { + return txf, err + } + + initNum, initSeq := txf.AccountNumber(), txf.Sequence() + if initNum == 0 || initSeq == 0 { + num, seq, err := txf.AccountRetriever().GetAccountNumberSequence(clientCtx, from) + if err != nil { + return txf, err + } + + if initNum == 0 { + txf = txf.WithAccountNumber(num) + } + + if initSeq == 0 { + txf = txf.WithSequence(seq) + } + } + + return txf, nil +} + +// CalculateGas simulates the execution of a transaction and returns the +// simulation response obtained by the query and the adjusted gas amount. +func CalculateGas( + queryFunc func(string, []byte) ([]byte, int64, error), txf tx.Factory, msgs ...sdk.Msg, +) (txtypes.SimulateResponse, uint64, error) { + txBytes, err := BuildSimTx(txf, msgs...) + if err != nil { + return txtypes.SimulateResponse{}, 0, err + } + + bz, _, err := queryFunc("/cosmos.tx.v1beta1.Service/Simulate", txBytes) + if err != nil { + return txtypes.SimulateResponse{}, 0, err + } + + var simRes txtypes.SimulateResponse + + if err := simRes.Unmarshal(bz); err != nil { + return txtypes.SimulateResponse{}, 0, err + } + + return simRes, uint64(txf.GasAdjustment() * float64(simRes.GasInfo.GasUsed)), nil +} + +// protoTxProvider is a type which can provide a proto transaction. It is a +// workaround to get access to the wrapper TxBuilder's method GetProtoTx(). +type protoTxProvider interface { + GetProtoTx() *txtypes.Tx +} + +// BuildSimTx creates an unsigned tx with an empty single signature and returns +// the encoded transaction or an error if the unsigned transaction cannot be +// built. +func BuildSimTx(txf tx.Factory, msgs ...sdk.Msg) ([]byte, error) { + txb, err := tx.BuildUnsignedTx(txf, msgs...) + if err != nil { + return nil, err + } + + // Create an empty signature literal as the ante handler will populate with a + // sentinel pubkey. + sig := signing.SignatureV2{ + PubKey: &secp256k1.PubKey{}, + Data: &signing.SingleSignatureData{ + SignMode: txf.SignMode(), + }, + Sequence: txf.Sequence(), + } + if err := txb.SetSignatures(sig); err != nil { + return nil, err + } + + protoProvider, ok := txb.(protoTxProvider) + if !ok { + return nil, fmt.Errorf("cannot simulate amino tx") + } + simReq := txtypes.SimulateRequest{Tx: protoProvider.GetProtoTx()} + + return simReq.Marshal() +} diff --git a/client/broadcaster/serial.go b/client/broadcaster/serial.go index 8f64a18236..1956cd2d84 100644 --- a/client/broadcaster/serial.go +++ b/client/broadcaster/serial.go @@ -47,7 +47,7 @@ type serialBroadcaster struct { func NewSerialClient(log log.Logger, cctx sdkclient.Context, txf tx.Factory, info keyring.Info) (SerialClient, error) { // populate account number, current sequence number - poptxf, err := tx.PrepareFactory(cctx, txf) + poptxf, err := PrepareFactory(cctx, txf) if err != nil { return nil, err } diff --git a/client/docs/statik/statik.go b/client/docs/statik/statik.go index 65b5b63dea..2bb7fb7ab6 100644 --- a/client/docs/statik/statik.go +++ b/client/docs/statik/statik.go @@ -6,7 +6,9 @@ import ( "github.com/rakyll/statik/fs" ) + func init() { - data := "PK\x03\x04\x14\x00\x08\x00\x08\x00\x00\x00!(\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x11\x00 \x00favicon-16x16.pngUT\x05\x00\x01\x80Cm8\x00\xbd\x01B\xfe\x89PNG\x0d\n\x1a\n\x00\x00\x00\x0dIHDR\x00\x00\x00\x10\x00\x00\x00\x10\x08\x06\x00\x00\x00\x1f\xf3\xffa\x00\x00\x01\x84IDATx\x01\x95S\x03Luq\x1c\xfd\x8c\xf1\xc3\xec0\xa7)\xcda\xb6k6\xb2\x9b\xf9\xb2k\xc85/\xdb\x8dqx\xc6\x94m\xcc{\xef\x7fO\xff\xf3l\xdc\xed\xf2\xe0\xfe\xf8\xc9\xffP\x14\x11/\x14[\xa3P\xc4\xa1\xbc?\xf1t>7\x12s\x13\x03\x85\xca7IR a\xb5j\x8f\xa71\xbe]\x88\xf6\xb9L\xf0\x1c\x93\xcf\xda\xe3)\x10\x93f\x8d\xe4\x06\x13\xcf\xde<\x9b\xd14\x95\x8a\x92\x81OA\xcfF\x89\xdd<\x9b M\xe6}L\xe4\x07\x15\xc5\xf5\xe3\xffI\x0c{\xd6\x8d\xffs\x994\xbasfh\xae?\xafk\x1aprw\x10 <\xb9\xdb\xc7\x86\xa6\xd1\x19I\n\xa8\xb1\xd7\x84y3g\x171T$\xb5c\x7fq\xfbbq\xbfk\x8e'\x1dQ\xb0\xc2,\x92\x0bx|;F\xe5\xf0\xef\x00\x83\xf2\xa1\x1fx|?q\xbd\xcb\xc2\x16\x80ZF\xf0\xc4J\xf3\xe3\xe4n1\xcc\x17k`:}\xcby\xe8\x98\xcbB\xc7|6z\x97r\xd14\x9d\x06\xd3\xf9\x8a\xe4\x94\x90\x8b\xb6\xd9\x0cP\xebc@\xd0|\xbe*\xc94\xc8\xa7\x98'\xcdh\x00\xe3\xd92\xa6vK}\x0cB\xa4\xf0+D\n\xc7\x81)\xb0\x10\x9a\xe3\xa9\xd8\x8bx\xe4(\xa2\xbb\x8dl\x0d\x01\xb6\x8a-\xf378\xbe\xdd\xc7\xa6\xb6\xc9\xd9\xc6d\xd8\\m\xf4\x0c\x92 uQ\x0e\xd2\xf5\xb3\xd1\xf1w\xdfQ\x16\xb34a$\xa1\xc4\xc4(V\xbcF\xd9\xdf\xa4\x91\xe9\xb0&,\x12+\xcd\x93\xcf\x1c\x1cb\xdc\xca\x00qt\xeb\xcc-\x14\x89\xfe\xfc\x0fm2j\x88\xec\xccs\x18\x00\x00\x00\x00IEND\xaeB`\x82\x01\x00\x00\xff\xffPK\x07\x08\xd4`4t\xc7\x01\x00\x00\xbd\x01\x00\x00PK\x03\x04\x14\x00\x08\x00\x08\x00\x00\x00!(\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x11\x00 \x00favicon-32x32.pngUT\x05\x00\x01\x80Cm8\x00u\x04\x8a\xfb\x89PNG\x0d\n\x1a\n\x00\x00\x00\x0dIHDR\x00\x00\x00 \x00\x00\x00 \x08\x06\x00\x00\x00szz\xf4\x00\x00\x04|ID\xc4\xcf\xd0@\x04&%\xad\x1e\x16\x0f\xf7\x8d\x97AR\xfa\xca\xe7l\x87\x05\xf8\xd2\xfb\x0c\x84\x1d\x0dLVY\xdc/ju\x13\x1a\x88\xd2\xa0\xaaa\x82|nzp_\xf4\x03\xc8 \xd4;^\x8a9}\xeeu\x9a\x91 `\x04\x14s\xec\xe1\x0c\xc6]\xa3\x05``\xd1w\x12*~ \x00\xf3\xae\xd3\xa0\x9cb\x82\xa2bx(\xb3n\x1fqx\xd2\xf2\xda4\x1d\x8a}\x1ck\xd4>\x9cI+\xeb\xb3\xf4k\xc8u`L\x93\xf3]4\xb5\xd0\xc3\xe33\xd9\xee\xd7\xf2\xd9\x19\xea\x18\xc9\xc1Y:\x18\xfb(-\xadN\x82\x06e\xd5\x1f0\xa2\x1dV\xf8\xbe0\xc1\x985\x01\xf8\xd2~\\\xa6\xa5\xb5)&\xf6\x98V\x80l\xe4\x03\xf8\x03\x04\x00s\x9a^\xec\x85\x00\xf4+\x0b\x00\xe1:G\xf2p\x96\x0e\xc4,\xe46\x1e5\xbbP\xdd\x15J\x80}\xce\xa4\xe2\xc8{m\xa4\xe2\xc3\xc2\x01\x07\xc0\xdb\xa4\x18-\xa1\x931\xba\x10S\xfa%\xb6P`\x10\x19v\x99#|Gg\x9b \x10W\xf6\x8dI1\xba\x92\xd66\x17E\x12\xfa\xd9\xa8\xf3UTe\n\x1b\x95\x9d\x81f\xe5\x18\xa5umc\x81\x86\xa6\xeb\xec \x804\xcbg\x17\xa19\xfa\xc6\xf7<\xa3\xbd\xf2\x0e\x7f\x02\x80\x97Y\xc7\xac\x184$h\xa3v\xba! \xcc{\xcd\xb4!\xb1\xd8\x92%h\xe3\x93\xdc\xd3_\xda1\xe6\xaei\xcf\x83\xa6p\xbc$\xf0\xb2\xda\x94\xa2q\x14B@\x13\xdb\xff\xf3\xd7\x0d\xfaA\xb9\xc5n{\x8e\xd6Y\x08\x01u\xc1'~\x16\x8e\xe9\x04\xa2\xfbA+\xc74\x0c\x98\xab\xd7:\xfc0\xd1v\xaf$\xa2#\xb7\xf1\x08\xfdm!OXh8\x10j|g\xd1\xe0a\xb2\x99\x04\x9a[y\x9a\xbdk\xf24C$\xa0\x9e#\x9f\xa3\xa8\x001\xc6\x1a\"\xc0\xe4i\xa6\xcc0\xf3\xf7\xb7\xf5XE\xb8\xe0\xa1\xc9\xc2\x0c\x90\x83\x80$\x838\xdf\xd6\xe3\xd4\x82FNG\x0f\x876\x8a\xbf1\xa8d(\xa7@\x8cQX\x90\xdb\x19\x9f\xc5YG\xe9\x9e\x00\xa5y3]\x9aJ\xe1\"\x00\x00\x00\x00IEND\xaeB`\x82\x01\x00\x00\xff\xffPK\x07\x086B\xc8\xd7\x7f\x04\x00\x00u\x04\x00\x00PK\x03\x04\x14\x00\x08\x00\x08\x00\x00\x00!(\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\n\x00 \x00index.htmlUT\x05\x00\x01\x80Cm8\xb4T]O\xdc:\x10}\xdf_1\x98\x07\xe0\n\xc7\x17V\x17]\xa5I\x1e(\xad\x8aDU$\xd8\x87\xaa\xaa*'\x9ed\x0d\x8e\xbd\xb2\x9d\xfd\x00\xf1\xdf\xab8\xc9\x86v\x11\x95\xaaV+\xad\xc7s&\xe7\x8cg\xc6N\xf6(\x85\x0f\xb7\x1f\xaf\xa04\x16\x9c\xe7^\x16 \xa4\xf3V\xe6\x8d\x97FC\xdeh\xa1\x10\xf2F*\x01\x94f\x93d\xef\xe2\xd3\xdb\xdb\xcf\xd7\xef`\xeek\x95M\x92v\x01\xc5u\x95\x12\xd4$\x9b\x00$s\xe4\xa25\x00\x92\x1a=\x87b\xce\xadC\x9f\x92\xd9\xed{\xfa?\xe9!/\xbd\xc2\xecf\xc5\xab\n-\xcc.\x13\xd6y:TI}\x0f\x16UJ\x9c\xdf(tsDO\xc0o\x16\x98\x12\x8fk\xcf\n\xe7\x08\xcc-\x96)\x99{\xbfp1c\x85\xd0w.*\x94iD\xa9\xb8\xc5\xa805\xe3w|\xcd\x94\xcc\x1ds\x9d\x14m$\x9bF\xd3\xff\xa2\x93g\x9e(\xd0\xedh\xcb\xc2\xe8AU\xd6\xbcB\xb6\xd0\xd5 [\xf2e\x8b\xd3\xe9\xe9zz\x1a\x05\xc0\xc9\x07t) \x1e\x02\xec\xf7\xf8N\xce\xd6'g?\xf0\x05\xcf\xc8\x17*\xd2\xd9\x10\xda\xd0\x9b\x8f\xfd\n\x90\x9b5u\xf2A\xea*\x86\xdcX\x81\x96\xe6f\xfdf\x8b\x9b%\xdaR\x99U\x0c\xb46\x0f\xd4\x15\xd6(\x95s\xeb\xe8\x12\xad\x97\x05W\xbb\xb1t\x13C\x178`O\x93\xde\xf8\xe7x0\xe2\x1cKcq\xdc\xf3\xd2\xa3}5?\xa9\xe7h\xa5\xdf!\xcd\x8d\xd8\xec|Xs[I\x1d\xff;\xa6\x97\xf3\xe2\xbe\xb2\xa6\xd1\"\x86\xfd\x92\xb7\xbf\x91\xaa\xfdO\xd8\xb6^ \xebF\xb35[\xfa\xbe\x9eB.A\x8a\x94\x8c\xe3@\xb2\x84 \xb9\xcc&}\xc1\x0b+\x17\x1e\x9c-\xfe\xc8\xb0\xd1\xeeVEw\x8edmz\x81=\xfb;R\xces-\xb82\x1a\xe9\xc2\xa2C\xff\x8aj\xb7YI-\xcc*2Z\x19. \x85\xb2\xd1E\xfb\x16\x1c\x1e\xc1\xe3\xd0\x1b\xc6\xe0<< \x1c\xdc\xc6y\xac{\x7fa\xb4\xf3\xd0HH\xa1\xbf\xd8\xb3\xcb\xf3p\xd8\xc3\xb1\x87\x8dU1\x90h\xc82\xda\xf0Z\x91\xe3-,L\xfdM\x8a\x18\x0e\xf6\xc7c\x1c<\x83\x11\x17WR\xdf\x87\xd9\xf1\xb6\xc1\x11\xea\x0e\xe8b\xf8\xb2u\xc1\xcfyD}P\xc4\x17\xd2\x1d\xbf\x14w\xb3\xad\xd8u\x08\xdd\xc6|}\xa6\xa4\x9aJ\xea_)uA\xd1\x85Y\x85Z\xce\xacz\x89K\xf1\x8di|\x0cd\x14\xbe\n.2\x8c\xf1\xd1P\xf6\xbe5\xa1\xbe\x8d\x0c\xce\xa70\xd6c\xff\x12\xd6\x0dv\xc2\xba\xf7\xf9{\x00\x00\x00\xff\xffPK\x07\x08\x8e\x10\x9f\xf1}\x02\x00\x00\xe3\x05\x00\x00PK\x03\x04\x14\x00\x08\x00\x08\x00\x00\x00!(\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x14\x00 \x00oauth2-redirect.htmlUT\x05\x00\x01\x80Cm8\xc4VMo\xe36\x10\xbd\xfbW\xbc\xf0\x10I\xb0\xab\xa0=*Q\x82\"\xd8C\nl\xb7\xd8 \xbd\x04\xc1\x82\xa6\xc66\x1b\x99\x94I\xca\x86k\xfb\xbf\x17\x94eK\xb2e\xd4=u\x0e\x968\x9cy\x9a\x8f7\xa4\x1fn2-\xdc\xba \xcc\xdc<\x7f\x1c<\xf8\x07r\xae\xa6)#\xf5\xd3\xdb+{\x1c<\x8cu\xb6\x86V\xb9\xe6Y\xcaL\xa9\xc2\xc8k\xef\xbc\xda?kO+\x8c,\xdc\xe3\x00\x00\x82\xd2\x12\xac3R\xb8\xe0\xbe\xd2LJ%\x9c\xd4\n\xa6T\x08#l*\xad\x97%7\xd0\xbct\xb3_\x90b%U\xa6W\xb1.H\x91\x89\xed\x8aO\xa7d\xde^\xbeS&\x0d \xf7\xad\xb2\xbb\xef\xf8ZR\xee\xd5qGHk\x9c\xd8\xfae\xd7\xca\xd4\x08o&o\xecZ\xca\xae\xb5\xb4\x7f\xf2\\f#,\x8a\x11\xb81\xf7\x83\xe3\xb6\x9c \xbc\x13:\xa3\xad\xd3\x9f\xa4\xb6d\x8c6w\xb1#\xeb\xc2:\xfa\\\x0b\xees\x8dg\xdc\xce\xa2v\xae^\x16E\x93g\xc72\xb6\xe5\xd8\xd7LM\xc3\x9f\xa3&\x9e\x1d(\xb7\xd4\x07r\xf4\xb6\xc4\x8d\xb8\xe8\xdf\xc4\xce\x8dA\x8aE\x11\xdb\"\x97.d\xb7,j\xef\xc5\x13m\xbep1\x0b\x8f\xcd\n\x97#9\xfa\xc1\x8d\x89\xb0\x81\x7f\xbe\xcb\x0f\xa4\x08X\x80!\x96\xb1\xa1\"\xe7\x82\xc2 \x0dF\x08X\xc2\x82\x08C\xbf{\xbfk\x80\xabP\x17\x05\x9e\xf0\xdb\xeb\xb7\xdf\xe3\x82\x1bKa\xb0\xf1\x08\xfe\x9b\x7fi\xa9\xc2\xcam\x17\x8c:9\xa2M\x9b\xf0\x93\xd6#,y^\xd2iA\x0fb\xc8\x95F\xe1\x93\xd6H\xd3\x14\x8c\xe1i\xef\x80\x04\x19\xf9\x96\xbd}\x7fy\xd6\xf3B+R.\xdcc\x9d!\xed\x8e\x9a\x08 6\xad\xea\xd5\xa4\xa8+\xb8g\\\x9a6\xfc\xebr$l!\xd7t\xf3\xbf\xb1\x153\x9a\xf3xJ.d\x93\\\xafX\xb4\x8f\x96\x0bA\xd6>\xeb\x8c\xd8v\xfb_}K7\xd3F\xfe]\xb1\xa1\x82h%q{\x8b\x9b6\x88/\xc4i }\xc07u~}\xe5\xad\xfd\xc9\x98\xe7q\xd8_}o\xf1\x92%\x9dx\x15\x9f\xd3yO\xbdX]\x1aA\xc9>t\xd6o\x93\xd3\x92\xf2\x04l\xc5\x8d\x92jz\xc1jN\xd6\xf2\xa9\x87\xfa\xb5]\x05\xcc\xf9\x1acB\xa9,\x9f\xd0\x08\x05\xb7\x962\xec\xdb\xb6\xe2\x16b\xc6\xd5\x942H\x05KfI\x06\x7f\x9c\x98\xa8\xc0\xd5\x9c\xa2\x0c\x13\xa3\xe7U\x8e\xb55;'Nk\xe6\xd0\x9d;\xd4%^\x14\xbd\xd5\xf7\x92QN\x8e.\x1c`\x079m\xe3\x9e\x8a\xfe\xed\xa2\xad\xe0y>\xe6\xe23\xdc\xf8u\xa7=\xa3\xf6\xa1\x98\xb4\x17g\xa9\xf4\x1dA\xa8Z\xe4\xf6\x88_\xfc)\xf8\xd5N\xcf,\xea\xb4\xabS\xf2\xd2\xe0v\x10\x90\x82\xbd\xb3\xe1\xc1g\xc8>\x120\x0c{\x1d\xbd\x1c\xd1\x7fd\xb4\xbf\x82|\xf7\x9f\xd0\xa7\x1e\x82\xc5`H\xc0\x94F3p0$H.\x0f]v3\xaa\x9b\x1c\x83EW}\xba4\x12O`_\xb5!H5\xd1 \x9a\x0c\xaa\xcd\x04\x8cE\xe7M:\xe1\x08\xfe\xefQ\xab\x02\xfe\xb7A\xeb\xb6k\xbb\x05{\xef\x8e\xde\x84\xcb\x9c\xb2\x8f\x04\xd7U\xf9\x9aQ:\xbe\xf51\xf1\x1a\xaaW\x97uR\xdd\xe7\xf59\x974\xb7\xfc5s\xd0\xc4P\xdf\xdd\"\xd7\x96\xc2\xdab7x\xb8;\xfc\x01\xfa'\x00\x00\xff\xffPK\x07\x08]\x12r 9\x03\x00\x00T \x00\x00PK\x03\x04\x14\x00\x08\x00\x08\x00\x00\x00!(\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x0c\x00 \x00swagger.yamlUT\x05\x00\x01\x80Cm8\xec\xfd{w\xdb8\x96/\x0c\xff\x9fO\xb1O\xdew\x8d\x93\xe9D\xbe\xe4\x9e3\x99\xe78\x89S\xe5\xaeJ\xc5\x9d8\xd53=O/\x05\"!\x89e\x8aP\x08\xd2\xb6R\xa7\xbf\xfb\xb3p\xe1U\xc4\x8d\xa2\x1c%\xc1>gM\xa7,r\x03\xd8\x04\xf6\xf5\x07\x80^\xa1\xd9\x0c\xa7\xcfa\xefht\xb0w+J\xa6\xe4\xf9-\x80,\xcab\xfc\x1c\x8e\x7f9\xfe\xf03\xdc\x87\xd9\xfb\xb3W\xf0\x13\xca\xf0\x15ZAH\x02z\x0b \xc44H\xa3e\x16\x91\xe49\xec\x1d\xc3\xfb\x93\x0f\xe7\x10%\x19N\xa7(\xc00%)\xd0\x0ce\x18>\xe78\x8d0\xbd\x071\x9e\xa1`\x05Y\x8a\x12\x8a\x02\xf6\"\xdd\xbb\x05p\x89S\xca\x99\x1c\x8e\x0eF\x07\xb7\x96(\x9bS\xd6\x87}t\x81\xe8|?\xc4\xcb\x98\xac\x168\xc9\xf6/\x0f'8C\x87\xb5?\xd1\xfd\xa2\xc7\x003\x9c\x89\x7f\x00\xd0|\xb1@\xe9\xea9\xbc.\x9f,\xba\x01\xd5\xcb\x10\xe2\x0cE1\x95/\x91%N\x11\xeb\xd5iX\x7fQ\xfe\x9ab\xba$ \xc5\xb4h\x03`\xef\xe8\xe0`\xaf\xfa\xcf\x96H\x8e\x81\xe6A\x80)\x9d\xe6q\xf9\xf6\xa8\xf64\x0d\xe6x\x81\xea\xef\x03d\xab%~\x0ed\xf2\x07\x0e\xb2\xc6\x0f\xcb\x94u/\x8b\xea\xed\x0b\xaa\xc6\xd3\xfeE\xc3\x0e\xb4,\xc1\xc0\x16L\xac\xc1\xc8\x1e\x1aM\x8c\xa3P\xf5\x90EK`\xd5\x1a#r\x95\xe0T\xf7@\xd1\x1a\xcd\xd2(\x99i\x1e\x0c)\xfe<\x08#`+e\x81\xb2\xe7\x90GI\xf6\xf8\xa1Z\x0cbIV\x13\xf3\xf45\xd0\x8c\xa4\x98\x8aa\x01JB\xa0\xf8s\x8e\x93\x00C\x92/&8U0\xe3\xeb\xd2$pC\xcfq\x92/t\x02\xb8\x0fQr\x89\xe2(\xd4>\xc3\xd4\xc0%\xd6>\x12\xc4\x84b5\x97\x10OQ\x1eg\xcf\x8d\xcd5\x16\xe7\x7f\xde\xb7\xe9\xfas8K\xf14\xba\x06:'y\x1c2\xb9\xa5\x19\\E\xd9\x1c\x0e J\xb8\x0cF\xf0\x81\xe8\xe6 \x0eb\xc4\x04 a\xbeX\xac\x84\xe8u\xd3\xa1\x90I\xfdK\x1f\xf3\xbf@\x88\x13\x92a*\xd5*S\xb05]f\x94d)\xca:\xe7W\xfc/z\xce\x86\x0f \xe7\xe5\x07\xfejD\x01 \xb9\xc0\xd5<\n\xe6\x90\xe2)N)dD\xf2&\xd3\x1ak\x05\xcf\xc2 l6A\x8be5Y)\x04.;\xbeW\xb3\x11r=\x85\xb55vOv\x9c\xad.\xd9\xb1\xc2n\xecu\xb0\x9d\xa5$_*t\x90\xe86JS\xb4\xea\xfc=\xca\xf0B\xa9\xbe,\xb4\xa0\x8d\x0e\xe4\xfd\xd3\xaa[\xab\xa6\xc0\xb29\xb0S\xba\x96\x9f\x14\xac\x14\xaf\x033k\xe5\xcbhf\xdd2\xf3\x82fJ\xed[P\xd1\xb4\xa9e9O\xb5*\x0b\xe0'\xf6a[&\xe1^}\x19\xb7L\x03\x9b\xd0\xfa\xe12\x86\x96\x06\xc5hR\xac\xbf\x89\xc9\xac\xd8\x19\x16\xf6\x14Y\xe2\xc4\xf4H\x1a\xe2T\xa3\xda\xc4S\x0b\x94\x05s\xe3SQB\xf3\xe94\n\"\xe6\xceL\xf3$\xa4\x86\x17\x0cj\xd5\xc1\xb2\xb9\xd8\xb6a\xad[\x0f\xfbV|\x9a\xe7b\xc6\xbe[\xe2\xa4\xc3\xfc\x88\xc9g\xfc\x84\xd57,\xd8\x89\xffRs\xb4\xf8\xe2\xd5'\x97L\xdf\x8a\xffR2\xb5\x99 \x9d3D\xf2?\xad\xfd\xf0\x86\xfd]\xd9\x92\xe3$\xab\x99|\xde\x90\xd2\xda\x0b\xee\xc6\x19\xe9l\xea9_%Ca\x8b\xe8\x12\x07f\xc51\x985J\xd0B\xab\xa7\xc0^W\xb1\xa0\xf0s\x1e\xa5\x98G\xa2vL\x8d\xe3\x00\x87\xb10\xa2\xd1,\xc1\xe1x\xb22?jkJ\n\xfa\xc0Y\xbf\\A\x1c\xd1\x8c}\xce\x0b\xbc\xa2\x90\xcdQ\x06\x19NP\x92Q\xc0\xd7K\x1cd\x90\xe9\x95DAst\x89y\x87Q\x963#5M\xc9\xc2\xe2E\x07\xc9\x81\xa3\xf4\x18\xa18\x1e\x93\xa9\xdd\xb3f'n\x9d\xb4n\xdd:YO\xbe\x8a\xdc>+\x94cf\xff#>j\x94@6\x8f\xa8\xf8\xd2\x8b\x9cf\xfc[Y\xb3\x13\x93\x10P\x96\xa5\xd1$\xcf\xb0A-IB\xc9\xea\xc7\x13<\x1f3\xa0\x0cb\x8c\xc4\xaa\"S\xc8\xe6X|\x07\xb6\"\xd8\x7fY\xf3k~\xb0\x1e\x1f\xa2z\xd4FRn\x1f\xc1\xe1\x038\xaeq\xf7U\x0eL\xc0\xb6\x8f\xf6\x9a\x0c\x97(\xce\x8d\xa6\xa5\"\xe7\x16\x8a\x9cl\xf1\xc1 \xc5\xcb\x14Sf{\xd8\xd8D\xfb\xb0D\x91)\xf0\x00\xe7\x99[\xb5Y\x98\x82j\xdaH[ M\x81y\xc21*\xa69\xfb\x8a\x97Qh\x0c\x95do\xcfb\x14pc\xfb\xbefw\xb5\xaf\xa6\x98\x92<\x0d\xcc\x93\xc4~b[Nj\xa7 \xed6\x99\xad\x07%\xc8\xa9'\xe0\xdc\x1bF\xc12\xb7}\xb4G\x7f\xa0W\x9f\x18\xe5Idv\xcc\x9a\xd4\xabw\xd0\xbb\x87 \x14\x87\xeb+=\xd4G\x9d\x8c\xb91\x15\xb9\xa9\x8d\x8a>&Q\x99]\x0b\x96\xf9=X\xe0\x05IW\"g\x9d\x91\x14\xcd\xdc\xfa\x01\xb0\xc0Y\x1a\x05v\xeaF\x90\x9b\xa5\xab\xc8^54\xc9RQ4\xa9\xf7\xf4\xdbd\x02:\xda\xc6\x8a6\x9a\x84\x8e\xf6\xb2\xa2\x0dZ\x1d\xd4\x86\n\xea\xb3$^\x9d},VC\xa1\xcc\x85\xae\xe2\x0b\"X\xe6\x10\x90d\x1a\xb9\x8c\xce\xc1\xe5\x13$V\xa0\xbd\xfc{\xcd\xcc~s\xf2s\x8e\x92,\xca\x1c:\x07};\x08\xbd; ^s{\xcd]\xa3\xde\xd3o\x93 \xe85\xf7\x0dk\xee\xb7b\xf6\xb7\x95w\xa1\xb1\x8cU\x95&\x15k\xc9Uw\xcb\x85g\xff zM\xce~\xd3\xd2+o%y\xe5\xed@^y+i\xa3I\xf8\x03+\xef\x0fb\xca\x0f\xa5\xbd\xe5\nrW\xdf8 \x97$\xb2\xa8\x19U\xd4g58\xaf\x84\x9e\xab\xa0\xcf\xa7\x008\x91B\x90\xc5\xeb \xa6\x80`\x99O\xe2(\x88W\x808t2\x9a\xc4n\n\xea\xf4\x0c(N/\xa3\xc0\xee5\xd7\x9e\xbf\x973\xe6#\x8f\xd5j\x1d\x8fc@\x97(\x8a\x91}\x87\xcb,\x1e\x17;m\xa1\xae\xf6\x13\x12b\xc0Yp\xcb\x92]4\x85i\x84\xe3\x10\"\nI\x14W\x93\x9b\xfd7\xc9@\xae7\x88\x0c\x15\xf5\x92\xb29\x86Yt\x89\x13\x08Q\x86\xee\xd3,\xcd\x83,Om\x86\x17\x90\\\x05\x1bm\x93\x98rv\x80\x19A\xb6\xb0\x99\x82\x96i\x14X\xea;\xe7\xf9\xef\xae\xfbC\x9c\x10\x03\xc0\xa5N=t.Z\xd8K\x1f\xfa4\xe1\x026\xa9\xe8\x15\x89\x12\x08\xf14J\xf8B\xcf\xc8\x05N\x04\xd8\x04 \xa1D \x07_[\xb2c\x1e\x0cJ\xe4`G\xb7lW\xc9o\xef\xceO\x9e\xc3\xf9\x1c\xcb7\xab5\x83\x128M2\x01e\xb0d\x16-\x96\xb1\xa8A\xf0\xc5\x12\xe44#\x0b\xe6!\xcdIh\xdb\xa1Z5\\\x82 B\x98\xac`Ffd\x99\x92\x8c\x8c\x8c|\\tX\xa1\xbf\n\x0b\x98'Qv\x0f2\x92\xa1X,Z.W\xbeb\x80L-\x18\x16ZF\xfb(\x07\xdd\x8c'Q8\x0es\x81\xb07\xcdN\x879i\xab\x0e\xa4\x988\x0e\xe6\xc3\x12\x07\x85\x08$\xccm\x89\x83h\x1a\x05\xbcw*3^\x00F\x7f\x12\xaf\xd4\xdf\x8f\xc2:N\xb4\xc9\xad\x04\xc2t\xe1E\xb5XW\xa3\x18\xb4\x01\x85nbT\x98\xd7\xf7rgB\xdd%\x93\xf8\xd6&X\x17PL\x92\x19_\xb2\x1d\x0c\x85\x18\x9a\x1b*\x04\xa9\xba\xf1\xb7\x1c\xa7\xab\x8e~D\xb4\xdc-\xc1\x05\xc0\x0d#[_\xfc\x85\xfd\xb5\x8d\x19\x05\xbd?{U\xac\xbd\xe2O\x05\x82\xae\xf6ds\x8bF\x02y\"\xea\x968\x04\x9c\xa6$-\xdb\xae\xbd3\xd0F\x0d\xce\x7f\xfdCk>r@\xc2\x0e\xcb\xa57\x99\xb5\xf5\xf0\xe0\xa8\xf5\xeb\x02S\xda\x996\xd0\xf4A~R\xd5;\xdd\x1e\xa9\xd2\xf34XX\x93=e\xaf\x8f\xf3T\x19\xb7\x1b\x17\x8c6\xf81\xbe\xdd\xb9\xe0\x96(E\x0b\x9c\xe1\xb4\xd6\xe7\xfb\x02f\x06Q8\xe2@\xdc\x1a\xb7(y\xce\xb7\"\xd5\x85Vh\xfe\xe70Eqc\xeauv\xa9\xc6=\xa4\xf8\xf3\xb0\xcc\x15\x90\xe8\x0c\xcd\x1a\xe3\xfb\x9bl\xc5n\x93V\x1cQ\xb9\n\xf5\x9b\xb4h\xc7.-\xc3\xf6\xac\xe2\xe7o`\x7f\xd6\x8e,\"\xd3\xce.c\x03`\xd1\x08\xd8\xef\xef\xb2j\x0f,\xdb\x84\xeff\xc3\xc1\x80\xfb\xbdv\x11\x9eo\xde\xaf\xf4cc\xe4\xb7\xb5\x0blk\xfb\xc0z\xc0\xc3\x8d;\xc1,\xf6\x82YO]\x8b\xe4\xbb9\x94r\xde+\xa6Q\x8e\xeb\xaerA\xbaMd6\xa9@C\xe2\xcfJ\xdd\xda)[\x9b\xedd\x96\x0d\x82u\xa3`\xab\xe3\xad\xe7\x06X\xeay'\x86\x0e\xba\x1e,\xb7\x97\x99\x9c\xff6\xd9\x06\xc76S_\x90\xeb63\x03;\xb6R\xdc6\x9aY\xd82\x87\xafd\xb6g\xb6\x16\xcdj\xcb\x99\xed\xa63\xdbmg=6\x9eY\x99U'\xc3\xeafZ\x876\xae\xbd\xcc\xeb\xb0\x9b\xd0\xb6\xb4\x0dmK\x1b\xd1\xbe\xd2V\xb4\xc17\xa3\xf5\xf07\xf4\xdb\xd1l7\xa4m\xc5\x9e\xd9lKs\xd0kn[\xd3\x1cF\x04N\xa3\x02\xd7\x0dj\xf6\x86\xa8 \xebMj\x96\xfc2\xd2w\x9b\x9a\xa3\x14\xc1Y\x92\xe0\xbcY\xcd\xc6Y\\\xa7\x9euc\xabiY\x91\xeb\x87\x86\xe1\xb7\xad\xf5\xdd\xb8\xe6\xbau\xed\xbb\xfb\x0c\x03ob\x1b`\x1b\x9b;\xce\xc8\xf5\x938}\x0egM\xd0G\x178\xe3\x87zM\x10g\xbcP\x8fV\x06\xc6\x07\xb9\xcei\x8b\xedm\x96\x9c\xe4&8\xe7\x0dn\x1blqs\xda\x0f\xe62\xe9\xad'\xbc\xe3dw\x9d\xe8\x0e\xc3\x13\xe4\xd8\x1f\xe8\xd1'p\xdd\xf4\xd6\xabW\xd0\xb3g\xd0o\xeb[\xef>\xc2\x06\xfd\x84\xbeH\xdc^\x8a\xa6N\x16 A\x15\xb9*\x98\x8a\x86G\xe4\xf6\xc1\xe4\xba[\xcb\x8a\\TH\x93\xac\x15J\x936\x98\x94\x9bMKg\xfbZ\xd1\x86S\xd3\xd9\xe6V\xb4Q\xcb\x03\xdbaA\xfd\x16\xcb\x16\xb6\xc8\xf5\xd8$\xe7\xbeM\xae\xf7|\xed;S\xfb\xed\xb7\xe8\xddM\xd8\xa0\xab\xe0u\xbd\xd7\xf5Z\xda`Rn6-\xbd\xae\xff\x8a\xba~\xd8Mu\xfd\xb7\xd5\xf5\xd8X\xd7{\xca\xf6\x9d\xac^\xdd[\x90W\xf7^\xdd\x1b\xc8\xab\xfb\xaf\xa6\xee\x07\xde\x86\xb7\xc1F\xbc^[\xf1\xfa\xae\x93\x1ek\xa4\xf7\xfa\xe8\xf7a\xb6\xb4)\xcfy[^\x9f\xfe\x0f\xb95o\xf0\xcdy\xd6\xdb\xf3\xec\xf9%\x9bl\xd0s\xda\xa2WLC[\xd0\x91 {\xe8QA\x0e\x1b\xf5z\xad\x8c>\xf6\xc2q\xbb^O\x1d\xed\xbae\xafW3n \x9d\x8a\x06\xde\xb8\xd7{\xeb\xde\xc0\x9b\xf7\x86\xd9\xbe7\xc4\x06>Wm\xe7\xb0\x89\xcf\x8a\x1f\x99\xdam\xe3\xeb\xb3\x91\xcfq\xa6\xda+\x8d\x01\xb6\xf3\xd9\xc9\xdd}\xb3\x9f\x86\x99\x1a\x80d\xc09[H\xd1\x10\xf3\xe8\xc7\xda{?`'7\xae\x1d\xd4;\x02\x01\x96h&\xb5\xc6\xfa\x80\xb5\x9a]\xaf\xc3\x13|\x9d\x8d\x95\x8e\xbdQ\x86\xc6\xa8Q\xca\xf0\xff\xaa\xe6K\xd1>SI\x12\x0d\x01\x19\x81 \xf3\xab)\xc5!\xfb\x8f34\xc3\xef\xf1\xe7\x1c\xd3l$~W0\xe3\xfb\xb88\x1b\xc6\x96\x89\x0c\xc3\x82\xd0\x0cp\x01\xbb\x8b\xbb\xbcO\xae\x076\x14\x80\x06\xaflZ2B\x0d\xb1\xf1\xf3\x7f\xc8\xbb&\x84\x8a\xc9\xe3\x8cV\xbe\x18D\xaa\x95R\x17\x11Whc\xceL\xa5\x93\xaf\x10\x05\x8a\xb3{\xc0\x1c?\x11\xc6DL+\n\x9b\x15\x02\xc9\xe68\xbd\x8a\xe8\xfa75\x9bD\xd1\x95jg\xaa\xf8\x9ax1\xc1a\x88C\xe6\x85\xf1\xab\xd1\xca\x0d\xabr\x87%\x85\xab9\xee\xf4\xc4\xb29\xee\x1aG@R\xc1#\x8c\x92\x197$\x98f\x057\x98#\n9\x9b?u\xc9t\x8a\xa3x\xe3\x03YT\xfd\xfeS\xa7IS\xbc\xc4(\xc3!\xbcDi\xf9\x91^\xc0\xe1\xff\xd6\xbd\xd4\x10\x0b\x9f\x99/\xe0\xa8\xf3\x8d\x7f5\xfeh\xb9\x17\x98\x1a7\x03w\xbd\xbf_\xdfG\xe8w\x03s\xf2\xbb\x81u\xfa\xee\x86w\x03O\xa3\x98\xfd\xb0\xcd-\xc1E\x137\xb6/x\xbd\xe96\xfc~\x80\xb6\x8b&*\xb7\x81\x99\xce\xda[\x8du\xdc2\xcf\xd2\x1e#i\x1aR\x9c\xe5i\"tw]\x8d\x8dJ\xe3\xcdu\xfc\xacuN\x0e\x1f\x01\xd3\xcdz\x83<\x82wI\xbc\x02\x92`\x01\x8a\x9cR\x9c\x01I\xa1\xd9](v\xe2\xd8\x1d\xe8\xd1%\xf0:RE^G\xda\x92\xd7\x91ff\x96\x93\xd8b7\x9e\x9c\xd3V\xec\x1c\xb4\xa4\xc3\xee;\xc7\xa9\xe5:\xa9\xbc\x9a\xf4j\xb2 \xaf&\xdd\xa7\xd0\x0f\xa0&mv\xb19\xcdd\x07E\xe9\xb4k\xcdm\xfe:\xcc]\xe7y\xeb&\xe0\xc1w\xa3Y\xefB\xb3\xef\xa7\xd5\xae\xb3*7c\xe4\x97m\xb6\xdb\xccr\x97\x99D\x0e\x19\xd99\xef.\xb3\xdaU&\xa6\x8d\xa9\xc8.\xc8\\j/\xc8j\xf7\x98\xc3\x8cu\xd1\xaf\xd6\xbb\xc4\x9ct\x9c\xfd\xae0\x07\xb6vE\xec\x8alw\x7f\xc9]]F~\xf6\xbb\xbe\x06\xda\xed\xb5\xd9.\xafMvw\xd9i\x11\x87\xdd\\\xa6+\xd9\x0c\xbb\xb8\\voY\xcd(\xf3\xe2\xdch\x97\x96|y\xa0\xeb\xd6$7\x8e;\xe3\x1c\x8d{\x0c\xe4\xae\x02\xd1\xbc\xdfO\xc0\xc9\xef'\xd8\xa1\xfd\x04\xdf\xcf\xedb\x8dVg\x9b\xb7\xba>}\xbbt\x95\x01\x93\xba@\xe9\x05\xae\xf0\xa8\x93(4\xa1Q_Fa\x89E\x9dD\xa1\x0e\x89\xfa\xb2\x04\x99\xed,\x0eu\xd2\x05\x18\xd5.1\xfd\x02c\x96\xc7cPo\x0c\x83\n@n\xa8\x9d\xa2\nojK#;\xdd\x06\x9e\x8a^Fa\xd7%h,\xd8\xe2\x9b<\x81\xe2\xcf\x12\x01\xab\n\xb5\x1a\x8b\x87\xad\xd1 \x0e\xc8\x82\xfb\xb6\xbfbD\xf1\x9d\xd3\xd7w\xbb\x9c\xba\x1d\x85\xcf\x9a\xe0\xb11Qbv~\x08@\xec\xcb(T\xc0a\xd9\xb7\xd7\x83aK\xf4\xea\xcb(TcW\xcd|\xd87\xe0L~%4Sp\xd0|\xa7\x1a\x12\xf5e\x14*q\xa8\x8c\xcb\x90(\xd4I\xe7G\xd7D\xd9\x03\xa8pC\x1cm\\h\xe6\x98\xd9\xc8\xc2nN;F\xc5\xc6\xa8\xd7.\xd6m\xc5\xb2\n^V\x11\xae{\\[Dc\xcc\xc7\x91\x1a\x98\xab\xe3{\x8d)S\x05\xab\xea\xe8\xebe\x14\xda\xc6^\xac1\x1fyq\xf2\x91\x97\x8f\xbc6a\xbeS\x91WS\x92_\xa5\xd5\x0e\xe8h\x9f\x96\x1bR\xee\x11P\xeao\xc6~\x19\x85\xb4\x1eQRad\xe4V{\xf9t;\xae\xdc\xf9\x1b\xb1\xd9@vC\xef\xe8BR#s\xb0h\x00\xcc\x81\xa9\x95~2\x05\xa7\x96L,\x03TS\x88j\xb2U\x15\xd9\x84\x8f\xa6@u\xe8\xd6\xcc\xe1\xaa\x954\xedB\xd6A\x82\xd6\xfea\xab\xe1\xb6T\x8ba\xeaoH5\x85\xaf\x86\x00\xd6\x1c\xc2\x1a\x82XC\x18k\x19\xc8\xda\xba\xfd\xc3\x05\xb3\x8e\xe1\xec\x10\x01\xedp!\xed\x10A\xed@a\xed`\x81\xad\xa1\x80<\x90)0\x16\x8a-\x16\xa49\xc8\xb5bc;\xe3\x87\x0eu\x87\x0dv-\xc3\xdd>\x01\xef\xa6!\xaf?\xe5\xd0\x9fr\xe8O9l\xd0\x8fu\xcaa\x91\xec2\x9ffXe\xbb\xfc\xc1\x85\x92|\xbak\x87\xd2]?\xc6\xc1\x85_!\xfbU\n\xf6\xeb5\xbd\x8d<\xd8z+\xfePH\xebC\x0c\xb7}n\xa1?\x14r\x8b\xc25\x1fg\xe8\x0f\x85\x1cB\x8a\xfeP\xc8\x1f\xe0P\xc8V\xbd$\xc6\x88b\x13\x04\x8fgC\xcb\x92 \x7fE\x07\xc3\xe3\x8f\xdf*F\xb5\xa3\xf5\x12>\x8aAS\x08\x9c\xa3\x07\xe3\x81\xb1\xd2\xa1\x0fR\n\xb2\xa9;|C`<\x19\xbf\xf2\xb5Q\x95.j\x80V\xa6\xcc\xe2\xda\xca\xa9\xd3\xd7\x03\xca\xa1 \x8b\x94\x07\xb2\xf9\x93\"\x05\x15b\x92\x9f\xf7\x98\xffGG\xde]hN\xadH\x15'2\x8aicq\"\xa3h\xc2\xfa\xb3\xd4\n\x06\xbc e\xc9@\xf0\x1d\x12\x0b\xa7\x9a\xeb\x1e\x0d\xc7i\xe8\x12\xc1\x90\x05\x02\xab\xf2\x80{q\xa0(\x0d\x08wCjH\xa90\xef\xb5&\x8e\x0d&\x8e\xbfj\x9b'\x14\x8d\xfaD!'\x9f(\xdc\xa1D\xa1\xc7\xc5\x0d\x95\x9e\xfb\x81qq2\xce\xd3#\xe3\xb8\x0e\xa4\xcd@\xcf\x8c\x8e\x13o\xdd*\x86\xb0\xcb\xf1\xde\x8eh }\xa4hd\x0f\x16M\x809^\xb4\xd2U\xa6\x98\xd1\x92\x89e\xdch\x8a\x1cMv\xab\"\x9b\xa8\xce\x14?\x0e\xdd\x9a9\x8a\xb4\x92\xe6F\x91\xe4.`\xd7\xf4\x01\x90KTi\x88+-#K[\x97|\xb8\xe8\xd21\xbe\x1c6\xc2\xbc\xf1\x18s\xc0(s\xc08\xd3\x83\xd3\x144t\xe49l\xeci\x19}\xf6\x89?\x87\x89@=D\xcdC\xd4\xa8\xf5\x95<\x0e\\\x07\xba~\xc7v\xae\xf9\x1b\x84\x1bd9\xf9l'\x9eE\xb7\x05Y\xb6\x0b\x0em\x83\xbfAXC\xfe\xda\xb7N\xf2\xd7\xbe\xd9\x92\xa5=\xa9\xa8\xe7\x14\xb2\xb61\x15\xf5ji \xbb\xd3`f9\x89\xfd\x0d\xc2\xfejL\xaf#%y\x1d\xe9>\x85~\x00\x1d\xe9o\x10\xf6j\xd2\xab\xc9\x8a\xbc\x9at\x9fB?\x80\x9a\xf47\x08;\xcf[7\x01\xfb\x1b\x84\xfd\x0d\xc2\xa6jXE\xfe\x06a+\xb6v\xd5\xe5\x8a\x1c\xf7\xe8\x18\xf9\x99\xf7\xf0\x14d\xb7\x97\xc7\xc8\xc6\xdf \\\xd0\xb7v\x830\x88\xc2\xfe\xb6J\xe9\xc5\x16,\x81\xd6*P*\x02\xb4r\xafU\xe6\xe7\xdf@`V$\x90K}\x18\x08\xe7g\xbb\xfdB4\xee\x0f\x03\xe1\xe4\xf7[\xe8f\xf3\x0d\xef\xb7\xf0\x87\x81\x0c\xb5\xcb\xe1&\x0f\x03\xe9\x85f\xd5\x9f\xd5\xc1U\x14m\xc2Y\xcdgu\x88\xb7n\x15c\xdbeT\xeb\x8e(\x08=\x1e\xd6\xc8\x1e,\x9a\x003*\xd6J\x95\x98\x90\xb1\x96L,\xd1\xb1&|\xac\xc9\xacTdvX\xc0\x88\x92\x1d\xb6\xb5\xa1\xb0\xb2\xbbp\xda\xc6\xc67E\xfd \x07l\x0c\x81\xa1\x1d\x1cE;\x18\x8ev@$\xad Kk5\xaf\xcd\xabP\x8d\xa8\x1dL\xe9\xeaq\xb5V\xe3\xb0\xc5\xd6Z\xf5\x19,\xfb\x0d\xf6\x08[\xdbx\x17\x1cQ\xb6Ff%\xd4\xd0\x16gk-!p\x90\x128\xa0m\xf5\xfe\xc5:9\xa7d\x8dv\xb7|\xdc\xfa\x93\x815\xee\xd6\x8a\x95\x0b4T\x90-\xf6\xf6\x9b\x15\xee\xb0(\xdc\xbe8\\\x97\x02\x99\xbd\xa0-\x85\xec\xb0.\xddV\xa6C\xe1\xcb\xf1#;\x14\xba\x9c8\x0fV\xd8\xb2\x9f\x85\x03\xe3s-\x11\xba\xbd0\xba\x96pW\xbb j19\xad'\xa6\xfd\xa4\xb4\x1a\x80 \xeb\xd6\xc1\xa9\x07`\x8f\xdau\xec\x038\xf7\x03\\\xb1\xbb=z\x04\xbdz\x05\xee\xb0\x0b\xc7\xa5^\xa7\x1e\xd0\x0b\x97%^\xd1\x90\xf0\x0b7\x00\x86\x8b\x85\xa9\xc8n)7\xc9ba7\xa9\xd7\x94\xea;\xa9\x1clRE\xbd'\x96\x83\x9d\xaa\xa8gk\x83\xd9.A\xae\xd3{P\x8c\xaf\x13,\xc3\x05\xe7\xdbc\xb6\xb9\xcf3W\x18[\x8fNA\xaf\x8e\x81\xd7\xaaf\xf2Z\xd5}Ry\xad\xba%\xad:0*\xd8Q\xaf: \x83{L8\xf7\xa9\xe6\x15+'\xafX\x15\xe4\x15+\xa7\xde\x13\xeb\x07R\xac68bKVr%\xb8\xa9V',\xb1\xfb\xccv\x9a\xd5=f\xb4\xab\xb8\x07G\x15;\xe0\x8a\xddzk\x85-\xb6\xe0Sf\x9a\xb8x7@\x17\x0f\x8e/\xee\x810\xb6\xc4\x18\x17S\xc9\\\xa5\x17d\xae\x12Vd\x854v\x9c\xcbn:\xd9\x1ao\xec\xac\x13\xed1\xc7\x8e\xacm\xeb\xf2\x15\xb9 \x8f-\xd8Y\xdd\x1fP\xd1@\xe8\xe3M\xf1\xc7\x9b!\x90\xed\xf5\xcd\x80(d#\x0e\xd9\x0d\x89l=\xcfl\x96\xf0\x86xd\x13\"\xd9\xaa\xaf\xa6~\x0e\x89K\xf6WD\xf8+\"\xfc\x15\x11\x0d\xf2WD\xc8-\n\xd6WDH\x00\xb0\xbf\"\xc2oYX\xff}\x97\xb6,\xf8+\"$\x99\x9a\xb6\xdbK\xb0SWD\xf8\xcb\x1b\xac/\x1b\xd8\xf6\xfd\x02\xfe\xf2\x86-\n\xd7|\xed\x80\xbf\xbca\x08)\xfa\xcb\x1b~\x80\xcb\x1b\n\xf0a\xb9\xe1\xad\xf8\x83|\xa9k\xbb\xdbY\xf1H\xb9\xe3\xad|I>\xda\xd8\xe7v\xd6\xfaqg\xb7\xba\xb5\x86^\xa7\xaf\xe1[j\xb7\xa1\x19]\xc39\xa1\xd98O\xa3\xde\x0c\xcc5=\x9dP\x04\x19*\x1b\x06\x01 2\x89I\x90\xb1\xf2f\x1c\xaf \x8b\xaa\x9a\x15\xa7\x8d*f\x05\xdcW\xce\xc7\xf5=o\xec\xe3\xb6\xeeK)\xc8g\xb3|6\xcbg\xb3j\xe4\xb3Y\xe9\xaa4\xc1\xb6 \xad\xb6\xcd.\xc8\x1f\xc3\xc1\xc9\xe7\xb4v(\xa7\xe5\x93\x13n\x91\x9fONlQ\xb8\xe6\xb0\xda''\x86\x90\xa2ON|\xcf\xc9\x89=cvb\xffO\x1e\x0d\xfdKf\x0dti\x8a\xb5,\x85\xee\xa6\xc9\xb3\xe6f\xcc\x9d\xcfU\x0c\x1a\xe4i2\x0e\x06\xb3\xad\xcf6\x18^6e\x1aLy\x06m\x96\xc1\"\xc7`r\x88\xc0\x9c_\xb0\xf0j,r\x0b\x16\\6\xc8+\xf4\xcf*X\xc5\x16\xae\xa1\x85\xaf\x96\xfb\xc8\xa2\xe3\xf7]\x8a,\xba\xaa\xe4K\x94\xd51\x8d\x95%d\x9eD\xed\x87\x8e\xde(S\xf1 \xf1\xb8\xf3\xc2\xe4\xc6|?MD\xff9\xa2sBr\xe1\xa6\x04$I\xc4\n`l\xe4{\xa5\x11<\x17\x07\x0c\xc8\xcfR8&\x9d\xef\xb4\xbb\xf7\x13\x8a\x10\xbc?\xf9p^H*%a\xde\xd8\x8d\x7f\x9f9\x81\xb1D\x03\xee\xffAIa\xd7\x9d\xcd\xe6o$\xc4\x1c\xb8\x97\xd75\xcf@+\xb7\xd6\xc9\xf1%NignT?w'y\x14\x87\xe3\xa6\x84\xead\x98{A\xcc\xa2\x98\xb1\xfa\x8c#\xd3\xfbd\xb1\x88\xfa\x9d\xf1:#\xbd^\xeb\xddU\x8a\xd3K\x9c\xf6\x1f\xaa\xf2\x03\x19\xdem\xad\xa1:\xe9?\xad\xfezme?\x17$\x89.zzK\x00\xf8\x1a-\x96\xcc\xa6\xf2\x03\xd6PF\xd2\xfbLb\x1d\xcfr\x04s@b\xf5\xcc\x05\xe3\x10\xf9\x13GK\xd5O\x16\xfd\x85z\x9f\x9f(\x1e\x99\xc4$\xb8\x18\xaa\x91\xc3\x03\xc53h9\xd8@\xba\x9aHpvER\xc50\x8c\xecK\xd63\x14\xa1\xfbm\x03\xce(\x98\xa3$\xc1]\x16\x19\xcc\x0d\xc4\x11\xcdp2Fa\xb8\xf1\xc4\xdb;|v4:|\xfct\xf4\xe8\xf1\xe8\xf0\xf9\xd1\xe3\xc7\x8f\x1e\xb7\x81\xd1`Z\x8e\x0d\x15~\x8e\x93\x10\xa7\x8b(\xc9\x8a\x976\xec\xe1\xc1\xe8\xf0\xd1\xa8\xeb\x13\xf1\xaa\x83E\x8f\x16$\xc5\x10\xd5\x8c&I\x8a\xaeuC\xd7\x8d\xb1\x82y\x99e\xd7\xe3( \xf1\xf5PSt\x8f$]\x9f\x85Q\xba\x0c\xf8L\xc0\xd4Xb\xb5n-\x0b\x96\xcf\xf7\xf7\x0fF\xfc\xff\xf1Y\xf1\xa4j~\xef\x91\xce\x84\xbfAQ,\xeap\xa2\xbc\x964L\xfa>]%A\x94\xcc\xc4\xeb]\xe1\xfa\x07\xf1@\x05\xdf\xd7\xb8&\xb5\xb9VE\x11\x8d\xde\xfc\x843\x88\x84\xb3\xc3;\x12Q\x08\xf24\xe5\xe9X\xa0\xab\x84\xb5\xc4w\xca\x88\xad\x01\xec\x99bNl\xdf\xcf\xa9\x8dt\x1b\xfeNC\xd4u\x12\xbc\xda\xc9\x19\xfdg\xfd\xc0\xed9\x8fW\xd2\x04\xc5\"\x0cb\x1f\x94k{\xba\x1f\xa3\x0c\xeb\xceF\xfe \x0b7U<'l\x84\xcbW\xdd\xe6\xd78\xef\xee\x17\x0c\xf7)8\xdb\xf1\x02gH\xf55z%j\xe6\x18u\xe6~\xc0\xc4\x16\x8c\xacA\xd8\xa8(\xd1\x9c\xb3\xec\xaaV\x02B\x17\x84\xce\xf3I\xa7E\x04>\xa0h6\xd7l\xaa\x13\xed\x89L\xaa\xb9\xbdC\xc5#Y\xb4\xe1\xdd\xfduUytp\xf8\xe4\xfe\xe1\xd1\xfd\x07\x07\xe7\x07\x8f\x9e?z\xf0\xfc\xe0\xd9\xe8\xe8\xe9\x93\xbf\x1c\x1c>?8P\xe9\xec$_\x8c\xb3k\xa3\xbe\xb6\x1d\xa8\xcaG\x8a\x11\xcd\xc6b\xee\x99\xbf\xe2 \xf8\x9b9\xa2s\xdd\xef\x96\xe2\x85\xfa\xe8NN\x1e\xbdy\xf0\xf0\xe0\xe1\xc1\x83\x87\xaf\x1e\x1d=|tp\xf8\xf8\xe8\xd9\xcbG\x8fO\x0e^\xbf~\xf5\xe0\xe9\x9b\xe3\xd7\x8f\x1f\x1d\xbe9\xd0mF]\xa2\xd4\xb4k\xdbJ\x08`-\x08F\x1a\xa0H\xe31\x9bo]\x90\xf1\x9b\x17d\xfe\x12\xe0\xf25`\xc0/\xc2\xe52\xe4\xfc\x7f\xf0H\xb7\x00D\xd4<\xd6\x0b\xc4J\x10C D\x19\xda\xa5\xfe\x94\xd1'\xdd\xa5^\xf1\x9a\xfbnv-`\xfeEB\xf3\x9d\xea\x14Z.w\xa9;|\xed\xc9\xe2\xf4.\xf5\x0b_F!N\x02\xbcK}b6\x85P\x9c\x0e\x14\xc85\xbc\xdb \x0e\xe6\x0f\x8e\x00'\x01 q\x08\xb2\x05\xf3\x90\x84\xb7v\x18\xe2\xe5\xc5\xa3\x87A\x8e\xfe\x98]|\xc1\xe8\xf1\x97\xe5\xec\xe2\xf3\x83\xc7Y\xf2\xc7U\xf8\xe5\xf2!\x9a\x06\x0f\xc2#U*H\x9b6\x00[\xabkgq\x0di'\xb0\x15\x1eX\xa5\x9f\xc0\x94\x82\x82^\xedu5\xa7w\xe0\x8c\x124Ko\x97\x16\x82\xdeQ3\x0e\x16\xac\x06\x0cv\xce\x99\x95\x13\x02\xa6\xcfW\x90\xd9!\xb3\x924\x0c m\xc5R\xf1\x91hE>\x12\x95\xe46P\x1f\x89\xfaH\xb4M\xe6/\x01._\x03\x06\xfc\">\x12\xf5\x91\xa8E\xaf|$\xea\xd6)\x1f\x89Z\xf5\xcbG\xa2>\x125Y\xbb\x9d\x8aD\x95\x86R\xb0\xdf\x08\x9a\xab\xec[\xb1Jn\xbe\xe5\x9a\xcd\xdeZd\xe3}b\xef\x13+\xc9\xfak\xc0\x80_d\x99b1\xe7\x8d\xba_\x7f\xb4\xb1\xf18c\xcboj\xfbEK\xff\xccl\xba\x04YK\xb7\xe2l\xc0\xf4\x08\xb2\xe6[\x0f\xde\x95\x01\xba S:B\xd06ZNI\x9eh\xb4\x93\xa0m4\x9cE\x0bL3\xb40X\xb6\x9e\x8d\xf7J\x96\x08\xe2\xedY\xf5\xc9Jk\x94}R\xa5\xa2\x04\x99\x0d\x85 \xcbU\x05\x0e+\x0b\xac\x15\x96\xd3\xc7\x80\x01\x95VE\x16\xc6D\x90\x83\xa0\xc0QX`o^\x049L\x97\x82\xacM\x8d \xdb\xef\x07\xee\xdf\x10\x06\xff\x8e\xe5I\xce\xa6\x1e;\xf4\xb4\xec\xa1\xf1\x84g\x80'\xf9\xf9\xab'\x0f\xff\x16_$\x9f\xff\xfb\xef'W\xb3'\xbf'\x8f\xdf>}\xb7x\xf2&\xff\xc7\xc1\xc9\xbb\x87\x93?.\xf3?\x1e\xa7W?\x1f.\xce?\xfe5}\x9f\xbf}\xfb\x8f\xcb\xe3\xe3\xcf\xe7\xcf~\xff\xe3\xb7\xd9\xd9\xc1\xfb\xe3\xfd\xf3\xd7\xcb\xc7\xf9\xfe\xb3\xa3\xe3\xcf\xe9?\xa6\xff\xf5\xd7\x0f\xcb\x97\x7f{\xf1\xa2l\xb8\x1f\xd6n\xaf\x00\xdb\xfd)\xcc\x81n\xd7\xe3O8\x03$\x94\x06 \xf6\xcf\x00\xa7\x19\x8a\x12iI\xe4\xe3CC\xef\xbaw\xd1t\xec\x97\x11\x1bk\x1a}\x81\xb6\x18^\xf2\xce\xaf=c\xd8j\xb3\xb6\x88\xae\xef\xaf\xa5\xe1{!\x04k\xb2,\x8e\xbf^\xef\x9c\xc7\x0bZ\xc42\xb6\xa9\x0c_\xa5)\xc8Wi\xcc*~H\x13d\xe1DX \x01\xac\x05\x01\xf6.\x83\xd5\xb7.\xc8\xf8\xcd\x0b2\x7f p\xf9\x1a0\xe0\x17\xf1U\x1a_\xa5\xb1\xe8\x95\xaf\xd2\xb8u\xcaWi\xac\xfa\xe5\xab4\xbeJc\xb2v;U\xa5\xf1x\xc1\x92\x8c\x83\x05\xab\x01\x83\x9dsf\xe5\x84\x80\xe9\xf3\x15dv\xc8\xac$\x0d\x03H\xdb\xe3\x05}$*\xc9G\xa2\xdb_nu\xf2\x91\xa8\x82\xac\xbf\x06\x0c\xf8E|$\xea#Q\x8b^\xf9H\xd4\xadS>\x12\xb5\xea\x97\x8fD}$j\xb2v;\x15\x89z\xbc`\xd7\xfb\x1bE6\xde'\xf6>\xb1\x92\xac\xbf\x06\x0c\xf8E<^\xb0M\x1e/\xf85\x1a\xf6x\xc1\x06\x99\x0d\x85 \xcbU\x05\x0e+\x0b\xac\x15\x96\xd3\xc7\x80\x01\x95VE\x16\xc6D\x90\x83\xa0\xc0QX`o^\x049L\x97\x82\xacM\x8d \xdb\xef\x07\xee\xdf\x10\x06\xff\x8e\xdf?^\xf0\xa1\x0e\x9dv\x9ap\x8b\xd3F\xa3\xed=~\xf2\xe8\xe9\xcbg\x8f\x8fO\x1e=}\xfa\xe0\xe5\x93gGO\x1f==z\xf6\xf8\xf8\xd5\xc1\xe3\x93G\x87\x0f\x1f\xa1\xec\xe1\x83\xc7O[?f\x1d\xc9M\xad\xd1\xd2\x9b\xac\x05\xed8\xad\x1e\x0c\xd6\x13L\xb9c\x83Z\x9bbm\xa9h\xa3j\xcd\x0c\x19\x93\xe2Zu\x8b\x16$O\x8c\xa8\xb2\xdd\xca\xab\x878!\x0b\xfd#Vc/\xa8\x9c~4C\x17\xdd\xb7\xc6\x17d\x12\x97\xa0>m\xef=\xea4\xae\x0b\xbc\xe8w\xaf\x92!ce\xfc$\xe6\x8fa\x91\x13\xb3\x12\x84\x8d\xd3\x04\xf0\xf6\xe4\xe3\xab\xd3\xbf\xbd>8\x9a\xd2\xd7g)z\xfa6\x9b\xbc\xa7\xab\x97\x87WO&\x9f\xcf\xdf>z\xf4\xf7\xfc\xf0\xc1\xd3/\x7f\x9b\xbc \xfe~\xfd\xf0/\xaf\xde\xac\x8eOg\xf8\xd1\xdf\x7f;\x9b\xfer\x9a_~y\xf9\x8f\xc7\xcf\xde\xae>\xffL?\xbf~\xfa\xe1\xf0\xf4*:Y\xfe%\xfa8y\xfc\xfb\x870\x8b\x97\xb3\xff~\xa1h\xda\xe0\x13Z\x08\x12\xac\x84 \x05+\xed|\xb1\x92'\xd4e\x9a\x95\x01\xe0\xfeY>\xf9\x05\xaf>\xe0`y\xf4\xe8\xf1\x85\n\x00\n\xa6\xdb\xef\x04\xb9\xf7\xe4\xf8\xf2\xcb\xc1\xc3\xdf\xe7\xd9/\x7f\x9d?=~\xf5\xea\xf7/\xf1\xe9StN\xe8O\xab\x83\xe8\xe2\xcd\x7f\xfdr\xfa\xfb\xcf\x7f{\xf0\xc7/oSB\x7fV)\xab@\\L+\xcc\x88\xe9\x9b\xd8N;u\xd9\x87\xe2\xcf\xb9\xba\xd0\x0f\x03\xb4$0@\x83\x9a\xb8\x98hM\x9c\xb2\xaf3D\xc7W(a>i\x9f\xd7\x9b\xa5\xac\x03E\xac\xc0\x1a\xc9\xe9\x10M<~\xf0\xe8aW\x0b\xa6\xab\xf362\xf1\xdaen\xb3\xc8\xbf\xde\xed\xae\xfa0\xe6\xb4\x88_dT\xa3\xf3-sV\x8f\xc0\xc4\x00\x80\xe6\xc1\x1c\x10\x85\xbdf;/(N\xc2=\xb8\x9aG\xc1\xbc\xbc|\xbdug7\x0b5\xa6$\x8e\xc9\x15\x8b\xe5p\x12.I\x94d\xcfa\xef\xa7\x93s\xfe\xd5\xfe\x9f.\x9e#\x16\xe3\x8a\x9b\xc7\x1b\xdc\xf8=\xeb\x0b\x12\xe61\x86\x90\x04\xf9\x82w\x8fE\x88\xe4\xaa\xe8\xed\x08bB.\xf8\x1d\xbb\xd7\xd7c\xf9\xb7Eq\x0d|\x83]@R\x11C\x85\xacs\"\xe1q\x9f\x86\x17\xfb! \xe8>]\xe2\x00\xc2(\xc5AF\x1a2\xafEr\xac\xb7N_\x88r;7\xdc\x17b\x93Y\x04u\x82\xb3\x90l\xe3q\x95\x94\xff\xad\xd9\xa7\x17\x12,hJL\x1d<^^__\xeeu\xcb\xc3\x89\x87\x95\xe0\x96h\x86Ur9C3\xbc\x1e\xab \x89\xae\xdf'\xdc\x91\x8f\xd57\x1dG\x8bH\x99$~\x8b\xae\xa3E\xbe\x80\xf6e\xf6K\x9c\xb6\xfb\xdd\xe6\xe9\x90\xdb\x9f\xee\xa48\xcb\xd3\x04\xd04\xc3)kC\xecC\xbb{\x0f>\xdd\xa6\xab$\xa8?\x81Sx5\xc7\xc1\xc5\xf9\xf5]@\xb5\xec\xa5`\x88\x9a\x8f\xa7<\xc3\x82\xae\xd0\xea\xee\xa8\xf6\xa4\x12\xfb2T\xae\xc3\xa3)<\x9a\xa2EV\xf1\x94\xc5\xd8\x0br\x88\xa1L\xe2\x12\xd4\xa7m\x8f\xa6\xf0h\nc\x8cc%O\xd88\xae\xb1\xf0H\xdc{2@\x14c\x1b\xbfXu\xce\x187\xd8D+\x9b\xb6\xc4,\xba\xca\xc0)\xb8\x96\xdc\xb8\xc5\x97?;W.\xce\xaf+\xbf\"Jf2H\xaa==\x90\xfd\x0e\x98\x831\x1e\xd8\x8a\x07\x9dR\x83\x92\xe9z%\xa9\xa0\x10u\x1d\x1f\x0f&\x99\x9b\x82$S\xb3\xa6\xc8\xce\xf4~\x94L\xfbY\x81\xbe\xd0\x1a\x8fI\xb1[\x84\xaa\xc9\xd9\xb9\xa3\x98O>\xfe\x7f\x15_\x8a\xfd\x1f\xdd\xdc\x83GU\xad\xb2\xfd\x80\x9c^px\xd0\xfd\x0c\x9fB\xfc\xff:}\xee\xfb\xb0\xd7\xad\x1d;~\x08q\x1c]\xe2\xd4\xafv\xbf\xda9\xfd8\xab\xbd\xeb\xc4\xc2\xef}\xb5o\xb2\xaf\xa3\xe7 \x07\xfa\xad\x1a\xed\x05\xd5/\xbf\xc5wA\x89\xfd|\xe2\xddz\xbak\x00\x1c\xe1 g\xdd\xda\xdf\x94\x11\x8e\x1c9^D \x81\xab(\xc50%\xe9\xa2\x84\xbc\xa9RI\x9d\xbc\xee\xc8\\\x12I!!\xd9]\x98\xa6d\x01\x7f\xfd\xf0\xee7\xd6\xca\x04Q\xfc\xf8\xe1\xfdb\xbf\"o\xb0dGq\x1a\xa18\xfa\x82C\x98\xac2\\t}Grl\xaa\x0f)si\x19\x91\xbb0k\xcf\xf9\xe4\x94iE\xfa\xe4\x94y\x9c\x82\xcc\xa3\x15\xe4\x93S`n\xc4'\xa7|r\xca'\xa7l\xa6\xdd\xd7HN\xb9'\x93\x84 \xbeB|\x83@\x80)\x9d\xe6q\xbc\x82\x10\xcbc\x11\x92\x10R\\x\x1d5.[\xb7\xc3&G\x94_b\xd8\xe1\x13\xddo\xfbB|\x17A\xc6\xc7Y E[|\xad e\x81b\xe1\xcf\xd5\x06\xdfo\x93>\xf7N\x85X\xc5\xbb\x03{\xa7\xafq\x87G\xc9=\xc8>\xfei'\xb7N\xff\xd4\xc9/e\xbe\x1esh\xe5\x03\xdf\x8c\x7f*\xbe[\xed\xb9\xaf\xe7\x9f\x9a\xd6E\xa7\xb5\xfbp\xf92\xfa/\xfc\xf0\x97\xb3\xcf\xd1\x1f\xff\xfd\x0f\xf2\xcb\x9b7?\x9f|\xf9\xeb\xd3\xe0\xe8\xe7\xb3\xe3\xe9\xe5\xd1\xc9\x9b\x8f\xc1\xe9\xfc\xfa`u\x86fW'\xf3\xf3\xd5\xc1\xe5\xd9\xf1_~\xfai\xfe\xea\x84\xc6\xbf\xfc\x17zx<=\xc8_\xfee1\xfd0'o_\xcd~\xff\x12\xfe\xf4&\xfd\xc7\xfb\xd3\xd7o\xcf\x8f\xafNf\x7f\xfb\xdb\xd5_\xc9[\xd9\xec\xd0*hx\xd9v:\xeb:\x87\xd4\x80\xf8\xee\xfc\"\x9d\xce\xf9\x06\x11\x86\xd2!7\x98\n\x9dgir\xc2-\x82\x93\x8dSDF\xa7\xdb\xca\x14Z;\xdbfG\xdb\xb5\xbd\x0e\x07\xbb\xdb\xb9\xd60\xd6\xb8\xbc\x1bL\x19+W]3P\xb3\x03\xfd\x15\x9cg\xad\xe3l\x9c\x93\xe6\x19\xa9w\x96\x8d2\x83\x8d\x9cd\x83\x83\xec\xd6\xfa\x86\x8e\xb1\x8dSl\xec\x90\xc1\x19\xd6;\xc2\xfd\xb8\x7f\x05\xd7no\x7f\x82\x92\x8b\xfd \x8aQ\x12`\xba\xff\xa7\xbe\x9e\xcf\xb3G\xe9\xe2\xf3%N\x1e\x1f=M.\xe2\xeb8\xff\xb2\xba|\xfa\xe5\xd9\x1f\x9f\xff\x08\x16A'\xab\xd6\xfa\x14\xb2\x96\x93\x88\xa4\xf0\x0b^\xb1\xc1\xf3\xcf\xc5\x16\xcd\x0c'8EY+!\xd0\xc1\xb9w^\xb96\xba\xdb\x1fp\x92\xc1e\x84\xe0\x15\x1f'\xfcNVh\x86S\xf8\x7f?\x1e\x1c\x1c\x1c\xbey\xfc\xf4\xe0v\x07\x07\xfd-\x99\xf6\xcd\x8bF\xef\xff\x9cO:\x9e\xfb\xa6\xbc\xa2C\xc5\xa98\x1b3\xd6\x9f\xb9\x83\xc2?r\x9a-\xb0>\xec\xb4j\xe8pt\xd4\xd5\xca\x14\xab\x1cx\x1f\xd2v\x90k{\x8a\x9a\x11\x8d\x16y\x8c2\xed\xbc\x9c\x10\x12c\xd4\xa5\x19j\xfc\xa7(\xa6\xdd\xe3\xd1\xed\xbc\xa8\xe8\x84f\x11\xf3\xdb\xd9l\xe3\xd9\xddV\x9a2@IB\xf8\xf6\x8c\x9c\xe2\xb0}\x9aME\x01I\xfe\xc8\x13\xf1\x12?\x8c\xa2Psc\x92\xc4\xab\xbb\xad\xb7Tr\xd6M\xb9m\x9d\x15\xa0\x9db\x16\x9f\xdbbj\xe9\xa7\x95K\x1b\xb5\xe9\xd4\xed\x91\x1f\xe9O;-\x13\x83\"/X|$\x9f\x19\x14\xd4W\xa1\xfb\xcc`\x83nD\x8d\xfa\xcc\xa0\xcf\x0c\xfa\xcc \xdc\xa0\x0fl\x9d\x19,v\xdc\xa6\xe2&\xa1\xea\xad\x9e\xa9\x0d\x94g\xf3\x8e\xd4\xc6\xe6)\xc1Z,\\\x1e\xa6\xc5c\x1f\xf9b;\xa5q\x9c\x97y\x85]\xc9S\xd4\x1e\xbb\xe1\xb4D\xef\x94`K\xea\xec\x83\xacI\x1e\x86\xf3D\xba\x95\x8df\xde+\x14\xc4\x06Fb\x80e\xae\xbd\xb2\xc3\xf0.\xcf\xe0y\xefD\xd2\x8dx' \xach\x1c\x05\xbbmH73\x86=L\x8b\x83\x0d\xc0u\x1b\xc0\xbei\x94\xcc\xf6C\x1c\xe3\x19\xbfJg\xff\xcf\xf2\xdf\xc7a\x98\xfe\xab\xf8)\"I\x99\xeb^\xd3\xbc\x1dzWh\xdd\x06\xaf[\x9d\x9d{)\xd2\xc1\xc7Ap\\\xa4\xf7\xa6\xf0\xbax\xaf|G\xa1\x86;\xa5\xb1\x91\nv4|(\x8e\xa1&\"\x91\xd1G\xd5\xc0\xe5;m\x9b\xf7A\x08^\xfe\xc5\xc1\xec9\xdb\x87w\xbf\xd4~\xf9zE\")\x0e\xdd\xe5\xbf\xdaeau}\xb0\x96\x03\x9d\xa3\xb4{\xcdk_\x93\xa56\xf5{?\\\x8e\xc4\xd6Q-?\xfa\x9aW\xd5o\xfbL\xb3\xcaV\x95\xd3\xf2\xc9\"\xcaj\x8b\xb0XTn(\xbb\xb5\xf7\xd7\xfau>\xc7\xb0D\x94^\x914dJ\xaa\xee\xf3f\x04R\xbc \x97\xb8B4\xfe\xf2\xf6\x83\xd5\xcasr\xbb|\xc5\xc7W|Z4\x80\x1b|s\xd1\xae\xaf\xf8\xac\x91\x0f\x06\xd4\x8f\x99\x82\x81\x1f\xbc\xe2c\xe1Vi\x05\xdd\x18\x9b\xe5}\x93m\x8d\x1f\xe2\xe5\xc5\xa3\x87A\x8e\xfe\x98]|\xc1\xe8\xf1\x97\xe5\xec\xe2\xf3\x83\xc7Y\xf2\xc7U\xf8\xe5\xf2!\x9a\x06\x0f\xc2\xa3'-6\x16\xde\xdc\xb6;\xbe\xd1\x15\x99\x95\xb30\xa8!\xd6,S\xe3\x821.Ms9\xc5\x86{m!\xeac\x9a\xed\xa0\x93\xb6\x15\xfe89a\xbe\n\xd7x\xd5\x9b\xb6\x06\xb9\xb6\xe7\xabp\xbe\n\xd7$_\x85+\xe9\xa6\xe2\x92\xcd\x93\x1b,F\xad\xdc\x82\xa2J\xd7\xcc5\xec=<8T\xb3\xfe\x05\xaf\xaa\xfcBD\xe1*%\xd6)^U\xce\xc45\xc5\xbb\xffg\xe9\x9a\xf1\xdf~\x88\x94\xaff4\x0dihG\xf3n\xc9\xfct\xf1\xa0\x1cR\xf9\xf20C\xea\xe1\xb1:$\xb3\xff\x96\xe3t\xc5\x13WA\x9e\xa68\xa9g\xd4`\x82\xb3+\x8c\x93zb\x9b#\x9f\xd1\xda\x18w>\xd1\xed\xe4\xe9m\x16`m\x16\xe5\xa8\xf2\xd5\x9aW\x94\xb9\xea\x0d\x9c\x80o+&\xd9H}\x97\xdfk\xa0\x84\xb5\x95\xf2\xcd\x93\x89\xb8\x1ap\xec+m\xc6J[),_s\xe3\xb4\xeb5\xb7(\x89\xb2\x08\xc5cc\x11M\xf1~\xdf\xf7\x82\x14\xf3\xaf8V\xdf\xfd%\xdeW\x9d\x94\xb8\x88\x92q\x16-4-\xaf\x1d \xd7O\xefT\xef\xf7R1\xfa\x9a\x18J:WL\xb1\x02|\x81\xac$_ \xebj\xd1~t\xbe@6P \xea\x0bdk\xe4\xb3\x88\xea\xc7|\x81\xcc\x17\xc8\xb6\xd4\xf1\x1e\xe9\x86\x8az\x04\xaf\x0d\x1dr\xe0\xabL\xbe\xca\xd4x\xd5\xdb\x87\x06\xb9\xb6\xe7\xabL\xbe\xca\xd4$_e*\xe9\xa6\x9c\xfba\xd2\x94]!\xfd7Uo\xeaLy\xfa\xcaSs4?Z\xe5I\x9d\xde\xf5\xc5\xa7>1\xc0f\x11\x04N\xb2\xb4\xd3\xfcl\xe0\x80\xf6\xde(a\x91E\x06\x1bE\xbc\xe9\xfb\x16Ye\xb0\xe1\xa3K.\x83\x8a\xc1\x06\x06c\xe8\xbaV\xa9\xe3S\\[\xa7z}\xfd\x99-\xf2\xb2\xa1\x96\xc2\xbe\xd5\xd9\xbc\xb3\xb2n\xe6(:\xa4\xa8\xeeJ\xb5Z\xa6)Yh\xfb\xf3;\x8ak\xfd\xf9\x90\x06\xbfk\x94\xed ]\xca\x88C\x87^\xd3l\x83\x0e9\xa8\xed\xa2&\xd7\x98\x04pg\x1a\xc5\x19Na\xb2\x12\x83\x12\x13\x82\x16\x89\x99\x9d\xd7\xd0\x965\xb9\xff\x7f\x8a\xa7\xcfa\xef\xff\xb7\x1f\xe2)WO\xcc\x83y_\x93\x84\xed\xd1\x83\x1b9R\x0d\xd1\xff\x10\x0e\x93\xd39\x8b\xb2\x08\xd6\x98\xa1\xc5L\xdbF\xed\xcb\xe6H\xc0\x81|\x03_\xe6\xf2e\xae\x16}S\x91\xb0/s\xad\x91Oc\xaa\x1f\xf3e\xae\xef\xbd\xccE\xd3\xa0\xe8\xfcW\xe9\x7f\x8f\x14GE\xd50B\x9a}\xbdo\xb0\xd1\x18~\xb0\x8a\x9d?\xb7\xd1h2\xfa\x9ac_\xcbk\xd0\x8d\x18A_\xcb\xf3\xb5<_\xcb\x83\x1b\x8c`\x86\xa9\xe5\xd5S\x13\x8a\x1a\xde\xf6\xd2G\xa5\xdb\xf2c\xe4\x8e\x1cr\x9bUI\xaa\x92\x11ds\x945\x8aP\x11\x85 I\x98\x83Vfh\xbf\x97\xfc\xa6F\xad\xe9\x14\x1a\x91\xa5\xc8\xde\x1b\x06\xfa\xf9\xc1\xc3z\xc2\xc2G\xc5 \xcd\xe9x\x99O\x14\xaa\xdf0\x0c\x93%+\xfb\xc9\xdaZ\xe6\x93\xc3/\xc1\x1fa\x8e\x97\x9f\x0f.\xf3\xa3/\xb3\x8b\xd9\xc5\xc3gx\x8a\x0e\x92\xcfW_\x92\x10%\x9f\x1f-\x1e\x06O\x96\xe8A\xfe\x10-\xbf<\x9c\x1d\xa5\xcfft\xf9y\xf6x\xf6,\xa0\x0f.\x9e\x05\xf9t\xad\x9d?P\x14\xe3\xce\xa4\x93>\"\xa6\x19\xcar\xcd\xb7Sm\x9a\xc8\xc8\x05\xee>\x12\xd3\x10\xf9\x14\xd1k\xcf#\xda\xeaSF\xf9n\xef\xea\xe3\x82$\xd1\x85\xfa\xd6]\xa3\xc9\x88B\x9cdQ\xa6\xbcJ\xd9\xc8\xe0\nOh\xa4\xcamX\xbcOq\x90\xa7Q\xb6\x1a\x07$\xc9P\xd0\xbfn\x19\xe2\x0cE\xb1\xc1=W\xbc\xcf\x14\xa5q7\x8ey5u\x19u\xce:J\xb2\x14\x8d\xb3\xeb1w!\xba?\x97~\xf6\xd6Z9X\xfb\xb1\x82\xaclg\x0c\x15\x7f\xfd\xae#\x0b\xee\x87\xcf\x9e\x1c\xdc?8\xbc\x7fpx~p\xf0\x9c\xff\xff\x7f\xac7\x18\x90\xc5\"\xa2t;K&U\xa6\xe2\x8c\xe3\x00\x93\xa4\x18-\xd0\xf5\xf8&\xda\x08\xe6(\x99\xe1\xad7\x95/C\x94awH@\x93lg@Oo\xb5z\xff&\x1cR\x8f\x06k\x8e\xc6\x1e\x0d\xd6B\x03\x0c;\x9a\x1e~\x95\xbb\xd7]\xc3\xab|\x17.\xb7S\xa6\xd0\xecA[\xbbB\xb6\xde\xf3\xe6\xdf\xb8\"\xb3\xe7\xac\xed\xbe\xdek\xde\xbe\xcf\xac\xf2\x98u\xfe\xb2\xca[\xd6y\x1b*OY#\x1c\xb3\x97\xac}Y\xe3!k\x8d\xbd\xde\xd4k}c\x83\xcd\xd2\xfb\xc5\x86\x97\xb5>\xb1\xe1];\x7f\xd8\xc0D\xeb\x0bk\xde\xd5\xfa\xc1vkc\xdd\x8d\xb0\xf4\x80\xf5\xfe\xaf\xd2\xfb5\xfb\xbe}\xfbm\xf2z-\xf9\xdax\xbc:\x7fw\x83\x05\xa0v\x0d\x8d\x1e\x9b\xc1-\xd4\xfb\xb8Cp7z\xb7\x9b6b\xf4k\x1d\x1a\xd8\x8aO\xbbUpl\xe5\xcc\n\x1e\x0e\x8eP\xcd\xfa\x15(\xcb\xaa\x9b\x01JB\xf6OLG\xf0r\x05!\x9e\xa2<\xce \xca \xc5Y\x9e&\x14H\x12\x8b\x93\x9c\x84\xabT\xf2\xaaz4\x92\x7fS\xc3\xe0\x9a\x88\xd4\xc2\x0d\x15\xb6\xae\xf6g\xc5\x17\xd4\x81%\xce\xe7\xb86\x1a\xd6E\xc9v\x04os\xca\xb1\x118\xca\xe68\x85=\xd1\xff\xbd{\xb0'4\x05\xff7i\xaa\xae\xbdR\x89\xec\x8dj?\xd4\\\xd7\x96\x14t\xe3[\xa2\x19V\x0dC\x9cn1\xc3 \xca\x13\xa35)\xac+\xd6Z'\x0e\xad\xda\x8f\xa3E\x94\xe9:\xb0@\xd7\xd1\"_\xc8>0\x0f\x9f\xa7oa\x89S\xde\xb9\x9e\xbd\xday\x1f\xda\xa7\xad\x8d\xae\xb7\x8d\xf3m\x1c\x86O[\xaf\xbf\xa7\x0c\xb5L\x0e\xb9\x91\x81O[k\xde\xb7s\xd3-\x18\xf9\xb4\xb5O[s2-\x99m\xe7y}\xda\xba\x83lg@?o|\xaf\xc3\x1d\xdf<\xb7l\x9f\x8d\xfd>\xf6\xe6\xb2X\xa2~\xbf\xa4\xbaU<\xbb\x1d\x8d\xb4]\x1f\x96f(\xcd\x8cN\x9c\xd2\xf9\x0c\xf1\xf5\x98L\xa7\x9d\x86\xce\xf0\xb2(X\x8c\xf3$\x8bb\xe7\x97\x99\x8d\xc5\xe1x\x12\x93\xe0\x82\x9a!\x01m\x0d\xe1\xe8I.\xf3I\x1c\x05p\x81W\xfc\xa4\"\x92\x94.\xdc\xda\xfa\xec\xab~\xf6*\xfd\xa3\x0dk\x99\xd4\x8a8\xd6\xe1\x84\xbf\x8f\xfcE@R\xeak\x91\\\xa3\x8f\x1fp\x126\x0ec\xca\x08\xe4\x06\x06\xdb9\xac\xa6\x97\nSL\x9c\xae\xa8]\x1d,\xe83\x00\x1a\xcd\xb0\x96I\x18&\x94\x07>\xb4\xc6\x18\xf6\xf6\xd6z+>\xf3\xcb\xe6\xc1\x8c\x1dg5*{?\x90c\xb4\x95C\x17;\x8f\x06\x02\x8d\x9e,\xc8\xe2\xa8\x1ce\xf6\xab\xf3\xa8 0\x0d\x04\x8c\x83\x01\xdd\xb1A`\xee\x17\x18\xd3zf\xb9\x80I6`3NA\xe6\xd1\n2\x1e)\x04vc/\xc8\"\xfbY\x90I\\\x82\xfa\xb4\xad8k\xaf\xf79\x9aV\x87\x03m4\xf5\x0c-\x80\xb9\x8f\x82L(XA_\xe1(\"F\xda\xe3\x88\xc0F\x90`%L(Xi\xe7\x8b\x95<\xa1.S\xe7#\x8a\xc0|L\x11\xf4\xea\xc9\x86\xc7\x15\x81\xe5\x91E`\xdb9#\xe2\xcet|\x11l\xd0\x92\xb3\xa3\xefO\xd03.#\x7f\x82\x9e~-Z\x9a9\xb3\x89sm\xcf\x9f\xa0w\xa3f\xcb\x9f\xa0g\xdb\xfa\x86&\xc9\xc6\x1c\x19;d0C_\xef\x04\xbd\xb5\xb8\x16HZ\x06e\x15\xaf^\x99\x8a*Q1d\xd9@\xf2\xac\x85\xf4\xf2\x15S\n\xc0>\x99\xe0l\xb7-\x13tn\xd6\x19]\x8f\xf1e\x14\xb2y1F\x8e\xd5\x02\xa6\xf2\xaa\xac\xd7U\x94\x84\xe4\xca\x89\xc1\"J\xc6\x92\xc9\x12\xa7}8\x84$\x9f\xc4\x983\x19\x8b\x82\xc08\xcc\xd3\x1e\x153r\x95d\xd1\x02o\xc4\x84\xcf\x9a\xf14\x15i\xaaq\xado\x9b\xb1\x11]\xb3\xe4\xd1s\x15\xcd\xc8\xe5>\x9b&\x84\xa2\x02\x8b\xeb\x92\xd0+\xaf\xec(x\xdc\xeah\xbc+\x91G\x15/\xdeL\x02\xef'r\xc9\xc4\x91\x04\xc5\x80\xbaSx\x8dQ\xb4\xecs\xa9\xe1r\x9e\x85\xfdt\xbb\x18\xc8\x98}\x9e\xdb\x9f @ L0|\xba\x9d\xe1\xeb\xec\xf6\xa7{\x8d\xb7?\xdd.[\x94\xf5\xba\xdb\x9f\xee\xc1\xa7\xdb\x94L\xb3+\x94\xe2q\xbe\x9c\xa5(\xc4\xb7?\xd5^\x93\x05\x10B\xb3q\xd9\xd8\xe4\xfbL\xb2\xf9\x9bML\xa3\xf37\x9b\x0c\xe4\xd5\xf8\x9bM\xd6\xc8\x87\xa4\xea\xc7L\xd9\xd6\x1f\xfcf\x93,\xcab[\x97EP}4.\xef5\xec\xad\xd3\x9b\x8d\xe0\xf1\xba\xabLM\xa8z\xf7\x8f\x82e\xe3\xa3\xf4\xdb7\xd8\xefJ\x96\x02z\x19\xe2%\xa1\x91\x12\xe9\xd5+\xe9\xf6\xc3\xa1\xc9\x9d\x833\x9fT5\xce\x86\xbe\xb6\xd4'U\x1bt#\x16\xcc'U}R\xd5'U\xe1\x06\xc3\x0f\xe7\xa4j\xe1\xf7\x0cq\xeb\x88S\xb2T\x1c-Q&\x8bnu\xb4\xd3z\xa4q\x06\x05\xf7\x1d\xd7\xf2\xaa\xdbO\xe2\xa8a\x9b\x97$k\xc0,\x1bC\xe1?vxn\xaa\x9b\x99\x15\x1f]\xd7\xbe\xf4\xd8\x88\xb2\x0f\xe5\x03\xdb\xed\xc7\xda!\x81\xba\x00\xa3\x9c~\xe2\xad{\xf5D\x18\xad\x92^\xb2\xeb\xe3%N#\x12\xae\xa7\xbf.I\x16%\xb3\xeag\x9e\x11\xa3\x14\xcb\x7f\xa7\x98)B\xf6_}\x87\xec\xec\xc9Y\xa6\xd9\xb7\x8b\x83-\x83\x9a\xee\x0c\x8d\xe0\xaa<\x17\xad;\xf6r\x08\\\\\xdf5\xc4`\xb6o\x9b\x0e\x82S\xbc?\x8d\x12\xd64\x8a\xe3\xd58\xc54\x8f5\xe8\xdf\xde\x91\xcc\xde\n\xd3=\xbd'i\x19e\x1c\x8c\x0eJ\xea\x86\x8b\xa0 \xcdP\xd76\nA\x03\xb7\xb6\x97\x90\x9b\x1aXB\xc6L\xfd\x8f/q\xa6H|\x0e\xda\xa4(.\xf4;\xe2,#\x99.\x986\x85\x1e\x9a\xc0c\x00\x17\xcf\x10rX\x88\xd02\xdc0\x05\x1bn-u\xa6\xca\xa4\x05\x10\xc8\x7f\xa7Oe\xe7'}\x16\xbeH\xdb\xe1\xe8\xeb*5+e\xa2\xe8\xdc\xd8j\xe5R6\xfb\xa9\xaa\x14T;\xd4\x04\xb3\xca\xc0\xae\xd7\x10Z\x1buz\xf1\xf8f\nl\xe2\xf8^\xd5\xc0\x98\xf3+n\x9b\xe0g\x10E \xe5\x1b\x95\xca\x17\x1a\xac\xc4\xcb\xeb\xa8z_J\xb3\x8cR|)\xad\x83\x83/\xa5 \xf2\xa54\x9f\x88l\x92k{\xbe\x946L)\xad\xb1\xc7\xeb\x8c\x99Bx\xc5M_\xeb\xb9\xbe%\xb7\x06\xff\x8f\xfcl2X\xa0\xeb\xae\xed\x87\x82\xbe\xb5Z\x9a\xaf\xa1\xd5\xc9\xa5\x8d\x8e%,\xbd\xae\xdd\x10&\xcd't\x89\xd4\xfb0\\\xc6J\x1b\xa7E4I\xb3\xd1\xc7\xa5\x89\xb7\xe8\xfaw\xd5\xa2\x12D\x957\x06\x80c[{\xdd1\xbb6\xa3\xdf\xf15\x9c\x13n\xcc\xc1\xaf\xabQ_G\xf5u\xd4N\xb2\x98\xcc`\xa7\xef\xc0\xa8\xf3\xa0G{\xbe\x8e\xea\xeb\xa8M\xf2u\xd4\x92n*\xf6\xfc\xaau\xd4\xbdVv\xf0\xcf\xe2\x9f\xa7aq[\x81s\xa1U\x8f\xa9o?\x03\x93\x15D\x85\xa5\xdc~\xe2N\xf1adZ\xad\x1c|\xed\xa7\x9e'U\xec\x1d\xf5\x86fY\x16\xf4\x9c\x1c\x07m}N\xf0S\x9cW\xef\x1c\xcc\xf5\x0d\xd2\x0c59\x9b7\xf5\x07\xf2w;;\x16\xb5\xb8\x0d\x0c\x99\xa6\n\xe7\xa2#\x0c\x85*m\xfdm\xc0v\xd4\x95\xb7\x01\x1b1\xd7\xdc\x06jL[m\xd3\xb4a\xa8\xb4m\xe0\x8e\xf7\x8e\x12\xbf\xf5\x90\xdb\xa2\xa6\xd6\xd9\x82\xa3\xc5\x8c*\xc5>\xbc\xbd\xdc/\x92F}\x0dg\xf1\xfe\xad\x8e\x0e\x89'\xa6\xfc\xa6r\\>)sz-{\xeb\xad\xe8W\xb4\xa2\x1a\x03e\x9dNt\x9c\xd5\xa7\xaf\xb79\xab\xa5\x9e\xa3}gu\xf1\xbezV\x17O0Wpm\xf2\xf8\xc9\xec0\x99\xb7\x8b\xf1R[\x00\x9d\xc9\xf3\xd0\x92:\xe9KGZ\xfdbh\xa1\xc4\\:\xbf\xd9\xafn\xb1q\xe5\xc2Q\xcbml\xbb\xdd\x90.\xaf\x858\xe5}]\x90\x91\x1e{\xc5C3\x8f\x9dB\xb5(fIc\x9c]\xdfc\xbb\xca\xd2\xe6\xe0F\x0e\x88)\xa0\xbb\x1e\x0f\xd3\xa6\xf6J\xf5x\x98:y<\x8c\xa0\x8a\xbb\xc7\xc3\xac\x91/(\xa9\x1f\xd3;5?<\x1eF\xe3\x99\x19<:w\xaflC\x9fL\x90jb\xe8\xd6\x88\xcfl\xe1\xcd6d[\x86xN~\x88\x87\x0b4^\xf5\xda\xbdA\xae\xedy\xb8\x80\x87\x0b4\xa9\x94\x9b\x87\x0b\xdc\x94k\xde\x1f.\x10\x85,@+r\x12M\xf0\xc0\xc3\x83C5\xa7_\xf0\n\x96\x88\xd2+\x92\x86\x10Q\xb8JI=Y\xdd+\x19c\x95r\xde\xff\xb3t\x9dz\xa3\x11$\x87[\x1d}k<\xd0L>\x03JB\xe5.\xe6\x1f9\x11c\xd33y9\x88n\x13\xb8z\x1fy\xcf^Jw\xd7t#\xc8\xc1\xe3\xe5\xf5\xf5\xe5\xad\xa2\xa9\x1dp\xd1\xbc\xaf]#\x976:\xbc\x91\xbe\xe5\xb9o(@\xdbD\xe7w\xdd\xe9\xf9\xf0\xe0\xa1\x9a\xdd\x1b\x92'!$\xa4\xa5D\xb7\xa2\xf3/I\x86{\xd7\x18\xf9\x99\x17\x9a\n\xa3\xf8\xbdq\xaa\xc7N\xd5\x1a\xbf\xb2b\xdf\x96\"\xdcn9\x92\x7fT\xb5\x16T\xac\xd9MJlD\x0c\xdf\xf65\xe7\xb5Z\xbd\xd9k}\xb9\x15\xb8~'b\x0b\xb6cM\xeb\xb2\xf35_\xc62.2\xd3\xb6\xf1\xb5s\x99\xc5l\xbb\xfd \xa6\x11\x8e\xc3\xea\x84\x9a\x15\xa6\xe2\xac\x99\x84\xac\x1fOS\x07\xcf\xdd\xfe\xc4\xdd\xd8O\xb7%\xe4 \xd37(\xc5\xf5\xd4P\x82\x12Bq@\x92\x90nC\x89\xec\xc4\xc2\\D\x89?%\xa0A.mt\xa5\x0d\xd6&W\xef\x05\xfe\xf4\xf1\xc3\x03\xf7%\xfe\x1f$\x9b\xe3t\xccL\xc3\x7f\xb2\xa8&!\xcc\xe8\xd7\x8f\xedf&\x05\xd3\xaci=,=\x1b\xe5\xaa\x1cJ\x7fp\x13\x1e%\xb3\xcd\x15\x88\xf0E\xf4\xea\xc3\xf6\xa5\xdd^\xf7\xea5\x95\xcdSL\xe7$\xee? \x0fF\x8f\x94flC\xf3\xf5\xe0\xc1C\x05\xe3\xea\x83\x8c\x978Aq\xd6\x91*\xb2n\xe6\xe0p\xb7\x96\x90b\x8a\x0d\xb5\x80\xc41%\x9b/\x1f\xc1g\x03\xf3\xbb\xc6@X\xdf\xc6\xe54\xdf\x89\xe1\xd5\x86\xc4\xd5h{O\xe2]\xb4\x04\xaa\xf9\xd1w\x1e\xef\xed\x87\x11\x13\xc4$\xe7\x1f4\xc41\x9e\xf1\x13Z\xf7\xff,\xff}\x1c\x86\xe9\xbf\xf6S|\x85\xd2\xb0\x88'\xd6c\xb1\xfb\xeb\xb1Q\x81\xe5\xad\xf1\xb9\xd5\xd9;\x99\xe79\x0e\x82\xe3\x02\xfb0\x85\xd7\xc5{\xe5;\x8a\xa8\xac\xf3svdv\x9e\\={\x9c\x85\x97\x0b\xf4\x05]\x84W\x17WG\xf9\xa3'GGOp\x98\xe71:\nV\x8f\x9e\x1c\xc5S\xd7\x15\xcc\xa2{\x16Z\xf3\xa3\x9f@\n &(\xe6\xabq\x9a\x92\x05\xbf\xc5A\n!\"\x89iE\x17\x0ci\xbe`R`/\xb3\xff,8c\x94&8\x84\xc9\xaa\xce\x92\xfd'\x02\x1a%\xb3\x18\xd7$\xdc\x94\xdf\x06\x8b\xf9um\x8elm9\xf7\xf0\xa3\xa5PT+\xfcf}\xe8\xf2\xc8\xf0\xb1\xcc_u?f\xe5\xeb6$gY\xaf\x16\xd4\x9a\xf5\x97(f\xbd6\xa65\x8f\xae\x1e&Gq'O!d\xfd`\xd4\x85PC)\xd4(uA&\xd9\x0b2\x16D\xadd/\xc8\"\xa2\x11d.\x8b\xf6i\xb5#\xc6\xe1\x1af7\xa6\xfa\xb7\x1b.\xda%jJ\xd5\xb9\x9e\x8a\xeeee\xdd\xf0\xb7\x7f\x8f\xb2y\x98\xa2\xabR\xf7\x97\xdd\xd9\xa35\xad_h\xbf[\x1d\x1d\xe9\xc7\xc2B\xedo\x07\xce\xab\xbe\xe6\xb2\x854\x15\x1eE9\xba\xc2\x93j=\xe5\xe6,zt\xa9G\x97\xb6\xe8\x9b*\xe0{t\xe9\x1ay\xf4\x95\xfa1\x9d\x8b\x01?.\xbat'\xe2\x19\x0f\xafl\xbc\xea\x17x\x83\\\xdb\xf3\xf0J\x0f\xaflR)7\x0f\xaf\xbc)\xefl\xc8\xd8\xf3+\xe0*\x1d\xb3\xc3\xfb\x7f\x96Y0\xfe\xf7o8[\xec\x82\x03T\x8e\xa6!\x0d\xedh\xde-\x99O\"\x1e\x94C*_\x1efH=R\x81\x0ey\xf0\xe2\xf6\x96\xb5\xe4\xc2\xad\x8e1\x17\x0f\x8b\x8c\xf5\xfa;\"\x9f\xddN`[\xa4'\x1cr\x0e\xdbr\xf8\xb6\xbb\xb5]\xe9\x94\x18T\x92\xc1 1\x1d\xe0m\xe6\xfb\x0dg\xd9\xec\xe6\xec\xfa\xf3\xdd\xc94Y\xf3)\xe6v{\x11[Lb\x9fc+\xc8\xe7\xd8\xbaZ\xb4\x1f\x9d\xcf\xb1\x0d\xe4\xc5\xf9\x1c\xdb\x1a\xf9\x10\\\xfd\x98\xcf\xb1\xf9\x1c\xdb\xa0\xa6\xae\xaf\xaa\xf19\xb6\x06\xdd\xc8\x02\xf796\x9fc\xf396\xb8A\xefl\xf3\xc8S\x9c\x85XFr_};\xb3m\xda\xedJFi\x05\xe4\xec\x1b\xce\xb7m\x15\x9dY\xa0'\x0by\xa1\xb8\x95s0\xa11k`\xcb=\x0d\xb7\x11\x9c\xcf#\xca\xe6\x01{\xa9\x98\\5\xb7\xe9j\x1e\x05s\xfecNq\nWQ\x1cC\x8a\x03\x1c]\xe2ZGa\x9a'.\xa8\x1c\x874\xc0\xb6|\xb0\x8e\x85\xea\nblO \xc7\x03wz.\xfd\x0d\xd7\xaa[\xd2\xe9=^\xc6(\xc0=\xe6d\xfdM\xcb\xc9(\x1d\xfa\x04_\x01I\xf0\xc8~:\xf9\x04TA>\x01\xd5\xd5\xa2\xfd\xe8|\x02j \x17\xc7'\xa0\xd6\xc8\xc7\xa7\xea\xc7|\x02J{\x84`\xdbmVY\x05\x85\x9c]\x1d\x1b\xd8\xd4\xb9\xd9\x96\xd3\xe6\x13g>q\xb6;\x8a\xc9'\xce|\xe2\xcc'\xce\xe0\x06\xbd\xca\x0d\x12g$-\xad\xe8\xee\x01\xd5J\xd0\xc5\x00\x80\xb4\x1f\x07\xc2\xf5{\xd1Y\xa8\x0b\xb3~\xae\xe1\xad\x8e\xc1\x0b,\x17OK(\xde\xe2\xdb\x987\xc0\xc38\xe4\x18v\xc2Q\"r\x1e|=\xef\xb2\xc7<\xa9\x88\xe2x:\x9e\x90$\x1c\xef\xd4\xf6\xeaow\xcf\xa9\xa0K\x14\x8f\x03\xb2XD\x94F\xeaC\x14\xbdL\xdb\xd4-S;sU*\x9b\x81\x92\xbd\xd6ff\x9f\xe4\x19\xcd\x10?Yq\xdc\xfb\xe4\x8c\x1f\xc7\xf4\xbc\xc1-\xf3Q\x93_\x99\xe1\xfe\xf6\xcd\x88\xc7\x06o\x7f\xe5\xf9\xd5f\\m\xafJ3\xc4O\xa6f\x06\xff\xfe\xfa\xa1\x00\xda\xf5\xa6p\x01\x03k\xce%C\x87\xba\x94_\xc1\xa6\x95v3+\xf8\xab\xd8^\xb7BkY=d\xb3\xb2\xec\xca\x1e\xb5:4\xa3\xfdN{\x1a\xb3\xa9]\xcd\xf46O\x8b\x89\xec\x0b\xac\x05\xf9\x02kW\x8b\xf6\xa3\xf3\x05\xd6\x81Ra\xbe\xc0\xbaF\xbe\x8e\xa1~\xcc\x17X=\xc2\x7fPS\xd7W\xd5\xf8Be\x83nd\x81\xfbB\xa5/T\xfaB%\xdc\xa0w6d\xf4y\xe3\xc5\xc9f\xea\x8a\x05\x8ey\x12e\xab\xf1\x92\x10y\x9e\xa7c\xee\x86\xbf\x0e\xec\xf5\xf5\x83\xa0-\xa2O\x87\x90r[\xf6\xdc\xa7Q\x86\x99L\xed\x90\xdfa\"\xad\xa5\xdc\xbf\xb9\xa9dHF,\xf9m;8\x1d\xab\x0e0\xd6|\xb5 Ir\xba\x11\x87j\x99g\xe8\xda\xf2\xcd\x9e3\x82\x19\xa0(\x99m2\x19\xde\n\x16\xb0 a\x1ec\xf3T`\xcf\xef\xf6\x14`B\x19+\x14\x81\xe6\xb3E\xc94\xe6\xfd\x1e\xf3\xd8&\x98\xa3d\xa6\xf4\xda\x0c\x1c\x16\xd6\x1f~\xedM\xc7\xab\xb5f\x04\xc5\xbcd\x8f\xdd&\xe9$&\xc1\x05\x1d/q:^ad{\x89\xe0\x86\xd3\xb4\x1c\xa6\xf3,}%\xef\xb4\x93\x9c*\x81 \xc7j\xc7\xe7\xea6d\x89\x92$G\xf1\xfdeJ.#\x9e\x8b\xdeX\xa6\x82#T\x1c\x7f8\xd9\xd2|\xb9\x8cW\xfb\xb5\xe3\xd6\x1d\xc4y\xce\xaf\x81\x10,\x80L! QB!JDul\x8e\xca\xfcJ[\x92\x1f\xf8+\xbb#K\xa7\x8c\x8b?\x9a\xbe\"\x976\x06\xf0\x07\xf7\x1a\xf3u\xffO>\xfe(\xe1\xf3\xa4\x07\xda\xb1\xfe\xfa\xad\xce\x8e\xbc\"Q\xd2\xfdX\xcf\x8aw\x8e2\xb2\xe0?l\xb0\xce\xcaBu\xa0\xe8\xde\xae\xaf\xb7\xb6\xee\xb2\x8arU\x83\xed?\x99D\xb5l\x1f\xe5\xd9|\xff\xf2p\x823t\xb8/3\x05t\xffO\x19Kw\xdc\xa2]~\x98c\xf1puK\xac\xfc\xef\x10g(\x8a)w\xcdC I\xb9cZ2\x10\xa0\xc9\x88$\xa7a\xc9\xa4\xaf\xc8\x8f\x81\xe6A\x80)\x9d\xe6q\xf9\xf6\xc8\xea38\xa9=9\xb6uM\xd0\xe8M%\x81i\x94`\xb93\\\xfe\x8dL%l\"\x15\xdd\xe4x\xa7\x96d*\xda W\xc8^\x1d\xe7i\x87\x92\x06\x1b\x9deWk8\x86\x8f\xef\x7f\xddO1%y\x1a\x14\x05\xd19\xca O\xa2\xcf9\x8eW\x10\x858\xc9\xa2i$\xc5\xc0\xda\x052U\xb0\xe3\xb7 \xe14Bq\xf4\x05\x87\xb7\x14O-S\x92\x91\x80\xc40\xc9\xa7S\x9c\xc2\x02S\x8afX\xee\xc4\x17c\x82EN3\x08H\x92\xa1(\x01\x94A\x8c\x11\xcdT\x1cI\x82\xe1\xf6\xfemf\xaeS\x14d8\x15W\xa8\xc5\x88f@\xf1l\x81\xab\x0f\xf7\xf1\xfd\xaf{\x94\xebQ\xde\x84\x82a\xca\x94\x19\xc5\x89\xb2E\xc6j\x9a\xc7\xf1\n>\xe7(f\xf2 \x85\xf4d3\\Nw\x10?I@\xc1\xe2\x13\xeb\xc4\xfe\x8c\x90Y\x8cG\\&\x93|:z\x9d\x8bE\xf5\xe9\xae\x18\x03gJ\xe7$\x8fC\x98`\xe6\x97 \x05\xbf\x00%$\x89\x02\x14\xc3\x94\xa4\x0bU\xabw\xf0h6\xba\xc7\xc4\xc9g\xee\xed\xd1\xed\xf2\xca\xb3 \xc0\xcb\x0c\x87wG\xb7T/\x9f&\xb0d\x02\x8e\x02|\x0f2\x8c\x16\x14r\x9a\x8b{\xfaR\x1c\x90\xc52\x8aY\x1f3\xc2\x850\x89\x12\x94\xae\x00\xc5\xdd\xd7\x14\x89YL\xc5\x84\xcb\xe6x\xa5j\x16_/q\x90A\x94AF \xa7\xb8\xf4\xceH\x92\xe1k\xfei\x8f\x93\xd5\x08~&W\xf8\x12\xa7\xf7x\xd5\xec\xe3\xfb_U7.\x89#\x1d\x18\xa3l\x8eU\x8dr\x8d\x83\xe1\xd3<\xcb\x96\x9f\xee\x89\xff\xa5\x9f\xee\x01I!!\xf2\xd7{|\xe6\x05(\x91\x17\xad7\xae\xd5n\xb1\xc3\x19\xe4K@|\xcc\xca6\x85r\xe7\x02Y\xa0%\x15\xd3\x88\x8d\x84\x8d\\\xae\x13\xa1\x96\xa2\x8c\xbb\xfaH5\xc6)\x89crE\x9f+\xbf\xe5\xbf\xc3\xe9\xb4\x1a \x9b\x04<\x82\x08qX\x0e\x96\xfd\x11Q\x9a/p8R\xb39N\xe0\xe7\xf3\xf33\xf8\xe9\xe4\x9cY \xb9\xc8\xc4\x02^E8\x0e\x953\xf6\x7f\xda\x93\xff|\xb5\xc4\xff\xfc\x9f\x7f*\x1e\x97\xd9x\xf6\xf5\xe5\xcc\x12\x1b\x16\xf87\x91\x0e\x01\xbf\xe3\x9c\xd9\xc6u],\xe8\xdf\xe1\xb8r\x13\xc4\x8d\x8a\x88I\n\x87L\xc4\x01\n\x98\xde \xe4\"_\xca{\xd1\xa5\x01Tj\x1e>\x87\xba\x7f\x04&\x08\xde\xbb9\x12\xa7\x85,j\xeb$\x14\x0b\x05\x15\x83a\xff\xbe$Q\x08(QM\"\x90]\xe3\xaa!\xc5S\x92\xe2{\xc5\xeb\x8c+\xca\xa2I\x14G\xd9\n\x12\x8cC>i&\x18\xb8*K/\x95c\xe0\xa3\x10y\x13\xfe\n_\x95#\xb8\xf3\x91b\xb8\xc4)\x8b)\x99t\xd8Td\xdaH\xccE\x94\xa0\x99z\xdc\x93\x14\xa3\x0b\xa6_$\xdb\xd1]\xd5\xfc\xf9\x8dd\xf89dL\xf3Oe\xb5\x1a\xf1\x11H\xad$o\xc5\x8fW\x80.Q\x14\xa3I\\,\x7f\xd5\x17\x99N\xa3 B\xb1\xd6\xfaL\xf2)\xa4\x98\xd9\x14|\x8f\x83\xc3\xa2\xach\x90\x17\xd5\x99\x02)\xd7\x9e\x82\xd1\x04\xcf\xa2$a\x83\xbc\x8a\xb2\xb9\xd2P\xac\x96x$\xe69ZFt\x14\x90\x85Z\xbf~\xe0k\x91\x02\xbf\x90\x92\xa9\x81\xa4\xad\x7f\xe0\x0e\xeb\xd9\x1c\xcb\x8b\xfc\xc5\xe2mo\x96.h\x11\xcd\xe6\x19L\x94\xea\x86\x0f\x95C\x03\"\xe6\xd833)\x923t\x89\x83h\x1a\x05@\xf1\x02%Y\x14t\xb86\xda\xda\x98\xd1=\x11+\xf79LV\xd9&X\x89\xb7L\xc9Lpy]g\xe5|\xacy\x19\xd20\xa3 \xb9TM\x1d9l9\xd9\x9bC\xd6\xf7\x87\xe3i\xa5\x0f\xfc^\xba\xaf\xc5\x99B\x85;+&\xd4T~?\xfe\xc6~\xd3m.\xe8\xfd\xd9+X\xe0lN\xc2\xaa\x0f!\x9e\xa2<\xce\xd4\x1et\x02y\"\x0c%\x0e\x85\n\xdc\xa6#\xcd\x1bP\xe5\x0f\x14\xe9\xf5P\x99\x96\x8d\x92\x0c\xcfp\xba\xf6k1K\xa2${p\xd4\xfaUZC\xa7>\xc8\x90f7\xf2\x1ez\x07\xdfb\x0d\x99&eE\x03\xbb\xf9\xb6\x8e~?W_\xc9L\x1b\x02\xf4\x0c\x02\x94\xdcx\xa7\x8ca\xc0 \x81@\xefP@\xc9\x0fY\x06\x03\x1b\x86\x03=\x03\x02u\xb7\xe3\xd86$\xe8\x17\x14(\x99q\x17\xdb*,\x18<0\xb0\x0c\x0d\x06\x0d\x0e,\xc2\x83\xc1\x02\x84\xcdB\x84\x1eA\xc2 a\xc2\xe0\x81\x821T\xd8B\xb0\xb0\xadpa\x0b\x01\x83K\xc8\xd07h\xd0\xeapS\xd80`\xe0`\x1b:8\x06\x0f\x83\x87\x0f\xe6\x00b\xe3\x10\xc2\x00\xb0\xb3p\x81\x8c\x81\x84\xbd\x974l0\xa1\x0f'\x04\xd9\xf4\xec\xd3q\xb2\xfaT\xb8G\x94).\x94N\xa2,e\x8bX\xdd\xc3NV\x85\x8d@1\x91S\x0fP\xf7\xa7e\xda\x99\x1b\x1a\xd1\xc3I\xd3-l\xb9\x7f\xa5W\xa7\x98\x9ag\xc5\xc2\x89\xa3 \xef\xb6\xb4#\x94W\x83H\xca-\xf8\x12\x05\x17\xfby\xc2\xfe\x87\xd9m1/\xbaW\x904\xf4j\xc7\x86L!\xcf\x84b+\xd4\x03\xdf\xf7\x83\xc20\x12\xba\xa2\xc4\xc2\x872\xd0\xa2rX\x9d\xfcX\x7f\xc4'\xecn\xefD\x14\xc6\xe0\xf09\x9c\xb1\xfe3\xbd \x87\x82J\xa1G \xbc\xfa\xcb_4f\xf2\x0d!0%\x04^\xc0h4\xfa\xdf\xca\xc7XgP\xb2R?\x80\x92\xd5\x88u\xe3MJ\x16w\xa6\x84\xdcU?:\x1a\xa9\xed_4\x85;\x8c\xd5G>\x90sr\xe7\xdf\x18\xaf\xbb\xf0\xa7F\x87\xeb\xf8\xfdK/\xbb#\x83\xec\xfe\x8a.\xd1`\xc2\x83\x17\xdc7d\xad\x0c \xa1\x88\xdeyC\xc8(\x88\x11\xa5\x06\x01\x89.\xb2\x97\xc4\x18k/\xaa\xfb\xa0\x90\\)\xba\x07\x06\xd1\x9d\xad\xb29I4\xc2\x13\xbdzC\xc8\x9d\xd1h\xa4\xb6\x06\xa5\xe0\xeeh\x9f\xe1\x93\x8f\x8b\xb5\xafT\x19\x93S!\xd4\xd7'\x1f^\xbd?=;\x7f\xf7\xfe\xae\xcaH\x80lVLT}\xc3\xa2i\xbd8\x1f\x1a\xc4\xf9\x13QK\x92\x8b\xf2\xf9\x0b\xf8\xb7\xe5d\xf4\x86\x90?G\xa3\xd1\xbf\xd4\x0f\xa3du\x8f\xb9\xa1\xec\x8d\xa5p\xa2\xde\xa2\x94\xceQ\xcc\x84\xac\x1f\x88N\x84\xed^h\xba\x10M[\x1d\xf8\x98,\xaa.\xf0\x0e\xf2\x05\xc2\x9f\xfa_/ \x89b\xed\x04\xd7\xf7K1\x93Yp\xcb\xe5\\\xe8\xe2\"\xd0\x80\xc9\xaar\xbb\n\xeb\xc1O\xe0\x9et{\xbd2K\xc6\xdc\x92\xee\xa6\xf6:\\\xaa}\x16\xbf\x8f\xf8\x0f\xcc]\xdd\x03T\xb3v\xcc\x12\xb2\x99\xa0\xb2\x0db\x86t7V\x9a\x96$^\x15q\xe5Z\xb2\xa0t\x93\x01M3\xee\xb6u7\xc4\xf3\x18{\xfb{\xddMI\x9bXtY\x94\xc0$`\x03nO \x19MP\xca\x07{\xbd\xbf\x1a}\xb9-\xa4\xc8c\xafN~\xeaP\x94w\xf56\xe3\xc1\xcca\xe7#\x7f\xfd\xf0\xee\xb7\xee_^\xbcx\xf1B=\x07\xd8{U\xceE\xf8\x91\x84\xa9\x03\xe9\x04\x89\xb8.\xa7\xb8H\xac\xce\xf2\x18\xa5\xdd\xfc\xd6\xd9d\xfc\x1c\xee\xcam\xb9\x07x1\xc1aX90\xf7\x84;\xde\xc5\x0e)\xb275\x97b\xca\x03\xd9O\xff\x87\x89\xee\x93L&\x94n[\xfd\xe3t/\x10\xa9~\x9ek\x02\x10\x14\\0\x1dT\x05\xc4\xd3(\xc6j\xbbQ\xe8\xac3\x9cR\x92h\x97\xad\xcc\xc4M\xa3\x94fc\xfe\x85_\xc0\xa1\x9as\xf9\x02\x9b\x94\xc5\xf3G\xee\x16\x0c@\xdb\xab\xdb\\\x96\xb7\x9f\xc3\xed\xaeU\xdb\x14\xc3H\x8c\xf2\xf6=\x1d?>\xbe\xdf\xd0\x82\xf1\xfc\x0f1\x84\xff\xd4\xbe\xc0\xc6\xd7z\xdeu\x90\xa7S\x19p5\xe7\x9a\x98\x0d\x11\x85+\x1c\xc7\xf7/\x12r%N)\x98#\n\x08\x82\x9c\x16\x10\xab6\xa9\x17Ws\xca\xdf\x13\x0e|k\x1d\x08\xe5Y\xeb\x0e\x9b\xc0\x8a\xe0\n\x89)\xdd\xdd\xd8'\xbe\x18\x8by>'q(&\xb9\xe8\xb9X\xcaQR\xae\x0f\x10\x19\xc0nVb\xc9t\xb7\xc3\xbb0*\x8d\xf3\x1d\xa6\xd7\n\x11\xae\xa5\x86\x8a\x8c\xe9?\xff\xe7\x9fw5\x0bi\x889\xd7lP?\xed\xb8\xa8\x18\xcb\xc3\xd1\xd1\xe1\x11\xed\xda\xde/\xa80\xd4\xdd\xe7B\x08\xbc\xdf\xfa\x81rM\xec\x92<\xe6\xa0\x81]\x92\x7f\xcb\x08|\xe6\x07\xbfL\x9b\x89\xaf5d\xa1\x12\x19\xd8\x19\x92\xb7\x81z\xbc\xb4u\x0b\xa0\x13\x9a\xc6\x87\xb6\x0ez.\xd1hg\xfcw\xde\xcf\x08S\x9e\x12\xae\xa4\xd1\x0d=\xcb\xb3\xb9x\xebV\xd1\xf7\x1dE\x9f\xd5\xc7^\xa7Fg\xc4C\x8d\xefW \xa0\xb0cb\xd7\xc7\xa0x\xb3\x05\xba\x1e/\xf0\x82\x8c\xcb\xfa\x89\xa6neU\xdb\xcd\xa3${\xfc\xb0\xe3\x91\xeczL\xa3\xd98\x8e\x16Q\xdfC\x14\xec\xda\xf8\x82\xc7\x01\xa1\x19\xdf.1Y\xe9\xf7\xf6o\xd2\x18\x1b\xcd%N\xa3\xe9J\xb4\x87\xc3\xa3G\x8f\x0e\x9f\xddTs\xb4\xd8\xc4:|\x83\x16eo\xb1\xf6\\\xaa\xder\x8d\xbf?{\xd5\xe2\xe7\x8b\xde\xbe\xe8m\xcc\xf8\xda$M\xc1\x17\xbd}\xd1[\xf9\xa4/zs\xf2E\xefu\xf2Eo_\xf4V\x91/z\xfb\xa27'_\xf4\xf6Eo_\xf4\xf6EoA\xbe\xe8\xed\x8b\xde\xbe\xe8\xed\x8b\xde*\xf2Eo_\xf4\xf6Eo_\xf4\xae\xd1\x10\x05H_\xf4\xe6\xe4\x8b\xde\xdfK\xd1[UF.\x8f8\x99\xa0\xe4\xa2\xac#OP\x8c\x92\x00[\x1eq\x12\xc7/\xe5\xf3ee\x99\xa7f\xc5\x1f\xb9\xbe\x8dcy\xf4\x938r[\x1eN#\x8f\xfd\xe8.\x83\xa5A\xca\xe3\x96V\x17\xe5\xab\xfa\x9fN\xa7\x10\xe3i&+\xa5Q&B\xe7\"\xc1\xc8k\xf1b\x81\x88F\x98\x9c'+\xc0(\x98\x03Z.\xbf\xa2\x14\xebn@\xf5\xbeN\x96\xb57\x98D\xf9\x0c%\\\xd10'\x05\xa2$\x8c\x02\x94\xe1\x12\x95#%\xc8\x1f\x94\x13\xa9\xce.J\x828\x0f[\xe9C\x04\x8dC#\xdb_\x8c[\x94\x9a\xc3\xc3\xdc\x84\x86'\xdc`\xf6\xf1\x94\xb6\xbeVk\x08<\xe3\xcal\xbd\xb0\xfd|yU\xeb\x91-\xb9\x91\\M\xd1,!i\x0b\xebP\xac\xc6f\x13B2\x9b~\xd8\xe6\xbdY\x9b\x06\xfa\xf2\xc8\\]\xc0/=*e\xb0\xdf8{\xd6:\xe0\x97\\o\x15\x83\xde\xed`\xdf\x10\x89\x15\xe2\x88\xd6\xa4SDy\x83\x86^\x9a\x98\xdf\xe0\xa2\x98\xef\xcb\xeax\xd5\xc2{\x97_\xd3\xcas\x97\xbezs\x02\x14\xe4\x8f\xeb\x92\xe4\xddt\xef\xa6\x1b\xad\xfa\xfd\xfa\xb9\xe5\xaa\xde\xf1\x1f\x8b\xbeUgfo\xbd{\xa6\xadL\x0d\xcb\xe4\xb8\x95)[\xdb\xc9s\xcd\xf9\xb56\xf3\xb4,Nr\xf1m\xefm\xda\xc0dP\x9c\x84c\x9c0\xd7H{\xed\xed\xf7p]\xa2v\x98\x82\xba\\\xa96\xd9\xa4\xb7\x19}\xc0Ix\"\x9a\x14\xb0\xea\xe6\x1aC\x0d\xd9\x03\xcdP\x96\xab\x81\x9dw\xae\xe6\x98\x83/Q\xb9n\xd5e(\xc6\x98q\xbd\xdb\x0d\x0d\xe4Vsl\xfb\xe5U\xc2h\x88\xe1L\xbb\xa1\xae0\xf0\x1d+\xb1\x83\x97\xd5\x0e\xa8zK\xeb\xdeD\x99#\x10\xab\xbfk\x195\xf6:z_\xc2\xfb\x12k\xb4\x05_\xc2\xc9\xf4\x89k<\xd4\xa6\x8f_\xf6!.\xech\xd8\xbf\xac} HQu\xed\xb4~5.\xf2\xe7\x9d5\x7fu\x81\xd4\xe9k\xcc._^\xdd\x9d\xf2\xaa,\x87\xc9\x19/\x1d\xdaj\xfe\x97\x05\xd5[\x1d/u\x1b\x9b\xda\xa2\xb0\n]\xbbx\xec\xd7\xd7\xa7\xb2\xe8T\xfe\xd1\x1b\xa05\xf9x\x03tc\x06\xa8;-(\xef\xd02\xa7\x02\xc5,\x7f7m\xd8!\xc55T\x9dV\xa8` \x7f\xdbY\x13\xa4R\xdc\xcd\xb0_(I\xa5\"\xfa\xces~\xc5\xb7\xb4\xd2\x9cRW\xb6\xbe\x7fA>\xeb'\xc9+\xca\x1bV\x94\xba\xac\xdf7\x99Uk\\\x90](x\xc3\xad\xeb\xeb\xd7\xab\x9f\x11\x127\x94|\xd0\xbcx]\x1dg4X\xdc*\xc6\xb7\xa3j\xbe\x92F\x9d\xbe\xc6\xda\xd8\xf18\xe35\x0e\xdcB\x0d\x08q\x10-P\xf7ee\x1bD!\xafq\xf0\x95\xa3\x90&\x04\x93-\x86B(\xcd5\xb2G\xbb\xe0\x9d\x16v\xb5\xb1\x82\xac\x8ck\x17\x97\xfd\xe6Bl=\xe2\x0d\xae$opo\xd8\xe0\x1a#\x93N\x03\x16\xe2\x18\xcfPFR\xca\xa2\x14\xf9\xefq bH\xf1\x15JC\xaa\x89\\j\x10\xb5\xd7\xe2\xfd\x88$\xa0(\x89\xb2\xae\x15\x11\xccqp\xe1\xbe+O3d\xa3k\xd4\xe2\xd7q9t\xcbS\xea\x10\xab\xcf\xbdK\xf2.\x93w\x99v\xcbe\xa21\xa2sl\xe5&}\x10\x8f\x96\xbe\x11\x7f\x15\xf0\xa5P\x97S\xfb\x1c\x8cdt\xab\x10\xc1\x8ezCR4\xbb\xb1\xb8\xaaO\xb7\xc4iD\x0c\x9b\x01\xad\x96\x89\xe6\xf2\x96i\x8a\xf8\xc5\xc1=[1\x1bah\xcd\x86\x136\x8b\xea\xe6\xb7n2k\x13Mq}\xe9\xcf\x98\xdf\xd5\x1dQ\xee\x7fD\x01?\xb0>\x9b\xcb#\xefiFR~\xc7\x8e\xe2\xed\xf3y\xc4\xcf\xbfM0\x0e\x8b\x0b\xee\xe3\x80'\x1a\x01-\xd9\x97I#\xfe\xefEq\x88;\xcd\xf8m\xed\x9d\xdc\xb8+\xa68\xf8\x929\x03\x15\x08\x98J\x9f \xa5\xb8,M$\xf2\"L$G=G\x8a\xadq\x01\xbf\xe6\xdd\xb4\x01N\xce\xe1\xe6\xd6#\xf97\xbb\xb4\xa0\xbf\xd1\x89\x93\xbf\xd1\xe9;\xbd\xd1\xc9\x90D\x94\xb6\xca\xe8&\x9b3\x88\x85\xf9\xf4\xce\xb0$\xef\x0c{g\xb8\xb73\\\xf5\x9cf(\xcd\xa2d6\x9es'@\xd5\xef\x96\xdaj\xbd\xd5\x18\x04\xe1\xaf\xa0\xb8|\x08\xe4C\xe5X\xda\x8b]\x9a\xd4\xf6\xf8\\\xafGY\xfb\xa0\x86{o\xb0Hu\x0e?p\xc1xW\x87\xed/\xf6r\x13\xa3\xbf\xd8k\x8b\xc25\xcfQ\x7f\xb1\xd7\x10R\xf4\x17{}\xfb\x17{\x15\x89*|\x19\x858 p\x99\xa4*\xfe\xa0\xceB\x1d\xc7\xf1\x89|\xa8\xc2\x03\xc51\x14ovf\x9cj/\xdd*\xc6\xb1\xa3\xc9\xa6\xa6\x04\xea\xf4Mz\xafv9 F\xc7\xf0\xf1\xfd\xaf\xfb)\xa6$O\x03\xcc\xd7\xbdX\x91y\x12}\xceq\xbc\x02&\x98,\x9a\x96\x87\x13\xb0\x88\x8b\xa8\x02H\x10)\x0e\x9cF(\x8e\xbe`Mm\x89\x17\x90\x02\x12\xc3$\x9fNqy\xaf\xfeH\xa4\x83\xc4\xd8`\x91\xd3\x0c\x02\x92d(J\x00\xa9\xca\x8c\x001F4S\xb7\xc5\x0c\xd7\xed\xfd\xdb\x10\xccQ\x8a\x82\x0c\xa7#^I\x8b\x11e\xeaf\xb6\xc0\x95\n\xf9\xf8\xfe\xd7=\xda\xf6\x8c\x9b\xc4;U\xe6\xca\xd4\xad2v\xd3<\xe6W/\xa0\x98I0\x14\xf2-\xb4\x15\x93\xe4\x1dD\x99\x1eR2\xf9\xc4\xba\xa2\xbc\xfa\xff\xd3]1\x12\xce\xb6\xf2f\"\xd5\xbd4\\c\xa2\x84$Q\x80b\xae\xfd\xd5-\xdf\xc1\xa3\xd9\xe8\x1e\x13-wFo\x8fn\xf3$\x1d\xc9\x00\x05\x01^f8\xbc\xab+X\x9e&\xb0\xe4i\xcc\x00\xdf\x83\x0c\xa3\x05\xd3\x909b\xe2X\xa68 \x8be\x14\xb3\x9e2\x9b0\xc70\x89\x12\x94vW\xa1\x19\xf1\x83zVK>\x07\x85\xb9X\xa9\x9b\x16\x91:\xb3\xae\x19aj\xb90\xd1l\"1\x9f\x91L\xe18Y\x8d\xe0gr\x85/qz\xaf\xa3\xceV\xd1\xc7\xf7\xbf\x16\x89B\xc6\xaa\xa3\x00W\x11WF\x18>\xcd\xb3l\xf9\xe9\x9e\xf8_\xfa\xe9\x1es\x95\x12\"\x7f\xbd\xc7g#s\xd3\nw\xbf3\x99$\x19\xe2\x0c\xf2% >vM\xbb8\xbd\xc4\xa9\x10\x0d\xbfF\x88O-\xde\xf3\x8c\x14+K\x84\x1a\x91\xc8|*\xd2\x9a\xc0}\x02^\x0c}\xae\xf9\xb6\xff\xce\xfc\x98rDlZ,S\xc24hX\x0e\x9a{\xa8\x94\xe6\x0b\x1c*\xd2\xbe\x82\xd1q\x02?\x9f\x9f\x9f\xc1O'\xe7 \xb1\x92\x1f\xdf\xff*\xd6\xd8\x8a\x97\xb8\xd5\xd5\xf3\xffi/\x8b\xf3\xd5\x12\xff\xf3\x7f\xfe\xa9|\x01\x8a$U\"\xe7\x9bt\x80\xf8\x17Z\xa6$\xcc\x03\x0c(\x11 \x98\xf5\xfchA\xff\x0e\xc7\xcbe\xcc\xbc\x17!\xcb\x14\x8b\x02r\x91\xbc\x0e\x98n!\xe4\"_\x96>\xe3\x04\xd1\x96;P'1pM\xb7?\xbe\xff\x95\xf7q\x8e.\xf9\x14\\\xd4\xd6P(\x16\x11*\x86\xc4\xfe}I\xa2\x10P\xa2\x9eX ;\xc8\xd5G\x8a\xa7$\xc5\xf7\n\x06\x8c/\xca\xa2I\x14G\xd9\x8ag\xe5\x0b\x9f\x97\xab\xbc\xf4R3\x12>\x96`\x8e\x92\x19\xe6/\xf15;\x82;\x1f)\x86K\x9c\xd2\x880\x97\x99OO\xa6\xb3\xc4\xfcD \x9a\xe9F?I1\xcf\xf7\x17\x8cGw58 \x92\xe1\xe7\x901\x1b2\xcd\x93@\xac06\x0e\xa9\xbbx\xda\x9e\xc5\x88\xf5t\xa8Z]\xf2\xb0\x9cGE\xea,\xa8\xb4e\x93\x9c\x85\x08\xcc\x12\xe1{\x1c\xf6!\" \xd6(\x8f\xc6x\x96\xb2X\x97JV<\xe6M\xd8`\xaf\xa2l\xae1.\xab%\x1e\x89\xf9\x8f\x96\x11\x1d\x05d\xa1\xd3\xc6\x1f\xf8J\xa5\"#+\xa2\xbb\x96\x96\x82;rG\x84\x08M\xc4\xd2\xbe\xab6\x82<51\xd1(%\x11\x82FY\x0d\x94\"\xdcn\xe6?G\xd3(\x00\x8a\x17(\xc9\xa2\x80v/\xb5-\xa4\xe0\xdad\xeb%\xbde\xeah\x82\x8b\xb2X\xcd\xc1Y\xf3c\xa4qG\x13r\xa9\x9e\xd3R\x04r)t\x0d\xdf\xa6g\x9f\x8e\x93\xd5\xa7\xc2=\xe2@ \x94N\xa2,e\x8bX\xdd\xc3NV\x85\x8d@1\x91S\x0fP\xf7\xa7e\xda\x99\x1b\x1a\xd1\xc3I\xd3-l\xb9\x7f\xa5W\xa7\x98\x9ag\xc5\xc2\x89\xa3 \xef\xb6\xb4#\x94_\x89ARn\xc1\x97(\xb8\xd8\xcf\x13\xf6?\xccn\x8by\xd1\xbd\x82\xa4\xa1W;6d\ny&\x14[\xa1\x1e(\x88ti$\x93o3\x9c\xb0\x18\x86w>\x9b\x93\xb0\xd8\xe6\xd5\xc9\x8f\xf5G|\xc2\xee\xf6N\xae\x11\x87\x14\x1d>\x873\xd6\x7f\xa6\x17\xe4PP)\xf4(\x81W\x7f\xf9\x8b\xc6L\xbe!\x04\xa6\x84\xc0\x0b\x18\x8dF\xff[\xf9\x18\xeb\x0cJV\xea\x07P\xb2\x1a\xb1n\xbcI\xc9\xe2\xce\x94\x90\xbb\xeaGG#\xb5\xfd\x8b\xa6p\x87\xb1\xfa\xc8\x07rN\xee\xfc\x1b\xe3u\x17\xfe\xd4\xe8p\x1d\xbf\x7f\xe9ewd\x90\xdd_\xd1%\x1aLx\xf0\x82\xfb\x86\xac\x95\x01$\x14\xd1;o\x08\x19\x051\xa2\xd4 \xd1E\xf6\x92\x18c\xedEu\x1f\x14\x92+E\xf7\xc0 \xba\xb3U6'\x89Fx\xa2Wo\x08\xb93\x1a\x8d\xd4\xd6\xa0\x14\xdc\x1d\xed3|\xf2q\xb1\xf6\x95*cr*\x84\xfa\xfa\xe4\xc3\xab\xf7\xa7g\xe7\xef\xde\xdfU\x19 \x90\xcd\x8a\x89\xaaoX4\xad\x17\xe7C\x838\x7f\"jIrQ>\x7f\x01\xff\xb6\x9c\x8c\xde\x10\xf2\xe7h4\xfa\x97\xfaa\x94\xac\xee17\x94\xbd\xb1\x14N\xd4[\x94\xd29\x8a\x99\x90\xf5\x03\xd1\x89\xb0\xdd\x0bM\x17\xa2i\xab\x03\x1f\x93E\xd5\x05\xdeA\xbe@\xf8S\xff\xeb\x05$Q\xac\x9d\xe0\xfa~)f\xf29\x870\x04\x17\xa5..\x02\x0d\x98\xac*\xb7\xab\xb0\x1e<\x99:\xe9\xf6z\x8b\x1ckN\x15>\xcb^\x87K\xb5\xcf\xe2\xf7\x11\xff\x81\xb9\xab{\x80j\xd6\x8eYB6\x13T\xb6A\xcc\x90\xee\xc6J\xd3\x92\xc4\xab\"\xae\\K\x16\x94n\xb2\x04\xa5\xa8\x1a\xe2y\x8c\xbd\xfd\xbd\xee\xa6\xa4M,\xba\xcc\xa3]\xc0rF\xdf\x9e\x122\x9a\xa0\x94\x0f\xf6z\x7f5\xfar[H\x91\xc7^\x9d\xfc\xd4\xa1(\xef\xeam\xc6\x83\x99\xc3\xceG\xfe\xfa\xe1\xddo\xdd\xbf\xbcx\xf1\xe2\x85z\x0e\xb0\xf7\xaa\x9c\x8b\xf0# S\x07\xd2 \x12q]N\xcb\xe3\xfffy\x8c\xd2n~\xebl2\xbe\x87\xbfr[\xee\x01^Lp\x18V\x0e\xcc=\xe1\x8ew\xb1C\x8a\xecM\xcd\xa5\x10X\xedO\xff\x87\x89\xee\x93L&\x94n[\xfd\xe3t/\x10\xa9~\x9ek\x02\x10\x14\\0\x1dT\x05\xc4\xd3(\xc6j\xbbQ\xe8\xac3\x9cR\x92h\x97\xad\xcc\xc4M\xa3\x94fc\xfe\x85_\xc0\xa1\x9as\xf9\x02\x9b\x94\xc5\xf3G\xee\x16\x0c@\xdb\xab\xdb\\\x96\xb7\x9f\xc3\xed\xaeU\xdb\x14\xc3H\x8c\xf2\xf6=\x1d?>\xbe\xdf\xd0\x82\xf1\xfc\x0f1\x84\xff\xd4\xbe\xc0\xc6\xd7z\xdeu\x90\xa7S\x19p5\xe7\x9a\x98\x0d\x11\x85+\x1c\xc7\xf7/\x12r%\xb6\x11\xcc\x11\x05\xa4;cS\xbd\xb8\x9aS\xfe\x9ep\xe0[\xeb@(\xcfZw\xd8\x04V\x04WHL\xe9\xee\xc6>\xf1\xc5X\xcc\xf39\x89C\xb9#Vl:\xe0K9J\xca\xf5\x01\"\x03\xd8\xcdJ,\x99\xeevx\x17F\xa5q\xbe\xc3\xf4Z!\xc2\xb5\xd4P\x911\xfd\xe7\xff\xfc\xf3\xaef!\x0d1\xe7\x9a\x0d\xea\xa7\x1d\x17\x15cy8::<\xa2\xb75S\xa8\xfd\x97F\x84X\xd4/dY\xb2Y\x9cY\x8b\xaf=\xa8\x90\x93\x07\x15~\xa7\xa0\xc2\xeem8\xb5rd\x7f\xa5{}\x89\xbeW\x81\x9e7\xa1`h,\xcf\x0fP\x9c\xefY\x9aW\x164\xed\n\xf3\x1b\x95\xe5{\x15\xe5\x01\xc5\xdd\xd7\xbb\x83mI\xbeOA^W&\xb3*\xc7\x0f\\\x8c\xb7*\xc5\x0fX\x887\x96\xe1\x07*\xc2oR\x82w.\xc0\x0fP~\x1f\xb8\xf8n(\xbd\x0f^x\xdfN\xd9}\xf0\xa2\xbb}\xc9\xbd_\xc1]#tS\xb9}\xb0b\xbb]\xa9\xbd#\xd6W\xeb\xd7\x81\xcb\xec\xa6\"\xfb\x86%vM\x81\xdd\xe8\x9e\x18\x8b\xebv\xfe\xcb\xb0\x85u]Y\xdd\x02\xbc\xeb\x84\xdc\x95X\xdd\x96\xa3\\\x90?\x01T\x92\xc7\xe9z\x9cnE\x1e\xa7\xebq\xba\x15\xf5 \x0b\x94\xcc\x0c\x1e@\x98C\x88\x8d\x83\x08\x8f\xd35\xf6\xcc\xe3t\xdb\xe4q\xba\x1e\xa7\xdb&7\xe1y\x9cn\x83?(\xa0\xad\xe8\x82\xe6rZc\xb6\xa71\xa6_q2\xcb\xca\xa9,\xd8\x83`\xdf\xeex\x88\x97\x84F\x99\x9d\xac\x9a\x0f[\x08K\xbe0\xa8\xb4\x16Q2\x96|u\xb2\xea.X\x82\xaeh \xa6\x8e 2\x15/\x81\x8b-!\x0b]Tf\xfc\xa0\x8c\xc4\xa5\xb9\x1b\xb2\xb1I\xa41zE\xa2\xea\xa08$\xae\xe2\x95\x8901\x9c\x02D\xccL1Jd\xe7t9\xd7\xdf\xde\x9d\x9f<\xe7\xde\xab\xbc\xfdW\xb8\x81\x11\xcf\xd4\x9d&\x994\x90ev\x94j\x8b\x00\xd2z\x8a\xc0A\xdd(\x8df \xca\xf2\x14\xd3R%\xb3PiFf\x84\x9b\xa6n\x0f\xb3!\xa4\xb7Q\x12-\xf2E1{y\xbc\x80\xf8g'\x14\xc5l^\xe3\x84\x85#\xda\x85\xc5h\x81\xae\xc7\xe5\x9a\x19lu\xab1\x1f\xe8\x9a\xf7[4\xc5\xbb}\xccD\xc6<\x10\xb60\xab\x05 \xec3\x96#RE\xa5\xa7I\x94E(\x96yhh\xa3\x0cJZ\x90$\x9b\xaf\xe5\xb03\x14\xc7+;\xbdR\x7f\xd4B\xab\xf0\xc7\x07\xd5)\x9fs\x92\xe6\x8a\xf5j\xfc8\xc64\xbb\xe5\xd7\x93\xb3n\x89\xd3\x80\xf9\xa43\x91N\xe6P|\x9a\xa1\x0b\\\xbbc\xfb\x92d\x02/\xa3\xaa\x0d\xca\x9d\x05\xbcj\xa5\xfal\x01Ih\x14b\xb6@xR\xbfk\x1ad\xf3\x14S6\x7fvD6l\xc6\xa6E\xd4\xfa\xdf\x98rIP\xb1\xcd\xa1\xb6>\x97\x88*j*\x00\xafe\x1eD\xce\xea\x83\xd1\xa3N\x08\x17\xce\xc8x\xc7F/b|2\x85\xdf\xb1\x9c\x03|M\x9f\xf3)\"\xfe\x93;k\x9ar~]H\xea\x99\xc1\x06\x8f\xc3Q[T\x87\xfb\x0f\x9c\xa1_\xc2at\x01~IO\xf5\xfd\xd9\xab\x16?\x0f\xfb\xf2\xb0\xaf\xc1\xbc\x1d\x0f\xfb\xf2\xb0\xafn\xf2\xb0/N\x1e\xf6\xb5N\x1e\xf6\xe5a_*\xf2\xb0/\x0f\xfb\xe2\xe4a_\x1e\xf6\xe5a_\x1e\xf6%\xc8\xc3\xbe<\xec\xcb\xc3\xbe<\xecKE\x1e\xf6\xe5a_\x1e\xf6\xe5a_5\x1a\x02\x82\xe3a_\x9c<\xec\xebG\x80}\xd5 P5>\xbaH\xb2\xf6FYo\x16\x9f\xadVq\xce\x88\xbc\xf7mJ\xd2{\xc51\x83\xe2D\xc0\x06\xb3\xdb\x02\x07p\xfb^S\xbc\xb7y\x99\x9a\xfd\xc0\x02\xad\xdb\xb2\xf2~{@\x18\x99\n/\xd6 \x17\x93\x85?\xf9B'D\xacx\xa4\x89\x12+\xffZ\x9er6\x8b.q\x024CYN;\x81b%\xa7[\xc5\xa0v\x14(\xd6\x92J\x9d\xb2\xafP\xff*\xba3\x8e\x14\x15g\xa7\xfc\x8f\xe6\xe6@^\x11P#\x8b\x0c\xc3\x00\x8b\xa1\x80E9\x0f\xec\xc6\x03\x96i\xa1\x82\\K{Zf\xdd\xf9\x1dM\xb83t\x89\x0f\xcce>\xe8Q\xea\xd3\x0f\xa08\x04\xce\xa6\xdc\x07C\x95\xfc\xa0g\xd9O\xcb\x90 \xd7\xba\xf4\x07\x9b\x97\xff\xc0\xb9\x04\xa8eU\x1d\x14g_\x06\x84\xa1K\x81\xe0X\x0e\x04\xd7\x92\xa0~f\x97\xe5B\xdb\xb2 \x0c]\x1a\x04\xbb\xf2 \x0cY\"\x84\x8d\xcb\x84\xd0\xafT\x08C\x95\x0b\xa1W\xc9P\xbf\x1c\n\x17\xc4\xb4n\xb6R:\x84-\x96\x0fa;%Dp,#B\xbfR\xa2I\x05\xdb\x95\x13a\xd8\x92\"8\x94\x15\xc1\xbd\xb4\x08=\xca\x8b\x16*\xf3\xaeE\x89\x11\x86(3\x82\xa9\xd4\x08\xf6\xee\x99E\xc9\x11\x1c\xbd8\xe7\xd2\xa3\x96\x1b/KZ\x94\x1f\xc1\xa1\x97\x03\x96!\xc1\xa9\x14 C\x97#\xa1gIR?\xaf\xa8\xb9, \xfdK\x93J~\xacESy\x12\x06+Q\x82}\xa5\x0dlJ\x95\xe0V\xae\x04S}\xa1g\xd9\x12,\xf8jR\x98\x03\x950\xa1\x97p\xedK\x99`1\xca\x1e%M\xe8[\xd6\x04\xbdT\x87+o\x82}\x89\x13,\xcb\x9c`]\xea\x04;\xa9\xbb\x97<\xc1\xa9\xec \xda\xd2'\x0cU\xfe\x04\xd7\x12(lX\x06\x05\x0b\xf1:\x94Ca\x1b%Q\xb0\xe9\xa3f%\x0cW\x1e\x05\x9b\x12)lP&U2d\x0f\xeaJ\xa50t\xb9\x14\x8c%S\xe8[6Ur\x131\xaa>\\\xb7(\x9f\x82\xb6\xca\x03\xda2*\xf4*\xa5*YiK\xac\xd0\xb7\xcc\xaa\xe4&\xfc@M\xd6l\xb8r+X\x95\\\xa1G\xd9\x15\xdcJ\xaf\xd0\xa7\xfc\n\xce%X0X[CY\x0c\x1cJc\xb6\xe5X\xe8S\x92\x05\xd7\xb2,\xe8\x07\xde\xa7<\xabdV+~\xda.\x19\xbb2\xadvA$3}\xa9\x16\x86-\xd7\x82\xa9d\x0b\xfa\xb2\xad\xf2\x9d\xbe\xe5\\\x18p\xee:\x94u\xc1\xa9\xb4\x0b\xb5\xf2n\x93Diq\x83\x12\x18NT\xbby\x81WJ\xcf\xde\xbf;{\xf7\xe1\xf8\xd7\xf1\x87\xf3\xe3\xf3\x8f\x1f\xc6\x1f\x7f\xfbpv\xf2\xea\xf4\xcd\xe9\xc9k\x87\xb7^\x9f\x9c\xbd\xfbpz>>;y\x7f\xfa\xce\xe5\xc5\xdf\xdf\x9d\x9f\xfe\xf6\x93\xfb{g\xc7\x1f>8\xf5\xf0\xfd\xc9_O^\x9d;\xbd\xf2\xe6\xf8\xf4W\xe5\x0b\xc5\x96\xcb\x1e\x02\xb4\xcd\xaa\x14\xb5\xe3\x0f|\x0e\xf0/\xc9c\x7f\xb18e.\x88\xff\x869BY\xadz\xaa\xed\xed\xea)\xa8\x9d\n\xdaa6\xf6\xa9\x17\x1e$orI\xc5\x8e\xedZu\xdc\xaa\xe5\xe6tZo\xbc\xf9{\xed\xa8\x86rS\xafh\x14\xc2<-n\x8c\x94\xa8\x03\xb5\x8c\x94g\x17H2L\xde\xf5^6~\xb6\xeb\xa4\xc0O\x0c\xd9G\xb1P\xd6;'\xfe\xae\xe9\x15\x9bP\xb5M\xd2\xcc\x0e\xcd5\x85\xa1%\xa2\x14\xbbu\xadX\x92\xeb\x9d+~\x19\xae{\x13\x8c\x13H\xf1\x1f|\x07\xb4S/\x85\x16X\xef\xa3\xf8\xfbp=\x9c\xa2(Vum\x1a%(\x1e\x8b\xb3!Dqh\xcbx\x85\xbd\x15\xa6{\x1bg\xc3\xd1\x842\x8f{c>{ \xd9\xbc3 \x19\xb3\x08b|\x893\xb2!3[\x05~\xce>\xd8{q\xfeD5Oh\x86\x92\x10\xa5\xa18\xbcC\x1e\xa92#\x978M\xd0\xfa-/\x15\xe9\xcf(\xa1\xf9d\x11e\xe3,Z\x0c\xb1a*D\x19\xbe\xcfxu>W\x1c\xe4\x82\x93\xf0f\x1a\xe4G\x7f\xe8\x8f:\xd2\xc3\x94\x04i\x8f;\xb2Z;v\xab\xc7\xe2\xd0#+\xe1\x80\xd5\xc1G\x96\xacl'\xad\xf3\xf1G\xc6\xce\xebK\x87\xc3\x1e\x8dd}8R\xdf\xe3\x91\xe4 e4C\xe9\x0d\xad6\xd9\xe2\x0d-6\x9biR8\xa6\x0d\xc7/ )\x96\xdfn\xc1\"\xd3TZ@\x83fSi\xb5\xea\xaa\xde\xf5\x017\xfaX\xbb\xd3\xb7y^R\xed\xaa_\xc8j'\xad\xac\x7fW\xed\xc2\xd7/\xf8\xe2\xca\xf2\xee\xafb\xfc&\xc6jq\x16e1^\xbbP\xbd\xa2\xf2\xcaty\x9cLy{\xbat\xc8\xd8\x7f\x88;\xd6\xf9!\x8e#\xf1\xbb\x82\x99\xc0\xf8f\xda\xeb\xd5;^\xe5\xdayC\x01h\x10\x9aR\x04J\x95U^\xd1\xac\xba\xb3\xbb\xb6\xcd[U+\xad\x8b\xa8~\xdb\xb5\xe2\xf1+\xc4on\xbe\x07QF\x0b\x84\x10\x85<\x11\x130\x14 \x88\xab\x886\xbf\xa9\xcd\x19A\x05\n\xd7\xea\x98\xa0.\x0e\xfb\x15v\xf9\xfd\xd9\xab\xf6\x00\xfc\xc1A\xfe\xe0 \xa3\x99\xb01\x01\xd0\x03],\xe6\xae?8\xc8\x02I<\x08\x8a\xb8\x0f\x82\xd8\x1f\x1c4 Z\xd8\x05)\xec\x84\x12\xf6\x07\x07m\x8a\x08\xee\x81\x06\x1e\x04 \xec\x8e\x02\xf6\x07\x07m\x82\xfauA\xfc\xf6@\xfb\xfa\x83\x83\xfc\xc1A\xfe\xe0 [\xb4\xee\xa0H\xdd>(]\x7fp\x90\xea1#\x1a\xd7\x01\x89ks,\x8e\x0b\x02\xd7\x1f\x1c\xe4\x0f\x0e\xb2A\xd3\xfa\x83\x838m\x82\x98\xf5\x07\x07uq2\xa2b\xfb\"b\x95\xb6\xc1\x1f\x1c\xb4N\xfe\xe0\xa0\x1eHV3\x8a\xd5\x15\xc1\xea\x80^uF\xae\xba\xa1V\xfd\xc1An\xc8T\x7fpPI\xfe\xe0 I\xe5\xc1A\xc5y+\x02\xbcT\xe3\xd5\x88&[u\xc8\xd6[\x8d\x02l\x85\x82\xe2\xe5\xd8\xa2*\xd5\xf6\x93n\x16v\xf8\xf5\xa0\x86\x9d\xd0\xbd\xaf\x04)\xb4\xec\xcb6\xa1\x83\x9dp\xc1\x9b\x87\x08\xea`\x817\x0b\x05\\\x87\xffE\xc9sQ\x91\xaf\xfd\xad:\x13k\x8abj8\x14\x0b:\xe1\xdf\xf6\x90o\xd3b1<\xac\x86v[\xc1\xb9-!\xdc\x16\xb0m'\xa8v\xa1\x10/I\xd6\xc8w5\xd4 \xff\xb1\xa1\x7f\xc4_P\x18\xa6\x98\xd2\xa2>_\xd7z\x15\xa7\x01\xbek\xd1I\xa9h\x88\xb2\xa3\xe5\x03-e)\xae>\x93\xdd\xc5\x14\xa6)Y\xdcH\x8f+X\xce\xe8\x02\xafT\xddn\x99\x19\x89oA\xd2UOq\x96\xa7 /^H\xe0\x86\x04$\x94`\x18^r\x98\xb5r\xf3|\x04\x85VT\x03\\F\xf0\x8e\x05V\xe2t; \xd3)\xc5\x19\x90\x14\x9a\xdd\x85Z\xc9\x94\xe2l`i)\x12\xd0\x1dB\x14\xfdS\xc9\xb1\x95\xfc\x95\x83\xe1\xa2\xe4\x9b \xa2\xa0\xf8\x1b\xd7I\xf2`?\x91}\x9f\xe3\xa4\x10|\x9e\x94\x05\x8f\x96\xf9>\xe5\xdcb6\xe7K\x11\x8a\x12AN\x99\xa8/\xb0\xa3<\x9b\xec\xb7,\xdc\x16\xe8\xa8C\xbcq\xb4\x88l\xa5\xcb\x9f-\xf0:*,\x92(\x86\xd5g\xb0\x889\xd9\xaf\x0dnK\x91\xfa\xae\xff\xe9t\n1\x9ef\xb2\xca\x12e\xc2\xed.<\x1f^\xc7\x13\x0bD4\xc2\xe4\x9e\xb6=\xdb\xd6\x10x\xb6&\xc5TB\xa9\xf8\xf2\xaa\xd6#[r#\xb9\x9a\xa2YB\xd2V\x9d\xb4X\x8d\xcd&\x84d6\xfd\xb0\x13Bb\\\xc2x\xddn^.\xac\xc5\xfe\x9f\xcb\xea\xc0F\xed\xe5\xcb\x85\x13T\x1c\xac\xb9\xac\xb0\xa4\x1cEU\x1dlU\xder\x0b\xf0\xb6\xed\x01\xdc\xb6\x02qs\x03\xb9\x0d\x0es\xb3\x05\xba\x0d\nu\xb3\x07\xbb9\xc3\xdd\xdc\x01oFUhw\x90\xe5\xc6\xa07\xe3!\x96V\x0e\x95\x05\xf4\xcd\xc5\xebr\x86\xbf\xe9\x8c\xa0\xf5\xd1\x95v\xfd\x1b\x10\x04\xe7\x02\x83\x1b\x18\x08\xd7\x0f\n\xa7\x9bAV\xc7U\xf6\x84\xc3)\xb8eVGU\x0e\x03\x89\xb3\xc6uY\xc0\xe2\x9c\x80q\xa6\x93\xde\xfa\x80\xe3L<\x95E\xf2\x81 r\xee\xc2\xb4\x87\xc9\x99\xc6\xd6\x03*\xd7\x13,\xa7\x03\x1b\x0c\x06\x98\xb3\x86\xcc\xd9\x81\xe6las\x16Rv\x87\xce\xb9\x80\xe7\xf4\x87O\x0e\x02\xa0s\x84\xd0m\x06\xa23 \xd4\x01H\xb7\x05(\x9d\xb1w\xca\x99>\x1c\xa0\xce\x02R\xd7\x1fT\xa7`\x97\x19\x0f\x99\x1c\x14Xg\x82\xd6\xf5\x04\xd7)x\x99\x0f\x97\xb4\x00\xd8\xe9\x0f\x96\xd4\x1d+94\xccnp\xa0\x9d\x1aj7$\xd8\xce\x06n\xe7\x0e\xb8s\x82\xdc\xf5\x00\xdd\xb9\xc2\xee\x0cGE\xea{g\x0b\x84\xb2\x05\xdf\xf5\x80\xdf9\x02\xf04\xc3\xed\x03\xc2S\xb0\xb28\x1c\xb2\x0f\x10O3\xe5\xcd\x07C\x0e\x08\xc63\x1e\n\xb9\x0d@\xdePs\xd1\x01\x94\xe7\x02\xcb\xeb>\xf2Qw\xe0\xa31~\xd7\x1d\xf6h\x8f\xfb\xd1\xbdcu\xd0\xa3\x0b\x16H\xf7\x96\xf6\x90GK|\x90\xee\x05\xcd\x01\x8fN\x98\xa1\xe6\x8b6\x99\x87\xa1\x8ev\xacN\xcfQM\xb3\x9b\xc5W\xea\xda\xbd)\xa4eE\x86\xe3\x12\xbf\x12\xfa\xb2\"\xe7\xfem\x13\x91Y\x91\xe1(\xc7\x9bGiVdw\x8c\xe3\xcd\"7+R\x1f\xe1h{\x80c\xb6y]\xddpt\xa3\xd1\x86X\x1c\xdbh\xc1C\x7fd\xa3\x05\x03\xbb\xe3\x1a\x8d\x8c\xec\xd4\xf1\x90\x075V*y\xfd7\xe3!\x8d\xc6\xf1\xd8\x1d\xe1fs<\xe3 MY\x1c\xcc\x98i\x0eA\x02\xd3\xa1\x8c\xc6\xf5`\xb3\",\x8ec4\n\x03\xac\x8eb\xb4`c7!\x9d\x0fa\xb48jq\xd8\x83\x16-\x8fY\xecs\xc8\xa2\xe5\x11\x8bFa\xdbL`\xab\xc3\x15\x07h\xc9\xfc\xd9\x87;T\xb1[\x039\x9c>gu\xf8\\\xeb\xb8\xb9\x16\xbf\xf7g\xaf\xfcas\xe0\x0f\x9b\x1bL\x1f\xf6B\xef\xf9\xc3\xe6l0{\x83 \xf6\xfa\xe0\xf5\xfcas\x03\xa2\xf4\\0zN\x08=\x7f\xd8\xdc\xa6\xb8\xbc\x1e\xa8\xbcA0y\xee\x88<\x7f\xd8\xdc&H<\x17\x1c\xde\xc0(<;\x0c\xde\x80\x08<[\xfc]Gj\xdd\x1f6\xd7$\x0b\xc4\x9d\xad\x97\xe4\x8c\xb6\xf3\x87\xcdYa\xec\xfa \xec\xfcas\xaa\xc7\x8c\xa8:\x07L\x9d\xcdQj.x:\x7f\xd8\x9c?l\xce\x065\xe7\x0f\x9b\xe3\xb4 N\xce\x1f6\xd7\xc5\xc9\x88\x8c\xeb\x8b\x8bS\xda\x06\x7f\xd8\xdc:\xf9\xc3\xe6z\xe0\xdf\xcc\xe87W\xec\x9b\x03\xf2\xcd\x19\xf7\xe6\x86z\xf3\x87\xcd\xb9\xe1\xdc\xfcas%m\x03\xdb6\xc4\x9cs\xc0\xb5\xd9\xa3\xda\x9c\x0e\x9b\x8b\xea\x9a\xbby\xabW\xf5H\xa3 &\xb2\xfd\x10\x85\xed\x83\xe5\xea\x1a)\xe2\xd7\x825\xd4`u\x08F\x96\xe6}\x0f7\x19\xe2l\x8c}Y,\xa7\x9aC2^\xcbG\xcaC2\x10?\xe7E\xfe\x91\x17\x00i\x94\xcc\xe2\xf5\xd17N\xc8(\xd8\xdc*D\xb0\xa3'd\x14#\xdb\x8d\x9a\x96\xf1h\x0d\xa7\x9c\x8e\xe6^\xb3\xf2l\xae\xde\xcd\xe8\x01 :\xe1 \xf2\xf7aZ\xa4\xd4\x9c\xa1\x18\xc6\xce\x7fG\xf7a\xda\x08Q\xaa\xa1J\x82\x05X\xa5X\x01\xa2\x1d\xf6\xe7@\x9c\xc8T\x1c\xa3\xa7\xb8\xa8\x90?\x99E\x97\n\xef^\x05\xc0\xf27Jr\xf27J\xfeP7J\x16N\x80\x0b\xa6\xa7\xe58\x14\xe41=\x92<\xa6\xc7cz*\xf2\x98\x1e\x8f\xe9\xa9\xc8cz2\x8f\xe9\xe9&\x8f\xe9)\xc8cz<\xa6\xc7cz,\xbd$\x8f\xe9)\xc9cz\xea\xe41=\x1e\xd3\xd3A\x1e\xd3\xd3\xf9\x8c\xc7\xf4xL\x8f\x82<\xa6\xc7cz<\xa6\xc7czj4\x04\xbe\xc2cz8yL\x8f\xc7\xf4\xec.\xa6\xc7_M\xd6\xf7\xde'\x7f5\xd9\x16\x85k\x9e\xa3\xfej\xb2!\xa4\xe8\xaf&\xfb\xb1\xae&+\xe1\x97\xfb\x7f\x96\xf8;\xdd}e\xb5\x8f_\xe0\x98\nP\xa6\x84`\x16\x97iF\x89\x98u\xec\x0b\x88\xdbK\x8avO_WfX>}\x1c\x86\xa9\x0e\xb3)\x7f\xdau\xc8\xa6\x01H\x15\xb6\x90_b5pL\x0c\x0e\x8b_\x07\x05O\x19\xc1\x9b\xc6\xd4\xbd\x11>d\x80m\x1a\x1a\xd0\xc1\x173\x03`\xd3\x9f\x94\xd5I\x8e\xf0L\x0b\x10\xe6\xb0\x10LK\x00\xa6\x1b\xfc\xd2\x1e\xf9\xd5\x03\xf8\xd5\xe2\xe6q_\x92<\xeek\x98\x15\xebq_\x1e\xf7\xd5M\x1e\xf7\xc5\xc9\xe3\xbe\xd6\xc9\xe3\xbe<\xeeKE\x1e\xf7\xe5q_\x9c<\xee\xcb\xe3\xbe<\xee\xcb\xe3\xbe\x04y\xdc\x97\xc7}y\xdc\x97\xc7}\xa9\xc8\xe3\xbe<\xee\xcb\xe3\xbe<\xee\xabFC`p<\xee\x8b\x93\xc7}y\xdc\xd7\xb7\x80\xfb*\x0b\xba\xaa\xfe\x97\x0f\xb4n\xc4\x13\xc5myX \xa60M\xc9\xa21\x0e:\xe0@\x06\x01?\xf0\x8b\xac4h\x87\xfa=X\x05\xcc\x81\x9b\n\x9eBo\xde\x85vI2\xdc a\xa81\xb9U\x8csGa\x0c|\\\x06\x10\x83\x18{7\x84\x81\xff6(\x80As{\x9b!\xfb\xa4\xbd\xb5\xcd\xf0\xae\xfa\xb66\xc3\x8b\xe6[\xda\x94\x0c,*\xd8\xb5\x99\xe4R\xc5>\xef(o\xf8\x1a\xb6$_\xc3\xf65\xec\x8a|\x0d\xdb\xd7\xb0+\xf25\xec\xcc\xd7\xb0\xbb\xc9\xd7\xb0\x0b\xf25l_\xc3\xf65lK/\xc9\xd7\xb0K\xf25\xec:\xf9\x1a\xb6\xafaw\x90\xafaw>\xe3k\xd8\xbe\x86\xad _\xc3\xf65l_\xc3\xf65\xec\x1a\x0dQO\xf45lN\xbe\x86\xedk\xd8\xbb[\xc3\x1e\xa4&|I2\xac\xbb\x8c\xe8w\xf6{Y\x0d\xe6O\x8bJ\xf0,\xba\xc4\xc9\xdax\x1b\xa5`\xfe\xee\xadb\xc4;Z\x04\xe6C\xda\x8d\xfa\x95q\xfb\xbaS\xfeFs\x03\x06\x1bs\xff{\x87D\x02\xbe\xf7\xeb\x008\xc95\x9b\xcc\xef\xc3\xef\xef\xceO\xc6\xef\xce\xceO\xdf\xfd6\xfe\xf8\xdb\x87\xb3\x93W\xa7oNO^[\xbe\xf1\xdf'\x1f,\x9f<~\xf9\xe1\xfc\xf8\xf47\xcb\xa7\x7f{g\xfd\xe0\xf8\xef\xa7\xe7?\x8f\x7f?9W\xbdR\xd4\x9e\x1d\x87j\x93\xddb\xc4\x16\xde;\xfe\x18\x975\xcf\xcb\x08\x85%\xf2p\xec\xfb\xcb\xcfH\xb9_+\x97\xb3\x92\xe1\x8c\\\xe24AIP\xd7p\xca\xa7\xd5\x9fP9\xe0\xda\x0e\xfe\x84\xdc'\xcbz\x175\xe1\xcf\xda\x97\x7f\xde\xfeC\x8d\xf1J*0W\xb6r\x9a<\xef\xfac\xe3Z#\x01\xc1\xe8\xd5\xc6o\xef\x9e\xb7\xfe\xbb!\x91\x9e<\xaby\xd8\xe6^\xfd\xd2l\x87\xa70/qfl\xd1f*\xb2iXc/8&l\xb2YO\xa7c\xc1$ \x8dhq\xfb] B:}}O\xccj\xa6\xcf\xee\x15Q%\xffO\x8d\xe6Z\x1fNc0\xc2\xc6\x157\xef0~\xc2\xfa\x89e\xb3\x96t\xf7\xf7Jq\xf2\xf7J\xfdP\xf7Jq\xd7\xce\x05\x95%\xfc\xc8\xf7g\xafZ\xdc<*\xcb\xa3\xb2\x8c\x0e\xa3\x8d\xb1\x01\x8f\xca\xf2\xa8,\xe5\x93\x1e\x95\xc5\xc9\xa3\xb2\xd6\xc9\xa3\xb2<*KE\x1e\x95\xe5QY\x9c<*\xcb\xa3\xb2<*\xcb\xa3\xb2\x04yT\x96GeyT\x96Ge\xa9\xc8\xa3\xb2<*\xcb\xa3\xb2<*\xabFC d<*\x8b\x93GeyT\xd6\xee\xa2\xb2\xfc\x8dR}\xaf\xeb\xf17JmQ\xb8\xe69\xeao\x94\x1aB\x8a\xfeF\xa9\x1f\xecF)\x0e\n\xda\xff\x93C\x90tWI\xedq S\x1dH\x1bv\\\x1aE*H\xed\xe9\xeb{\x02\xd8\xc4o\x8b\xda\x93\xfc\xfe?\xf6\xde\xef9n\x1c\xc9\xf7}\xef\xbf\"\xe3\xbe\xf4N\x84-\x9f{\x1e\xfb\xe1Ft\xcb\x9e9\x8a\x98\xb5\x1d\xfe1\x1b\xbb/\n\xaa\n\x92\xb8\xaa\"\xabI\x96e\x9d\xde\xfe\xdfo \x01\x90 \x0b?\x12 \xca\xadng>\xcc\xb4Ud\x12\x00A\x10\xc4\xf7\x93\x89\x13\xc0\xf6\x07S\xf3g\xcc\xd7F\xc8\xa8/\x13'v\n\\\x15\xa5\xa0\xa2\x84mt%>\xca\x01\x05\xd8\xda\x88\xf3\x10W\x1b-W\x88\xa9M%j\xa9\x8a\xd3\x94\xdf9\xaa\xfd{\xdd\x0c\xca\x95\xfe\xf5\xd9\x0ekv\x83\xd8\xb6\xc8\xa3\x88\xad2\xcf\xa1h\x1a\xc0|\x9d\xec\xdb\xedqW\x96\x1d\x96\xad}\xbd\x15M\xeb\xe1l\xa3\x1dF\xe7\x07\x1c\xb4\x10\xb6ik\xfc\xb4\x95~\x1d\xc7\x8f\xe3\xebuW\x0d\xe2Z)\xdb\xeb\xae\xbc\xaf\xbe\xd6\xfb\xe3\xde\xccW\x95K\xf9\xa5=\x8d\xe5\xf2Z\xc1\xc2\xec\xab\xafe\n\x91r\xcd\xcc}m\xa7k\xd6\x0d\xed\x9awm\xb5\xbb\xbei\x9b\xad\xc8\xe5\xc3\xf5\x15\xa5#y\x93\x0f\xa2\xdb\xc8\xb7\xa6\xf2 \xd5\xd0\xee]_\x077\xbbv\xf3\xd0_\x1fDw\xfd$\xaa<|\x9c\xc0\xa6\x8f\xc5\x1b\xdfs\xea\xc2\xb2\x98 /<;\x87\xf0\x12W\xc3\n\xe9\x0d\xae\xdf\xd9zLch\x95\xdf\xd7\xae\xdf\x9f\xdb\xfbZ\xbdl\xc8ol\xeb+^wt\x13\xf0SMT\xcb\xf8\xb6R\xd9\x8c\xd5\xab\xea\x85N\xa8_\x0f=\xf4\xc7\x9b\xfeP!i6\xad\xd3=\x88'\xe7\xdb\xfdO\xf4f\xa7\xbc\xd8g\xefu\x13\x074\xb6X\xd1\x17\xbai\xe6\xac\xd167\x95r\xa0\x0f{\xcf\xcc\x1a\x88y\x10\x06\x1e\x84\xdd\xa7?\xb7A8$Y\x98\x87\xd4\xd7\x03\xc7\xb1\xd2\x1e7\xd4\x90*'\xd7S\xa6\xf0i\xd4\xbd\x9d\xa3\xbb9q\xa4\x8b\x1a\x9a\xc2\x06\xc2\xfc\x1f\xc4\xd3\xac\x88\xf2\xdfFI\x19K\xa6\x95xS\xa7\xa2\xa5\x8c\xbd\xe9\xfa]\xd5\xdf\xd7\xcd\x1d\xf9]\xb7x\xc1\x9d~\x87\x19\x8f\xfav\xe8\xf3g/\xaf\x8f\xfa\x90?\xd1K\xcc\xfb\x1c\xe7\xbd\x83\xea\xbbFl\xaf\xf5\xfc\xff\xb1n\xb6\xedc\xe2\xdb\xc1\x985l9'\xff\xfb\xba\xb9\xd6\x97\x93\xdf\x19E\xae\xe5!g\xb7\xedc3\xd4{q\xfd\xdfU\xbd\xbb\xdej\xa13\xebZ\xd8\x89\xaeo1P\xa4m\xae\xb7\xed\xf1f'\xb0\x1eY\xee\xa2E?\xb9\x9e\xaa\xc99.\x16W\xa0\xc6\x05 \xad\xc3\x9f\x173:\xe0g\xddn\xa7\"\x01\xaa\xa1\xed\xcc\x8bm\xfe\xea\xb3\xdc\xe8\xdf\x9f\xed\x8bO\xd6\xeayt4\xcdrd\xf7\x94~\xa8\xba\xe1\xfa^\xd4w\xf7C\xb6\x93\xf8\xbb\x16\x02\x83\xebd\xaa\x18P\x0d\x9a\x84\x1a;\x0c\xee\xdb\x82\xc0\x99\n\xc7\xdc\xca?\x0bx\xf7A\xfe\xe0uwl\xe4\xeb\xd6\x13{U7[\xf1\xf5Zea\xf96\x15\xc7+\x8ey_\x9a\xa1\xd5\x93\x1d\xb5\xe6\x087\xf5\xe0\xe9;\xd2TM\xae\x8f\xcdP\xe7\x0f*Sqe\xf3\xbd\x94\xef\xf1p\x91\xe5\x11\xfdP\xed\x0f\xd6\xad\xd8TM\xd3bl\x8fi_\xc0R9=\x0d\xed\xfe\xa6\x1f\xda\xc6\xb7|l\n=\xcfCsrL\xb4\xe7<\xde\x0b\x8c\xd3\xc2\xb8\xd1\xc1D\x1day\xef\xab\x1en\x84h\xac\xb2\xc0\xbf=\xd4;_\xc7\x90\xd6\x1eQO\x1a\x9d\xf8\xf1\xb7^\x0cn\xb0|_\xf7\xfd4\x91\xc5\x84@+\xb6\x18L\xeah\x81vR\xa52\xab\xdc\xbaT\xf0oc\x04d/\xef\xae\xc9\x93\x86\xbd\x11\xc4\x17\x11\x083\x96=\xc4\xd5\x00\xf1\xb9\x1c\xc0\xbfL\xf3ZC\xbf\xbd=\x9a\xf9\xf9\xc7\xc5\xeb\xc4\x17|\xbco\x9bzh;]\xfc\xdas\xd7v\xf5\x17\xd1\x88\xbe\x079\xa3\xfdR\x0fO\x8e54\xf3\xc0\xde\xb6f\x9aGz\x9f\x19\x0bm\x81\xb6\xe2\xdb\x88\xb7,\xe3-\xcb\xa8[\x96\x01\xe9\x19\xb43(\xaaZ\xcdx\xe6\xba\x81\xbb\x0f\xef/\xa7o\x1c=/\xef\xe5x\xdb\xb9:\x91'\xd8\x7f\xd3v\xca\x07&F\xe8T\xe5G\xf4X\x8e\xd0\xf8\xe1f\xb7\x8c\xb39\xcc\x19\x1f\xdb\xfdT\xee`\x08M'\x0e\x02C\x13\x7f\xa9\xba\xf1&Ex\xfcy\xb3`\xcf\xf4\x11\xf9\xf3h\xa0\xe0\xe7\xa3=\xbf%}D\xba\x9c\xbc\x9aM\xb6\xbd\x94\xcf\xf8G\xfe\xb2\xee\xd9\xce\x98\xa7\x8a_;\xcah\xec\x8fx\xf0\xa6\x92\x85\x1f\x1e\xef\x05\x80p\x11\x98.\xa4{T@\xe2\x07\xda\x03\x0b\xd3{\xb0\x98\xc7\xfe\xbe\xeaBu \xb9\x89\xbf\xdf\x95M\xddw\xc9\x7f\xdd\xb4\x8d\xce\x9b9\xb4\x0f\xa2\xe9\xe1^\xec0\xdd\x95WP\x06\xa868]\xd1\x9f\xe0~}\xb7}lT\xea\xac\xb6\x11\xd3=\xd1\xe9J1ao\xbb\xa9Q`P\x05\x08$\xa5\xfd\xd2\xaa\xe0\xc4\xf6Q\xad7\xb4M \x17\xe8x\xb3N\xd5Ii7\xd5\xaej|\xa4~\xc1>\xe8\x0d\xeeSF\xb8\xbd\x00\xd5^\xb6\xf4J7\xd4^r\xd9\xd6\x8d5\xf7\xc3\x0e\xa1\xb3s\xaa\xea\x98\xe5\x1cy\x03\xabF\x17.\x94\x08\xf6\xed\xbbOo~\xc2\x94Z\xeaX\x9d\x9b\xaa\xc6\xf4\xa1W\x8d\xf9j\x1cS\xb6\xf6\xc1N\xa0S\xfa\xe8 \x9a\xff\xc9\xaa\xef\x9aj8v\xa2\x1f_b\xb2\x13\xde\xb5w-\xe6\xcbq\xf5\nJ\x13M\x0f\x91=\xf7\x94W\xf8R\xedp)\xb7\xb5\x1f4\xf1u#\x0ej\xad\xd8\xe9\xae\x1e\xacd\xaa\xee\xda\xe8\x9e\xba\xcc_\xa4\x86\x0e\xd3v=\xec\xdbN@\x7f\xac\x07\xb3\xf4\xe6t\xb6\xd9\xe1z\xf3\xf8N8m\x86x#\xb8\xde-S\x8f\xd9\xedpH\xb1\xde\xbc?N\x9a\xbf\xdf\xdb\xe9s\x1ab\x00\x16Q>\xe3\x12\xe3<\x84\xd7Zy\x9c}\x1d\x14\x8d\xf9a\xa6\x80\x99\x02*S\x10R\xec\xf4\x87\xa9k\xb2\x19\x0d\xc2r9z\xe5\x9c\x1cs\x8e\x1em\xfcq[f\xba\xc0\x9b\xb9\xf0f.n\xe3\xcd\\\xd0x3\x97S\xe3\xcd\\x3\x17\x9f\xf1f.\xbc\x99\x0b\x1ao\xe6\xe2\xef\xd3\xbc\x99\x8b2\xde\xcc\x857s\xe1\xcd\\\xd0x3\x174\xde\xcc\x05\x8d7sQ\xc6\x9b\xb9\xf0f.\xbc\x99\x0bo\xe6\xb24\xea\xc6\x1a\xbc\x99\x0b\x1ao\xe6\xf2=l\xe62'f,W\xb3\x8f\xc9\xf9Q3\xc9u\xfc\xe9\x14;s\xa4H[\xc1\x9aqt\\n\xe8\x11G\xc7\x9d\xb1q\xe3q]\x1c\x1dW\xa2\x159:\xee\xaf\x14\x1d\xe7\xc6\x82\xdb\xee\x94\n~\xd5 \x9b+Rn]\x8c\xf0\x07\xfb\xb8\x91\x08\x9e\x9d=\x05\xca\x85\xd8\xdf\x99\xa3\x1fL\xfd\x9f)\xf4k\xd7\xef\xb9a\xbfv\xd9\xce\x0e]\x9e\x0f\xfc\xed\xbb\xcd\x19\xbcn\xfb\xa1\x98W\xd1\x0c]\xb0y\xc2\xf7\x7f2oO\x98\x8cp\xc3\x94Qn\x9b\xb2M'T\xff\x0dgT\x9b\x8c\xd4(\xc6\xe2\x11[\x93mZ\xf9Y\x80e\xf1\xe7\xeb\xb4-\xab$\xb1\xa1C%B\xd7\x0fDQ\xd0Z\xd2\xae|\xa0\xf9\xe6o\x1e\xd5>N\x7f\xba\xcdz3j\xbb\x0b?\xf2\xb0\xab[\x8d\xdc^\xde\x96\xe2 \x0f4\x0e\xf2\xf8\x8b\x06y\xb83\x18\xccV\x15\xf2\xa2;\xe6+\x1c\xbc[)Gy8\x7f\xe7(\x0f\xcb8\xca\x83\xa3<&\xe3(\x8f\x81\xa3<\xdc\xc6Q\x1e\xc68\xca\x83\xa3<8\xca\x838K\xe2(\x8f\xd18\xca\xc36\x8e\xf2\xe0(\x0f\x87q\x94\x87\xf3\x18\x8e\xf2\xe0(\x0f\x8fq\x94\x07Gyp\x94\x07GyXV\x82\xb8\xe7(\x0f4\x8e\xf2\xe0(\x8f\xe7\x19\xe5\xd1w\x9b\xeby\xf6U_\xb9O\x8f\x9c\x95}b\xa5\xac\xb2\x8f\x88\x86@\xc8j-\xff\xec\xa9\xc3\xb6\x1f\x88u8=2\xa9\x0e\xf3\xe4\x96\x05k\xc0\xb16\x94\xd6\xe2X\x1begn\xdcx\x94\x08\xc7\xda\x94hE\x8e\xb5\xf9Ncm\x8e\xcd\x8d\xdan\xf4\x9a\x16s\xe3\xca\xcb\xff\xd9\xf8\xf0%\xe8\x1f/r\x92\xaa\x7ft\x86A:S\xdb\x9d\xcc>\x9cq;\xc1\x12\xe8\x13\x9em\x1c\xcf\xd4\xf2\xcf,\x88\x87\x1cY\x13\xd5]\xc8\xa9\xf4\xa3\x9e\xfeD\x80z\x12\x1d\x1e\xad\xb81*\x15\x9eD\x84'_\x9dB\x82'Q\xe0\xc4\x12\x94\xf3E\xd1\xd2\x949\xc6\x94\x05\xf5\xddX\x03[\x94\xf9\xa6\xf3\xde\x94\":\n\x07\xfd\xd0vz\xc0\xc5(\x159\xbd\xdb ;\x12\xc5\xe9j\xaaC 4E\xbeZG\x8f\xd3\xa7\x89\xfctopC\xaa\x97m\xb7\x15\x9d\xd8b\x94\x0c\xf3\xbfn\x0f\xcc\xff~O\xfc\xef\xf2\x19\xa5g{_xspf\n\x0f\x0e^\x81\xb3\xc0\x1bc>\x98\xf9\xe0\xc9\x98\x0ff>x2\xe6\x83\x07\xe6\x83\xdd\xc6|\xb01\xe6\x83\x99\x0ff>\x988Kb>x4\xe6\x83mc>\x98\xf9`\x871\x1f\xec<\x86\xf9`\xe6\x83=\xc6|0\xf3\xc1\xcc\x073\x1flY V\x93\xf9`4\xe6\x83\x99\x0f~\x9e|0\x93\xa9i\xd8\x1f\x93\xa9gl\xdc8S\xc9dj\x89Vd2\xf5;%SG\xca(\x84\xa3\xfe\x8f\x03G\xfd\xd7x\xe2\x0cB\x9d\xfcA\xdd\xdc\xb6xOTj\xf8\xf1\xca\xa3\xaf\x10t\xfaQ\xd5\xc1q9}\xf4\xb3%N\xa7\x16x\x1e\xe8\x82j\xd6\x02t\xe8F6X\xd3\x1f\xfb\xeb\xc3\xf1\xc6\x0bpE\xcb\x0b\x842\x03\x01\xb9\x00J\x99\x95Q\x96\xee\x8d\xa5\xe2\x17Ag\xee5\xf8\xc0\x92Ti\x0c\x03\xe2(\x06d\xe0\x18\xe1\nT\xc3=\x19\xc9\x80RX\x06d\xa2\x19A\x87\x98\xd9\x95\x8ag\xc0zD\x03\x921\x8d\xa0+-\x1f'\xa1\x1aP\x1a\xd7\x80Dd\x03R\xb1\x8dp\xcf\x1e\x91\x0e*\xba\x01\xa5\xf1\x0d\xa0!\x1cP\x12\xe3\x80\xd5(\x07\xe4\xe1\x1cP\n\xe9\x80,\xac#\xfc8T\xf2\xb3)\x8av\xc0y\xf0\x0e8#\xe2\x01\xe7\xc1< \x11\xf5\x80<\xdc#6\x04\xd3\x90\x0f(\x8b}@\x02\xfa\x01\xe9\xf8\x07d \x84!\xf3o\x04\x0c\x04J\xa0 \x10\xc3A\x80>=#`!\x908\x8bK\xc6C\x82\xde\x10\x1d! \"\x90P\xca\x82\xa8\x08$\xe1\"P\x1a\x19\x81Ll$\xdc\xaf\xfa8:\x02\xf9\xf8\x88\xd7\x9f\xbcb\x0c!\x81b\x18 \xd0i\x08\xa0\xe0$\x90\x86\x94@L\x03\xceDK\x80\xe07 3\x15\xc2L \xabq\xe9\xb8 \x10j\x99\x81\x9d@.z\x02\xe1V-\x87\xa0\x00\x1dC\x01\"\x8a\x02d\x1c\x05h\xad\x9e\x8e\xa5@\x12\x9a\x02A<\x05J!*\x90\x8a\xa9\xc0JT\x05\x08\xcd\x9b\x80\xac\xc09\xb0\x15\xa0\x941\xf0$\x94CX\x80\x82\xb1\xc0\n\x94\xc5\xebP\x1e\x18\xc2Y\xa04\xd2\x02Q\xac\x05r\xd1\x16\xaf7\xf5\x8d\x1a\xfe\\' .\x10T\xe2!\x88\xba@\x16\xee\xe2u\x15\xc4` \x17\x85\xf1zS\xf3\xc0\xc0\xaaY9$\x06HX\x0cd\xa01\x90\x86\xc7@\x0e\"\x03\xc9\x98\x0cD\xde\xb6\x11t\x01\x12\xf0\x05*2\x039\xd8\x0c\xa4\xa23\x10\xaex\x0eB\xe3uf\x01*\xd4G\x86\x86\xd2\x04\x1f\x88\xe6.\x8c\xd3@Y\xa4\x06bX\x0d\x84\xd1\x1a\xef9\xb9\xc8\x0d\x14\xec\xbb \xe8\x0d$\xe17`!8s\xfb\xef\xaa\xde\x89mX\x9d\x9a+\xaas\xeb\x87j8\xe6\xcbd\x00\xa29\xee\xfd3\xcd\x97\xf0\xcb\xbb\xb7\xaf\xaf?~\xfa\xf9\xd3\xe7\x8f\xd7\x9f\xdf~|\xff\xe6\xf2\xea\xefWo^\x93\xcf\x90\xffJ<\xfc\xea\xed?\x88\xc7\x07\x9d\x9b\xc0\xf6\xc4*\x84\xc8!\xdb~i\x9b\xedGl}\x03i\xa8{\xa12mX\xbb\xab\xfa{\x85\xb7u\x7f\x02\xeb\x1fvv\x91\xbaQKDS\xbe\x0du\xd1\xc0\xfc\xd2}C\xe4\x15\xd4\x7fY[VZ\x1b\xca\xe2\x86\x82j\x1d\xf2\xa6m\xb6b\x9bx\x85\xab\xb7\xff0\x97\xb8z\xfb\x8f\xe05\xc6l#\xe4K\x98*\x10*\x10*\xfc\xd0>\x88&\xff\xd9\x99\xe8\x04\xb5o\xe2\nGS\x8f\x0b\xfaX-S\xef\xdb\xa6~\x10\x8e\xf4\n\x93EK+M\xa9\xcaCp\x9f]\x92\xa3Gq\xd3\xd7\xc3\xfau\xd9^l\x8e]=<]\xe3$p\x13L\xb1Dr\xe8M\xe80\x19\xc1\xcfl,y=\xfd\xc3\xd9e\xad\x83\xdd\xfduJ\x0f\x16\xce#E(X\xaf\xdbz0\xdaoee\nu\xfa{\xbco{1\x11\xb7\xee\x8b\xda\xb7\xb1\xeeg\x94\x85\xd5#\xb0jS\x15\x9c\x9e\xb6\xf5\xb8\x0c\xab\xbe\xa5\x11\x15p_uv\xff.\xe0_-6\xeb\xa1}\x14\x9d\xa1\xe4\xcd\xed\x12[\\Z\xf5v[5\xa1\xd5Up_m\x7f\xdc\x0d\xf5aW\xab\xc2\xcd\xaf}r\xc2\xec\xa9\xb3\x80X{\xf0\x9d\xdd\x99\xfeG\x05\xcb\xe2g\xce\xd8)\x96\x8e9\xbf\x1f\x1a\xe7\xf7\xfb\x8b\xe6\xf7;\xb9\xa3\x08\xb6;\x08\xf0\xbc]\xbe]\xe4:'\xef\xd3\xc6\xc9\xfb\x12\xbe:9y_\x1a-\xce\xc9\xfb\xd6\x93\xe1iT8'\xefs;\xa4\x11\xe0E\xe9o\x02\xf9]\x8c\xfa^G|g\xd0\xdeEH\xeft\xca\x9b\x93\xf7\xad\xa1\xbaS\x88\xee\x0c\x9a\x9b\x93\xf7q\xf2>N\xdeG\xa5\xb1\x8b\x92\xd89\x146'\xef\xf3\x1d\x16\xa5\xad\x13HkJj\xba\x14\xc2\x9a\x93\xf7q\xf2>\n-\xcd\xc9\xfb\xd0\xd6\x10\xd1\x9c\xbc\xcf\xe5)J=\xe7\x12\xcf\xdew\x03'\xef;5N\xde\x97A*\xc7)\xe5TB9\x81NN&\x93\xd3\xa8dN\xde\x97F\x1es\xf2\xbe\xd18y\x9f6N\xde\xc7\xc9\xfb8y\xdf\xf4\xb7\xec\xc6\x8d\xa7\x9d\xe3\xe4}%Z\x91\x93\xf7}\xf7\xc9\xfb^\xfd6\xdf\x05\xf8\xf7\xdcl~c2?{\xfbQw\x1e\xbf\xe9\x90\xd1\xdf\xa1\xaa\xc7\xf7\x9a{\x0f\xe9\x7f-\xcey\xfei\xfc\"\xb0\xd5\x97\x13|rX\xe2]\xd8\x82E\x19+ZN\xbf\xc8\xa2>-\x9f_\xb0\x94\x10-)\x10\xf8\x8bhI\x95Q\xd6\xf0\x95eQ\x18\x01\x7fI\x19\xfc\x8a\x92\x18Q\x16\xa34\x8dA\xe71\n\x11\x19yLF\xc0]b\xce\xbe\x95\\Fi2#\x91\xcd(Lg\xa4\xf1\x19\x89\x84F\xa8\x0fgd\xe9+Ji\x908\x8d\x82\xa4\xc6ZV#\x8b\xd6(\xc4k\xe4\x10\x1b\x01g\xe4\xac|g\xa06\xce\xc7m\x9c\x85\xdcHc7\x8a\xd3\x1bT~\xa3(\xc1Ag8\x92)\x8et\x8e#:\x14\xd2\xf2\xef\xadf9\xa2\xb9\xf7H\x13*\x02\xd1\x912\xebJ\xa6:B/Ar\xc6=Z\xf9\n\xb2\x1d)tGa\xbe#\x8f\xf0\x08\xf5 R\x96\xbdL\xca\xc3\xe3m e\xd8+Cz\x90q\x05\x02\xed\x91\xc4{\xc4\x12T\xe50\x1f1\x9f^\xed\xa7\x10\xf9\x91\xde\x98t\xfa#V\xb7\x0c\x02$\x93\x01 ih\xc58\x102 BcA\xa84\x08\xa1\x95\xd3\x89\x90\x14&$\x9c3\xaf\x08\x17\x92H\x86\xaccCb\x0d\x9a\xc0\x87\x9c\x81\x10\x89\x96\xce\xdb\xd3\xcbq\"\x04R$\x9f\x15\xf1\xb8\x1b\xa2\xb9\xf1\x8a\xf2\"1b$\x93\x19\xf1\xf8\x8a\xe7\xc4#p#\xe1|x\xa1lx\xa5\xe9\x91\xe2\xfc\x88\x9f )\xc9\x90P(\x92t\x8e$\x89$\xc9`IRi\x92H\x86\xbbp\xe9\xa8\xfa>\x95)\xc9\xa0J\x12\xb9\x92@us\xd8\x12\x8f+BN\xbb\x1c\xbe$\xd0\xe5\xe3\xf9\xec\n2&\xd1\\v\xe7\xe0LJ\xf5\xc5\x04\xd6$\x856qg\xaa\x0b\xe5\xa9\x1b\x1c\xd2\xa1m\xa1\x1cu\xd1o\xffP~\xba\xd4\xectI\xb9\xe9\xd22\xd3\x91\xf3\xd2ee\xa5\xa3\xe5\xa4[\x9d\x91\xee\x1b\xe4\xa3;w6\xba\xb3\xe7\xa2;C&\xbaP\x1e\xba\xc8\xf3A\xcbA\x17u\x12\xc9?7\xac\x97U\xa3\x99\xe7\xa2\x03\x01%\xeb\x1c\xc1I4\xe3\x1c\xc1\x07=\xdb\x1c\xc1Y4\xd3\\\xd4G\xc9,s\xb4\x1cs\xd1\"\xc5\xf2\xcbQ\xb2\xcb\x91/\x12J\x9b\x15\xcb+W\xa0k\xd33\xcaE/\x06\xa4\x0b\x02)\x97\\\xb4\xf9\x94\xd1\xf2\xc8%8#\xe7\x90#\xf9\xa4\xad\x98C\xf9\xecq\x19\xb9\xe3\x08\x99\xe3Hy\xe3H\x0dC\xe9\xfc\xd4\xe6+\x98/.\xd8\x02\xe4\\q\xde\x16\xc8\xca\xc13\xa6\xe0Y\x93\x7f\x87\xd3\xef\x18\xe3\xf4;\xb1\x17:\xe5\x99\xcb\x04\xbf8\xfd\x0e\x05\xf7*\x02{\xe5\xa0^\x9c~\xa7 \xe0\x95\x82w%\xc1]\x9c~g-\xd2\x95\x01t\x15\xc1\xb9\xd2a.N\xbf\xb3\x06\xe2JA\xb8\n\x03\\4|\xab \xbcEE\xb7\x864p+\x15\xdb\xe2\xf4;3K\x06\xb58\xfd\x0e \xcf\xca\x81\xb38\xfd\x8e\xef\xb0(\x90\x95\x80cQ\x92\xcb\xa4\xa0X\x9c~\x87\xd3\xefP\x80+N\xbf\x83\xb6\x06\xb1\xe2\xf4;.OQ\xa8*\x17\xa9\xf2\xbe\x1b8\xfd\xce\xa9q\xfa\x9d\x0ct*\x0eN\xa5bS \xd0T22\x95\x06Lq\xfa\x9d4D\x8a\xd3\xef\x8cv\x0e,\xaaD\x9fK@\xa2\xe8@\xd4_5\xfd\xce< \x83\xaf\xcc\xf3\xa3fe\x9e\xa0\x823\x9799\x0f\xc5}\xdd\x0fmWo\xaa\xddu\xdd\xdc\xb6\xaf~S0C(\xd1\xc4\xff\x19O\xb9jn\xdb1\xb3\x84\xac\xe7\xe4m\x99^B\xb955\x9d%\x91\x98\xfb\xfb\xc1T\xfa\x99&\x90\x90U<\x9d\xca\xcf\x8a\"\x0f\x99\xdd\xfee\xb3\xe8\xec+\xae\x96\x99\xcc[6\x88\x8as\xf7\xa2\xda\xfa\x08\xa2\xa0[\x88\xba\x96\xa6\xd7H\x03\xb2\xbc\xda\xc8\xe6\xa6\xea\xeb\x0d\xdc\xec\xda\xcd\x03\xd6\xdb\x7f|\xacL@*\x974\xbcZ\x01\x9a\x02h[\xf6(\xab\x0e\x87o{I\xca\xc2\x9b\xb2K\x93\x0d\x046\xd5a8v\xbaG\x8eIB\xa0;\xee\x84\xc2\x15\x0e]+\x9f\x9fp\x11\xab\xf1~*EL\xfecs_\xd5\xcd\x8b\xc0W\xa5\xce$\x84\xc4\xb2|\x7f\x8f'\xc1\xb6\x1a*\xd9.\xc7\x8d*\x9b\xfeTQ\xa5\n84\x0b\x98\x93\xc4\xf1\xa3g\x8b/e\xfd\x80y\x8f\xba\xaa\xe9\xd5\xfb|_m\xee\xeb\xc6\x13|\n\x80\xa5\xbb\xae\xbd\xdbM\x93nix\xefQ\x92\x8b8\x1f\x06\xf8\xbc}#HF}\xc6]\xe3\x0d\x0c\xb7\x8e\x1a\x01\x0e\x9d\xf8\xf2\x8d\x07\x80\xfb\xaa\xbf/\xfc0\x06\x03\xa9q\xb63\\\xf7b\xb8\x0e\x0d\xbb\xc6H5\x05rm\xa5\x05v%\x9b\x1d\x16DU\x96F\xe9v\xc6\xe2M\x0e)\xcd\x0e\xf4\xa6\x1f;\xda\xfb\xaa\x1bz1\xfc\x1f\xbc\x03\xa1\xae\x8b\xb4\xd6p\x1d.2\xa9\xa8\xa4\"\xea\xe2\xc9\xcb \\\xa3W\x0f\x83\x1c\xf6<\xe7\xc8\x9f\xbeQ\xf1\xa6\x08\xb4\xb7\x19\xe5=F\xcb{\xa7\x8c\xd4\xd6\xb4\x1cx\xca\x08u\x00b=@\xbb\x0bg\xc5\x9b\x8e\x8b\xd6C\x19}\xb6\xaf,\x15\x97\x8c:\x1c\x9c\xbayh\xbe\xad\x8c\x8cOF=Mxe\x0c\xa34\x96\x8aSF\x1d\x1e\xaa\xe1\x9e\x8cU\x1as)&\xc9x\xa51:f\x19uec\x98 \xb8\xa5\xb1\x95\xd8\xa5\xb14\xfc2\xeaN\xa3aI\x18\xa6\xb1T\x1c3\xeaP~Q\xa7`\x99\xc6\x92\xf0\xcc\xa8\xb7\x9c\x0c|\xcaH\xb8f\xd4\xcb\x1c\xe7\xa4`\x9b\xc6\x8a\xe1\x9b\x93\xc35\x18\xa7\xb1\x0c\x9c\xd3X\x11\xac\xd3\x18\x1d\xef\x8c\xba\x9a\xe1\x9fq\xcc\xd3\xd8\x19pOc\xe7\xc2>\x8d\x9d\x01\xff4\x96\x82\x81\x1a#\xe3\xa0QO6.\n4,\xd4X\x12\x1e\x1a\xf5\x86\xe3\x04\x15\x1356\xa4\xe1\xa2\xc6R\xb1\xd1\xa8\xc3\x94\x9c\x7f\xcaVc\xa4\xc6\"\xf9\xff\x94%L\x1d\xa3\x1f\x1d\x93\xa5\xce2\x93p\xd3\xa8\xb7\x11G%`\xa7\xc6RJ\x9c\x88\xa1\x06}\xcdg\xb3\x04\x1c\xd5X\x12\x96\x1a\xf4\x14\xcd(\xa8,\x07]\x8d\xf7ORvAe9(k\xcc\xe1@\xca4\xa8\xac\x0c\xdaj\x8cHi\x1a\x8b\xa2\xae\xc6\x12\x90Wc\x91\x14`h9\x08\xac1\x8a\xff`\x16\xa1bh\xac\xb1\xbc\xc6\xa7\xa3\xb2\xc6(5\xcf@g\x8de!\xb4\xc6\"-^\x0e\xa95FDk\x8dQ\x10[\xebX\x02jk\x8cxW\xd2\xd1[ct\x04\xd7X(\xe7\xa1\xb2\"H\xae\xb1$4\xd7\xd8\x1aD\xd7\x18\xa5\xe9\x13\x90]c\xc5\xd1]c\xa4\xf2F\x9e\xa4t\xa47\xe8\xee\xe6)\x8e\xf6\x1a\xcbA|\x83\x0e\x8d\xa6\x1e\xce\x9d\xa8,\x07\xf9\x0d:\x1c\xcc\x9a[ \x8f\xa2\xb2T\x048\xe8l\xc2\x83 \xcb\x1d\x04$\xd8X(\xbd\x9b\xb2P\x96Ee\xe9\xa8p\xd0]$\x0f\xa39\x88\x8e\x13G:\x88\x85\x1a\x07r2*K\xc5\x8b\x83\xce>\x7f\xf8\xe7\x05\x0136\x96\x8a\x1b\x1bK\xc0\x8e\x8d%\xe3\xc7\x8b\x13\x89\x18\xb2\xb1\xd8, \x9a7O\x19\x15\x15\xa5\xe2\xc9\xa3\xdfTLy<1\x05W6\x16i\x8c\x1c|9\xe8\x90\x90\xe7QY\x0e\xce\x1c}\x98\xe29\x1f\x95\xa5\xe3\xcd\xd1Q<\x92\xffQY\x00w\x0e\x9e\x97\x8bB\x1b+\xd9\xdf\x13\xd0\xe8\xd15\x19\x916\xe6\x9f \x85\xf2G*S\xeb?\xfe,\x92\xcaB\xb9$\x95\x11\xd7\x91By%\x95\xa5f\x97t\x9f\x15\xcc1\xe9?\xc5\x9fi\xd2uN\xf4\"YY'\xcd\xa9\x94\xdc\x93\xcaVg\xa0T\xf6\x0d\xf2P\xba/T:\x1b\xa5\xff*EsR\xba.S$3\xa5\xb2P~J}\x04\xe5\x99\xa3\xe5\xaaTFt\x18\xc9[\xa9l(\x8bBD3Y*#\xd5\x00HY-\x95\x91\x1dF3\\*#\xfb\xa3g\xbbTFv\x1c\xcd|\xa9\x8c\xe8\xafd\x16Le\xb4\\\x98\xca\x88\x85\xa4\x01\xa8\x94\xec\x98\xca\x12/\x1b\xe3\xa0\xe3\xf92\x95\x15~\xa4\xe8\x194\x95\x11/\x0f E\x00RNMe\xc4FWF\xcb\xaf\xa9,\xd919\xd7\xa6\xb2\x04\xff)*\x14$g\xdf\x8c\xba\xc3n\x90\x93\x83S\x19!\x13\xa72R>Ne \x8dG\x7f\xdc\xd2\x1a\xba`\x9eNe\x84V\"\xe7\xecTFh%j\x8d\xffu\xb2Y\xb1u[_\xc0\xd0\xde \xd4\xc6q\xcdf0\xbbv{\xddU{k\x87o\x7f\x17\x1a\xaf\xfa\xa3\x9a\x18\x81\x9a\xac\x98\xf5\xc6\xba\x03\xf1U=v\xd8IC\xdf\x98\x9b\xb6n\xfa\x0b\xf8\xb8\xab\xfa{\xf9\x8dk\x90\x94\x10\x15W\xc1V\xc8~>\xb1Z\xb3\xcb\xbdP<\x0c\xa2\x18m\xd7\x85\xc6\xbfM\xb5\xdb\x1cw\xe3\xca\xd8\xedq8v\xa1\x9cQ\xcdt\x83{l\xd3\xf68@=`Hcs\x07\xed\x17\x04w\xcd\xfe\xde\x17\xf0\x1f\xf7\x81\xce\x85UG~G\x9f\x82\x04\x8f\xff\xea\x88\x89\xd87w\xbe%u/\x9f\xfdm=\x18\x1e\xc1\xbf\x981U\x02\x1e\xef\xdb^L\x9b\xb8\xfb/n\xdf\xe6zN\x0cY\xbdFUi\xac\x8e\xbf\x04\xf5\xb8\xa4\xae\xd6&\x10s\xf1_}v\x7f/\xe0_-6\xf7\xa1}\x14\x1d\xe6*\xbc\x11\xe3\xad\x14[\\\"\x0fvs5\x99\xd7\xd5\xf1_u\x7f\xdc\x0d\xf5aW\xab\x82\xce\xcb0;)\xfc\xb4b$\xee<\xd4u\xcc\xb6[\xf7 w\x17\xe1\xb7\x1f\xde_.\xcb\xce\xb9w\x81s\xef\x96z\xb7\xa4\xc2\xe4\xaa\x03s\xee]\x02$^\x04\x0e\xa7C\xe1\x9c{\xd7X*\xec\x0d\x9c{\xd72\x02\xc4]\x0c\xde^\x07mg\xc0\xdaE m:\x9c\xcd\xb9wK\xc0\xd7)\xd05\x19\xb6\xe6\xdc\xbb\x9c{\x97\xc3\x95\xc5\xf6\xfd\xc4\x00\xd8\x19l\xb5\x1b\xab\x19M\xddf9k?\xaa\xc3\xd0\x89\xf9\xd2|\xb6)k\xed\xa6\xb0mV\x18u\x90~\x1aq5\x1dgVc#\xe1[\xb0\xeea\xdfn\x8f;\xc7\x8a\x84\xb7\\\x10\xd5\xb3(\x10Wd9g_}\xb5R\xc1\x85\\\x84\x12 \xc6\x983y\x15\xd1\x0c]P\x97[w +\x1f\xf3\x99\xaf$\xdb\xfcz+\x9a\xd6\x03w{[\x9c\xa0s\xab\xe7\"\xaaokE[\x1d\x8dJ\xf6\xdc\x17\x0b\xd9,dGWq)\x0b\xa1\xc0B6\x0b\xd9\xde#Y\xc8Fc!\xfb\xd4X\xc8f!\xdbg,d\xb3\x90\x8d\xc6B6\x0b\xd9,d\xb3\x90\xad\x8c\x85l\x16\xb2Y\xc8f!\xdbg,d\xb3\x90\xcdB6\x0b\xd9\x96\x95\x10\x15Y\xc8Fc!\xfb\xaf\"d'\x0b\xbem\xbb\x0b\xc8\xbdm\xbb\x9b \xbd\xf2\xf0\x99v=\xd3w\xe5\xe1\xfa\xef\xcfW\xd6\x1d+l\xdb\\\xd4\x95\x95\xb4\x13\x0c\x9c\xd4z2o \xaa\xe34\xedp\xad\xa2i\xafC\x19p\"+\x19k<\xccj\xad$\xc8\xb6\xdd\x91\x05H\xd9*\x1f\xde_\xb2\xe0\x08,8FW\xdb(\x0bV\xc0\x82#\x0b\x8e\xde#YpDc\xc1\xf1\xd4Xpd\xc1\xd1g,8\xb2\xe0\x88\xc6\x82#\x0b\x8e,8\xb2\xe0\xa8\x8c\x05G\x16\x1cYpd\xc1\xd1g,8\xb2\xe0\xc8\x82#\x0b\x8e\x96\x95\x10\x7fXpDc\xc1\xf1{\x15\x1c\x97\xf1\x86.\xd9q\xcc\x91\x1co\x1e\x84w?\x8aHy\x81Pf HV@)\xb32\xca\xd2\x87\xb1T\xf9*\xe8\xcc\xbd\x86\x11\x98\xd2\x97\x96\xb1 .eA\x86\x9c\x15\xae@5\xdc\x93%-(%kA\xa6\xb4\x15t(\x1b\x97,o\xc1z\x89\x0b\x92e\xae\xa0+\xbd\xfc\x9e$uAi\xb9\x0b\x12%/H\x95\xbd\xc2={\x94\xc4\xa8\xd2\x17\x94\x96\xbf\x80&\x81AI\x19\x0cVKa\x90'\x87A)I\x0c\xb2d\xb1\xf0\xe3`\xe5\xed\x8fT\xe1\x0c\xf2\x18\x9cQ\"\x83\xf3\xc8d\x90(\x95A\x9e\\\x16\x1b\x82i\x92\x19\x94\x95\xcd A:\x83t\xf9\x0c2$4\xc2\x90\xf97\x82\x8c\x06%\xa44\x88\xc9i@\x9f\x9e\x11d5H\x9c\xc5%\xcbkAo(\xbd\x11$6H(eA\xa9\x0d\x92\xe46(-\xb9A\xa6\xec\x16\xeeW}\\z\x83|\xf9\xcd\xebO^1&\xc1A1\x19\x0e\xe8j\x12P\xe48H\x93\xe4 \xb6\x86\x9e)\xcd\x01\xc1o`\x99\xae\x90L\x07Y\x8dK\x97\xeb\x80P\xcb\x0c\xd9\x0er\xa5;\x88l\x0b]L\xc2\x03\xba\x8c\x07D)\x0f\xc8r\x1e\xd0Z=]\xd6\x83$i\x0f\x82\xf2\x1e\x94\x92\xf8 U\xe6\x83\x95R\x1f\x10\x9a7A\xf2\x83s\xc8~@)c\xe0I('\x01\x02E\x06\x84\x15R\xa0\xd7\xa1<0$\x07BiI\x10\xa2\xb2 \xe4J\x83^o\xea\x1b5\xfc\xb9N\x90\x08!\xa8d@P*\x84,\xb9\xd0\xeb*(#B\xae\x94\xe8\xf5\xa6\xe6\x81\xa1\xdd\x04\x8bI\x8a@\x92\x15!CZ\x844y\x11r$FH\x96\x19!\xf2\xb6%\xec\xceO\x95\x7f\xa8\x92#\xe4\xc8\x8e\x90*=B\xb8\xe29\x12\xa4\xd7\x99%\xf0Q\x1f\x19\x9a\x14\x19| \x9a\xbb\xb0\x1c e%I\x88\xc9\x92\x10\x96&\xbd\xe7\xe4J\x96P\xb0\xef&H\x97\x90$_\x82%a\xce\xed\xbf\xabz'\xb6au\xea\xa6mw\xc2\xb3t\xacT\xc8l\x99\x0c@4GOrQpl\xf6\xff\xf1\xfd\x9b\xcb\xab\xbf_\xbdyM>C\xed\xd8\x9ft\xf8\xd5\xdb\x7f\x10\x8f\x0f:7\x81\x81\x89U\x98\xad\x89\xfc\x8f\x7fM\xe4\x97\xb6\xd9~\xc4\xd6\x97#\xc5\xa0\xf2\x12\xcb\x7f\xc97\xad\xbd\x17\xb1\xbfWx[\xf7'\xb0\xfe1e{n\xa0n\xd4\x12\xd1\xb4\x9b\xec\\\x86&\\D\xb5\x99\xbc\x82\xfa/\xe7\x8e\xf28,\xe9uH\x15\xf3\x99x\x85\xab\xb7\xff0\x97\xb8z\xfb\x8f\xe05\xc6\xd4\xc2\xe4K\x98*\x10*\x10*|(\x8a\x95\xf0\xec\x8c\xdb\x07_\xab\xediW8\x9az\\\xd0\xc7j\x99z\xdf6\xf5\x83p\x84\xa7N\x16-\xad4\xa5*\x0f^U\x1d\xa8\x8e\x1e\xc5M_\x87\xb7{'\xf9\xe9\xc5\xe6\xd8\xd5\xc3\xd35N\x027\xc3j\x87\xde\x80\xd8\xc9\x08~fc\xc9\xeb\xe9\x1f\xce.k\x1d\xec\xee\xafS\x0en\x95\xee=\xbb\xc3\xc5\x13O\xd3\x12~']*\xbc}\xfc\xb4\xf3\xfb\x99\x1f\x81\xe9B\xd7\xb8-\x7f\xfc\x0e\x07/ \xc4\xcbJ\x93\xd7\x8b-\xea\x10\x1aT\xd9\xbe\xfaz]\xdc\xa1\x92\xcdJ\xfa\xa5*\x0c\xd2.\xc7[\xf3A\xde\x99YR\x04\xd4\xae\xab\x9du\xfb\xb09\xc3\x92\x98\xd2$G\x1dm\xd3 \xdc\xfd=<\x99\x9c\xbd\xbb}\x07\x1d\x0f\xb2;\x07\x1f\x0d\xa07\x12\xed\x11\xa17\xe6\xd4\x90c\x1bZ\xedfm\x18 [\xa5R<\x9b\xd7Y\xa45\xf6us\xdd\x8b\xdd\xed\xf5\xb4W}\xe6`A\xa9\xdd\xbf\xac\xd1\xf2d\x04}\x01C{'P\x9f\xc4\xb5\x04\\\x07\xf0n/?\xed\x85\xef%<\xc6\xab\xfd\xd8\xcf\xb6\xd5\xd7\xd8{\xdd\xcd\xb7\x9aG\x9d\xbf\xad\x1b\xcfl\xec\xe3\xae\xea\xef\xe5\xf7\x9a\x89\x8a\xf5\x11B\x15l\x85\xec\xab\x13\xcb2\xbb\xcc\x0b\xc5\x15\xa0\xcc\xddv\x9dol2\xdb\xec\xeb\x95\x99\xdb\xe3p\xec<\xf5<6\xd3\xcd\xeb\xb1\xed\xda\xe3\x00\xf5\x80Hcs\x07\xed\x17\xd1M\xd3\x9d\xfe\x02\xfe\xe3^4\xaa\xaa\xee\nt\xc2\x1c\x8e\xf4\x83\xfb\xaa(\xbb\xdb7\xef^Xo\xc3\xba\x97\xcf\xeb\xb6\x1e\x8c\xf6[\xc1TH\xa7\xbf\xc7\xfb\xb6\x17\xd0\x1c\xf77(\x94\xba/j\xdf\xc6\xba\x9fQ\x16V\x8f\xc0\xaaMUpz\xda\xd6\xe32\xac\xfa\x96FT\xc0}\xd5\xd9\xfd\xbb\x80\x7f\xb5\xd8\xac\x87\xf6Qt\x18\x0b\x7f#\xc6\xdb%\xb6\xb8\xb4\xea\xed\xb6jB\xab\xab\xe0\xbe\xda\xfe\xb8\x1b\xea\xc3\xaeV\x85\x9b_\xfb\xe4\x84\xd9Sg1\xaf\x93\xd8\xab\xf7\x19Ql\xac\xf5\xe9q\xd2\xcd\x0f\xd5]\xddxF\x80\xc5>&\xe6\xc0y\xe2\x9b\xe9\xcf\xba\xdf\xbb\xc8We\xc1Ws$\x13\x8e\xf8:\\{\x91\xd0\xe8\x90\x1d\x05\x00\x86z\xd8\x89\xc0\xa7\xa3\xb9\xbe\xf9l\x94\xff\xa9\xe9\x99\xaa\xef\x15.\xf4\xbe\xba\x13\x1f\xc4\xafG\xd1\x0f\x17\xeaw\x8f\xb3i\xbb\x1f\xe9V6\xa1\x80}\xdb\x0f \x90AAx\xc5q*\xf6\xaf\x95\x0dp\xf4O\x1eu\x13x_Qxy\xac?\xfe\xc7\xf8\xcc\x8eC\xa3\x15\x9d\xee\x93\xbf\xed&\xda\xc8\x07\xf7Z=4\x9e\xc3\x1f\xab\x1ez1\xbc\x80z\xe8\x0d\xf4\xd5\xe3\xc8';\xe0Vq-\x8fu?\xbf\xa7\xbe\x8a w>a\xde\xd4$F'`\xb8\xb1)\xb1\xd1\xf8\x03\xe75Z\xfc\xcay\x8dhs$\xc8\x00\xc3Ug\xe5\xbcF\x04\x08\xdc\xa5K&\x03\xe09\xf07\xe75*\x08z\xa7@\xdeI\x807\xe75Z\x0bsg\x80\xdcE \xeet\x80\x9b\xf3\x1a\xad\x01\xb6S`\xed\x0cP\x9b\xf3\x1aq^#\xcekD\x05\xad\x8bB\xd69\x805\xe75\xf2\x1d\x16\x05\xa9\x13 jJ\xd6\x9e\x14x\x9a\xf3\x1aq^#\n\x08\xcdy\x8d\xd0\xd6\xc0\xce\x9c\xd7\xc8\xe5)\n4\xe7\xc2\xcc\xdew\x03\xe75:5\xcek\x94\x01!\xc7\x01\xe4T\xf88\x01r\x17\xfai\xaa\xef\x9a\xb6[,\xb9\x9b\xa7q~ \xd52ko\xec<\x88\xc4\x97G\xef\xc7x\"\xbdW\xbf\x8d\xff\x8dY\xda~\xd7Y\xec\x82\xa9\xf5\xc6\xccz\x16\xe0\xd5\xdc\xb6\xd8\xdc\xea}4\xfd\xa0S\xbf\x99\n\xbb3\xeb\xfd`j\xfd\xdc\x13\xebEP\xa8/'@#\xf6\xd29\nWz/0Z\x96\xbd\xc8Z<-\xc3^\xb0\x94\x10-)\x10\xb0\x89hI\x95Q\x96\xde\x95e\xc1\x13\x01\x7fI9\xf5\x8a\x02\x14Q\x84\xa24DA\xc7(\n\x81\x14y(E\xc0]b\x16\xbd\x958Ei\xa0\"\x11\xa9(\x0cU\xa4a\x15\x89`E\xa8\x0fg\xe4\xcd+\nW\x90\xf0\x8a\x82\x80\xc5Z\xc4\"\x0b\xb2(\x84Y\xe4\x80\x16\x01g\xe4\x95\x0bOy\xdf\x0d\x9c\x1f\xe7\xd48?N\x06$\x15G\xa4R\x01\xa9\x04<*\x19\x8eJC\xa38?N\x1a\x0c\xc5\xf9qF;\x07\x00U\xa2\xcf%\xc0Ot\xf4\x89\x92\x1fg\x9e\x8e\xc0r\xe5\x0e\xb4\xc7\xa3fZ\xe4I\xea\x81Y\x16\x9de\xe2\x85\xc5\"\xf9\x94wa\xe8\x8e\x91|\x1a%\xb3.\xbc\xb2\xb6\xec\xa1d`xm\xed\xf0c\x921\x98\x0dn\xbc\xb9\x18\xc29\x18,\x97?\x98\xc6x\xa6\xe9\x18\xa6\xc6\xbav\x94\xd1\xd8\xf0\x07\x88^1\xe15z\x01 \\\x04f`R0\xeb\x832\xc2:\x13,\x1e\xa9\x12\x1e\xc3\x1bi\x02\xcd\x0de\x0dI\xda\xd4}\xa7w\x82\x1a\x10p\x93(\xb5\x85\x18\x82`p/'27\xf2K\xd9\xeb\xad\xda`*\x18\x9d\xde\xc5?\xd4\xb6\x8f\x8d\x9a\xc6\xb7\x8d\x98\xee\x89^:E\xf1\xa0\xdd\xd4\xd5\xb8\xebUh\x81\xfc\x8b\xbd\x8dT{+=\xfa\xaf\x1b\x01!n\xaa]\xd5l\"\xeb\x8e\x05\xfa`\xd3\x06v\x1b&\xdd^\xb3s\xdbJ7\xd4^r\xd9\xd66\xb6\x85\x1db\xda\x90\xaci\xf7&U\x90\xbc\x81U\xa3\x0b\x17Z\x94~\xfb\xee\xd3\x9b\x9fpz\xaf7\x1cS\xf3\xe4\x1a\x972\xaf\x9aA\xcf \xc6\xe5\xe3>\xd8 \xf4\xf4B\xc3\x11\xfe'\xab\xbek\xaa\xe1\xd8\x89~|c\xc9Nx\xd7\xde\xb5\xf8\xee\xce]\x8c\x9d\x1e\"\x1b\xf1\x90W\xf8R\xed0MXk?h\xe2\xebF\x1cT\x1e2\xa7\xbbz\xb0\x16v\xdd\xb5\xd1=u9\x97\xd2{\xba\xe9\xb6\xeba\xdfv\x02\xfac=\x98\xb4NNg\x9b\x1d\xe62\x1b\xdf \xcbf\xe0-\xcd\xd0xK\xb3\xbf\xdc\x96f'\xf7r\x0elYs\xbb(\xbb\xe5r\xf4\xca9\xf1d\x8cK\x19c\\e^\xce\x8cq1\xc6\xe56\xc6\xb8\xd0\x18\xe3:5\xc6\xb8\x18\xe3\xf2\x19c\\\x8cq\xa11\xc6\xc5\x18\x17c\\\x8cq)c\x8c\x8b1.\xc6\xb8\x18\xe3\xf2\x19c\\\x8cq1\xc6\xc5\x18\x97e%\x90\x1a\xc6\xb8\xd0\x18\xe3b\x8c\xeb9a\\\xbc\xcfY\xee&R\xbc\xcf\xd9\x19\x1b7\xbeC\x17\xefsV\xa2\x15y\x9f\xb3\xefs\x9f3\x9b\xb8}\xf5\xdb\x1c\xa7\x0cm\x82f\xe1Od\xf0v\"\x03\xe1P\xd5n\x0ew\xf2\xfb\x83i\x9a?\x0f}\x1b\xc1\xa9\x9ck\xc6.\x88w6\x03\x98\x0eP\x0d+\xbf\xb1\x82~\x8aBX1\x927\xe8\x1a\xa2\xee!\x8d\xe1%H\x0c \xfc.\xc1[\x8c\xdd\x8d\xba\x88w\x00(L\xed\xd2\x98\xddtbW\x93\xb9\x1e\x7f\x14^7H\xeb\x06Y\xdd\"\xbd,H\xe9Fod\x9c\xd0\x8d\xba\xa0\xf5\x85\xd2lnI2\x97\xc4\xe5\xa6Q\xb9\xe1F\xc1W\x9b\x1b\xc7\x0de\\;y\x8b\x18\x9bX\xbd\xa9\x14\x0c\xeb-~eX/\xd6-'cX\x8fa=\xb71\xac\x87\xc6\xb0\xde\xa91\xac\xc7\xb0\x9e\xcf\x18\xd6cX\x0f\x8da=\x86\xf5\x18\xd6cXO\x19\xc3z\x0c\xeb1\xac\xc7\xb0\x9e\xcf\x18\xd6cX\x8fa=\x86\xf5,+\x01N1\xac\x87\xc6\xb0\x1e\xc3z\xcf\x13\xd6\x9b\x8b\xe7\xbe2\xcf\x8fr\xe1\x05\xe7/\xf37\xa3V^M\xbb\xbeM\x87\x05P\x16\x8bd\xfcl\xcet\xe0-\xa3W\x02\xdf2:\xf4r.\x8e+\xe9\xc3\x9e-\xf0\xa2\x1a \xc2\xb8\xa8\x83f=l\xdep\xdd~\x9a}\x9c\x19Z\x891 \x9150\"I\x12\xf1\"\x9a\xa1\x0b\n\x95>q\x14B\x02)\xc4\x1aHYL(\x95\xa6\xb6\x9ck\x9b\xe0N\x8c\xca\x08\x8b\x86@\xd8\x95Q\xd9\xa6\x95\xaf\x1d\xbcrx\x9f\xba\xe4\xeb\x86\xf7\xaa\x03\x1c\xcap\xa3\xbe\xebH\x828\xa0^\xbb\x8c\x1f\xca\x9a%\xb8G\xa97\xcd\xd0=\xd9;\xe6N\x0f]d\x1fH\\\xab\xec\xc4N|\xa9\x9aA~WU\xdbj\xa8\xce\xc9h\xb8N\x7f\xe5\x1a\x0f\x17\x072\xbb\xa1\x8d\xd9\x8d2\xcf\x11\xb3\x1b\xccn\xb8\x8d\xd9\x0d4f7N\x8d\xd9\x0df7|\xc6\xec\x06\xb3\x1bh\xccn0\xbb\xc1\xec\x06\xb3\x1b\xca\x98\xdd`v\x83\xd9\x0df7|\xc6\xec\x06\xb3\x1b\xccn0\xbbaY \x1d\x9d\xd9\x0d4f7\x98\xdd`vc]\x99\x8b\xb2\x1b.<#\xb4\xdb\x9f\xb5\x020\xee\xbf\xe2\x90\x0b{\x07\xa9a]`\x9e7\x83\xb8\x19\xa0\xeb2\xfa\x84g\x8ei\xc8\xe6}\x9e\x9b\x02\xc6x\n\xc2\xfa\x16\x91\xcc x\n\xd2\x19q>#BhD\x9bLY\xac\xe1\x94%p\x1a\x84\x8a\x1b\xa3\xb1\x1aI\xb4F\xc6\xd5\xe3\xc4F\x12\xb3A.A9_\x945KeE\xe9\x0d\x1a\xbf\xa1\x8cRD\x17\x00\xd7\x0fm'\x8b\xb5\xdb)h\xab\xaf\x9b\xbb\x9d\xf5\xf2\xf9\xd1\xbd\x1e9\xd5A\xfe\xbf'\x11\x8d\x9c\xb7\x8c\x1e\xa7W\xb0\x9c\"5 ;\xc4\xcb\xb6\xdb\x8aNlaW\xf7\xc3\xb2V\xbc\x91\x1d\x1aod\xf7\xd7\xd9\xc8\x8e\x80Z\x05g'A\xfaj\xe1\xcd\xa1\xe7/\xb6\xb9sN\xb3\x98\xc3\xd2\xc6\x1c\x16sX\x931\x87\xc5\x1c\xd6d\xcca\x0d\xcca\xb9\x8d9,c\xcca1\x87\xc5\x1c\x16q\x96\xc4\x1c\xd6h\xcca\xd9\xc6\x1c\x16sX\x0ec\x0e\xcby\x0csX\xccay\x8c9,\xe6\xb0\x98\xc3b\x0e\xcb\xb2\x12L\x0csXh\xcca1\x87\xf5<9,\xde\xf0.m71\xde\xf0\xee\x8c\x8d\x1b\xdf\xaa\x8d7\xbc+\xd1\x8a\xbc\xe1\xdd_h\xc3\xbb\xe3\xe1\xae\xab\xb6b\xc4O\xab\xc3aW\x8b\xed\xf5aW5\xaf~\x93\xf7>\xb4\x97\xdd\xcf\xea\xe8\xf7\xbbj\xca\xf6U\xc1\xa1\x13_\xea\xf6\xd8\xef\x9e@\xbb\x03}\x19\x90ne7\xae\x87\x1e;\x96\x13\"\xb5\xbc\xfe`*\xfdL\x91Q\x1fQ\x18\\\xe0\x0e\x93\x83\xb3z(\xfff\x18\xba\xd9\xb5\x9b\x07\xf3\xb7\xca\xec?%\x7f\xc1v}\x94SL\xd5v\xf3O\x11\x02\x1ac\xb5\xb9\x0d\xc2\x0c\x16\xd9\xa5f\xb6\xa1TDvw\xf8\xf0\xfer9Qc\xf4\x85\xd1\x97\xa8\xeeC\x91N\x80\xd1\x17F_\xbcG2\xfa\x82\xc6\xe8\xcb\xa91\xfa\xc2\xe8\x8b\xcf\x18}a\xf4\x05\x8d\xd1\x17F_\x18}a\xf4E\x19\xa3/\x8c\xbe0\xfa\xc2\xe8\x8b\xcf\x18}a\xf4\x85\xd1\x17F_,+\x81!0\xfa\x82\xc6\xe8\xcb\xf7\x80\xbe\xc8\xff\xb5\x1c\xcc>!\xf1I\xd4J\x94\xbd\x08m\x94ET\xbe\xce\x04\xba\xf8\xd4S\x9fx\xaa\xd7hP<\xf5\x8b\xa6\x97\xea\xa8\x99h\xaa\xba\x19\xfe}\xa6\x95:\xf5Q\xcb\xc1\x0f\xa6R\xcfT\x1f\x9dZ\xc2\xb6y\x86 \xd9\x0eu\xbc &\xf3\x96\x03\xa2\x12\x15\xf67g_\x8d\xae\xcbP\x166\x00>\x8a\xc1\xea\xabZ,5\xf5\xd1\x1a\x11\xfedF-\\m\xf2L\xfd\xc0>\xd9+I\xe9\xe5\xc9q\x11\xa3\xbd\x1d\x1e\xab\x0e\xb9\x11\xf9\x90\xa8\xafC\\\xb8\xa9v\xf0\xff\xb4\xcdK\xed\xd0\xf7\xccn\xda\xfd\xbej\xb6=l\x8f\xd8\x18\x81\xa2\xe1\xcb\x07~\x11wu\xf3\x0bj\xd3jz8M\xfb\xc6;Y{\xa4\xe9\xc9\x14.Q\xedz\x94>\xbc\xb5\x1dZ\xd8\x8aAl\x06x\xbc\x17\xb8(XMU6M\xb1\xa9\x1a\xb8\xaf\x9a\xedN@\xa5\xf6\x1a\xf3x\x1bo\x0c\xea\x02\xbek\x9aJ(\x97\x9dZf\x1a\xc6[)\xdfo7B4\xa8z\xd4\xa1%qS\xd0\x17#\xef\xe3_\x88\xd4\"\xc4\x04\xc5\x8c\xb5\xac{h\x8f\xc3\xcb\xf6\xf6\xe5\xb6\x1a\x84\xa2I\xac\xb6\xf6\xf8\xfbT\xcb\xc1\xb3\x83\xffc\x90\x02\xdf\x85;Qm\xee\xe5kT}\"L\xd7\xc5\x02\x8b\xaf\xf5I6\x19i\xfe\xdcF\xd1'\x8b\x96\xcb\x88\xf6\xfc\xc99\xb7t\xa1\xbb\xe0DH\x98{\xb8\xd7+\xa2\x07\xd1\xc9\xeb\x06T\x9e\x7f\x8a\xea\x8b0\xb0R=\xf4\xf0\x7fE\xd7NL\x96\xfc\xf8A\xd6\xe5\xa5\xc9K\xa2Z\xd6\xe3\xadn\xfaAT\xce\xde\x1fJKEn<\x7f\x86\x97\x10\x8b9\x99l8\x17Y\x12h7\xb7\xa3w\xfa\xcbp+?\xc4\xb1\xd3i1a\x017\x19\xab\x9b\xdb6\xb3\xee\xb1\xdc5\xb846)^\xd3\x02\xfe8*5\xb7\xad\x96\x884T\xe6S\x88\xda\xe6\xe5\xe6\xbe\xf2\x0b\xde\xfdqs\x0f8\xcf\xbd\xab\x07\x1cBk\x8daN \xfd`\x83:wu\x1c\xda}5\xd4\x9b\x80\x82j\n\xe8L&d^\x08\xd7\x9b]-\xa7\x1b\xfdP\x0d\xbeg/\xd2BW\xbf\\\xbe\x14Mu\xb3\x13[\xc0\xfa\xf5F\xe1}Y7\x8a\xcd\x93\xcdb8\xdb\xf1U\xe4\xf6\xa6\xca\x03X\x1e9\x10\xca\x87\xc6~\x95\xfb\x1a\x0f\xdf\x8a8\xba\xec\xab\x07\xb5\xa4\x80\x85\x19\xdbQI\xed\x9b\xb6\xeb\xe4\xc0\x1f)\xc5\xbf\xf5bw\xfb\xb7yanP)\x9cu\xe8v\xb39v\xfd\x0b\xef\x0dm5E\xdb6\x8d\xd8\x0cZ\xc53\x0d\xf4Et\xf5\xed\xd3467\xe21V,]\x9e\xba\xd7R\xcc\xcd\x93\xf6\"]\xcb\x81\xa4mo\x8d\xa0\xeaqa\xc0\xba\xe5+\x1f\x0b\xe6\x1d\xc7\xa6\xd6E\xb1W\xde\xf3\xb1Vm\x83J\xe6A\xfa\xeb\x07\xe8\xf7m;\xdc\xcb)\xc3\xa6k{\x9f\xd8'oec:\x8c\xa9\xb6\xfb\xe0\xe0T\x0d\xa2\xd35 0E\x84q\x02\xc8\xaf\x0f\xc8%\x8b\x02\xfeN\xc4\xa5\xc0ZkY\xba(\xca\x17\x95&\x8c\xe8\x8cQ!\xca(\x8f3\n\xb8\x93\x0dJ&\x8dV\xb3F\xa5i\xa3D\xde\xa80q\x94\xc6\x1c%RG\xa1><\xf2HT\xee\xa80yDb\x8f\n\xd2Gk\xf9\xa3,\x02\xa9\x10\x83\x94C!\x05\x9c!\x9f\x14\xe7\x90\xceB\"\x9d\x8fE:\x0b\x8d\x94\xc6#\x15'\x92\xa8LRQ*\x89\xce%%\x93I\xe9lRt(\xfc\x1b\x81N*\xc0'E\x08%\xe2\x84\x8a@)\xa5\xcc\xba\x92I\xa5\xd0K\xf0\xa6\x95_\xeeQV\x89Z\xbe\x82\xbcR\n\xb1T\x98Y\xca\xa3\x96B=\xa8\x8fsK\xd9\xe4\x92\xc7\x9b\xbcZ\x8c]*E/\x91\x11\x1c\x02\xc1\x94\xc40E\x90\x83,\x8e)\xe6\xd3\xabg\x16\xa2\x99\xd2\x1b\x93N4\xc5\xea\x96A5erM!]\xb8\x18\xdbD\xa6\x9bh|\x13\x95p\"\xb4r:\xe5\x94\xc29\x85H\xa7B\xacS\"\xed\xb4\x8ew\x8a5h\x02\xf3t\x06\xea)Z:oO/\xc7>\x11\xe8\xa7|\xfe\xc9\xe3\x0e\xd7\x08\x03\x04Ta\x06*FAerP\x1e_\xea\xcb0\xf4qL`\xa1B\xc0F\x88\x87*OD\x15g\xa2\xfcTTI.\x8aBF\xa5\xb3QItT\x06\x1f\x95JH\x05\x19\xa90\xb1BgV\xa8\x9cT\x06)\x95\xc8J\x05\xaa\x9b\xc3Ky\\Y,\x12\xed\x91\xa01S\x81.\x8f\xeaD\x80\x9a*\xcaME\xc8\xa9\xf3\xb0S\xa5\xfab\x02?\x95BPM\x0c\x952B4\xbfE\x08\xe5G\xf3\xdb\x9c\x12G\xf3s4\xbf\xf3w\x8e\xe6\xb7\x8c\xa3\xf99\x9a\x7f\xb2\xa2\xdaZ\x8a\xb2\x96\xa4\xabq4\xffZ5-CK+\xa2\xa4\xa5\xebh\x1c\xcd\xbfF?KQ\xcf\nkg4\xe5\xac\xa0nFU\xcd\x1c\x13b\x8e\xe6\x9f\x1bA'\xa3\xce\x92\x9252\x8e\xe6')c9\xba\x18G\xf3\xfb\x0e\x8bja J\x18%V=E\x05\xe3h~\x8e\xe6\xa7h]\x1c\xcd\x8f\xb6F\xdd\xe2h~\x97\xa7\xa8\x9e\x95\xabfy\xdf\x0d\x1c\xcd\x7fj\x1c\xcd\x9f\xa1Z\xc55\xabT\xc5*A\xafJV\xab\xd2\xb4*\x8e\xe6OS\xa78\x9a\x7f\xb4s(R%\xfa\\\x82\x1aE\xd7\xa2\xcc\x8b\xda\x1b\x19_\xdfl^m\xee\xab\xa6\x11\xbb),^\xfd\xbb\x0f\x84\xc4\xeb#\xa6$\xe2\xbb\x1d\xde,\x8cU2?\xca\x91\xd6\xc4:)\x07\xf3\xb0x}\x9c\xfe\xed\xd9\xc6\xc4\xcf\x9b\xc3\xb6\xe1\x0f\x10y\x02\xc1\x83c\xf8\xa0 \xcbW\xb1tS\xd0\x99\xac\x06\x08?I\x13_\x1c\x11\xcdq\xef\x9f6\xbf\x84\x8f\x9f~\xfe\xf4\xe6\xfa\xf3\xdb\xab\xb7W\x9f\xae~\xfe\xe7\xd5\x7f\xbdy}\xfd\xf9\xed\xc7\xf7o.\xaf\xfe~\xf5\xe6u\xf4Ly^\xf4\xa0O\x1f\xfe\xf3\xdd\xfb7o\xa3\xc7\x91\x0e\xba\xfc\xe7\xbb\x8f\xde\x82\x19\x8d4\xb3^\x94\xd5\x18i\x1f\xf1>\x99\xbdaj\xfd\xd8\xe0\xdd\xaa\x91\xd9\xd5\xdbw\xa8E\x8a\xdd\xae}\x0c\x81\xdex\xd7\xfb\xc0h\xa5\xaa\xfc\x02de^\x80n\xcd\x17 \xff\x17\xda\x0ef\xb5\x0ca\x8d\xd1\xdb\xfd\x13\xbc\xd6\xd3g\xaca\xdc\x93\xf4#\x1flS{\xf9\xee\xfa\xefc\x8f=\xb9\x1b\x84\x8aoo\x0f\x02W:\xef\xabf\xdb\xdfW\x0f\x1eT|\xe6XWr\xe9\xbb\xda\xc8\xf7\xe4Nl\xef\xb4\xef\xd1'\xf4\x838\x18i\x017\x93\x10\xdd\xa1\xea\x86\xa7\xf9\x80\x16\xb8\xa4\xebz\x9bV\xbes\x86\xe5\xc5.\xe0\xddA4\xd3\xc0Yu\xfe\xb6\xeaD\xb5\xc5\xd5\xfa^4*\xe6\xbf\x13\x1bQ\x7fQ\x1f\xc3\xc0c\xdan\xb8\xae\xb7\xa1\x152\xc2s\x05 \xdd\x10\xf4U\xfdc\xaen\xde\xf6Q\x7f\xfd\xa2(\x15\xf4\x87\xe3\xd4l\xf6\xe3\xbf\xf1\xfa\x802\x956\xf7n\xba]\xfejy:\x88\x89\xf7\xbf\xbeo\x0f\xc1X{\xdf\x04T\x99w\x1a\xaa\x8cP\x9fXJ\n\x80]\xdd#\x1d1\x15z\xa2\x7f\xba\xfe\x05N`\xd4c\xacu\"y\x1f\xfd]O?o=\xe25\x01\xc6\x05\xd5Z\xd3\xc4\xf8\x19:t\xd5\x17\xcf\x00\xa5U\xe4\x15\xba`\xbc\x1d\xdaC\xf5\xebqzM\xe9K\x9a\xc1\xab\xee\xa1\xba\xeb\x04n\xae\xd46:Y\x93\xf7\x13V\xda8?p\x1e\x11yD\xe95\xc2\xa7n\xbaa\xee\xfe\x18}:\xe8\xd7\x1b_\xe3\xa1KR\x86\x8d+\xe3`\xab?%\xc7)te\xf5\x8b\xe1\xde^S\xc3\xca\xfa\x82 \xcc\x1b\xce\xf9\xe3T\\\xb5\x84\xe0\x98\xd7\xcc\nm\x9e\x8a~h;\x95|c\xfc*\x1e\xa6\x1c s\x07\xd3\x0eg\x8e\x8fM}\xb7\xa6M\xd0\xcc7\xef\xe9\xa1+\x12\xae\xe9M\x1c\xfd\x84!)\xbb\x91W<\xd7\xb5\xf0\xa65\x1a7\x91\xd4\xf8\xeb\xb8\x9f$\x1c\xaa^\xcf?\xd5\xae\x93\xbf\x1eE?\\\xa8\xdf=\xceT\x8e\xc1!\xb8\xe1\xa4\xe3T\xdc5ne\x03\x1c\xfd\xf9\x9db\x03\xc9\xb8i\x9do\x17C\x0bA\xf1\x01\x95v\x13\xd9\xfb\xffy\x0e\x7f\xacp/\xbb\x17\x98\x01H\xc3N=\x1c\x1b\x93)\x0b_\xb5\x8f\xb5\xa3\xab\xc5\x9fS{\x8fPU\xab\xd9ra\xdd\xc0\xdd\x87\xf7\x97\x13\xe7\xac\xd7\xe2z9\xf5w~\x07yX:\xcc6$} w\xd8\xa9\xca\x8f+{\xf2\x03\x07\xbf_\xec\x96q6\x879\xe3c\xbb\x9f\xca\x1dT\xa8:q\x10\xa8\xfc\xffRu\xe3M\x8a\x05g\xcc\x9a\x05{\xa6o\xc1{)\xb6y\xf7\xb0S\xfdJuz{\xeb\xb9\x92\xe3\x83~\xa9]\xab^y\xf6\x87D>\xbb&y\xd2\x98\xbci\xca\xcc4aY\xadk\x1ee\n[$a\x1b\xad\xb0:%\x9b|\xed\xe8O\x03Lgh\x8a\x92\xf1\xfc\xbc\x95\xd7\xdf\xed\xd48\xf6/\xe5f\xcc \x08u\xb3\xe9\x10\x92\x92\x1f\xed\x83\xdan\xd4\x94\xe1\xbe\xde\xb9\x9e\x9f\x07!\x0e\xf2\x111Er\x1c\xa2\xc7\x1c\xa4r\xaa\xbd0\xc8+\xf4\xed\x1ey\xd8^4\xfd\xb1\x87jw\xd7v\xf5p\xbf\xef\xf1\xd3ls\xdf\xb6\x8e!\x02s@vB\xeds\xeb|t\xcd\xae\x89\x0dlD7\xa8Db\xcdV3\xa7\xe2\xe2\xee\x02\xee\xab\x0eQ\xb8\x87\xfe\x85Z\xdfz\xb9\xaf6\xf7u\xe3\xba\xda\x92\xfbs]\xf1\n\xefM/`S\xf5\xa2\x7f1\xebg\xba\xf2\x8b\xc6\xd5\xf9\xc5\xfc\xa5\xdf\xb4\xcdP7G\x84\x13]\x97\xbc\x91\xef\x9e\xa6\x1e\x14E\x8d\x9f\x8e\x9bNT\xb8Q\xaf\x90]D\x8b\xc4\xf3[|'\x9c\xe9T\xb09g\x7f\xa7D\x99\xe8)\x08)\xc4\xc4\x04\x95\xcc\x17\xe9\x8d\xc9\x11\x9b\x03J8\xa0$:\xe7\x8f\x8fo\xca8\xa0\x84\x03J\xdc\xc6\x01%h\x1cPrj\x1cP\xc2\x01%>\xe3\x80\x12\x0e(A\xe3\x80\x12\x0e(\xe1\x80\x12\x0e(Q\xc6\x01%\x1cP\xc2\x01%\x1cP\xe23\x0e(\xe1\x80\x12\x0e(\xe1\x80\x12\xcbJ\xc0\xfd\x1cP\x82\xc6\x01%\x7f\x95\x80\x92\xd0\xf6\x90\x13\xa2r\xf1 \xec\xb7`hg+\xcd|Tz\x08\xed\xc4p\xec\x1a\xc5\x07\xd8R\xf9\xc5\x08\x88\xe0R\xd0\xddb\xcd\x04\xc5o\xb3\xfb\x91\x1f\xfa\xb8P\xbb^i\xac\xbe\xbd\xbd\xed\xc5 ?\xbf\xe6\xc5\x05k){\xb1\x19V\xddh\xa1\xdd\xfa\xdb\xb4S\xe5m\xb5\x9b\xe9\xa0\x9eE\x02\xe7\xc2\x80\xa3\x11U\xf9|\xed\xb8\xf8(\xd7\x95\xc1\xa6l\x8e{\xd1\xd5\x1b\xf37\xb5?\x92\x02m\xd5\xaa\xc8\xbdhL\xc3\x1f\x9bq!j1\xfdT\x1b\xfd\xedD\xdfOM\xa8\x96n\x8e(^>\x88\xc4\xf6\x9c\xbb?s\xe3.d{G\xf3\xee\xea}Mm]<\xd6\xe8\xa6>>G-R\xda=X\xab\xac\xc7\xddB\xbcTK\x12\xf6\x9f\xaena'n\x07\xbd\xfaev\x1d4\x93F\\_\x1dw\xb4S-'g\xa0(\xfbW\x87\xc3\x1f\xd8\x8a6e4\x9d\x1fjK\xeb\x0c\xd9\xa2z\xe3\xbe\xa1;\n$\x06\xeaf[o\xaaAL\xdc\x87jA^\xd3\xf3(\x1f\xb9\x0b\xfd4\xd5wM\xbb\x0cY0O\xe3\xfc\x12\xaae\xd6\xde\xd8\x9b\xb6\xdd\x89qS\x1e_4\xe0\x8f\xc1p\xc0W\xbfM\x14\xe8\xef\xaf\x0em7\xf4\xaf~\xd3\x14\xea\xef:L/\x10,8\xc5\n6\x18&x9'\xb2]\xa1\x81?\x98\xca=\xef\xc8@/\x8ae \xd4\xaa\xef\xdbM\x8dkyz+R1\x02j\x16)}\xea&\x9f\xd3\x8a\xef1\x98\x15$\x18]\xee\x0e\x85\xd2D\xe3\xc5\"\xe7\x05\x82\x03i\xa1\x81\x84\xc0@BX\xe0\xaa\xa0@\xcazz\xd9\x80\xc0H8`\x99`\xc0\xe8\xad%\x86\x02\x9e)\x10\xf0\x9b\x87\x01\x9e5\x080?\x04\xf0\x9b\x06\x00\x06\n\x13\x0e\xfe+\x14\xfa\xb7r\xacJ\n\xb6\xa3\x86\xfcQ\x02\xfer\xc2\xfdh{\x06\xa7\x86\xfaEC\xfa\xfe\x80\x80\xbe\xa4p\xbeo\x10\xcc\x17\x0f\xe5\xcb \xe4\x0b\xbe\xf9!\xfa\xf6\x87x|\x10\xe1\xf9\x00\xf2\xfb\n\x8a\x07\xef\xd1C\xf7\xe2\xa1I\xc4\xaa\xae\x0c\xda#\x85\xec\x0d\x91\x80\xbd`\xb8^\xb4\x16\xb1\xc8\x92\x92\x81z\xc40\xbd\x84 \xbd`\x88\xde\xea\xba\x97\x0d\xce\xf3\x87\xe6\xc5\x1f\x98e\xb0\xda\xa1>\x88]\xdd\x08#\x88\xc8\xa1\xe8e\xdbl\xcc\xeb\xdc\x0cT\xae\x1es#\x86G\xf9\xd66,\x8b\xeb6\xec\xdb\xedq'\xe4\xd7)\xf4\xe2Pu\xb8\xbf\xf6\xae\xdd<\xa8\xfd\xb1M\x13\xe0DhP\x08+\xce/\xddc\xd3\xa6:\xe0\xa7r{\xeb\xba\x96\x9c\x19\xc8\x96\x1b\xc7Y|\x88\xd0\x97u\xa6\x9e8X\x07\x9e\x04\xc2um{\x9b\x04NG8\x1b\xdd=\xf6\xa2{\xd8 \xd0\x9bw\xdf\x82\xf8Z\xf7\x83h6\xcb\x13\xf0\x00o\xdc\x88v\xe6\xda~_y~\xacz\xe8\xc4\xd0\xd5\xc2\x05\xa9\xad\xf8\xac\xe3\xf0\x1b\x87q\xf8\x0d\x87\xdf\xfcy\xc2o2\xa2o\x16\xde\xec\xe0\x9b\xc5O\xbf\x88\x1e\xb15\xe9\xe2r\x9a\xc8\xbc@\x08T-\x90\xf6P\xe9QJC\x03\xa6\x05\xe5\x0c|\xe1n\x1c\xd7\x96\xd7q\x0cs\x1c\x08\xc4\x81@\x1c\x08\xa4\x8d\x03\x818\x10h2\x0e\x04\x1a8\x10\xc8m\x1c\x08d\x8c\x03\x818\x10\x88\x03\x81\x88\xb3$\x0e\x04\x1a\x8d\x03\x81l\xe3@ \x0e\x04r\x18\x07\x029\x8f\xe1@ \x0e\x04\xf2\x18\x07\x02q \x10\x07\x02q \x90e%\x8228\x10\x08\x8d\x03\x81\xbe\x87@\xa0 \xcd\xb1\xdc\xcc>$\x0d\x8e\xa1\x16\xf7\xdd)\x81\xeb\xe6\xa7\xe5\xfa\xf7\x84\xbb\x0f\xdd1\x1a\xc60F+(\"\xcaW\x16\xfc\xbc;cA\xce@\xdd\xbfRZ\xfc5j\xb2\x01\x04\xdf\xfa^\xd7\xaa\xe0%\x9e\xa88c\x03\xe6\x1b\xedQ\x0b\xfc\n\x0c\x1f\xff\xb8\x90\"'\xa6}\xea\xbc#\xdc>N\x8aFns\xc2\x8cB\xc0\xbfU*}\xd4\xb3e\xff\xc7\x1am\xaf\xed\x9b\xe0\x85Ef\x8d\xea\n\x08X6\xf0x~>-\xa2\x0b\xe6#\xe3\xa2KV\xf3\xa2\x07\xf3u\x87\xdb\xe0\xd4Y\xef\xa5\xc0\x83\xf5\x85h\x9d\x81 W\x12\xaa\x0e\xc4%/eY\xa2e\xc0\xdf\xc9\xbaU\xe03\xae\xacp\x19\x95.K\x8b\x97t\xf9\xb2\x90\x80\x99'a\x06\xdc\xc9\x06%\x8b\x98\xabe\xcc\xd2Bf\xa2\x94YX\xccL\x933\x13\x05\xcdP\x1f\x1e\xa5N\xaa\xa4YX\xd4$\xc9\x9a\x05\x85\xcd\xb5\xd2f\x96\xb8YH\xde\xcc\x118\x03\xceP\xfa\x8cK\x9cg\x119\xcf's\x9eE\xe8L\x93:\x8b\x8b\x9dT\xb9\xb3\xa8\xe0I\x97<\x93E\xcft\xd93:\x14\xfe\x8d |\x16\x90>#\xe2'qBE\x10@Sf]\xc9\"h\xe8%x\xd3~\x11\x04\x19\x94Z\xbe\x82Rh\x8a\x18ZX\x0e\xcd\x13DC=\xa8\x8fK\xa2\xd9\xa2\xa8\xc7\x9b\xbcZL\x16-%\x8c\x92\xd5=\x828\x9a$\x8fF\xd4\x8c,\x894\xe6\xd3\xbbTZH(MoL\xbaX\x1a\xab[\x86`\x9a)\x99\x86\x96\x9c\x8b\xc9\xa6d\xe1\x94&\x9dR\xc5SB+\xa7\x0b\xa8)\x12jHD-$\xa3&\n\xa9\xeb\xa4\xd4X\x83&\xc8\xa9g\x10T\xa3\xa5\xf3\xf6\xf4r\xb2*AX\xcd\x97V=\xee\xe4a!q\xb5\xb0\xbc\x1a\x13X3%V\x8f/\xf5e\x18\xfa8&\xc8\xac!-($\xb5\x96\x17[\x8b\xcb\xad~\xc1\xb5\xa4\xe4J\x11]\xd3e\xd7$\xe15CzM\x15_\x83\xf2kX\x0c\xa3\xcbaT 6C\x84M\x94a\x03\xd5\xcd\x91b=\xae,\x99\x93\xf6H\xd0\xe4\xd8@\x97o\xee\xc2\x82lQI6\"\xca\x9eG\x96-\xd5\x17\x13\xa4\xd9\x14q\xf6t\xd3@\xcaw\xab\xb5\x9f\xaa\xa5\x0eZ{\xaa\xda\x12\x96\xfa\nu\xad\xddX\x83\x9e:\xc3\xd5\x8c\xcb\xddT9\x00\xdc\x18\x07\x80\xcf-\xad\xb0\x1c\x00\xeep\xc7\x01\xe0\xe7\x0f\x00\xf7mll\x87~[\xc3\xea2\n\xfc\x83+\n\xdc\xe5\xea\x95\xc7\xa1\x15\x15>\x9e\xc6\x81\xd8\x8b_9\x10\x9b2\xe2)\xcbb\x1a8\x10\x9bB2\xb8>\xfe\x939\x86\x1c\x8a\x81\x03\xb1\x0b\xb2\x0b)\xe4B\x12\xb7\xc0\x81\xd8ki\x85\x0cV\xa1\x08\xa9\x90\xce)p \xf6\x1a>!\x85N(\xcc&\x0c$2\xa1 \x97@\xa5\x12\x1c\x0b\x0e\x1c\x88=7\x02\x87@\x9d%%3\x08\x1c\x88M\"\x0fr\xb8\x03\x0e\xc4\xf6\x1d\x16e\x0d\x12H\x03J\x98q\ne\xc0\x81\xd8\x1c\x88Ma 8\x10\x1bm\x0d=\xc0\x81\xd8.OQ^ \x97\x16\xf0\xbe\x1b8\x10\xfb\xd48\x10;\x83\n\x883\x01\xa9D@\x02\x0f\x90L\x03\xa4\xb1\x00\x1c\x88\x9d\xa6\xfes \xf6h\xe7P\xfcK\xf4\xb9\x04\xb5\x9f\xae\xf5s 6$\x16\xe4,\x81\xd8F\x94U!\xb0\xaf\xf4\x92\xd6\xab\xdf\xe6\x82\xfd\xef\xaf\x94Z9\xfd]\xfd;\xb4\x7f\xda\xff\x9c\x06o\x9b\x8by\xe2\xb7G\x81\x98\x1a\xc2] r{V$}\xe0\xb3\x0d\xde^\xdc-/\xe0\xb1l\xc9o\x14\xb7=\x04U\xbe\xe8\x02\x17e\x85\xa8\xb8\xbeGS\xf7r\xb4\xbd\xb0\x86\x97\xa5\xe0\xe1%<\x0e\xa3\xfa]\x01\xf5.S\xbb\xf3#~$\xe5n\x95n\x97\xa5\xdaA\xe5\xc5\x8a\x07\x9af\x97\xa3\xd8\x85\xd6\xd1Iz]a\xb5\x8e\xa4\xd5\x15T\xea\xa2:]!\x95n\x8dF\x97\xac\xd0\x15\xd0\xe7\n\xabs\x11m\xae\xb82w\x1e]\xae\xb8*G\xd7\xe4\xf2\x14\xb9@\xa3\xc7\xf4\xb8bj\x1cM\x8bs|\x0c\xf8\xc7\xd7\xc2:\\L\x85[\xa9\xc1\x05\x14\xb8\xe8\xf4$\xaa\xbe\xd1\xe6/e\x95\xb7\x98\xee\x16/S\x9e\xe6fFv\x87\xc3\x98\xe2VPo[\xa1\xb6\xb95\xf2\x90\xd6VVi\x0b\xebl%T6\x92L\x14Q\xd8\xc8\xfa\x9a\x7f)<][\xf3\xfbr.;\x15Q\xd5R\x1a\x8b\xaa\xa8\xc5\xdb\x84\xac\xa6ehi\xee%\xbaB:\x1aIE\x8bkh\x14\x05-\xd8\x8a\xa9\xea\x19U;\xf3)g\x05t\xb3\x04\xd5,_3\x0b(ST\xbd\xac\xb0Z\x16(\x91\xb3\xa7f\xe9dF\x13s\xf8\xf3\xa8d\x8552\xbfB\x96\xab\x8f\xe1\x8a\x80\xab\xe0nu\xac\xac6\xe6\xfb\xf0\x8b\xeab\xbe\x85{\x9f&VV\x11\xcb\xd7\xc3<\xdaW\x96\xf2\x15U\xb9\xd24.\xb2\xc2\x95\xa8o\xa5\xa8[^m\xcb_\x1a\xaa\xc6@\xd3\xb5\x12U\xad\x04M\xcbY\xb5\xb2z\x96\xef\xa1X\xa1e9\xd7)\xbcJV\x9e\x8e\x15\xd2\xac\xca+V\xeb{\x12Y\xad\xa2jU\xcbWd =i\xf0#r\x9eI\xf4\xea\xb5{Y~\xbet\xbfp\xc2\xe1\xa5\x1c^\xaa,\xad\xb0\x1c^\xeap\xc7\xe1\xa5\x1c^:\xfe\x89\xc3K9\xbc4\xbex[\\~\xa6\n\xd0y\x12\xb4\xd7\x19\x87\x97rx\xe9d9b\xb5\xd7\x19\x87\x97\x9eZ!\xe1z\x9dt\x9d!^\x17\x91\xaf\x8b\x0b\xd8Q \xfb\x0c\"\xf6\xb9d\xec3\x08\xd9)Rv\xae\x98\x1d\x1c\xc3crvAA\x9b*i'\x8a\xda\xc5e\xed\xb8\xb0\xbdZ\xda\xe6\xf0\xd2h\xc9\xf2\xa4n\xa7+\x0e/\xcd\x11\xbdc\xb2w\x19\xe1\x9b\xa8\xe6F\xc5\xef\x04\xf9;\x1a\xe6\x97(\x81sx)\x87\x97R\xc4\xf1h\xab\xa6\n\xe4t\x89\x9c\xc3K\x17VX0\xe7\xf0R\xdbr\xe5s\xa73\x0e/M\x10\xd3\xd7\xc8\xe9Nw\x1c^\xea<\x81$\xc0sxi99\x9e\xc3KW\x8b\xf5e\xfa\x1cY\xb0\xa7K\xf6\x1c^\xaa,\xaf s5\xddW\x9e\x850\xa9_\x0b~~au\xf1\xbc\xa2\xf7\xb2\xdcJ\xfa\x8c\x95[\x0b\xa4\x7fX\xb9\xcf\x11\xce\xdb\x88\xaf\xc3u/~=\x8afC\xdcX\xf9\xad\xf8:|\xd4g|\x10\x1bQ\x7f\x91\xd3\x81\xe1\xd8\xe9W\xadt \x9d\xfe\xc1\xb8\xc69Q\xa5 \x82\xd1\x93.\x983\xdc\xd6q\x15}\xd8\xb3\x0d\xb6\x9d\xb5\xe5\xb5n\x81$\x8d4Jihu\x1c\x9bxlZ\xd3\xd6'O\x1f0\x00\xc4\x00\xd0hi\x85e\x00\xc8\xe1\x8e\x01\xa0?\x18\x00\x9a\xde\x08s\xecG\xbe_E?\xa8\x89}\x94\xfaq\xbc[F\x87\x8c\xff(c\xfc\x87\xf1\x9f\xc9\x18\xffa\xfcg2\xc6\x7f\x06\xc6\x7f\xdc\xc6\xf8\x8f1\xc6\x7f\x18\xffa\xfc\x878Kb\xfcg4\xc6\x7flc\xfc\x87\xf1\x1f\x871\xfe\xe3<\x86\xf1\x1f\xc6\x7f<\xc6\xf8\x0f\xe3?\x8c\xff0\xfecY \x14\x83\xf1\x1f4\xc6\x7f\x18\xff\xf9\xde\xf0\x9fs\xe0(r\x9c\x15\xc3u\xb5\x91O\xe5Nl\xefpY\xa3\xa7\x81)\xef\xf1\xe4\x9f\x17\xe7\x8el\n.q\xeb\xe9\x8e\x18`y\x8d\xd1\xcd\x94de\xea\xc6\xea\x83=\x08\xac\xb8\xaf\xae\x8f|\xb6\xcc\xca\xb2\x15\x9e\x87>\xa7\xfb\xc3\x8a\xb5)\xe7S\x89O\xc4\xf4(\xb8'\x03S\xf7,}\xf9\x93g\xd1]\x00\xc3\xf5\xac\xb8<\x01\xf5X\x0e\x16\xea\xa10\xd7v\x97l[\x0dU\x81RQ\xd7\x0b\xc7\x17\xa5\xbc\xee\xe2\x95\xda\x8f%\x1e\xaa!{\x81O=\xb3*\xef\x07\xaa7zz\x8bKT\xf5F\x7f \x08\xf9\x1c\xea\x95\x7f\xc3\"9\xdd\xc9ID?\xb4\x9dg\xfa\xaeK\xbci\xf7\xfbz\xc0\xa7\xed\xc5\xc9\xf3\xa7V\xb6\x91\xe8:\x0c\xbd\xe7{\xf9\xb2\xda\xed\x14\xd8\xa1G\x86\xfaf\xa7\xb0\x07\xe9LN\x0em5\xce.\xbf\xd3]\xdd\x0c\xa2;t\x88\xb5\xd4N\xca\x04\xc6m!\xe4 8\x96\xff\xa4\xf8\xa8\xa1T\xa6\xf8\xcb\xbbr\xa8\xee\xea\x06\xc7K/\x086\x1d2\x0ez\x9e\x01)\x0b\xfaBB\xefA<\xad$\xa8\xbc\x1d\xd8\xc7\xae\x183\xd77\xd8\x8a\xfcO\xad\xfcT}\xaf\xe4\xad\xf7\xd5\x9d\xf8\xa0p\x96\x0b\xf5\xbb\xc7\xd9\xaf\xf2}\x8bn\x10\x07<\xc8i\xd9\xbe\xed\x07\x10\xa8\xa7\xa0\x08\xe38uh\x87*w\xc3\x0d\xc2\xb8\xa2\x9b\xc0\xbb\xd6\x8f\x97\xc7\xfa\xe3\x7fL,\xb0Q\xf2,\xd9\xc8\x07A\xd8M\xb4i\x8f\xcdp\x8d\xce|\xb3\xce\xc7\xaa\x87^\x0c/\xa0\x1ez#P\xf6pl\xd4\x13\xbfU\x9a\xcdc\xed\xe8j\xf11D\x15\xc5\x82\x91\xda\xd9\x14\xbfn\xe0\xee\xc3\xfb\xcb\xb13\x9b\xf9s\x0f\x8f\xf7\xa2s\"fn\xfd{\xd3v\xca\x07\xb2\x02\x06w2\xb3q\xf9\xe5\x82r\x90\xdd2\xce\xe60g|l\xf7S\xb9\x83\xabJ\x9d8\x08\\\xad\xff\xa5\xea\xc6\x9b\x14\xf9D\x9d7\x0b\xf6L\xdfG\xear\x81,B\x8a\xaaN\x7f\xb3k7\x0fpBm\xeb#\xf3\xc7\x07\x86B\x1d\xc6P(C\xa1\xcf\x1a\nu|y\x0d\xfd:B\xd4\xf3)\xc9p\xa82\x86C\x13>\xff\x18\x0ee8T\x1b\xc3\xa1\x0c\x872\x1c\xcap(\xc3\xa1\x0c\x872\x1cJ\x9d%1\x1c:\x1a\xc3\xa1\xb61\x1c\xcap\xa8\xc3\x18\x0eu\x1e\xc3p(\xc3\xa1\x1ec8\x94\xe1P\x86C\x19\x0e\xb5\xac\x04\xa8\xc7p(\x1a\xc3\xa1\x0c\x87~op\xa8U\x90\x11\xe9\xb9x\x10O\xbe\xf2,\x94=\xcd\xc8T\xfa\xd5\xa2\x10N\xc5S\xd8h\xc1\xc5\x08\xd4\xe0\x12\xd9\xddb- a\x01\x83C\xf9!\x99\x0bx\xd7\xa0\xc8\x8e\xdf\xd0\xed\xedm/\x06\xf9Y:/.XK\xfc\xbd\x98\xc1M\xb2\xad~\xd5\xf4\xab\xb1\xa9\xb1n\xab]\x1fm-\xcf\x82\x89\xa3\x11U\xf9|\xed\xb8X\xac\xd0\x95\xc1\xa6l\x8e{\x84\xda\xf4\xdfp\x14\xdaT\x8d\xac\x8fZ-\xba\x17\x8di\xf8c3.\xd0-\xa6\xe5W\xe8m'\xfa~jB\xb5\xa4uD\xb1\xf7A$\xb6\xe7\xdc\xfd\x99\x1b\xd7\x93\x07\xd0j\xde]\xbd\xaf\xa9\xad\x8b\xc7\x1a\x81\xd9\xc73\xa9\xc5[\xbb\x07\xab9R\xbf\xdcv\xf8\xa0\x96j\xec?]\xdd\xc2N\xdc\x0ezU\xb0\x1e\xd4k\xc2L\xa6q\xddY= \xea\"\xb2\x9do\x9e\x14&Q\x1d\x0e\x7f`+\xdaT\xd6t~\xa8-\xad3d\x8bb\x0fmq\xa0A\xc2\xa2n\xb6\xf5\xa6\x1a\xc4\xc4\xc9\xa8\x16\xc4\x03uG\xb2\xdd\xd5\xcdfw\xdc.\xa6\xca\x95\xba\xca(\x01.\xee\x18\n\xca\xd6\xca\xb4|\xa5Y@\xe2bp\xf9|\xb5\xc43\x17U\xc0\xaf\x8bN\xf4Z\xfa\xc7\xc7kz\x1e\xe5#w\xa1\x9f\xa6\xfa\xaei\xbb\xc5\xba\xbey\x1a\xe7\x97P-\xb3\xf6\xc6\xde\xb4\xedNT\xa6:\xe7\xe5\xf8\xfbW\xbf\x19\xa8\xf8\xf7\x00\xc6\xef\x04.\xb0b\xb5\x90\x83\x17b\xb5[\x0f\xbb/'g\xf7t(\xff\x07\xd3J\x7f\x0e&?\x89\xa4\xa0%o4\xcd\xe8\xd8N\xd6p28\xbf[\xae\xf3r2I\xe6\x06\x95\xa5\x15\x96\xb9A\x87;\xe6\x06\xbf\x197x\xd2\x85\xfc\x90\xdf\xc8\x0d\xda\xf1 \xfa\xd9Z\xbeg\xc1z\x8b\xe0l\xe1D\xb5\xd3\x03\xad\x1a\x88\xaa]\xdf\x9a\x89\x89|\xa7\xa9AI/b\x9a\x06\xbb\xed\xda\xfd4p\x9d\xf8\x0b\x8ccL\".~e\x12\x912\x92*c\x12\x91ID\xb71\x89\x88\xc6$\xe2\xa91\x89\xc8$\xa2\xcf\x98Dd\x12\x11\x8dID&\x11\x99Dd\x12Q\x19\x93\x88L\"2\x89\xc8$\xa2\xcf\x98Dd\x12\x91ID&\x11-+A\x851\x89\x88\xc6$\"\x93\x88\xdf/\x89h8\x14oI\xe69\xf0J\x16\xc1#\x98\x9f\x11\xbd\xb1\xb2\xcc\x05\xb0\x9b\xffYf\xcf\xbc\x9cN\xf3%\xce\xb4<#x#z;e\xa6qG\xce\x98i]Q\x1f\xf4l\xc1\x1c\xab\xe6\xcfC \xe4<\x99\x9c'\x93\xf3dr\x9eL\xce\x93\xc9y2\x1d\xc6y29O&\xe7\xc9d\xde\x95y\xd7\xef\x8cw\x0d\xe5\xc9\xb4\xbe\xb7J\xe4\xc8\xb4?\x189=\xa62\x86R\x13\xbe\xfa\x18Je(U\x1bC\xa9\x0c\xa52\x94\xcaP*C\xa9\x0c\xa52\x94J\x9d%1\x94:\x1aC\xa9\xb61\x94\xcaP\xaa\xc3\x18Ju\x1e\xc3P*C\xa9\x1ec(\x95\xa1T\x86R\x19J\xb5\xac\x04 \xc8P*\x1aC\xa9\x0c\xa5~\xbfP*\xa7\xc7L\xcb=\xc8\xe91\xcf\xd8\xb8\xf1\xc4\x8e\x9c\x1e\xb3D+rzLN\x8f9g\xf4_\xfdv\x18Sf^\x1b\xba\xb8\xff\xfd\xd5\xb1AH\xf4\x8b\xd8b2\xcd\x00\xcaou\x98\xcf\xe3I?o\x1eN9\xfe\xc9'\\\xfdry\x82\xd6\x8en\x96\xe9!\xadEW\xf3\xaeF\x92\xd7\x94\xd6 \xf9\xcf\xcb\xa2\x8fx\xb6\x84\xffX\x97\xa2\xac\x85W \x88Pe\x9a\xe6\xd9\xd5=>\x94\xd6}[&@\x1d\xcb\xbd\xf0\xc1\x94 S\x82L 2%\x98@ \xce\x07\xecSDP\xff{\x881\x82\x8b\x97\x10\xb3\x81\xca\x98\x0dd6p2f\x03\x99\x0d\x9c\x8c\xd9\xc0\x81\xd9@\xb71\x1bh\x8c\xd9@f\x03\x99\x0d$\xce\x92\x98\x0d\x1c\x8d\xd9@\xdb\x98\x0dd6\xd0a\xcc\x06:\x8fa6\x90\xd9@\x8f1\x1b\xc8l \xb3\x81\xcc\x06ZV\x82\xd3b6\x10\x8d\xd9@f\x03\xbfg6\xf0\x14 \xf1\x95\xca@\x02\x142 \xbd\x80K\x19\xc9! y\x176\xbc\xa2\xf8\xa6\xdd\xed\x04~\xca\xfe]\x1f\xb2\xe9\xbfX\xbf\xef\xeb\xe6\n\xaf\x03\xff\xaf\xfe\xeb7fq\xa6\xbfy\x90\x1cu\\2\x95\xa32\xa7D\xc1\x1c\xed}\xc9\xe1\x8c\x0eW\xf28\xba\x14\xfa Fr\x94e#9\x87yfH&q\x98\xc4a\x12\x87I\x1c\xdb\xb2I\x1c=T\x97\x80q8k\x17\x939\x9e\xdf\x99\xcc\xb1\x8c\xc9\x1c&s&c2g`2\xc7mL\xe6\x18c2\x87\xc9\x1c&s\x88\xb3$&sFc2\xc76&s\x98\xccq\x18\x939\xcec\x98\xcca2\xc7cL\xe60\x99\xc3d\x0e\x939\x96\x95\xa0$\x98\xccAc2\x87\xc9\x9c\xef\x9e\xccq\x01\"\xbe\xc2\x19d \xc0 \xa4\x17\xef;\xe3rL\xa3\xfd\x1e n\x96\x02'\xa2\x15\xb5\x90\x03\x1d\xee9\xb9=\xdd_\x12\xb7\xb1u\xd22Kg\xfa\x98g\x0b\xcbLuJ\x92*#+[\xe3\xa6\x93\xd8n\xcb\xb4@\x83\xb5s\x14\x0e\xa0\xcb\x85\x94C\xd7\xb6\xb7g(\xcf^t\x0f;\xa1\xdc\xcb'K|\xad\xfba\xb1s3\x98\xeb{q\x12\xedL\xf3\x00\xd5\xa0_2\xb2V\xca\xf3c\xd5\x8f\xdb\x99\x9e\xce_\xbd7 \xa2\xaa,S9\x0ec*\x87\xa9\x9cgB\xe5\x9ct!\xe7\xb6w#\x94co\x8c\xac\x1f+E\xf5yv\xe8\xbd\xc5=\x80\xd5\xa0\xba\xac\xa4\x1a\x83\xaa]\xdf\x9aT}\xf2\xfd\xa5\xc6#\xbd@`\xda\xea\xb6k\xf7\xcb1k\xe9\xad:\xb9q\xa7\x03\x1a3?\x8b_\x99\xf9\xa1\x0c\xa9\xca\x98\xf9a\xe6\xc7m\xcc\xfc\xa01\xf3sj\xcc\xfc0\xf3\xe33f~\x98\xf9Ac\xe6\x87\x99\x1ff~\x98\xf9Q\xc6\xcc\x0f3?\xcc\xfc0\xf3\xe33f~\x98\xf9a\xe6\x87\x99\x1f\xcbJ\xf0\x17\xcc\xfc\xa01\xf3\xc3\xcc\xcf\xf7\xcb\xfc\x18\xf8\xc4[\x929\xd8S\xb2\x08\x1e\xe5\xfc\x8c\xd8\x0d\xa6\x0b8P\x99\x1bkeA\xc9\xa3\x1f\xd4\xe9#{#\xe7\xdcZ\xbd_4\x13\x8eG7B40fR\xb1\xa4}\xf9\xc0+\x1f[\xd9\xeb\xc6%6\x07\xa4\xa3/\xa9\x0fx\xb6\x84\x8e\xa9\xa5O\"\x9co>f\xfd\xaa4i]H\xb8\xddUw8\x05\xaboA\xdf+\xc5\xbf0|c\x8c\xe1\x9b\xb9\xa5\x15\x96\xe1\x1b\x87;\x86o\x9e\x05|\xa3\x87z:y\xa3X\x9b\xe5\xc8\xa4^Dz\xf4\\\xd64@\xe0\xbc`\x04\x87\x11\x1ce\x8c\xe00\x82\xc3\x08\x0e#8\x8c\xe00\x82\x03\x8c\xe00\x823\x19#8\xa31\x82\xc3\x08\x0e#8\x90L\x910\x823\xb3\xb4\xc6c\x04gf\x8c\xe0\x00#8\x8c\xe00\x823\x99\xffS\x94\x11\x9c\xd9\xdf\x19\xc1a\x04G\x19#8\x03#8N\x97\x8c\xe0|\x83\x82\xfc\xe9\x11\x9c\xb6iTf\x9d\xfe\xd5o\xd3?~\x1f\xd9\x9c\x00cc\xed\x11r9\x9ey\xa9\xcf\x9b\x92\xdc\xe8\xad\xa4\x8c\xc3\x93l-\x15L\xd7\x1d\x1d\x8af\xebL\x7fsz!}\xd4\xb3\xc5kL\xbd\x9f\x87\xfc\x87\n\xbfw\xe1K \xddz\x1dS\x1dk\xe60\xe6\xf1\x16\x8do\x85\x96\xb0l&\x9a\xe3\xde\xffA\xf5\x12>~\xfa\xf9\xd3\x9b\xeb\xcfo\xaf\xde^}\xba\xfa\xf9\x9fW\xff\xf5\xe6\xf5\xf5\xe7\xb7\x1f\xdf\xbf\xb9\xbc\xfa\xfb\xd5\x9b\xd7\xd13\xe5y\xd1\x83>}\xf8\xcfw\xef\xdf\xbc\x8d\x1eG:\xe8\xf2\x9f\xef>z\x0bf\xd4\xf3\xcczQ\xd6\xe9\xa4}\xc4\xfbd\x90\x03\x04\xdb\xcc\xddB\xd2\x02U!}\x1b\x95\x02\xe3\xbfC\xba\x87\xf4\x81\xf7\x98\xaa\xf2\x0b\x90\x95y\x01\xba5_\x80\xfc_h;\x98\xd52\xf0\xf9\x1f\xbf\xdd?\xc1k\xfda\x855\x8c{\x92~\xe4\x83mj/g5\xff}\xec\xb1'wr\xbc\xc1%\xf7\x83\xc05\xf0\xfb\xaa\xd9\xf6\xf7\xd5\x83s\x89t\xe1XWr\xe9\xdb\xda\xd9P\xd3\x17\xc6'\xf4\x838\x18\xd1i\xd3\x1e\x9bAt\x87\xaa\x1b\x9e\x143H\xb8\xa4\xebz\x9bV\xceF\x86\xe5\xc5.\xe0\xddA4\xd6\x00\xdb\xf9\xdb\xaa\x13\xd5\x16u\x9c^4[\x9c\xfai\xfc\xcf\xec\xedG(\x9a\xea\x00\xcb\xc2!1\xb9\xd9\xb5\xbdP~7U\x03M\x0b\xbb\xb6\xb9\x13\x9d\x9c\xfc\xe1\xa2\xbd\xb92r\"xa\xef\xf5\x82\x05j\xbb\xad\x90\x03Md({\xbc\x17Z\x95\x10\xf63\x81g\x0b,\xc5\xb1\xd1\xff8\xdf\xa8\xf6\xee\xc3\xeb7\x1f\xae\xdf\xbe{\xfb\x86\xf0\xd0O'|~\x8b\xffO82|\xdc8\n%\x95\x83:\xf8\xf8\xaa\xf7\x13\xfc_\xd1\xb5/\xd5\xc7\xb3\x9c>\xeb\xe6\xf7:2w4\xd4\xff\x16\x0d\xf3\xd3\xb8!\xa5\xecl7r\x0c\xdc\xd5_\xf0\xce\xca\x8f\x80\xe6I9}\xa1?\x17\xf6\xd5\x13lkTR\x90\x8f\xc2\xd1@\x1e\x10R\xe9F\x88\xea \x1eE'd\xef\x1d\x82\xcf\xc8\xec\x96L%\xac:\xbbx\xe2k\xb5\x19\x10T\xb3J\xe1\xba\x94\xf3J\xf6\x80\x12{\x97/\xc6\x1e\xd2;\xdc;\xbb\x00\xc2\x0c\x03\x8fQ\xd3\xf3\xd0\xda)\xe1\xb9\x82\x84n\x08\xfa\xaa\xfe1W7o\xfb\xa8\xd7EP\xae\x0c\xfa\xc3qj6\xfb\xf1\xdf\xf8\xe9\xfb\xa8@\xa5\xcd\xbd\x9bn\x97\xbfZ\x9e\x0ebf\xc9\xd7\xf7\xed\xc1{\xa3B\x13Pe\xdei\xa82B}|\xf0\xe4d&\x0d\xe9Th\xeb\x9b\xad\x7f\x81\x13\x18\xf5\x18k\x05Q\xdeG\x7f\xd7\xd3\xcf[\x8f\xe0U\x80~B\x1d\xdf41.P\x0c]\xf5\xc53@i\xbe`\x85b\x1co\x87\xf6P\xc9\xefUS$}I3x\xd5=Tw\x9d\x10[8\x1e\xda\x06\xb6G\\ \x0b\xa1\x1d\xe3\xfc\xc0yD\xe4\x11\xa5\xd7\x08\x9f:\xe7G\xf6d\xf1\xa7\x83~\xbd\xf15\x1e\xba$e\xd8\xb82\x0e\xb6\xfaSr\x9cBWV\xbf\x90\x1f\xa8\xd3j+V\xb6\xf2\x0c\x9f\xe6\x0d\xe7\xfcq*\xaeNIz:\x968\x93\xf3\x92>\x9b\x97\xbe\x0e\xd5]\xdd\xe07\xb3\xe3\xab\xd3\xa4N5\x87\xf8\xb2\x01\xae\nfh\xc4\xd7\xe1\xfaAx^O\xd1\xbb\x1d\xe5+|\xdb\x94\x1a3\xd77\x1b\x93\xca\xff\xd4\xa0Q\xd5\xeb\x89\xe8\xfb\xeaN|Pib/\xd4\xef\x1eg\n\xdd\x96n\xa4[\xd9t\x02\xf6m?\x80@|\x07\x99\x1f\xc7\xa9C;T\x1e\xce\x96\xdc\x00\xf1\xd0\x08\xef\x88\x82\x97\xc7\xfa\xe3\x7fh\xf6\xbe\xbd\x1d\xc11\x8bR\xf21\xb7v\x13\xe1\xbb\xe7\x1a\x9d\xf9F\xd5\xc7J\x0e\xbc\xc3\x0b\xa8\x87\xde\xf0p=\x1c\x1b\xf5`m\xd5;\xf7\xb1vt\xb5\xf8\x03\xab\x8abm7\xdb\xceV\x94\xeb\x06\xee>\xbc\xbf\x9c\x00{\xbd\\\xdb\xcbo\x00\xe7\x07\x91\x07\xb7\xdc\xb4\x9d\xf2\x81h\xaaI#l\x16\x7f\xe5\x97\x0e~\xc8\xd8-\xe3l\x0es\xc6\xc7v?\x95;(bv\xe2 \xf0\xf9\xfe\xa5\xea\xc6\x9b\x14QD\xe6\xcd\x82=\xd3\xa7\x89,\xf5X\xde\xff\x9b\x83\x9d8\xd8\x89\x83\x9d\x12\xf6\xff>]}_n\x00\xfe\x81\xbc\x01\xb8\xc7!o\xfe\xad\x8d\xa3\x908\ni2\x8eB\xe2(\xa4\xc98\ni\xe0($\xb7q\x14\x921\x8eB\xe2($\x8eB\"\xce\x928\ni4\x8eB\xb2\x8d\xa3\x908\n\xc9a\x1c\x85\xe4<\x86\xa3\x908\n\xc9c\x1c\x85\xc4QH\x1c\x85\xc4QH\x96\x95\x88\x08\xe1($4\x8eB\xfa.\xa2\x90N\x03E\x96QH\x13D\xf6M\xe2\x7f&\x8c\xe6\xe2A<\xf9J\xb5P\xd34\x97R\xe9A\xbd\x13\xc3\xb1k\x14\xc3`\xcb\xf9\x17#\xc4\x82\x8bSw\x8bU\x1c\x14\xe85\x04\x16\x00S.\xe0]\x83\xc26~\xbd\xb6\xb7\xb7\xbd\x18\xe4\x07\xe1\xbc\xb8`-\xae\xf7bF\xb8\xca\xb6\xfaU\x07\x11\x19\x9b\x1a\xeb\xb6\xda\xf5\xd1\xd6\xf2,U8\x1aQ\x95\xcf\xd7\x8e\x8be\x02]\x19l\xca\xe6\xb8\x17]\xbd1\x7f\xc3\xe7_S\xc1j\x9d\xe6^4\xa6\xe1\x8f\xcd\xb84\xb6\x98\x10_\xa1\xb7\x9d\xe8\xfb\xa9 \xd5b\xd2\x11\x05\xd6\x07\x91\xd8\x9es\xf7gn\xdc\x05Z\xe0h\xde]\xbd\xaf\xa9\xad\x8b\xc7\x1a]\xd7\xc7\x10\xa9eS\xbb\x07\xab\xd9\x89\xfcu\xe6\xed\xa0\x16I\xec?]\xdd\xc2N\xdc\x0ez=\xae\x1e\xd4\x00m\xa6\xb1\xb8\xe2\xab\x1e\x10u\x11\xd9\xce7O\nM\xa8\x0e\x87?\xb0\x15m\x12j:?\xd4\x96\xd6\x19\xb2E\xb1\x87\xb68\xd0 \xd5P7\xdbzS\x0dbbST\x0b\xe2\x81\xba#\xd9\xeet\xfe\xcfysV\xea*\xa3\xf8\xb6\xb8c(\xe5Zk\xc2\xf2ebA\x80\x8b\xc1\xe5\xf3U\xbf\xb8[\x8b*\xe0\xbc\xbe\x13\xbd\x16\xdd\xf1\xf1\x9a\x9eG\xf9\xc8]\xe8\xa7\xa9\xbek\xdae|\x85y\x1a\xe7\x97P-\xb3\xf6\xc6\xce\xf3U\xfb\xc2!U4$\x12@S0$\xfe\xf3\xdaD@\x81'\xee\xf1\x12\x0f\xc3\x98\xa4\xd30\xc7\xab_.a\xa7@\x0e<\x0c\x17\xd7\xaay\xd8\xcf<\xa2\xd1\xf2\xf6\x83\xa9\xe1s\x8de\x8c\xf8\xf0\xa0,\x95\xd90\x0b\xdd^\x87T^\xa3(\xab\xc1\xf908\x1f\xc6dE\x19\x8c\x14\xfe\"\x89\xbd\xe0|\x18k9\x8b\x0c\xc6\xa2\x08_\x91\xceVp>\x8c5,E\nG\x91\xc1Pp>\x0c\xce\x87\xc1\xf90\xa8\x0cDQ\xfe!\x87}\xe0|\x18\xbe\xc3\xa2\x8cC\x02\xdf@\xc9\xf6\x90\xc25p>\x0c\xce\x87Aa\x148\x1f\x06\xda\x1a\x0e\x81\xf3a\xb8\xf1\xe7\xcf>\xf1c4\xfd\xc4\xab\xdf\xc6\xcc\x06\xbf\x07\xf6\xe0\xb6\x99\xac1\x15Es\x92\x85\"\x96y\xe2\x07S\xb9?A\xe2 /\xaf5#\xd1\x96\xdb\xa5\xa9n\xadH\x95@\x86\x07o\xd9 \xaa\xe2\x0fA\x0d?\xba|MY\xff-\xae\xde\xd3\xb4\xfb\x1c\xe5>\xac\xd0g\xe9\xf3x \x8f\xc3\xa8:_@\x9b\xcfT\xe6\xbdz&M\x97_\xa5\xcagi\xf2Py\xc3\x0c\x06\x9a\"\x9f\xa3\xc7\x87T2\x92\x1a_X\x8b')\xf1\x05u\xf8\xa8\n_H\x83_\xa3\xc0'\xeb\xef\x05\xd4\xf7\xc2\xda{Dy/\xae\xbb\x9fGu/\xae\xb9\xd3\x15\xf7<\xbd=\xd0\xe81\xb5\xbd\x98\xd6NS\xda\x1d\x9f\xfa\xfe\xf1\xb5\xb0\xca\x1e\xd3\xd8W*\xec\x01}=:=\x89j\xeb\xb4\xf9KY]=\xa6\xaa\xc7\xcb\x94\xa7\xa8\x07\xa2IbzzA5}\x85\x96\xee&`BJzY\x1d=\xac\xa2\x97\xd0\xd0I\"pD?'\xab\xe7~\xa1+]9\xf7\xfbr.*\x17\xd1\xccS\x1a\x8b\xaa\x97\xc7\xdb\x84\xac\x95g(\xe5\xee\x05\xf8B*9I#\x8f+\xe4\x14}<\xd8\x8a\xa9\xda8U\x19\xf7\xe9\xe2\x05T\xf1\x04M<_\x11\x0f\xe8\xceT5\xbc\xb0\x16\x1e(\x91\xb3\xa7f\xa9\xe0f\xf1\xd2\xe1\xcf\xa3\x81\x17V\xc0\xfd\xfaw\xae\xfa\x8d+\x02\xae\x82\xbb\xb5\xef\xb2\xca\xb7\xef\xc3/\xaaz\xfbd9\x9f\xe2]V\xef\xceW\xbb=\xcav\x96\xae\x1d\xd5\xb0\xd3\x14l\xb2~\x9d\xa8^\xa7h\xd7^\xe5\xda_\x1a\xaa\x82HS\xad\x135\xeb\x04\xc5\xdaY\xb5\xb2j\xb5\xef\xa1X\xa1T;\xd7)\xbc:u\x9eJ\x1dR\xa4\xcb\xeb\xd1\xeb{\x12Y\x8b\xa6*\xd1\xcbW\xe4\xa1k\xdb\xdb\xa4H\xbb\xc8\xc7\xa3^\xbd\xdf\x8b\xeea'\x94{9h\x89\xafu?\x88f\xb3<\x01\x0f\xf0n\xc5\xaf\x9d\xe9\xbd\xd4\xabA\xdfmy#\x95\xe7\xc7\xaa\x87N\x0c]-\\\xeb+C\xfe\xf2\xbf^x\xb9V\x9a\xd7\xca\xaf\xecxL\xf3`\xed4?\xeav&\x83uo\xad\xc2\xb4\xae/=SX_3B\xf9\xc2\xea[\"\xdf3\xfa5}W\x7f\x11\x8d)\xca\xc9\xe9\xf1o\xf7\xb7\xf2\xfar\n1\x9clw\xbf\xd8t\xbf\x1a\x94pk\xcap_;\x13i>\x08q\x90\xc3\x8a)\x92\xe3\x10\xadh\xe2g\xba|]\xe8\x15l\xe8\xdb=.o\xf7\xa2\xe9\x8f=T\xbb\xbb\xb6\xab\x87\xfb}\x0f\xfb\xea 6\xf7m\xeb\x88\xe8F\xf5\x15\xb7\xe0\xf7\xadk\xeb\x02\xd7\x0dlD\x87\xca\xca\xa6m\xb6z)Y\\\xdc]\xc0}\xd5\xe1\xea\xd7C\xffB)_/\xf7\xd5\xe6\xben\\W[.\xf29\x07}\xbc7\xbd\x80M\xd5\x8b\xfe\xc5\xac\x9f\xe9\xca/\x1a\xb7o\xb1\x03\xfaK/'\x08us\xc4uH\xd7%o\x04\xec\xdb\xa6\x1e\x94\x18\xb2{R\xde+D\x1e\x84\xec\"z\x06:\xbf\xc5w\xc2\x99\xc1\x16\x9bs\xf6\xf7\xb40\xee\"Q\xdc\x81 n\xf8E\xf4\xb8Fc=\xafx\xdf^\xe0\x92\xa6\x92\xd6\xe5\x8bT\x0dW\xee\xc9\xb6n\xd8\xdb\xae=Y\xab \x8ew\x1cB\xce!\xe4\x1cB\xae\x8dC\xc89\x84|\xb2\x1c\xc9\xda\xeb\x8cC\xc8O\xad\x90|\xbdN\xc0\xce\x90\xb0\x8b\x88\xd8\xc5e\xec\xa8\x90}\x06)\xfb\\b\xf6\x19\xe4\xec\x14A;W\xd2\x0e\x8e\xe11Q\xbb\xa0\xacM\x15\xb6\x13\xa5\xed\xe2\xe2v\\\xde^-ps\x08y\xb4dy\x82\xb7\xd3\x15\x87\x90\xe7H\xdf1\xf1\xbb\x8c\xfcM\xd4t\xa3\x12x\x82\x08\x1e\x0d\xe5M\x14\xc29\x84\x9cC\xc8)\x12y\xb4USer\xbaP\xce!\xe4\x0b+,\x9bs\x08\xb9m\xb9\"\xba\xd3\x19\x87\x90'H\xeakDu\xa7;\x0e!w\x9e@\x92\xe19\x84\xbc\x9c(\xcf!\xe4\xab%\xfb2}\x8e,\xdb\xd3\x85{Z\x08\xf9\x18ehy\x99}G\xce\xa2\xea\xd4\x02\xbf;\x80\xaen~Z\xae\x81O\xc1\x92Cw\x8c\x04\xc1\xa6\x85J\x1a\xa55-Z\xd2\x8a\x84\xbf4\x1e<\xfbxOZ\xae;\x9e\xb0R\xf2\xf5\xe8/\x14g9\xbf\x94>\xe4\xf9\xc6Z.\xda\xf6y\xc8[!Ra\x8a\x00]\xdc4u\x92\xef\x9cp\x81\x80P( r\x1f\xca\x08\xcbO@\xc3*\x94\x15!A\x94Qx\x10eg\xacD*!\xa2\x8c\xb2\xe8\x05+h\x11\xafC\xa4H(\xcc\x88\xb2,r\xc4\xebM\x11%Q~DY\x12E\xe2\xf52\xa3KH,\x89\xb2\x1c\xa2\xc4\xeb\x0c;8\x91+Q\x96E\x97x\xbd\xdd\x89\xa1w0&\xc6\x16cg\xdapu\xdeqj\x88\xf0\x01@\x7f\xb8\xa9\x8f\x1cd\xb0\x02Ag\xee\x05\xe3\xc0\xfaIif\x00\xe2\xdc\x00d\xb0\x03\xe1\n\x98\xd0w\n?\x00\xa5\x18\x02\xc8\xe4\x08\x82\x0ee\xe3\x92Y\x02X\xcf\x13@2S\x10t5\x85\xc7\xd3\xb9\x02(\xcd\x16@\"_\x00\xa9\x8cA\xb8g\x8f\xfc\x01\x953\x80\xd2\xac\x01\xd0x\x03(\xc9\x1c\xc0j\xee\x00\xf2\xd8\x03(\xc5\x1f@\x16\x83\x10~\x1c\xaa^l\xe3\x1c\x02\x9c\x87E\x803\xf2\x08p\x1e&\x01\x12\xb9\x04\xc8c\x13bC0\x8dO\x80\xb2\x8c\x02$p\n\x90\xce*@\x06\xaf@\x182\xffF`\x16\xa0\x04\xb7\x001v\x01\xe8\xd33\x02\xc3\x00\x89\xb3\xb8d\x96!\xe8\x0d9\x07\x02\xcf\x00 \xa5,\xc85@\x12\xdb\x00\xa5\xf9\x06\xc8d\x1c\xc2\xfd\xaa\x8fs\x0e\x90\xcf:x\xfd\xc9+\xc6x\x07(\xc6<\x00]\xba\x07\n\xfb\x00i\xfc\x03\xc4\x04\xcbL\x0e\x02\x08~\x03\x9aH!&\x02\xb2\x1a\x97\xceF\x00\xa1\x96\x19\x8c\x04\xe4r\x12\x10\xd9\xb4\xb8\x18/\x01tf\x02\x88\xdc\x04\x90\xd9 \xa0\xb5z:C\x01I\x1c\x05\x04Y\n(\xc5S@*S\x01+\xb9\n 4o\x02_\x01\xe7`,\x80R\xc6\xc0\x93P\x8e\xb7\x00\ns\x01+\xb8\x0b\xafCy`\x88\xbd\x80\xd2\xfc\x05D\x19\x0c\xc8\xe50\xbc\xde\xd47j\xf8s\x9d\xc0c@P6\x86 \x97\x01Yl\x86\xd7U\x90\xd9\x80\\n\xc3\xeb-\x90$AY9~\x03H\x0c\x07dp\x1c\x90\xc6r@\x0e\xcf\x01\xc9L\x07D\xde\xb6\x05\xb7Y\xa7\xf2\x1d\x90\xc3x@*\xe7\x01\xe1\x8a\xe7\xf0\x1e^g\x16MA}dh\xdcG\xf0\x81h\xee\xc2\xec\x07\x94\xe5? \xc6\x80@\x98\x03\xf1\x9e\x93\xcb\x87@\xc1\xbe\x9b\xc0\x89@\x12+\x02\x8eT\x0f@\xfc\xfe\x9e\x03\x0e\xffQ\x0f\xf7ZXU\x9b\x9a#\x81\xb4P\xe6\xcdH\xearg\x0d\xa2&\xd0\x19\xef\xd6\xc9\xc1n\x19\xadw\xe6~\xf6\xe6|\x9e\xb2\x90;@\x07u\x01+Q\xb9\xe1.N\x0f\xcd\xcf\x1ca6Z\xf0\xc7\xf5\x92\xd20x\x97{t-\xfe\xc7\xb7x2n\xf4\xa0C\xde\xc7=\x1f\xe0P\xf5\xbdZ\x1c\xb6\xf7rW\xbf{\x9ca\xbett\xe3\xdf\x14\xc2q*fv_\xd9\x00\xf1<\x14\xde\xf5\xa31\xb1\xbco\xa7\x01+\xf0\xcb\xb7\xd8a7\x91\x9d\xa3\xdfs\xf8c\x85\xf9\xe6_@=\xf4f\x89\xbf\x87c\xa3\x9e\x99\xadZ\xc5|\xac\x1d]-\xfeH\xcev\xbc\xaf\xcd\xca\xf7\xf8\x0e\xa9\x1b\xb8\xfb\xf0\xfer\xcam\xa0G\xbe\x1e\x1e\xefE\xe7\xccS\xe1V\x986m\xa7|\xe0 o\xd2\xab\x9bW\x94|\x17\xe1\xc2\xa8\xdd2\xce\xe60g|l\xf7S\xb9\x83Cf'\x0e\x02\x1f\xf0_\xaan\xbcI\xb1I\xc9\xacY\xb0g\xfa\xa6$\xf3\x91\xd0\xf7\x00\xa9\xdc\x11s\xbakE\xfe\x88\x05\x91&\xef\x90\xfa\xe4\x18\x0f\xe7\xac\x0d\x8b_9k\x03e8P\x96Jb\x98\xe5k\xafC*\x85Q\x94\xc0\xe0\xac\x0d\x9c\xb5a\xb2\xa2dE\nU\x91DTp\xd6\x86\xb5\xf4D\x069Q\x84\x9aH'&8k\xc3\x1aB\"\x85\x8e\xc8 #8k\x03gm\xe0\xac\x0dT\xb2\xa1(\xd5\x90C4p\xd6\x06\xdfaQr!\x81Z\xa0\xe4$H\xa1\x158k\x03gm\xa0\x90\x07\x9c\xb5\x01m\x0d]\xc0Y\x1b\\\x9e\xa2\x04A.=\xe0}7p\xd6\x86S\xe3\xac\x0d\x19\xaa\x7f\\\xf1OU\xfb\x13\x94\xfed\x95?M\xe1\xe7\xac\x0di*>gm\x18\x8d\xb36hK\xcd\xdap\x8eD\x0d\xceM\xc9\xe7\xfb\xcf\xcf\x8a\xb2\x90\xcd\xb4\xd0lvW\xb77o\xb7\xf5\xb9\x8bQ\x95\xc6\x05\xa9\xbb\xc5\xca\x0d\xca\xccr\xf0 +\xcdi\xdb\xe5\x9f{\x87\xfc\xd9\xf2\x84\xa3\x11U\xf9|\xed\xb8X\x1a\x98\xb6;\xaf\xa09\xeeEWo\xcc\xdf\xf0\x99\xdfT\x8d\xac\x8fZ\x9b\xd1\x1b\x9e+\x85y\\\x0e[\xee\x88\x8f\xdev\xa2\xef\xa7&T\x0bHG\x8c\x96~\x10\x89\xed9w\x7f\xe6\xc6\x8do\x9c\xbf\xab\xf75\xb5u\xf1X\xa3\xe1\xfa\xa0\x00\xb5Tj\xf7\xe0a\xdc<\x7f\xe6\xed\xa0\x16F\xec?]\xdd\xc2N\xdc\x0ez\x0d\xae\x1e\xd4\xa0l\xa6\xae\xb8\xca\xab\x1e\x10u\x11\xd9\xce7O*/Au8\xfc\x81\xadh\xa3\x0d\xd3\xf9\xa1\xb6\\\xec\xdd\x8f=\xb4\xc5\x81\x067\xc0\xa8\x9bm\xbd\xa9\x061%\xafP-\x88\x07\xea\x8ed\xbb\xd3{$\xcc\x9b\xb3RW\x19\x05\xb7\xc5\x1dC\xf9\xd6Z\x07\x96/\x10\x8b\xeaY\x0c.\x9f\xaf\xfa\xc5\xddZT\x01\xe7\xf2\x9d\xe8\xb5\xd0\x8e\x8f\xd7\xf4<\xcaG\xeeB?M\xf5]\xd3v\x8bUt\xf34\xce/\xa1Zf\xed\x8d\xbdi\xdb\x9d\x18\xb9\xaab9u^\xe9\x15\xfdW\xbf\xcd\xd3\x9d\xfc\xfeJ\x11Z\xd3\xdf\xd5\xbfCIx\xfe?_\x12\x9e)\x07\x0f!\xfb\x8e\x9d\x96h\xf4WY\x1a\xadN\xd0\xa3\x112Bb\x1e}\xc4\x9f%/\x8f\x97Vs.!\xc7\x1at\xb0r\xc6\x8cs\x06P\xcf\xa3\xc3\x9d\xdd\xb4\xa7\xe5\xc8G\xe1\x86 \x0e\x11U\x02(K\xe9\xc5A\x08\x1a\x06\x91\x03A\x84a\x87,\xd4\x01/\xe1q\x18\x05\x1d\n`\x0e\x99\x90\x83W\x1a\xa6!\x0e\xab\x00\x87,\xbc\x01*o\x1c\xc6@\x83\x1br\xd0\x86\x90\xe0H\x02\x1b\nc\x0d$\xa8\xa1 \xd2\x10\x05\x1a\n\xe1\x0ck`\x86d\x94\xa1\x00\xc8P\x18c\x88@\x0c\xc5\x11\x86\xf3\x00\x0c\xc5\xf1\x05:\xbc\x90\x87.\x04\x1a=\x06.\x14\xc3\x16h\xd0\x82c\xd5\xc4?\xbe\x16\x06\x16b\xb8\xc2JX!\x80*D\xa7'QL\x816\x7f)\x8b(\xc4\x00\x85x\x99\xf2\xe0\x84@\xb8M\x0cM(\x08&\xac\xc0\x12\xdc0Q\x08J(\x8b$\x84\x81\x84\x128\x02IO\x8f\xa0\x08d\x10!\xb8\xd3}\"\x84\xe0\xf7\xe5\\\x9f/\x82\x1f\xa44\x16\x15=\x88\xb7 \x19;\xc8\x80\x0e\xdcZF!\xe0\x80\x84\x1b\xc4a\x03\nj\x10l\xc5T\xcc\x80\n\x19\xf8\x10\x83\x02\x80A\x02^\x90\x0f\x17\x04$|*XP\x18+\x08\x94\xc8\xd9S\xb3\x80\x02\xb3\x02\xeb\xf0\xe7\xc1 \n\xc3\x04~\x94 \x17$\xc0\x15\x01W\xc1\xdd\x18AY\x88\xc0\xf7\xe1\x17\x05\x08|\n\xa7\x0f\x1e(\x8b\x0e\xe4\x83\x03\x1eH \x0b\x11\x88\xe2\x00i0\x00\x19\x05H\x04\x01R0\x00/\x04\xb0~\xe7{\x1a\x00\x90(\xff'\x88\xff\xce\xaa\x95\x15\xfe}\x0f\xc5\n\xd1\xdf\xb9N\xe1\x95\xfc\xf3\x04\xff\x90\xb8_^\xda_\xdf\x93\xc8\xb2>U\xd4_\xbe\"qk\xee\xa4\xa0\xc5\xc8\xc7\xa3^\xfa\xdf\x8b\xeeagv\xfenoA|\xad\xfbA4\x9b\xe5 x\x807\xd9\xbbv\xa6c\xef\xab!\xbc\xa7\xb8\xa7\x16Y\xcb\xff\x94\\\xfa\xe4\xaf\xecx8\xf8\xb0*s>%g~\xe1\xc2\xa6f\xc8\x8f\x7f\xbb\xe7f\xc5W\xd9\xef\x1d\x0e \xf9\xf0\xb32\xe1\xeb\x8c\xf7\x0ew\xb1\x1c\xf8I\xd9\xef\xe7Y\xee\x1d\xde(y\xefs2\xdec\x07\xf4\x97>\x96\xeb>+\xcb=f\xb3w8;\xcdo\xef\x93\x16\x1d\x11\xf0\xa5\x02\xe0\x97\xb5\xe4pxe\x1c\x0e\xcf\xe1\xf0\x93q8<\x87\xc3O\x96\xa3\x19{\x9dq8\xfc\xa9\x15\xd2\x8f\xd7)\xc8\x19\x1ar\x11\x15\xb9\xb8\x8e\x1cU\x92\xcf\xa0%\x9fKM>\x83\x9e\x9c\xa2(\xe7j\xca\xc11<\xa6*\x17\xd4\x95\xa9\xcar\xa2\xb6\\\\]\x8e\xeb\xcb\xab\x15f\x0e\x87\x8f\x96,Oqv\xba\xe2p\xf8\x1c\xed9\xa6>\x97\xd1\x9f\x89\xa2jT\x83NP\xa1\xa3a\xc9\x89J4\x87\xc3s82\xf5P\xf7\x1bq\xec\xe9\xc5\xae\xad\x9e\x8c\xd3T\xf4uo\x95\xcb\xb3N\xa5\xd65=\xed\x13\xbe+\xca\xbc\xf7FY\xe4\x0e)\x8b\xdd'eS\xc3\x86\x8e\"\xb5\x9f>P)\xe1J-\x1cU}'\xdc\xb8\xb4[Q\x0d\xc7.\\^J\xeb)\x8b\xb4\xa1\xb2\xd4j\x05\x96\x04\x95\xed\xea\x1e\xf5$S\x97q\xf1|'\xa6\xcd\x0c\xc6\xd5\xbe\x883B\xabQ\x96\x05\x95i\xb2A\xa9>zZ\xaco\x8f\x9c\x9ei\xe9\x06\x17i\x876\xe0\xa7\x11w\xedP\xab=Q\xd4\xc0\xfaEtu\xafv* \x9c7\xcc\x81\xb0\xfb\xaa\xd9\xf6\xf7\xd5\x83s\xb1\x13H-\xae\xaf\x8d\xb5\xd2sh\xbd\xaf\xd0P\xefjU\x11\xd8\xcaw\xe3\xben\x04\x88f\xd3\xca \x8c\x7f\xad]\x89>\xb86\xda\xa3\x06\xe8=rs_5\x8d\xd8\xe1R\xa1\x9ck\x8b\xa1\xd7WU\xfb>\xcdF \xa7\x17\xcf>\x19\xca\xe6C\x91R(4\xe1\xaa\xbfN\xac\x96\x14\xcd\xd6\xdb\x86\xf1\xee-\x9a\xe3\xde\xff\x94\xbc\x84\x8f\x9f~\xfe\xf4\xe6\xfa\xf3\xdb\xab\xb7W\x9f\xae~\xfe\xe7\xd5\x7f\xbdy}\xfd\xf9\xed\xc7\xf7o.\xaf\xfe~\xf5\xe6u\xf4Ly^\xf4\xa0O\x1f\xfe\xf3\xdd\xfb7o\xa3\xc7\x05\x0e2\xd0KV\x81q\x0b\x1d\xd1\x1d\xaanx\xa2\xdd\x13\xeb\x045\x8f\xc8{U\x90\xc6r\xcaH\x1e}\x01\x02\xad;@\xd2\x98\x02K\x18D\xbf6[\xa3\xaf/[)\xe8\xebt\xee\x89\xf4^hP\x01B\x0b\xcf\xc8\xd8?\xbc\x81f\xcf\xad\xab\xa1\xc2\xb5uv5\x8f2cL1\x90\x94\x86:t\xe2\xb6\xfe\x1al!5*o\xda\xfd\xbe\x1e\x90\x93\x19\x99Zy\xea4<%\xdcy\xc2#\x00\xc4\xc7\x00\xd4&~\xd7\xf1\x8a\x00\xfdvC\\;\xa4\xf4\x88+\xd3\x13\xb6\xd3\xe7\xc5\xf86\xb6\xbf\xb3\xf4M\x1d\x97\x8b\x83N\x0f\xcdG\xa2\xcdV\x8c\xee{\x1d\xbd\xc3QM\xd8Gv\x1a\x1b\xb7\x82\xd4,\xe7\xb8+$\x1c\xaa^\xcfA\xd4\xde\x91\xbf\x1eE?\\\xa8\xdf=\xce0 \x03\xdd\xf8\xb7\x8dt\x9c\x8a{\xbf\xadl\x808`\xed\x1d\xe8\xc6\xad\xe7|{\x11Zd\x85\x8f\x13\xb4\x9b\xc8\xde\xc5\xcfs\xf8c\x85;\xd2\xbd\x80z\xe8\x0d\xc3\xd3\xc3\xb1Q\x8f\xd3Va\x0d\x8f\xb5\xa3\xab\xc5\x9fT{\xa7OU\xab\xd9*X\xdd\xc0\xdd\x87\xf7\x97\x13\xb4\xab\x97\x98zx\xbc\x17\x9d\x13\xc0v#b\x9b\xb6S>\x10\xa7\xebT\xe5\xc7\x05\xab\xfbJm\xd67k\x19gs\x983>\xb6\xfb\xa9\xdcA\xe1\xa5\x13\x07\x81o\x8f_\xaan\xbcI\x91U\xdcy\xb3`\xcf\xf4\xad\xe3.5\xa4H\x1c\x85\xea\xf47\xbbv\xf3p\x86]\xdb8d\xc2a\x1c2\xc1!\x13\x7ft\xc8D\xb8#\x99\xe4\xad\x05B&\xe6\xc1\x12\xcb\x9a*\xe1u\x9a\xd7p\xf0\xc4I\x03q\xf0D|\xd0S\xc6\xc1\x13\x1c<\xe16\x0e\x9e@\xe3\xe0\x89S\xe3\xe0 \x0e\x9e\xf0\x19\x07Op\xf0\x04\x1a\x07Op\xf0\x04\x07Op\xf0\x842\x0e\x9e\xe0\xe0 \x0e\x9e\xe0\xe0 \x9fq\xf0\x04\x07Op\xf0\x04\x07OXV\x02d\xe7\xe0 4\x0e\x9e\xf8\x1e\x82'&n\xe5\xe2A\xd8o\xc1\xd9\xc7\xe4\x82\x0b\xd1 H\xa5\x87\xd0N\x0c\xc7\xaeQ\xd0\x80\xad\x9f_\x8c\xd4\x08.\x05\xdd-\xd6LP\x11W i\x88\x04\xb9\x80w\x0d*\xc9\xf8\xad\xd8\xde\xde\xf6b\x90\x9f_\xf3\xe2\x82\xb5\x94\xdd\x8bY\xaa\xc5\x9c\x1c\xa0'\x8b\x04\xce\x85\x01G#\xaa\xf2\xf9\xdaq\xf1Q\xae+\x83M\xd9\x1c\xf7\xa2\xab7\xe6o\xf8\xb4\x19\xd0\x17WE\xeeEc\x1a\xfe\xd8\x8c\x0bQ\x8b\xe9\xe7\x15z\xdb\x89\xbe\x9f\x9aP-\xdd\x1cQ\xd1|\x10\x89\xed9w\x7f\xe6\xc6\xf5\xe4\x9c\xb5\x9awW\xefkj\xeb\xe2\xb1FI\xf5A;j\x91\xd2\xee\xc1Zw]\xee@\x7fPK\x12\xf6\x9f\xaena'n\x07\xbd\xfaU\x0fj84\x93F\\_U\x0f\x88\xba\x88l\xe7\x9b'\xc5\x02T\x87\xc3\x1f\xd8\x8a6z4\x9d\x1fjK\xeb\x0c\xd9\xa2\xd8C[\x0c\x81B\x8c\xa0n\xb6\xf5F\xc1\xf2\x1a\x06Q-\x88\x07\xea\x8ed\xbb\xab\x9b\xcd\xee\xb8]L +u\x95Q\xeaZ\xdc1\x14N\xad\x15\xd8[\x84\xd2G\xean1\xb8|\xbe\xea\x17wkQ\x05\x9cEw\xa2\xd7\x127>^\xd3\xf3(\x1f\xb9\x0b\xfd4\xd5w\x0d\xa6\x1c\xb6\x9d\x99\xa7q~ \xd52ko\xec\xda\xfc\xc3\xb3\xc4\xc36\x13\x1cJ>l\xc1\x9acTY\xb3\x08(\xb3\x19|O \xd9\x0f\xa6\x8a\xcf>\x8e\xcc\x0bjY\xf5=\x85\xdd\xc5H\xb0\x05\xa2V\xbc\xe5\x82\xa8\x8e\x1f\x01\xdc\xa3+\xd8\x85\xa2\xbb\xc2\xb1]C$6)\x18\x93\x14l\x1ce1\xd4\x01\xc8\x11]\xd1\xf6\xd2\x87\xe5FsQb\xb9b\xad\xa5\x8c\x10\xc7\x95V\x99\x08\xb0_0\x82+\xdaN\x14]\x02Rc\xb7\xa6\x08-\xaf\xbf!!rkH\x8a\xdb\x8a\xb5q\xe1\x98-j\xc4\xd6\xdax\xad@\xb4V\x99X\xadh\x17\x0e\xc5i\xe5Fi\x11b\xb4h\x11Z\xd1\xf8\xac\x15\xd1Y\xf1\xd8\xac\xb3DfEG\xe3\xf8XL\x88\xc9\x8a\xdevH\x18%JFce\xc4b\xc5Z\x94\x1c\x87u\xe6FY\x13\x81\x95\x11\x7fE\x8d\xbe\x8a\x85,\x95\x8f\xbc\x8avq usH\x88\xb9\"\xddZ\x88\xe1\x06\xf1{?\xcd\xbb\xdf4[+\xc8\n\xc7e9\x93V\xb5\x96w_\xe7\x810w\xc8\xf9J\x97_\xac\x0d\xd2\x1e\xae;\xdd\x8bC\xd5\xe1x\xdf\x88\x0bx\xfb\xee\xd3\x1bD\xeb;\xa1\xc0+\xfc\x9e\xba\x11\xf0\xbfu9\\\x17\x98\x95\x17\xbf\xbdE?T7\xbb\xbawR+\xb3h\xb1\x1b1<\n\xd1\xc0\xf0\xd8\xaa\xaa\x9c\x10 \x7f\x81\xed4:1t\xb5p\xc1R+\xbe)86\xc4a\x1c\x1b\xc2\xb1!\x7f\xaa\xd8\x90\x12\xa1!\x81\xc8\x10\xf8E\xf4\xe3\x9e\\\xf3\xc9\xc3\x0b\xa4\x12\xd5\x8a\x9d|\xbb\xa8\xe1\xca\xadb\x9b\xdd\xbc\xba\xf6\x04\xa6\n\x8ew\x1c\x99\xc2\x91)\x1c\x99\xa2\x8d#S82e2\x8eL\x1982\xc5m\x1c\x99b\x8c#S82\x85#S\x88\xb3$\x8eL\x19\x8d#Sl\xe3\xc8\x14\x8eLq\x18G\xa68\x8f\xe1\xc8\x14\x8eL\xf1\x18G\xa6pd\nG\xa6pd\x8ae%\xa2\x0482\x05\x8d#S\xbe\x87\xc8\x94\x19FcyZpP\xa3R\xa5\xe9M'\x8dx\xa6\x8d\x05J\xe4\xec\xa9Y\xb2\x93\x91\x98\x1c\xfe<\xa2Sa\xc9\xc9/8\xe5\xcaM\xb8\"\xe0*\xb8[l*+5\xf9>\xfc\xa22\x93o\x1d\xdc'1\x95\x15\x98\xf2\xe5%\x8f\x94\x94%$EE\xa34\xc9\x88,\x18%\xcaE)b\x91W*\xf2\x97\x86\xbadO\x93\x89\x12E\xa2\x04\x89\xc8Y\xb5\xb2\xf2\x90\xef\xa1X!\x0d9\xd7)\xbc\xc2P\x9e,\x14\x92\x80\xca\x0b@\xeb{\x12Y\xfc\xa1J?\xcbWd \xddg\xf0#r\x9e\x99\xf3\xea\xb5{Y~\xbet\xbfp\xc2\xe1\x9a\x1c\xae\xa9,\xad\xb0\x1c\xae\xe9p\xc7\xe1\x9a\xcf'\\s&\xc3\x16\x89\xd8\x9c\x0b\xc9\x1c\xb4\xa9\x8c\x8369hs2\x0e\xda\xe4\xa0\xcd\xc9r4k\xaf3\x0e\xda<\xb5B\xfa\xf5:\x05;C\xc3.\xa2b\x17\xd7\xb1\xa3J\xf6\x19\xb4\xecs\xa9\xd9g\xd0\xb3S\x14\xed\\M;8\x86\xc7T\xed\x82\xba6U\xd9N\xd4\xb6\x8b\xab\xdbq}{\xb5\xc2\xcdA\x9b\xd1\x92\xe5)\xdeNW\x1c\xb4\x99\xa3}\xc7\xd4\xef2\xfa7Q\xd4\x8dj\xe0 *x4x.Q \xe7\xa0M\x0e\xda\xa4h\xe4\xd1VM\xd5\xc9\xe9J9\x07m.\xac\xb0n\xceA\x9b\xb6\xe5\xaa\xe8Ng\x1c\xb4\x99\xa0\xa9\xafQ\xd5\x9d\xee8h\xd3y\x02I\x87\xe7\xa0\xcdr\xaa<\x07m\xae\xd6\xec\xcb\xf49\xb2nOW\xee\xff=\xf7\xb9=6w\xf5\xcdN\xc0\xd0>\x88\xc6= \xb9\xa9zq\x8d7\xaaT\xbbH\x8f\xf3\xde\xac\x8b\xd3\x89]\xf5$\xb6\x84bQ\xdayz\x0e\xe6s\xae\xd3\xcb\xcb\xd6\xbb\xba\xfc\xf8\xbf\xff\xd7xe\xa7C,M?N\xfd\x9d\xc7\xe8\xf65\xf7\xa2n\xd4\xb0!\xaf\"\xefy$\xbe\xc5~\x1e\xa0\x13\xc3\xb1kN\x9f\xfd^=\xfc\xb6\xef\xa5\xdbCu\xa7\x0f>\xbdg\xb3\x0bN\x07\xcez\xa3\xf5g\xfd\x15\xe1\x1a\x04\x94\x05\x1f\xb8\xf0\xe3\xd6\x88\xaf\xc3\xf5\x83xZI\x10y\xd7y}\xec\x861s}\x83i\xc8\xff\xd4\x82G\xd5\xf7J\xd5y_\xdd\x89\x0f\xe2\xd7\xa3\xe8\x87\x0b\xf5\xbb\xc7\x99\x1c\xaa\x15L$\xdd\xca&\x14\xb0o\xfb\x01\x04\xca\x08\xa8=\xb8\xc6\xabv\xa8r\xe3\xcd\xe9\x08\x95w(\xc2\xcbc\xfd\xf1?4\xa3\xd3\xde\x8e\x02\x96\xa5\x96\xf8\xb4\x7f\xbb\x896\xed\xb1\x19\xae\xd1\x99o\x10z\xacz\xe8\xc5\xf0\x02\xea\xa17\xba\\\x0f\xc7Fu\xc0\xad\x92*\x1e\xeb\x05\xf1\x14~\xe2\x174N\x9f\x0f\xe0\xd8o\xdf\x0f\xef/\x97\x95P\xdf\xef\xd3S\xc0\x0c\xceI\x03}\xef\x0c\xce\x19\xe4\xab\xd0\xe4\x7f\x1a\xab\xe5\xf8\xe4\xeb\x87\x8b1P\x0fz\x95~\xfe\xd4\xab\x06\x15e\xfd4\xeb\x1e:\x8e\x908,\xde-\x04S\x1c\xf2\xf4\x94#0\xea]\xc0\xbb\x06QR\x9cw\xb4\xb7\xb7\xbd\x18\xa0\xed`^\\\xb08\x96^\x0c\xf6\xc3!g\xef\xbf\xea\x99\xb5\xb1i\xfa~[\xed\xfa\x84\xf9\xfb\xecm\xe1hDU>_;.F\x1e]\x19l\xca\xe6\xb8\x17]\xbd1\x7f\xc3O\xedM\xd5\xc8\xfa(I\xf4^4\xa6\xe1\x8f\xcd8\xae.\xd6\x9e\xaf\xd0\xdbN\xf4\xfd\xd4\x84J\xb7=\"\xd2\xf8 \x12\xdbs\xee\xfe\xcc\x8d\xeb\xf9.\xb3\x9awW\xefkj\xeb\xe2\xb1f\x08\xf7\xbd\xa0\xd4\x0b\xdb\xee\xc1z\xc0_\x86Q\x1d\x94\x1ei\xff\xe9\xea\x16v\xe2v\xd0\xd2w=\xa8\xb5\x10\xb3b\x8cp\x85z@\xd4Ed;\xdf<)\x18\xb8:\x1c\xfe\xc0V\xb4_\xb3\xd3\xf9\xa1\xb6\xb4\xce\x90-\x8a=\xb4\xc5O_\xe4\x88\xebf[o\xaaAL4\xb8jA\xea\x86\x0b\xf64\xd3\xba']M\xe8\xcf\xb0B\xb3\x9aU\x1fw\xa73\xbb\xd94\xc0v\xb6\xdbY\\\x82\xa9\xb2J\xa7\xd2\xe32\xe1V\x1cv\xed\x93\x9ca\xbcj\xda\xad\xe9\x8eb\xd8\x98U\xcb\xfaVG{\xd5=FD\x8e\xed\xa6SA\xe8\xd6\x87Y\xf6\xbam5T/\xfb\xa1;n\xe4\xfc=\x17\xc3\xbd\xe8\xf09\x98j\xdc\x08\x10\xcd\xd0=\xc1\xcf\xcd\xd3\xbb\xdbSF\xa7\x13wU\xb7E\nN~\xe6\xb6\x8f\xb0\xaf\x9a\x91\xd5\x91\xa7\xea\xb4d\xdd\xc8\x1c\xe0\xfd\xbd\x11\xf7\xd5\x97\xba=v\x9a\xd8\xda\xd6\xfd\xe6\xd8+~\xc1\xd5Q\xed\x17#\xa1\x9f\xf2b\x0f\xda3\xff\xd6\\\xfd\"S=e\x1a\xf2\xc7\xfe\xf2z\xfc\x13\xb9\xcbL^f\xf9v\x13\xfaM\xfb\xd8,3\xc2z\xdai\xdb\x8b_I\x07zQC\xddtS=\xaf^\x9b\xf6\xc3b\xa86\x13\xbf\x1e\xf1\x01\x9fE\xf8-6\xf4s^Y4\xc7\x19\xd1\xf3\x12\xea\x06\x87\xa4\xd9\xdf\xaa\xcdP\xcfr\xe8\xbc\x84\xcd\xae\xb5!$\xa3\xc0\x9d\x9c\xee\x17\x06\xc7K\xfd\x04\xef;q[\x7f5\xb8q?T\x9dJ,\x0b\xffK\xbe'd\x19/\xe0c\x0b[\xb1\xd9U\xb2\xf8\xb0=\xee\xf7\xf6\x94\xf0$\xb1\xb1)\xb3\xddr?\xe3_\x10x\x18\x84\xd9\xc7p>\x958\xad\xe9XU\xdb\xd3%\xfe%\xeci\xd1@\xe3# \x0f\xad1E\x90\xac\x97\x0e\xcd\xed\x84\xd1]\x95\xaf\xf6\xd6r\xa5}\xe8P\xca\xdcI\xc4Tz\xd3\x7f\xb6V\x9fza\xb6ul\xb6czX-\x08\xfeH{\xfe.>N\xdd\xed\xa4dv7[v\xb1E\xf7\x9au-g\xb7rc\xf4\xab\xbb\xd3\xbc\x13\x95\xe9@\x05:\xcf\xba\x8eC\xb8q\x7f\xafw\x13QD\x18?\x17\xa3\x9f\xa3\x17\xceG\xbd`7\x9d\x8dv\xb1\x01\xebd,\xd4E\x1f\x11\x97[\xfd\xef\xa3\x0e\x15S\xff\xb6Z\x84\xf8.\xb9z\xfd\x87\xb7F\xe6\xb8O\xa8\x9c!0\xc8U\xdc.\xde\xb1\xce\xd3\xdc\xa7\x82\xff}\xeb\xf5\xe2\xf7\x04\xeew/\x84^\xab\xaewp\xe4\x84`\x18_\xe6}1\xe6\xd8d\xd7[\x92\xe5\xbb\x19<\xefgp\xbf\xa3\xc1\xf5\x9e\x86\xd0\xbb\x1a\xa2 \xcf\xeaAv\xe1\xcf\xb5!A\xa1\xa1w\xf2\xb6z\x086\xb6n(6v\xf2\x1e\x07\xca\xb4\xd0\xf9\xe5\xb1\xea\x9d.\xed\xaek\x8f\x873\x7f\x83\xe05\x1c[[x\x1f\xfe\xf0z\x9dg\x00\x88<\xd1\xeeA rR4\x9e\xf7.\xe8\xd5\x07n\xcd\xd0\xad\x13\xaf>\xed\x13\xe0\x1f\xb2!\x17\xc3\xcd\x0b\xbb\xcb.\x86\x1d\xbc\xf1\xd8\xfa'\xae\xfc\x03\x94s\x88\n\xb6\x93k\x98\xf2\x0fT\xf2\x97\xf6\xe0`\x10_B\xdbm\xc52(H\xfd\xb2\xaf\x86\xcd\xbd\xf3\x97\xba\xe9\x8f&(\xef\xfa\xf6\xd8lO\xb3Q:\xc7\xc0\xc8(\x18\x1b\x07W\x8d\x84\xa7\x9d\xf3t\xfai_H6\xd7O\xea\xee\xbf;\x88\xc61l\xe1Mv7\xeb\xd4\xae\xc6\x85\xfa\x97\xdf\x8b\xe7.L\xb7A;\xfaw\xf5/\xaf#\xdfMs\xde5\xed\xf3\xca\xfa\xe1\xef\xf2\xef^\xef\x84\x1bo\x0d\xfd\xe8\xdc;\xea+\x8f\xce^\x92<\xe4\x9f>oj\xfc\xeb\x0fbSh\x04D\xde?u,\xebN\xa0\x18\xd7\xc9\xce\xb2@\xa4<\xe0\xc6g\xe6\xe6\x1f\xd6\x8c%s6^O>\xfefn\x91\x1a\x03\xa1\xd6\xe0!u\xe6\xe6z\xa9\x9e\x9a\x97\xa4\x9d,\xf2\xb2\x1a\x0f\x8b65\x8c\xe5&.\xc8\x87=\xb9\xe0\xa0\xc5!\x0eThn\xcf\xb4\x91R\x85\x81\xa0\xb7(Q5\x99O\x11\x9d,\xde`\x91\xc6\"\xf4\x7f\xda\x13\xe0\xd5P'#\xde\x94 \xb4\xad\x8c\xe4)qy\xda\xeb \xb4[K\x063\x15j\xe5\x89\xa5\x9a\x9b.\x89\x8f\xac\x9a\xdb\xa8\x93\xfaGx_\x87 t\x96hG\x89w\x92`\xc1\x94E\xaf\x02\xa4+\xc1\x92\x12s\x19\xe9Z@\xbe\x1e\xb8 3\x97\x91\xaf\x0cIW\x07\x1f\xce\xe12\xd2#d[4\xad\x93m+T1\x9f\xc5\x07\xc3\xc9\xe2\xc3\xe2d\x84\xb7\x89\xb2\xa4\xbb\x96z\xdf\x08\xc3\xe7d\xc9\xf7\x8e0\xa4N\x96\xe8}\xf50;s\x13y\x15\x03\x19\xeb#\xf7\xa6\xc0\x81K\x10\xd0e\xe4^A\xef\x0fn\xb6\xcbe\xe4\x8bCR\x01\x80\x07\x12m<\x90\xcc\xed/4\x90\xd0\xc9Mr\x7f\n\x1cx\xc2z\xba\x8c\xdc1\xe8]\x82\xc7\x92\xc9x,I\xbco<\x96\x10\xc7\x92\x14\xa6\x89\xdc\xa3\x02\x07:p^\x97Q{\x1c\xa9\xb7%\xf44j\xb3A\nA\x1c\xf5e\x13\xc6.\xa3\x94*\x8bD\x0e\xf8s0\xca6\x9d\xec\xb2\x1cb9\xe0\xee\x84ev\x19\"\xa7\xfe\x0e\xa0n\xbd_\xc9R\x16\xd2\xb3\x8c\x1d\xba\xda\x95\x1f\xcc\x18\xa9\x8f\xd1\xc6\xb0`jle\xc41\xa5\xda\x87[\x07\xa8\xaebj\xd2d\x97m=e~\xaeT\xbe\x0e\xbd\x0b\xdc\x1e\xc4\xc6\x94XINf\xffE\x95E\xfc\x87\x93\xd3~\xfc\x87:\xcc>\xa7\xde\xda\xba\xfe\xdc\xc3(@\x99\x9a\xaec\x06\xc7\x8ez\n\x0f\xd9oU\xcd\x14\xcc\x81\x07{\xffB[\x13\xd3\x07\x87P%\xac\xb4*\xf2\xc9\xa8p:\x02\x9c\xe2\x05\xce\xa1\xe4\x8f'y]\xb8\x80\x7fxuw*\xd7\x8b,\x1f\x0b\x18\x7f\xb1\xbc\x9d\x89 ^h\xd3.\xb1\xdf%\xf3G\x04\xfe?\x01\x86\x9c+\xde\x17\x90\xed\x0b\x08\xf6\xdf@\xaa_%\xd2\xaf\x92\xe7]\xc2|\xc2\xd8q*\xc3{F\x04\xbf\xf4\xee\x9d\xf4\xf8':\x01\xa1=4\xcbM\x16\xd7\xad7\xb4\xc3\x9dSV\x0fN\xe1\xc2S\xb7\x90\x88\x1e\xfb\x94 ~\xc2Dgg\xba\xd1\x92\xd4\xf0\xf0\x97ZH\xeb\xfe&u\xf1\xce/\x93\xd5\xec\x10f\x11k\x8a\xd0\xfaH\xa8\x19\xce\x95Q,\xb0\x9e\x11m\xd85\xc9\xc4V\xacG\x9c\x9cJ\x97\x9a\xdd\x922QL\xf6\xa8\xb5\xbe\xbbV2\x1a\x9b\xa0`g\xf7\x80\x80,L\xf8\xfa\x8cy\x07\x8a\x08L\xb8\x0e\x10\xaf\x05\xb4\xd5\xd5h\xdf\x9e\x8c\xb8\xa2Zt-\x95\xb6\x8a\x1a\x1b6\x95\x11\xd6\xb2\x88\xedO\xbf\x03\xc4u\xd2\x84\xbb@\\\x1b%{\\1\xfe\xcc\x1cP\xd5\xd7\xd82fXY%\xdc \xca\xad\xa1h\x1f\x84K\x01\xf1r\xc0\xcf\xe2\xc2\xf8Yt\x1eX\xe8Y\xa4\x0b\x98\xb1\xa71\"N\x12\xee\x11\xe5\xee\xf0\xe3\xc8\x8f\xa3\xcf\x12\xee\xc2s}\x1cS4\xc0\xd8\x03\x19\xd5\xf7\xe27\xbc\x04\xf7\xabk\x96 \xd2\x05D\xb8\xf0wi\x96\xf0\x06S\x12\x94\xb9\x91%\xb7bb[Df\xf3\nl\xea>\xe4\x05\x89\x05\xe4\xb4\x95\x1fI\xeb\xf6\x95\x0d\x0bf\x91\xd3)\"Y\xa2<\x16\x11\xc1\xb2\xe4\xaf\xd0\xbe\xef!\xe1+U\xf2*(v\xc5d.\xef\x8d \xaa\x10tQ\xab\x84\x9c\x15\x96\x8bVd\x9f\xb0V\xde\x97\xb2\xc4R\x92\x08\xc8\x11\xcf&mE\x8e\xe0\xb0RlX)4\x9cYd\xc8\x16\x18\xb2\xc5\x85pW}\x06\xc9%\x96R\xa4\xfbUt\xfa\xf0\xcf\x9e\xe3u\x92\xa3\xfe%\xfed\x7f\x1c\xf5\x19B\x83\xcd5\x19Gs\xb8\xb5\x18\xe7;\xd3\xfd\xa6\xf4\xe8/\xa6\xaf\xac\x90YNE\x15\xef\xab\xdc\xff\x12\xf7 )\xa1Ycd\xc5\xdd\xf3\xbe.+\x9c\xf8D\x93\xb3\x95\xdb9\xbf\xc8\x13H\xfc1\x92\xce\xear\xb2S\xef\x97UQ\xc1\x83 v8\xd4\x06\xd7]X\x9b\x01\xc3+jd\xdeE\x8f\x90\xb1r\xe6\x1f\x14/\x08\x1f\x8d1\xff\x10_\x95\x89~_(#\xac\xc6\x14[\x89\x89\xaf\xc2|\x9b\x0frJ\xeb\x12V\\\x88-LXi!y\xca\x1c\x07f'\x97\x10\x1e\xfc\xa2\xc3\xca\x87&\xb6\xb2I\xb8\xb7\xb1K\x00?7n#\xb4-\xadu\xff\x9a\xcfM\x19\x91 \x10\xf0\xa333~t\xfe\x7f\xf6\xde\xbc\xcb\x8d\x1b\xc9\x17\xfd\xdf\x9f\"\xae\xde;#\xe9v\x89\xdaeK\xf7z\xce\xd5\xda\xaen[\xaa\x91J\xee;\xdd\xaf\x0f\x05\x92 \x99V2\x93\xcaLV\xa9<\xd3\xdf\xfd\x1d,\xb9a\x0dd\x82j\xd9\x9d8s\xa6\xadb\"\xb0\x05\x02\x81\x88_\x04\xcc\x059\xc3_\xd3\xd6\x89e\xd0w\x1a\xf3\xdd\x8b8&\x1fC4\xe3\xbd\xfd\xae\x14\xcfh\x8f2\xd8G1\xd6;\x0c\xf5F#\xbd\x98g\xb3\x81\xden\x9c7\x1a\xe6\x07*\xfaVc\xbcs'\xd8\x8d\xf0\x8ej>\xe3{<\xc3{T\xa3\xbb\xcd\xe0\x1ebl\x8fdhw\x19\xd9\x8d\x13o\xb5\xafa\x0d\xebV\xc3\x99|\x04\xff\x9f\x9f\xf1\xb5\xcf\x84\xd6]`\xdf\x03\x8e\xe4\xb1\xe0\x13\x85\xee\xf3\xcb\x9aG\xd2{\xce\xd8rIz+z\xf3I\xca\xf5\x1f\x9a\\\x16l\xd9\x1b==3gp4\x87r\xb4\xbf\x99\xd3\xad\x9a\xa22\xea\xe2I\xb9\xe8\x17B\xa3\xdc%\xa6\x95t%^\x84\xc8\x89h\xa1\xe7\x8b\x18\x9d\x8c\x16`\x80\x87\xc2\x98\x90\x16lIi\xc1\xc78\xde\xf7\xa0F'\xa8\x05C\x92Zp(O1\x8d\xa5zdY[F\xde}\x1c\xc2\x07!E\xec\x02\x08Q\xd9+\x84\xc0\x91\xd8\x16\xbc-!\\\x8a\xe6\xd0@\xee\x0c\x99\xd2\xb89\xa1\x01\x91\x17\x1a\x02z\x18\x88x\xf3P\xabj<\x1c\x0e\xff\xd6/ah8\x0f1\x8e\x95\xf3\x05\xb1\xb7\xc5\x93/\x1a\x1a\x16\xf1\xe5\x8c\x06\x84\x9b\xb8.\x9e\xdc\xd1\x10\xc2\x97xY\x89\xc8#\x0da2\x0b\x93O\x1aBHb\x9c\xb1m \xc4\xf0\xa1\x06\xe3\xce/\x0dC\xf0~\xbe\xad\xd3\xa0\x01\x11y\xa6!\x10\x0b\xd8/\x18\xd9\x10\x86\x1at\x10\xaaw\xb1\xf1\x13_\x04\x7f[\x10\xbc\xe3\xdbv\x810DC\xd5Q\x91\xfeu\x89\xf7Pvo\x01#&\xb3\x86^Bk\xbd9\x0b\x0e\x93\xf1~Q\xff7\x1b\x10?\x08\x18_\xf3\n\xb7;\xa8\xa9\xb7g\xcf%-\xc9\xebx\xd4g9\x02\xf6\xd9\x91\x8d&-bl@\xa4\x0d \xea\x14\xe3n\xa0\xb4\x13&\xea=\x1e|\x87\xc2\xd7\x8d\xd7\x8a\x00\x1b\xfdg\xa0\xa0\xec0\xc9\xdf'D)6\x984:\x9ct\x00j\xc7\n(u@J\xbd,\xe5\xb01D\x05\x96\x9a\xa1\xa5\xae\x8b\x93\xe5\x9a\xe4\x94.n\xd9\xe2\x02\x99z\xc5\x96\x8f8\xf8D\x97w)\xc0#\xbeP\x04\x10\"\x0c<\xa0S\xec\xad\xc2\xa7\xda\xf8u\xba\xc8\xe0S?\xfc\xd4!z\x11\xb3k\x17\xbf>\x01\xec\x04\xa2\xfa\xa0\xa8>0j\x00\x1c\xd5)\xedQ\xf2\x1e'\xf1\x07\xc8|\xdb\x86pe`RK\x0chjdpjdx\xea\x17\x06\xa8F\x83\xa8\x0e8\xeel\xfb\xdc\x0dS\x8d\"\xc7]`U\x84\x9c\xc0\x01V\x11=\x05To\x01\x0b[\xf5\x0b\xe4\xba\xc4\x85\xae\x86\x80W\x91\xb3\x02\xe8\x99\x014\x84\xf5\xa8V\\\x84\x81 \x02\x16\x08\xa2\x83Y\x03\xec\xe28@\xebon:cB[\x87\x81[\xf1\xde1\xec\xd4\xa2\xa6\x15\xbd\xe3B\xf6\x1c\xda\xeb\x15\xb4\xa0h/W\x00\xd5H^-,\xaf\x85\x82^}\xbd\xb7=@\xd2\xfb(\x14\xf8\x8aB\x93b\x98\xd0\xcb\x80H\xe6\xc32\x1e\xa2\xdb\xa2 \xdb\x85\x80\xb6\x01\x0b\x85\x0dj\x1d\x02{\x00a\x80\xd8\xe0\xbe\xc0\x80\xfe@(^\"h\x03wK0f\x02\xbfq\xdb\x12\x0f7\x11\x82\x9c\xc0\x9f\x0em\xc1l\xd1~\xf1n\xd8~\x19\xc0<\xc3\xd8\x07}\x9e\xb4e \x0b\xa1\xcf\x98\xb6\x0cj)\xd2\xb9\xd3#\x86d\xe2\x88\xc0\xd9\x00\xbd\x11\x0f\x9e\x0d\xe6\xabP\x8e\nC\x93\x05w\x07\x06t &\x19i+\x93\x8c\xc4\x96IF\xfa\x89!\x998*\xd46HJ\xa2\xe1\xb6\xc1\xac\x15\xcaT\x93\x98\x9c\xc4d]&1\x19\xceB\xff\x02b2287HP\x06\x00tC\xf97\x80w\x83\xf96l\x82\xf1P]$9\xe7\xfbQ\xdd\x82\xefg\\\xc0\xae\x98\xd2\xc1\x90\xdd\xc8\xa0\xdd`\xd8.\n\xb8[\xb3\x8d\xcf\xc9.\x8a\xdf\xd5^\x17\x04|7\x88cC\xe4+\x12\xc4\x1b(\xe3\xb0@\xde \xb28'v[\xe2\xc2y\xf1\x80^,\xa4\xd7K\xc6\x98\xe2\x13 \xea\x1d\x03\xeb\xc5J\x91h\xd0^\x0f\xb87\x04\xde\x8b\xe4(\xff\xe6\x1c\x01\xf2\x8d\x0b\xf3\xb5\"\xc5\x1c\x03\xb5\xa8\xc1\xe6e\x8d\x0c\xf8\xedC~\x01\xf6d#7Z;\x00\xa303\x8b\xad\x8c~\xae\xe6\x9a\xeeg\x1d\xbb/\xe5\xe2\x7f\xab,]\xd3g\xbbS:\x0e\xa1\xcaa\xc1T\xaf\xb2\xa4+\xf6\x8f3\xb2\xa1o\xe9\xa7\x03-\xab\x99\xf8]!\xf2\xe9@\x8b+^\x9d\x91cC\xa6\xb0\xcb\xcb\nh\x8d\xd8H\xbb\n\x0c\xdf\"\x81\x032@\xc3l\xbbT\xec@6\x1e\xfe\x1f\x12\x87%R\xf2\x1e\xd2\xaa\xec\x1c\xef\x89\xba-\xbbC\xe5{x\xce\x89\xa8\xe2\xe6\x92\x94P\xd2\xea\x04\x98\xee 4\xd5\x84 \x00!nW\x90W[Z\\&e\xbb\x06\xe6\xe7\xdd\xda&[\xe8\xb7\x98}\xba[\xd0\xd5\x8a\xae\xd8\x81\xbfy{\xf6\xbcE\x84\xefhY\x92\x0d-\xe1rK\x0b\xaah\x03\xcb\xbc\x10\x1f\xae\x92l\xc3\x05\x1f-\xab\xba\nlI \x07\xb6\xa8\xdda\xf6\xc6V\x7f\xf9.\xdf\xb5\x9d\xfa/\x93\x84(\xe8\x9e\x92\x8a\xae\xe0\x19)\x9a\x99\xfd\x1e\xee\xfe/\xd3\xc7\xbd1r\xf6\xf8\x1e\xee\xf5\xbe\xfc\x07\xff\x87\x07!_\x86C\xe4\xcbp\x8c<\x97Z\xc1\xe8x.\x07\x06mq3\xc6\xd3\xaa\xf0\xd8\xd5\x1b\x0b\x96\xd3!(\xcd\xd8M\xe7\x11\xe2\xc4j\x9a1\x9an\xb5\xd1~\x16\xd96x4\x0c\xa6\x1d{i\xc0\\Zg\xc5\x84\xb1\xb4a+\x8d\x98J\x1b\x96\xd2\x86\xa1D`'\x8d\x98I'V\xd2\xad^\x06c#U\x14\xa4:\xf3&L\xe48,d$\x0cd$\xec\xe3\x17\xc2<\x8e\xc6:\x8e\xc68\xda\xb0\x8d\x03\xe4\x97\x19\xc3\xe8\x90Fn\xcc\xa2\xf3\xca\xe8\xbe$z\xb0\x89\xbe\xfbA,,\"\x06\x83\xe8\xbd\x18\xfb\xaf\xc3>\xac!\xc6\x0c\xe55>\xa1\xee%\xbe\x89\x85\x88\x18B\xaf\xd1\xce\x87\x19\xfc\xca\xa6%\x00\x0b\xd8N\x93\x83 \x06\x03\xe83\xc9\xfb\xa6\xc89=^\xce\xc6\xf0\xb6\xd7p\x8eZ\x00\xafQ\x1cAe\xa4\xc1\xdb\xc7\x03\xa1\x18=\x87\x19\xd1\x8a\xcd\x0b\xc0\xe49@m.\xa6\xf0<\xda:8B\xd3\x8b\xb1\x8b\xc4l\x1e,\x1d\xa2\x15@\xb6\x04X\xcc\x1c\xb2M\x08h\x17\xf0\x0eM\xc4\xc6\xe8\x96\x00\x07fmdB\xb8#\xdd\x0f\xaa\xd5\xc5'\xcc\xda\xe2\x13km\xf1\xca\x7fQ\x02\xd6(l\x95\xbc\xe2\xaf-\x81+\xe5\x15\x89m \xa20\xb2\xb7\xd5\xc5z!\x9d\x14\x1fn\x8a^qB\xad\xf6\xc9\x86\xc44\xc0\x87\xb2z\xdd\xc4\xf9\xc8gh_\xe4\xab\xc3\x92\xf2\xd0\x9b\xa2\xc8\x8bY\xbf\x07\xfb}\xda\xf8\xa0HA\xd9\x8a\xe7\x97\xe2@_\x92%\xdb7y\xfe\xf1\xb0oD?\x93\xde+\xd9\xd9^\x17\xde\xbf\xfd\x91\xb7\xc7\xc3#\xaa-\xddu\xf8j%\x18\x8b\xd4\xddc\xff}\x91'L\x96\xf6\xad8\xa21\xbe5\n\xba\xce\x0bzRWa\x94H\x95,\x924\xa9\xae \xa3tU\x1f\x9b|\xcb\x16\x17J4F\x9e1\x01\x90\xb1C\x93\xb14\xe3\xe1\x19\xdcx_\xd2:\xe0\x9b\x8d\x91-:\xdb\x81b\xd5I\xa6b1\x16\x05%\x1f\xd9\xfe\x92\xa4f7{\xb6\x81\xbc\xa2ODt\xc8\xfa\x90-\x05\xd7\xb1\xde\xc9\x9d\xb8<\x14\x05Wl\xba*\x86X\xe5\x9ck=\xfd\xc8\xdfz\x81\xa1\xa0L\xa6\xd1\x13~\xda\x88\x9b\x12#\xc7Or\xee\xedkx\x95\xdf\x89\xb3D\x06\x8b\xf7\x84\xd6\xd5\x9e\xce\x04\xe7\x90}R\xce\x96\xf9\xae/\x0f\xdeq~-\x85\xba\".\x8c\xca\xfe\x82\x1b\xd2\xb3(\xaeR\x82\xc1o\xc2.\xd9l+X\xf4\xb6\x93\xb8\xac\xb2\xf3\xb29\xe3\xc4yY;9\xa1\xa4;\x92U\xc9\xb2\xac\xd9O1M\xe2\xd5S\xfb\xd9\xf4\x13\xdb6\x0b*nx\xc9\xaas\xc8h'\x8b\x14\xddd\x91_\xd0\xba\x93=\x06\xe2\xf3\xf7\x8d\xbd\xbd\x0fO\xb3\xab\x0f\xf51\xc4\xcfyR,\x92\xaa`\xac\xeah\xb7\x96,m\x84\xbf\xa4G\xea\xe9d\xfb\x9f\x8b\xa5\xd6v\xa8\x1c\xa3]\xfa\xf5 \xd9,\xedY\xcdDi\xb2\xe0\x9d\x91\xd2\xa8\x84\xf2\xb0\xdf\xe7\x05\x97\xcf{\xb2\xfcx\xfb\x90\xb1\xffaRY\xacEY\xf3f\xf7\xa8\xc9\xd7p\xa8\xc4\x96\xabY\xbcd\x9b\x9c\xacV\x89\xe0w\xd8\xd0\x8c\x16\\C\x14\x9aLYw\x93Q\x16\xd3XS{\xf9\x990\xf6\x80\xbbO\xe0\x8c\xb5\xcd\xf8[v\x834S\x93d\xf0\xfc\x0f\x7f\xe8 Jv\xb3[\xe79|\x0f\xb3\xd9\xac\xabx\xb2&Hv\xd5\xfd\x13\xc9\xaef\x8c\xf8\xab\"\xdf\xddX\xe7\xf9\xcd\xee\x8f\xb3YW\xfa%k\xb8\xc1>\x7f\xcf\xbbp\x9e\xdf\xf87\xf6\xfdME\x07\xee\xd7\xf9\x87:\x96{\x9e\xb1\xfc\x89\\\x90\xa0\xc1\xc0\xf7\xfc\xa4d\x94\x90\xfdO\xca\x1b\xaf\xf2|\xb6LIYj\xdd\x17M\xb1\xcfD\xef:\x9f\xfe/\xd3\xb8\x9a\x81\xdd\xf7\x0c\xec\xec\xaa\xda\xe6Yoh\xa2\xadWy~c6\x9b\xdd\xec/\x8a\x18\xd6\x8d\x9b\x86\xa5\xe2\xc3t\x8d\x92}x*\x06\xf9\xe2\xe5\xbb\xe7oO\xcf\xce\xdf\xbc\xbd\xd97\x0d\xb7\x0b\xa9\x92\x13\x04\xd5\xe1=\xf0\x0c\xef\x8fywd|hO\xbe\x87\x7f\xdb/f\xaf\xf2\xfc\xbff\xb3\xd9?\xbe\xe9\xb7~\xc2\x8eW\xf6\xcd^\x1c6?\x91\xa2\xdc\x92\x94\x0dZ\xedP\x7f\x80*\xed\x1e\xe1d\xad\x90}\x9f\xedZ\xc2\xbcY\xce$\xfc\xab\xff\xf1=w\x08(w8\xa5\xb5f\xa5\x99\xfa\xc9\xc7]\xef\xdbZqa7\x8e\xbd*G\xb8\x19mq\xd5X\xd2\x98\xc2& ]7\x1c6\xb7\x99\xc6<\xe3?\xb0\x03\xf6:\xd3\x9f\x1a9\xc6d\x1c\x9bw\xf6\x071\xf75\xa9F\x84d\xe9\x15W#M\xcawsl\x03YWT\x9cQ\\\xbb\xbf~\xfbzMH\xca\xb2\xba9\xa1oR\xb9\xf6\xd7\xd6y>[\x90\x82w\xf4\xf3\xed\xab\xd9\xaf\xd7\xc4\xf8\x84\xce\xd5U\x16y3\xd7\xd8\x17L\x8c\xc9?\xfe\xe9\xdd\x9b\xd7\xf5\x7f\x7f\xff\xfd\xf7\xdfwg\x94\xfd\xd6\xde#\xc4)\x983\x16\x96G\x86\xd0\xd4\x0e\xa5\x94\xeb\x05\xdd\x1cRR\xd4\x14\xf4\x8a\xec\xa3\x15mE\xfeIk&\x90\xdcz\"o\xaa\xcd\xed\xa3#\x9c\xc5E\xf4\xc3\xffaC\xfa U\xed\xe6\xd0\xeaN\xd0\xac\xde\x18Oz* Y~d\xfb\xa1UA\xd7IJ\xbbr\xa3\xde1g\xb4(\xf3La=yc['EY\xcd\xf9Lj\x86\x03\xf9 [\xbe\xfa\x8b{f\xb9\x04\xa0P\xbf\xc6Gu\xed \\3\xf1_\xbf\xcb3\xd1\xbfk'}\n\xbcg\xaf\xc9\x8eQ\xf9\xdf\xa2+\xff\xae|\xc2z\xa6|a\xea\xde\xe9Z\xaaJ\xfd\xb5\x11\xf3\x9b\x94pI\xd3\xf4\xd6\xc7,\xbf\x146\x84-)\xd9EOX\x00\xba\xec\xd4g\x80\x13\xa1\n(\\!\xb6b\xa71\xb6\xe0\xd9\x06\x88X\xee\x9a\xd4\x07\xcej\xf5\xaao\xf3t\xd5\xb3;pFe\xf7M\xc9- o~\x92Yj*\x9cd\xc3\x1dp\x83\xed\xa3zp\xda\xd5\xa4\xbe\xdd\xfe\xfdo\x7f\xbf\xf9d\xfc\xca\xf5\x89\xaa\x8b\xc7\x87\xc7\x88\xdc\x9d\xdd\xbb{\xaf\xbc\xd6[\x16\x80M\xb1_\xce6\xa4\xa2\x97\xe4jV\x1c\xb2*\xd9\xd1\xd9Kv\x03B[Kh\xfb5\x98u\xd4e\xbe\xd2\x94X\x87\x03\xf5\xfe=\xf9W9\x83N\xda2\xd1\x93\xfaM\xdc\xc7P+\xcd \xd4%c\x04\x07\xf80\xae\x91LD\xa2\x98\x0dE\xa2\xc41\x17\x892\xdch\xa4\x912\x1a\x91D\x19hJ\x12e\xb0AI\xa3\xd4\x18\x984\xb3\x92(\xc1\xc6%QF\x9a\x98\x0c\xb3%\xfc_WzS#\xcdM\x1a=\xa9j\xe8\x0d\x8d4=i\xf4tS\x94l'\x9aAJ\x94\x11f\xa9\x9a@4\xe3\x94(\x03MTMo\xa2\x19\xaaD\x89b\xae\x12%\x9e\xd1J\x94(\xa6+Q\xdc\x06,Q\x86\x9b\xb1t)j0k\x892\xc6\xb8\xa5\x11S\x8d]\xa2\x18t \x93\x94\x1ag\xf8\xd2\xc8-\x0c\x9by\x809L\x14#^\xcfq\x14;\xb0\x90\xbeSz\xa0\xb1L\x17\\\xb5\xf1\xacc2\x13\xc5\xd5\x83\x18\xe6\xb3\x1eAq\x05\xea/\xc5HS\x9a(\xe3\x0dj=r\xfa\x81;\xd2\xc4\xd6\xa3U\xf5\xccm\xa2\x0c5\xba\x89b\xb5V\x89b0\xc0\x89\xe24\xc3\x89\xa2\xd8%x\xc1\x99\xe4\xec\xf5\xffa\x1e{\xb0\x91N\x14\xdc\xe0]\x06;Q\\#u\x1a\xefDA\x9a\xf0DQf`\x8c9O\x14\xabQO\x14\xb3i\xaf\xf9\xcdh\xe0\x13\xc52+\x18c\x9f(.\x93\x9f(]\xc3\x9f(\x03\xcd\x7f\xa2x\x8c\x80\xa2\x84\x99\x02E1M\x85\xd3,(J\x04\xe3\xa0(\xc6\xf6\x15N\x8af.\x14%\xa2\xd1P\x94h\xa6CQb\x19\x10E1\x9a\x11E\xe9Z\x7fD\xe9\x9a\x14E\x19oX\x14%\x8ayQ\x94xFFQ\xfc\xa6FQ\x9c\x06GQ\x10f\xc7\xde\x87V\xe3\xa3(\xaaD\xd5\xccY\xa2`\x8dZvs\xa4\xa4\xe37J\xca\x0f\xdd\xa6IQ\x94\xce\xc72S\x8a\x12\xd1X)J\x1c\x93\xa5(q\x0c\x97\xa2\x8cYo\xa7\x11S\x92r\x982E\xf9G\x13\xc7\xbb#\xc5G\xda\xc6\xf0>\xab\x13;kv?\xdd\xe2\xb7HV\xbd<\xd0Z\x15s50\xe7~\xb6\\K\xf4\x9c\xcf\xd6\xfb\x8b5\xd7\xb3\x9e\xe7\xb92ZV\xc1\x11\xbe\x9dG\xa0Qg*D\x8c\xc7\x8e\xf7\x7f\x96\xac\x94d\xd2\x02E\x98\xa6\xf2\nZ\xd2O\x12\x95\xda5\x81=\x85\xf2\xc0\xa3\x8f\xd6\x87\x94\xad\x1c,\xe82\xdfqx\xe2\x8f\xec\x02}\xe3\xf4\xc5\xcd\xfa\xd0V\xd2I\x1b;\xa8\xa6\x916\xa5\x90\xd6\xd2G\x9bRD\xdf\x824\xefY=\xb5d\xd0\xd6D\xd0\xf6\x1ba\xcc\x04\xd0Z\xf2\xe7:\xf1\xf3\xb3deI\xfb\xcc\xe6WM\xfa\xdc\xc9\xd4\xfc,Y\xd9\xf34\x9b\xeb\xb29\xe2\x15\x7f\xcc\xcb\xcaRK\x99\xc7N\xb6\xe5g\xc9\xca\x9ak\x99\xd5T&\xbc\x89\xb9\xc3fY^4\x8b2Er\x85\x83t\x01 \xd4m#\xb9\x9e%\xabZ\x02pqp\xd2[\x8a6\x8c\xeb\xbaC\xcc\xcf\xde\xb5\xbb\\\x9b\xbd\xee\xeeVwvoW\xab;\xba\xb7\x9b{;\xd9\xb8\x8b\xcd+4z\xf7\xf6\xf7l\xf8~\x1d\xbaW\xc3\xf7\xe9\xa0=:p\x7f\xda8\xe1U\x92V\xb4(\xd1\xe7\xberx\x1b\xb6^\xff\xd06\xeeM\xe3a\xbd1\xd4\xc3\xc4\x8f\xe6\x03\xeb\xe9\x07\xb2\xa1\xaf\xbe\xd3P\xaeF;\x91\x8d`Y\xa7dS\xb6\xcb\x9e\x94LH\xb0O\x1c\x8bq\xfabZ\x07S_\xcd\x92b\x802\x84U\x84\x8c\x0b\xc4\xbf@/\x10\xf7LL*r\x08\x8d\x00\x15Y\xee;\xbe$-\x13\xb0\x15\xed\xbc\x82\xc5\x97@V\xf1md@\xab\xb5dY%=\xdf\x85\xe7\x8d\x93\xdf\x80J+\x86$\xa7\xf3)\xff\x87\xe1 \xe2\xd3\xa9\x0f\xdf\xf2~\x88X\x1a\xc4\xfb!\x82\xac\xfb\xfd\x90\xf6\xa4\xe4d\xadg\xa5\xa05V\xa3\xed\xf2\xcd\xa4\xd3~ \x9d\x96\xafj\xbd\x8b\xe5\xa6>Q\x16\x04\xa1\xd9\xf2\x9a#t\xdb\x1eo;\xb6\xf5W\xa3\xdb\x0e\xdf\xb8G\xde\xb4\x837\xec\xe0\xcdjg\x88I\xc5\x8d\xa1\xe2v\xa7\xd2\xa0\xe4\x8a\x85D\xa8\xb9rwO\xab\xe1\x9bk\xafZc\x9c^\xfe\x94\x18~ry\xc2\xcbIIE\xd3\x90\x0b\xc4g9\xf4\xf2\xe1\xdbh\x80VAQ\x96\xd5\xaf^\xeb\x14\x86\x19>\x95\x16\xd3\x0cgO\x971\x95W\xb6\x9bhD}\xc3\xb3w\xed\xf1\xc4)X\x8f'A\xa0g[\x0d>\xa08\x8d\x96\x05\x8ajN\xb0Yp\xba\xbc\xd7\x7f\xb6.`\x9b\xeaO\xd5Y6\x9f\xfd\x89:ck\xe0@\x82;\x9f\xa5s\xa5\xce\x0e~\x8e\xae\xa3h\x1a\xc8\x19\x9f\xa2\xb3\x8e\x06\x9c#b\xc5\xf5\xfc\x9c ;\xea\x011\x83\x10\x93\x16\xf4\xa2\x9c\xe7A4\xc7\x9bq_d,\xd6\x94\xd6Q\xdf\x87\xf3M\xc5\x94\xa2Q\xfe<,E\xa3\xb1*\xfeY70>\xe0& \xfa\x1eo\xb3\xbc\x94f[\xb5\xd0\xac\x8e\xae\x95r>\xd26\x92\x03\x1c\x0f\xb3y(\x03\x82:`\x1ecC\xb4\x03\xc8\xb6\x00\xf7\x04\x8b\x97\xb7\xdb\xe2\x00*wK\x84\xf4\xadm\xc1=\xb9\xe2\x13\x9b\xa2\xc4|\x16\x03\xbb\x02\xc8\xe7U\x02V\x01\xf9\xac\n\x9a\xe2\x08\xf9\xd3#0.Gw[\xdc\x8f\xa8!\x16\x08\xb34\x98\xa7\x91\x10M\x01\xb29\x98\xf6\xa2R\xa6\xbdh\xfc0\xd2^\x1c\x9bu\xbc-\xc6\xfc\xe3mA\xac\x11fu\xa6\xed8mG[ X\x85\xafu;\x8e\xcf\xa3\xde\x16\xef3a\xfe\x05\xf7,6j\xa1\xe5\xc8\xc6d^\xd7\x88Y\xee\xa51\xb2\xb1\xb7\x05\xfd\x96\xd7\x90\x0c\xed\xe6\x16\xddoxY\xdf\xef\x12\xeb`\x7f\xbb\xcbfl\x15\xc5\xfaf\xd7\xc8K\x92\xf3\x9d.\xef\xcer\xbf\xcf\xe5\xa9\xee\x8b\x86\x841\xfeX#\xb51\xaeY#A\xd7[\\8\xcfm[\xea\xc3dD\x86\xf9\xba\xf8\xde\xdf\xb2.\x8c\xd3X\x1f\xf2\xe6\x167\x0b\x0f1\xd0\xd6\xb3\xc0\xed\xc9\x8d_@\xb8 N\x14c0\x9f\x08\xe1%\x90n\x1d\xabG\x9b\x93\x1b\xe1\xd1v\xa25\xbf\x12'\xf6\x10?\xc0H\x1f\xc0@\xfb\xff`\xdb\xbf}m\xffu\x9d\xd3>wX\xd7\xd5f\xf7;\xcb\x15\xf2\xfb\x9d\xa5\xcb\xee_n\xa2\x87z,\x8d\x93\xc8\xdf\x05|\x96\xac\x82s\xc8/\x06\xfa\x98\xd50#ku; 0\xbb\xaa\xc1}\xd0\xeb.kO\x05\x87\xeb\x1a\x8c\xeek\xf0\xeaV.\xcdJwe\xc3(zf\xec%\xb8\xc6lG\xa3\xc10tn]\xb0(\xdd\xba(\x92\x04\\\x9dV\x1d\xec`q\xb2\x83\xc9\xd1\x0e\x16g\xbb\xf8\xbb\x1a\x82c\xf2\xc2\x83\xcb\x13\x0f^\xe5r\xf4\xd9\xab\xd0\xd3\xbc\xf2\xd09\x91\xf1!\x13m\xcda\xa1\x13m\xfd\xd0\x10\x8a\xb6\xe6\x80P\x8a\xba\x04\x1f\xeb\x8b\xde\xa2\x19\xae8\x03D\x94\xe5B\xe3\x908\xb6K\x0cn\xc3j\xbc\x15\xeb\xca\x12\xf1\xb2b\xbe\xa6\xe0/(\xb5R\x1e\x122\xd5\xd4R\xcf:\xf0\xbc\x96\xcb\x1a1\xbc\x95k9A\xcb!Gh\xa9\x9e\xa1q\xf3\xf7\x99\x0e[\xe7E\xdduI\xb7\x1c\xb9\x9e3\xd4|\xecz\xaf\xe4\xce\xa3\xd7v\xf8\xfa\x8eK\x9fi\xc3|\x04\x8f\xa5j?\x88\xdd\xfa\x8a\xf30\x1eu\x1c\x87\x1f\xc8\xc6#\xd9\xd9}\xd3\xb1l?\x98-G\xb3\xfdp\xb6\x1c\xcf\x96\x03\xdasD\xfb\x04\xe9\xa8cZ\xdf\x11\xfa\x95\xb9\xdb\xd0\xd0\xa3z\xfca=\xe6\xb8\x1ey`\x8f>\xb2-v\xc9\x81\xa2\xcej\x8btJ-\xbb\x0d\x12\xbb\xcd\x0d\x9c\x17\xeb\x10\x8fz\x8c\xdb\xed\x8d\xf8\xa3|\xe8a\xde}\x1fM==Q7P\xfd\xf53p-\x91\xd5\x03'\xbb\xaf\x89\xe6\xd1\xaf\xa1A\xd8\x8bh\xbc/\xfdW\xd1\x003 \xc3\xd1j\xf3\x97\x04\xbd\x92\xa6\xd4\xb5\xbd\x99\xa6|\x16\xf6p\x1a8\x0f\xc8h\x0f\xa8\xc1\xc8G\xd4\x00\xfd\x90\x1a\x84<\xa6\x06\xde\x07\xd5@}\xa7P\xd3R\x11\xcao\x89\xd5~\xb9\xca\x10\xac\xfe\xa6m\xf4\xad\xb1\x86\xb9\x16\x18#q\xad\x04\xecD`\xb2\"\xc9\x12\xd9\x8a$9\x0e\x17\xf2R\x97\xe3Y|\xf4\xf0V\xf9\xb9+<\xf5\xb7k\xe9\x19\x1e@\xd8\xd28j a\xdb\xcc\xc0\x80\xc2\xba\x04k\x8c*\xcfMf\x9e^\x89\xa8\x1f\xc62\xf3\x84G\x11\xf7\x0f\xbc\xde\xc1\xe4;\xf1Dc!G^\xb8\xc9\x87\xf7\xf8\xc8F\x1f\xf3\xe98\xf8.4\x99}\x86Q\x1dh\xf6\x19tz~ \xf3\x8c\xf9\xb0\xc0\x9c\xa4\xbf\x03\xa3\xcc\xf8S\xf5\x8b\x9d\xab\x11N\xd6\x08g\xebd\x8f\xf9\xed\xdac\x86\x9c\xba\x93Uf\xb2\xca\xf02YeB\xad2}U\x12\xa5\xa5\xa2-3\x1c$\x14\xac\xa5\xe6\x85!\xa9\x05j\x17\xeb\xe9'\xac\x04\xecD`\xb2\xcc\xc8b\xa77\x14\x04V\x97\xe3\xd9[\x82\x106\xbfI\x13\xcb\x10xk[{\x14\xcc\xb5%3\x08\xeeZ\x97`\xf5\xae\x9b\xf2\x02\x8ci/\x00s\xb8\xa9|\xdcO\x81\x01\xc3D\x85\x9e\x0e\x03\xdc\x1b\xdf\x9e\x16\x03\xdc*\xaa[Iu\xa6\xc8\x00\xc79^\x97\xe0T\x19\x16:\x1d\x9d\xcf\x98.\x03|\xa3\x04\xefH\xc1\x93:\x03\xc0l\xdbP\x8b7<\xccc/\x90\x1fy&\x16\x9a\xde\"\xf3l\xb8\xe8\xb8\xa3\xa8\xdcY8\xe0\xeb\x9b\x96\x98\x999\x00\x91\x9d\x03\x10\x01\x86\xbe)B$+\x19\x1d9\xea !D-\x807l\x10AE.\xe2\xd0PA\x1f\x0f\x0cI\xf1a\x9fU=\xf1\x07\xb4}\xf0%\xff\x00w\x16\x0e\x17S\x1c+u\x8b3)\x08\xf8\xe9\x03\xa2\x0dp'\x08\x01\\+\x80l 0\xc9B\x00\xdf&\x04\xb4\x0b\xb8\xe8h\xc0m\x8cnAFIC\xcb\x8cq\"\xa5\x01!\xcc\xda\xe2\x13km\xf1\xca\x7fQ\x02\xd6(l\x95\xbc\xe2\xaf-\x81+\xe5\x15\x89m \xa2\xdb\x0b\xc4\xcc\xf8\xc2\x8a'\xeb\x0b\xb82\xbf@\xb3\xccvT\x0bx\x91-`\xf3\xee\xd7\x05\xc1I\x18y\xe4\xcc\x08\x03X\x19\xe1\xce\x0c\x0382>T@]\xe2\xa1\x03\xea2\x08%`\xa5\xd6\x7f\xdc\xc3\xfaY\x08j\xa0.\xf5\xd1\x1a!k\x0c 2\xc7\x80o\xe1\xbc\xbe\xb3\x90,2`\xcc$\x03\xae>\x98\xdb\xafgixV\x99\xbe\xf3\xb8\xe7\xe0\xf5\xf9\x8eE\xa3!\xae\xe3p\x84#\xefygS\x9b\x8e\xa7\xb1\x08G\xb3\x97\xd9)w&\x84cl\xaac=\xd0_\x02\xb3\x18\x1cR\xfa\x1b\x87)\x8e\xf1LG\xf3M\x8f\xf6NG\xf0O\xdb<\xd4N\xfe\xb2s\xbb\xee\xa7\x1e,l\xcc\xdej\x8f\xd8p{\xac\xbd\n\x97O\xd9\xf2\xf8\xad1\x1av,\xdf5\xce{\xed\x1d1 F\x0d\x08\x1fv\xf4\xeb\x95\xf7B\xeb\x9fj\x88\xe8\xcdF]C}\x1e\xed\xafv\x92B}\xdbNj\xe8g80F!\xff\x84\xc5\xc8\xa5\x8a\xd9\x01\x08c\x0frQ\x10\xc6\x1d\x14\xa5\xd1\xc6\x1c?wD\xf4z;\xfc\xdeA\x9eo\xd4\x0b\x146\x86q0\x8b\x97Q\xfcL\xe2\xf5\x82#Z\x01TK\xe0\xf7\x85#\xdb\x02t{\x80\xf5\x88\x07\xb4\x0cA\xad\x03\xde2\x8e\xdcB\xdd\x12`\x1d?\x82}\x1c#\x0c\xdb\xe2\x17\x8bmA\x9c&\xa2\x04\xadZ\xe8\xba!\xc4g[\x82\xd7\x0e!R\xdb\x12H}\xb4\x98\xed\x91\xf1\x1a\x83\xb1Nu479>\xf4;\xdd\x03\xb8\x02\xcf\x0fX\xe7Z@\xe3\x10\xd4\x01\x98\x04\x89,\x93 \xe9\x97\xdf\x91 \x89\xe4\x9eG\x8a\x12\x84\x8b>\x801\xf0,1\xc9\x92\xb6L\xb2$p\xdd&Y\x82\x94%\xd1\x9c\xf9Hi\x82r\xe8\xe39\x0e\xc5m\x01\x9c\x86\x9d\xb6\x98\xae}\x9fs\x1f\xd7\xab\xb8\x0e\xfe\x01.\xfe\xc8N~\x94\x9b\xdf\xe3\xe8\xaf\x97\xde\xed\xea\xf7\xb9\x8eDq\xba\xfb\x91<\x86\x93a^\xa7?Z\xa6\xf8\x1d\xffHR>\x07O[\x02\xdd\xff\xde\xce\xbb\x80\x01\xb1\xa1\x01hp\xc00x@t\x80\x00\x0e\"\xe0]b\x84\x8b3\x14(`\x83\n8\xfbb\xebG\x0c\xc0\xc0\x94\x9caJ\xce\xc0\xcb\x94\x9c!49C\x1f\x05\x83\x02\xd8\x18\x933\xd4N\x82\x06cs\xd6K\x0f\xa5\xedE\x03\xb0\xc6\xfb|\xcd6/\xab\xf9\xa1H\x9c\x1f\x99n>&}s,F\xc7p\x03\xb1n/\xe3\x8d\xc2\xf2u\xe0\x0d\xa1\xf6\xc0\xc8\xd9\xd6a*[\x91\xe7\x9aKK\xfbj\xf1\xe5\xad\x89\x04c\xa2\xf4T`\x01\xb2\xd7\x80N\xb2L\x8d\xbe\xfe\x8e\x8fm7`\xdb\xdd#\xe6[\xeb\x96\xdb\xa9\xf3\xa4\xb6\xde:\x1d\xb5\x02y\x05\x06\xf0K_Z\xa8\x1c\xe2\x93\x17M3\x18\x89\xd1k!\x1c\x98W\xd3;\xf2\xbe7\x82\xe9\xackdfYG\x05\xbb\xe1\xc6\xc6\xb8\xd6k\xb2\xf3\xd2\xe2\xbe\xacX\xcd+\x1ee\xd3a:q\xd6\x1c\xc0\xc8CXy\xd2\x13'=\x91\x97IO\x0c\xd5\x135\xb9\x8c\x15\xfd\x8a\xb6\xf8|K\x97\x1f\xcf?\xbf\xe5]D\xcb\xf6e\xbe\xd22\xa9\xf7\xcd>+R\x11\xf5\x8b\x1e\x03oH9g\xb3\xed&\xc3\xbe\xba$Y\xe5\xfb.\xc9\xd6\xb9\xb3\xb94\xdf8\x7f\xaf\xc8\xe6\xc8\x07U|\x05\x95~&\xbb}J{\x8b\x02w\xba\x0b\xc0\xff\x7fg\x06\xd8\xffS\xe7\x1f\x1e\xde\xb9sG\x9fn\xb8{\xa7\xfd;\x9f^\xfe\xff\x8d\xd3u\x0b\xae_W\xff\xf1\x82\xa6\xc9\x05-&\xd6\xfa\xfd\xb0\xd6\xc3\xee\x02\xfc\x13Y\xebY\x91\x93\xd5\x92\x94\xd5\xf9\xe7\xe7\xf9n\x97T\xa1,\xc6d\xde\xbc\xfa\xac.\nJ\xe5\xe8\xf3'X\x98\x064>\x05\xfb\xa2\xe8\xfc\xea\"k\xe2[\xd7\xf7}\xfe\x05{7z|\xec\xf8\xae\xbf@`\xe1i\xf8\xcd\xdd\xe1\x14\x9e\x07M\xa4\x82\x89\xf7A\xe7\x7f\xb0\xed\x01p\xec\x030\xed\x050NwoO(\x7fX \xb1;q\xf7\xc4\xddH\xee~\xa8.\xeaW\xcc\xdd[RnU\xbe\xb6\x8c\x13^\xbe|\xf8\xea\xfe\x83;\x0f\xee\xdc\x7f\xf0\xfc\xe1\xbd\x07\x0f\xef\xdc}t\xef\xf1\xb3\x87\x8f^\xdey\xf1\xe2\xf9\xfd\xef^=}\xf1\xe8\xe1\xddWw\xea[\xd3\x96&\x9b\xad\xf6j\x7f\xcbp\x7f\xfe\xf9\x8c$x\xebioA\x0d\x1dU\x16O\xf9\xe2\xa7r\xd3m\xa9\xf9\xfb\xd3\xd5\xaa\xa0ei\xfcM\xb9E-\xe8r{\xff\x1e\xd0\x8c\xad\xf2\n\x88\xa8\xf9Mo\x8a\x96y\xb9\xcb\xcb\xbb+\xba\xff\xf8\xf0\xc1\xf2@~\xd9|\xfc\x95\x92G\xbf\xee7\x1f?\xdd\x7fTe\xbf\\\xae~\xbdx@\xd6\xcb\xfb\xab{\xdf~\x03\xf03I\x93\x15\xa9\xf2\xe2(\xfd\xb8 )\x9b\xc5\xbb\x8f>_\xd1\xdd\x9e\xee\xf6\xfb\xc7\xf7>?\xde^\xfd\xfa\xeb\xe3\xcbb\xb3~\xfc\xa0x\xf4\xcb\xe3\xed\xc3\xf5\xbd\xcb\x07\xd9\xbd\xf4\x1b\xe1\xfdD/\x88\xe2\xe7u\xf3NY\x91\x8f\xf5\xc5Qu\xeb\xbak^\x7fx\x871\xeb\x0f\x0d\xa3j\x9f\x0fa\xd0\xf3\xcf\xfc\x12\x87\x1el\xc8>yq\xe7\xbb\x87w\xef\x7f\xf7\xe2\xf1\xdd\xfb\x8f\x1f\xdf\x7f|\xf7\xf1\xbd\xc7\x0f_\xbdz\xf0\xec\xce\xd3\xc7w\xef|\xfb\xea\xee\xab{\xcf_\xbc\xbc\xf3\xe2\xfe\xb7O\xbf\xfb\xf6\xf9\xcb;\x8f\x1e=\\\xfc\xfa\xec\xaf\x8f\x1e\xfft\xf5\xe9\x87\xf2\xd3\x8b\xef\xde\xdd=\xbdL^\xee\xff\x90\xbc_<\xfa\xf9\xdd\xaaJ\xf7\x9b\xff\xfc^ir\x7fX\xe8\x16T\xf0\xf1\x92\x9b\x93xU\xe3\xfay\x17\xb8\x99\x9b\x8af+Z\xec\x92\xac\xba}vX\xfc\x99^\xbd\xa3\xcb\xfd\xbd\x87\x8f>\xde5\xd4\x1bj\xe7\x86n\x8bO/~\xbd\xf3\xe0\xe7m\xf5\xe7?m\xbf{\xfa\xfc\xf9\xcf\xbf\xa6\xa7\xdf\x91\xf3\xbc\xfc\xe3\xd5\x9d\xe4\xe3\xab\xff\xfb\xe7\xd3\x9f\x7f\xf8\x8f\xfb\xbf\xfc\xf9\xa7\"/\x7fP7\xf1R\x98C\x85\xb8\x1b\xca\x0e\xd7\xef\xa8\x98\x93\x92~:\xd0\xcc\x84\x84\n\xa5Xt\xae\xc8\x10&j\xb1\x9a\xb3[u7t\xb5\xed\xe6=\xa6*\xf6F\xef\xba5\xb8I=\xba\xff\xf0A\x97\xd2\xefO\xa1?\x13N\x13\xba\xe2J\xc1\xf9\xe7\x9e\x1e\xe6\xd4\x0b\xb8\xb9~\xbe4)4\xb6\x93\xba\xden\x83*\xed\xc9\x86j\x9b\"\xa0\xaa\xe2\x0b\xc1\xd5L\x93]\x82\xee\xe9\xfd\xfa\x86R}.\xd5:q\x8dt}\x9d\xacK\xc2\xc8\x0e\xb1\xf53\xd9 EK\xebvC\x99\"\xa5\x1b\xad\xc6&\xeb|\x8e\xb4S4MN\x14\x97\xfe\x83\x08@\xb5l1M\xc3\xeb\xd6\x19\xac7\x19u>Q\xbc\xc7\x0fF!\xfa:\xe2\xb6\xe3!eQ\x9a\xa2(\xd1@\xb5\xe0\xd0\x1dE\xd15HQ\x9c\xe4\x1d:\xa0w\xf2}\xd3\xee\xa4\x0d\xbe\x9e\x89\xe2\xd65E\xf9\xc2\x1a\xa7(V\xbdS\x14\x04\xdf\xfa\xa6\x0fj2\x0e\x9e@\xcc \x0c\xd6JE\xf1\x86\xaf\x84\xf6a\x84\x9e*\x8aO[\x15\x05\xd1-\x87\xe6*\x8a]\x7f\x15eL\x1b\xaaF+\xca\xc0CH\xd3qEq\xf6\xcf\xa6\xef\"\xaa\xbau_Q\xcc\x1a\xb0(x\xe2\xaa6,\xebk:\xb1\xfc\xfb\xb8C\xd7\xb1]\xfd\x9b\xd5\x19B\x86`\x14\xcf>S(\xbc\xabV\xe7R\x83\xd1\xfa\xae\xf7\xb5\xa7\xa3\x04(\x87\xbd\x0e\xf7t\x0f\xe3\x84\x99'I\xd3.,\x93a:*m\x0b\x1a\xf3\xaa3\xec\xb1L\xaf\x0e0\xe85M\xb0\x9c\xf2\xfd\xb3\xdd@\xc0p\xd6\x06,\x91\xd3\xa6\xe4\xba\xaej\xa7\xf2\x17<\x8b\x8d'\xb0\x95\x07\xec\x1c`>c\x9d\x8b\x14~\x9eZv7\xae\x95\x81'\xa6\xeb\x9c\xf4/m\xff\xbc2\x9f\x84X*\xcf\xd2|\xf9\xf1\xf4\x05Z^\x85\xd8\xff\x03\xdc\x10\xbc1RT\xdaM\x19\xb5I\xac\xc0F\xc3\xc5\xb3\xe9]\xd7\x81\xa8\xdf\xa0\xfd\xf3\x170:>\xc9?P\x12\x12$\xb1\xdc\x92$\xebe\x06uO\xb6\xf0tm\x0f\x8b[\xf7\xea\xa5\n\xf2\x9b\xd4\xdb\xa2Jvv\xef\xa1R\xe7\xfa\xbd;w\xbf\xbdu\xf7\xde\xad\xfbw\xce\xef<|\xf2\xf0\xfe\x93;\x8fg\xf7\xbe\xfb\xf6\x0fw\xee>i\x15\x8f\xec\xb0\x9b\x1bl \xb6\x8e\xd4\xeb\x92\x92\xb2\x9a/\xd8\xcc\x19f\x01\xc5\x16G^\xd5\xa6\xf1>\xdf\xc2@Y\xa7\xf30\xb8\xf8\x18l\xbc\x0c\x16\x8b\x10V\xa4\x05\xce\x800\xfc\x05\xac\xef\xfd\x87\xdd\x05^r\x98\xd5\xfc\x88beE*rL\xfa\x17\xb5\xeb\xba\xaf\xdcsK=\xef,B\x84\x99\xb4\x98l\xc07F\xb3\xe9\x06\xbc\xe6\x1b\xf0\x0dl\xec\x80,\xa6\x1c8v\xbbN\xfb\n\x1c\xbbu\xbf\x89\x07\x8e\xdd\x05\x97\xb9\x07\x8e\xdd\xb8\xd9\xf4\x03\xc7n\xd6c\x06\x82c\xb7\xef0 \xc1\xb1\xdbv\x9b\x87\xc0\xd7|\xa8\x99\x08\xf4S?\xdcT\x046s\x11\xf8N\x0d\xf7\x89a1\x1d\x81o\x12\x00\\&$\xb0\x99\x91 \x88n\x97\xecd\x83\xe9U\xfd\x1d\xd9`\x14\x16\x9c4\xf9I\x93\xef\x94I\x937\xff\x88\xd8\xe8\xe0\xdb\xec0i\xf2G\x91\xf7\x93&\xffO\xea\xc2\xa4\xc9\x7f\xf9\xf6'M~\xd2\xe4\xbdt\xbbd-(\x9b G\x9b\xd6\xa6\xee,\x86H\x94\x8d\xcec\x18\xa6iN:P\xbfL:P]lNhpp1\x1c1-\x12\xca1\x0d\x98\xd9A8\xa8\x01C\xa7{\x99\xb1\x84\xde\xda\x9d\xd5\x10\xa9\x05\xab\xe3\x1a\"5\xe0tbCh#A\x97>Q8}g\xdb\xce\xdd\xd6\xb4\xad;\xb6\xc1\xe3\xdc\x06?\xd7\x02\x82s\xc1\xbb\xa1Q\x93\x08\x116u[\x9cNo\xc0\x0d\x1c\x90\x83\x07\xbf\xd8\x94\x1f\xf9\x97\xb3.^\x11*\x8ao\xde\x01?\xf7\x10m\xfe\xbfTJ\x89#:\xc9_\xd0\x94n\xf8\x93\x11\xf2\xbf\xf2\xe2-\xbd$\x85\xdcG\x1a\xf3\xe8l\xe2\x90\xe7\xc6\xe1\x87\xa8\xc6\x8aJ\x1c\x9c\xd3\x12xf\x83v8`9\xf3\xc6f#2\x06m;\x16\xbf\x19\x97\x1e\xacm\x0e\xd4\xc6\xd0\x92\x01\xda\xcd:\x9e\xb3\x9d*\x16\xb3D\xaff\xd1\xfd\x1e\x8e4]^\x15\xc01\xdc\x10\xf6\x11%\x06\x13\x89\xa2\xb2\x92(v%*\xfe\xd35\x8e\xacA^Y\xe3`:Q\\\xd9\x81\xf0\xd4;y\x02\x8c \xc7\xe2\xb2\xd2\xd7\xb4\xf3\x9e\x91\x92\xbe\xa5\x9f\xd0{m]\xe0s\xe8J\x9b\xc0\xe61\xd9\x16\x8f>o\xb7\xd5\xc3b\xf7\xe9\x82f\x8f\xee}\x97}L?\xa7\x87_\xaf.\xbe\xfb\xf5\xf1/\x9f~Y\xee\x96M\xf5\xdefyG3\xfe\xca\xa4\xd8$\x90\x17\xf0gz\xb5 %\x85\x8c\xec(T9lhF\x0bRQ P\x15$+\xc9\x92\xd5\x94\xd4\xbcI\x1f:\xbd\xbd\xf6\x8ef\x15\\$\x04\x9e\xf3~\xc3\xcf\xf9\x15\xd9\xd0\x02\xfe\xbf\xf7w\xee\xdc\xb9\xfb\xea\xd1ww\xae\xc9Z\xa11\xdf\x82\xe0\xad\x1f\x0e\x0b\xf9\x9b-\xaf\x80\x9bL\xab%\xeb\xb9\x04<5\xef\xd65{\xa9D<\x95\xfayi6\xa4\x9c\x93\xd5/\x87\xb2\xda\xd1\x80l\xc8wg\xf7j\nkJ\x8f,\xa4\xbf\xa6\x9d\x05\\\xd9\xda\x1dRRi\xeb\xb4\xc8\xf3\x94v^\xe3m\xea\xaeIj{\x14\xa9\xa7k\xbd,\xabd\xc7\xb8~CJ\xfe\xccO\x8f\xfb\xe1\xc6\x92dY^\xc1\x82\x8a\xf7\x8c\x92\x0c\x96y\xf6\xcb!\x13?_&\xd5\xb6C\xac\xdeB\xf3=\xdc=X~\xbb'\xf7\x0f\x0f\xc8\xfe\xd7\x07\x9b{\xc5\xe3M\xb9\xff\xb4y\xb4y\xbc,\xef\x7f|\xbc<\xd4\xafj]\xe4U\x92m\xe6\xfb\xfc2@\x08\xdc\xed\xec\xc9\xc6\xe2\xbb/\x92\xbcH*\xf4\x00\x1b*\xe7\xf4su\xc6\xa9\xd4\xa7\x1eb\x8d\xf7\xb2\x82A\x04\xf6\xdfg\x10\xefU\xb9\xfa\xd4e\x04\xd7wM\x93\xfc7\xd4\x97eE\xaa\x83\x9b\x11\xd7I\xc6H\x924\xbd\x9a\x8f\xc8\x8f{\xfd\x8a\x96\xd7\xfb\xa2\xc2*(:\xd2|v\xa7)]\xeb\x03Y\x94\x15I\x8cqP\x83\xe8]\xcf\xf2x\x9d\xcb\xf29\x93\x1e\xf3\x0bZ\xe1\x92m\xfb\x88\x96\x87\xc5.\xa9\xe6\xdet&\xc2-\xba\xa2\xfb\xbc\xd4\xe3\x96~\xdf\xa7\x88\x14\x13eE\n\xcfD\x9dIy\x10c'\x1b6\x95CJ\xbd\xe8.\x0c\xa2a\xf3\x9b\n\xbf\xefu\xc4N\xb6d\xf2\xdcw&\x8c8D\xf1\x8e\xbas&\x1c\x03\x9f\xd7R\xe4\xa1\xe7(2I\x05M\x06\x0e\xa0\xd1\x97{\x03\x08\x98e] \xa1\x9f\xf3Z\xfdCL\xdcE^y4\x01,\x0f\xe5\xee#5\\\xafc\xff\xfe\x8a-f-\xd6a\x7fX|}\x9a\xde/$I\xf5g\x06\xfb\xd7\x00\xb3\xbe\xa2(T\xf9G\x9a\xb9\xe7~U\xdb\xd2\xe6\xe5\x96\x14\xfa\x8d\x0b\xab~\xa14\x9f]\x9e%\x1f\x91\x99\xf1\x92\x15\xcd\xaa\x9e\x8e\xea\xf8\xf8\x92.\xca\xa4\xc2eB)\xe9\xf2\xc0\x94\xdf\xf92\xcf*\xb24:\xa6\xb5J\xf2\x15b\xef\xb7\x8b<[\xcd\xcd)\xda\xec2\xe0z\xb7r\x92U\x05\x99W\x9fE\xd6}}\x7f\xabO\x9a5tj\xef\xc2![\x88\x07k\x07\xf7\xa3\xa5\xe0\xd5\xb3z\x97\x84\xc7\xdf\xde\xb9u\xe7\xee\xad;w\xcf\xef\xdcy\xc2\xff\xef\xaf5I\xee\x9f-\x07'\x16*\x08rq\x8d\xe3aeG>\xcf\xe3PYnI\xb6\xa1\x11\x88\x1d\xf6+v\x8d\x1e\x94\xc2\xc76\xd7\xad\xb3\x03-\xaa[ \x80\x91\xd5a\xbe\x10\x84LY\x90\x94\x18lS(\xb60\xa8l\xfe\xb9S\xd55{\x1a\\\xe7\n\x08E\xed}\xbdU\xda\x89\x0fz\xf6\xed\x98\x93O\xb3\xaaH\x8emCK\xb2\xa4JH:\xd7\x96\xb1K\xcd0\x91\xa1\xdf/\x0b\xcagW\x13j\x9ez\xbb$3\xec0\xadB\xb3\x8e/\xbb\x93\x86X@\xeb\xf8\xf1\xac\xde\xfb\xc6:N\xc3\xb7\xfa\xd8l\xa3\xfa\xca\xc4\xc2\x17\x9e\xb4\xfe\x91i\x9b\xb5\xf6\xab\xb7t\xf5\xe5\xe6\xab,\x96\x815Ve\x85\xaa1l\xff\xff\xbf\x05]?\x81\xeb\xff\xcfm\xfe\xfa~\xc2\xe6\xa0\xbc\xdd\x9d\x91\xeb\xca\x0c\xb1\x1d\x83\x8f?\x0fZ\xaae\xce\x84-\xff\xdc\xbdbp\x04\xa6\x12g\x17\x9bm\xebg\xcd\xbd\xe8ERV\xa7\xcd\xcb\xb2\x88i\xf8\xca\xefG%M\xd7s\xae\x8e~\x11o\xf9\xd7fz\xb9\xe0\x8f^\xd94\xd6\xdf\xef\xd8\xcf\x0e\x8b4Y\xfe\x99\xe2\xb73\xff\xc4\xc5\xbb\xeewk\xdf%\x9b,\xc96A[G\x186\x11\xc7#\x87L\xce\xf3\xf5\xba\xa4\xee\x0f\xc5u{~\xc8\xaaD\xf3\xe5+\x07nY\xd2\x95\x88\xc6*m\x17\xb4\xa6\xc6\x19)\xc8\xee9\xbf-\xe0\x07wX\x94{\x82w\xd52&h\x7f\x08\xb0d\xfcD>7\xd2\xabl\x1b\x0f\xa0p\xfd\xbak\x89\x9bQ\xbe;\xec\xf7i\x00C\xfdk\x01*\x84\x8c\x9e\x91C\xb5\x9d]\xdc]\xd0\x8a\xdc\x9dq\xbe\xc1k\xa0\xecN\xba\xa3\xbb\x9c]L\x0b\xb2\xach\xe1;M\xd6y\xb1#\xd5\x138$Y\xf5\xa8\xc6\xfdU\x9f\xe7e\xb2\x99\x1b\x1f\xc3C\xd7\xff\x95\xce\x97yY\xcd\xf7\xb4\x98/\xaetO6\x86\x10\xeb\xc5\x05-\x92\xf5\x95\xa0EW\xf7\x1e>\xbc\xfb8\x06\xa9\xb2~,\"\x9cX\xef\x04\x16+\x04\\C\xa2%T[\n{\xf6'\xca&\x9f;\xd8\xd9\x9f\xd8\xa2\xc2._\x1dR:\xb3,5\xcf\xdd\xf3T\xc0;\xde\xd2r\x9fg%^VHXH;\x96^\x1f\xe5\xaf\xbdN\xd6\x7f\xcb\xd7\xfc\x9f\xcb\xbc(x\xa3\xec\x8aP\xeb\x113ejP\x17q\xf6\xe9\xfcP\x18_k0\xec\x03;R\x81\x95\xa7\xf0\xfe\xed\x8f\xb7\x0bZ\xe6\x87bYCw\xb6\xa4\x82C\x96|:\xd0\xf4J\xda\x06\xd7\x89\x1c\x16kG\x8eI!U\xd2\"!i\xf2+]}\xa3\xfc\xb2/\xf2*_\xe6),\x0e\xeb5-`G\xcb\x92l\xe8\x0c\xce\xb7I)\xfb\x0c\xbbCY\x017\x13&\x19\x90\nRJ\xcaJ\xa5\x94g\x14\xae\xdd\xbe\x06\xcd\xf6c4(\x0f}\x81\x92nv\xb4\x9d\xf0\xf7o\x7f\xbc^\xc2\x9e0\xbe8\x94\x95B\xa8\xa0\xfb\x82\x964\xd3Z`U\xd7\x874\xbd\x82O\x07\x92\xb2q\xaf\xc4\xacH\xb2|\xfc7H I\xa6V\xfd\xc0\x1a\xbb\xbd\xc9\xf3MJg|\xcc\x8b\xc3z\xf6\xe2Pp%\xfc\xc3M\xd1WN\xac\xdc\xe6\x87t\x05\x0b\nl\xb0\n\x9d%\xc9\xf2,Y\x92\x94\xef\x0d\xb5\x95\x1bt\xb6\x99\x9d\xb0\xe9\xe1\x9ctmv\x0d\x92\x12\xb2\xbcb\x1cG\xf7\x15]\xdd\x9c}\xa3V:\xcd`\xcf&,Y\xd2\x13\xa8(\xdbP\x87\xf2@\xd80E@\xc7>IY_\xaa\x9c\x0fr\x91d\xa4\xb8\x02\x92\xa6|\xbc*\x04\x923H\xb5\xa5Wj3\xf4\xf3\x9e.+H*\xa8r8\x94|t\x82\xf9\xb3\x8a~\xe6K\xf34\xbb\x9a\xc1\x0f\xf9%\xbd\xa0\xc5 \xdf\xbe\xef\xdf\xfeX\xc2\xe56Yn\x15j\x8c\x00c3\x95\xcf\x96[\xba\xa3\xf0a[U\xfb\x0f'\xe2\x7f\xcb\x0f'\x90\x17\x90\xe5\xf2\xd7\x13\xce)K\x92Io\x0b\x1fiI+8\xec\xb5\xe9f#\xd4\xda\xa0\xc5\x05-\xc4@wd_\x8ae\xe7=\xad\xf2\x9a\x7f\xa1sk\x03\x0e\xf6I\xd3\xfc\xb2|\xa2\xcd\xfe\xff\x84\xd3u\xdb7\xb6\\\xfb\"\xbfHVt\xd5t\x9f\xfd\x91\x94\xe5aGW3\xbd\xfa\xd3\x0c~8??\x83?\xbe<\x87<\xab\xd9[l\x99\xab\x84\xa6+ \xf07\x95\xf1\xce\xaf\xf6\xf4\xef\x7f\xfb\xbbBL\xaa\x10le\xe4*\x0b\x01\xcc\xe7o_\xe4\xab\xc3\x92\x02\xc9\x80\x16E^\xcc\xf4\x9e\xec\xf7i\xb2$r\xcc\x05e<\x92_\xd2\x15\x9b\x96%Y\xb2\xbd\x98\xe7\x1f\x0f{\xf9\x02\\ \x0bR\xd2\x95\xec\xb4\xd6\x95\xf7o\x7f\xe4\xedn\xc9\x05_\xea]\x87\x1bW\x82\x1dI\xddM\xf6\xdf\x17y\xb2\x02\x92\xe9\xd1E\xa2Q\xbe\xc1\n\xba\xce\x0bzRWc\xd4H\x95,\x924\xa9\xae \xa3t\xc5\x97pA\x81\x0b\x80\xe2\x82\xae4jy\x06\xc2\xf0\xcc?\xe5;`\x067\xde\x97\xb4\x8e\x87d\xe3e\x0c\xc1\xf6\xb2\xe0\x08\x92\x91\x8d>\xbeEA\xb9\xcaX\x93\x9b\xddT\xd7\xf6u^\xd1'P19\xb8\x96\x180\xc2{*\xf7\xf4\xf2P\x144\xab\xd2+ \x17$I\xc9\"\xad7\x95*\x19\xd7\xebd\x99\x90\xd4({\x17\x875\x14\x94ITz\x02$[\xb1\x1d*\x1b\xe0 4~\x8a6\x1c\xbe\xa0\x9b$cW\x05\x81F3l\x97\x99\xe05\xb2O\xca\xd92\xdf\xe9\xf2\xe6\x1d\xe7\xf4\x12\xf2j+\xb6Q\xa6\xeeW\xb8!On\xba\xdbWWrk\xdc\x84\x1d\xbbi\xc0B\xdb\x90\xbc\x9b\xac;\x900\x9d\x8e z\xce\x84P\xee\xe92Y'K(\xe9\x8edU\xb2,\xbbLkx\x99\xcazP\xd6\x8a\x08\xd3\xa5z?\xb8O\xd0\x9f\xd8&\\P \xc2j\xd49\x06\xb5sO\x1e!d\x91_\xd0\xba\xe3\x1a\xfb\xf1\xf9\xfd\xc6\xde\xaeI\x8da\x8b\xc9(\x17\xf5\xbf\xf9b\xd6\xba\x11\xafq[V\x81\xb7g\xcf%\xa5\x1d\xad\xb6\xf9\xca\xa9. \xe5+X[\xdaw\xb4jm${\xa7B'\xe7\xa8U\xe5\xdaYA\xeaGN\x1d\x1d0\x1c\xd0\xd3k\xc1\xaa\xaf\x8f\xa0e\xd7\xdd\x87\x11\xf5\xea\xf1q\xc8\x1at\xfaP\xc2=V0\xf0\x18\x86\x95\xe5\x95\xe0\xed\xd9s\x9d\x87\x17$\xfb8\xf4vW\xd2l5\xa7\x19\x13\xb2_U\x84\x8f\xd6\xa5\xee\xf7*`\xd9-\xaf\xde\xd1l\xf5R\x90\x13\x8a\xcd2O2\xd1\x1d~\xc2\xf6\xe6@\xe2\x1e\xe0\xc6\xe5\x96rAN\xf4A@R\xf6e5#\xc0j\xdf\xac7\xef\x8a\xae\xc9!e\xccc\x9f\xdd\xee \x06\xdc\xfe\xd8\xa2\xeb\xb7\xbf\x1e+\x08\xb1\x99\xa6\xcf\x845:\\\xa6I3\xf6We\x9d\x0d2\x89\xf4\xe6\xf5\xbf\xfbl\xf1\\p\x81\x98d\"\xb0,\xe2\xb8%\xa2KI&\x8e[\xa6<\x90L6\xach\xaa\xaf\xdf\x9c\xbf|\xc2\xef8\xe2gXs\xd5\x94i\xb6\x19\x9cf\x95P\xf2\xdb\x03\\,\xe7\xf2PV\xf9Nn\xe4>'\xd5\xf1\x90%\x14\xf4\xd3!)\xe8\n\x16W\xb0\xc979?Y\xdb\xd3\xa1o\xb2\x97\x0bUK\x92\xe6\xdf\xf9Z\xdch\xf8\x85$\xc9\x1aEaO6rx\xd6\x13\xab\xfe@a\xc4\xe6\xcf\xf2\x9eS\x0b\xadA\xe7\x16OKcy\xf33D]\x11\xc8nu\x85[\xfa\xf5\xbc\xb0\xff\x94\x9a0)K\xa1\xc2\x9f\x91\x0d}K?\x1dhY\xcd\xc4\xef\n\x91Ol\x1b\xf1\xea\x8c\x1c\x9b\x02vV\x97\x15P\xae\x7frU\xb5\xcb\xfd\xb6g%q\x87ESG\x0cI\xd3\xbd8y>\x1e\xfe\x1f\"f\x87\xads}\xfb\xe8(\xcdk\xa5nw\xa8\"\xe4\x87\x13Q\x15\xcfKR\xb2\x8b\xe3 $UY_\x9dJ8d\x82\x11VB\xc3\xbdLdh\x88Ke\xd3e\x0f\xe6\xac\xebT\x93\xd4\x98\x02'\xff\xd3}\xfaq\x02\xb2\xf2Pqg\xd9\x11\xf2We\x8b\xb5\xb6\xae$\x1b\xb4\x05\xf0\x18\x13\x14\x90\xc4\xb1\x1a\xca\xb4`VBVq)\xd0\xfa\xf4GR\xa0\x03\xe6\xd0|\xcc\x82\xe5\xbc\x82\xc8\xefD\x0c{o\xda\xa2\xe0\x80C\xc9\x01\xef\xc5,\xae\xb2\x03V\x85\x07LJ\x0fx\x15\x1f\xb0\x0en\xbc\x02\xe4d}E\xdf\xeeR\xd6\xd9\x9f\xcb\xfb$\xdb\xc0\xe7\xdb\xac\x8d.{\xf2\x1e8\x99_\xb8\xa3\xde\xac\x83\xd9_\xdd\xdd}c\xbbP.\xe4\x8e-y\x1b\xbf!\xc9\xa3N\nF\xf4\xd4u\xc2d\x0f\x8f\xd8\x17U\x83W\xa0\xecx\x12a\xd2u\xbf\"]W\xeaB\x92\xef\xad\xbb@h\x0b\xaa\xe2d\xe3\x0b\x0c\x13v\xaaIj\x9a&b\xe1\xc6\x8e\x1cF3\xa0\xc2\x1c\x86u\x0e\xbdJ6l0\xf2Xh\x8f\x01A\xae'\xfb\x9b\xe1\x97\xb4\x19\xfe\x0b\xbad<\x17q\xe8\xe6\x10-\x9b\xfci\x06.;\x82g~X\xd1e\xb2#\xa9\xba\x07\x9c\xdc\xff\x82.\xf1\xdc\x8f\xe1{9\xa7\xab\x84\x0dpq`\xdd\xeb\xcc\xed\x97M8\xf3\xf5\xa5\x7f\x89&\x17\xa3q\x87(\xf1xD\x14\x0c\xa7\xd8\x19\xdf\xc2%\xad\x1fX\xaaV\xcd\x92\xc8\x9a\xf9\x9a\x8fSV\xba^B\x8b\xc5\x94\xbc\xe0\xe3\xd0@\x1b\xe42\xdf\xed\x0eYR]\xcd+\xf2\xd9\xc9\x8aL\xc6\xcc\xf7u\x98\xb9\x991\xfb\x15\xf2\xecP\x06\xd5`K\xbf*\xc8%\xdf\x1a1lw%\xe5N`\xe9\x02\xa8\xcf\x97\xee\xbc\xe9f<\xe3\xac\xf2#\xe9y=Wgy\x9e\x06\xab8\xfb<\xff\xaa\xc0O\xd3Fv\x9a\xf5\xd8r5Cjv \xff\xf3\xf5\xb2k\xd0s\xe8\xdeF\x86q\xea>\xdd\xda\xb7{\xd5\xebI2z!\xec<\xdb\x8a\"\x99K+\x98o\xbfB\x94\xf0\xc4\xbaN\xd6\x95+\xa6\\\xb5\xc5\xdf\xc8rY\x1c\x04\x19\xd29\\\\\xa7\x99\x9b\x8f\xf0\xec\xac\x91\x18\xce\xcb\xdd\xe4p_'C\x0fO\x12\xf7[N\xd368\x07\x9b\xcf\xb46b\xabZ\xbb\xa9\xc3H`\xe4\x1e6\x90\x93\xbb\xda\xf0\x0b~s\xfbd\xd8PeS\x14\x9c\xcai\xe8\x87*fjg\x97K\xd4\xb4\x18\xaf\xaf\x0e\x0c>\x1d*\xceCE\xb8\xbcz\xca\xf5a\xd7\xf5q\xcae\x0f8ILR|\xc8q\xd2\xa53\xf0L\xc9\x8b6b\"\xf8@i\xdf\xf6\x18\xc4\xcf\ns\xf5\xa6\xae%\xdd\x9b\xfa\xce\x9f;[\x8b\xcd]\xbdy\xb3\x0d\x9b4\xecb\x98\x86\x1f\xbc\x12]\"\x83\x97\xe1/\xf2\n\xf8T\x9c\x9a\xc1k\xd1\xbbB\xfa\xac+\xca\xd4\xa8u{S\xde\xcer\xfdk\x95K\xf7t\xd0D[\x068`\xb6\x15J\xa1S\x1e\xc9U\xa8 \x17\x8e\x8b\xb5\xb3X+\xc0.\xa8\xddV\x0bWE\xb7\xf5\xc2Q\xd3c\xc5hkZ-\x19G\xc0\xa9\xd9\xf9\xa0\xd9\xb4\xcf\x9b\xa8\xc8`\xa60\x05T\xf6F\xd4~\xd0c\x0e\xf1\xe7Db\xcc\x1b\xa9\x06\x05]\xd2\xe4\x82\xae\x063\x89\xda\x19p\xa8\xd0\xff|\x7f\xb4]mvT\xf3\xa9\xcc\x83\xd5\x10K\xf7L\xea\xf2\x18\xddD#fS\x95q\n\x8b\nC\xf2\xf16^\xe0\x1a\x88t\xf6X\xd0\x16{s\xa8\xca\x8a\xf0\x98\xac\xc8\xb7W\xd4\xce\xd0\xea\xc2\xb4-~\xe7\xdb\x02\x9cS\xe2`\xcc\xee\xed1o\x7f\x85\x1b\x87\xecV}\xc2e7u\xe6\xeavT\xa4#n\xc5z\x92\xd1\xcf{\x9a\x95\xc9\x05O\xd8]\x15d\xf9\xf1D\x84\xf4\x94P\xf2\xe9\x80\x92p;\xebrK\x97\x1f\xfd\x97 \xc4\xce\x1a\xb0\xd1\x0d\xb31\xf4P}\x97\x92r;\x00\xfe[\x8az\xea6G](\xd0\x17\xe4\xd6H\xb5\xa7E\x92[\x8cN\xc6m\xe6@O\xae\x0b\x91{\x1aI\xcdu\x95\xeeO\xe3\xcb\x0b\x9aU]\xbe\xec\xf2\x16\x9f0\xa0\xec\x93Y\x8f\xc6\x0f<\x9b\x00\xe3\x02\xc6`\xc92\xa9\xf8^\x97\x10\xda\xb2\xca\x0b\x8eM\xedW\xe2\x91\xa2I\xc9\x03\xb8\xeah\xb3t\xc93x\x03\xd9\xb3\xf9,\x12\xfe\xdfb\x7f\xe7\xeb:Z_\xe6\xe5\xebOH^t\x8c*2\xf8\x90G\xb35\x1b \xc8\xba\xe2\xce~1\x8c-)!_\xf2`,\x9b\xf5E2H\xffF.\xff\xe6V\xa6&\xfc\xf1\x84?>\x06\xfe\xd8\"\x99\x15 8@\x1cK\n\x012\xb8\xa9\xfat\xb9<\x88\xc4\xfb\xab\xe7\xca\xb5\x00!\x84\xbf\xce<1\x93\xa1\xd2\x8f\xc0p3@\xef\x0ci?\xe8\xac\xb7$\xa3*0\x1f\xe9\xbe\x02\xc2f\xaa8\x88\x90U\x99(\xe6\x84\x07\x7f/z\x12\xbd\x02\x92]\xf1\x87\xeb\xd0\xec\xaa+\x1eh^\xfd\"^\xad\x89Q\x8f\xc6\xa8C5\xf0F\xef\x16\xf4\xa2\xa8\xdc(^mU24\x8f\xda\xf5M#S\x18OH]\xbb\xd4\xeazfz\x90.\x19\xa8EF\xd2\x1f\xc7k\x8er)\xebg\x80\xb5\xf8\xc4\x97\xf2\x87\xe0\x0b\x8a\xfe\xb0\xf01\x04NeL>3\xca\x00\x101\x05\x8d+ \x0d\x1fS\xa444\x11\x13\xd18R\xd1\x8cJF\x13/\x1d\x8d/!\xcd\xc0\x944\xb1\x93\xd28\xd2\xd2\xc4NLcMM3:9\x8dF\x8f\xf0\xb1\x9a\x02\x8eb&\xa8\x19\x9d\xa2&z\x92\x9aQij\xe2'\xaa\x89\x98\xaa&v\xb2\x9a\x88\xe9j0 k\"\xa6\xac\xb1'\xad\x91\xb2z`\xda\x1a\x8d\x98)\x8d\x8d8\xb2\xbc\x89l\xc6\xa6\xb2\xd1\xc8\xe9\xa9m\x06'\xb71\xa6\xb7A\x19 5\x9b\x8d\xff\x94\x1e\x98\xe6F\x17\\u\xda\x1b1\xff\x9d\xdf]=\xf8\xf04\xbb\xfaP\x1f\xcb\xfcZ@\x8aER\x15l\xd38zR\xcbA\x92\xe6\xca\\\x88\x9bJ\x7f)\x98\xb4\xe2\x02U\xf4d\xa1\xab\x1b\xdd\xb6j\xedAa\x99\xb3\x9aq\xd3d\xc1\xbb'\xe5h\xc9c\xb4\xf2\x82\x9f@{\xb2\xfcx\xfb\x90\xb1\xffa\xe7\x8eX\xc7\xd2\xb4K\xf4\x037_\xc3\xa1\x12\x02\xa2\xde~\xfc\xf5M\xb2Z%b/6\xaf\x06\xae\xe4\xe5\xa8\xf1\xf4?U\xe4\x91X\x82>\xfd\x97\"k&\xdc}\x02g\xac\x7fl\xdf\xc9\xae\x92fB\x93\x0c\x9e\xff\xe1\x0f\x86c\xe0U\x9e\xc3:\xcf\xe1{\x98\xcdf\xffK\xfb\x99\x0d\x96dW\xfa\x0f$\xbb\x9a\xb1\xe6^\x15\xf9\xee\xc6:\xcfo\xea\x9f\xccf\xba\x9cO\xd6p\x83U}\xcf;x\x9e\xdf\xf87V\xf7&\xfc\x97A\xb6\x99\xea\xff\xc3<\xf6{\x9e\xb1\xff\x89\\\x90\xc1\x83\x87\xef\xb9\xae\xc1\xa8\x0e\x18iR\xdex\x95\xe7\xb3eJ\xca\xd22P\xd1\x05\xf6\xb1\xe8{\xa7\x82\xde\x962\x03\xcd\x14\xdc\xf7L\xc1\xd9U\xb5\xcd3\xc3$\x88\xd6_\xe5\xf9\x8d\xd9lv\xd3\xb4\xd0b\x02n\x18\x7f\xe3L\xc0\xa7\x05;+\xac\xd2\xa9\x98\x94\x17/\xdf=\x7f{zv\xfe\xe6\xedMU(\x82$/\x18\xc5\xdc\x80h\xc2<\x1d\x0f<\xd3\xf1\xc7\\\x9f >\x15O\xbe\x87\x7f\xdb/f\xaf\xf2\xfc\xbff\xb3\xd9?\xf4\x8fHvu\xc2\xd4\x18\xf6\xe5^\x1c\xde?\x91\xa2\xdc\x92\x94M\x92\xb9\xa3\xa6\xa9P[34\x95\xac\x95\x86\xdeg\xbb\xb6)\xde\x11\xce\x90\xfc\xab\xff\xf1=dIjd0s\xfb\n'\x9ds\x0f\xc5\xf2c#\x83j\x85\x12\x16W\xed\xf1^K\xc9\xcb$M\xd9\x0f2f\x9e\x1d\x89}r\xd7\x0d\xc7\xf5mv7\x9a\xf1\x1f\x98js\x9d\xe9\xb8\x8d\xc4f\xd2\x9c\xad\x16\xfb\x83X\xb1>\xc1F4f\xe9U\xad\xcfk\x97\xadFm\x92\xb7\xfa\xaa\xbe\xe3]\xbf}\xbdON^(\xea\xa6\xc5\x0dBf \x86k\xeb<\x9f-H\xc1;\xfd\xf9\xf6\xd5\xec\xd7kb\xc4B/\xd6U|\xde\xe45\xf6\x1d\x13\xcf\xbd\x9f\xfe\xf4\xee\xcd\xeb\xfe_\xbe\xff\xfe\xfb\xef\xf5\xb9g\xdf\xb5wK\xa1O\xe4l\xbb\xc8\xc3T\xe8\xd7\x87\xb2\x89G\xd8\x1cRR\xf4\xe9\xe8\xd5+\x8e\xbck\x8f\xc1\x13\xa0\xbb\x05]\xad\xda\x03\xf1D\x9e\xad\xca\x8d\xb4s< \xeb\xde\x87\xff\xc3\x86\xfdA\x9aP\x9a\xa3\xbd;\x89\xb3z\xfb=1(\x88d\xf9\x91\xed\xbd\xf6B\xb1NR\xaa\xcb\xb7z\x8f\x9e\xd1\xa2\xcc3#;\xcb\x9b\xff:)\xcaj\xceg\xfe{\xb8\xabSj>d\x0cP\x7fw\xcf/Q\x01\x8c\xad^\xe3\xe3\xbf\xf6\x04\xae\x998\xbb?\xac\x99\xe8\xfd\xb5\x13\x13\x1d\xde\xef\xd7d\xc7h\xfdo\xd1\xc5\x7f7~\xc8\xfa\xad|\xe7\xeb\xfc\xe9Z*\xb6\xfd5\x16+\x94\x94pI\xd3\xf4\xd6\xc7,\xbf\x14v\xde-7\xc5K\xc3\xac\xce\xa8}v:\x11\xca\x96\xc2cB\x10t\x9ad\x8c\x93m\x80\x08\xb6\xe9\x13\xfc\xc0\x99\xb8\xe6\xa1m\x9e\xaez\xa6a\xbe\x05\x92\xac\xe1=\x90\x96\x04\xc9z}Z\x9c|\xc3qp\x83\xed\xdfz\xb8\xda\xb5\xb5\xb6\xa2\xfc\xfdo\x7f\xbfi`\xce1\xeb\xddo\xc0\xbc\xe4|\xd8\x8c\xd4\xdd\xd9\xbd\xbb\xf7\xcak\x86e\xac\xff\xab\xa7U\xd76B(hu(2\x11\"P\xffq\xca\x875\xf9\xa3\x8f\xea\x8f\xd6\xf2a\xa9\xb6n\x0c\xa6\xb6SMRs\xe5\xc32\x9b\xd9#\xda\xd8\xdd\xdbK\x0c\x86\xcf)]5?\x0f\xda\x0d\xd5\x94\xf5}\xbc\xb1}\xca\xfa>\xc2\xc0>e}\x0f3\xaa\x8f4\xa9G6\xa8\x8f0\xa7\xc76\xa6G3\xa5\xc75\xa4G3\xa3\xfb\x8d\xe8\xd1L\xe8S\xd6\xf7\x7f\xa5\xac\xefC\xf4\xa5\xba\x8e+u\xdc&\xbf\xe8$T\xe2/\xdc\xa3U\xa2=\xf2\xd5s\x8b>\x8b{P\xdf\x9c\xef*.\xb2\xe1\x9f\x04\xa5\n\xc3Q}U\xd9\xe8\xcc\xc3\x92\x0c\xd4\x8e\xa9\xees\xbd\xd62\x02=k^H\xea\xc4o\xf2\xbfVI\xe37\xaa\xb9\xcb\xcd\xac\x81)\x96vI6_u\xd9\x1c&\x96\xfaJXJ\x1b\xdaOI\x96\xec\x0e\xbb\x9aw$\x9c\xaef\x0b\xc624\xabh\x01\x179\x0f\xb1\x160\xb6\x9a\xd6\x8e|\xae\x17\x1a\x07p\xb3\xcb\xfc\x9f\xc8g\xde\x0fA\x86w\xe3)\x1b\xe96OW\xb4\xe0\xbc[w\x91Ml\xcb\xb8p*\x9eJ\xed\xd0\x12\xc7\x13\xdc\xeb\xce\xcf.\xcf\xaa\xad)\xbc\xa6\xc7\xe2z o)!i\xfc\xa3\x92\xb5\xbd\xc9/h\x91\xf1L\xc5u'J\xcb\xf69\x93\xbf\xa3w\xceHa\xcf/\x04\xba\x1c\x9f\xee\xbf\xd3\xfdw\xba\xff\xd6e\xba\xff\xd6\xd5\xa7\xfb\xeft\xff\x9d\xee\xbf\xffj\xf7_w\xdb\x91\x81`:\x0c,\x02\x08,*\x04L=\x0cG\xc2\xbf\xe4Dw)\x8e\x01|9\x11O\x16\xb0\x97\x17\xea\xa5\xa3K\xf00/\xbd\xee?Lc\x1d\x04\xf0\xc2\x0c\xd6\x07\xee\xb2\x8f\xcd\x0b\xec\n\x80u\xf5\xbd\xf8#!]N@\x97\x1d\xce\xe5\x02s\x19g\x01\x0b\xe4\xf2\xc1\xb8T\x10\xd7\x08\x08\x17\x02\xc0\x15\x0e\xdf2\x80\xa7|\xd0\xadH\xc0-C\xcb=N\x89\n\xd9\x8a\x0c\xd8\x8a\n\xd7\x8a \xd6\xb2B\xb5T\xfc\x8b\n\xd3\x8a\x03\xd2\x8a\x06\xd1\x8a\x0b\xd0\xc2\xc1\xb3\xbc\xe0,$4\x0b\x03\xcc\xd2`YzkX\x88\x8e\x1b\x92\x85\x04d!\xe0X\xbd.\xc7\x84bE\x06b\xc5\x83a\xc5\x03a\x0d_]/\x00\xcb\x07\xbf\xaa\xc5\xb7x9\xc4c(\xa3\xd9\xa1g\"\xbe\x05go\xdf\x9c\xbdy\xf7\xf4\xc7\xf9\xbb\xf3\xa7\xe7\xef\xdf\xcd\xdf\xbf~w\xf6\xf2\xf9\xe9\xab\xd3\x97/\x9c\xdf\xbdxy\xf6\xe6\xdd\xe9\xf9\xfc\xec\xe5\xdb\xd37\xeeO\x7f~s~\xfa\xfa\x8f\x98/\xcf\x9e\xbe{\xe7i\xf7\xed\xcb?\xbd|~\xee\xf9\xe8\xd5\xd3\xd3\x1f;\x9f\xc83\xe3 j\xb0v[wm\xc0|'\xdehas\xc95\xdfN\xc6\x15\xb9\n\xf2\xf9\xc7\x8eC\xa1\xbbh\xceIwvRII)NB\xde\xc8\xbe$\xa9l|\xe6n\xab\xbfpzs\xfd\xdf;\x96\xfd\xc6\x0c.\xdf\xa8Y\x1d\xb8\x18\x14]\xe1\x16\xe1N\xc3}\xd3\xb8\xa5+=\xc6\xd0{\xd2\xfb\x19\xd7\x11a\x98\x0f\xed\x87`;\xbd\x03\xe2\xef\x8e\x96{\x8b,\xe4\xda\x96t-y\x02\xdb\xe7i\xbefi\xbd\x03\xf5/c\xba\xb0\xa04\x83\x82\xfeB\x97\x95\xb7'b\xdf\xe8\xfd\x10\x7f\x1f\xd3\x8b5I\xd2\xb6\xf9u\x92\x91t^\x914\xbd\x9a\x0b#\xd6 +\xfd\xf5+Z^GY\x1e\xc8\xa2d\xfa\x04\xea\xdb\xebY\x8e#\x9a\xe5s\xa6\xd9\xcc/h\x95#*\xf4\x04\xcb9\x1b\xfb[>\xf4\xce\xb4\xf2$\x0f\xa4X\x01\x9f\x1a\xe9~2\xb8X\xeay,\x0f\x8b]R\xcd\xabd\xa7\x05\xe2[<$+R\xd1[\xec\xfbo\xeaN \x87\x15\xcdVc\xc8p\xf0\xe6\xe4\xe6\xfcZ\xdd\x9cB,\xce\xcb\x8a\x14\xa3\xb8E\xd2\x19\xc5,\xbdI\xae\x8fT%-lA\xe5\xcc\xec\x98>XH\xf9b\xd9\x08\x0eW\xe3\xbb\x8eN\xa4u\xb1\xab\x0ba\xf4 \xdfQj\xfd\xcc\xa4\xffxt\x1f\xaf\xde\xe3\xd4y\xd0\xfa\x8e\x99\xe1c\xe89_J\xc7\xf1-\xca1\xf4\x1bE\xa7\xf8\xe2z\x8d\xb7\xfd\xe3\xe83\x8a.\xf3%\xf5\x18\xb3\x0e\xf3\xa5\xf4\x97Vw1\x88\x1a\x99\xde\x9d\xf3G0\xc2_;0{\x1br\xa5`\x9b\xaa\x1e\xbe_\xfe:Sd0Jq2\"+\x00\xe3\xb8\xd1\xc2C\x0c\x90:\x07!\xd3qlR\x12\xe0\xf7\x9b\x81x\xb0\"\xa1Q\x1a\xa3Mh\xc4\xc6\xe5\x19v\xc0H\x95\xbd\x81A\x91\xd6\xa0>$\x88\xb4\xdbLx\xaa\xdd\x1a\xcdt\\\xad\xd5\xba\xe3\x9c\xbc\xe4\x08\xca\xb2\xec\xbb\x81\xaa\xf0\xbf\xf0\xcbR\xf1\xf6c\xe4\x1dy\x94\xd7\xa3\xfe]M\xad8\n>\xdb\xe7/\x01\xa55\xb2}\xdd\x9f)\xd8s\n\xf6<~\xb0\xa7z\x16\x04\x9c9e\xd0\xa13\xf0\x11\x1dy\x8dv\xbe\xa5\xd3\xfbFG\xe2\x8a'u\n*2\xd7V\xb9\xfc~\xd0n\xa8\x9b2$\x81\xb7rP\xaf\xaf?\xd2lSmko\xa0\x11\x1c\xdd\x00\xa3]c\xee\x7f\x84\x18\xf4\x18\x1d\xd8\x88\xcb\x87I\x1f\x1d~\xfeE=\xfd\xc6\xe9\xa3u\x89\x87\xee\x07\x0f\xc2\x1f\xd0\xbbEG\xb7ED\xfb\x83\x05\xf1\x0f\n\xea\x1f\x84\x89\xd9\xbd\x1f\xbb\x9f v#\xff|\xd0^\xfct\xc8\x8b\xc3\x0e9\x99C1\x84r\xf5\xf7\xb4X\xd2\xacb\xa7)\x13X\xfc4++\xf2\x91v\xb2\xf5^\xe4\x15\x95\xec!\x8e7\xfdt^hH\xd4e\x9e\x95\xc9\x8a2\x86\xe46\xb2.\xe7T\xdb\x82\x96l=\xbf\xd0\x18\x19\x87\x14\x95\x84h\xfc'-\xf9\x88D\xf4F\x97\xdf\x9962\x83\x17\xc2\xc8f\xe6\xa2;\xb3\x87\xdd\x81\\\xd0*\x9f\x7f\xe1\xd1\x08U _\xc3\xcfT\xae\x0d\xdf\x13\xfc\xddG\xf9O\xee=W\x87\xe7]16\x18\xbaj&\xa0\x1e\xf2\xdd\xdb\xf7\x0d\xb7\xda#\xbc\xca\xa6\xeb\x13\xb2\xf3\xc1\x1aE=\xea'Cv_Dk\x90\x16s\x03\xae3\xd2~BV\x96\xc4\xcf\xa3o{\x11cq\xc0\x93\x00:fL\x0e\xc4\x8c\xcb\x01w\x1a\xe8Q\xf19\x101F\x07\xbcq:04V\x07\xc6\xc4\xeb\x98f\xecj\xcf\xf9\xc5\x9a\x12zD\xdc\x8e\x81\x96P\xa4\xaci\xa1\xc7\xc5\xef\x18\xc8\x1d\xf6\xd6\xd4\xd0\xb1\xe3x`|,\x0f\xc4\x8f\xe7\x81q1=0.\xae\xc7\xbcE\x8d\x9d\x8c\x16\xed\x03\xd1#~ f\xd4\x0f\xa0\"\x7f f\xf4\x0f8SH\x8f\x8b\x022\xedqc\x1ai!j\xbc\xb1A0:>\xc8@\xd0\x94Lzp\xd4\x10\xd8\x12J{\x8exGRi\xcc\xf9?0\x92\xc8$\xf6\xac\xa9\xa5}\xfd\x18\x17U\xa4\x10\xe31F\xc6\x04\xd3Q\xa2\x8b v\x84\x11\x18\xa2\x8c`|\xa4\x91B\xad2\xa4\x9a\x1e\x17{\x04\xbe\x90\x1cp%\x9cF\xc4!\x81-\xd3m@<\x92\x9d\x86\x86G\x1f\x15\x9b\x04\x01\x93\xe1\x8bQ\x02\xef\xb8\xbd\xb1J\x10\x16\xaf\x04\xc6\xb4\xa9#\xe3\x96\xc0\x17\xbb\x04\x9et\xd4\xbe\x84\xd4\x8eY\xc2\xc62\x01\"\x9e \x8c\x89\xa9G\xc55\x01.\xb6 \x06\xc57\x81ub\xbcqN\x10/\xd6 \xec\xbd\xd08-j\xdc\x13\x8c\x8c}RH\x99RWG\x8e\x86\x82\xc8\x11Q\xe0N`mJamJb\x1d+B\nbFIA\xf4H)@GK\x01&b\n\xf0QS\x80\x8c\x9c\x02sRks\x9ac|\x9c\x8d/\xb15:\x92\np\xd1T`\x1aF\xcc\xa8*\x18\x1bY\xa5\xd02$\xbc\x8e\x19k\x05Q\xe3\xad`4?x\xe3\xae\x00\x11{\x05\xbd\xe4\xd7z\x0c\x16\xb8n3j,\x16\xf8`\xb3\xdeo\xad1Y\xe6\xcfmqY\xe6\xaf\xb5\xd8,\xf3g\x86\xf8,\xf3\x87J\x8c\x16\x84\xe0\x96\xdb\nv\xc0~\x1c\x1cs]\xbe\x14\x9e\xd9\xde\xde\xf1q\xcdu1\xc4L\x99\xbbtd\x9csp\x7f\x8e\x83{n\xba\xa1\xc7r\x99\xbbq<\x1ct]\xec1]\xe6\x1e\x1d\x07\x17]\x97~l\x17x\xe2\xbb`\x98G\xc8\x10\xeb\x05n[\x911\xe6\xcbSG\x8f\xfd\xf2T\xb0\xc7\x809+\x1e!\x16\x0cl\xf1`\xce\x8e\xd8\"}\xa0\x83\xd9\xd1\xc3}\x06\x93\xb4\xc4\x89\xc1\x04\xbb\xf9\x1d\xc1n\x1c\xd1f0\x94q\xac\x91g\x03)F\x8fBs\x02\x12U\xbf>\n8Pw*\x08\x90(+\x85c\x12\xeb\xb1\xfc\xd6p\xf0F\xc4\xc1`\x01QYq\x07\x1e\x19\xe1\xdf\xf0\x10\x1f}\xe0\xc3\x1f\xc4F D\xc6 xP\x08\xa3q\x08q\x91\x08\x18,\xc2\x084B\\<\x02\n\x91\x10\x17\x93\x80@%D\xc7%x\x90 \xc3\xb0 FBN\xbcB\x14\xc4\x02\x12\xb3`\xac\x19\x84c\x18\x8dd\x88\x8de\xb0\xa3\x19\"\xe3\x19\x8e\x81h\x88\x8ci\xc0\xa2\x1a\"\xe3\x1a\xdc\xc8\x86\xe8\xd8\x06;\xba!\x00\xdf0\x1c\xe1`$f\xcb\x8a*\xca\x08\x94\x83\x15\xe7\xe0U)\x9cX\x07\x9c\xc6\x11\x0f\xef\xe0F<\xf8{\x13\x15\xf5\xe0\xc6=DC>\x8c\xc5>h\xe4\xb8FcT\x1e\xe2\xe2\x1fl\x08\x88\xf1\x18\x08\x84\xe3\xdf\x89\x83@\"!\xac\xee\xd4@4\x84\x9d\x8e\xc1\xc74\x1a\x13\x1129\x18\\\x84\x7f\x16P\xd8\x88`t\x84\xd9\x03\x17\x01!\x81\xc0H\xf8P\x12~\x9c\x84s\xd6B\xb0\x128\xb4\x84\x19/1\x1a1\x81\xc6L\x0cEM\xd8\xa7 \x85\x9c\x88\x8a\x9dp\xf4\xc5\xc0\x89\xa3\x10\x14\x1a5\x03\xa2\"*\xa6\xc2\x86\xaa\x18\x89\xab\xd0\xbb\xac\xe3,\xe2#-\x0dG\xc6\xf2\x0ccO\x14A\xf5\x95\xa3b\x0dr\xcdA\xca$\xdb\x9c-\xdb\x0c\xa3\x18A\xa1\x7f\xa9\xcb8\x9c\x94\xf3\xca9\xb4\xa4\x0b\x94u>i\x17M\xde!%\xde\xd1e^d\xa9wL\xb9\x17S\xf2\x1dY\xf6\x89\xe2\xb2\x88\xff\xdc\xeaN\x8c\x9c\xa0\x90a\xacDOE]\x9e\x93\xb2\xacT\x03\xe0\xe9\x8b\x93\xdadK\x8b\x93\xe6\x1dTc\x0f5e\xae\xb4js\xe5t\xe1\x9d.\xbc\xc7\xbc\xf0\xea\xa78VC@d\xe0\xe4W\xa5\xb3N>\\\x84n\xa0&\xae5.\x85\x91\xaf\xec\xdb~l\xa2Z%\xd1\xa9--\xad!\x89\xeb\xc0\xde\xff\xbb\xb1\xf7\xc5\x80\x14\xb4:R\xb6\x93~\xd6\x96zv`\xaf\x8ds>4\xd5\xac2\xe7A\x89e;|\xa7\x08C\xfe'\xce\xcb\xec\x93$\xdb\xc8.\xe4\x99\xe9\x00(]|\xfd\xb6\xe3\xb9A\xf0\xb5b21L\xb1f*1|\xd37\x91\x18>0\x9bF\xdcf\x91\xf1\xbe\x14\xc3\x1c\xfd\xdc\xd8/\x10\x93c\xd4\xd6\x9d\\\xd8\x13\xc0\x8ann\xa8\xa8\xea\xe3F\xda\xfaS\xbe~\xd5\xd5\xa5w\xfb4n\x87\xae\x8d\xd0\xb2\xd1\xfa\xb5]\xb2\x0c\xd5\xa9;l\xd0\xa1f\xd6\xa6\x8f\xa8GG\xd3\xa0\x8f\xa3;\xc7\xd1\x9a\x8f\xaa/\x9b\xc5\xf7\x10\x1d9\x86vl\x91\"o:{W\xdb\xb7\xfd''\xdd[\xc1\xb6W]\xfb\xd4\xb2G=\xfb\x13\xb57\xcd\xfb2\xde\x9e\xd4\xf7\xe3\x91\xf6b\x94}\x18\x7f\x0f\x8e\xdf\x7fG\xdc{f^O\xb2M\xa0\xbalyi\xc6x\xbe\xf5\x18\xce\xfb\xc2L\xef\xebn\xdfl*\x95\xa4\xe1W\xa5vIV\xb5\x0f\xcb\x86\x8d\x97\xd5\x9d+\xd0\x03\xe3`\xe5u\xac\x92\xf1I\xcb<\xe1\xc8MV_~\x93d\xeb\x94\xdf\x8c\xe7l\x8f\xcdEp \x8e\xeaN\xbe/B\xb2\xec@R\x19W\xc8.\xd8\x0dM\xa6\xd4R\xad\xa1\x1d\xf9\x1c\xd6\x80\x8f\x9eG]l\xe9Im\xdcHo\x93\x93t\xbe\xc8\xb3\x15\xf5q\x90\xa4\xc6*\xb0I\x95\xf7)\x10u\x81T\xf9\xaey_4\xcd\x97\x1fK\xc6\x97\xf3+J\xdc\xca\x99\xf5Z-\x9b\x131\xd5t%\x89\xb2f\x81\x11\xd5\xd9T2\xa8\xc0\xf0v\x9eT\xa9o\xafl\xf5a\x97\xaf\x0e)\xb5\xf1#\xbf\xe0>\xe5\xebzV\xe4\x17I\xc9\x04m\xb0\x85[0\xc6|\xdfP@N\x80\xfdr\xa5Q\xac\xef\xe92*\x95\x8f\x8d\xe3\x9e\x05Ov>\xe4w%\xd7\x81\xef\x1c\xb3\xd3\x1e\xd0%p[\xa5`6\x10\xe8\xb3}Z3e\xf047\xec\x81\x03\x1fMs\xbeT\xe4~\xa3H\x1e\x1b\xedV\xeaN>\xca\x92h\x12\xe4`[?@ t\xf0\x0buL\x0ba\xc2\x1d\xec\x02>\xa41\x0cm$\x8c\x02'\xf4\xc1&\xf81\x94\x11\x07\x00\xb8\x0e\x01g\x1b~\x1b+\xfe@8\xc2\x13Cbc\xf4\xf5\x97\xe7\x1d6Cl\xbc\xf2\xb0(\xf7d\xe9V6zVv\xc3\xef\x8aaO\xfb\xc2,\x9b:\xdd\xed\xea\xd1I\xb6J.\x92\x15?8\xea].9_\x04\xb8\x89T&]\"\xec\x13A\xe8L\xb7\x04)\x934ZJ\xb9\x84TOF\xd5\xce\x93f\x14\x83\x84\x93\xbe@`\xe7X\xac;\xc4\x90\xb3\xc0\xbdh\x16\xe6\x1d\xca\xb8eJ\xcam\x92m\x86\xaa\xdee\xb2\xc9\xe8j.7\xf5e\x92\xad\xf2K\xe4\xb9\xdb\xdd\xc9\xbb$\x9bKRL0\x04\xd1\xe9\x9c\xdf\xab\xfc2\xab\x92\x1d\x9d\xffB\x92t\xbe\x92\xd1MN:|\x02\xe6k\x9e\x11(\xcf\xe6\xab\xfc\xb0H)\xefKx\xf3\x1a-\xd1\x9bPB&\xed\xb5\x89o\xd3N\xdd&'\xc8B\xb8\xb7\xea\x15\xd5UZm\xadG\xef@M\x83\xc5m$'\xcf\x00\xe6\x18PO\x01\x0f\xff\xa0h*\xfeH\x1f/9hbx\xcaQ\xdd\xda%/\x7f\x85\x13\x8d\xcek\xcdy\x1c\xeb\x94\xf5\xf1\xef\xbbd\x93%\xd9\xe64[\xe7\xc1L|AR\xbe,I\xb6\x99'\xd9\xba\xeb\x1c\x11\x83P?\xa8G \xff\x06\xfco\xdcm[\xe3g/\x98v\xc8\xb35\x89\x17\xbc\x87l\x10Y\x15\xb5\xae\x02\xf2\xbf\xa5\xc9fk\xcc\xf4\x19\xb0\x89\x9aQ\x0bj@\xeah\x06nd$U^p\xa72\x8f\x1c\x06\x02K\x92\xad\xd8\x9f)\xbcy\xcb\x7f8d\xbf\xf0\xc0\xa6\x0e\xc9$[\xd1\xcf\xf3|\xbd.i\xb4\xdeq\x9a h\x8a\xd4Tb\xe7\x0b\xc5\x0f\x16I\xa5\x05\xbb\x88~\xcd\x0fY\x95\x84:\xf5-\x017\xf2\xde\x91\xechY\x91\xdd\xbe3EK\x92e9O\x06T\xcf\x07\xf0v;\xf5\xab|\xb7(\xab<3k\xd8\x8b2\xda\xb15jH'\xf3K3\xc1]t\x95\xa5\x91'`DTe\x90d\x12\xd3\xd5p\xb3\x92\x05\xc9<%\x8c\x9e\xf8/\xd3\x8a\x8b\\42\x8b\xb4p\xcc9\xe9\x9d\xbe\xfecM\xf0\xf4\xf5\x1f\x9d\x14\x0f\xd9B\x1cx\x16\x82u\xf7\x10\x9dk;fa\xad\xe7\xf9\x8em\x1e\x05\xf9\xe7<\x0b\x96M\x15\xee\xfc\x1df\xb1f5Q*\xd3\x8e|\x9e\x07},\xdci\xd8:v\x1d\xbd\x9d\x99\xb7\xa4\x8d\x1d\x12,\xca\x93\xees\xb3d\xfd\x0dH\x00!Wvj\xa3n\x87\xda\xb2\xa0\x84g\x99\xea\xfc\xad\xc7\xde\xe2O\x87=;\x0d\xe6\x01>\x8e\xfe\xe9\xd1\x1bN;\x82\xa6\xf3\x9d\x0e+\xb8\x9d\x1a\xdf\xd8\xeb\x92\x97i\xde\xb6\x0c\x80\xe0\x9c\xfe\x9a\x18\x86\xa5/\xb6\xe5#\xe3\"k\xdf\x9a\x177\xde\xc2\xaa\x8bJP\xb3\xf7\x82\xa6t\xd3\xb9A!&n%\xaa\xe4\xc5\x1c\xa3\x885\x9d@}]nI\xa1ob\xdb,6r\xbb\x1d\x85\xea\xdd`2G 2y^\xa0\x12\xb64\xe5\x99vH\x06d\xc9\x0f\xe7\x19\x9c2\xf1$I\xe5\x97\x99H\xc5\x93g\xb4\x1d\xaa\xcc\xd4\xcf\xdf\x9e\xc8\x97 \xd7\xcd\x05\xd5\x0e\x902\xbf\x14W\xa1<\xa3\xea\xe0Q+\x10l\xa7[)\x8bg\xacf\xae\n\xee\x85\x04\xbbXs,\xa8\xa3\x96\xba\xb0\xd6O\xedw\xb9\x88\x8b\x0c\xb1\x17\x1a\xd4\xc5feAR\x92\xe9\x88\x0f\xe4\xda`QR\xa6\xccZ\x813;8\x83VKbL\xe2\xac\xf6\xbaX\x17\\v,\x9f,\xe8\xdeg\x19\x95\x0b\x92\xd2\x8c\xc7\xf6uX\x89~^\xd2}%u\x94\xaa\xf3\xb2B\x7f\x11\xd5l\xb0\x82\x9f\xebQ\x95\xb0\xcb\x0b\n\xe5!\xa9\xb8\xe9\x83\x9da\xcb4a\xad\xd5\x97\xe8\xd2)\x02\xda\x81`\xf7>S\xe8?z.*\xe2\x19\xac\xca\x8d)\xba\xa4\x8b2\xf1\x9cr%]\x1e\x8a\xa4\xba\x9a\xf3\xe9Y\xba\xef\xb0+Z\x91D\x7f\x01\xcd&\xc4;\x837j\x8f\x9d\x8f\x1dS\xf8CR\xb2\xeb\xcd\x92\xa4A\xa6\x84-%+}\x12Q;T>K\xa3l\x0eG\xda\xd7\x99\xae\x97\x9a\xd7\xb4\"\x15\x85\xaa Y)\x84\xc2\x8e,\xb7I\xd6{\xd0\x85\xb7\x8c\xcd\xaf\x14\xc5\xc7?\x00/br\xf3\xf0\xe4\xe6|\xf2\xf4\xde\x0b\x0e\xdf\x17\xf4\"\"\x83oI\xb9\x1d\xc8\x90\x86g}\xf6\xa4\xa8\xe6%\xad\xe6\xea\xf6\xae\x8b\xb5\x87\xe0\xec%\xaf\xaa\xdb\xd7\x9b\x9f8\xd5$\xab\xe8\x86\x16\xc6/\\\x0e\x1f\xb0N\x03\xf8\xa6\x02\xdc\xd3\xd1,\xda\x19)\xaa\x92V?\xf0YQ\x97\x9b\xdf2\xaa\xb9\xde\x05/\x07\xd9\xfc!\x8c\x94\xd8[\x82Q\xd8\x16\xec|\xc7\xfe\x19\xa1\xb9\xd6)\x14\x81\x98\xda\xf7u\x91\xef\x84\x9dn\xbf\x87\xfcP\xed\x0fU\xfb\xb7v\x0ft(p\x9fO\xd4>5\x922\x02-\xb2\xdfG\xa0\xc2\xf9E\xba%\"\x90\xa3\x17LQY\xd2\x08\xa4\x9a\xf5k\x8f\x17E<\x89\xe04\x1av{\xc1\xa0\xeb\xc4\xae\xea]\xe0\x9b\xe3F\xd8\x0f\xcfi\xb6\xa2\x05\x8fG\x12\x1bB\x88\xa7\xfa\xc4\xb8 \xa9\xc1=\x10\x17w\xc1\xfej\xbf\xbb9\xc6\xdf2\xe1\xfe\xb0\xd0\\\xa6N\x89\xea\x92\xa7\xd5\xf4R\xec\xf4R\xec\xf4R\xec\xf4R\xacZ\xa6\x97b\xbbez)\xb6S\xa6\x97b\xa7\x97b\xa7\x97b\xbd\xbd\x99^\x8a\x85\xe9\xa5X\x98^\x8a\x9d^\x8a\x9d^\x8a\x9d^\x8a\xd5\xca\xf4R\xec\xf4R\xec\xf4RlS\xa6\x97b\xa7\x97b\xa7\x97b\xe3\xbe\x14+ \xe1fK\xb1)\xc8+\xda\xcb\xb2n\xcc\xb1\xfd\xcb\x1e\xfa\xd8\xfdY\x8bC\xb6}g$\x86\xc2&w?\xb7AvD \xc6+\xb7\xe5\x08\xc8e;\xf1\xb1\x18f7\xe5Qhf\x1b\xe9A\xb8\xe6\xb6\x08 \x1a\x9a\x97[(\x9e (\xe7\xac\xa8@\x87\xd4:\xc1.\x19\x0dX\xd4\x16\xa7\xf9D\x07\x1b!+j\x00$d=;( I@\x03*\xa1\xea\x8d\x01/\xb5\xa5a\xc4\x98A\xcd-\xd1\x88o9v1\xf6\x91X\xcc\x0e\xdao\x8b\x834xA\x1a&H\x7f[\x9cL\x01V\x98\x7f[P\x04\xac\xd0\xff\xb6x\xe8\xf8,|0\n?n$\xd7\xd8\x95M!\x02m1\x04\x0bth\x98\xc2\x06\xda\xe2\x19\xb4/\xfa\xac\xec\x13\xc55\xf4QQ\xac=J\x9d\x88V\x13\xc7\x0c\x0dl\xed\xd1\xea\x05\xb9\x8a\x82\xd7\xf4H\x9a*\xda^y]\xd7\xf7Z\x86\x9f\x9e\xc5\x9d\x92\xc7EJ\x1eg\xbewy\xd5\x02\xab6\xd2%p\xdbD\xc1\x92\xa5\xdf\xa9\x97\xbc\xafM\x02c\x14\x94\xd6\xae\xf0e\xf5\x93\x01\xa1F^5\xc2ZS\xb3Bt\xbf\xd7\xf3\xa3\x1a\x06\xd9\xad0(\xa5\xa2\x16%\xc8\x7f>\xda\x83\x1e\xdb\x87>\xa5\xa2\xee\x16\x9c7=\xb2?}JE=\xa5\xa2\x9eRQO\xa9\xa8\xfd\xbew\x84\xc3yJE\x8d\x99\x1c\x8c?\xde?\x0b(\x9f|\xb0W~JE-\x0b\xc6K?\xa5\xa2\x1e\xef\xb3\x9fRQ\x07\xfb\xf3\xf5.O\xa9\xa8c\xf9\xfa\x8f\xe1\xed\x0f\xf1\xf7#=\xfeA>\x7f\xbc\xd7\x7fJE=\x04\x03\x10\x17\x050\xa5\xa2v\xe1\x01p\x88\x80)\x15\xb5\x07%\x10\x88\x13\xf0!\x05F`\x05\x8e\x8a\x168\x1e^\xe0\x88\x88\x81\xa8\x98\x81)\x15u@\xc5)\x15\xf5\x94\x8aZ\xfd\xc2\x836\xf0\xe1\x0d\xa6T\xd4\x83\xf0\x07H\x04\xc2\x94\x8a:\xb1\"\xb8\xa6T\xd4\xf2:\xd8#6\xa5\xa2\xfem\xa6\xa2\x06k\n\x86\xd2\x9e\x83aJ$6%H\xf9g'Hq`\xb2piQ\x0c\x04\x02 a\xfd\x9c\xe7\xc1h\xb0mRV\x96\xdd\xc1~\xea\xed\x8b6\x1f\xb8\xd8u\x02\x7f\"\x8f:\xa1[\x0e\xda \"\xaf\xbc\x89\x9b\x82`\xa5\xd2%\xaf+\x02\x92\xcb\x16\xa4L\x96\"#=\xef\xbf\xfe\x9dK\x0ftk\x81\x9c\xaaY\xf7\xf2jp\x8e\xfd!\n\xd9\xef\x8fC\xda\xaf\xf5=\xaf\xb1x\xb0${\x91\xf6R\x82\x88\xe4\x9f\x8bCJ\x85\xce\xb3/\xf2%-Kn\xf1\x12\xf3a\xa0'\xe5)\xffy\xb9%Ivb\xd2\xfa\x92l\x99\x1e\x84\xed,M;\x1f3M\x8d\xb0\xf1\x1e\x96\xa2/R\x11\x91\xbd\xb0\x82\xe9H\x8bh\xb9nH\xed*\xccA\x14\xaa\x82d\xa50\xad\xed\xc8r\x9bd\x9a#\x9c\xf7b\x9eh\x86&\xe7R\xd82\xc59W\xcf\x95!.:\xe8\x16\x84\xe1\x98O\xb4ytb\x07\xed\x0bzq\xa4\x0d\xb4%\xe5v$\x93[\xa0\x14{RT\xf3\x92Vs\x93\x98\xa9\x8b\xe7\n\xe8\xeb=\x98\x8f\xc4\xde\xcf\xbc\x05\xf5\xc1\x04\xb5\xf8\x12\x03\x82s\xaa\x003]\xe0\x9f\xb2f\xc1\xcfHQ\x95\xb4\xfa\x81\xcf\x9c\x89e\xf8\x15\xa8\x9a\x9b\xbb\x84\xe2Hc\x17d\xf3\x8c\xac\xd8\xd7\x82\xe9\xd8\xf6W\xbee\x7f\x8a\xdc|\xab]F&\xac\x8ek]\xe4;\xa1\xb8\xef\xf7\x90\x1f\xaa\xfd\xa1j\xff\xd6\xee5\x85\nW\xf7\x8e\xd6\xc7\x16|\x1d\x97.\xd9\xef#S\xe4\xfc'\xf5\xc1\xc8\xa4)\xbb-eK\x1a\x99l\xb3\xfe\xed\xf1i\x10\xa3L\xd2\xe4%\x1d\xf6l\x84\xa3\xfd\xdea/vtO\xbbk\x8eUq\x9b:\xa7\xd9\x8a\x16\xbb$\xab\xe4\xe6\x13\xe2\xb3{\"^\x90\xb4\xa4\xc6@%=\x17\xab1\x13\xabC\xea\xba\xe4\xad/\xb2\x00|s\xe4\x8b0\x00\xff\x89\xe0;\x0f*G\xb4\x01\xf8\xfa'\x8a_;\x13eh\xe4\x81\x95`\xd5\x83\xd0Y\x10,\x03#\x10\xac\xc4\x1c\x91 04:\xc1J\x8dw\xca\x13\xa1\x00\x10!J\x01\x86G*X\xe9\x11T\xb4\x02\x8c\x8bX\x80\xa1Q\x0b\xf6n\xa7)\x9f/o\xe4\x02\x0c\x8c^\xb0\x12\xe3\x98eD\x04\x03\x8c\x88b\xb0\x13\xa4\x95/\x92\x01bF3\x80?\xa2\x01bE5\xc0\xa8\xc8\x06\x08\x8fn\x80\x18\x11\x0e0\"\xca\xc1!\x9f,w\xcf\xbaD\x8ev\x80#E<@\xfc\xa8\x07\x08\x88|\x80\xc1\xd1\x0fN\x19\xee\x8e\x80\x80AQ\x10VRMt\x84#\x12\x02\xa4\n\x80\x8c\x86\x80\xd8\x11\x11\xe0\x8d\x8a\x80\xb1\x91\x11\xe0\x8a\x8e\x00\x9c\n\xe4\xbd\xa7\xe2\xb5\xa4\x98\xd1\x12\xe0\x8d\x98\x00d\xcf\x86EN\x18I\xd5g\x84;z\x02bFP\xc0\xb8(\n#=y\xd0\xdb\x15\x9b\x11\xd1\x14Fz\xac?\x95%\xa2\x02\xa2DU\x00.x\x00|\xd1\x15\x80\x8f\xb0\x00\x17\xecz@\xa4\x05x\xe8YP\xa5\x11\xa2. x\xf2p\xd1\x17\x80\x9c!d\x14\x06\x0c\x89\xc4\x00\xfb\xcc\xc5\x89\xc8\x00\\T\x06 \"3\x00\x15\x9d\x01\xfeY\x0d\x8b\xd2\x00t\xa4\x06X\xa35 F\xc4\x06\x84Dm\xc0\x88\xc8\x0d\xf0L!2\x82\x03bGq\x80\xaf_\x16N\x1e\x14\xd1a\xa4\xe4\xc8\xcf(J\xd4\xc8\x0epDw\xc0\x88\x08\x0f#1[\x16GQFDz\x18\xe9\xd9\xaf\xa2\x9e\x08\x10\xb0F\x81\x805\x12\x04\"G\x83\xc0\xa8\x88\x10#9S\x94\x08\x0c\x8d\x141RrG\x8f@`\x04 \xe0\xa3H 4\x92\x04\x82\xa2I\xc0q\x829\"\x06 j\x00\x13Y\x02\xa1\xd1%\x10\x12a\x02\xf6A\x8e\x884 \xdc\\#\"P\xcc\xbcm\x8bB\x81\xc1\x91(fR\xb6\xe8\x148B\x84\nD\xe29d\xa4\n\xa0\xa3U@\x8bX\x01k\xd4\n4wcS\xe4\nX\xa3W\xc0\x7f\xa76G\xb1@P$\x8b\xe9kK4\x8b\xedSSD\x8b\xfe\xad\x95h`d\x0b \xa2[`\\\x84\x0b\x1c;\xca\xc5\xd4@\xbcH\x17\x1b\xf5H\xd1.:\xf9\x91\x11/\x00\xb6\xa8\x17\xf0\xed\x01_\xf4\x0b\x82\x805\n\x06\xc6\xbb\x0d\x1d\x111\xe0\xeb\x19x\"c\x00C\xc0\x11!\x03\x98\xfa\x98H\x19\xc0\x10rD\xcc\x80\xbf~\x9c\xc8\x19@D\xcf\x80\xbf3nP\x8f;\x92\x06\xf0\xe4\xed\xcf|\xda\xa3j`<\xcbb\"l\xc0\xdf\x0c \x9a\x02O\xb4\x0d\xf8'K\x14_\xd4\x0d\x84\x10BD\xdf\x00\x8e\x1e\xc6b\x0c\xc3#q\xac\xf4\x16\x14\x1b\x8d\x03\xbe\x88\x1c\xf0G\xe5\x00n2\xfcl\x8d\x9b\xb0!\x81;FB\x8eQ#\x02z\xc0=j\xdfH\xc6\x06\xf7h\x04\x8d^\xf0\xc1\x01?\x1a\xa5:\x00\xc8\x1a\xf4\x03\xb1\x03\x7f\xc0\x12\xfc\x03\x91\x03\x80\xc0\x19\x04\x040*\x10H\xa3\xc5\x03\x83l\xc1@\x10! \xc8\xc4\x18\xe6\xa0 \x18\x1b\x18\xa4Q3\x05\n\x01&X\xc8\xbc[\x1c\xf1\x10\xd6H\x0c\x19\x83\xd1\xaf%\xe9\xbd={^\xf7\x0d\x17\x8bq\xc6\x84IxF^.\x83:G\x9e\x12\xa3\xc4~\x94wp\x8e\xa1\xe1\xf6\xd4Fjq\xdbWR\xc2._\x1d\xd2a\x01J\x03r\x85\xb3s\xcf\x94H\xb8\xadbB:\xdb\x14!F\xcd\xf8\xb6{8\xa96F%\x16E67\xf3\x15\xcd\xf2\x9dgfz\xcbf\xe0\x07\x1f\x0f\x8a\xaf\x03B\x7f\xce\xf2<\x0dg\xb6%\\\x94\xae x\x99U\xc5UG%\xefn9\xc9\x04v\xb7\x13p\xb0\xd9\x05\xc9*&\x82\xc8\x8aTDU\xa4}=\xea\xf6\xa5\xef\x8fJ\x93\xb2\x12\x96\xcb=)\xaa\x84\xa9d\x1d\x15\xf7\xba\x0e\xbei\xbb\x9em\xb8\x146(f<:\xa5GQ\x82\xce;v\xbb\\m\xb2\xacd4\xb5}\x17\xf7\x87m\xd9\x96\xf6-i\xd9\x8e\xce\xad\xe8yE\xa4+\xaeY\x7f,\x16\xb5i\xb7O\xbb=\xdeng\xc59=\xce1\xf9\xc7\xa3\x8d\xa5\xab*\xd1O\x87\xe4\x82\xa44\xab\xc4\x1e\xd6>6\x10\xa4\x9f\x97t_I[\xbd1\x8e\xa2\x856\xd6#S\x1d\x87\xf2\xee*\\\x8d\xfc\"c\xb8p\x03\x94\x87\xa4\xe2P_n\xa4J\x13K\xdcF\xa3Zu\xe7\xd653\xddab\xa7C\x19wi\x92^\xfd\xce5\x010!\xb3\xd0\x1bs\x9f\x9ca\xfc\xda\xc8\xa7\xf4\x17S\xfa\x8bc\xa4\xbf\xe8\xdb[\x8c\xd7\"\xdf\xd5\xabWIR\x0b\xb6\xb6\xbc\xaf\xcd\x16/\xb4\x0d\x8c\xbe\x96 \xd3\x87e\x7f\x88\x1f{{\xa31\x95\xf0k1[\xd8\x1a\xc6\xd41\xe2\x0d\xda&\x9e\x9b\x95\x85\xbd\xda{PH-\x87e\xe4\xb8\x91\x9b\x08]\xc7sl\xbb\xf5\x1b\x84f\x83\xa4o\xd7f\x10z\x8c\xb3\x8da\xf5|\x87\xbba3(\xdaJ\xd6a^\x97\xaeb\xd1R\xfc\x19p\x94\x03\xd4\xb5\xff\x0d\xbdm\xa5\x00r\xfb7\xbe\x8a\x17#\xcc2_\xde(\xf3U\x9bd\x86R\x18\x84\xa5\xf0\xb1t\xbb\xae-\xceMHa.\x96\x85\xa7\x8b\x9b aKS\xee* \x19\x90%?\xf5t\xd5\xfa\xb4\x82\xc4p\xa5\xcd/3\xe1f\xc83\xda\xce\xa5\x0c\xff\xe2\x01\x90\xf92!\x8d\xb3\x86\xfbr:^\x0f\x9d\xde\x9aQ\xd2\xdb\xb1\xdcu-\xd2`0/hfjQ\x9c\xab'\xdcD\x81\xd5|\xab\xf7s\xaf\xdf\x9c\xbf|\xc2!\xc4\xd2\x9f%\xb0\xb8 \x97i\xa7YU+\xcdu\x88Z\x17\xaa\xa8\x11\x13\xb2Eo\xa4L6\x19\x11I\x85\n\xa6\xfa\x17\x82)6\xf9&\xe7x@\xecu\xc2,\x0b\xfb\x97\x89\x17\xb6\x8bD\x8fR{s\xfa\xc6\xc41\xc1\x17\x88\xfa\xd2\xd0\xa55\xdd\x19\xa6;\xc3\xb1\xee\x0c\xea\xdc{\x0fm\\\xb6<\x13\x85\x8e\xd6\x80U\x1a\x825\x85F~[6\xc6\x85\x06\xd0\xa8\xd4l\x95\xc3]i\xee\x8c'\x166rg9\xb1\x9e0\xf6\xf3\xa5\xb2\xe64q\x1e/\xbe\x93bx\x06\x130\x83\xce\xdd\xb9K\x86d-\xb1g'\x19\x94\x97\xc4\xf6j\xaa3#I5.\x17\xc9\xc0,$\xc6\xdc\x0d\xfe\xfc#\x833\x8f\x0c\xca9by)\xb5\xf2g\x1b\x19\x92g\xc4\x16\xfd\xef\xcd024\xb7\x88\xe5\x85TgV\x91!\xf9D\xdcyC\"d\x0cA\xe5\n \xcb 22\x1b\xc8\xd0< \xe6\xd7Nm10Qs\x7f\xc4\xcf\xfa\x115\xdf\x07.\xd3\xc7\xb0\x1c\x1f\x96 ve\xf7\x08\xcf\xeb\xe1|\xdd\xd4\x96\xd1\xa3\xc2\xe6\xf2\x18\x9a\xc5Cd\xeb0\x104\xe7\xef\x18\x91\xb9\xc3\x92\xb3\xc3y\xc4;\xf3t\xf8\xcf\xffx\xb99\\Y9\xdc\xfd\x18\x96\x89\xc3\xf2\x86\xa9+\x07G\xa4\xec\x1b#\xf2n\x98w\x92\xe9(\x1f\x91k\xc3\xf0rie\xcc\xb216\xbf\x8679\x84#\xa7\x06*\x9b\x869\xe8=,\x83\x86\x99\x86\x16T::_\x06v2092\xdc\xe3F\xe5\xc5\x08\xcc\x88\xa1\x07\xd9F\xc8\x82\xe1\xcd\x7f\xe1\xce|\xe1\xcbya\x9d\xa5\x90<\x17\x98\x0c\x17\xa6\xdc\x16#\xb3Z \xf3Y\x0c\xcbda\xc9\x15\x81\xc9^\x111o\x85\xa5\x17\x1a\xa7\x0d\xcaR\xe1\xcaH\x111\x17\x859\x0b\xc5\xd0\xfc\x13\xd6\\\x13#\xb2L\x18\xaf!\xce\\\x12\xa6@wS\xfe\x88x\x99#\x86\xe7\x8c0\xe4\x87\x18\x94\x19\xc2\x99\x05\x02\x9f\xff\x01\x95\xf9A\xda109\x1f\xe4\xa7\xdel\x0f\xc6\x14\x08\xe6\xd6\xb1q\xf6\xfe\xdc\x0e\x01Y\x1d\x90\xf9\x1c\xb4a\x8c\xc8\xe1`d\xe3\x11\x99\x1a4k\x8b1G\xc3\xb0\xec\x0c\xb6L\x0cqs0\x8c\xe3\x07T\xde\x05L\xc6\x85\xee\xb1b\xca\xb2 n3z~\x05Sf\x05\xeb\xcd\xc7\x94M\x01\x9bG\x01\x95A\x01\x97;\xc1\x9b5!(_\x82;S\xc2\xe0\x1c G\xcc\x8ep\xac\xbc\x08G\xcb\x88\x101\x17\x02*LF\x14w\xe6\x03k%K\xb6\x83*\xdc}`\xcdm\xe00-\xd8\xf3\x198*Ys\x188\xea\xf8\xf3\x168*[s\x15X\xeb\xc4\xc8O\xe0\xceL`m\xda\x86\xa0\x1a\x10\x05\xe8\x86K\xd9\xb2\x0e\x0c`\x1d\x7f\x8e\x01+Q\xf0\x82\xf0\xed\x81\xfb\x8e%\x07o\x16\x01Deo\xe6\x00'\x0d\xbf]m`\x9e\x00\xf3\x8b\x9d\xa8\x0c\x01\x8e\xdc\x00\xce\xac\x00\xce\x81\xba1y\xbdi\x18\x12\xeco\xee\xb27\xa4_\xeb\xb2tx\x9b\xfd\xcc>D\\\x1b\xdf\x1f\xee\xcb6\xa0\xe9\xc2\x91p\xed\xf6\xff\xb2@8;\xea\xcc\xca\x13^\xbc\x9aCc\xfb\xa7G\x16! \xb0^\xd9\xe1\x83\xc1\xa2\x80\xb0\x01\xad\xb8B{\x10pXoK\xc3\xeb\xfae`<`\xac'\x80\xc7\xd5\x15C'\xa0\xacr\x9eZ#M\x85\xf2\\&\xd9&\xa5\xdd\x10\xbd\xb6_=b\x86\xd8\x94G\xa5\xf0\xbc\x0b\x85\xd18\xe2a\xce|oA\xf9z\x13\x15y\xe6\xc6\x9eEC\x9f\x8d\xc5\x9fi\xe4*\xeb\x9bOq1hr\x1b\x19\x064\x16\x87\x86\x00_y\xdewB\xa1\xd1\xec\x8f\xb0\x84!\xd2\xect\x0c~\xfe\xd1\xb8\xb4\x90\xc9\xc1`\xd3\xfc\xb3\x80\xc2\xa7\x05#\xd4\xcc(\x88\x08(5\x04N\xcd\x87T\xf3c\xd5\x9c\xb3\x16\x82W\xc3!\xd6l\xef1\x8dD\xad\xa1qkC\x91k\x8ew\x8e0\xe8\xb5\xa8\xf85G_\x0c\x9c8\n\xc5\xa6Q3\xbe\xb3\x14\x11\xd7f\x7f_i\x14\xb6M\xef\xb2\xe9]\xa5\xd8h7\xef\xdbI\xe6\xa7]\xcco&\xc5C\xbdE\xc6\xbd\x1d\x03\xf9\x16\x82}C\xa2\xdf\x82\xf0ox\x04\x9c\xf5\x19 [/\xb0\xb8'?\x0e.\x08 \x87\xc6\xc2\x19\x07\x14\x1b\x0f\x17\x17\x11g\xc1\xc4\xc5F\xc5\xc5\xc6\xc5\x8d\xe7\x11\x146\x0e\x87\x8eS\xdf\"2\xbfC$\xee`\xa67\x88\xcc\xef\x0f9\xeel\xe6w\x87\xb0X9$Z\x0e\x8b\x97C \xe6\x021s>\xd4\xdc\x08\xdc\xdcQ\x91s\xc7\xc3\xce\x1d\x11=\x17\x15?g{G\xc8\xca\xcbn\x14\x9d\xb3\xa2\x05I7\xd8%\xe3x+\xc8i>q\xbd\x11\xe4\xac\xe8x\x1b\xc8Y\xcf\x8f\xad\xf3z\xf9\xado\x019\xea\xc5\xc0\xd8\xf9Pv\xce\x0e\xd8A\x1a\xee7\x7f\x10$\xcd\x88\x0c\xfb;?\x03Y\xcc\x8f\xbb\xf3`a|h\x18\xf7{>N\xa6\x00/\x02\x0fI\xc0\x8b\xc2\xf3\xd2\xf1Y\xf8 6\x16\x0f\x89\xc6\xf3\xbc\xd5\xe3y\xa7\xc73h\x1f8\xe8H\xb8<\x042\xcf\xdau\xd7:\x8d}`Gw\xed\x0d~L\xa7y<\xa7G\xce\xf6\x90N\xd4GtL\x0f\xe8\xc4|\x8a\xe3}\x10\x07\xac\xe9\x88\xca\x8egA\xbe\x1e\xf3\xe9@\x0bF\xaa\xfdfB\x84M\x88\xb0\xc8\x880\xb5\xa3\x16\xe0\x15\x1a\x17\xcd\xf1]\x92\x96\x0f\x1e\xfdV{\xf8Dc>k*P\x13\xe4\xca\xb0P-\x06\xd9\xf8\x8c\x89\xb3\x86\xf1\xc9\x12C\x0d\x0d\xad\\\x1d\x01h\xe6\xc1##tQ\x9dI=\xe8c\x04M\xb3R\xe1\xc1\x1a[\xe9\xda\x9f\x0b\x18\xa0(\x0cy\x10\xa0A\x0e\xf7(9\x12\xec6m\x0e\x7f\xe0\xa3\xf7\xa0\x87\xa4\xd6\x83\x0e\x8f{\xcc\xa3\xaf\x9d!6\xe2\xcb\xf6\x15\x0d\xc4n\xb4\xb2\xa5q\xc5L\xacheB'\x05\x95\xf1\xac,g\xa0bb3\xed\xb3\xde2\x8f\xe2\xa5\x1e\xff`\x17 \x18\xf0\xeaz %\xe0Hw\x8a\x19\xefA\xa8\x8a\x18\xa7\x80\xf1R3 \x17\xa7h\xb1P\xb4\x89\x15\xe3\xe7v\x912\x8a :t\xd4\xa0\x04?\xcb\xfaEN\xf8+!\xdd\x94\xb6\xf5\x1ej\xf4\xe3a\xaf\x81\xb8\xde\xfe\xe8e\xb0El\x82Q\xfc?\x88\xf3=qN\x16\xde\xf2\xe8\x17\xa8\x9a\xd6\xa7\xd1,5\xa7g\x01\xbc\xf4\x8f\xf7,\x80\xfbI#GU\x9f\xf1)\x96x\x11E\x8f|\xc2 \xb60\xdd\xa5C\xc4\xfd,\xd98\x1d\xc6\xb4k\xea\x81}\x11\xe5\xdb\xff\xcc\xd8\xb4\xa3\xfe\xf5v\x14\xf8\xde\x05\x18w_ :\xce{\xa4\\\xcf}E8\xda\xfb\xf4\xfcO\\\xf9\xd5\x17\xecP-\x0fz)Oy\x8d\x7f\xc4k\x80\xf2b\x08uC\xeb.CM\x1a\x98\xaf\xbf\x88|\xfcW0N\x84}\x1f\x18e\x8c\x0bu\x0e6O4\x16\xd5\xb1\x81\xcd\xf2D\x17\xc4\xc2\xa3\x98\xf1{\xe6\xf7o}\xf0\x7fc\xe6\x9dh\\\x830G4\xd6\\\xf4J\xd8\xe3`\x0dS`\x8f}5\xca\x1d\xb3\xd4\xa9\x8c\x91\xae\xd6\xed\xebV\x16\"\xc6\xb5\xda#Z\xe3\xc5\xb2F\x8bb\xb5\xc6\xaf\x9a\x80\xbc\xc8\xc8\xd5X1\xab\xeeh\xd5Aq\xaa\x83#T\xf9x\xd5\xc0Jkl\xea\xe0\xa8T\xa1\x92(\xd4,\xf1\xa8c\"Qy\xd4\xa9:\x1a\x03XzH\xf4\xa9=\xd2td\x8c)*\xba\x14\x1fI:\"\x86tD\xf4\xa8A`D\x8c\x11\x8d\x1b\x1d\x1a-.\xd4\x1f\x11\x1a-\x16\xd4\x16\x05:&\xfe\xd3\x18\xebYa\xa2<\x87\xc6wZc9\x07Fq\x1a\xe27\xad\x07\xa5\xd5K\xef>A\x07\xc6i\xb61\x99\xa6\xf9\xfd\xc6\xdf\xf6\xb8\xa8L\x11\x85\xd9!\xa7\xc7cF\x88\xc4\x1c\x17\x83\xa9p\xb9z\x18\x8e\x8c\xbb\x94\x13\xdd\xa58&\xc2\xd2\x19>h\x89\xaa\xf4\xc6S\xea\xa1U\xf8\x18J\xbd\xee?Lc\x1d\x141\x89\x19\xac/J\xd2>6odd@Ld?|dd\x1c\xa43\x02\xd2\x1e\xfb\xe8\x8az4\xce\x026\xd2\xd1\x17\xe3\xa8F7\x8e\x88kDD4\x86\xc72\x1a\"\x07}\xf1\x8b\x91\"\x17\x0d-\xf78eT\x9c\xa2\x1a\x978&\"\xd1\x10\x818*\xf6P\x8d5\x8c\x19eh\x8d/T\x83\xae\xd4\x98\xc28\xd1\x84\xd1\xe2\x08\xe3F\x10\xe2b\x07\xbdQ\x83\xf2\x96\xec\x8b\x17\x94\x9f9#\x05\xb5\x90:\xbd5l\xcc\x97;.\x10\x19\x11\x88\x88\x05\xecu9f\xfc\xdf\xa8\xc8?=\xd2/^\x8c_\xbc\xe8\xbe\xe1\xab\xeb\x8d\xe8\xf3\xc5\xf2\xd5\xe2[\x8d\xdf\x13:x?rO\x8d\xd93\xea\xe9j\x9c\x1e&B\xcf\x1b\x9b\xe7\x8f\xcas\xc6\xe3\xa1#\xf1\xec1x\x83\xa2\xef\x8e\x14ww\x8c\x88\xbb\xa3\xc4\xdaE\x8a\xb2S\xe3\xeb\x0c|\xd7\xba\xa9\xd4\x98:\xe3\xc7\x868\xba\no\xde5F\xcdY.\xad\xe6H9\xcb\xc7\xc6\xe88\xcb\xb7\xee\x888K%c\x14\x9c\xf1\xdb\xb1\x91o\xf6\x987cs&\xff\x87-\xc2\xcdI@u\x7f\x98\xe2\xd9\x02\x96\xda\x1d\xbdf$d'\x06\xd6X5\xcbr\x813>\xcdS\xc9\x19\x93f\xad\xeb\xb6\xa4\x0c\x8f@\xe3\xe6!\x85\x9a+\xf6\xcc\x12uf\x8d7\xb3\x0e\xc8\xeeq=Bt\x993\xaeL\xeb\xa2y\xaecF\x91\x8d\x8f\x1f\xab\xad\xc4\x92`\xebR\x19\x1b3\xa6\xc4\x89\x8d\x8c\x10kC\xad$\xbd66ltT\x98\x8c\x84\x91\xe4\xdax\xb0\x88\x91`J\x0cX\xcc\xe8/O\xdcWE\xb3\x15-vIV\xf1\xabn9{\x96\xe6\xcb\x8f\xa7/\xd0\xde\xd5-)\xb7H\xd9\xdc1\xdb\xeeIQ\xcdKZ\xcd\xb7\x94\xac\xbaGi\x80l\xb6\x86C%YE7\xb40\x8a\x01\x15\xcc\xd1\xef>`$I\xcf\xfa,c\x94\xceHQ\x95\xb4\xfa\x81\x8f\xe6\x9b\xce\x0fr:M3\xfdCg\xe8\x88\x89\x96\x8e\x8d'j\xd3\x0bR&KX\xb0v \xc9\xd6\xf9\x90\xa9\xe4\xb5\x03\xa7A\x8b,#\xfb\xfd8\x12\xf6\xb3\xe7y\xed\x95\x87%\xd93\xb1Q\xd6NK\xf9\xe7\xe2\x90R!\x9b\xf7E\xbe\xa4e)n\x7f\xf5\xac(vj\xfe\xe7\xe5\x96$\xd9I\xdf\xd2\xb2L\x0f\xe2\xde\xc8\xae\x93\xcdG\xec\xec l\x1c\x87\xa5h\xbb\xb6\xfc\x88V5W;i=p\xd7{PS\xa6\xcbS\xa8\n\x92\x95\xe2r\xb9#\xcbm\x925\xce\x04\xde\xda<\xd1\xaea\xbd)\x1c\xacO\x8d\xd0\xa2\xb8\xb1\x82OH\xbfw\x82\x03\xf7\x05\xbd\x18\xc9\x80c\xb7\xa1C\xa2\xc00E\xcd ]\xc0)a\xc0\x83x\xd5\x87\x08n%\xce\xe1\xef\xb2J\x1d\xb9T\\u\xa9\xe6\xc3dsC\x9eU\x17\xfc-\x16\x97m\x03\xf9\x0d\xfb\xcf\x81\xe4\xdb\x90\xe1\x81\x04\xd4\xfeq\x007?t\xf7{\xc8\x0f\xd5\xfeP\xb5\x7fkyS\xd6\xe6\x81\xbb\xa3\xfb\xd0\xc2\x84\x86\xd5'\xfb\xfd\xc0\x9a|}\xa5R6\x90\x04e\x1aH\xb6\xa4\x03\xab7\xf3\xdf\x8a\xdf\xce\xb6g;*/)\x0eme\xa0\xdf;\x04\x04g\xf7\xae\x19\x8d\x18\x16\x96\x97\xf3\xe6T\x95L*\xb6\xbfQ\xb5a\xdb\xe5]\xbd]\xd0\xe7\xae\"\x08\xcc\x02\xc0\xb4\xf1\x87\xcc\xaeecw\x86\"\xd5\x80Ys$\xa2\x07\xa2\x1c\xf2\xce\x0e\xf5N\xe6\xde\xc1\x8e\xadf>\xcc#\x1e\xe4\x86C<\xc6\x01n<\xbc]\x07\xb7\xc4)\x1e\xf6\x9b\x82\xach\x83S\x14\xca\xf5\x9e;\xc3\x92\xa2\xac\xe0\x19\xdd$\x19\xd7\x90\xa5\xcb\xac\xe3\n\x9349\xeaj\xcf\xef/38\xe5\xc6A\x92\x96\xddD\n\xdc\xb0\xd0%\x9f\xc3\x8aV\x1ca\xba\x157e\xd2\x0e\xa1\x1e\x1a\xbbEmI\xb6Jis\x99o&\x8c#\xc1\xba\x14\xeb\xae\x88\n\xcd\xcd\xbb\x9e\xd6-)aAi\xc6\xd1k\xf2.\\7x\x02I\xc5\xe7\xbdC\xae\x0f\x9d\x91\x90\xb2\x06\xb1\xd7\xf65)\xd9iv+_\xdfb\xea\x18\x1bM\xd6\x9b\x99\xf3dG\xa1\x17\xf2\xf0\x03W\x0d!)\xfb\xfe\x13\xb2\xdc\xb2k\xa2\xe4\xf9\x86>g\x07\xfa9i\x1es\x1a\xa1 \xbaL\xe7\xe7[\xcaI\xcb\xc5\x15\x8e\x97\xee@v\x12\x9f\xb3\xa7\x05\xa3\xdf\xb7L\xffH\xc9\x05\xe5S[\xe5\xed{\x94\xb9\x94\xe4;bG>\n\x87\xbd8:\xeaQ\xe7\xf2\xa0\x12\xb6\xac\xa6\xb5\x1b%M\xd77\xeb\xa0\x9c\x96\x9e81\x16\x1c\xe9\xd8\xe3\x89|\xb9<\x14e\xef\xdeY\xe6bR\x97y\x96\xd1e%\xd1\x88\xf5\x80/h\x91\xac\xafZ\xf9\x90\xd1Km\xb0IW\xe2\n\x0f\xd2\xe2J\xd6\x14\x07\xe8\xbe\xc8\xf3u\x0d\xf2\xec|\xcc\xf4\xe3$?\x94\xaa\xd0\xe7\x1d\x98\x99g\x88[\xf6\xd8\xfa4=\xce3n\xe6\xdd3\x1ae\x05\xe5.\xcf\xab-;(\x96E^\x96|\xb2\xb3\x9e\xf9W\xcc\xad\x1cF\xa9p8\xea\xc6XM\x18\xfb c?a\xec'\x8c\xfd\x84\xb1o\xca\x84\xb1\x9f0\xf6\x13\xc6~\xc2\xd8O\x18{G\xdd c?a\xec'\x8c=/\x13\xc6^\x96 c?a\xecG\xa0\xb0'\x8c\xfd\x84\xb1\xf7b\xec\xcd:\xecYJ\x1a\xed\x9d\nG*\xd3\xbf\xd9\xac\x90E~\xa8\x80\xd4\xd6\xb3\xc6\x82\xc8V\x93;\x03\x92JZP$-nZt\xb8\xa4x:\xe4\xa7\xc2\x99\xc2\xda\x0dNd\x18\xcb\x88\xbe\xad\xfd\x14\xc2\xcc\"\xfd\xb6\xba\x1d\x9d\x8d\x9c\xe7\x8c\xae=@\x8e\x89\xb4\x0d\xaen\xc5\x95!\xbaSMR{{\xf6\xbcf q\xd0\xf8\xa6\xf5\xb9\xb8\xa1\x0e\x9a\xd6}\xe3*\xd4\x86\xc7g \xa9w\x0fo\xa2g\xc2\x9e)k\x812\x9d\xf6\xbd\x8d0\xdcl:\xc6\xf3\xa8\x902\xf9!!\xb6/\x12\x8c\xfeH\x18\xef\x93T\xa8\x91\xb4\xcc5\xbf$D\xf0M*\xe44O%\x8c\xf7V*\xd4\xe4\xca\xa9\x8d\xc4\xf4Z\x82\xcds A\xdeK\xd0<\x98\x80\xb1s\x983q\xd9}~0\xda\xa3 \xf1\xbc\x9a`\x10\xca\x80\x19\xb5\x0eP\xf3\x8fx\xb0\xa7\x13\x90\xdeN\xd0<\x9e\xe0\x1a\x8b\xed\x1d\x83q\xdeO\x85\xd8X\x17\xa8&\x00:\x7f\xf08E\xc11\xc6q\xceQu\x8c\xdcW\xe9q\x90\xc2h'\xa9B\xac\xeb\xa7E:J!\x86\xb3T\xa1W\x07\x07`\x1d\xa6\x10\xe44\x85\xd8\x8eS\xb0;O\xc1\xa6\x05\x80\x1b\xe8jt\xa4\x82k\xe7\x81W3\x80\xb8NUp:V!\xaas\x15b:X\xc1\xe5d\x85q\x8eV\x88\xe8l\x05\xaf\xc3\x15\x86:]a\x8c\xe3\xd54cW{\xce/\x16\xe7+\x8cq\xc0\x1ah\x89\xb3\xce\xe2\x84\x85\x91\x8eX\x03\xb9\xc3\x1e\x88\xd1\x19\x0b\xd1\x1d\xb20\xde)\x0b\xf1\x1d\xb30\xce9\x0b\xe3\x1c\xb4\xe6-j\xecd4\xb7-Dw\xddBL\xf7-\xa0\\\xb8\x10\xd3\x8d\x0b\x0eW.\x8ct\xe7\x9a\xf6\xb8\xc1\xc1\x0bX'/\x8cv\xf4\x1a\x08\xea7.\x18\xee\xfe\x05\xb3\x0b\x18|G\xbc\xd5\x15\x0c\xa8\xf3\x7f\xa0K\xd8$\xf6j'\xb1\xe2\x16\x06o?\xc6\xb9\x87\x15b\xdcYlp\x11C\x1c71\xc4v\x15\x83\xc1]\x0c\xe3]\xc6\n\xb5Js \xc3H'2\xf8|\xab`w&\x03\xc6\xa1\x0cf\xdfW\x90c\xd9NCs,\x8cr2C\xc0d\xf8\x9c\xcd\xe0\x1d\xb7\xd7\xe9\x0ca\x8eg0\xcd\xc7X\x074\xf8\x9c\xd0\xe0tD\x83\xc7\x19\x0d\xaeY\xc2:\xa5\x01\xe1\x98\x06\x83s\x1a\xc69\xa8\x01\xe7\xa4\x86A\x8ej\xb0N\x8c\xd7a\x0d\xf1\x9c\xd6`\xef\x85\xc6iQ\x1d\xd80\xd2\x89\xad\x90\xd2]\xda\x10\xdb\xad\x0d\x91]\xdb\xe0ro\x83\xc1\xc5\x0d\x0677DsuCLw7Dwy\x03\xda\xed\x0d\x18\xd77\xe0\xdd\xdf\x80t\x81\x83Q:\x1b\x9d\xa5\x10\xe00u\xbb\xc3\x01\xef\x12\x07\x9c[\x1cL\xc3\x88\xe9\x1e\x87\xb1.r\x85\x96\xe60\x87\xa8Ns\x88\xea8\x87\xd1\xfc\xe0u\xa0\x03\xc2\x89\x0e\x1eG\xba\xcd\x0b\x8b\xf1\xffv\xaaIjF\xffo\xb2X\xce\x96yAg\xec\x12\x9c\xd1tvqw\xf6\\\xfc'\xda\xd7k\x0e|\xaa]\xbb\xc2\x18\xdeZ\x93\x19i\xa0Y{\xc17\xde\xd7\xf4\x94{\xef\xce\x9f\x9e\xbf\x9c\xbf\x7f}\xfa\xfa\xf4\xfc\xf4\xe9\x8f\xa7\x7f}\xf9\xc2\x9azO|\xcb\xbe4\xfc\xf9\xfc\xed\x7f\xbe9{\xf9\xda\xf0\x8b\xe5\xcf\xcf\x7f|\xf3\xce\x94y\x0f\xdb#\xbb\x1b\xea\x1d\x9f\x9b:\x14\x9c\xa9b\xcd\x0c%\xfc\xf2\x93g\xcd\xd4 \x93\x17\xdbz|F{6o\xd1\xc3\x13`=9\x019\xc0\x13`\xff\x9f]\x82z]T\xd3\xf9yF\xf1\x04^H\xd5\xe1\x9d\x12}\xd6\x9b\xe7'\xf0\xb4\xe9:\x93;\xbf\xb0\x8brY\x91\x82?j\xbf\xa5\x90\xef)\x07\x9eoI\xb6*\xb7\xe4c\xff\xca\xab\xac\x8dJ\x8d,\x99TK\xe9j#\xa95T\xa0\xac\xe8\xbe6\xd0\xf1W\xbai\xb1'EuU;.\x0c\x8d\x98Z\x90\x0f\xd3\xa8\xe4g\xf0fO\xb3\xfaK\xf5\xe1\xfe\x82\x92\x15\xb7\x83\x954\x13\xee\xdc\x82.ir!\x144Z\xa9)\x0e\xbb\xec\xa4v\x80\xfb\xaf\x97i^J\xc7\xf0\x92d\x90\xe5\xc0\xae\xe7\xb4hp\x06u[yQ7\xd5iAi\x94\xbf\n\x94d\x1bmg\xd6~\xfa\xee\x86LJ\xa8_\x11\xca\x0b8d\xf2\x1f\xa1\x9b\xf4\xcd\xdb\x17/\xdf\xce_\xbfy\xfd\xd2\xba7\xc5'\xef_\xf3\xff5\xfe\xa6\xfe\xd2l8\x0fu\xfb>\xb3u\xec \xf7Q\xdf\x12j\x19O\xdd&\xa7\xa3\x9e\xbb\xfe\xfa)]\x7fR\xcfx\x9d\xc0jE\xd3\xe4\x82\xcf!\x7f\x9c\xe9J\x909\x91\xc7\xdf\x8e\\\xc1*\xe1\xb6\x98&\x95\x07\xff\x00z\x01\xaa\x8d#\xfa\n.iA\xd9zW3S?\xb4^\xc8\x9ca\xb2\x0b\xf43YV\xe9U\xad,\x8b\x96L\xc4%\xed\xee\xe6\xd1\x85\xb9\xb2\xb3,B\x1c\x05\xd5\xd9\xe7E\xd5K\xb9\x03\xc3\xd1:\xdc|d\xdd\xfdr\xb8\xf9\xa5\xd4o\x85)\x93\xef\x1f\x93G\xae>\x02\xbf\xd1\xfe\x84\xefn=_\xed\x14\xd9\xbb\xd7L|\xed7\x9do\xf3\xbd\x96\\\x04\xf5t\x1c\"\x80\xba~\\\xb4m\xae\xf5U\x16\xe5 ?m\x04\xbbJ\x9b \x9f\xbb\x9a\xb7J\xee\x1e\xec\xf2)7\x89\xd7\xe3\xe4ZbU\x90\x0bZ\xbb\xb7\xf4\xd4^\x8e\x8e^\xcf\xf7\xe4\xd3\xa1\x95F\xb2\xf2I\xfbf \xd9\x14\x94\xe3\x05\xf3L\xc2\x9d\xfa\x82\xfa:'i\x96\x00R\x9fi\xce\xd9}\xb2\xa7i\x92\xd1\xfa\xda\xc8\xb6\xc9\xad<[\xd6b\xbb\xdeDW\xb0\xa0\xd5%\xc7\x15I[\xb4$\xb8\xcbW\"\xc9F\x06%\xdd\x13\x9ef\xb0\xcd\xccQ\xd6\xdd\xe6'\x97\xf4\xc8\xf2\x93\x9cr\xb9\xbe\xe7>\x82|-\x891y\xceS\xe1\xd5\xbb\x98\xb3\x8c\xfa\xb1\x14\xf7\x9d\x0f\xad\xda\x9b\xb6\x8f\x11*\x9c\xb6'\x8d\xabe\xdf\x8b\xd1\xf6\xa1\xb2\x07M\xfb\xcf\xc5H\xf8}'+tg\xab\x93\x9c\xb2K\xa7K\xc02\xe7\xa7\xf5FZM\xbas\xff\xcf\x93\xee<\xe9\xce\x93\xee\x8c\xda\xa4\x93\xee<\xe9\xce\x93\xee\x1cr\x86O\xbasD\xdd\x19\xab\x04\xd6 R\x19\xf7\xb4\x93P\xaf\xc7@}M!d\x96F\x9a\x96eP\xd8\x84\x17\xa4\xf5y\xf0n\xf23A| I\xb5\xed \xab\xb2U\x9b~S(y\x15;\xe3\xe8\x8ap\x8f\xf8\xb6\x89n\x93\xd8\xc6\x88l\xf3\x04\x8d\x16\xd5_@L;E\xf4Q\xc4\xb3d5\xbe\x92V}Q\xb6(4\xbev5L,q\xc6\xfb\xf4\xaeU\xdc\x11j>nk\xf5V\xb5\xee\x9c\xb2\xd1\x82oFF\xa2\x02\xael [\xd2O\x07\xea{S\xdb\x92SS\x8d\xf3\x12\x97\xe9\x9ab\xdd\xc2\x8aT\x04I\xbd\x07\xd2\xea\xd1n\xbcQ<\x0bf\xdfoU6-W2!\xbcm\xbftV\xb2\x97\x8f\x95#\x85\x92\xa5p\xabdtI\xcbR\x02\x1e\x0bZ\x15 \xbd\x10\x01\x8b\xfcE\xf7z\x81E\x93\"h\xe0\xffg\xef\xdb\x9a\xe4\xc6\x8dt\xdf\xe7W\xe4\xd1\x83G\xb2{J\xc7s\xce\x93b\xe5XMKc\xb7w\xac\xe9h\xb5vc\xd71\xd1bU\xa1\xba\xb9]E\x96I\x96\xa4\xf6\xae\xff\xfb\x06\x90\x00 \xe2N\x12=\xab\xb13\x1f\xe6\xd2E\xe2F \x91\xf9}\xc8\xc4\x81\xb7\xe2L\xb7\xbc\xd5_\x94\x99{\x1cL\xcd\xf3b\xbfg\"i\xbf\xa4sJ\xee\xf1\xf3U\xca\xdfV\xcaZ\x1d\xf3\x1d\xb5\xa6\x14\x9bb\xc3:\xb1\xa1\xa8/(\xba\x83\xd4_\xdf\x1a\xab1\xe2\x94g\xa1\x1a\xe3\xd3~H@\xe1\xff\x9f\x8bH\x031X\x93\xa3\x01\xfby\x16I\x967\x8a\x9f(\xda\xb6\xde\x94E\x7f\x8b\x81fr\x1b\xd3'\xc9t\x92\x15O\xb6Fd6:s\xa7\xd3\x8a\xf4\xc7\xb8x\xf2\xf6y\xda\x0d\x14\xd3@1\x0d\x14\xd3@1\x0d\x8e\x12)\xa6\x81b\x1a(\xa6\x81b\x1a(\xa6\x81b\x1a(\xa6\x81b\x1a(\xa6A\x08\xc54PL\x03\xc54\xb8\xdc\x10\x8ai\xa0\x98\x06\x8ai\xa0\x98\x86 \xf3!sL\x03\x04\x8f\x15hd\xde\x00,\xeb\x84\x9e\x0e\x05K=\xa0/|+\xf1\x8dI\xe9\xa9\x9dG$\xbd\x99C8H\x0c\xf7\xc0\x9a\xfb=S\xb9sv\xc0>\x97m\xc7\xaa\x0d\xd3\xcb\xb7o\x04\x97\xd7\xf9\xb92\x00\x8a\x92>\x15m\xcf&\xcc:\n \xd1\x81\x1b\xbc\xc97\x11\xd4\xf6\xf060\xb4\x98\xb7P\xa5\x00\xeaS\x0e\xf5W\xb2h\xd0\xc0\x08\x83Q\x8d\x99\x95\xb8+\xdc\x189\x84|\n\xc8=R^T\x8dU\xba\xa7\xda\xc8\xc1|\xcb\xeb\xe1;3\x7f\xf9_\xf1\xb5>9\x1b\x94\xd5\xa6\x11.:\xd7\x03\x1d\xb0\x82\xafjY\xe7]\xb9gp\xcf\xd8q\xdctU\xb5\xf6'\xfc\n\xe8?r-.!Kh\xeb\x83~\x15\\\xb1\xbf\xad\x9b\xb2\xbb;\xb4\x82+\xdd\xdc\xd5u\xcb\x90X\x1a\xc3\x8c\x06\x88\xa9\xb2KV\xb0aM\x87\xe9\xa9\xaa\xad\xc4\x0e\xd9\xeav\x05wE#\xa0\x94\xfb\xf6\x0c\x17\xcd7\xf2>\xb7\x1e\x13\xd2\x8a\x93\xe8\x90^\xc3\x85\x18\xdb\x96\xc1\xa6hY{6\x9a\x07\xb2s\xc6`\xa9\xacU\xd86\xbd\xf4\xba\xea\xca\xea$\xc0*\xbd\x8a5\x83C]\x95\x1d\xa2\xd7\x82\xbf\x15\xb7ms\xd5\xcb\xf8'\x95\x06\xd9\xf8\x13\xdd\xb2\xae\xd5\x86\xc7<\x9e\x11\xa1\xa8T\xa8\xd4\x95+TJ/\xe2\xb9\xa7 \xb8\xba<\x97\xd6^\nI\xa6\xbe\xf4<\x9el\xb8\x82\xd3\xc3\x8f\xf5\x13\xe9Q(\xb2\x8e\xee\x1fZN%\xd1\xfdCi\x94\x11B\xdd\xd6\x18\xd1\xfdCS\xa8\xa1\x85\xb4PfJh\x01\x1d\xb4\x80\nr(\x8c\x8c\xa4O^\xc2'\x1b\xd9\x13'z\xb2\x91\x9a\x1b\x03\"\xf91 \x90#\x03\x12\x83\xae\x87gC\xebuq\x10\xb6Y\xd0#\x06c+\x89\xe6\xcd\x80\xc7\n\xceFq\xe7\xcf\x00H\xcf\xa1\x01\xbe\xad\x0b\x82A\x95\xce|\x1a\x10\x9a\x9f\x10\x85\xed!wn\x0dp\xe7\xd7\x80@\x8e\x0d\x88uaF\xae\x0d\x08\xe5\xdb\x18*\x1c\xe7\xdc\x00W\xde\x0d\x08\xb5N\xb6\xcc\x1a\xd6\xe598\x8c\x02k\x8bf\x8f\xa4\xe5\x00Wj\x0eH\xe8K\xbe\x14\x1d\xa1\xb9\xb78\xcd\x9dVV\x9f\xf0N\xfb[\xa6\xacwz-\x0bR\xdf\x01y\xe6s\x9ca\xf2\xcc\xc93\xffR=\xf3P\x12\xf4\xb1w\x0c) \xd0\xa5:\xbc\xba<\x97%\xa9\xac\xe7\xf2\x7f\xbfc\xad \x8c\xf9+\xe7\xc3>x&\x8e0\xe0\x1d\xaam\x7fi\xa6\"M\xe4\xd7\x12\x06U\xbf\xee\xbf\xd2\xf5\xc5x\xf9\xa7d\xd6h\xe7:\xfd\xf3\xf2]Y\x06\x92\xcf\x0c\x8dr\x86*7\xec\xc8\x04U\xfd]\xd1\xf4#\xeb\x0b\x9d\x1f\xf5QL\x0f\xf3D\x9a:$\xe4A\xf0p\x86 \x08\xd3D:&,&\x02\xeb\x08\xac#\xb0N\x16\xef\x84\xb5&\xa0u\xad\x03\xae\x0b\x01h\xbd\x1dGP\x1aAi\x04\xa5\x11\x94FP\xdaT\xe5\x90\x04m\x11\x94FP\x1aAi\xd6\x03\x04\xa5\x11\x94FP\xda\xff\x0e\x946\x18\x04\xc6 \xf7B\x9b\x93\x84\xa9\x8d\x8405\xc2\xd4\x08S#L\x8d0\xb5/\x12S3u\x7f\x04\xe3\x9a\x1a\x9af\x15\x94\x18\x9a\xf6\x96}\xee\xde\xc9[\xbc\xae\xd0\xcd\x9d\x0c\xb3\x89\xedK]\x05v#\x9de\x13s\xf3\x1c\xdd5\xd6\x90\x1c%\xb1\x83\xa9\x12{\x7f\x1f?\xa7|\x96\xce\x07k\x92\xa6\x91H=\x92z\xfcE\xa9\xc7A1\x99d\x03\x9aTa\x9d\x18Pm\x89\xca\x11\xef\x10|5\xbe]o\xb2z4n\xe7[\xa0\xb3dlG(\xec\x17\xdd+]\x87-\xa8\x8ft$\xe9H\xd2\x91_\xb6\x8e\x0c\xea\xa8\xd1\xcd\xa7r&\xa3\x17\xd7{\xb2\\}\xaa\xdc\xa6R\xbf\xe0z-\xf6m=5VB\x16\xe3\\\xe5\xd3\xb4\xect\xb2\xd7\xbc\x91\xd5\xd4{yI\xdf\xe9`\xdfh\x91*\x14\xcds\x010\xca,\xec\xcfY\x8d\xf7J`\x14\xfbb\xe0h5\x01\x05f\xb4\xe1\xe8\xbe*X>9\xba0\x18%\xa1V\xc7mh\xa3:\xa7^!\xec(\xc2@\xb4\xb2\\'<\x9eA3n\x15\x1e\x15\x90\xe3r\xe1Q\x81\xe2\xa2\xe1\xf1\xc4\xe8\xe6\xdd7\x0c\x04\xcb*!X\x96`Y\x82e\xc9\xa6&\x9b\xfa\x17mSw\x8e\x13\x8f) \x84\xdb\xb8\x9d\x84?\x9c\xf7;\xefd\x9bx\xd8\xb4\x17\xa0\x00\x84:\xa0\x90\x86$\x0d\xf9\x8f\xab!\x7f\xe7\xd0\x90\xb6f\x9a\x058\xa8&\xcf\xc6\x1d\x86\x15\xae\x8a\x9a\x00<\x0c\x9d\x98\x8e9h\xce\x1b\xc1\x0d\x047\x10\xdc@pC/\x047\x10\xdc@p\x03\x19\xd3dL\x931\x9d\x0278\xec\xd09P\x83V\xcc$\x94\xe1\n\xb7\xd3\xc9&\xb0<\x9ce\xdd\xd1\xb0\xae\xeb=+*S{\xb4\xa7\x0d7\x0c`\xb7/nEW\xca\x9d\xda\xc9\xd1\xd1'\x14a\xb6\xae!\xc5G\x8a\xef\x0bW|.\x14\xc1\xd0<\xa9\x10\x82\x02\x0f\xb0<\xa9C\x12\xa0\x84\xb3G\xc1\x12\xdeWJ\x11\xbe\xda\xdcO\x07\x12\x94\xbb:\x0fF\xb0\x16i\xf8t\xad\x8a\xb29\xf5m6]\xac\xa1=\xf2]\xb2\x05aycH%\x92J\x8c\xd9\x82n=\x02\xa1,\x1b\xfa\xeb\xcf\xc7\xef'Z\x80\xc3K\xa8\x91\x7fy\xfa\xcb@\xfdHm\x8d\n^\xd6\x18R[\xa4\xb6\xd2\xd5\x96\xa1A\xe6h\xae\x19\x8e\xec\xbb!\x07\x8f5\xdb\xf5\xe4\x18\xd1\x0c-\xc6sZ\x96\x1cwn\x1cGF\x1cG\x1e\x9cI\xd9o\xdc\xf8d\x8eL7\xf3\xf2\xdbD\xc7\xcc\x93\xd5&S.\x9bG\xcf`\x935oMz\xb6\x9aG\xcdQ\xa3U6,\x17\xb1\x87\xf0\xd5\xf2\x07m\x93H\xd8\xdc}\x1b]\x10\x93qo\xdd\xd377\xdf\xc66\xb3\xf2\x94\xcd\xcc\xbd\x91e\xdd\xc4\x8c\x0d,\xcb\xe6\xa5oY\x19\xb7+c\xabZ\xbaM\x0d\x9b\x93,p\xd8\xa2rnO\xfdg\x1b>Q\xc1K\xaf\x9d\xa5#o\xab]L-\x1a,S\x04q\x1dP4\xfc\xbb\xde\x16e\xd5vPT\x98YF\x16\xad\x92\xdd\x1dO\xcd\xb1n\x99H\xfcz:n\x8bn\x18\xc3\xa2\xea\xef\xfb\xdd5\x8c\xfd\x95\xd7\x89\xb3\xbeu\xafP-\x03\xc7p\xdbd\xf2\x82\x9dwq\xae\x95&D\x16c\xe4\xb7\x1b\xbf\xd4\x8e\xf2\x98M\xb0\x9e\xf9\xa37\xa7&\x95|\x0cg\x07z\x05\xef\xaf~x\xde\xb0\xb6>5\x1by\x83\xb9\xf8\x84x\x12\x81\x7fl\xd59\x9cB\xc2\nq^\xc85\xdc\xfbm2\x8d\xe2j\xe3M\xbd\x87\xf5Id\x84\x92\x04\xdd\n\xae\xef\xcaV\xb6\x19\x0e|c\x93w}\xf7W%\x99%\xf1\xad\xfa\xc9\xf3'|i5\xc5\xa6c\xcdJ\\f.nZo\xd9\xad@`\xe4V\xfe\xfe\xea\x87\xaf[8\x16\xdd\x9d(\xda(\xa8?e`\xd6\xd09.w\x17\xa3\"\x8b\x15\xfd\x7fZ\xf0\x85j\xbe\xfa\x81W\xe6\xbd\xce\xf9\xc33l\xab(\xac\xbd\xabO\xfb-_#\xbc\xb3F9\x9b\xa2\xc2\xa5&\xb4\xb2Y\xcbS\xae\x84\xce\xf8\xf0\x08z\xf4\xc9\xea _\xa2U\xddA\xb1\xd9\xb0c\xc7\xb6\xcfV_\x99/]Tp\xe4\x03Vn\xd8\x19t\xac8\xb4pjOb1\x1f\x1b\xc6\xd7)\xd7\xb4e%\xef\xc7^\x97U\xd1<@\xb1\xdf\x8b\xfe\x9a\x99\x89\xd4\xfe\xf3`V\xc3>\x1f\xd9\xa6\x83\xb2\xe3\xaa\xf5\xd42\x95\x83K\x9dm\xa8w\xf0\xaazX)-\x8d\xb7\xdf\xbf\xbf\xfa\xa1E\x14\xd1(M\xde\xb5oV\xd2n\xee\xd8\x81\xc1\x87\xbb\xae;~8\xc3\x7f\xb7\x1f\xc4\xd9\x86\xaa\x96\xbf\x9e\x89\x99\xc2\xd5P-f\xbe\xe8)\xd7\xf4\xa7\xa35\xdc\x9dq\xad>\xe0\\\xfe(\xb6\x95\xa2\x83Cql\xf1\xb3\x8b\x96vuO0\x0b\x9bRn\x0dE+\x8d\xc7\xf6\x855\xfa\xbf\x86\x8b\xdd\xd06\xfe\xb9\x8eM\xfd\xb1\xdc\xb2m\xdf|\xa1f\xdb\xf6t`[+?\xe2\xaf\xe1U\x05\x7f\xb8\xbe\xbe\x84\xdf\xbf\xb9Vf\xd9\xfb\xab\x1fp\xc9<\x88+\xf3\x0b\xfb\x92\xf2\xeb\x87#\xfb\xe9\xcf?\x19\x85\x81\xa2\xfa+\xf5\x95q\xeb\x17\xe3wl\xea\xedi\xc3\xa0\xa8\x805M\xdd\x98\xb9\xbd~\x0d\xaf\x8e\xc7}\xb9)d\x9f\x1b\xc6\xe7H\xfd \x0d\xaaM\xb1\xe1k\xb1\xae\xefO\xc7\x9eM_\x17\xdc\xdc\xc2F[My\x7f\xf5\x83\xa8\xf7\xae\xf8(>\xf5A\x9b\x8d[\x9c\x8e\x85j&\xff\xef\x8fu\xc9\x8d:3\x83\x17\xc8J\xc5\x02k\xd8\xaen\xd8\x99zM\xecA]\xb9.\xf7e\xf7\x00\x15c[u:A(\x80\xe6\xa3\x95-\x90k\x19\xb5w\xf3G\xc5\nX\xc1\xd3\xf7m\xbf_\xf3\xfe\x8asD\xc5\x01\x9f9\x14Uqk\xf7O\x19\x04\xaa\xb8\xd53\xf3\xdb\xbe\xad;a_\x95-\xecN\xd5\x06\xe7*o\xa9\\\xd3\x83]\xa7\x1d\xf8p\x0df-N\xa9\xd8\xa7<\xd4t\x80\x86q\x8d\xca\x10\xc4/;U\x81\xb0\x86\xc5F\xdc\xcf\xf05\xbb-+\xe1Spc\xcfR\x90\xf6\x15\xf6\xb6\xbey'fz+\x13\xc9uwEe\xaeWx*7\x7fv8v\x0fri<\x83\x830\x0c\xd6\xd6\x82\x14\xcd\x14\xa7\xa7K\xeeWpE\x8f\xe7\x92\xd4\x9d|\xd0\xb2CQu\xe5f\x94TR\xcc\xf5\xc4\x8d\xd2{\xec(\xbc\x83\xfe\x89/\xc25\x83\x82WVn\xb5m\xd0\xda\xf7\xe4\x16R\xac\xeb\x8fL5\xdc\x99\xac\xd2\x93\xe4kT\xf7\x87W\xd5\xc3\x07\xb5a\xb6|\xc9\x16\xcd\xba\xec\x1a>\xe9\x03mP\xbaK\xe4\x9f\xd3\x8a\xc3$a\xfa\xb0s\x0d#\x14 \xb6am\x1b\x00z=jO\x1fM\x85K5\xf9\xf6\xe5Z4L\xea\xbd\x16\xda\xd3Q\x1c\xa9\xecj\xe1q=?U\xfc_|w\xc0o\xd6\xda\xb3\xdc\xdc\x0c\xb9\xb1\xd8\xe1\xb2VK\xa7\x15\x07\xdc\x86\xd4j\xe2\xd0\x9f8\xe0\x83\x18H\x7f\xb5\x00\xaf\x07\x07Z/\xf1\xcd\xe7\x82O.\xf8\xed\x0bq\x8cP\xac\x14\xd9\xb0\xa2\x1f\xb8\xb2\x82\xf3\xdf\xfc\xc6R\xd2\xdf\xd75\xec\xea\x1a^\xc2j\xb52\xcf\x0f\xf1\xea\x8a\xea\xc1\xfcsQ=\xacxE\xdf7\xf5\xe1\xe9\xae\xae\x9f\x99\x0f\xacV\xa6\x06.w\xf0\x94\xbf\xf6^4\xeb\xba~\xfa+\xfe\xde3\xc7\xf1&\xfb\xdd\xbf\xb9\xfa\xfam\xa4\xaf\x7f,>\x16\xb3:\x0b/\xc5^\xcfK\x9c\xd8\xb7\xb2}\xfa}]\xaf6\xfb\xa2m\x9d]\xc3\xaa\xf9\xa3\xd8b\xedq\xb3\x96Q\x9f\xfbN\xff\xbfH\xa7/\x1f\xba\xbb\xba\xb2\xba\x8d\xf5~_\xd7OW\xab\xd53\xfbcb\x97\x9f:~\x11\x9fY\x0cC\xca(\xf0\x17.p\x10^\xbfyw~uqy\xfd\xe3\xd5\xb3\x17\xd68\x0c\x13\xc1U4\x16\xee\xea\xfe\xff\x8ft\xff\xf7\xb5\xd9s\xd1\xf5\x17/\xe1W\xc7\xf5\xea\xfb\xba\xfe\xaf\xd5j\xf57\xf3\x91\xa2z8\xe3f\x03\x7f\xee\x88\x9b\xe6\x9f\x8a\xa6\xbd+\xf6|P\\\x0d\xb4;o\xd6cUR\xee\x8c*\xdeW\x87\xa1\x12\xd1\x041\xd9\xc4S\xff\xe7%T\xe5\xdeu\xf4\xcfQ\xf3h\xa6pC]\x8c\x8b\xd2\x1b\xca`\x83\xf5\xc3\xb0\xa5*\xad&2p\xae\x1f\x14X\xc97+\xbd\xb0\xaf\x1d[\xe6s\xeec\xac\xc4\x0f\xdc\x88\xf8Zy\xe8j\x17\xee\xa9v\xfc>zq\xbd*\xab\xf6\x0f\xcaF\xb6\\\x96\xde<\x81b\xd7I\x80DxI_?\xffZ/L\x1a\xe8\xaaZ\xb4\xc8\x99\x9c'Ovu\xbdZ\x17\x8dh\xf0\xe7\xe7\x0f\xab\xbf>\xc1\xbe\xa2\xcdi\x1a\xce\xa2\xba'\xfc)\xaeV\xb5\x1f\xfe\xf8\xee\xc7\xb7\xfa\xff\xbf|\xf9\xf2\xa59\xda\xfc\x99\xc1+\xc3\xbd]D/\xc8\x8d\x0e\xad\xd6S\xcb\x14*~{\xda\x17\x8d^\x8a\xfd2\x7fp\xcb\x86M\xeal8\x91*g\xfb\x99\xdc\xf7F\xbe\x9c\xb6\x81\x88\xf0,\xf8\xf0\xcf\xbc\xab\x1f\xe4Q\x87~\xcb\xd5\x07n\xa5\x16\xd7\x0b\xcb\x00+6\xf7|]\x0d\xe6\xf9\xae\xdc3SO\xa9\xd5w\xc9\x9a\xb6\xae\x1cSVz\xc9\xbb\xb2i\xbb\x1b1\xd2\xces\xaa\xf21\xfe\xa9\xd5S\xdf\x86u\"\x80\xa3\xb6'\xa2\xc7O^\xc0\x13\xd7\xdc\x1dwe\x85m~rf\x97\"Z\xfb\xb68\xf0\x92\xfe \x9b\xf6;\xc7c\xbc\xb5\xc6S\xa1&_\xec\xa4\xe18\xfe\x96\xf8-\xca\x16>\xb1\xfd\xfe\x9b\xfb\xaa\xfeT\x89Ut\x87\xc7\xe2OmW\x1f\xac\xa98\x9e4gF\x08\x02\xce$\\\xdeZ\x85|\x82T\xb7P\xe0\xf4\xd0\x8b\xfb \xa6\xa9\x9a)w\xf5~+O\xe3\x0c\xb5\x0b\x8f_\xce0\x90\xfe\xb6\x9c`zI\xa2\xe8~V\xc1S\xbe.UG-WOa\x0c?\xfd\xf9\xa7g\xd6\x04\x9c\xffu\xc7\x85\xbb>\xb0\xe8./\xe8\xb7\xabo\x7f\xfbm\xfb\xc4\xfal\xe0\xa5e\x9c@\x9d\x9e.W\x83\xc9\xd4*\xd5\x97&\xfe.\x0b3\xd3\xe4z\xe0\xfbs\x05\x08\x8b\xca\xfe\xad\xec\xee&\x02\xfa\x1eZ|\x00\x9a\xb1\xb9D\x8d\xc7\x1a\x93\xc2&\x00Q\xe3\xc9\\\x03\xfc\xb2\xa9q\x18F\xd3\x87\x9a\x8f\x97\xd8\x9c\xb5\xd5\x11pN\xc09\x01\xe7\x04\x9c\x13p\xde\x0b\x01\xe7\x04\x9c\x13pN\xc09\x01\xe7\x81w 8'\xe0\x9c\x80s!\x04\x9cK!\xe0\x9c\x80\xf3\x05\xd0*\x01\xe7\x04\x9cO\x03\xce{\x1b\xd6\x07b\xeb\xd8\xb9\x81G\xdb\xf0\xb9,K\x05\xf2\x060s\xbc%g\x80\xe8'G\xb8%\x1f\x86\x0d&Jt\\\xc5g\xd5\xed\xae\x1f\x08\xfa#\xe8\x8f\xa0?\x82\xfe\x08\xfa\x1b A\x7f\x04\xfd\x11\xf4G\xd0\x1fA\x7f\x81w \xfa#\xe8\x8f\xa0?!\x04\xfdI!\xe8\x8f\xa0\xbf\x05\xe0\x10A\x7f\x04\xfdE\xa1?J\xe39\xfa!\xedP)\x9dp\xa5\x13\xae\xdd\x17z\xc2\xd5\xfd\x99}\xe0z0\xf9\x93L\xfb\xa4\xbd&K\xbb\xbaR\x07e \xb5\xe3\xd6\x15\x0e\xba\x07\xc5\xe1'\xfa4\xe6\\\xea\xc7Y\x98\x8f\x0eB\x99I\n\xa18\xa8!\x94\x88I\xe1\xa5\x89PR,\x8e\x99\x94\x91[\x99*\x1a\xc9 \x8ePb\xadYF\"Y\xc5 R\xc9A%\xa1d \x94P\x96\xd1JVq\xc2\xa2q\x1a\x0f\x0b)&\xbb&\x8brBYB<\xa1\x04\x19\x19\x14\x0f \x85\x12\xa5\xa2P\x1c\xb8\xb9\x90tZ\n\xc5W\x8e\x05M.$\xaaP\xd2\x07'FZ\xa1\xc4F!J`\xa1L\xa0\xb1P\x1c\xa3\xb3\x94\xd2B \x12[(~z\xab\xff\xddKr\xa1\x04F-\x95\xf0B\x89\xd1^(&\xf9\x85\xb2\x80\x02CI \xc2P\xa6\xd3a(\xbea\x8aRc(\x99\x082\x14o[\x1c3q\x11ef\x95fPh(K\x884\xbb\x06\x8bXCYD\xaf\xd9M\x1e\xd3m(9I7\x14/\xf5\x86b\xb2\x1e(&\x0d\x87\x92\x87\x8cC\xc9F\xc9\xa1\xe4%\xe6P\xd2\xe89\x94(I\x87\x92H\xd5\x8d\x1e\x0e\x12v(.\xed\xef\xa4wPRI\x9e0\x85'\xcbJ#\xf2\xe4\xc3q:\x0f\xc5\xd1\xa1\x9c\xd4\x1e\xca\"\x82\xcf*\xcd\"\xfcP\xf2\xd1~Z5Y\xc8?\x94\xa5s$J\x04\xca\xe2\"t \x8a\xbeq\x85\xfc\x93\x85IuFe\xc9\x04;\xa3\xbf\xb9\xf2\xec8Z\xa5\xee\x99\x11\xb7)oA\xa7\x00\x94B\x1b\xdd$@W\x10\x0b\xa1+\x88\xe9\n\xe2,W\x10\xa7\x91\x8diW\xcd\xd8l\xa3\x02\x96m\xba1D\x03\x8e\xa2\x96\xa6\x13\x81\x91\xf4@\xa3\xd9k\x86?\xb9\xe2\x8a,\xce\x0e\xe4\x99\x01\xc1\xd2k\x85\xcd\xcf\xe5\xd5Q\xd0\xd1r~\x8d\x82\x8e\xd2\xb83\xc4\xeb\xad1\xa2\xa0#\n:\x9a\xc6k9\x1d\xffl\xecU^\xde*\x1bc\x15\xe7\xaa\xb2\xb1T\x14tDAG\x13\xf8\"\n:r0@K\xb8\x9f\x948\x1c\n:\xd2\x84\x82\x8e\x80\x82\x8e(\xe8\x88\x82\x8er\xf1\x1c\xd9\x18\x8e\xbc\xdcF\x1a\xab\x11\xe53\x12\x99\x8c\x14\x0e\x83\x82\x8e\x86\xb2\x16q\x12\x14tDAG\x14tDAG\xffhAG&8\x1e@\xe2\x83\x1c\x80\xfe\xfa\xf3\xf1\xfb\xaa\xcd\x9e\x8b\xe6C$\xc0\x8cp\xa01\x0b\xf0\xc8\x11A\xae\xf5\x99z\xe5\x87|v^\xf0NH[\xa1x\xd5\x04J@Y\xc8\xf7\x97\xe8/\x94\x90\x16\x93\x95\xe4kd\xaa^C\x89\x9d\xe0]\xa6\xe3\xac\xe2\xa4\xcesi:\x94\x85\xfa\xce*\xaf1/-\x1fd\x81\xee\xb3\xca2AQ\xbb\xb6\x8cz\x10\xc5\xa7\x0dQ\xb2\xe8D\xad*7\xa3\x88\x12\xb9vD>4o}w\x14\x9cG\xc1y\x14\x9c\x17%\x1b\x9d\xa5Qp\xde\\zR\x15\x92@R:\xdfL&.Q\x16\xd0\x97(\x0bHL\xdfB\xf745\x1b\xbd\x89\x92\x97\xe4D\xc9Fu\xa2\xc4 O\x94l\xb4'\n\x05\xe7Qp\x9e\x18)\n\xce\xd3e\x19\xfdj\x15\xd7Qp^\x9c\xb2E\x89\x85\xa5\xc5\xe9[\x14\n\xce\x9bF\xf7\xa2Pp\x9e\x90\x18=\x8cB\xc1y\xdd\x02\"\x19\x85\x82\xf3&\xd2\xd0v\x93)8/\x07u\x8d\x92\x97\xc0FI\xa3\xb1Q\xa2d6J\"\xa5=z\x98\x82\xf3\x84\xe4\xa4\xc0Q\x16\x11\xe1Vi\x14\x9c\xf7\xf3\x05\xe7\xcd\xbf\xb8gT\x8c\xa64\xcc\xeb{P\xdc\xd0u\xeb\x0c\x83\xb1r\xd6Q(\x9e\x10\n\xc5\xa3P\xbc,\xa1x\xe6,\x0d\xf1\xe0s9\xf8\xd6\xc7\xbe\xd7\x87C\xd9\x1d$\x03\xff'q6\xe7\xb2a\xbb\xf2s2\xe3~\xcf\x1en\x8e\xda+\xe0\x9b\xd9\xd625;\xaeW\xcf;\xaa\x8e\n\x15\xdd\x1d`\x0d\xb84\xe5\x92U\xea\xec\x1a\x89\x82\xb6kN\x1b\xfem\xf8j\xdd5\xf5A\xb2\xa6\xe4\xd6\xb9I?J\nMN\x06\xb8+\xaam{W\xdc3\xcb\x10\x18\xb5\xed\xe2\xbb\xf3\xfe;H/\xa3\xa8\xf8\x92\x11\xb8\xa0l\xd0\x96u\xac9\x94\x15\x03Vmj\xaex[I\xdb\x08\xd4T'\xafv\xf5\xc8M\xda\xdc\x15U\xc5\xf6\xf8x\xb1\xb9g]+K\xe6\xfd6&\xb0|\xcf\xe0\xdf\xc7+\x01\xf9\x05i\x0e\xa9\xdc\x01C\xafY\xa5\x1b>\xae\xef\xce\xaa\xd3A\x9f\"\xdf\xc0\xbb\xebW\xd7on\xde\xbf\xbdx{q}\xf1\xea\x87\x8b\xffx\xf3\xfa\xe6\xfd\xdbw\x97o\xce/\xbe\xbfx\xf3\xda\xf1,\x7f\xd2\xf1\xe7\xeb\xab\x7f\xff\xf1\xf2\xcd[\xc7/\xa3?KH\xe0Eb\xc5b\x93f\xcd\xb1h\xba\x07\xdf\xa8h\x8f`&\x85T]1\xc9R\xf3\xa4D\xf6.\xaf08o\x1c:\x90:\xaeV\\p\xb4G\xa6\xf3\x82\x81\xda\xc6\x1f]=\xd6\xff\xfaX\x9d\x19\xcd\xc8\xa4N\x19\x05\xba9\x06<\xe5\xe4\xee\x94\xb9-\x83n\xfa\xab\x8d\x7f8\x91+\xf6\xdd~\x01\x99\x0ds\x8c\x89\xe3X\x8b\xffP\x8b\xcbNP\x12P\xc7\x0e\xbb\xc1=\xee\xa3\xcdWs\x98\x84^\xd8\x9d\xf6\xb2\xb5|\xe4\x0b9\xd4r\xd4P\xa3\x15\x950`\xd5\xf8\xb6\xecX4B\xa3Tl\x05o\x7f\xbc~#\xce\x995\x0cYp\x01\x95\xad\x19|\x0b\xca\xfc\x1d\xd5\xdf\x0e\xfe\x02k\xbbb\xbd/\xdb\x9ef,\xf4\xb9\xb0f\xdd'\xc6*\xe8>\xd5\xd8\xa8v\x15\xb2/\xccu\xffX\xe6\xc5h6\xe7\\\x96\xd6\x92\xb4g\xaeg).l\xf4\xa2\xe5g/=\xdf\xb2\xb3,\xe1\xc5\xcbm\x826\xf6-\xb1\xa8\xa3\x19]ZZ\xebt\x83%\xe5\xe3\xdb\xbb\xb9\xdc\x91=\x93\\KP\xd4\xff=y\xb2O\x9b0\xda\xa4\x18\xec\xb7\xd5\x92uCf\xb9]>\x99\xe5d\x96\x93YNfy/d\x96\xff\xfd\x9b\xe5=\xa8\xe7\xda\xce\xc7t\x86\xfa#\x0e\xe4@]X\xea\xc6\x95Z\xd0cDh\x89\xcc\x86jgE\x13\xa9\xe9w,\xba\xbby\x1bu\xc8^h\xf7\xe5FhG\x91\x9fi<\x1fE\x8d.{\n#\xa6d\x81_p\xe31\xff\xdb\x91\x91\xd1\xa1\xc8&\xd0Af\x11^B\xc8V\xa3\xfd\x9f\x1c\xd7\xd0%\xab\xd2^yoo\xdc\xd7\x9d\xa9\x1dP\xcf?\xebL\xcb\x88\x86\xea\x1c\x9d2\xd5,\x1a7\xc9\xe9K\xf8\xafns\xf4\xc7Q\xeb\xa4\xbd\xba\xf3F\x85\x05w\xea\xd8\x89\xe8\xec\xf1`\xe1h\xb0\xbc\xb1`Y#\xc1\x82q`\xdd\xb2(\xb0\x9c1`\xf1\x08\xb0\xd9\xf1_9\xa3\xbf\xbax\xecW\xce\xc8\xafh\xdcW\xe6\xa8\xaf`\xcc\xd7\x9c\x88\xafptW\x86\xd8\xae\xa4\xc8\xaeiQ\\\x0bc\xb8\xf2Fp\xf9\x82\x8a\xb2Fo\xe5\x8f\xdd\xca\x1a\xb9\x95\x16\xb7\x955j+\x14\xb3\x959b\xcb\x17\xaf\xd5\xa5Fk\xcd\x8d\xd5\xc2\xb8,G\x81\xeeH\xad\x05qZ\x9e(\xadi\xce\xb8.\xf1\xfd?_tV(6+\xdc\x8e\xacqY\xa1\xa8\xacL1Y\xcb\"\xb2\x1c+\xc9\xb5\x95\xe7\x8d\xc6\xea\x9c\xb1XK#\xb1\xa2\xa1F\x81(\xac\xa4\x18,wH\xc6\xb4\xf8+w\x19\xd6q\xec\xc5\x91W\xa9\x83\x91\x12u\x15\xeewR\xc4\xd5\xc4x+\xfbxz\x86X\xabh\xa4U8\xce*\x16e\xe5\x1d\xa5)\x11V)\xf1U\xae\xe8\xaa\x85\xb1U\x89\x91U\xf3\xe2\xaa<\x91L)1U\x19#\xaa<\xad\xb0f\xda\xa2X*W\xecT\xc6\xc8)w\xdc\xd4\xa2\xa8)W\x94T\xee\x18\xa9`\x84\x94+t\xc4\x15\x1d\x95/6*kdT\xfe\xb8\xa8\xf4\xa8\xa8\xa4\x98(\x89c\xa4DD\xc9G\xa3\xf1P\xceh(w\xed\xa9Q.\xf1H\xa8 qP\x89QPV7rG@\xe5\x8c\x7frF?\xe5\x8d}\xca\x1b\xf9\xb4l>$E=\xa5\xc4<\x0d\xdb\x8a?\x08d\xe1Ud\xea\xfa\xb1\xa1@\xdf\xddc_0GF9K\x13\x1aC\x1c\x19qdQ\x8e,\xc4RM\xe0\xc9\\\xc5\xcc\xe2\xca\x9c9T\x93\xe9\xb2\xd8mfI\x17\x98\xcdg\xca:\xba\x98l9\xa3D\x17\x93\xa51G\x88x[cD\x17\x93Ma\x88\x16\xb2C\x99\x99\xa1\x05\xac\xd0\x02F\xc8\xa102r?yy\x9fl\x9cO\x9c\xef\xc9\xc6\xf5\xd0\xc5dt1\xd9\x04N\x86.&s0.K\xd8\x96\x94\xbb\xba\xe8b2M\xe8b2\xa0\x8b\xc9,\xfe!\xc6\x80db?\xe8b2)9y\x0d\xba\x98\x8c.&\x1b\x97\x92\xc6O$p\x13t1\xd9|\xe6a\xfe\xd7\x8d2\x0e1\xb6A\xa9\xef\xd4x\xdd\xf1\xb9\xec\x8b\xd7n\xe8\xccy\xa9\x07\xf1\x08\x9a\xa4A\xf7\xc4#\x10\x8f\xd0\xfdBy\x04'\x82?\x8bJ\x18\x954\x87M\x98\xc3\x1f\x8cr'\xc0\x88:P!\x86.\xd5\xa7\xf2\xe79\xc2]&\xa8\x94\xa9\xa16\x0b\xb2(\x803\x93\xc2P\x9b\x9d\x7f\xc0\x99}\xc0\xd99\x94\xd0MM\xfe\xec\n\x10\xea\xaf\xfcyJ\x96\x05\x08dZ\x80@oQ<\x19\x17 \xb9\x9192/@\x14\xe9\xca\x9b\x81\x01\x02Y\x18\x00R21\x00\xb8\xb31\xc0\xb2\x8c\x0c\xf6\x04\xc3\xfc\x0cfV\x06\x98\x99\x99\x01\xec\xec\x0c\xb0(C\x03\x84\xe6\x89\x99\xa9\x01&fk\x00\x7f\xc6\x06\x08fm\x00_\xe6\x06\x98\x9e\xbd\x01\xbc\x19\x1c g\x16\x07\x08\xa9\x1a\xbf\xa2\xf1\xe8S\x88-\xdf\xd8j[\x92\xdd\xc1Q\x98\x0cQwfx\x00o\x96\x07\x08gz\x80\xfc\x9dL\xcc\xfa\xe0(\xc9Nn\xe1x(\x94\xfd\x01<\x19 \x00re\x81\x80\xf0n\x16\xde\xcf\xc2\x19! \xf6)\xc0\xe7\x02\xf9\xbf\xd1\xc2\xc4mZIF\n7\xc8\x99\xc6\x0d\\\xa9\xdc -\x9d\x1b\x90\xef8\xc7]#\xdf\x91|\xc7/\xd5wt\x7ff\x8f\xd7\x16\xf4\x19-o\x91\xfb\x87\xaa\xbd\xe8&\xae\xe0;\xd6\nJ\xd3\xde\xbc\xce\x04\xcf^m\xf6\xa7\xad\xd0\x9a\xb8\xac\x15\xb2?\x1a\x94]S\xf7\xe4fP\x0fD\x13\xeb\xd8\x99(f8\xa6\xf3\xb2\xe9LH{\xe7\xf6\xf0\x9c\x1bWzZ@\x14\xaf9\x96\\\xc7d\x17\xd7\xe7\xe4\x86\x1c\xbf`\x9a\xbdY\xc6A\xd8\xddM0\x0e&\xbb\xbca\xa77\xe6\xf6\x06\x1d\xdf\xf4\xe6\xe6r~Sl\xd5\x05\x0e\xb0\xa34\xe9\xa4z]\xe0T'\xd8\xef\x06\xe7t\x84#\xae\xf0|g\xd8\xe9\x0e/u\x88\x83\xf3\xc7\xe5\x14Ow\x8b\x83\x8eq\xcc5\x0e8\xc7\xb3\xdc\xe3\x90\x83\x9c\xd9E\x9e\x8d\xc7\x05\x1c\xe5\xe8r\x8f\xaf\xcd\xcc\xeer\xdca\x0e\xb9\xccQ\xa7\xf9Q:<\xdfuNt\x9e\xe3\xee\xb3\xdf\x81\xce\xe9BG\xf6\xc9\xd8N\x19w\xa4\xa3\x9f\x07\xfc'\x06\xfdQUYS.\xa2\xf8\xe2\xaa\x8cf\xa8M\xb2\xed\xea\x86muK\xaf\x1fu>\xd0\xbdGL\xf7H\x01\xdd#E\xf7H\xe5\xbaGJ\xb9\xe7\xd6j\xc2\x19\xb6\xde\xd7\x9b{\xd3K\x9e\xb0\x98\x08\xe8!\xa0\xa7#\xa0\x07\x8b\xf6\xc1 \xd3\x90\x1e\x15\xf3d\x03>~\x00\xe6\xdd\xe0\xc6X\x13]w9R\x1d\x0d\x87{\xe1v*,Wb\x92\x03\xe1V\xe1\xe3\x88\xefr7\xb6N\xc4\xf7\x17AV\xd2|\xc0\xe0'\xe1\x04\xf3\x17{\xf5\xc4+>\x03\xd9\xdc3\xe0\xff\xe4\xfe\xe1\xa8E\x83\xaa\x8e\x8e\xcc\x0bx-\x0f\xd9\xbe\xd3\xb3v\xea#\xf5\x02^\x99\x960\xdf\x1f\xfe\xf3\xd4\n\xf7\xb1\x11\xd4\xc4\x1d\x83\xfa\xc8\x84\xd3n;\xd5\xc6 {\n,6\xf7U\xfdi\xcf\xb6\xb7\xb2\xc0\xbe h;vt\x99\xdf\xb2\x82\x91\xa95\xfax\x9e\xaa6\xf5\xe1\xb8g\x9dYO`*\xcau\xa3O\xc6\xb4\x14\xb0\xda\xee\xe1T\xd6\x89\x18\x91\x8d\x0bM\xc0\x11\xddU.\xc3y\xdc\x93|\x01\x9ec\xa27\xb2\xad\x01\xc0\x86\x7f\xaaB\x8b\x9f[uMQ\xb5;\xd6\xf0\x0f\xf6\x9aU\xf5\xe1\xba)6\xe9p\xed\xb1\xe8\xee\"_\xcb\xbf\x11\x8a\xc0\xd8\xd1}1\xc2%\xaewp\xac\x9b\xee\xb9\xc4r\xb4Ql\xb5P\xb1\xa6\xd8\x8c7\x11c\x8b\x92\xd1\xc4J5\x9c\xaa[\xf1\x95\xba\xfa\x9e\xf5\xf3~]\xb4\xecf\xcb{=\xa5\x0f\xfc-\x10o)'DV\xd2\xb0}\xf1\xc0\xdb\xe7\xa8\xcc=\n\xc3\x88\xc3\xe8H\xb7]\x05\xef\xf3\xc5\xf9\xbbo\xff\xafQz\x0bE\xb5\xfd\xca\x1a\x01\xd9{9JPVh\xdc\x942o|t*\\\x16M\xa1\x96E\xc24hY\xb5\xbda\x15\xb7\xfb\xad\xf3\xb5\xeb\xba\xde\xb3\"\xc50\xd2K\x01\xfc\xb7\x00\xf2\xb6e\x8b\xff]\xec\xf7\xb0i\xea\xb6\xfd\x06g\x8a\x18\x01P\xedn\x91\xc1\x18\xca\xeb\xee\xca\x91M1\xd2y\x0d\xdb\xb0\xf2#[\xdej\xa3\xa0Y\x0d\x1fy}\x81f\xbb[\x81\x1fk\xb4\x92Z&\xf4\x14\xd7\x0f\xaa\x168\xf2\xc7X\xc7\x9a\xb6\xdf\xec\x90\xf0\xbe\xae\xe1\xd8p\x8b\xa7\x83\x02\xb8\xf9\xa3&\x17\xde\x93\xbaf\x02;\x95\xc54l{&\x8a\xd7f\xdb\xb5\xea\xc8\x1b9\x06}U\xe2tysb\x8aq\xaa\xd4\xab\xb0.\xaa{8\xd4\xdb\xd3\x9e}\xad\x0c\x9dw\xac\xda\xca\"\xbe\xea\x15\x8c*IYI\xa3e\xd1\xd5\xb0+\xf6m\\\xb7 \xdbjXn\x93y)Q\xebM7(G\xebshO@\xc3\xbaSS)[O\xf8\x82lk\xb4\\<\xa8-\xcc\x951\x03\x93\xbc\xae\xb1\xfe\x85\x90{\x13\x06\xf3\x16\xe8b\xa3$\xa5s\\a\xf3 :\x19@\x9c\x1f\xa0\xd1\x14\xb3,\xcd\x0b\xd0\x845<\xdam\x93\x95\xfbQ\xb3\xcd\xad\x1e\x1em[p\xb0\xfb\x94\xdeA\xb3k\xd6\x92p[\xfa\xe0\xb5\x9b!\xaa\xf4\x97Z\xfdFq\xf2j\xff\xb1 \x0d\x16\xe2\x11\xf2\x00`Aof{\x03\xe6:\xd2|\x83XwF-r\xcc\xac\x94I-}\x88!\xf6h\xf5U\xcb6\xa7\xa6\xec\x1e^\x0f)\x86\xf8\x18\xdd\x8f\xfd\xc2u\xd1\x96\x9b\xaf\xfe'\x00\x00\xff\xffPK\x07\x08Sp_\xf4\x13y\x01\x00\xbd \x15\x00PK\x01\x02\x14\x03\x14\x00\x08\x00\x08\x00\x00\x00!(\xd4`4t\xc7\x01\x00\x00\xbd\x01\x00\x00\x11\x00 \x00\x00\x00\x00\x00\x00\x00\x00\x00\xa4\x81\x00\x00\x00\x00favicon-16x16.pngUT\x05\x00\x01\x80Cm8PK\x01\x02\x14\x03\x14\x00\x08\x00\x08\x00\x00\x00!(6B\xc8\xd7\x7f\x04\x00\x00u\x04\x00\x00\x11\x00 \x00\x00\x00\x00\x00\x00\x00\x00\x00\xa4\x81\x0f\x02\x00\x00favicon-32x32.pngUT\x05\x00\x01\x80Cm8PK\x01\x02\x14\x03\x14\x00\x08\x00\x08\x00\x00\x00!(\x8e\x10\x9f\xf1}\x02\x00\x00\xe3\x05\x00\x00\n\x00 \x00\x00\x00\x00\x00\x00\x00\x00\x00\xa4\x81\xd6\x06\x00\x00index.htmlUT\x05\x00\x01\x80Cm8PK\x01\x02\x14\x03\x14\x00\x08\x00\x08\x00\x00\x00!(]\x12r 9\x03\x00\x00T \x00\x00\x14\x00 \x00\x00\x00\x00\x00\x00\x00\x00\x00\xa4\x81\x94 \x00\x00oauth2-redirect.htmlUT\x05\x00\x01\x80Cm8PK\x01\x02\x14\x03\x14\x00\x08\x00\x08\x00\x00\x00!(Sp_\xf4\x13y\x01\x00\xbd \x15\x00\x0c\x00 \x00\x00\x00\x00\x00\x00\x00\x00\x00\xa4\x81\x18\x0d\x00\x00swagger.yamlUT\x05\x00\x01\x80Cm8PK\x05\x06\x00\x00\x00\x00\x05\x00\x05\x00_\x01\x00\x00n\x86\x01\x00\x00\x00" - fs.Register(data) -} + data := "PK\x03\x04\x14\x00\x08\x00\x08\x00\x00\x00!(\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x11\x00 \x00favicon-16x16.pngUT\x05\x00\x01\x80Cm8\x00\xbd\x01B\xfe\x89PNG\x0d\n\x1a\n\x00\x00\x00\x0dIHDR\x00\x00\x00\x10\x00\x00\x00\x10\x08\x06\x00\x00\x00\x1f\xf3\xffa\x00\x00\x01\x84IDATx\x01\x95S\x03Luq\x1c\xfd\x8c\xf1\xc3\xec0\xa7)\xcda\xb6k6\xb2\x9b\xf9\xb2k\xc85/\xdb\x8dqx\xc6\x94m\xcc{\xef\x7fO\xff\xf3l\xdc\xed\xf2\xe0\xfe\xf8\xc9\xffP\x14\x11/\x14[\xa3P\xc4\xa1\xbc?\xf1t>7\x12s\x13\x03\x85\xca7IR a\xb5j\x8f\xa71\xbe]\x88\xf6\xb9L\xf0\x1c\x93\xcf\xda\xe3)\x10\x93f\x8d\xe4\x06\x13\xcf\xde<\x9b\xd14\x95\x8a\x92\x81OA\xcfF\x89\xdd<\x9b M\xe6}L\xe4\x07\x15\xc5\xf5\xe3\xffI\x0c{\xd6\x8d\xffs\x994\xbasfh\xae?\xafk\x1aprw\x10 <\xb9\xdb\xc7\x86\xa6\xd1\x19I\n\xa8\xb1\xd7\x84y3g\x171T$\xb5c\x7fq\xfbbq\xbfk\x8e'\x1dQ\xb0\xc2,\x92\x0bx|;F\xe5\xf0\xef\x00\x83\xf2\xa1\x1fx|?q\xbd\xcb\xc2\x16\x80ZF\xf0\xc4J\xf3\xe3\xe4n1\xcc\x17k`:}\xcby\xe8\x98\xcbB\xc7|6z\x97r\xd14\x9d\x06\xd3\xf9\x8a\xe4\x94\x90\x8b\xb6\xd9\x0cP\xebc@\xd0|\xbe*\xc94\xc8\xa7\x98'\xcdh\x00\xe3\xd92\xa6vK}\x0cB\xa4\xf0+D\n\xc7\x81)\xb0\x10\x9a\xe3\xa9\xd8\x8bx\xe4(\xa2\xbb\x8dl\x0d\x01\xb6\x8a-\xf378\xbe\xdd\xc7\xa6\xb6\xc9\xd9\xc6d\xd8\\m\xf4\x0c\x92 uQ\x0e\xd2\xf5\xb3\xd1\xf1w\xdfQ\x16\xb34a$\xa1\xc4\xc4(V\xbcF\xd9\xdf\xa4\x91\xe9\xb0&,\x12+\xcd\x93\xcf\x1c\x1cb\xdc\xca\x00qt\xeb\xcc-\x14\x89\xfe\xfc\x0fm2j\x88\xec\xccs\x18\x00\x00\x00\x00IEND\xaeB`\x82\x01\x00\x00\xff\xffPK\x07\x08\xd4`4t\xc7\x01\x00\x00\xbd\x01\x00\x00PK\x03\x04\x14\x00\x08\x00\x08\x00\x00\x00!(\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x11\x00 \x00favicon-32x32.pngUT\x05\x00\x01\x80Cm8\x00u\x04\x8a\xfb\x89PNG\x0d\n\x1a\n\x00\x00\x00\x0dIHDR\x00\x00\x00 \x00\x00\x00 \x08\x06\x00\x00\x00szz\xf4\x00\x00\x04|ID\xc4\xcf\xd0@\x04&%\xad\x1e\x16\x0f\xf7\x8d\x97AR\xfa\xca\xe7l\x87\x05\xf8\xd2\xfb\x0c\x84\x1d\x0dLVY\xdc/ju\x13\x1a\x88\xd2\xa0\xaaa\x82|nzp_\xf4\x03\xc8 \xd4;^\x8a9}\xeeu\x9a\x91 `\x04\x14s\xec\xe1\x0c\xc6]\xa3\x05``\xd1w\x12*~ \x00\xf3\xae\xd3\xa0\x9cb\x82\xa2bx(\xb3n\x1fqx\xd2\xf2\xda4\x1d\x8a}\x1ck\xd4>\x9cI+\xeb\xb3\xf4k\xc8u`L\x93\xf3]4\xb5\xd0\xc3\xe33\xd9\xee\xd7\xf2\xd9\x19\xea\x18\xc9\xc1Y:\x18\xfb(-\xadN\x82\x06e\xd5\x1f0\xa2\x1dV\xf8\xbe0\xc1\x985\x01\xf8\xd2~\\\xa6\xa5\xb5)&\xf6\x98V\x80l\xe4\x03\xf8\x03\x04\x00s\x9a^\xec\x85\x00\xf4+\x0b\x00\xe1:G\xf2p\x96\x0e\xc4,\xe46\x1e5\xbbP\xdd\x15J\x80}\xce\xa4\xe2\xc8{m\xa4\xe2\xc3\xc2\x01\x07\xc0\xdb\xa4\x18-\xa1\x931\xba\x10S\xfa%\xb6P`\x10\x19v\x99#|Gg\x9b \x10W\xf6\x8dI1\xba\x92\xd66\x17E\x12\xfa\xd9\xa8\xf3UTe\n\x1b\x95\x9d\x81f\xe5\x18\xa5umc\x81\x86\xa6\xeb\xec \x804\xcbg\x17\xa19\xfa\xc6\xf7<\xa3\xbd\xf2\x0e\x7f\x02\x80\x97Y\xc7\xac\x184$h\xa3v\xba! \xcc{\xcd\xb4!\xb1\xd8\x92%h\xe3\x93\xdc\xd3_\xda1\xe6\xaei\xcf\x83\xa6p\xbc$\xf0\xb2\xda\x94\xa2q\x14B@\x13\xdb\xff\xf3\xd7\x0d\xfaA\xb9\xc5n{\x8e\xd6Y\x08\x01u\xc1'~\x16\x8e\xe9\x04\xa2\xfbA+\xc74\x0c\x98\xab\xd7:\xfc0\xd1v\xaf$\xa2#\xb7\xf1\x08\xfdm!OXh8\x10j|g\xd1\xe0a\xb2\x99\x04\x9a[y\x9a\xbdk\xf24C$\xa0\x9e#\x9f\xa3\xa8\x001\xc6\x1a\"\xc0\xe4i\xa6\xcc0\xf3\xf7\xb7\xf5XE\xb8\xe0\xa1\xc9\xc2\x0c\x90\x83\x80$\x838\xdf\xd6\xe3\xd4\x82FNG\x0f\x876\x8a\xbf1\xa8d(\xa7@\x8cQX\x90\xdb\x19\x9f\xc5YG\xe9\x9e\x00\xa5y3]\x9aJ\xe1\"\x00\x00\x00\x00IEND\xaeB`\x82\x01\x00\x00\xff\xffPK\x07\x086B\xc8\xd7\x7f\x04\x00\x00u\x04\x00\x00PK\x03\x04\x14\x00\x08\x00\x08\x00\x00\x00!(\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\n\x00 \x00index.htmlUT\x05\x00\x01\x80Cm8\xb4T]O\xdc:\x10}\xdf_1\x98\x07\xe0\n\xc7\x17V\x17]\xa5I\x1e(\xad\x8aDU$\xd8\x87\xaa\xaa*'\x9ed\x0d\x8e\xbd\xb2\x9d\xfd\x00\xf1\xdf\xab8\xc9\x86v\x11\x95\xaaV+\xad\xc7s&\xe7\x8cg\xc6N\xf6(\x85\x0f\xb7\x1f\xaf\xa04\x16\x9c\xe7^\x16 \xa4\xf3V\xe6\x8d\x97FC\xdeh\xa1\x10\xf2F*\x01\x94f\x93d\xef\xe2\xd3\xdb\xdb\xcf\xd7\xef`\xeek\x95M\x92v\x01\xc5u\x95\x12\xd4$\x9b\x00$s\xe4\xa25\x00\x92\x1a=\x87b\xce\xadC\x9f\x92\xd9\xed{\xfa?\xe9!/\xbd\xc2\xecf\xc5\xab\n-\xcc.\x13\xd6y:TI}\x0f\x16UJ\x9c\xdf(tsDO\xc0o\x16\x98\x12\x8fk\xcf\n\xe7\x08\xcc-\x96)\x99{\xbfp1c\x85\xd0w.*\x94iD\xa9\xb8\xc5\xa805\xe3w|\xcd\x94\xcc\x1ds\x9d\x14m$\x9bF\xd3\xff\xa2\x93g\x9e(\xd0\xedh\xcb\xc2\xe8AU\xd6\xbcB\xb6\xd0\xd5 [\xf2e\x8b\xd3\xe9\xe9zz\x1a\x05\xc0\xc9\x07t) \x1e\x02\xec\xf7\xf8N\xce\xd6'g?\xf0\x05\xcf\xc8\x17*\xd2\xd9\x10\xda\xd0\x9b\x8f\xfd\n\x90\x9b5u\xf2A\xea*\x86\xdcX\x81\x96\xe6f\xfdf\x8b\x9b%\xdaR\x99U\x0c\xb46\x0f\xd4\x15\xd6(\x95s\xeb\xe8\x12\xad\x97\x05W\xbb\xb1t\x13C\x178`O\x93\xde\xf8\xe7x0\xe2\x1cKcq\xdc\xf3\xd2\xa3}5?\xa9\xe7h\xa5\xdf!\xcd\x8d\xd8\xec|Xs[I\x1d\xff;\xa6\x97\xf3\xe2\xbe\xb2\xa6\xd1\"\x86\xfd\x92\xb7\xbf\x91\xaa\xfdO\xd8\xb6^ \xebF\xb35[\xfa\xbe\x9eB.A\x8a\x94\x8c\xe3@\xb2\x84 \xb9\xcc&}\xc1\x0b+\x17\x1e\x9c-\xfe\xc8\xb0\xd1\xeeVEw\x8edmz\x81=\xfb;R\xces-\xb82\x1a\xe9\xc2\xa2C\xff\x8aj\xb7YI-\xcc*2Z\x19. \x85\xb2\xd1E\xfb\x16\x1c\x1e\xc1\xe3\xd0\x1b\xc6\xe0<< \x1c\xdc\xc6y\xac{\x7fa\xb4\xf3\xd0HH\xa1\xbf\xd8\xb3\xcb\xf3p\xd8\xc3\xb1\x87\x8dU1\x90h\xc82\xda\xf0Z\x91\xe3-,L\xfdM\x8a\x18\x0e\xf6\xc7c\x1c<\x83\x11\x17WR\xdf\x87\xd9\xf1\xb6\xc1\x11\xea\x0e\xe8b\xf8\xb2u\xc1\xcfyD}P\xc4\x17\xd2\x1d\xbf\x14w\xb3\xad\xd8u\x08\xdd\xc6|}\xa6\xa4\x9aJ\xea_)uA\xd1\x85Y\x85Z\xce\xacz\x89K\xf1\x8di|\x0cd\x14\xbe\n.2\x8c\xf1\xd1P\xf6\xbe5\xa1\xbe\x8d\x0c\xce\xa70\xd6c\xff\x12\xd6\x0dv\xc2\xba\xf7\xf9{\x00\x00\x00\xff\xffPK\x07\x08\x8e\x10\x9f\xf1}\x02\x00\x00\xe3\x05\x00\x00PK\x03\x04\x14\x00\x08\x00\x08\x00\x00\x00!(\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x14\x00 \x00oauth2-redirect.htmlUT\x05\x00\x01\x80Cm8\xc4VMo\xe36\x10\xbd\xfbW\xbc\xf0\x10I\xb0\xab\xa0=*Q\x82\"\xd8C\nl\xb7\xd8 \xbd\x04\xc1\x82\xa6\xc66\x1b\x99\x94I\xca\x86k\xfb\xbf\x17\x94eK\xb2e\xd4=u\x0e\x968\x9cy\x9a\x8f7\xa4\x1fn2-\xdc\xba \xcc\xdc<\x7f\x1c<\xf8\x07r\xae\xa6)#\xf5\xd3\xdb+{\x1c<\x8cu\xb6\x86V\xb9\xe6Y\xcaL\xa9\xc2\xc8k\xef\xbc\xda?kO+\x8c,\xdc\xe3\x00\x00\x82\xd2\x12\xac3R\xb8\xe0\xbe\xd2LJ%\x9c\xd4\n\xa6T\x08#l*\xad\x97%7\xd0\xbct\xb3_\x90b%U\xa6W\xb1.H\x91\x89\xed\x8aO\xa7d\xde^\xbeS&\x0d \xf7\xad\xb2\xbb\xef\xf8ZR\xee\xd5qGHk\x9c\xd8\xfae\xd7\xca\xd4\x08o&o\xecZ\xca\xae\xb5\xb4\x7f\xf2\\f#,\x8a\x11\xb81\xf7\x83\xe3\xb6\x9c \xbc\x13:\xa3\xad\xd3\x9f\xa4\xb6d\x8c6w\xb1#\xeb\xc2:\xfa\\\x0b\xees\x8dg\xdc\xce\xa2v\xae^\x16E\x93g\xc72\xb6\xe5\xd8\xd7LM\xc3\x9f\xa3&\x9e\x1d(\xb7\xd4\x07r\xf4\xb6\xc4\x8d\xb8\xe8\xdf\xc4\xce\x8dA\x8aE\x11\xdb\"\x97.d\xb7,j\xef\xc5\x13m\xbep1\x0b\x8f\xcd\n\x97#9\xfa\xc1\x8d\x89\xb0\x81\x7f\xbe\xcb\x0f\xa4\x08X\x80!\x96\xb1\xa1\"\xe7\x82\xc2 \x0dF\x08X\xc2\x82\x08C\xbf{\xbfk\x80\xabP\x17\x05\x9e\xf0\xdb\xeb\xb7\xdf\xe3\x82\x1bKa\xb0\xf1\x08\xfe\x9b\x7fi\xa9\xc2\xcam\x17\x8c:9\xa2M\x9b\xf0\x93\xd6#,y^\xd2iA\x0fb\xc8\x95F\xe1\x93\xd6H\xd3\x14\x8c\xe1i\xef\x80\x04\x19\xf9\x96\xbd}\x7fy\xd6\xf3B+R.\xdcc\x9d!\xed\x8e\x9a\x08 6\xad\xea\xd5\xa4\xa8+\xb8g\\\x9a6\xfc\xebr$l!\xd7t\xf3\xbf\xb1\x153\x9a\xf3xJ.d\x93\\\xafX\xb4\x8f\x96\x0bA\xd6>\xeb\x8c\xd8v\xfb_}K7\xd3F\xfe]\xb1\xa1\x82h%q{\x8b\x9b6\x88/\xc4i }\xc07u~}\xe5\xad\xfd\xc9\x98\xe7q\xd8_}o\xf1\x92%\x9dx\x15\x9f\xd3yO\xbdX]\x1aA\xc9>t\xd6o\x93\xd3\x92\xf2\x04l\xc5\x8d\x92jz\xc1jN\xd6\xf2\xa9\x87\xfa\xb5]\x05\xcc\xf9\x1acB\xa9,\x9f\xd0\x08\x05\xb7\x962\xec\xdb\xb6\xe2\x16b\xc6\xd5\x942H\x05KfI\x06\x7f\x9c\x98\xa8\xc0\xd5\x9c\xa2\x0c\x13\xa3\xe7U\x8e\xb55;'Nk\xe6\xd0\x9d;\xd4%^\x14\xbd\xd5\xf7\x92QN\x8e.\x1c`\x079m\xe3\x9e\x8a\xfe\xed\xa2\xad\xe0y>\xe6\xe23\xdc\xf8u\xa7=\xa3\xf6\xa1\x98\xb4\x17g\xa9\xf4\x1dA\xa8Z\xe4\xf6\x88_\xfc)\xf8\xd5N\xcf,\xea\xb4\xabS\xf2\xd2\xe0v\x10\x90\x82\xbd\xb3\xe1\xc1g\xc8>\x120\x0c{\x1d\xbd\x1c\xd1\x7fd\xb4\xbf\x82|\xf7\x9f\xd0\xa7\x1e\x82\xc5`H\xc0\x94F3p0$H.\x0f]v3\xaa\x9b\x1c\x83EW}\xba4\x12O`_\xb5!H5\xd1 \x9a\x0c\xaa\xcd\x04\x8cE\xe7M:\xe1\x08\xfe\xefQ\xab\x02\xfe\xb7A\xeb\xb6k\xbb\x05{\xef\x8e\xde\x84\xcb\x9c\xb2\x8f\x04\xd7U\xf9\x9aQ:\xbe\xf51\xf1\x1a\xaaW\x97uR\xdd\xe7\xf59\x974\xb7\xfc5s\xd0\xc4P\xdf\xdd\"\xd7\x96\xc2\xdab7x\xb8;\xfc\x01\xfa'\x00\x00\xff\xffPK\x07\x08]\x12r 9\x03\x00\x00T \x00\x00PK\x03\x04\x14\x00\x08\x00\x08\x00\x00\x00!(\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x0c\x00 \x00swagger.yamlUT\x05\x00\x01\x80Cm8\xec\xfd{w\x1c9\x8e \x8a\xff\xefO\x81\xf5\xefwF\xf6\xb4\x9dz\xf8\xed\xdd\x9a\xbb\xf2\xb3\xdcU.\xabm\xb9z\xa6\xe7\xf6\xa6\x99\x11\xcc\xcc(E\x06\xd3\xf1\x90\x94\xae\xed\xef~\x0f\xc9xg\x90\x04#\"e\xd9&v\xcf\xb4K\x19\x04I\x10\x04@\x00\x04\x93\x0b\xb2X\xd0\xf8)\xec\x1dM\x0e\xf6n\x04\xd1\x9c=\xbd\x01\x90\x06iH\x9f\xc2\xf1/\xc7\x1f~\x86\xbb\xb0x\x7f\xf2\x1c^\x93\x94^\x90\x0d\xf8\xccKn\x00\xf84\xf1\xe2`\x9d\x06,z\n{\xc7\xf0\xfe\xe5\x87S\x08\xa2\x94\xc6s\xe2Q\x98\xb3\x18\x92\x94\xa4\x14>g4\x0ehr\x07B\xba \xde\x06\xd2\x98D \xf1x\xc3d\xef\x06\xc09\x8d\x13\x81\xe4pr09\xb8\xb1&\xe92\xe1c\xd8'g$Y\xee\xfbt\x1d\xb2\xcd\x8aF\xe9\xfe\xf9\xe1\x8c\xa6\xe4\xb0\xf6\xa7d\xbf\x181\xc0\x82\xa6\xf2\x1f\x00I\xb6Z\x91x\xf3\x14^\x94_\x16\xc3\x80\xaa1\xf84%A\x98\xe4\x8d\xd8\x9a\xc6\x84\x8f\xea\x8d_o\x98\xff\x1a\xd3d\xcd\xa2\x84&E\x1f\x00{G\x07\x07{\xd5\x7f\xb6Hr\x0cI\xe6y4I\xe6YX\xb6\x9e\xd4\xbeN\xbc%]\x91z{\x80t\xb3\xa6O\x81\xcd\xfe\xa0^\xda\xf8a\x1d\xf3\xe1\xa5A\xbd\x7f \xd5|\xda\xbfh\xd0\x81\x16%4\xd0N\x03\xbf\xeb\x03\x03v0\xf6\xc0\x81]D4V\xfdX\xf4\x90\xa4q\x10-\x14\x1f\xf9 \xfd<\x08\x01pV]\x91\xf4)dA\x94>\xbc\xdf=U\xb9\x1f*\xaex\xf3\x02\x92\x94\xc54\x91S\x00\x12\xf9\x90\xd0\xcf\x19\x8d<\nQ\xb6\x9a\xd1\xb8\x03\x91\xd8\x10:bjFJ\xa3l\xa5\x9a\xe8]\x08\xa2s\x12\x06\xbe\xf2w\xbe\xdf\xce\xa9\xf2g/d \xedn\xed\xd39\xc9\xc2\xf4\xa9\xb6\x8b\x06\xe7\xff\xc7]\xd30\x9f\xc2IL\xe7\xc1%$K\x96\x85>\xa7K\x9c\xc2E\x90.\xe1\x00\x82H\xccu\x02\x1f\x98j\xcd\xa9\x17\x12N(\xf0\xb3\xd5j#\xc9\xaaZ\xdeb\xee\xf5\xd5;\x16\x7f\x01\x9fF,\xa5I.\xa7\xb8\xc4\xaa \x07-\xc5J\x92\xd5\xb1>\x17\x7f\xd1c\xd5\x10:\xe7\xb1\x0f\xa2Y\x90\x00\x91t\x80\x8be\xe0-!\xa6s\x1a'\x90\xb2\x1c/\x9b\xd7\xd0v\xe0+\xa4j?f+\xb6\xc4l\xd3IX/\xa6$\xa5\xfe\x94t\xc8\x1c\xb0\xc1\xdf\xbd\xe3rJ\xec\xd5\xa4w\xbe\xd9\xfc\xda\x06\xbc\x93S\x82o\xbd|\xb6\x85D\xdfk\xa1\\\xc4,[w\x08!9N\x12\xc7d\xb3\xf5[\x90\xd2U\xa7\xdc2\x88=\x93\xd0\x13cQ\xcaT#z@t\x01f\xc9\x8aX#0JW$\x12\x94\x84\xe5\xb0@\xf5\xc6m\x8cE\xa7x-@\xcf]\x12r\x1eS\xca*\x80\xd7|\xa1Zr\xfeN}/\xb7\xe4=gD\xf5\xd482\x84\x86\xd0\xea\x08\x14\xbduz\xc2\xac)\xf8\x17lM#\xcd\xcfk\x92\xa9D\x18\xe4=$\xd9|\x1ex\x017\x1e\xe6Y\xe4'\x9a\x8f5\x02\x11\xa9{\xb0\xdag<\xfdc\xa9\x81\n\x9a>\x95,\xf5nM\xa3\x0e%!9DK\xfb\x92\xf8\x05\xa6\xd8\xa7q\xa7\xc6\xc9\x91\xc9\xdfu\xf8\xb6\xd7*\xc7\xfd\xa6\xf6\xc3+\xfewe/\x16\xcb]S\x9b\xa2\x13\xa5\xc6\x94\x98\xb5\xbca\xad.\x05N\x8dHN\xd6\xd4\xdb\xb1P\x8e\xc8J\xb9\xb5\x01\xb7\xbd\xf9I\xe4s\x16\xc4T\x1c\x7f\xcc\xc8\xb4c\x06\xe4\xb89$\xc1\"\xa2\xfet\xb6\xd1\x7f\x86\x91\xac\x05|\x10(\x9fm \x0c\x92\x94/\xd1\x19\xdd$\x90.I\n)\x8dH\x94&@/\xd7\xd4K!Uo\xc5\x02\x96\xe4\x9c\x8aA\x924\xe3\xf2z\x1e\xb3\x95i\xa48\n\x81\x05\x958\x900\x9c\xb2\xb9\xf9;\xbd\xfd\xb1\x0dJ\x8bd\x1bP\x8cT\xfb\x1c\xbddP\xce\x8f\xff\x8f\\\xb0 \x82t\x19$r\x15WY\x92\x8a\xb5@\xa1\x92L\x05$M\xe3`\x96\xa5T#:r \xd1\xe6\xfb&\xae\x98\x1f\x90\x14BJ\xe4\xae`sH\x97T\xd2\x9as\xb5\xf8/Nl\x14\xc2rA,\x89]}f\xa2\n\x9e\xd0H\"[\xecK\xbb\x9d \x9c\x88\x98\xcf\xac\x17\xf9\x9c\x84\x99V\xb4W`\x85\xb9p\xc4\x15\x8b\x011]\xc74\xe1\xb2\x9f\xcfE\xf6\x0bk\x12\xe8\xeca\xb0\xe2\xc2\xaa\xafB,W\xac\x90\xcb\xe5\\,\xa3\x84,\x08v]\xc7\xec<\xf0\xb5V{>\xc2\x93\x90xB\xb9\xbd\xaf\xe99e\xb3\x98&,\x8b=\xfd\xe2\xe3\x18\x14\xc1\x9ch\xc6\xc43%j\x02\x12\xd0\xbd\x83\xd5\x088x\xeb\x0c\xf3\x99\xe5\x18\xc0z\x1c\x1c\xb2(\xd0\x1b6M\xb0\x1e\x11\xf4\x1a\x15\xc8Mn\xf3\xb9\xe5V\xaf\x83\xc1\xff\xd2\x0d\xf8-^\xc1\xc7((\x9d+\xde:\xbb\x03+\xbab\xf1F\xfa3S\x16\x93\x05\xbe\x7f\x80\x15M\xe3\xc03+q x\x0dS\x01n+7\x01\xb1\xb1\x9b\xd0\x8b\xa5\xfa2\x95\x85N\xaa\xa07cY\xe8\xa9\nz\xf66\x9a\xee\x92`\xcb\xde\xcfO>\x16\x9c]\x08Y)[\x04s{\xeb\x0c<\x16\xcd\x03\xec\x8c\x90f\x93\x04\xb9\x8bpt\xb6\xe66{>\xfb\x9c\x91(\x0dR\xe4\x80\xa0\xcf\xa0\xa0\xd7\xc0\xc0IU38\xa9j\xcfTN\xaa\xeeH\xaa\xbe\x95\x9c\xdc\x16\xac\x85\x84\x11,.\xb9\x1d\x89\xd0J\xae\xe6\x9b\x07Gjk\x86\xb3g5'X\x058\xc1\xaa\x00'X\x05\xf4f\xac\x1fH\xb0~\x90\xec\xab\x95\xacHT\xf9N\xb0\x13\xad4\xf2\xd7,0\xc4\x14*\xb0\xe5l+\xae\xee\xc1\xd1}\xb8\xf9,\x88\x94a\xf8.\xe8\xc9X\xfa\x88l\x17\xdc\x85\x0f?\x1f\xbf\x7f\xf9b\xfa\xf3\xe9\xe9\x89e\xcb\xf7\xc7\xbf\xbdx\xf7vz\xf2\xee\xfd\xa9E\xcb2\xd2\xda\xafcl\x04\xb6\x0b\x1a\x93}\n/\x04\xaa\x19\xcd#z\x92)\xad\x10\x8a\x00\xd2\x8czl\xc5\x91\xc0/\xd9\x8c\xc6\x11Mi\x02o\xa2EL\x13\xccn\xa8A\x83\xa4\x8a\xf1i\xfa\xfc\x8d\xf9\xf4\x84\xc56S\xb0\x15\x1d\x12N\x97A\x92/\x04\x1f\xdd\x92]\x08\xcfk9\xc4\xc0n\xde\xc1j\x1d\n\xe7+\xf5\xe1bI#\x19u\xa0$\x11\xd1V\x99\x06\xa1\x8b-7\xc0~F/\x8baW3\"\xb0\xcefa\xe0\x85\x1b \"\xb32\x98\x85xu\xff\xe6\x04\x12\x1a\x9f\x07\x9e\xb9\x89\xcdh\xdf\xe7r\xfa\xa3\xf0,\xd4\x06\x1b\x86@\xceI\x10\x12\xdc K?\xb0\x902I+ol?b>\x05\x9az7\x10\xa8\x829\xcc\x03\x1a\xfa|\x9d\xa2 \xacT \xffo\x96B\xae\xd5d\xdc\x0e3\xb6EpN#\xf0IJ\xee&i\x9cyi\x16\x9b\x9ay,\xebJHm\x83\x94\xa8\xe6\x8c\x1e \x98\xbc\x9e\x02\xd6q\xe0!,\x07+Mc\xa7c|\x1a1\xa4\xdc\xb7T,d\x85\xa3.\xd8\xa2\xb6\x17\xe3\xcfY\x10q\xe5\x11Db\x83\xa6\xec\x8cF2\x91\x86H\x02\x04\x91\xc8\xa9FZ/$\xca'7\xb9\x81\xe1\xf4\xdf\xde\x9d\xbe|\n\xa7K\x9a\xb7\xaa\xf8\x9eD\xf0&Je2\x08\x02Q)\xec\x12!\xe6\xbc,I\xd9\x8a\x9f\x0f\x96\xcc\xc7\x0c\xa4\x96w\x90\xa7g\xf80\xdb\xc0\x82-\xd8:f)\x9bhq`\xe5M!k\n\x1b1\x8b\x82\xf4\x0e\xa4,%\xa1\xdcp\xe2\x1c$8\x1f\xd8\xdc\x80\xac\x90\n\x8a\xcf\xf21\x894\x9d\x0fk\xea\x15}\xe6\x89lk\xea\x05\xf3\xc0\x13k\xdb\xadWL9\xa2(\xd64\xed\xf8\"S\xf4\xb5\x1cU}\x88\x81_O\x10m\x0e\xb8L\x07j'\x8ar\xfeg\x17S\xe2)\xe4\x97V\\\xe8\xc5\xc3\x0e\xb3\xe8\x13\x8f\xad5\xb2\x0eA\xe7Ku>*\xa2}qr\x92T{\xf3\x82o@\xbe\x8dr2B\xe0\xd3(\x0d\xe6A\xa7\x88\xd7$\xaa\x1a:\xfez\xd9\xf4\x9a,=CF\xe3]`\xe74\xf6cr\xd1\x8d\x00\x95\xf1\xd8\x10\xd3\xff\x17\x91m\x9f\xaf\x8c\xc8\x95{#\xff\x98\x0b\xc9\xfc\x13S\n\xbdL_\xcc\xd1\x88\x04\xc6|\x89\xe5\x0e\x13\xf6!\x97\xdd\xc5\x82'\xdaD\xc6*\x0b0\xc7\x98\xe7\x01\x9apj)['m5\xd4\xe2/F\xdc\xfaei$\x1b\xe6b\xa6\xcaV\xe4\x07\x01!8\n\x84\x1d8f$$\x91\xca\"\x19A\x06\x18\xac\x0d\xe3\x860[\x15F\x148\xeb\xc1\xc6b\xc0\xd8\x038\x1b\xa0\xa5\xe1\x15\xb8Pz\xbf\x8f\xae\x17w\xde\xe64\x8e\xe9\xee\xb4\x80\xe3\x80\xeb\xcc\x01 M\xd3p\xe7Wfr\xb1g+\xa2T\x06\xe8\xdf2\x1ao\xaa[8\xef\xf3[\x8c\x9c\xb4\xc5\x8dF1p\xd1\x05\x17\xaf\xa2\xc1\xfe\xd6\xe5\xc9\x02\xde\x9f\xd8\xd9\xcd\xf2\x02\xf7\xe8\xf7\xcb%X_\x9b\xd3\xde2\x97\xa0\xbdk.\x01\xc9\xba\xa8D\x12\xb3g\x11\xec{\x1cvW\xd8\xfa\xa6\xbaF\x1e\xd7k\x924Au\x8d]\x82NMI0\xc4\xe0Q\x12\x1e'\xdfM\x97\xdc%\xa0:\x04t\xa7\x80U+h\xe6\x00\xa4j\xb1Bh\xa1^\x00q)^\x82\xfe\xbc\xd1\x06\x0c\xd3K0\xb3\xbe\x04\xdb\xcb\xf2\x06t|\xa7\xe0\xaf\xccK0\xaaO\x8bU2\xabP\xac\x125^\xa8/>2\\\xab/>\xb3\xb9m\x9d71\xea\x04+\x15m\xa7\xa4\xc7V\xd3\xbd\x14\xf5x\x17\xf0\x0bl\xe3^\xc3/\xb0^\xf1e\xfc\xa2\xdb\xd1\xae\xe4K\xb0\xb60\xd4\x17\xf3%\x98\xaf\xe7K\xd8\x81:1]\xd8\x97\x80\x16+\xf8\xcb\xfb\x12\xd03\x02\xabY\x81\xcdu~ X=P\x00\xfaj?\x12_\xca\xfa\\\xf0\x97`EE\xb0\xa6$X]\xf9\x97`\xb6\xd5\xb6\xc1*\x83\x12\xec\xd8\xb2\x02\xdb\x85\x86q\x0b\x02H\xb0\xbb\xa9^\x01\xbe8\x80\x84\xefl\x19p\xa5\x03,06\x17\xb0\xd7\xb2\xd8f\xcd\xdb.\x89\xd5rXK\x82>\xb2\xc0:C\xbe\x17\x83Xg\xc6\xf7\xe8\xe5+g\xc4#\n\x11 1\xd5\xcb\x15`\xcb\x11H\xe8U\x94@\x82\xf5\xcd~\x1c\xd3\xa3\x19\xde\x92\xd9m\x19\xddbz\x12,\xc7\x03=\xc6\x046\xa5\x0c$\xf4\x18\x15\xf4\x1c\x19\xd8\x177\x90\xd0s\x8c0`\x9c\xd0\xe7\xfe\x98\x84\x1e\x82\xa6\x0e(\x17`7\xd8\n\x98\n\xc6\xbdW&\xc1\xeev\x99\x04[mY\x81\x8d\x08i\x02Z\xa04a\x00S\x0ecKk\xfdZ\xc1@\xd6\xb4\xd6\xb9\x15\x0c\xeayd=,\xa1\xdff\x19\xb9\xa8\x82\x04+\x83R\x82M\x81\x05 =\xf9\xb5/\xa7\xda\xdf\x0c\x96\xd0s\x980`\xa8\xe0d\xbd\x93\xf5Z\x18\xc0\x94\xc3\xd8\xd2\xc9\xfa\xaf(\xeb\x11\xa5\x1e\xac\xf0\x15\xfb\xcc^\xda[\x95}\x90\xd0\x93e\xfb2\xab\x13\xf7\x08p\xe2\xde\x89{\x038q\xff\xd5\xc4\xfd\x88\x05($\xf4*C!\xc1\xb2\x18\x85\x84~\xfb\xa4\xc7\x1e\xe9\xbd?\xfa\xef\x0d\xdbR\x15\x12\x06\xb1&&\x07\xa2\x0b\xfa\x17\xaf\x90\xd0\xb7\x84\x85\x84\x81\x85,$\xd8e8t\xc1\xe8E-$\x8c\\\xdaB\xc2\xd5\x17\xb8\x90\xd0OLI\x18\xb9\xd8\x85\x84QK^H\xe8;\xc7\xd1\xcb_H\xb0(\x82!\xc1~\xfcc\x15\xc4\x900bY\x0c \xc8\xe2\x18x|\x92Kz\x94\xc8\x90\x80,\x94!A\xcasl\x96\x9f\x04|\xae_\x01\xc8\xd2\x19\x12z\xe8\xc2>Z\xd0\xa2\x98\x86\x84^\xaa\xcft\x01r\x1bzt\xd3W\xb9`\xafM\xa2\x11\"\xafWn\x03\xee\xc2%\x1a\xdd\xd0\xe2\x1b\x12\xfa\\\xcal\x83\x9d\xb4\xb3(\xc7\x81\xc2\xc7\xe6\xa6\xa2\x1c\x12\x06\x97\xe6\x90\x80K\xa3\xb7`q\x9c\xa4\xc1\xd0\xd8\xbe\x9c\x87\x06\x99:\xbd\xd0T\xedC\x02B\xc2a$\xda\x95\xde\xae2T\x04\x91\x80^Xmu\x10 H\\\x83*\x85H0f\xf8\xa3\x86bL\x16Ga\xc1\x1c\x92pi\xe2\x88$qT\"\xb7\xa9\xbe\x88\x04\x8bto\\\xad\x11 \xe3U\x1c)\xf0\x8d[w\xa4\xc0\xba\x8b\xea#\x05\xee\xdd\xd5 \x910\xbc\x12\x89\x04m=\x12 #\xcb$\x94 \x87\xdcvXS\x0d\x89\xce\xc6$\xc3\x9aa\xb9y\x85\x98\x84\xc9\xf4\xc2\x99[53J\x8b\xcd\xd2\xc4\xeaoV\x19k\x9e\xe4\x9f9.\xeb\x00\xc7eH.3\xd5U\x91\x80\\!\x8c\x05;\xac\xd2J\x03\x87\x82\x07l\xab\xae\xa8\x91\xd4*\xb1t\xd5^\x91\xb0&\x8b\x9c\x99\xb6)\xa8\xdd\x9c\xfa-\x19\xd1\xcbt\xaa\x0c\xe7\x18\x17\xc4\x18+\xcci\xa84I\x8a\xfe\x0b\xad\xcb\xff\x992\x98QX\x93\x84\xeb\xfb\x94\xc1 Y\xd0\xf7\xf4sF\x93t\"\x7fW \x13\xf5:\x04\x1a\x8e\x96\x93\x8c\xc2\x8a%)\xd0\xe2\xb2U\xd8\x15s\x10g\xc1\x81\x040\xbfJ\xaf\x14%\xf2(\xca\xe7/\xfe\x91?S,\x8f\x99Y\x98&\x95?\x0e\x02\xd5 \xaaN\"\xc1\xceS\x81L\xb5\x9d/H\xc2\xb7\xe4\x1d\x08\xd2$\x0f^\x05\xfcd,E\x99\x0f,]\xd2\xf8\"H\xb6\xd7\xd4,\x1d\xe5P\xaa\xcd W\x93\xaef\xd4\xf7\xb9\xfd\x16\xc1\x823y\xb9G\xf2J: 7\xb5:\xbdq|\xeft\xfc\xd9c\xb1\xc4\xe1\x07\xd1B\xc8#\x9a\xa4\x056X\x92\x042\xce?u\xcat\x92\xa3h\xf1\x81\xad\xaaq\xff\xa9\x93\x831]\x8b39<#q\xb9H?\xc1\xe1\xff\xd45j\x90Ep\xe6Op\xd4\xd9\xe2_\x8d?\xaa\xb8\xa7%~\x12[\xf9\xd3\x96<\x89+\xfb\x94\x83+\xfb\xa4\x13xW\\\xf6i\x1e\x84\xfc\x87]\xd6~*\xba\xb8\xb2\x02P\xdb]\xb7O\xd9#\xf4]tQ\xd9\x0d\\w\xd6Z\xe9\\\x06\xb9B&\xb9n\x88i\x9a\xc5\x91\x14\xdeu96)\xb5\xb7\x10\xf2\x8b\xa0i\xe1\x8a\x19p\xe1\xac\xd7\xc8\x13x\x17\x85\x1b`\x11\x95w\xe1\xe6 M\x81\xc5\xd0\x1c.\x14\x17\xd2g\x94\xab\xae\xc9\xb8\xd4RX2\x1dD\x94\xe3S\xd1\xb1%\xa6\xf3\xc9\x08RF\xd9\x8a\xc6\x81W\xfcMDj=\x12\xf1\xf9\x08E%<\x0d9\xe1\xb3\xa8\xd4\xf9-\xa5\xf5F`\x0bi\x92T$\xe4\xb8\"\xc8\x12N\xea3jI\xcf&\xfa\x1d\x13W\xb1\x0dj\xe4\x0d\x83U\x80\xa5\xae\xf8\xb60\x1cU\xc6\x934?\xea\x1c\xcc\xbf\x96\xbf6\xb0q\xdel\x13{\x0e!\x9d\xa7@W\xebt\x03A\n\x17A\x18\x16J\x91c.6\x88\xec\x84\xd3y\xb6\x01J\xbc%\x90\xf5\xfa+R\xb1n\x02V\xedu\xb4\xac\xb5\xe0\x14\x15\x1c\xca \x8d3*nu\x07\x91\x1fx\xfc\xec$\xef\x86\x97\x14\x14\x1f\xe6\x8cTG\x17D^\x98\xf9-\xbb\x8d\xe4\xf1\x96\xfc\xbak{\xc5\x84\xca\xab\x19\xbb\xdcn\xa9\xe6\x04-\xe1\xf2\xf1M\xd2Z\xad\xd6\x14\x18\xdf\x04\xdc\x18\x91\xc6\x89\xd8^\xd5~\xe4[n\x92\xef\xa6`\x11\xb1v\xe5\x87b76\xbb\x90\x94\x19\xba\xb03\xc6BZ\xf3\x06t,`L\xcfi\xdch\xaa[\xbc\xfc\xeb\xf6\xc2\x15\x8b&o\xf4\xdf\xd1o\x89\x06B\xde\x19\x95\x86\xb5(\x8b1\xee\x8c\xed\x0b \xca\x92J\xfbA4g\xb2aW\xedC\x19\x8e*\xaa\x1e\xcaxT\xb3NS\xa3\xee\xe1\xebZ\xc0\xe9\xdaV<\x14\xb3\x18\xf5\xc0\xaf\xaf\xf9dt\xf3\x99\xecKc\xe4\x07a\"\xeak9!\x10\xa0\x8e\xe5\xa6\x9aM\xfaCB\x01f_\x94\xe9\xf8o[\x93\xa9\xaa\xba\xa4@h\xae\xc5tMK\xf2kk+Y\xd4T\xd2\x86\xe0PA5\xb3\x97\x03F\xac\x99dU+i\x9c\x1aI\xe3\xd6F\xba\xe2\x9aH\xa3\xd5B\x1a\xad\x06\x92\xa9\xf6\xd1\x08bU_\xe3\xc8\xb8m\xb15\x8d\x8c#\x05\xd4h\x01_\xbb\xc8$\x1f\x0b@\xd7**\xaa\x10\x19\xf0\xd9\xd4(BQ\x05\xd0\x94\x01\x8bZD:'Q\x1b\xd0I\xf2\x08v\xa9}\x8c\\ @\xd7\x18\xcaY\x03\x83\x0f{)\x01[S\xe8\x1b#'\xaeV\x90 /\x02]\xbf\x1aA\xd8+QX\xd2\xa2\xc8\x8a\xdeq6{\x0e}q\xc9jA\xd1\x97\x92,\xb0\x8et\xe1\x08\xcbk\x88\x1a>\x8d\xea<\xa6\xd1cj\xf7\xf4\xa8\xd9\x83(f\x83aB#\x03\"\x99\x0f\xcbx\x88aK@\xf6\x0b\x16}\x03\xbe\xd6\x8eE\xef`9\x02\xb0\xad\xa9c9\x16\xe81\x1e\xb0\xbf`k\xb1\x81\xeb`\x0c\x92o\x03v\xe3V0\xe6\x05Z\x9b\x8b\xb3X\xedP\x01f\x8b6\xc1\xb8a\x9b\xd0\x83y\xfa\xb1\x0fZ\x9fT\xd0\x93\x85\xd0:\xa6\x82^=\x8d\xa4w\x1a\xc8\x90L=7\xa8\xdc\xc3S\x1f\x06I.\xc8\x14\x9e\xfa\xa4\xee\xaaO\xa4\x1a\xcb+\x93\xe5_\xb7\x1d\xf6\xc5\xdf\xaf\xb3\xc7\xfe\x9a\xc8\x9d\xce\xd8\x81\x04\xa3\xc1d\xc6\x0e\x86h\x82\x04DG\x80\xec\x0c\xcc\xf1\x05 \x08\x89(A\x1fk\x90\x80F\x86\x8c;H\xd0G\x1f$\xe85f\x130\x11\x02 \xfax\x84\x84\xdd\xf4l\x8ePH@R\x1cw\x8c\x970B\xccBB\xdf\xc8\x85\x84o\xf2M mt\xa3\xf8H\xe7<\xcf?1\xbe\x8e\x80r\xde\x14\x9fbNJ\x12\xc6\x8a}H\xb0\x8a\x80H\x18\x1e\x07)\xf0\x8c\x12\x0d)\x90\x0d\x8d\x89\x14xF\x88\x8cH\x18)>\"\xc1\x98v8\xb2bB\xa5\x1a\"\xb7\xb7\xd9\x95 \x01\x89\xcef\xb3X:\x17\x10\x930\xa5\x14Z\xbb\x1f\xb4\xd8,S \xfb\xb8\"$\x98\"1\x12\x90+\x84\xd1\xa1Cc3\x12L\x11\x1a \x88\xbd\x81\xd9\x17Wj\x19\xba\x07\xad\x0cC\xf9&\x8d\x0f\xa3\xd20\xc7\x84$\xf45.\xdc\x83V\x86+$\xbb\x8c\x1bI\x18\x1e=\x92\xe0\x1e\xb4\xaa\x813\n\x94\xd0\xdf(0\xc6\xa9\xf2\xcf\x1c\x97u\x80\xe32$\x97\x99ba\x12\x90+daz\xf6\x8c\x8e5p(x\xa0g\xe8\xac\x13\x97{\xc2\xca=a\xe5\x9e\xb0*\xc1=aU\x0b\xcd\x9b\x9f\xaa\xaa\x04\x8c{\x95\xaa\x00\x17\x9c\xbfF\xc1\xf9\x1f\xe3U\xaa\xaf\x10\xab/ \xfb\xf5\xba\xdeE\xd4~\xbb\x97\xb6\x1bb\xc4.\xdc\x8b_\x18j)\x0c?\xf7\xe2\xd7\xb8\xc45\xbfU\xe5^\xfc\x1a\x83\x8au\x8b\xb9j\xef^\xfcr/~}\x03/~\xb5\xb2\xd6D\xfd$\xd3\x0ds\x91\xe9Q&\xae\xc9\x92K\x9a[\xe6\xe2\xf3\x1b\xc5\xd8\xafi\xd6\x9a\x98\xc5\xa8\xbe\x11\x81\xd1\xdd5\x07c\xb6\x97\xfe\xf0U\x00\xc6Q\xf7\x0d\xdd5\xcf\x0f\xe6boT\xa9Y\xb5z\x0d\\H\x87\xb5\x9dS\x87\xafwu\xcdp\xd5\x1b\xfd\x90\xd4w~\xf1\xbbHT\x12\xcb{,\xfe\xa3#+HJN}~Y\xf7\xfb^\x92m\x10\xef{\xe5\xf5\xf0\xb0\xcbR\x8b\x94\x8a.\x94 M\x12\xef\x98\x97\xbdU\xbc\xee\xae{\x0b\xb0\x8c\x0e\x19#@\xd6\xb1\x9f\xafq\xeb\xc9\x94dd\xa4-\xea\xd6\xd3\x9e\xb4gr\x11\x9cK\xe4;-\xce4^\xfa^\x13Q\x14qT\x13\"\x0f'\xed\xd2\x88\xf8\xa6/\x7f\xe747\xd0G\xd9\xbb\xbb;^\x87\x1di]\xb9D\xed\xac\xa0VR\x8cZ\xb6\xe4K,N\x8e\xfa\xcc\xa5\"u\xa8\xde\xa3\"\x7fH<\x92U!\xc6]6\xaf\xe3U\xe6\x0f\xb50[\\9o\x0c[\x93?\xd4\x1e;\xe6\xe2y\x8e[j\xe3\x8e\x0fc\x037\x0f\x920N\xc5^g\x15\xeb\n\x0b\xe4\xf0C\xae>\x9f\x9f\x94?n\xfd\x7f\xbc\xf5oi\x87\xed\xbc\xa6B\xd1\xdc\xe8h%\xfc\x88\xc2X\xc6\xe6\x14H3\xdb%\x15HpI\x05\xd7(\xa9\xc0\xdd\xf8\x1f+\x94\xff\x03\xdf\xf8\xcfc'\xfa;\xffB\x08&\xcd\xe0\x89\xf9\xde\xbflu\xa3\x98\xc2u\x8e\xa1\\\x13 \xa4\x88\xe7H0\xda5f\xfc`\x8c\xf0H@t\x05\xc8\xee\xc0\x1c\xf3\x91\x80\x90\x8f\x12\xdc\xfd\xffn\xd8M\xcf\xe6\xa8\x91\x04$\xc5\x07E\x90$\\\xbf+q\xa8\xcb\xf6\xf8pF\xde\xc0x\x8f\x0b\xe5\xfb*>\xc5\x9c&$\x8c\x15}\x92`\x15\x83\x920f$\xaa\xc0x\xa5\xf1\xa8\xa2\xd3\x91\xa2R\x12F\x8bMIpW\xedK\xb0\xd9\x1c\x96\x07n\xc4$\xbe\xd3\xfbN\xa6(\x98\x04\xe4\na\xd4\xd58q1 \xa6\xe8\x98\x04\xc4\x0e\xc1\xec\x0eS\xbcL\x02\xa23@v\x08\xe6\x08\x9a\x04\xe4\xea\\\xb3\x8b\xf7\xa6\xf8\x9a\x04\xd4x\x8c\x86+\n\xcb\xf53X\x8c\x97\xcf\x11\xd6\x8796'\xe1\n\xac\x94\x81\xd1: \xf8\x98\x9d\x84\xddD\xee\n\xdc\xbb\x8b\xdf\x15=\xec:\x8a'\x01\x19\xcb\x93\xa0\x8e\xe8I\x18Y\x06:\x93d\x0b\xbek\x93\xc4\x95\x92\xa8\x81\xe30%\xf4\xe70CdR\x82\xe3\xb1.p<\x86\xe2\xb1~\xd1\xcfF[]5\x87~\xa1\xd1N|\xae\xa2\x83\xab\xe8\xe0*:\x94\xe0*:tqO%t\xd0E\x1e\xf2X\xe4\xb6\xd8q\xf9\x19.?\xe3Z\xe5g\xb8\xa2\x0f9\x98\xba\xb6M\x9cpE\x1f\x86w\xe1\x8a>`\xa8\xe5\x8a>H\xd81q\xcd\xe5\n\\\xd1\x871\xa8\xe8\x8a>\xb8\xa2\x0f\xdfK\xd1\x071\x00S\xd1\x87w\xfc\xa32oQ4\xd1\x15}\x10\x9f\xdf(\xc6~M\x13\x16\xc5,Fu\x9f\x08\x8c\xbb\xbc\xaf\xe9\x8a>\xb4\xe1j\x8a>\xe4\xc7n\xc1\xd6C\x9e\xd2\xb9\xa67G\x0du\x1d\xbe\xebb\x0d2\xf8,VV\xf1>\x8d\x94v\xb8\x97\xfa\x05\x1e\xf5\xeb4\x12\xd5J\xfe\xae\xc6V\x04\xad\x056e\xbe\x9bD\xa6|\xa4\xc6:\xcf\x8d\xc5~\xe7&\xe1\x1a~g\x12Mh\xe6!\xf2(W\x8d\"\xb0`Bd\x88\x15\x99G\x0by\xc4\x81\xfa\xd3\x99\xc2I^\x80\xc9\xcf[\xc0\x07\x81\xee\xd9\x06\xc2 \x11\xa6\xdb\x19\xdd$\xb9\x19H#\x12\xa5 H\xe7\x1a_\xab%1eh\xd6\x03\"\xf3\x98\xad\xf4c\xc4P\x05\xd0\x94\xe1@\xc2p\xca\xe6\xa6\xaf\xf4~\xaf6(\xfd`m@\xb0K\xedc\xe4\x02A9+!\xe6\xc5\xf2\x08\x93\x8e\x9f\x13\xf9\x9a\xad\xb2$\x15+\x93\xb3\x06\x06_\x9a\xc6\xc1,K\xa9!\xf5\x15H\xb4\xf9\x1e\xc9)f\x05$\x15Y\x84\xa9\x16\xfc[\x08L)3\x04\x0b{\xeb\x0c<\x16\xcd\x03\xdc\\P\x86\x8d\x04\xb9O0\xb4\xb5\xe4+[\x8e\xfa\x9c\x91(\x0dR\xd4P\xc0~8\xd0cH\xe0d\xa4\n\x9c\x8c\xc4\x82\x93\x91fdH&~+\xf9\xb5-&\x0b\xc9!\x18Y\xf24\n\x9d\x85\x94\xcc\xb7\x07\x86\xbc\x96\xace\xcbTNL:1Y\x80\x13\x93\xf6,\xf4\x03\x88\xc9\x0f\x92I\xf5r\xd2\x86\x93-\x04%\x8d\xfc5\x0b\xb4>\xf6\n\xec\xf8\xd7\x82w\xad\xf9\xd6\x9eg\xcf\x82\xc8x\x07\xb7\x82^,d\xbe\x7f\xda\x84\xbb\xf0\xe1\xe7\xe3\xf7/_L\x7f>==\xb1j\xf7\xfe\xf8\xb7\x17\xef\xdeNO\xde\xbd?E\xb7+Cz}:\xc5\x85\xfa\xba\xa01\xc9\xa7\xf0B \x9a\xd1\x01\x1c\xb5q\xb0I\xe0\xa81\x03r\xdc\x80O\x05\xc7\x1e\x0b\xc12\x1d\xdc\x88\xac\xcc\x89\xc5&\x84\xa3)\x04\x16T\x02\x8b\xb4p\xbd\xe2\xdf\x06\xeb\xd8\x81Q!\x96\x9f\xa3\x97\x0c\xd0 \xe2(T69\xcc\x12\xb0I\xe2\xdf,q\xc7M\x17\xef\x9b0n\x13\xc9\xc5\x13\x1aId\x8b}i\xb73-\"\xb4\x96\x8bl\x11\x91\xb5\xc2\x8f@G\"\x8b\x04\xfa\xd1R\xe8\x87&\xd1\x0fK\xa3\xc7\xcb\x9b\x11S\xe9\x0d\xc9\xf4\x83\xd3\xe9\xcd \xf5(\xd64\xed\xf81\xd3\xea\xddCC\xee\xa1!\xf7\xd0P\x03\xdcCC\xf9\x0d\x1b\xf4CCy\xfa\xba{h\xc8\xdd\xb8\xe9\xf8\xfd:\xdd\xb8q\x0f\x0d\xe5`\xea\x1aw\x15\xa6\x83\xb0_\xafk\xf7\x04\x10\xfa\xc9\x9a]\xbfR\xe3\x9e\x00\xda!q\xcd\x8f\xd7\xb8'\x80\xc6\xa0\xa2{\x02\xc8=\x01\xf4\xcd>\x01T\xa4\x1e\x97\xf7P\x8b?\xe4\x8d\xban\xa1\x9e\x14\x9f\x94\x17Q\xcbF\xf9\xa7\x8d\xeb\xa7'\xad\x1f\xaf\xed\x0d\xd4\xd6\xd4\xeb\xf05lf\xed\xedP\xa3\xc9\xbbdI:\xcd\xe2\xa07\x02sD_G\x14 \x86\xb8\xa6\x81@\x12Ld\x92`\x8c\xbb\x1b\xe7+\x01\x11SGa\x1a\x18/\xaf\xde\xe0\xda\x06\x04\xd504\xa3+\x12hS`P\xf3\xbc\xa0\xb3$P_v\x05\x1c\x9e\xe2vC\xbe\x01\xdfD\xf3.\x0f[\xeb\xab\xed\x1b\xba\x9c\xe7[\x8f\x91\x15\xe0\xbc\x97\xce{\xe9\xbc\x975p\xde\xcbxSZ&X\x07f\xdb\x94)\xc0U\x0d\x92\xe0|\x98\xd7\xc8\x87\xe9\x9cQv'}\xe7\x8c\xda!q\xcdn\x14\xe7\x8c\x1a\x83\x8a\xce\x19\xe5\x9cQ\xdf\x9e3j\xcf\xe8\x8d\xda\xffS\x1c\xf3\xfe\x95{\x89tn\xa9-\xaf\x94\xee}\xea\x93\xe6\xd5\xfbk\xef\x9b\x1a\xf5\xf4\xaa\xf10\x19\xcc\x11\xbdw\xc9\xd0\xd8\xe4Y2\xf9\x95\xb4^\xa5\x91\xbc#\x06\x7f\x12\xc2ZC\xf8\x92\x10X\x06\xf9\x91\xd4^$#\x95\xcc42\xf8\x8f\x10s3\xfa\x8e\x8c80~\xa3\xfe^#\xd4\xd9\xd1\xf6\xe8\xe8\xb2_\xdc\xc9\xb1\xeb\xf7\xebtr\xec\xcazY\x93\xb4\x9e+\\\xe9}np\xd4~\xe8\x18\x8d2\x04\x151\x9fN+!US\xea\x0d\x86\xe7\xdb\x9a\x8f_dJ\xcfX&\xcdP\x8fE\x91\xdc\x02\x1cM\xde\xae4\x06NeY\x9d|Y\n\xc3\xb3\xb3M{x\xafI@\xe0\xfd\xcb\x0f\xc5\x0d\xa1u\xcc\xfc\xacQ\x83\xe6.7\xf2\xc3<\xc1w\xff\x8f\x84\x15\xf6\x8d\xb5\xf9\xf0\x1b\xf3\xa9\xc8\xc4\xcd\xea\xa2g\xa4\x9d[\x1b\xe4\x94\x9b\x89\x9d\xceo=\xef\xce\xb2 \xf4\xa7M\n\xd5\xc1\xc0{^\xc8O\xa9Sue?S{\xb6Z\x05\xfdj\x8e/\xb4\x9aO\xd9\xac\xf7P\x13\x1a\x9f\xd3\xb8\xffT\x95\x0bdh\xdb\xdaCu\xd0/\xad\xaa\xba\xada\x9c+\x16\x05g=\xadF\x00zIVk\xaeTE\xc1O\x92\xb2\xf8.\xa7X\xc7\xb7\xe2f\x80\xc7B5\xe7\x82q\x8a\xe2\x8b\xa3\xb5\xea'\xc4x\xa1>\xe6G\x8aOf!\xf3\xce\xc6\xea\xe4\xf0@\xf1\x0dY\x8f6\x91\xae.\"\x9a^\xb0X1\x0d#\xfa\x12\xf5\x82\x04\xe4n[\x81s\xf0\x96$\x8ah\x97F\x06s\x07a\x90\xa44\x9a\x12\xdf\x1f\xccx{\x87O\x8e&\x87\x0f\x1fO\x1e<\x9c\x1c>=z\xf8\xf0\xc1\xc3\xf6M\x070m\xc7\x86\x08?\xa5\x91O\xe3U\x10\xa5E\xa3\x81#<\x98\x1c>\x98t-\x91\x08+!F\xb4b1\x15\xb6\x7f\xa14YT\x0c\xad\xfb6\xca\x08\xa7\x81\xf4r\x1aD>\xbd\x1c\x8bE\xf7X\xd4\xb5,\x1c\xe2\xb5'8\x81&\x9a\xf3\x9beo\xa9\xb7~\xba\xbf\x7f0\x11\xffOp\xc5\xa3\xaa\xfb\xbd\x07:\x15\xfe\x8a\x04\xa1\x0c\xb4\xca\xf8i\xd4P\xe9\xfb\xc9&\xf2\x82h!\x9bw\xb9->\xc8\x0f\xaa\xfb8\x1a\xd3\xa4\xc6k\xd51\xa21\x9a\xd74\x85@\x1a;b A\x02^\x16\xc7\xc2\xdd\x0e\xc9&\xe2=\x89\x1bh\xf2\xae\x0f\xff\xa6\xe0\x89\xdd\xdb9\xb5\x99\xee\xc2\xdei\x90\xba\x0e\x12W\xdb\xf9\xa6_\xd6\x0fB\x9f\x8b\xf3J\x1c\x91P\x1e\x83\xf8\x82\ni\x9f\xec\x87$\xa5\xbaR\xfd\xaf\xa94S\xe5wRG\xd8\xac\xea.W\xe3\xb4{\\0\xdeR\x08\xb4\xd3\x15M\x89j5z9\xac\x96\x94t\xfa\xc0\xc0\x84\x16\x8c\xa8A\xea\xa8 \xd2\x94\xfd\xb7\x15+\x1eKV,Yf\xb3N\x8d\x08bB\xc1b\xa9\xb9\xac*\xfb\x93\x9ers\x7f\x87\x8aO\xd2@WY\xdbnN{G\x07\x87\x8f\xee\x1e\x1e\xdd\xbdwpz\xf0\xe0\xe9\x83{O\x0f\x9eL\x8e\x1e?\xfa\xcb\xc1\xe1\xd3\x83\x03\x95\xcc\x8e\xb2\xd54\xbd4\xcak\xecDU6RH\x92t*y\xcf\xbc\x8a\xa3\xe4\x9d-I\xb2\xd4\xfd\x8e$/\xd4g\xf7\xf2\xe5\x83W\xf7\xee\x1f\xdc?\xb8w\xff\xf9\x83\xa3\xfb\x0f\x0e\x0e\x1f\x1e=y\xf6\xe0\xe1\xcb\x83\x17/\x9e\xdf{\xfc\xea\xf8\xc5\xc3\x07\x87\xaf\x0et\x97\xbc\xd7$6\xd5*A\x11\x01\xd0\x84\xe0\xa0\xc9\x04j|\x86Y\xeb\x02\x8ck^\x80y%\xc0f5`\xc4\x15\x11t\x19\x93\xff\xef=\xd0m\x00yj\x9e\xea \x82\"\xc4X\x04\xf0IJ\xae\xd3x\xca\xd3gr\x9dF%r*\xae\xe7\xd0{p\xdf\xcb\xc8\x1f\x8b\xb3/\x94<\xfc\xb2^\x9c}\xbe\xf70\x8d\xfe\xb8\xf0\xbf\x9c\xdf's\xef\x9e\x7f\xa4r\x05i\xdd\x06\x80\xd5\xba8\x8dkp;\x01\x96x\x80r?\x81\xc9\x05\x05\xbd\xfa\xeb\xeaNo\xc0\x19)h\xa6\xdeu\xda\x08zC\xcd8Y@M\x18p\xc6\x19\xca\x08\x01\xd3\xf2\x15`6\xc8P\x94\x86\x11\xa8\xad\xd8*\xee$Z\x81;\x89\xe6`7Qw\x12u'\xd16\x98W\x02lV\x03F\\\x11w\x12u'Q\xc4\xa8\xdcI\xd4nP\xee$\x8a\x1a\x97;\x89\xba\x93\xa8I\xdb]\xab\x93\xa8RQJ\xf4\x83R\x94\x95c+v\xc9\xd5\xf7\\\xd3\xd9;;\xd98\x9b\xd8\xd9\xc4J@\xaf\x06\x8c\xb8\"\xeb\x98J\x9e7\xca~}A\x7fc\x11\x7f\xe4\x9abW\xb4\xb4\xcf\xcc\xaaK\x02\x9a\xba\x15fCN\x8f\x044\xde\xfa\xe1]y@\x97`rGH\xd8E\xcf1\xcb\xcc\x0f\x1f\xec\xa2\xe34X\xd1$%+\x83f\xeb\xd9y/g\x89\x04\xd1\x1fjL(\xa9Q\x8eI\xe5\x8a\x92`V\x14\x12\x90\xbb\n,v\x16\xa0\x05\x96\xd5b\xc0\x88B\xab\x02\x842\x91`A(\xb0$\x16\xe0\xd5\x8b\x04\x0bv)\x00\xadj$`\xd7\x0f\xec\xd7\x10F_\xc7\xb2B\xbai\xc4\x16#-Gh\xac\x9c\x0e\xf0(;}\xfe\xe8\xfe\xdf\xc2\xb3\xe8\xf3\x7f\xfd\xfd\xe5\xc5\xe2\xd1\xef\xd1\xc3\xb7\x8f\xdf\xad\x1e\xbd\xca\xfeq\xf0\xf2\xdd\xfd\xd9\x1f\xe7\xd9\x1f\x0f\xe3\x8b\x9f\x0fW\xa7\x1f\xff\x1a\xbf\xcf\xde\xbe\xfd\xc7\xf9\xf1\xf1\xe7\xd3'\xbf\xff\xf1\xdb\xe2\xe4\xe0\xfd\xf1\xfe\xe9\x8b\xf5\xc3l\xff\xc9\xd1\xf1\xe7\xf8\x1f\xf3\xff\xfc\xeb\x87\xf5\xb3\xbf\xfd\xf4S\xd9q\xbf\\\xbb\xbd\"\xd9\xeeO\xa9\x0et\xb7?_\xd3\x14\x88\x14\x1a@\xf8?=\x1a\xa7$\x88rM\x92\x7f>v\xea]\xf7-\x9a\x8e\xfb2\xf2bMc,\xd0&\xc331\xf8\xado\x0cWm\xb66\xd1\xe5\xdd-7|\xaf\x0c\xc1\x1a-\x8b\x8a\xf6\xdb\x83s\xf9\x82\x88\xb3\x0c\xd6\x95\xe1\xa24\x05\xb8(\x8dY\xc4\x8f\xa9\x82\x10F\x04\x8a\x08\x80&\x04\xe0M\x06\xd4Z\x17`\\\xf3\x02\xcc+\x016\xab\x01#\xae\x88\x8b\xd2\xb8(\x0dbT.Jc7(\x17\xa5A\x8d\xcbEi\\\x94\xc6\xa4\xed\xaeU\x94\xc6\xe5\x0b\x96`\x9c,\xa0&\x0c8\xe3\x0ce\x84\x80i\xf9\n0\x1bd(J\xc3\x08\xd4v\xf9\x82\xee$\x9a\x83;\x89\xee~\xbb\xd5\xc1\x9dD\x15\x80^\x0d\x18qE\xdcI\xd4\x9dD\x11\xa3r'Q\xbbA\xb9\x93(j\\\xee$\xeaN\xa2&mw\xadN\xa2._\xb0\xab\xfd\xa0\x93\x8d\xb3\x89\x9dM\xac\x04\xf4j\xc0\x88+\xe2\xf2\x05\xdb\xe0\xf2\x05\xbfF\xc7._\xb0\x01fE!\x01\xb9\xab\xc0bg\x01Z`Y-\x06\x8c(\xb4*@(\x13 \x16\x84\x02Kb\x01^\xbdH\xb0`\x97\x02\xd0\xaaF\x02v\xfd\xc0~\x0da\xf4u\xfc\xfe\xf3\x05\xef\xeb\xb2\xd3\xdeDB\xe3\xb4\xb3\xd1\xf6\xee\x1f\xdcW7\xca_1\xcb\xd3\xdadS\xf0\x19M\xa2\xbd\x1a\x8a^y\x8a\xfb\x95\xeb\x83\xa6\xd6\xa5\x01\xcb\xc6P=/4v\x9eb\xaf\x04\xc0\xc6\xc0\x80l\xd73\xdcq:\xa0J\xa7k\x98\xbaZ\x08U\xb3\xab\xad\xfcn\xb0\xb4\x10\xdb\xb3\xbf\x83\xa0\xe5\x1e8'!\x1f\xeb\xe1\xc3\xcb\x0d]\xad\xe9j\xbd~rt\xf9d\xb9\xf9\xf2\xe5\xc9E\xbc\x98?\xb9\x1f?\xfc\xe3\xc9\xf2\xc1\xfc\xe8\xe2~t\x14v\xe2\\g3\xf5c\x97\xa8\xd9`\x84L9\\\x8fE\xc9:\x9b\x1d~\xf1\xfe\xf03\xba\xfe|p\x9e\x1d}Y\x9c-\xce\xee?\xa1sr\x10}\xbe\xf8\x12\xf9$\xfa\xfc`u\xdf{\xb4&\xf7\xb2\xfbd\xfd\xe5\xfe\xe2(~\xb2H\xd6\x9f\x17\x0f\x17O\xbc\xe4\xde\xd9\x13/\xeb~\xf6\xf1\x9c\xa5A\xb4\x98\xae\xd9\xc5\x80gv\xeb&\xd3\xe1\x81\xca2*\x9dF\xeb8`q\x90\x8eB\xc2V\x7f\xfdD\xd7^Kv\xa13\xad[\xc2\xc1\xa5[\x0fM\xb7\xde\x92\xb6\xb5\xb4k'm\x058i[\x03\xc4l\x9c\xb4\xdd\x9d\xb4\x1d\xdf@}V\xdc\xb7\xc8m\xd3\x88\xa5\xd5\x9bx\x15\x8e\x9eb>\xbd\xe4\xc2\x9d$\xcb\x0e\xd1\xee\xd3uL=\x92\xb6\x84^K\xe2\x9f^\xc2l#\xceI\xf9\xef[\xd2=&QB\xbc\xb4Vg\xbee\x81\xa7q@\xcf)\x10H\xabO\xf3\xe7+\x834\x11\xb8\x8b\x17\x8cv\xa8\x15\xaa\x19l\x0d\xf1\xf4\xb2\xfd\xb3\xcdC7\xd0T\x07\xcf\x9e?{yt\xf0\xf2\xf1\x8b\xfb\x0f\x1f=x\xfc\xec\xc9\xc3\xe3\x97\x0f\x1e?\xbe\xf7\xec\xd1\x93\xa3\xc7\x0f\x1e\x1f=yx\xfc\xfc\xe0\xe1\xcb\x07\x87\xf7\xef=\xb8\xff\xe4\xe0\xd5\xb3\x17\xcf\x8f_\x1e=8~t\xf4\xec\xde\xf3\xe7\x8f\x1e>\xbbQ\x8c\xc0V\x9b\\\xca\x12\xef\xa9|\x03\xe7<\xe0\xd2\xab5\xad\x91TG\xf7\xa9Y\xbb\xaf\xf4B\xe9\xc5\xc1\xe3\x07\x87\xf7\x1e\xbfxrx\xef\xc9\x93{O\x0e\x9f\x1c=y\xf0\xea\xd5\xfdg\x07\xc7O\x0e\x0f\x1e\xbd:|u\xf4\xfc\xc5\xcb\x83\x17\xf7\x1e\x1d?~\xf4\xfc\xe5\xc1\xc3\xfb\xf7_\x1e\x1d>z\xfe\xec\xd5\xbdg\xf7\x9f<|\xf0\xb0=>\xadRS\xf8\x13\xca\x11\xde{\xf8\xb8\xf5c\xda\xe1\xdc\xd4*-\xbd\xcaZ%\x1d\xd5\xea\xc1\xa0=\xc1\xe4;6\x88\xb59\xd5\x86\x8a\x06Ek\x16\xc4\xe8\x14\xd7\x8a[\xb2bYd\xcc*\xbb^~u\x9fFl\xa5\xff\x045\xf7\x02J\xf6KRr\xd6\xf54N\x05&rI\xe8\xd3\xf7\xde\x83N\xe5\xba\xa2\xab~\xef*\x19\xd9<;\xbcx4\xfb|\xfa\xf6\xc1\x83\xbfg\x87\xf7\x1e\x7f\xf9\xdb\xec\x95\xf7\xf7\xcb\xfb\x7fy\xfejs\xfcfA\x1f\xfc\xfd\xb7\x93\xf9/o\xb2\xf3/\xcf\xfe\xf1\xf0\xc9\xdb\xcd\xe7\x9f\x93\xcf/\x1e\x7f8|s\x11\xbc\\\xff%\xf88{\xf8\xfb\x07?\x0d\xd7\x8b\xff\xfaI\xd1\xb5\xc1&D\x10\x12P\xc4\x84\x02\x95\x96_P\xf4\x84:M\xd3\xf2\x00\xb8\x7f\x92\xcd~\xa1\x9b\x0f\xd4[\x1f=xx\xa6J\x00\x05\xd3\xebw\x12\xecGr|\xfe\xe5\xe0\xfe\xef\xcb\xf4\x97\xbf.\x1f\x1f?\x7f\xfe\xfb\x97\xf0\xcdcr\xca\x92\xd7\x9b\x83\xe0\xec\xd5\x7f\xfe\xf2\xe6\xf7\x9f\xffv\xef\x8f_\xde\xc6,\xf9Y%\xac<\xf9\xf0\xb0T#\xa65\xc1\xb2\x9d:\xec\x93\xd0\xcf\x99:\xd0\x0f#\xf4$s\x80FUq!\xd3\xaa8\xe5X\x17$\x99^\x90\x88\xdb\xa4}\x9a7CY\x07\x8a\xb3\x02\xef$K\xc6\xe8\xe2\xe1\xbd\x07\xf7\xbbz0=\x9d7H\xc5k\xb79f\x93\x7f\xbdWn\xf5\xc7\x987\xc5\xf9%?\xcf\xbc,\x1c\xede\x82\x8d\xf9\xf4\x828\x9dTo0Q\x12{\xcb\xfa\xa9\xa4\xf3\x00\xd3\xf1\x99x\xf6\xfd\x9cFi2\xea\xc1\xa5\xfd\xcc\xb6<\xb9\xe4\x0f\xa1Nd\xdf\xb5\x9f\x15\x0b\xd5\x18|K\x9d\xd5O`r\x02\x90d\xde\x12H\x02{\xcd~~Jh\xe4\xef\xc1\xc52\xf0\x96\xe5K\xe2\xad7\xd9\xf9Qc\xce\xc2\x90]\xf0\xb3\x1c\x8d\xfc5\x0b\xa2\xf4)\xec\xbd~y*V\xed\xff\xe9\xc29\xe1g\\\xf9\xb2|\x03\x9bxG\x7f\xc5\xfc,\xa4\xe03/[\x89\xe1\xf1\x13\"\xbb(F;\x81\x90\xb13\xf1\xc8\xee\xe5\xe54\xff\xdb\xaa\xf3Ms\x8f\xc5\xf2\x0c%\x9e5\x97\x0e\x8f\xbb\x89\x7f\xb6\xef3/\xd9O\xd6\xd4\x03?\x88\xa9\x97\xb2\x06\xcdk'9>Z\xab\x15J\x84\x9e\x1bo\x8583\xcbC\x9d\xc4,)\xdb\xf8\\E\xe5\x7fk\x8e\xe9\xa7\xccJr\xac\x98O\x13\x08\"/\xcc\xfc\xa6\xad\xf7\xe9\xa6p\x87\xdc\xfct+\xa6i\x16G@\xe6)\x8dy\x1f\xf2\x1e\xda\xed;\xf0\xe9f\xb2\x89\xbc\xfa\x174\x86\xe7K\xea\x9d\x9d^\xde\x06R\xf3^J\x84\xa4\xf9y,<,\xe4\x82lnOj_*s_\xc6\xf2u\xb8l\n\x97M\xd1\x02\xd4y\n1\xf7\x02,\xceP&rI\xe8\xd3\xb7\xcb\xa6p\xd9\x14\xc63\x0e\x8a\x9e0\xf8\\\x83\xb0H\xecG2\xc2)\x06{~A\x0d\xcexn\xc0\x9cV\x86\xf6\xc45\xbaJ\xc1)\xb0\x96\xd8\x84\xc6\xcf\x7f\xb6\x8e\\\x9c^VvE\x10-\xf2CR\xed\xeb\x91\xf4\xb7\xc7\x0d\x8c\xe9\xc8Z\xdc\xeb\xa4\x1a\x94H\xb7#I\x05\xf8\xa4\xab|<\x98hn:$\x99\xba5\x9d\xecL\xed\x83h\xdeO\x0b\xf4M\xadq9)\xb8M\xa8b\xce\xce\x1b\xc5\x82\xf9\xc4\xffU\xac\x14\xff?:\xde\x83\x07U\xac\xb2\xfdA\xce^px\xd0\xfd\x8d`!\xf1\x7f\xad\x96\xfb.\xecuK\xc7\x8e\x1f|\x1a\x06\xe74v\xbb\xdd\xedv\x01?\xcen\xef\xaaX\xf8\xbd\xef\xf6!\xf7:zV8\xd0_\xd5ho\xa8~\xfe-q\x0bJ\xde\xe7\x93m\xeb\xee\xae\x11\xf2\x08_\n\xd4\xad\xfbM)\x13\x99#\xc7\xab bp\x11\xc4\x14\xe6,^\x95)o*WR'\xae[\xb9/\x89\xc5\x10\xb1\xf46\xccc\xb6\x82\xbf~x\xf7\x1b\xefeF\x12\xfa\xf0\xfe\xdd\xe2\xbe\xa2\xe8\xb0D\x97\xd08 a\xf0\x85\xfa0\xdb\xa4\xb4\x18\xfa5\xf1\xb1\xa9\x162\xf7\xa5\xa5,\xbf\x85Y\xfb\xce9\xa7L;\xd29\xa7\xcc\xf3\x94`\x9e\xad\x04\xe7\x9c\x02s'\xce9\xe5\x9cS\xce9\x85a\xbb\xaf\xe1\x9c\xb2w&I\x15|A\xc4\x05\x01\x8f&\xc9<\x0b\xc3\x0d\xf84/\x8b\x10\xf9\x10\xd3\xc2\xea\xa8a\xd9\xb9\x1e6\x19\xa2\xe2\x11\xc3\x0e\x9b\xe8n\xdb\x16\x12\xb7\x08R1\xcf\x8a(\xda\xe0k\x8d(+\x12J{\xae6\xf9~\x97\xf4\x85u*\xc9*\xdb\x8el\x9d\xbe\xa0\x1d\x16\xa5\xb0 \xfb\xd8\xa7\x9d\xd8:\xedS+\xbb\x94\xdbz\xdc\xa0\xcd?\xf8f\xecS\xb9n\xb5\xef\xbe\x9e}j\xda\x17\x9d\xda\xee\xc3\xf9\xb3\xe0?\xe9\xfd_N>\x07\x7f\xfc\xd7?\xd8/\xaf^\xfd\xfc\xf2\xcb_\x1f{G?\x9f\x1c\xcf\xcf\x8f^\xbe\xfa\xe8\xbdY^\x1elN\xc8\xe2\xe2\xe5\xf2tsp~r\xfc\x97\xd7\xaf\x97\xcf_&\xe1/\xffI\xee\x1f\xcf\x0f\xb2g\x7fY\xcd?,\xd9\xdb\xe7\x8b\xdf\xbf\xf8\xaf_\xc5\xffx\xff\xe6\xc5\xdb\xd3\xe3\x8b\x97\x8b\xbf\xfd\xed\xe2\xaf\xecm\xde\xed\xd8\"h|\xdav\x1a\xeb:\x83\xd4\x90\xf1\xdd\xb9\"\x9d\xc6\xf9\x80\x13\x86\xd2 7\xa8\n\x9dei2\xc2\x11\x87\x93\xc1.\"\xa3\xd1\x8dR\x85hc\xdblh\xdb\xf6\xd7a`w\x1b\xd7\x1a\xc4\x1a\x93w\x00\xcb\xa0Lu\xcdD\xcd\x06\xf4W0\x9e\xb5\x86\xb3\x91'\xcd\x1c\xa97\x96\x8d4\x83AF\xb2\xc1@\xb6\xeb}\xa0a\x8c1\x8a\x8d\x032\x18\xc3zC\xb8\x1f\xf6\xaf`\xda\xed\xed\xcfHt\xb6?#!\x89<\x9a\xec\xff\x99\x17\x13\xebY\x8c\x89\xdbk9\xf5\xa1\xc0\x99\x7f\xd76\x08\x9f\x91\xa8\x88#\x8fb u\x96T\xda.\x8d\xd6\xbcI\x97\x0f5\xff\x0c\x82\xa8\xa8\xad\xd6\xb04aX\xb9\xa5>\x97R\xadM\x91\xe3n\xaa\x83\xd6\xf6\xd8\xd6\x9f\x9dzS#\x9btRI\xa9\x1f\x0d\xbb\xc3\xa0\x0f\xd5z\x10\x8b\xb7\xa1\xf7\x06\xed\x9b\x9c\xd7k\xfbf_\x9c:\xe64Nr\xa4\x88\xb3R\xed\xba\x7f\xe4\x83\xc7\x82(\x91\x07\x14\x16U\xdb)e@\"\x96.\xcbX\x83fC]\xf5\xe1\xe4\xfb\xda{\xda#W\xbe\x1c\xaaY\x89$Z\xa1;\x85\xff!\xbd\x14\xe10>\x9ffa\x84]\x1f\xc2\xf8\xd1v\x1a\xd3\xcf\xa3Ze\x9c'\x87\xea\xbb|A\x16O\xc82~x\xb9\\\xa6\x0f\xe2\xd5\xe7s\x1a=\xff\xe1\xad\xbcNT\xad\xfd)i\x9d3\x11\x8b\xe1\x17\xba\xe1\x93\x17\xcb\xc57\xcd\x82F4&i\xcb!\xd0\x81\xb9\xb7_\xb96\xbb\x9b\x1fh\x94\xc2y@\xe0\xb9\x98'\xfc\xce6dAc\xf8\x7f?\x1e\x1c\x1c\x1c\xbez\xf8\xf8\xe0f\x07\x06\xfd+\x99\xf8\xeee\xa7w\x7f\xcef\x1d\xdf}SV\xd1\xa1\xa2*\xce`\xc4\xfa\x9a;\xc4\xff#K\xd2\x15\xd5\x1f;Q\x1d\x1dN\x8e\xbaz\x99S\x95\x01\xef\x8e\xb4\x1d`\xdb\x9f\"f\x94\x04\xab,$\xa9\x96/g\x8c\x85\x94tI\x86\x1a\xfe9 \x93\xee\xf9\xe8n^T\xf02I\x03n\xb7sn\x13\xde\xdd\x96\x9b\xd2#Q\xc4\xc4\xf5\x8c,\xa1~\xbb\x9aM\x05\x1e\x8b\xfe\xc8\"\xd9H\x14\xa3(\xc4\xdc\x94E\xe1\xe6v\xab\x95\x8a\xce:\x96\xdbU\xad\x00-\x8b!\x96\x1b\xc1Zz\xb6\xb2\xe9\xa3\xc6N\xdd\x16\xf9\x91\xbe\xdai\xe9\x18\x94~\xc1b\x91\x9cgPB_\x81\xee<\x83\x0d\xb8\x121\xea<\x83\xce3\xe8<\x83p\x8560\xda3X\xdc\xb8\x8d\xe5KBU\xab^\xae\x0d\xe9\xd9\xa8\x95=\xb2\xf0\x01\x9e\xf2V\xe2\x16i\xb8\x016\xcf}\x19\xb2\xf4\x9d<\xe5\xe4-\xc6\xf1\x06Z{\xc9\xde\xfdR\xfbe$\xcd\xab-\x10\xd5K\xf7\xfep\xb6\x95\x89UUi\xb3{5^\xdd\xffS\xcc>\x88\x04\x97\x14\xfe\xebm\x9fU\x87\xc7Jzv\xea\xcdot\x0e\xe39\x0b\xa2\xee\xcf\x14\xee\x9cNr\xd4\xbcS\x19I\xd9J\xfc0`\x8f\x11H\x82h\x11R\xb1\xd9\xba\x86w\xbd\xf7Z\x8b:8I\xa7\x9aj\x7fF\"Y\xba\xecp\xe7\x0e\x0f\x83\xd4\xfc\x7fe\x01A\x9d$<\xceJ\xce\xb4X\x9d\x9d\xfafk\x9f]\xb1+\xd6\x9a\xe9\x8e\xbb\xa9\xce\x17d\x8b\xf20\xa2\x0e\xe84\xb04\xd2Pa\x14\x0d0\x8cG0m\xb4\xcf\x14\x19\xda\nM\xafk\xe9Nd\x0d\xb0\xedO\xe1\xd8Zg\xb30\xf0\xae\xf7\xe1a\xd8\x01\xa0\x879ma\xf7\xd2zH\x8f\xafi\x10-\xf6}\x1a\xd2\x85x>\x8c\x1b\x15\xf9\xbf\x8f}?\xfeW\xf1S\xc0\xa2\xa4\x8f\x85Q\xc3u\xa3sp\xcfd\x08\xec\xd8\xf3\x8e\x8b\x90\xc6\x1c^\x14\xed\xca6=\xed\x0d{\x11l\xa9\xf8H\x18B\x8dD2\x8aI\xaa\x89\xe7m\xda:\xef\x83$|\xfe\x17\x0b\xb5g\xad\x1f\x90F\xc9\xae\x03\xe399t\x0f\x9ek\xb7\x05\xea\xc9t-\x86dI\xe2\xee=\xafm\x96\xa7\x17\xa8\xdb\xfd\x88g\x17\x94\xc9Z.\xfa\x96U\xd5\xcfdmf\x16T)\x04\xd9l\x15\xa4\xb5MXl*\xbb\xcc\xe2\xad\xf6[\xe3\xca\x85\x12\x05\x12\xe5\x84\xe5\xa2*\x0c>gA\x91\xc3 \x8ag\x95\xac\x8a\xdaxVV\x97\x0br\xbb w\x0bF\xb0\x82\xaf\xce\xc1\xe7\x82\xdc[\xe0\xce\x02\xea\xcfLg\x81\x1f<\xc8\x8d\xb0\xaa\xb4\x84n\xcc\x0d\xf9\xc4n[\xe2\xfbt}\xf6\xe0\xbe\x97\x91?\x16g_(y\xf8e\xbd8\xfb|\xefa\x1a\xfdq\xe1\x7f9\xbfO\xe6\xde=\xff\xe8Q\x0b\x0d\xc2\x98\xdb\xf5\xc0\x07\xbd\n\xac\xcf.\xe8\xa5\x845[\xd4\xb8Y\x8c\xdb\xd2\x1c=\xc6`\xafmB\xfdqf7\xc9\x98\xbb:\xf9X\x19`.\xe9\xa0\xd1\xd4\xa9\xb5\x06\xd8\xf6\xe7\x92\x0e\\\xd2A\x13\\\xd2A Wu&\x19\xee\xd7\xe0\xe7\xd3\xca}P$%4\xdd\x0c{\xf7\x0f\x0e\xd5\xa8\x7f\xa1\x1bX\x93$\xb9`\xb1\x0fA\x02\x171C{w\xd5\x11>;\xef\xee\xfe\x9f\xa5Y&~\xfb!\xbc\xbd\x9a\xd94\xa8\xa1\x9d\xcd\xbb5\xb7\xd1\xe5\x87\xf9\x94\xb6}@\x83\xa6\xd4\xc3Z\xb5\xf0c\xff-\xa3\xf1F&\xacdqL\xa3\xba3\x0df4\xbd\xa04\xaa\xfb\xb4\xc5E\x8fm?\xd7\xb5\xf7q[Yz\xc3\x0eW\xc3N8*W\xb5\xa6\x89\xd2M=\xc0\x08\xf8\xb6\xce$\x83\xc4w\xb9^#\xf9\xaaQ\xc27\x8bf\xf2%\xd4\xa9\x0b\xb2\x19\x83l%\xb1\\\xb8M\xc0u\x0f\xb7\x05Q\x90\x06$\x9c\x1a\xe3g\x8a\xf6}\xdby1\x15\xab8U?u(\xdb\xab\n\xc3\xae\x82h\x9a\x06+M\xcf[\x150\xfb\xc9\x9d\xaa}/\x11\xa3\x0f\x87\x91\xa8s\xc7\x14;`\xec\xd8\xd8G\xd1W32\xc6\xffB\xfd\\\x99\x15;\xd5\x05\xc7\\pL\x80\x0b\x8eIp\xc11\xe7El\x82m\x7f.8\xe6\x82c5\x18a\xe0=\xdc\x0d\x15\xb8\xe0\x98\x0b\x8e\xd5@'\xe2]p\xac\x03\x9cZs\xc11\x17\x1c\xeb\x02\x17\x1c+\xe1\xaa\xce$\xe3xW\xbb<\x11\xdfT\x98\xac\xd3S\xeb\x02f\xcd\xd9\xfch\x013\xb5W\xda\xc5\xcc\xfa\x1c]\x86\x1d|h\x94\xc6\x9d\xeag\x80\x01\xda\xfbj\x07\xc2\xf9\x0d\x18A<\xb4=\xc2\x19\x0e\x18<:\x9f8\xa8\x10\x0cP\x18c\x87\xe3J\x19\x1f\xd3\xda>\xd5\xcb\xeb\xcf|\x93\x97\x1d\xb5\x04\xf6\x8d\xce\xee\xad\x85u\xd3\xb5\xd2AE\xf5P\xaa\xdd2\x8f\xf3+\xf5\xaa\xf1\xfcN\xc2\xdax>\xc4\xde\xef\x1aa;\xca\x90Rf1\xa0\x17I:`@\x16b\xbb\x08%6\x98\x00n\xcd\x830\xa51\xcc6rR\x92!\x92\xc2\x9ft\xed%42\x94\xf8\xff\x8f\xe9\xfc)\xec\xfd\xff\xf6}:\x17\xe2\x89[0\xefk\x94\x18^\x9a\x02aH5H\xffC\x18LV\xd5p\xf3\xd8]\x83C\x0bN\x1b;d\x87-\xdc:\x92m\xe0\xa2s.:\xd7\x82o\xea$\xec\xa2s[\xe0\xdc\x98\xea\xcf\\t\xee{\x8f\xce%\xb1W\x0c\xfe\xab\x8c\xbf\x87\x8b\xa3\x82j\x1a~\x92~\xbd5\x184\x87\x1eY\xb2\x0dqx\xf0mE\xec\\u]\xa3\xca\xe8\xab\x8e],\xaf\x01W\xa2\x04],\xcf\xc5\xf2\\,\x0f\xae\xf0\x043N,\xaf\xee\x9aP\xc4\xf0v\xe7>*\xcd\x96\x1f\xc3wd\xe1\xdb\xacBR\x15\x8d ]\x92\xb4\x11\x84\n\x92\"+\xbb\xf4\xd0~/\xfeM\x8dX\xd3 4\x96\x87\"{\xdfs\xe8g\x07\x8fk K\x1b\x95FI\x96L\xd7\xd9L!\xfa\x0d\xd30i\xb2r\x9c\xbc\xafu6;\xfc\xe2\xfd\xe1gt\xfd\xf9\xe0<;\xfa\xb28[\x9c\xdd\x7fB\xe7\xe4 \xfa|\xf1%\xf2I\xf4\xf9\xc1\xea\xbe\xf7hM\xeee\xf7\xc9\xfa\xcb\xfd\xc5Q\xfcd\x91\xac?/\x1e.\x9ex\xc9\xbd\xb3'^6\xdf\xea\xe7\x0f\x12\x84\xb4\xd3\xe9\xa4?\x11')I3\xcd\xda\xa9\xeez\xa4\xec\x8cv\x17\xf14\x9c|\x8a\xd3k\xcf\xa2ru\x96Q\xb6\xed\x1d}\\\xb1(8S\xbf\x8dnT\x19\x81O\xa34H\x95\x0f\xde\x1b\x11\\\xd0Y\x12\xa8|\x1b\x88\xf6 \xf5\xb28H7S\x8fE)\xf1\xfa\xc7-}\x9a\x92 4\x98\xe7\x8a\xf6\\P\x1a/\x11\x99wS\x97R\x17\xa8\x83(\x8d\xc94\xbd\x9c\n\x13\xa2{\xb9\xf4\xdc[\xeb\xe5`\xeb\xc7*ee7s\xa8\xf0\xeb/K!\xb0\x1f>ytp\xf7\xe0\xf0\xee\xc1\xe1\xe9\xc1\xc1S\xf1\xff\xff\xb1\xdd\xa1\xc7V\xab Iv\xb3eb\xa5+\xce8\x0f0Q\x8a\xc3\x8a\\N\xaf\xa2\x0foI\xa2\x05\xddyW\xd9\xda')\xb5O h\x02\x96\x03zZ\xabU\xfb\xab0H]6Xs6\xf8l\xb0V6\xc0\xb8\xb3\xe9aW\xd9[\xdd\xb5|\x95\xef\xc2\xe4\xb6\xf2\x14\x9a-h\xb4)\x84\xb5\x9e\x87\xafq\x05f\xcbY;|\xbd\xd5\xbc{\x9bYe1\xeb\xece\x95\xb5\xac\xb36T\x96\xb2\x868f+Y\xdbXc!k\x95\xbd^\xd5kmc\x83\xce\xd2\xdb\xc5\x86\xc6Z\x9b\xd8\xd0\x16g\x0f\x1b\x90hmaM[\xad\x1d\x8c\xdb\x1b\xdbf\x04\xd2\x02\xd6\xdb\xbfJ\xeb\xd7l\xfb\xf6\x1d\xb7\xc9\xeaE\xe2\xc5X\xbc:{w\xc0\x06P\x9b\x86F\x8b\xcd`\x16\xeam\xdc1\xb0\x1b\xad\xdb\xa1\x9d\x18\xedZ\x8b\x0evb\xd3\xee49\xb62f%\x0e\x0bC\xa8\xa6\xfd\x8a,\xcbj\x98\x1e\x89|\xfeO\x9aL\xe0\xd9\x06|:'Y\x98B\x90BL\xd3,\x8e\x12`Q(\x0bPIS\xa9\xc4U\x8dh\x92\xffM\x9d\x06\xd7\xccH-\xccP\xa9\xebj\x7fV\xac\xa0.Y\xe2tIk\xb3\x11\x85.$\xda \xbc\xcd\x12\x91\x1bA\x83tIc\xd8\x93\xe3\xdf\xbb\x03{RR\x88\x7f\xb3\xa6\xe8\xda+\x85\xc8\xde\xa4\xf6C\xcdtmQA7\xbf5YP\xd54\xf8\xb8\xf9\xef \xc3\x13\x93-*l\x0b\xd6\xda \x0eQ\xfd\x87\xc1*Hu\x03X\x91\xcb`\x95\xad\xf21p\x0b_\xb8oaMc1\xb8\x9e\xa3\xba\xf66\xb4s[\x1bMo\x8c\xf1m\x9c\x86s[o\xb7S\x1e\xb5L\x06\xb9\x11\x81s[k\xda\xe3\xcct\x04\"\xe7\xb6vnk\x01\xa6-\xb3k?\xafs[w\x00\x96\x03\xfaY\xe3{\x1d\xe6\xf8p\xdf2\xde\x1b\xfb}\xdc\xcd\xe5g\x89\xfa\x8b\x98y\xf5\xb9\xfc\xdd\xd8\xef\xfb\x16\xae\xd96D+y\xac]8|\x85+0\xdb\x84\xda\xe1;\x87\xac\x928f\xfbO\xdb\xd89dK\xc0Yz\x06$\xce![\x83\xbe\xe36\xd9sH\xbc\x18[\xce9d\x1b\x80\xb2\xdb\x86vb\xb4\xd8,:\x18\xc3!;\xb6\xef\x15c\xed\x0d{\x82\xf7\xc7\xb1\xfc4\xcf\xf1~s\x06\xdfn\xbd\x87\x88\xdbw\x86\x9dU\xdd\x1f\xeb\x8b\xa1\xa7\x0b\xcaX\x16\xbc\xf7Y\xfa{\x7f\x8e\xf7\xab\x88\xae\x91\x9e8\xf8\xf1\x84\x98\xf6\xb9\x03'\xce\x1ap\x1d\xc4\x19\xa2\xe2\xd30\xb9\xa6h\x87\xa8\xf0\xa4\xb7\xd9w\xf5\xdc\xc1\xd8\xe2\xa6\x946k\xc6\xc2\xa7}\xb6U\xfd\x81#~\xe2\xa6\\8\xf0?\xe6\x98\x81c\xfeVv\x94\x95G(d,\xa1\xd3\x1e\x1e\x03\x19\x88\xee\xd32\x88\xe6\xa1d\xcc\x90$\xa9\xfd\xe1\xaclo\xd5J\x1c\x16D\x87\xd5am\x1a\xd3\x84\xda\x9d8\xd71=\x9f\xe6s\xb7r\x95\x0ce\xed\x96F\x1c\xc6\xe0\x92\xa7\x0b\x94\xf2\xded\xf2]\xf2w\xc5l\xa2\xe0\x84<\x95\"\x97\xac\x8daE.\xfb\xb6\x0c\xec\x98u\xc1\xb8\xbe\x10\\f\xd5n\x80\xcb\x83\x9f\xd9\xdbY>\xdbM\xbbU\x85\xf0\x10)\x8c\xe4Q7CH\x92%\xdf\x0dI\xb0\x88\xf8,\x83h\xce\xfam\x08\x8eA\x84\x01\xb8\xa4_\x04\xe74j\xdd\x90\xbc\xd11\xb0\xad\x86\x9dM,\xb6\xc8\xd6^\xcb'X`\xb2\xcch\xd2e\xfc\x9cT\xd9>\xb5OT\xab\xaa0\x83\xc7\xce\x02zk\xc8\x00\x1ai\xa4\x0fn\x14\xdf\xeeF\"\xed\xd6\x86MR\x12\xa7F#Ni|\xfa\xf4r\xca\xe6\xf3NEgh,\x03\x16\xd3,J\x83\xd0\xba1\xd7\xb1\xd4\x9f\xceB\xe6\x9d%\xe6\x94\x80\xb6\x84\xb0\xb4$\xd7\xd9,\x0c<8\xa3\x1bQ\xa9\x88E\xa5 \xb7\xb5?\xfb\x8a\x9f\xbdJ\xfeh\x8f\xb5\x9cj\xc59\xd6\xa2\xc2\xdfG\xd1\x10HN\xf5\xad\x93\\c\x8c\x1fh\xe47\x8a1\xa5\x0c2\x03\x82\xdd\x14\xab\xe9%\xc2\x14\x8c\xd3ujW\x1f\x16\xf4\x1e\x00\x8dd\xd8\xf2$\x8cs\x94\x071\xb5\xc6\x1c\xf6\xf6\xb6F+\x97\xf9Y\xb30cG\xadF\xe5\xe8G2\x8cvRt\xb1\xb34\x10h\xe4d\x01\x88R9J\xefWg\xa9 0M\x04\x8c\x93\x01]\xd9 0\x8f\x0b\x8cn=3]\xc0D\x1b\xc0\xccS\x82y\xb6\x12\x8c%\x85\x007\xf7\x02\x10\xde\xcf\x02L\xe4\x92\xd0\xa7oE\xad\xbd\xdeu4Q\xc5\x81\x06\xb1\x9e\xa1\x070\x8fQ\x82)\x0bV\xc2W(E\xc4A[\x8e\x080\x84\x04\x141\xa1@\xa5\xe5\x17\x14=\xa1NS\xeb\x12E`.S\x04\xbdF2\xb0\\\x11 K\x16\x01vp\xc6\x8c;S\xf9\"\x18\xd0\x93\xb5\xa1\xef*\xe8\x19\xb7\x91\xab\xa0\xa7\xdf\x8bH5gVq\xb6\xfd\xb9\nzW\xaa\xb6\\\x05=l\xef\x03U\x12F\x1d\x19\x07dPC_\xaf\x82\xde\xd6\xb9\x16X\\\x1e\xca*\\\xbd<\x15\x95\xa3b\xcc\xb0A\x8e\xb3v\xa4\xcf\x9b\x98\\\x00xg\x82\xb5\xdeF:\xe8\xec\xb43\xb9\x9c\xd2\xf3\xc0\xe7|1%\x96\xd1\x02.\xf2*\xaf\xd7E\x10\xf9\xec\xc2\n\xc1*\x88\xa69\x925\x8d\xfb`\xf0Y6\x0b\xa9@2\x95\x01\x81\xa9\x9f\xc5=\"f\xec\"J\x83\x15\x1d\x84Dp\xcdt\x1eK7\xd5\xb46\xb6ah\xe4\xd0\x908z\xee\xa2\x05;\xdf\xe7l\xc2\x12R\xe4\xe2\xda8\xf4\xca';\n\x1c7::\xefr\xe4%\x8a\x86W\xe3\xc0{\xcd\xce99\"\xaf\x98P\xb7\x0b\xaf1\x8b\x96~.%\\&\xbc\xb0\x9fn\x16\x13\x99\xf2\xe5\xb9\xf9 <\x12\xc1\x8c\xc2\xa7\x9b)\xbdLo~\xba\xd3h\xfd\xe9f\xd9c\x1e\xaf\xbb\xf9\xe9\x0e|\xba\x99\xb0yzAb:\xcd\xd6\x8b\x98\xf8\xf4\xe6\xa7Z\xb3<\x00\xc2\x92tZv6\xfb>\x9dl\xeee\x13\xd3\xec\xdc\xcb&#Y5\xeee\x93-pGR\xf5g&o\xeb\x0f\xfe\xb2I\x1a\xa4!\xd6d\x91P\x9f\x8dM\xbb\x86\xbe\xb5j\xd98<^v\x85\xa9Y\xa2\xbe\xfd\xa3@\xd9X\x94~\xf7\x06\xfb=\xc9R\xa4^\xfat\xcd\x92@\x99\xe9\xd5\xcb\xe9\xf6\xc3e\x93[\x1f\xce\x9cS\xd5\xc8\x0d}u\xa9s\xaa6\xe0J4\x98s\xaa:\xa7\xaas\xaa\xc2\x15\x1e?\xac\x9d\xaa\x85\xdd3\xc6\xab#V\xceRYZ\xa2t\x16\xdd\xe8\xe8\xa7\xf5I\xa3\x06\x85\xb0\x1d\xb7\xfc\xaa\xbbw\xe2\xa8\xd36\xcfY\xdaH\xb3lLE\xfc\xd8a\xb9\xa9^fV,\xba\xae\xff\xdcbc\xca1\x94\x1f\xecv\x1c[E\x02u\x07\x8c\x92\xfdd\xab;uGXR9\xbd\xf2\xa1O\xd74\x0e\x98\xbf\xed\xfe:gi\x10-\xaa\x9f\x85G,Ih\xfe\xef\x98rA\xc8\xff\xab\xef\x94\xad-9\xa4\x9b}\xb7y\xb0\xe5\xa1\xa6\xdbC#\xb1*\xeb\xa2u\x9f\xbd,\x0e.\xb6m\x0dg0lkS!8E\xfby\x10\xf1\xaeI\x18n\xa61M\xb2P\x93\xfd\xdb\xfb$\xb3\xb7\xa1\xc9\x9e\xde\x92D\x9e2\x0e&\x07%t\xa7\x8b\x90Y\x92\x92\xaek\x14\x12F\xeem/bW5\xb1\x88M\xb9\xf8\x9f\x9e\xd3T\xe1\xf8\x1c\xb5K\x19\\\xe8W\xe2,e\xa9\xee0m:zh\x0e\x1e#\x98x\x86#\x07\x82\x84\xc8\xe3\x86\xe9\xb0a\xd7S\xa7\xab,\xd7\x002\xf3\xdfj\xa9pv\xd2gi\x8b\xb4\x0d\x8e\xbe\xa6R3R&\x83\xce\x8d\xabV6a\xb3\xd7U\xa4\xa0\xba\xa1&\x91U\nv;\x86\xd0\xba\xa8\xd3\x0b\xc77\x13`\x93\xe5{U\x13\xe3\xc6\xaf|mB\xd4 \n\xa2D\\T*\x1b4P\xc9\xc6\xdbY\xf5.\x94\x86<\xa5\xb8PZ\x07\x06\x17J\x93\xe0Bi\xce\x11\xd9\x04\xdb\xfe\\(m\x9cPZ\xe3\x8e\xd7 W\x85\xf0\\\xa8\xbe\xd6w}Cn\x0d\xfc\x1fEm2X\x91\xcb\xae\xeb\x87\x12\xbe\xb5X\x9a\x8b\xa1\xd5\xc1\xa6\x8f\x8e-\x9c[]\xd7\x83\x98I6K\xd6D}\x0f\xc3f\xaeI\xa3ZD\x134\x17}l\xbaxK.\x7fWm* \x89\xf2\xc5\x00\xb0\xeck\xaf\xfb\xcc\xae\xf5\xe8w\xac\x86\xb5\xc3\x8d\x1b\xf8u1\xea\xe2\xa8.\x8e\xda \x08f\x06\x9c\xbc\x03\xa3\xcc\x83\x1e\xfd\xb98\xaa\x8b\xa36\xc1\xc5QK\xb8\xaa\xb3\xe7W\x8d\xa3\xee\xb5\xbc\x83\x7f\x16\xff|\xe3\x17\xaf\x15X\x07Z\xf59\xf5\xedo`\xb6\x81\xa0\xd0\x94\xbbw\xdc)\x16&w\xab\x95\x93\xaf\xfd\xd4\xb3R\xc5\xdeQ\xef\xd4,d@\xcf\xcap\xd0\xc6\xe7$>E\xbdz\xeb\xc3\\\xdfC\x9a!&\x87i\xa9/\xc8\xdfm\xec bq\x03\x14\x99&\ng##\x0c\x81*m\xfcm\xc4~\xd4\x91\xb7\x11;1\xc7\xdcF\xeaL\x1bm\xd3\xf4a\x88\xb4\x0d0\xc7{\x9f\x12\xbf\xf5#7\"\xa6\xd6\xd9\x83\xa5\xc6\x0c*\xc1>\xbe\xbe\xdc/\x9cF}\x15g\xd1\xfeF\xc7\x80\xe4\x17s\xf1R9-\xbf\xcc}z-}\xeb\xb4\xe8W\xd4\xa2\x1a\x05\x85v'Zr\xf5\x9b\x17\xbb\xe4\xea\\\xce%}\xb9\xbah\xaf\xe6\xea\xe2\x0bn\nn1\x8fcf\x0bf\xdem\x8e\x97Z\x03\xe8T\x9eK-\xa9\x83>t\xa4\x95/\x86\x1e\xca\x9cK\xeb\x96\xfd\xe2\x16\x83#\x17\x96Rn\xb0\xee\xb6\xcbty!\xc9\x99\xbf\xd7\x05)\xebqW\xdc7\xe3\xb8VY-\n.i\xcc\xb3k=v+,1\x85\x1bEBL\x91\xba\xeb\xf2a\xda\xd0\xde\xa9.\x1f\xa6\x0e.\x1fFB\x85\xdd\xe5\xc3l\x81\x0b(\xa9?\xd3\x1b5?|>\x8c\xc623Xt\xf6V\xd9@\x9bL\x82\x8a1t{\xc4y\xb6\xe8\xb0\x0b\xd9\xc8#\x9e\x95\x1d\xe2\xd2\x05\x1aM\x9dto\x80m\x7f.]\xc0\xa5\x0b4\xa1\xa4\x9bK\x17\xb8*\xd3\xbc\x7f\xba@\xe0\xf3\x03Z\xe1\x93h&\x0f\xdc?8Tc\xfa\x85n`M\x92\xe4\x82\xc5>\x04 \\\xc4\xac\xee\xac\xee\xe5\x8cA\xb9\x9c\xf7\xff,M\xa7\xde\xd9\x089\x86\x1b\x1dck|\xd0t>\x03\x89|\xe5-\xe6\x1f\xd9\x11\x83\x19Y\xfe8\x88\xee\x12\xb8\xfa\x1ey\xcfQ\xe6\xe6\xae\xe9E\x90\x83\x87\xeb\xcb\xcb\xf3\x1bEW\xd7\xc0Ds\xb6v\x0dl\xfa\xe8\xb0F\xfa\x86\xe7\xbe\xa1\x03\xda\x10\x99\xdf\xf5\xa6\xe7\xfd\x83\xfbjt\xafX\x16\xf9\x10\xb1\x96\x10\xdd\x89\xcc?g)\xed\x1dc\x145/4\x11F\xf9{\xa3\xaa\xc7\xb5\x8a5~e\xc1\xbe+A\xb8\xdbp\xa4XT\xb5\x14T\xec\xd9!!6&\xa7\x8fmf\xbdW\xab\x96\xbd\xf6\x97]\x80\xebw&\xaf`[\xc6\xb4\xce;\x9b\xb90\x96q\x93\x99\xae\x8do\xd5e\x96\xdcv\xf3\x13\xcc\x03\x1a\xfaU\x85\x9a\x0dMd\xad\x99\x88m\x97\xa7\xa9'\xcf\xdd\xfc$\xcc\xd8O7\xf3\xf4@UMf\xbe\xa4.h\xb6\x05.h\xe6\x82f6\xd8]\xd0l\x0b\x9c[U\xfd\x99\x0b\x9ai\x83f\n\xeb\xee\xba\x9d\xc7$\xa8\x0cC\xedh+\x06\xd8\xd0d\xd7\xa6\xb8\x95&va\xa3FS'\xdf\x1a`\xdb\x9f\x0b\x1b\xb9\xb0Q\x13\\\xd8\xa8\x84\xab2N\x87\x86\x8d\xc4\xb1\xff:\xc7\x8c\x84\xffp\xffOa6\xf4\x0e\x16\xf1\xd67:FT\xfd\xaa\xf2!B\x1e3\xea\xaa\xbe\xfb#{<0#+\x1e\x93W\x14.\xee\xaey\xdcst\xdfl\x9c\xc8\xde\x1e\xee\x1b\x0d\xb12f{\x0b\x93\xde\xb1\x88\xda\x1e\xdd\x89 \x11W\x81\xed\x05\xc8kZ\x7f\x14n/\x01\x81\x07\xe4\x95b \xcd\xe7\x1a\xd3`\xd5)gjv\xc4k\x9a&v\x08'\xf0f^\xbb\x1d\xc8\xa9]\x11wM#?\x88\x16\xd5]\xab[\xc1\x84\xe6\xa5\xb0a/\xbf\xecp\"\x8aZ\xef\xdd\x86 \x85\x98\xa6Y\x1c%@\"\xa0\xabu\xba\x91\xdd\x97\xf8\xe40&\xf9\x7f\xff\xa8\x12\xeeZH\x06\xc5\x15s\xe4\xd9SwAZy\xad|\x04\xdc\xddW\xc9G@\xac\xbf>>\xa8\x03kaW\xb5\xec%\xa7\xa4\x98*\xf7\xc3~\xe3\xca\xb9\x85l\x92\xe6\xcb\xa2\xdcie\xce\xcbV\x91a\x954B`\x98\x88\xbaX+r9m\x96\xd0\x87,\xe2\xf2\x86\xc4\xb4\xee\x1a\x8aH\xc4\x12\xea\xb1\xc8Ov!D\xae\xc5\xc6\\\x05\x91\xab\x12\xd0\x00\x9b>\xba\xdc\x06[\xcc\xd5{\x83?~x\xff\xc0~\x8b\xff/\x96.i<\xe5\xaa\xe1?\xf8\xa9&b\\\xe9\xd7\xcbvs\x95B\x93\xb4\xa9=\x90\x96\x8drW\x8e%?\x84\n\x0f\xa2\xc5p\x01\"m\x11\xbd\xf8\xc06\xba\xde\xfb^\xbd\xa7\xd2eL\x93%\x0b\xfb3\xe1\xc1\xe4\x81R\x8d\x0dT_\xf7\xee\xddW \xae\x16d\xba\xa6\x11 \xd3\x0eW\x11\xba\x9b\x83\xc3\xeb\xb5\x85\x14,6\xd6\x06\x92eJ\x86o\x1f\x89g\x80\xfa\xddB \xb5o\xe3q\x9a\xefD\xf1j\x8f\xc4\xd5l{3\xf1u\xd4\x04*\xfe\xe8\xcb\xc7{\xfb~\xc0 1\xcb\xc4\x82\xfa4\xa4\x0bQ\xa1u\xff\xcf\xf2\xdf\xc7\xbe\x1f\xffk?\xa6\x17$\xf6\x8b\xf3\xc4\xf6Y\xec\xee\xf6\xd9\xa8\xc8\xe5\xad\xe1\xb9\xd19\xba\xdc\xcfs\xecy\xc7E\xee\xc3\x1c^\x14\xed\xca6\x8aSY\xe7rvxv\x1e]\xcc6u\x94\xfc? $A\xb4\x08i\x8d\xc2M\xfa\x0d\xd8\xcc/j<\xb2\xb3\xed\xdc\xc3\x8e\xce\x89\xa2\xda\xe1WkC\x97%\xc3\xa7\xb9\xff\xaa\xfb3\x94\xad\xdb\xa0\x1c2^-\xa1\xc5\xf5\xe7$\xe4\xa36\xba5\x8f.\xeeGGa'NId\xfdd\xd4\x81PC(\xd4Hu &\xdaK0\x06DQ\xb4\x97\x808\xd1H0\x87E\xfb\xf4\xdaq\xc6\x11\x12\xe6z\xb0\xfa\xb7{\\\xc49jJ\xd1\xb9\xed\x8a\xee\xa5e\xed\xf2o\xff\x1e\xa4K?&\x17\xa5\xec/\x87\xb3\x97\xd4\xa4~!\xfdnt\x0c\xa4\x1f\n\x84\xd8\xdfM:\xaf\xfa\x99\xcbV\xa6\xa9\xb4(\xca\xd9\x15\x96T\xeb+;c\xd1e\x97\xba\xec\xd2\x16|S\x01|\x97]\xba\x05.\xfbJ\xfd\x99\xce\xc4\x80\x1f7\xbb\xf4Z\x9cg\\ze\xa3\xa9\xdb\xe0\x0d\xb0\xed\xcf\xa5W\xba\xf4\xca&\x94ts\xe9\x95We\x9d\x8dy\xf6\xfc\ny\x95\x96\xde\xe1\xfd?K/\x98\xf8\xfb7\xec-\xb6\xc9\x03T\xce\xa6A\x0d\xedl\xde\xad\xb9M\"?\xcc\xa7T6\x1egJ=\\\x81\x16~\xf0\xe2\xf5\x96-\xe7\xc2\x8d\x8e9\x17\x1fK\x8f\xf5v\x1b\xe9\xcfn;\xb0\x11\xee \x0b\x9f\xc3\xae\x0c\xbe\xdd^mW\x1a%\x06\x91d0BL\x05\xbc\xcdx\xbfa/\x1b\x8eg\xb7\xbf\xefv\xa6\xe51\x9f\x82\xb7\xdb\x9b\x18\xc1\xc4\xce\xc7V\x80\xf3\xb1u\xf5\x88\x9f\x9d\xf3\xb1\x8dd\xc59\x1f\xdb\x16\xb8#\xb8\xfa3\xe7cs>\xb6QU]_Q\xe3|l\x0d\xb8\x92\x0d\xee|l\xce\xc7\xe6|lp\x85\xd6\xd9\xf0\x93\xa7\xac\x85X\x9e\xe4\xbe\xfauf\xac\xdb\xed\"?\xa5\x15)g\xdf\xb0\xbfm\xa7\xd9\x99E\xf6dA/\x12\xb6|\x0e\xa6l\xccZ\xb2\xe5\x9e\x06\xdb\x04N\x97A\xc2\xf9\x807*\x98\xabf6],\x03o)~\xcc\x12\x1a\xc3E\x10\x86\x10S\x8f\x06\xe7\xb46P\x98g\x91MV\x8e\x85\x1b`W6X\xc7F\xb5Mbl\xb3\x84e\xc1\x9d\x9e[\x7f\xe0^\xb5s:\xbd\xa7\xeb\x90x\xb4\x07O\xd6[\"\x9917\xe8#z\x01,\xa2\x13<;9\x07T\x01\xce\x01\xd5\xd5#~v\xce\x015\x92\x89\xe3\x1cP[\xe0\xce\xa7\xea\xcf\x9c\x03J[B\xb0m6\xab\xb4\x82\x82\xce\xb6\x86\x0d\x0c5nve\xb49\xc7\x99s\x9c]\x1f\xc1\xe4\x1cg\xceq\xe6\x1cgp\x85V\xe5\x00\xc7\x19\x8bK-z\xfd\x12\xd5\xca\xa4\x8b\x11\x12\xd2~\x9c\x14\xae\xdf\x8b\xc1B\x9d\x98\xf5\xba\x867:&/s\xb9\x84[B\xd1J\\c\x1e\x90\x0fc\xe1c\xb8\x16\x86\x12\xcb\xf9\xe0\xebY\x97=\xf8\xa4\x82\x84\x86\xf3\xe9\x8cE\xfe\xf4Z]\xaf\xfev\xef\x9cJ8'\xe1\xd4c\xabU\x90$\x81\xba\x88\xa2\xa3i\x1b\xbai\x8aSW\xa5\xb0\x19\xc9\xd9\x8bV3\xfb,K\x93\x94\x88\xca\x8a\xd3\xde\x953~\x1c\xd5\xf3\x8a\xb6\xd4G\x8d~\xa5\x87\xfb\xdbW#.7x\xf7;\xcf\xed6\xe3n{^\xaa!Q\x99\x9a+\xfc\xbb\xdbE\x01\xb4\xfbMa\x02zh\xcc%B\x8b\xb8\x94\xdb\xc1\xa6\x9dv5;\xf8\xab\xe8^\xbb@k\x19=\xe4\\Y\x0ee/A\x15\xcdh\xb7i\xb31g\xed\x8a\xd3\xdb8\x11\x8c\xec\x02\xac\x05\xb8\x00kW\x8f\xf8\xd9\xb9\x00\xebH\xae0\x17`\xdd\x02\x17\xc7P\x7f\xe6\x02\xac.\xc3\x7fTU\xd7W\xd4\xb8@e\x03\xaed\x83\xbb@\xa5\x0bT\xba@%\\\xa1u6\xe6\xe9\xf3\xca\x83\x93M\xd7\x15?8fQ\x90n\xa6k\xc6\xf2z\x9e\x96\xbe\x1b\xd1\x1cx\xf3\xedB\xd0\x88\xd3\xa7\xc5\x91rW\xfa\xdc\xb9Q\xc6a\xa6\xf6\x91\xdf\x82\x91\xb6\\\xee\xdf\x1c+\x19\x9c\x11k\xf1\xda\x0e\x8d\xa7\xaa\x02\xc6\x9aU\x9b\xb1(K\x06a\xa8\xb6yJ.\x91-{r\x04W@A\xb4\x18\xc2\x0co%\nX1?\x0b\xa9\x99\x15\xf8\xf7\xd7\x9b\x058Q\xa6\nA\xa0Y\xb6 \x9a\x87b\xdcSq\xb6\xf1\x96$Z(\xad6\x03\x86\x15z\xe1\xb7ZZ>\xad\xb5`$\x14!{j\xc7\xa4\xb3\x90yg\xc9tM\xe3\xe9\x86\x12\xec#\x82\x03\xd9\xb4\x9c\xa65\x97>\xcf\xdf\xb4\xcb1U\x04\x93\x86\xd55\xe7\xd5]\xd0\x92DQF\xc2\xbb\xeb\x98\x9d\x07\xc2\x17=\x98\xa6\x12#T\x18\x7f8\xdaJ\x87\xf1>\xc9\xd2\xe5\xfe\xf9\xe1\x8c\xa6\xe4p?7\x96\xb7\xc9[\xd2\xf18\xff\xa2z\x1e1\xaf\xbcM/\x83DR6\xff\"o)\xb3\x84\x02\x16\xbd\xf1\xab\xd6} t\x0cI\xe6y4I\xe6YX\xb6\x9e\xa0\x88f\xe5Zi\xd2\xa1\x0e:_\xc3\xae\xd2Wx\xf3i\x16w\x14\xc5\xaf~7\x9c\xa7pN4\x80c\xf8\xf8\xfe\xd7\xfd\x98&,\x8b\xbd\xc2\xd7\xbf$)dQ\xf09\xa3\xe1\x06\x02\x9fFi0\x0f\xa8\xbc\xfb\xc9\xfb\x066W\"\x14O|\xd08 a\xf0\x85\xfa7\x94\xdf\xadc\x962\x8f\x850\xcb\xe6s\x1a\xc3\x8a& Y\xd0\xfc\xa2\xa9\x9c\x1b\xac\xb2$\x05\x8fE) \" *w\x0d@HI\x92\xaa\xfbb\x11\x85\x9b\xfb7\xc1[\x92\x98x)\x8d\xe5\xdbA!IRH\xe8b\xc5\xe5\x04\x93/\x89~|\xff\xeb^\xd2~ \xb3 bP1\x17? \x8d4\xbdrt\xf3,\x0c7\xf09#!\xa7\xa0/\xe9\x9bw%(y\x8b\x88k\xb4J$\x9f\xf8P\xf6\x17\x8c-B:\x114\x9be\xf3\xc9\x8bLn\xb1O\xb7\xe5L\x04\xdad\xc9\xb2\xd0\x87\x19U;;\x01\x08x$bQ\xe0\x91\x10\xe6,^\xa9{\xbeE'\x8b\xc9\x1dNZ\x91\xacrsr\xb3|\xf5\xc7\xf3\xe8:\xa5\xfe\xed\xc9\x0du\xf37\x11\xac9\xb1\x03\x8f\xde\x81\x94\x92U\x02Y\x92\xc9\xc7\xaab\xea\xb1\xd5:\x08\xf9HS&\x881\x0b\"\x12\xab^\xda\x00)t6k\xc1\x83\xf2!\xd8\x8d\xbakz\xb9\xa6^\nA\n)\x83,\xe1\xbd\xe4A\xfc(\xa5\x97b\xa9\x8f\xa3\xcd\x04~f\x17\xf4\x9c\xc6w8!\x94\xc8>\xbe\xff5\xc9o7sT\xe9\x92\xaa;\x16\xc2\x88\xc2\xa7e\x9a\xae?\xdd\x91\xff\x9b|\xba\x03,\x86\x88\xe5\xbf\xde\x11\xdc\xe8\x91(\x7fu\xb8\xf1\xc6\xec\x16B\x9aB\xb6\x06\"\xe6\xae\xe9WJzA\x9a\x15Y'\x92\xb5\xc4\xc8SV\xec,\xf0\xe9<\x88\x82T\xe8>\xa2zf\x05`\xce\xc2\x90]$O5k\xfb\xef\xf0f^\xcd\x88\xb3\x85P\xab>\xf5\xcbI\xf3?\x92$\xc9V\xd4\x9f\xe8\x10\x1dG\xf0\xf3\xe9\xe9 \xbc~y\n,*\xb6\xa0\xdcc\x9b\x80\x86>\x10e\xeb\xffno\x8b\xd3\xcd\x9a\xfe\xf3\xbf\xff\xa9l\x90;\xaa8?H~\x03\x99\xcb+V(\xd7\xf3\xe2\xf9_\xae2'\xbaQW\xfa_>7F8\xcd\xa8\xcf\xc9\xed\x11\x8f\xcb\x16\xc6\xce\xb2u\xfehp\"\x0en\xbeF> \xbeR\xfd,\x98P\x8cqI\xe4u\xfaUm\x0f\xf9r\x13\x91bJ\xfc\xdf\xe7,\xf0\x81Dj\xc6\x82|\x80B|\xc4t\xcebz\xa7@\xc0\xf1\x924\x98\x05a\x90n \xa2\xd4\x17l4\xa3 D^|\xae\x99\x89\x98\x8b<\\\x88Fb\xcfN\xe0\xd6\xc7\x84\xc29\x8d\xb9\xe1\xc5\xa9\xc4\xd9\x93\xcb,\xc9\x9f$\"\x0b\xdd\xecg1%g\\\x06\xe5\x88'\xb7\xd5\x1c\xf5\x1bK\xe9SH\xb9\x0e\x99\xe7a\x1d\"\xe6\x91\xcb\xae\xfc\xf9\xe8p\x03\xe4\x9c\x04!\x99\x85Zq\xc9\xf9\x91\xcd\xe7\x81\x17\x90\xd0\xa0\xcbf\xd9\x1cb\xca5\x11\xbd#2)\x82\xb4\xe8TD\xa0\xe6,\xae\xf6\xa5\x12\xd5\x8c.\x82(\xe2\x93\xbd\x08\xd2\xa5F\xb9l\xd6t\"\xf9\x9f\xac\x83d\xe2\xb1\x95N\x1a\x7f\x10;5\x01\xf1\x86\x1b\x17\x14Q[J\xc1->>n\xd7\x89\xb7\xaf\xe5\xd6n\xdf/\xac`\x15,\x96)\xcc4BILZD\xd4\x82\xd5:\xa4\\\xc9\xca3M\xb2\xa6^0\x0f\x18\x12m\xd4\x1f\x90h3\xe1\xc3x\x15\xb3\xd5\xad9c\xb7\xd5\x9fN&j\xfd\x17\xcc\xe1\x16G\xf5QL\xe4\x94\xdd\xfa7\x8e\xeb6\xfc\xa9\x91\xe1:|\xff\xd2\xd3\xee\xc8@\xbb\xbf\x92s2\x1a\xf1\xe0'a\x1b\xf2^F\xa0P\x90\xdcz\xc5\xd8\xc4\x0bI\x92\x18\x08$\x87\xc8\x1b\xc99\xd6\x1a\xaa\xc7\xa0\xa0\\I\xba{\x06\xd2\x9dl\xd2%\x8b4\xc4\x93\xa3z\xc5\xd8\xad\xc9d\xa2\xd6\x06%\xe1ni\xbf\x11\xcc'\xc8\xda\x97\xaa\x1c\xc9\x1bI\xd4\x17/?<\x7f\xff\xe6\xe4\xf4\xdd\xfb\xdb*%\x01y\xb7\x92Q\xf5\x1d\xcb\xae\xf5\xe4\xbco \xe7k\xa6\xa6\xa4 \xe5\xd3\x9f\xe0\xdf\xd6\xb3\xc9+\xc6\xfe\x9cL&\xffR\x7fL\xa2\xcd\x1dn\x86\xf2\x16kiD\xbd%q\xb2$!'\xb2~\":\x12\xb6G\xa1\x19B0o\x0d\xe0c\xb4\xaa\x86 \x06(6\x88\xf8\xea\x7f\xfc\x04Q\x10j\x19\\?.\x05'\xf3\xc3\xad\xa0s!\x8b\x8b\x83\x06\xcc6\x95\xd9Uh\x0fQuj\xd6m\xf5\xfatN\xb2P\xd8b\xdd]\xedu\x98T\xfb\xfc\xfc>\x11?psu\x0fHM\xdbqM\xc89A\xa5\x1b$\x87twV\xaa\x96(\xdc\x14\xe7\xca-gAi&\x03\x99\xa7\xc2l\xeb\xeeH\xf81\xf6\xf6\xf7\xba\xbb\xcaub1dq\xda-\"wps\xce\xd8dFb1\xd9\xcb\xfd\xcd\xe4\xcbMIEq\xf6\xea\xc4\xa7>\x8a\x8a\xa1\xde\xe48\xb8:\xec\xfc\xe4\xaf\x1f\xde\xfd\xd6\xfd\xcbO?\xfd\xf4\x93\x9a\x07x\xbb\xca\xe7R\xdd\xbe\x8cr#H\x9e\xeb\xb2$\xb7Fb\xba\xc8B\x12w\xe3\xdbF#kOUf\xcb\x1d\xa0\xab\x19\xf5\xfd\xca\x80\xb9#\xcd\xf1.tD\xe1\xbd\xa9\x99\x14sq\x90\xfd\xf4\xbf9\xe9>\xe5\xce\x84\xd2l\xab/N\xf7\x06\xc9\xc5\xcfS\xcd\x01\x84xg\\\x06U\x07\xe2y\x10R\xb5\xde(d\xd6 \x8d\x13\x16i\xb7m\xee\x89\x9b\x07q\x92N\xc5\n\xff\x04\x87j\xcce\x03\xce\x94\xc5\xf7G\xf6\x1a\x0c@;\xaa\x9b\x82\x967\x9f\xc2\xcd\xae]\xdb$\xc3D\xce\xf2\xe6\x1d\x1d>1\xbf\xdf\xc8\x8a\xe3\xfc_r\n\xff\xa1m\xc0\xe7\xd7\xfa\xdev\x92o\xe6\xf9\x81\xab\xc9k\x92\x1b\x82\x04.h\x18\xde=\x8b\xd8\x85\xcc\xcc_\x92\x04\x08xY\x92\xb2\x95\xe5\xe6j\xb2\xfc\x1di\xc0\xb7\xf6\x81\x14\x9e\xb5\xe1p\x06V\x1c\xae\x88d\xe9\xee\xce>\x89\xcdX\xf0\xf9\x92\x85\xbedr9r\xb9\x95\x83\xa8\xdc\x1f =\x80\xdd\xa8\xe4\x96\xe9\xeeG\x0caR*\xe7[\\\xae\x15$\xdcr\x0d\x15\x1e\xd3\x7f\xfe\xf7?ok6\xd2\x18<\xd7\xecP\xcfv\x82T\x1c\xe5\xe1\xe4\xe8\xf0(\xe9Ji\x97\xb0\xad\xa8\xd3 \x0d\xe9\xd32r!\xdcP\xba\xb8L\x01k\xb2\x08\xa2Z\x9c\xb2\x0e\x8dSg\xf5\xa1t\x1d\xe6\xb2\xb5\xf6\xe7\\\xb5t\xc5e$h\xe3 \xfa(HD/SS\xc2\x9c\xe6\xf8o<\xfc\xe7\xe4\xfb\xbf\xaaC\x7f\xd1\x7fQ\xf3\x92\xff3\xf7\x82\x91$\x91\xae\xbe\x13\xb2\xa0\xef\xe5%\x93\x89\xfc]\x81\xecsy\x91\x8c\xa3\xe5$\xa4\xb0bI\nT\xf8\x96\x84C\xaa\xa3\xa9\xe2ed\xb0!@\x16D\xe9\xc3\xfb:\x12(\xfd\x1e\xf2\xe9w>\x7f\xf1\x0f\x99P\xc7\xf5e\xe1\xd5\xac\xb9\xd0T\x01\xa1:\x89d^\x9e@\xa6\xda\x81\x17$\x81\x84\xa6w H\x93\xc2Y\x9b@\x16I\x06\xf4\xa5\xff\xea\"he\x8e\xeb\x9d%\xe2\x16_\x11\x88|\x9f\xf3j\xb1\xac\x05\xefJ\xa1;\xcf}`\xa2\xc9\xfeq\xf7\x06z\x7f\xf2<\xb7\xdf*\x86\xcf\xadKu\x1c3\x82,\x92q \xeaK\xffr\xd9u\xad\xcdH\xd1L\x81_\x15\xcaTd\xf5\xf8\xcal\x90 J\xe9\xa2\xc3oTpX\x10\xa5\xf7\x8eZ\xbf\xe6r\xd8j\x0c>MI\x10\xba\x10\xac\x0b\xc1\xba\x10\xac\x04\x17\x82\x15\xe0B\xb0\xdb\xe0B\xb0.\x04\xab\x02\x17\x82u!X\x01.\x04\xebB\xb0.\x04\xebB\xb0\x12\\\x08\xd6\x85`]\x08\xd6\x85`U\xe0B\xb0.\x04\xebB\xb0.\x04[\x831\xc2a.\x04+\xc0\x85`\xbf\x97\x10lw9:Y{\xae\n\x8eN\xceh]\x0b6\x0e\x93\xad\xa0c\x1ee$\xb9\x08\x95\x17\xed\x84S)\x0f\x9f\xe5\xe1\xd52$)\\A\x8b\x96\xcfD\xc4\x18\xf9\xb6\xd7\x87\x19'\xf0\x8e+<\x16\x89\xb3\"\x9b\xcf\x13\x9a\xf2\xe3Ws\xb8Pse'4\xad\x0b\xc5 z*\xfb\xaa\xfd\xad\xaa \xda.\xeb\xa4p\x12t:\x06:\x88(\xc7\xa7\xa2c\xebP\x9eOF\x902\xcaV4\x0e\xbc\xe2ob\xb7y$*\xebA],iT\x10>\x8bJGT\xcb\xfc|#\xb0\x854I*\x12J\xd7M\x96pR\x9fQKz6\xd1\xef\x98\xb8\xad\xd0o\x07y\xc3`\x15`\xa9+\xbe-\xc2\xa6\xaa\x88\xb0tR\xd698\x0f\xb2fa+x)]\x12\xf5?\xbd\x99CH\xe7i\xee\xfd\nR)\x0e\x0b\xa3Q\xf8W\xe5\x06\x91\x9dp:\xcf6@\x89\xb7\x04\xb2^\x7fE*\xd6\xe3\xdaU{\x1d-k-8E\x05\x872q\x8d\x19\xf8?\x82\xc8\x0f<\x92\xd22\xd2\x92SP|\x983R\x1d]\x10ya\xe6\xb7LB\"{)C]\xad\x15\x13\x81\xd3\x9a\x07\x96\x8b\xeeFjG\x03\xd9\xc77Ik\xb5ZS\x10VtL\x93<\xc2-\xb6W\xb5\x1f\xf9\x96\x9b\xe4\xbb)XD,n\xf9\xaf\x8b\xdd\xd8\xecBRf\xe8\xc2nW\xa3+\x85O\xeb\x97\x8e\xa5\x8d\xe99\x8d\x1bHu\xcb\x9a\x7f\xdd^\xd2b9e\xe4\xec\x8e~\xb34\x10\xf2\xce\xa8,\x16\xceb\x9f\xc6WE\x8b\xf6u\xf8\xbf\xe5\xfd\xeci/\x91\xef\xff\x99\xd7$*^#\xd1\xdc'\xaf\xae\x93\xe7\xff\x9dG\xffe\x98\x06XT\xbe<\x9b#\xe8\xbaV~\xa3\x98\xf5\xf5\xbeU\xae\xcah\xe8\x95\x17\x95j\x13\x13\x8c>y\x8cS{\xf4\x94\x04\\BB\x9ft\x04}\xdaA\xaf\xa4\x03\xd1\x85\x02\xa11\xe5`\x84\x84\x83\x9e\xe9\x06\xca -.\xd9`P\xaaA\xafD\x03 a\xfb\x85\x96\x02R\\\x9aA\x9f$\x03]\xe8\x0f\x95b0r\x82\x01*\xbd`\xc4\xe4\x02cj\xc1H\x89\x05C\xd2\n\xac\x93\nFH)\x189\xa1\xc0\x90N0z2\xc1nR FO$\xc0\xa7\x11\xf4K\"\xd0\x10\xdd\x94B0Z\x02\x01.}\xa0\xc3\x7f\xa1\x96\xaf#\xa7\x0e\x98\x12\x07\x06\xa6\x0dh\x92\x06\x8c\xe6\x891a\x00g\xbf\x8c\x9b,`J\x150\x8f\xa9_\x9a@!\xd9;\x10\x9a\x92\x04FL\x11\x18\x90 \xd0\x9d\xd6\xa3K\x0f\x1879@\x9f\x1a0Fb\x00*\xb2mH\n@\xa7\x04\xa8\xa3w\xf6\xe9\x00j\\\x9d\x9e\xf2Q\x12\x01l\x88\x85M\x020\xd3\x04\x9d\x00\xd0#\xfc\xdf\x1dU\x18)\xf4\x8f\n\xfc\x9b\xc3\xfe\x98\xa0\xbf\x96\x8a\xb6\x01\x7fl\xb8_\x15\xec\x1f!\xd4o\x11\xe8\xef\x1f\xe6\xd7\x04\xd3\xb1!\xfe\x91\x03\xfc\x9a\x11urj\xaf\xd0~\xe1\x91\xed\xc0\xa7\x08\xec\x8f\x1c\xd6W\x07\xf5\xfb\x86\xf4\x85G\xa0k\xe0\xdd\x01\xfdq\xc3\xf9\xaa\x83\x9f1\x94\xaf\x8a5\xaa\xc2\xf8\xe3\x06\xf1\xfb\x87\xf0\x15\xe1\xfa^\xc1zc`\xde.,\x8f\x0e\xca[\x86\xe4m\x02\xf2\xcap\xbcz4\xd8\xb0(.\x14o\x19\x88\xb7\x08\xc3wNm\xdc\x10\xbcjS\x0c\x08\xbfw\xfa)\x94\xc1\xf7~\xa1w]\x98}\xfc \xfbpNB\x07\xd8\xb1\xe1\xf5\xa6\x8a\xc4_\xe8\xecq\x9f\xb3\x85\xcd]\xe7\x94\xe0\xaes\xba\xeb\x9c\x15\xb8\xeb\x9c\xee:g\x05}\"-Jd\xee:\xe76\x8c\x14u\x19\x16w\xe9\x11y\x19%\xf62z\xf4\xc5\x18\x7f\xd9A\x04fW1\x98\x1dDal\xe20}#1Z\x19n\x8a\xc5\x8c\x18\x8d\xc1\xc6c,#2\xa3\xc7d\xccQ\x99\xc1q\x19w\x9d\xd38\xb2~q\x9aNT\xee:g\x9f\x88\x8d)f3N\xd4\x06\x19\x8a0Fn,b7\xc6ku\x96\xf1\x1bw\x9d\xd3]\xe7\xc4Dv\x8cT\xb5\x8d\xee\xe0\xe3;\xee:g\x0bF\x8e\xf6\xb8\xeb\x9cu\xe8\x1b\xfb\xe9D\xe6\xaesZD\x82\x86\xc4\x82:\xd1\xb9\xeb\x9c\x9d\x0dP\xd1#w\x9ds\xbcX\x92\xbb\xce98\xd24\x0e\xcf\xa1\xa3M\xf8x\x13\xee:g\xfb\x8d\xed\xd6)2\xff\xb9Q\x1e\xb7\xf8[\xca\xf2\xaa\xafs\xb6um\xa7\xe5\x0c\xafn\xed\xd4\x1e\xb2\x84\xee#\xb9\xeafN\xe7\xc5\x1c15\xcd\xdb\x8e'\xe2w1\xce\x80\xca\x97\x1d+jt_\xbc\xc9\xd2\xa5lu\xa3\x18\xfb5\xbd{S\x9f{\x1dZ%\x8e\x05\x01\x9a\xe5\x8d\x0b\x02\x14zL\xbe\x1d\xbc\xadH\x94\x83\x02c@jE.\xa7+\xbab\xd32~\xa2\x89[\xa1\x12f\x95e~\xd3\xcbi\x12,\xa6\xe2\xf6\xe6N\xfb\xf8B\xa7\x1eKR\xf1\xe8\xeel\x93\x0e\xcd\x00Vv\xc6gsN\xe3`\xbe\x91\xfdQ\xff\xe8\xc1\x83\xc3'W\xd5]B\xbd\xf5\xd1\x83\x87g\x87\xe3w\x88\x88z\xcb\xbdg\x13\xf4\xce\xf7\xf8\xfb\x93\xe7-|.\xe6\xedb\xde&\x87/\xc6g\n.\xe6\xedb\xde\xca/]\xcc[\x80\x8byo\x83\x8by\xbb\x98\xb7\n\\\xcc\xdb\xc5\xbc\x05\xb8\x98\xb7\x8by\xbb\x98\xb7\x8byKp1o\x17\xf3v1o\x17\xf3V\x81\x8by\xbb\x98\xb7\x8by\xbb\x98w\x0d\xc6\x88?\xba\x98\xb7\x00\x17\xf3\xfe^b\xde\xc6\xfa\x8e3\x12\x9d\x95a\xe4\x19 I\xe4Qd}\xc70|\x96\x7f_\x06\x96\x85kV\xfeQ\xc8\xdb0\x04\x8fq\xa9\xc5\x89M \xa2EH\x8bj\x89\xddq\xe7\nk\xfe\xf3\xb5\x0d<\x17\xd4\xba\x1eA \x9fFl\xd5\xdb\xfdAV\xdd\xf5+%\x18\x9ac\x9c\x0f\xcfYP\xbd.L eg4\xca\x1d\x07r\xe8E=Z.\xbaH\x94\x0fHuN\xfe\xed\xdd\xe9\xcb\xa7B\xd3\xcb\xefr\x95\x19\x08\xaf\xc6\x9b(\xcd\x85I\xe9I\xaaK\x94N\x84\xd2\xc0\xea\xee, \x16\x11I\xb3\x98&e\x02\x077'\x17l\xc1\xc4\xf6\xdd\xd6\xc2\x0d\x82\x14lR\xc4p\xcb\xff\xce7\x88\x0c5\x04\xd1\x96[\xcb\xbd\xdf,\xc0\xbd\xdf\xfcc\xbd\xdf\\)\x00T\xf6C\x17\x8e\xfd\xbanz\x7f\xf2\xbc= \x97\x11\xe12\"\xf4\x9br\x07\xc1\x84\x11\xd2\x0f\x03E\xe6a\xa9R\xc6MAt\xaf]\xf4}J\xc0\xbdv\xb1C\xe2\x9a\xdfip\xaf]\x8cAE\xf7\xda\x85{\xedB\xc0\x8f\xf3\xda\x85\xc1\x1b\xb2\xff\xa78\xaa\xea\xbc\"\xb9\xd9\xa9\xf4\x88\x14>\x10~\xe2\xc3{Er\xac7\nr\\o\x8f\x88\xca\x06\xecu\xbc\xd4\xf85\x0cv\x98\xce\xa7\xa1mj\xf6g\x8c\xe9\xcd\x18\xd9\x97\xa1\xf6d\xd8\xf91\x10G\xb5\x9c+Q\xc7\xb4\xfc`\xd6d\xe4\x02\\e6 \xeeL\xe6\xcedF\x13\xae\x18\x9f\x903\xaa\xd1\x89\x1f\x8b\xb1yRZ\xf1\xbf\xeczx\xa6[k\x0d\x05+\x86\x94LW4%>I\x89Z\xa9\xd6\xc4\xcf\x0b\xd1\xe6m\xde\xa4\xa1f\xbdP\x9cc\ntR\xbb\x86\\\xe1-\x82$\xa5\\\xdcqJ\x94\xa8\xea\x82\xba\xfb\x12\\\xb3\xb3\xfc\x8bk\xab}\x8b\x89_\x93\xfd^\xa7A\xdfM+\x96h\x9aEA\xaa\xe8D?5 \xca J0LS\x82i\xb2\x12\xb41\x18 \xc6)\x17`6B\x9a_\xf3\xdd]\x86h\xe5\x86\xc8C\xeb\xf5K$\x8b\xe0\x9c\xaa\xd3\x97\xeb\xb88\xd1\xc5\xa5\x0e\xc8H\xcaV\xb75\xc98@/\xd7,\xa2\xea\xf8\x91\x04\xbd\xee\xabCM\x0f*<\xe2\x05\xd8Q\xa9\x18g\x9dPkv!O\x8e\x87\x07\xd5\xef\xe2\x80\xca\"]\x969\xe4W{4)\\\x02b\x12\xe4\xf9:3\x92\xd0i)\x86\x83H\x9e}\xf8\xbf\xe9\xe7\x8c\x84\xca\xa8v\x05b\xf5\xa4T\xfa\x18\x05\xe9^\x92+\x01C\xb3\xc3|I\x7f\x82\xc3\xffSN\xb1\x1a\x8d\xa9\xb9\xb8\xd9SX\xb7\xb5I\xb0\xb9d\x8d\xea\x8a\x8a\x17S~\xbcW_\xc1\x90PN\x80\xa3\xd8\xe3(\xf6\x0c\xe9\xeb\x12\xca\xb1\xff\x04\x0f\xef@\xba\xcc\x92\xa7p\x08\xbc=\x9f\xda\xc1\xffy\x88`U\x12\x06$\xd1\xefb\x8cL\x91`\x90,\x12\xd0;\xde\x14\xe5) \x9f\x82t\x08\x86A\"\xc8\x98\xef\xf5\xe2\xb7\xc2\xeaF\xefw\xe57:\x0fo\x13\xaae\xadm/\xc2G\x96yi; \x9c\x18\x87\xd68Ge9\xb7\xe4\xfb(\xf0\xe4\x99K\xb5\xd2fR\xd64K[l\x16$\xad\xef3aK(\x91\xc9}\xd90.\xea\xc0\xf7Lo\x15\x88\x97q\xbc\x9b\xf6\\\xc4\xdf\xe4v\xbdU\xb9\xbe\xf9/\xe5\xec\x94\xf8\xc4\x8e\xaf\xed\xb9\x03\xc5\xc6\xf2\x83d\x1d\x12E\xfc\xd7~\x86\x1a\x1e\xcb{jx\x9e($\xd9bA\x13~\n\xcc\x85+\xe7\xb4r\xb2&d\xd2C%mG\xc5\xcd\x12ao\xf7\x9f]\xce\x8c{B\x0f\xd7\x03\xf4\x8d\xdb\x9d\xc2\x85p\x8b.\x9e\xc2sa*\xc31\x17e{\x9d8\x93\xcdj\xc6\xfa\x1f\xa4\xf0,%;\xaa\xbc\xe3|\x8c\xf9\xdf\x8a\xdb\x99\xc9\x92]D\xc0\"\xa0\x97\xf9}+%61\xbb\xe3\xd3woo\xe7\xd7v=U2$\xc8(\x82X]\x91\xd0*\x07\x90/Y\xd7*aX\xa8<5\x98\xe5Sg{\xa2\x17=f\xa2\x96G\x93\xf2\xdeJ\xed\xdc\x12D\xd2\xec\xe1\xe2\xae8\xbat\x9b\x04\xb5\x03\x8d\x18\x8a\xcb\x1cq\x99#.sd\xd3<\xad\xa3\xbc\x92]h\xf6[.\x06\x97?\xe2|\x95]\xbf_'_\xa5\xcb\xcf\xb0\x0b~\xbb\xfc\x8c\x1d\x12\xd7\x9cY\xe0\xf23\xc6\xa0\xa2\xcb\xcfp\xf9\x19\x02~\xd0\xfc\x8cV\xf8\x08\x91\x9ca\x11<\x12\xb9\x1a\x95_\xa7\xe1\x8dR\xc7\x8a\xbe\xb5P\x91\xca\xda\xeau\x9c3\x06|\x0cv\x8f1\xd8cr\xcbj\xdd\xb1\x880\x8f\xc9*\x04L\x88\x07a\xdc\x81\xf1<\xd3\xfe\xd6\"\xb8cp\xe7\x82\xb8i\x8c\x0d\xed`\x02;\xd8\xb0\x0e6\xa8cC\x99q\x03:\xe6p\x8eU0\xc7\xe8\xe1\x06\xdbP\xce\xa0@\xce\xc8a\x9c~A\x9c\xe1!\x1cD\x00\xc7$'$ \x827\xc8\xbdlr\xb2H\x187l\xa3\xdb\xe5\x18_(\x8c\x1d\xb0\xe9\x1f\xae1\x91\xafO\xa8F;XE\xa0F\x1d\xa61\xf2\x01Nf\x8d\x1b\xa0\xc1\x85g\xb4\xc1\x19\xbby)9i\xc4\xb0\x0c6(\xa3\x0e\xc9\x18\xe74v8F\x17\x8c1\x0e\x06\xc78\xbd\xc20b\xf4\n\x84\xc8 \x8cM\x08\xc6\xcc*\xc3\xc2/\x9a\xe0\x0b\xd67<\x92k\xd8y\x86\x9dg\xf8\x9b\xf1\x0c\xb7\xed\x84\x06\xf7I\xc1\xac\xc9\x12\xe5\x7f\xaf\xe7S~\xadLQ\xcb\xf7\x0d\xd2\xad\xf2\xfe\x97\x02_\xab\xc2\x7f\xeb\x8aEt\xf6m?x0\xe0\xe8\x9e\xd0\xc8\x9f\xd2\x88\xccB\xea\xeb4\xd9\xf7p\xf6\xd6NS\x82\xcak\xd5\x06\x95G\xaf 8\x1d\x0f\xf0\x81F\xfeK98Y\x96\xb9\xb9#Ic\x95 II\x9air-.\x96T\x14o%\xe5.W\x9f\xcc8b\x8e\xb5\xdb\x82\x94*l\x8a\xe5\x11\x1d1L\x04k\x90\xeaD\xfbfGqT\xea\xd8\xd7\x1d\xb8\xba\xad\x82\xd6#\x0b\xf5\x9e\xb6m\x822\xd0%eI\xd7\xa6l<\xa7\xe2\x94\xbfS\xfem\xd8\x81\xf2\xb7\xd2\xa3I\xb6^\x87\x1b\xb5\x1e=e) ?\x88\x8f\x1a\xcaT\xc6[dk\xa8\x17v\xeaT\xa55,\xf9\xcf\xd7V\x97\xd6 R\x87\xaf\xc1]Z\xf5fd\x0eW\xc1i\xcc\nN\xb9\x93 \xe7\xf8\xa0\xf0h\x14\xfc_\xd8\xcbm\xfd\xeb\x12\xef\x04\xb8\xc4;\xa3S\xf3\x9bI\xbcSMD\xe8\x99\x9a\xa4\xef\xefT\xa9+\x1d\xa5K\xa5\xfc\xa33\xaa\x9a\xbf9\xa3j\x07F\x95\xcb\xb5\xb3\xce\xf1p\xb9v.\xd7\xce\xe5\xdaU\xe0r\xed\\\xae\xdd\xf7\x93k'\x8f>\x88\x14;i\xc7\xbd\x9b7\xdc\x075\xc7A\xbd\xfeQ\xa7\xf3\xa0@p\xa3\x98\xee5\xf5\x1c\xa8\xce\xdb\x03\x8ee\x1a\x07\x80\xc1\x8cq\xa5\x8e\x9a`w\xe0Gx\x8a\x0b\xaeD\x9dr\xf2sM\x8b\x93\x0bp\xc5\x8e$\xb8C\xcd5:\xd4\x0c\x0b\x13\x7f\xb5bB \xddOi\xe4\xd3x\x15DiU\xb8/d\xdeY\xb2\x1fr}\x9c\xaaU\xd5k\x9a\xfe*>y\xc6\xbf\xcf\x95t\x9eW&\xfe\x0e\x02Q\xa7\x96j\xb6\xbdQ\xcc\xed\x9a\xea*1\x8fi\xd0\x11\xb6\x1b\xa0\xad\x96$Y\xf6\xd08`v \xaeI\x9cN\x13\x9aN\x97\x94\xf8\xb4C\x12\x81i\xe4`\x1c=\x07\x8d\x0b\x10\x8c\xe2\xab\x00LZ\xb3\x9aT\x80!\x17\x98IV\xfa\xe9NH\x9c&4\xfdYPn{\xb9\xe5G\x82i\xdf\xbc\xe8\xe2\x92qYd\xb7\xeb\x97\xbf\x10\xab\xa1\xac\x9c\xaeL\x1c\x13\xd3\x13\xb7\xec\x0d+1J)(\x051\xeb\x80Zw\xc0\xb9\x9b%\x90\xf5\xfaj\xbb4\x9b\x8f\x05<\xe7\xa2-J\xb2\x04<\xb2\x96\x96\x99\xd4&\xc5\x9f\xe3,\xcc\x13\xa0\xd71\xe32Q?DR\xae\xa7\xcc\x02\xe0\xff\xe1-I\x10\xdd\xd1%\xa0\xcbS\xb4\xcc\xb8\x0ek\x8d@$8\xc9TD1\xb6\xfc\xa169*\x0d\xc2\xe2\xf9\xd6\xea\x81\xe7=M\x9e\x05\x88\xac\x0d\niL\xa2D\xbef\xb4\"\xde2\x88:\xdft\xe5 F\xd7)\xb9\x0b@,\xe9\x92\x06\x8b\xa5\xe6\x0e\x07\x02\x05N\xce\xa5\x81\xbaP\x8ae7>I\xe9]\x8eO\xf1\xa5x/L\xad\xd7\n\x18qG\xeb\x858`'\x08\x18a.\x01\xa5\x07\x0b@\xcd\x14\xd0\xb3\x05\xb3~,?C\xe9\xc9\x020|T\x80\x99\xe4`Cv\xc0\x93\x1e\xa9O[\x1fw\xeb\xd5\x02\x04\xcbzl\xb5\n\xd2\xe9UX\x04P\x0d\x8cw'_\x1c\x92R\xb3vG\xb1\x0d\xfc\xa7+\x1a\x9ex\x1c\x9b\xa4,N\xae\xa8\xc36=\xe6\xb1\xb8\x97 \xe47\xb0,]gi\xf5\xb7uL\xcf%\xb9\x14\xd8D\xac\xe6\xca\xe7Pj\xcc+\xea\x8f\xac\xd7W\xd4\x93\xd8\x1f\xb9\xe3\xf4\x8a\xba\xa4\xe7\x81O#\x8f^Qw%\xffUf\x8f\xc6\x1e\xe5\x82\x9a%4\x9e\xe6\xb5\x85w=\xbe\x861'\x05^#9\xa54\x8f\xa4#\xf7\xb4|W\x80\xfd\x96(\xc0v\xc1\xa1\xff\xa2C\xdf\x85\xb7t\xfa4\x01\xe5\x02jB\x1a\xach\x92\x92\x95\xc1i_A\x0f\x82`\xfd\xa9M(\xbd\x1a\xe6\xb3g\x13\x06\x8c\x10\xbdT\xd5\xe0\x82\xc8\xa7\x97vC\xb3\xe3{{y[f\x9e\xd8\x0dk\x97\x14\xebc\x82p\xad\xde\xac\xd3\xb0\x8e)\xb7\x98\xef\xf0\x7fH'\xe6\x1d`8:\xca\xcf\x85\xc1-\xddk\x95\xd3\x8c\xcf\x05g\x87\xd4\xec\x16\xd3\xa7\xc2\xb2\x9fa\x16\xc0R^\xdb\xcaig\xd9\xb7\xc0Y\xf6\xce\xb27\x83\xb3\xecM_\x83\xb3\xec\xedt\xa0\x04g\xd9+\xc1~K\x14`\xbb\xe0\xd0\x7f\xd1\xa1\xef\xc2;\xcb\xbe\x00g\xd9K\xb0\x97\xb7\xce\xb2\xdf\x86\xab\xb6\xec\x85X\x9c\x9e\xb34\x88\x16SQ\xe8\x15\xb3\x18\x96\x0ba'\n+\x9e\xbd\x1e\xe3\xb1\x12==G\x82\x159\xb6\xfc\xf9\xa2\x08\x10q&}\x99\x87\x87\xaa`]\x110\x12\xf1g#\xb2rar\xb3\x1a\xd2\x0b\xc6q\xcd\xc3\xc0\xe3\xfc#\xb8\xd6\xc0s!7D\xa7\xb2\x0e\xe5\x94\xa4)\xf1\xce\xbev\xd8\xaa6\x83)\"\xc9T\x82\xc5X\xc0r<\x90\x8bF\xea[ZU\x96c\x82\x1e\xe3\x02C\x0er7\xf4\x18\x18\xf4\x1c\x1c`\xb2\x98\xbb\xc16\xb7\xb9\x1bz\xce\x15\x06\xcc\x17p\xd9\xd1\xdd`)\xb0\xdaP\x080c&u7\x18\xf3\xab\xbb\xe1k\x0e\xdaV\x04\xb7\x01\x97\xb7m\x8d\xb6\x99\xe7\xdd\xca\xe6\xb6\xc6\x86\xcc\xfe\xee\x06lN\xb85\xe2F\x0e\xb9u\xa6x7\xd8\xe6\x8fw\x839\xab\xbc\x1bz3\xb2\x9dG\xa7\x80\xde\xdd\xd9\xdaLu\xd0\xe7\xb0w\xc3\x08\x03\xc5\x9aTM@f\xc1w\xc3W\x92\xfd}\xfc\x050\x8c\xc8`\x7f\xb4j\xc2\x00\xc7Q\x01\x03\xa8\x0d\x03)\x0e}\x1dJ\x05\xf49`\xb7\xa1\xff\x8e,\xa0/\xe3\xc0p\xe6\x81\xa1\x0c4\xc8\x01U@\x0fGT\x01\xf8\xbb\x07\xdd0\x80~\x03\xe8f\x7f{\xa1\x1b\x10w\x1a\xba\xe1kL\x1b}\xa3\xa0\x1b\xbe\xc6\x90\xcdY\xb7j\xc0^\xc5\xb0F\xac\xbb\xba\xd1\x0dv\x17:\xba\xe1k\x90\x1f{%\xa4\x1b\xbe\xc6\x88\xcd\x97J\xba\xe1k\x8c\xd5\xe2ZJ7|\x8dA#/\xb6t\xc3\xd7\x18\xb0\xdd\xd5\x98n\xc0_\x98\xe9\x86\xab\x9f\xf7\x90\xd3\xb9\xf1\x86\x8e\x156\x8b\xdb<\xdd \x8d\x0b\x1b\x92\xf7\xb4\x88\xfbZ\xc2\xdf\xd0\x19\xd4*\xdb\xa0\x80!F\xba}4\xac\x00w\xf8\xc4@O\xf1 \xc1\x1d>{\xf3u\x01\xfd\xb7b\x01}\x19\x07\x863\x0f\x0ce\xa0\xaf}\xf8\xac\xaa\xb1\xd9RPR\xce\xf4\x92c\x17\x18\xef\xb6u\xc3\xa0\x8d2l\x9b\x14\x92t:\x0f\x89\xf2\xe16=\x0cf4\xbb\x8c\xd2&\xdc\x85g\xbf\xbe{\xfe\xcb\xf4\xcd\x8b\xe9\xab_\x8f_[fS\xb6\xa1\x8d\xed\xf8\xd9\x87\x97\xbf\xe1\x93D\x9b\xd0Ff\x99q\xda\x846\xb2\xdf\xde`\x13O\x9bP\xa6\xa1\x8eG\xb6\xfe\xa7p rs\xfb\xafB\xb2\xa8U4\x95E\x19\x9f\x85\x1e;{\xf3\xa2W|FB)\x06 \x90\xd9!\xa6\x06\xdb\xd0;{\xa9 \x83\xf7\xc9`ql\x91\xa3\xb1\x0d\xa3\x0d\xbf_\xd0A\x82u:T\x13F\x9bC\xaf%\x18r\xee\x92\xf0\\\x1cw>\x04\x0b\x99\xc1\xcdm\xb4\"\xc4'2\xac\x8a\x0b\xe4=P\x07\x11\x90\x1c?\xfe\xf85lN\xb2\xb7\xe6\xb5\xf82\xdbF\\\xd7\xb7;M\xca#\xe4\x05I\xf2ca*\xcb\x16\x90\xfc\xae\xbd\x15\xae\xca!\x87\xa3F%#\x12\x8a>\xee\xf5\xd0\xfb}\xb4}5\x17|\x9b\xbeVP\x0f\x0b\xa8\x07\x15$\xf4\xa1\x85\x84\xder|\x90\x00\x19 <\xd6\xd9L\xfdt\x8e\x0ez\x13\x17\x06\x11\x98\x03\xf5\x8f\x1e<8|\xd2\xa7\xe9@B\xc30b\x83x\x9c\xd0[\x1f=xxv\xf8-\x0e\x7f\x88Ev\x92\xcd\xc2\xc0\xfb\x85n\x1a>\xbe3\xbai\xd5\xf4\xef\x81:K\xa8\xac\xe1]s\xfb\xfd^\xca&K\x84\xb6\xe9\xb8M\x18\xb4>C\xce\xf5\xa5\xb7x\x1d\x07,\x0e\xd2\xde[\xfaJ\xc7^\x8c\xdaf\xb0=%O_\x99\xd3S\xa4\x0f f\xef-\xdaS\x98\xf7$(\x0c *\x0c\x13\xe3\x03\x88\x0bC\x08\x0cC\x05\xf8\xd7\x1bx\x7f\xd1\xbd3\xc1=\xa2\xd8\x1e\"\xb4\x07\xacI?\xa1\x07c\x88\xeb+\x1fu\xbf\xcb*\x05\xf4\x1c\xae\xddP\xf9\xe9\x8cES|h\xccrTv\xa3\x99m\xbe\x90(\x0d\":\xb5;'\xd9\x9d\x8f,\xceE\xd6r\xde^\xba[+K\xcb\x15\x90\xd0C\x0cZ\xabFkbA/\x82A_E\xd8\x8bp\xd0\x8fx\xd0_\xed]\xed0\xfb(\xb9\x1d\xa8\xb7Q\x14[?I\xdb\x8b\xdevrM\xc2\x00\x05v\x05c\xec\xa7\xac,\x07f9$\x1b/y\xcf\x91`=\xe0\xb6\xce\xd5_\xb9B}.\xee\x0d\x1e\x8bk\x83Co3\xe6EJk\xf7kI\x9a\xd2\xd5Z\xdcdL\x19\xac\x82$\xa4\xc4\x07\"\xef,\x1a\xf1\xc9;\x8d]\x1e\xd5Z\xaap7\xe1\x8d\x82\xde,\xd4M\x06\x07j51\xdcd\xc8\xa4\x91\xfd\x98r\x0b0\xd91\xe6<\x18#\xd9\x00E:@%#\xa0\x08\x08x\xada\x95\x83\x82\x9a)\xa0g\x0b\x80\xce \xc1\xadg\x01\x18\x06*\xc0Lr\xb0!;\xe0Io\x99\xbd\x81\xca\xd3\xc0dd`\xacj\xa3-\x8dd\x05,#X\xe5HX,\x06.\xef\xa1o\x86C\xcf\\\x86\x9eY\x0b\xf6\xf9 \x832\x11\xf0\x16\xe4X\xd9\x05Vy\x04\xd6\x19\x03\x16\\c\xb1\x81\x91\x96L\x8f\xceq\x16\x0c:Z\xdfc\x04\x86\xe9\xdb\x98N\xd8\xa8\xba\x88\x91#0uG\x8cq#B\xc4\xc4\x15qn\x05B\xb2m\xc4\xd9\xbcC\xda|r\x10\xf5\x10i\x0b\x83|\x96\xb4\xf5\xec\xa1{\x8eT\x82\xce\xc8s\xcf\x91\x9a\x98\xb3\x82c\xf8\xf8\xfe\xd7\xfd\x98&,\x8b=*\x9e\x17\x95\xbb%\x8b\x82\xcf\x19\x0d7\xc0\xb7P\x1a\xcc\x8b\xc7\xa1SY\xfcP\x89P>\xd1\x10\x07$\x0c\xbe\xd0\xce\xd7~%\x88\x87}=\x16\xc2,\x9b\xcfi\\,\xdaD\xbe\xd2\x94 b\xcc\x82\x88\xc4j\xcbU<\x82\xb2Y\xe7\x0f\xb6\xf3\x16\x1bu\xd7R\xd4A \xde{\xcf\x92z\xc5\xcd\x94^\x8a\xa5>\x8e6\x13\xf8\x99]\xd0s\x1a\xdf\xd1Z%\x1f\xdf\xffZX=\x1c\x15\x17\xd3\xcao\x85\x04\xa5\xf0i\x99\xa6\xebOw\xe4\xff&\x9f\xee\x00\x8b!b\xf9\xafw\x047z$\x02&v'\xa7\x88\x1a!M![\xe7%G5\xfd\xd2\xf8\x9c\xc6\x924+\xb2N$k\x89\x91\xa7\xac\xac;*\xdc\x7f\x81|0\x85\xa8\xbdts\x16\x86\xec\"y\xaaY\xdb\x7f\x877\xf3jF\x9c-\xd61\xe3\xba\xd6/'-,\x82$\xc9V\xd4\xd7\xd47\xfdw\xae\x9b~>==\x81\xd7/O\x8b'j>\xbe\xffU\xee\xb1\x8dxn\\m8\xfcw{[\x9cn\xd6\xf4\x9f\xff\xfdOe\x83\xfc\x9df\xce\x0f\x92\xdfr5\"Vh\x1d3?\xf3(\x90H\xaa0u\xfa\xda\xbf\xc3qU\x16$\x11o\xf2\x10N3\xeasr{\xc4\xe3\xb2\x85\xb1\xb3l\x0d\xf9ED\x98\x91D\x93\\\xc8LuT>\xbe\xffU\x8cqI\xce\x05\x0b\xaej{\xc8\x97\x9b\x88\x14S\xe2\xff>g\x81\x0f$\xd2\xc5W\xe4\x00\x85\xf8\x88\xe9\x9c\xc5\xf4N\x81\x80\xe3%i0\x0b\xc2 \xdd@D\xa9/\xd8h&.\xf6\nV\xd3\xa5I\xb2\x88\x8b\xd9hAE#\xb1g'p\xebcB\x8b\xcaI\x9cJ\x9c=\xb9\xcc\x92\xfcI\"\xb2\xd0\xcd~\x16Sr\xc6eP\x8exr[\xcdQ\xbf\xb1\x94>\x85\x94\xeb\x90y\x16yr\x87\xf1y\xe4\xb2\xcb\xcb\xe2\x98Fi\xb8\xa99\xbf5\xe2R<\x994\x9f\x07^@B\x83.\x9bes\x88)\xd7D\xf4\x8e(&\x13\xa4E\xa7YB}i\xe4\x15\xfbR\x89jF\x17A\x14\xf1\xc9^\x04\xe9R\xa3\\6k:\x91\xfcO\xd6A2\xf1\xd8J'\x8d?\x88\x9d\x9a\x00K\x97RPDm)\x05\xb7\xf2\xd7\xf0\xe9j\x9dn\xf2\xad}[\xad\x04\x83\xc52\x85\x99F(\x89I\x8b(A\xb0Z\x87\x94+Y\xb1a YS/\x98\x07\x1e$tE\xa24\xf0\x14\x99\xa2;xS\xbd\x0dX+\xe9-\x17G3\nD\x1e\x06j\x06\xce\x96\x1dS\x14\x0e\x9a\xb1s5O\xe7$\xc8\xb7B\xe7\x1bl\x88\x91}:\x8e6\x9f\xaa\x13\x0f\x89\x80\xc4\xb3 \x8d\xf9&V\x8f\xb0\x13U\xa1#H\xc8r\xd6\x03\xd2\xbd\xb4\\:\x0bE#G8k\x9a\x85-\xf3\xaf\xb4\xea\x14\xacyRl\x9c0\x98\x89a\xe7z$\x81$[\xafY,4\xf8\x9axg\xfbY\xc4\xff\x87\xebm\xc9\x17\xdd;(W\xf4j\xc3\x86\xcd!K\xa5`+\xc4C\xc2\x05+\xf1\xfd@\xca\nX\xd0\x88\xc6$\x15\x83\xe7\xe7\xac\xa2\x16T'>>\x1e\xb9\x84\xdd\xfd\xbd\xbc$\x9c\xf9\xe1\xf0)\x9c\xf0\xf1s\xb9\x90O\x85\xd4\x0b\x82?\xff\xcb_4j\xf2\x15c0g\x0c~\x82\xc9d\xf2?\x95\x9f\xf1\xc1\x90h\xa3\xfe\x80D\x9b \x1f\xc6\xab\x98\xadn\xcd\x19\xbb\xad\xfet2Q\xeb\xbf`\x0e\xb78\xaa\x8fb\"\xa7\xec\xd6\xbfq\\\xb7\xe1O\x8d\x0c\xd7\xe1\xfb\x97\x9evG\x06\xda\xfd\x95\x9c\x93\xd1\x88\x07? \xdb\x90\xf72\x02\x85\x82\xe4\xd6+\xc6&^H\x92\xc4@ 9D\xdeH\xce\xb1\xd6P=\x06\x05\xe5J\xd2\xdd3\x90\xeed\x93.Y\xa4!\x9e\x1c\xd5+\xc6nM&\x13\xb56( wK\xfb\x8d`>A\xd6\xbeT\xe5H\xdeH\xa2\xbex\xf9\xe1\xf9\xfb7'\xa7\xef\xde\xdf\xd6y\xc9*F\xd5w,\xbb\xd6\x93\xf3\xbe\x81\x9c\xaf\x99\xa6D\x1c'\xe5\xd3\x9f\xe0\xdf\xd6\xb3\xc9+\xc6\xfe\x9cL&\xffR\x7fL\xa2\xcd\x1dn\x86\xf2\x16kiD\xbd%q\xb2$!'\xb2~\":\x12\xb6G\xa1\x19B0o\x0d\xe0c\xb4\xaa\x86 \x06(6\x88\xf8\xea\x7f\xfc\x04Q\x10j\x19\\?.\x05'\xf3\xc3\xad\xa0s!\x8b\x8b\x83\x06\xcc6\x95\xd9Uh\x0f\xf9\xf4f\xb7\xd5\x9b;\xc9\xb8Y\xd2\xdd\xd5^\x87I\xb5\xcf\xcf\xef\x13\xf1\x037W\xf7\x80\xd4\xb4\x1d\xd7\x84y\xd1\xc0N\x84\x92C\xba;+UK\x14n\x8as\xe5\x96\xb3\xa04\x93\x81\xccS\xda\xe5\"\x94 \xfc\x18{\xfb{\xdd]\xe5:\xb1\x18\xb28\xed\x02\xcd9\xfa\xe6\x9c\xb1\xc9\x8c\xc4b\xb2\x97\xfb\x9b\xc9\x97\x9b\x92\x8a\xe2\xec\xd5\x89O}\x14\x15C\xbd\xc9qpu\xd8\xf9\xc9_?\xfc\x7f\xec\xbd[\x93\xdcF\x92&\xfa\xce_\xe1G\xe7\xd8\x92\xda-V\x8d4\xe7\xbcpWkK\x91Tw\xed\xaaI./j\x1b[\x1bK\xa12\xa3\xaa0D\x02\xd9\x00\xb2.\xa3\xe9\xff~,n@\x00\x19\x17\x8f@d\xb1Zr\x7f\xe8\xa6*\x01G\x84#n\x88\xef\xf3/\xde\xbd\xb5\xff\xf2\xc3\x0f?\xfc\xe0n\x03\xfc\xbeq\xcfE\xae#\x1b>\x1c\xa8E\x90\xfc\xae\xdbwLo\xaf^\xed\xab\xc2!h}\xe8\x86\xdf\xb2a\xe3\xb2\xe5\x04\xd8\xf6\x82m6\xe3\x02\xe6D.\xc7m\xee\n\xc7\xee\x8d\xb1\xa4\xb8\x14\x1f\xb2\xbf\xfe\x0f\x1e\xba_\xd5f\xc2d\xa3Z\xbf\x1c{\x07Q\xc3\xcf\x0b\xcf\x07H\xb1\xfe\xc2\xc7\xa0\xf1\x83\xf8\xb2\xac\x98{\xde\xd0c\xd6{\xd6vM\xed\xed\xb6j'N\x9c\x18\xbb\x12o\xf8\x07\xf8\xce\xedy\xb8A\xf0\x12\xd4\xf5\xdf\xc7\xcf`\x00\xdeR}#b\xf9\xcd\x0b\xf8\xc6\xd6k\xa7a8\x95\xb5\xfc\xe6\xc4\xe7O\xd4\xefm\xb1\xe5>\xff\x9b\xac\xc2\x7f\xf7\xde\xc0\xeb7\xbb>\xb6\x92\xe7\x97\xea\x83k\xda\xd6dk(;\xb8eU\xf5\xfcK\xdd\xdc\xd6b\x9c\xb9.:(`\xbd\xef\xfaf\x1b\xd9\xb9\xa6M\xfeD.\xe0g\xfd@\x9f[<\x14\x877`\xc7\xc7U!\x9b\xb4\xfda\xbf\x8a\xce\xa8\xdb\xf9uSm\x94\x08\xad(\xb9\xec\xcae=\xf4\x0f\x90;\x80vW\xb2\xcb\xd8\x9f#\x8ap:L\xce\xcf\xf8\xb8\xa6Cx\xb05\xa4wL\xff\xf5\xff\xfc\xeb\xb7\x9e\x8e\x94\xa3\xcdM\x1f\xe8ov\"T\xdc\xe5w\xa7\xdf\x7f\xf7}\xf7\x8d\xa7 \xc9\xff\xef\x8b+\x034x\x0e\x1fY{S\xaey\xf4\x9e\x9e\xad\x9bn\xdbtg\x17E\xc7\xce\xfa\x81\x99wv\xf3\xdd\x05\xeb\x8b\xef\xce\x04\xfa\xd5\x9d\xfd&\xd9<\x7f\x7f*\xdd\\\x8dY\x97\xdd~\xbb-\xda\xfb\x17\xf0'&\xd1\xa6\x1f\xef\xe5Y\xd5\xf0\xb7=kK\xd6)\x00\x8d\x07\xfa\xaa\xbca\xb5\"\x06\xe9Q\xab\xd91Y\xe7\xf3\xcd\xa1\x0fu\x8d\xc6\x9d\x8cJ<\xfd\xfe\x9f\xfe\xe9\xa9\x1b\xbc\x82n\xbf^\xb3\xae\xbb\xdcW\xc3\xdd\xe68\x99 \xb6r3\x82\x9c\xce \x08\xe5\xb8i(\xc1\xfd\x8b\xc0\xee\x05\x8a\xe1\xe3-9\x04K\x0fa&O\x8fb\xf0`\x98;\x0fq\xa4?\x8a\x99\xe3e\xe48\x94\xd0\x974\x91\xe3\xbe\xbf\xa0\\}\xac0}\xb0L\x80*\x17\xe0d\xe5Q\xef\x1d\x8cw\x1fT]\x0f\x8a\xc2\xe7~$f'O\x1aN\xbc\x1d\xa6b\xec\xbe\xaaNd\xda\xb1\xb2\xebX\x81\xf5\xa9`\xba\xc7a\xac\x94z\xachzX\x1e\x1d\xf1J\x1f\x8c\xe2\xea\x17,\x8fzL\x88K\x84\x94\x1b\xcf\xd8\xa3\xc3\xb4KT\x05\x013\x98KC\xcd\x83\xdaP5\x05tm!r\xd3gj\xa8-\xa0\xa9\xa1s1\xb5%\x04\x04\xbb\x9f:\xb5\xe8TUm\x0bJ\x88~Ut4\x7f\\\xc4R\x96 \xff\xd0G\xf3\x8b\x95\xfd\x05\xe6\x05D\x8e\xd7\xb1\xe34\xad\xecgF+{Z\xd9\x87\x8dV\xf6\xa1\xab\x81V\xf6qs\xa04Z\xd9;-\xbeKh\x8b}\xe1\x90\xfe\xd2!\xf5\xc5\xd3\xca^\x1b\xad\xec\xa5\xc5\x8f\xb7\xb4\xb2?\xb4\x87^\xd9?Bi\xc8\xb1\xcd>\x8e\xf2D\x0d=\x89%\xc1\x0e9\xb1\xed\xf3\xb5\x06\x88x#]*S9\xbc\x18\xb5\xac\x86\xfe\xb6\xe1\xbe.\xabr-\xa4*y\xab\x0d\xb49!`\xb9\x92\x02\x95\xabB\xa8g~m\xd8\xca\xa8\xc1\nA2\x95\x16Q\x16\x88,\x0f\xa8\xa1\x91m\"WU\x91e\x82\x84rA\x80\x83l\xb7\x84\x82Ab\xe1\x00\xc3b\xb6[,\xb7\xd9n\x89u\x85\x05\xf5\x05\x1c;\xdan\x91\x03\xd6\xdc\xf4\x00\x16dR\xdb-\xc8\xaf\xb6\xdb\xd7,t\xec\x10<7\x1co;\xda\xed\x94\xe7=csG{C\xb2\xbf\xed\x86\xe5\x84G;\x9ep\xc8\xa3\x99\xe2v\x8b\xe5\x8f\xdb-\xcc*\xb7[rC\x8e\xdb\xd1\xd1\x96\xfc\xb8\xd85\x93i~\x0e\xbb\xdd2\x14\x14\xbb\xa4\x9a\x1a\x92\x05o\xb7\xaf4\xf6\xa7\xec\x17\xc0\xb2 C\xfc\xa7\xd5\xd4\x16l\x1ci[\x10mX\x18qH\xddP\xd2\x96\xf2\x81=\xb7\xf4\x1e\xa9-\xb5\xe1\xc0\xf2\xc6\x03K\x1b\xd0\xa2\x0d(m \x1bQ\xda\xf0\xb9\x07v[\x10\xbf\x05q\x8b\xcf^\xb0\x1b\"\xa7\xc1n_\xa3\xda\xe8\x8c\x02\xbb}\x8d\"\x87Y\xb7n\xc3\xa6bD;\xf6\xa5n\xd8-.\xa1\xc3n_#\xfc\xd8\x94\x10\xbb}\x8d\x12\x87\x93J\xec\xf65\xca\x1a\x91\x96b\xb7\xafQhdb\x8b\xdd\xbeF\x81\xe3Rc\xec\x86O\x98\xb1\xdb\xc3\xd7{\xc9\xd7y0C'\xca[D6\x8f\xdd|\xc7\xf4\xd8-qE\x9c\xba\x12\xfe\x07\xfa\x06\x8db\x1bh[\xb2H\x8fG\xc3\xb4\xd1\xc7'\xc6\x12\x87\x07i\xf4\xf1\x99\xdc\xae\xb5\xa5wEm\xa9\x0d\x07\x967\x1eX\xda\x80\xbe\xf6\xc7'\xe6\x88'\xbb\xc9\xc8a\x8fS5-\x98\xdbf\xb7E\x1deY7\x89:P\xcan\x8b\x1bZ\x1c\xa3tj\xa9GR\xd9-\xf1\xa0*\xbb%\x1e_e\xb7\xf8C\xad\xec\xb6\xe8\xa8+\xbb\xa5\x7f\x85K\xcbu,\x96\xdd\xa2\x0e\xcb\xb2[2{ij\x8b\xfb\xc9\xe2\xe18\x82\xa3qh\xd9\x8a\x9f\x06:H\x8b\xa6CM-[\x1d\x92^\xc1\x92\xef.i\xd8\xe3\xc1\x12\\\x975\x14\xdeC\xc3\xec\xb6\xa4N\x88\x03\xc6\xa2\xfc\xd9\x0f#\x1b\x8e\x1d\x8b\xf2\xe5:\xa2\xcce\xe3\x18\xd11\xf4\xe7^\xc2\xbc\x9f2\xdb\xc7\x1d&\xaf-m\x15\x94\xb0\x02J\x88\x82\xb4\x94XHK\x1e\xc7\x17\x0d \x0b\x06\x8f\xe8\xc3\xe8\xb5%\x07\x17\x16\x05\x18R\x0f\xa9\xd7\xb6(\xd0\xb0,\xd8\x90~x\xbd\xb6\xaf[\xfc%+\xb2#\x1cn\xaf-\xcb!\xf7\xdab\xe9\xb8S[\xf4~\x96|\xd7\xef\xd2\x0f\xc1\xd7\xf6\x15\xca\xaeK\x1dS\xd8\xc4\x91'u\xccI\x1c\xd2\x17\x043\xb9\x8b&\x0e\xe6\x89\x01\x85\x05A\x85e\xc3\xf8\x82\xe0\xc2\x92\x00\xc3\xd2\x01\xfc\xeb\x15<}\xe8>\xda\xc0\x9dq\xd8^2h/x'i\x83\x1e\xe4\x18\xae\x1f\xbc\xd4i\xc9*\xda\x12\x8b\x1bWT\xfeu\xd6\xd4+<4\x16Y\xaa\xb8\xd2\\\xdc\xff{Q\xf7e\xcdVq\xdfIq\xdfG\x11\xdfE\xd1\xe3|\xfc\xe8\x1e=YF\xbe\x01i \xc3`\xf4\xd4\x18\x1d,H\n\x18\xa4N\x84I\x81\x83\xb4\xe0A\xfa\xb4\xf7\xb0\xc5L\x99\xe4\x8e0\xbde\x99\xd8\xd2F\xda\xa4x\xc7\x8dk\xd2\x16L`\x0fP\xc6\xb4\xc9*\xb2`\x91E\x8a\xd9%O, v\x07\xa1\xbe\x12y\x83/E\xda\xe0\xd2lF%Rj\xe4\xd7\x16}\xcf\xb6;\x91\xc9\xd87\xb0-\xbb\x8a\x15\x1b(d\xceb\xd0\x9f\xcci\xb4\xed\xa8\x1aTa{\xe0\x83\x03}xP\x0f-8Po\x13\xd3\x9a\x02L\x1a\xf9\x9c\x10\xb7\x00\xc3\x8e \xf3`\x82a\x03T\xe8\x00EF@\x05\x10\xf0\xb3F\x14\x07\x05US@\xd7\x16\x00\xcd \xc1\xbdOm\x98\x06\xa4-\x1cr\x88 ;\xe0C\x1f\xc9\xde@\xf140\x8c\x0c\xcc\xaa:\xb8\x96F6\x05lC\x88\xe2HD\xbc\x0c\x1c\xef!\x95\xe1\x90\xc8eHd-\xc4\xf3\x13\x161\x11\xf0+\xc8\\\xec\x82(\x1eA4c \xa2\xd5Dt`\xe4J&\xe1\xe1\xb8\x15\x0c\x1a\xadO(A\xa0\xfa1K',\xaa.0r\x84';b\x8c+\x11\x02\x13w\xe0\xdc\x0e\x87\xc5\xe1\"nZ>\x7f\xb9\xe6\x87\x0e~P\xe7\x05\xf2P\xc9sa\xd5\x7f\xf3W\xc8_\x8e\xa53\xfd\xef=k\xef\xcf\x0e\x8e@\xfc\xf0\xfe\x95:\xb5w,\x90\x1e\x14\x0c\x0f\xd3\xb3\x0bk\xd8\xd7\xecn\xc7\xd6\xbc\xd2\xacm\x9bv(\x82qO\xa6\x13\x0c\x85\xff\xc3\xb6\xebi\xad\xebfci\xec\xfe\x05\x82o\xa1\xa7\xc4\xf6\xa2\xca\xb0a}QV\x96!\xc77\xb7:\xe7\xd4\xc0\\\x1a\x9aC\xf9\xed\xab}\xeb\\E!z>\xae\xe3\x00\xbc\x84\xcf\x1f~>kY\xd7\xec\xdb\xb5:\xe6Y\xf4\x98}]\xfem\xcf\xaa{\xe0\xdd\xa8//Kf\x9c\x11\xec\xe1\x85\xc8c\x1a\xf4\x11\xc6\x9e\xb3\x82\xdb\xa6o\xd6M\x05\x17\xfb\xcbK6\x1c\x99z*O\x9f\x90u\x83\xed\xbe\x1b\xba5\x14\xeeeI\xc5\x8a\xaew?\xab\xa9\x19|s\xf6\x0d\xac\xaf\x8b\xb6X\xf7\xac=\x15\xa79\x8b\x03\xab;v\xb5e\xf50v}\xfe\xf0\xf3\xd3\x0ev\x85\xe3\x94en\xa2P\x83,\x93\xfb\xa9\xbd\xe5,m\x11_\xf5(\x11\xc9gE\x07\xa5\xe3\xe8fn\xbf\xf2\xa28Ou\xfd\xf5[Y\x13\xe1\xb6\xbbn\xf6\xd5\x06.\xf8\xd8\xeb\xf4W\xc0\xba\xa8\x9b\xba\\\x17\x95\xe8C\xee'?c\xa7W\xa7'<\xb4Bq\xe1\x9b\xd3o\xf8\xf0%N%Y\xaf\xd9\xaeg\x9boO\x1d\xc7ks;\xafa\xc7\x83]\xae\xd9 \xf4\xac\xd8v\xb0\xef\xf6\x05\x0f\x87\x14\xaf\xda\x95\x15/\xa9\xea\x80t\xf7\x83\xc5\x08\xca\xe0\xd7\xeb\xbe\xdf\xfdz\"\xff\xbf\xfb\xf5\x04\x9a\x16\xeaF\xfdz\"Z\xe3\xba\xa8\xa1\xd9\xc9s\xb9+w\xb5\xf9,\xb4\xdf)\xd9Q\xcfsY{#\x0ef/z\xd8\x16\xbbN6-Q\xf2\xbe\x19\xb4G\xc5\x16`)\x0fM)\xdc;u\x97MU5\xb7\xdd\x0b\xcf\xbb\xfd\xcfp~9\xd6\x887\x0b}\x1e\xfePi\xb1*\xe8\xba\xfd\x96m<\x1a\xa7\xff\x99\xcfM\x7f\xfe\xf4\xe9=\xfc\xe9\xcd'}L\xcd\xe7\x0f?\xcb>&\x0e\x7f\xf7,\x1e\x0eNW\xfet\xbfc\xff\xfa\x7f\xfe\xd5y\x03\xa8\x03\xda\xcbZ\xb575\x8d\x887\xb4k\x9b\xcd~\xcd\xa0\xa8\xe5\x14\xe6\xa6\xb0\xfdgx9J\x83t\xe2\\\x9e\x82\xc7\x8cmx\xb8\xd7\xc5\x9a\x8f-M\xf3e\xbf\x03\x95\x8c\x08\x17E\xe7!\x186!-\x15q`~\xd3\xc2uq#\x9a\xe0\xd6\xe8C\x1b\xd9\x89\n]%\xfe\xef\x9b\xa6\xdc@Q\xfb0\x16Y@1|\xb4\xec\xb2i\xd9\x89v\xc0\xfd\x16}yQVe\x7f\x0f5c\x1b\xd1\x8c.Dr\xafhj>\xaadS\xf3a\xb6\xbeb\xe2&\xd1gO\xe1\xd9\xe7\x8ei\xf5$\x1e%\xde<\xf9\x98%\xdbgQ\x17W\xbe\xda_\xb4\xac\xf8\xc2\xc7 \xe5\xf8\xf4[w\x8bz\xdb\xf4\xec\x05\xf4|\x0e\xb9\xdc\xd7k\xd9\xc3x=\xd4\xd8\xb5\xde\xb7-\xab\xfb\xea\xde\xd8\x00\xf7\x0c\x97\xe2\xd8\xa4\xcb\xcbr]\x16U`.\xbb\xd8_B\xcb\xf8L\xc4N\x84\xa0L\xd9\xeb\x87\xee;\xb6\x91\xcb<\xdd/\x9d\xae.\xd8UY\xd7\xbc\xb2\xe2\xa4\x7fw\xc1\x0e\xcf\xfe\xf6\x8d\xc6\x1fEO\xed\xa0\xe9\xaf\xe5@Q\xcfG)x&\x97\xa1\xc0\xb6\xbb\xfe^u\xedo\xdd\x93\xa0X\x8d^x\x06%Qi\x81\x14\x94\xdb]\xc5\xb6\xc3 \xef\xdd\x8e\xad\xcb\xcbr\x0d\x1d\xdb\x16u_\xae\x1dlQ\xd1W\x17,\x81\x10\x1f=\xd8U\xd2_\xf8pt\xc1\xa0\x90\x1f\x04\xc6\x02\xe7`\x1d\xa3\xc5\x83.\x9a\x1bw\x9bV!P]\xc1z\x0e\x1b\xa2d\xbf\xbe\xac\xef\x7f\x1d\xbfz\x8a\x1a\x8a\xf6\xa2\xec[\xde\x89\xdd%\xb4\xba\xd2sDQ5\xaa\xe9Aa\x7f\xb5|t\x16\x13\x8d,\xe1\xc5tY8[\xfe\x0d\xab:G\xd3|\xaf;NU^\x88b\xaby\xa4\x83n\xbf\xdb5\xad\x98\xc1w\xc5\xfa\xcb\xd9\xbe\xe6\xff\xc7\xe7m\xd9.\xec=HM\xf4\xee\x85Ms \xfb^\x0elzx\xe8\xf8\xc0Zl6\xa5\x1c+\xe0\x8a\xd5\xac-zQx\xfe\x9d\xa5\xf5\xa0\xac\xfexy\xe4+\xb4?\xef\xcd]\xc1\x1b?|\xf7\x02\xde\xf3\xf2\xf3qAU\xa50E\xc1_\xfd\x97\xff\xe2\x99&\x7fj\x1a\xb8l\x1a\xf8\x01NOO\xff\xab\xf32^\x98\xa2\xbew_P\xd4\xf7\xa7\xbc\x18?\xb5\xcd\xf6\xd9e\xd3|\xeb\xbe\xf4\xf4\xd4=\xff\x95\x97\xf0\x8c\xbb\xfa,*\xf2\xa9y\xf6\x9f\xb8\xafo\xe17\xcf\x18\xee\xf3\xf7w\x7f\xec\xbe\x0f\xc4\xee\x7f\x167E\xb6\xe0\xc1\x0fbm\xc8\x9f\x92!Be\xf7\xec\xa7\xa69]WE\xd7\x05\x02$\x8b\xc8o\x92u4nt\x97\xc1\x11\xb9!t\xff\x1c\x08\xdd\xfb\xfb\xfe\xba\xa9=\xc1\x93\xa5\xfa\xa9i\x9e\x9d\x9e\x9e\xbag\x83!p\xcf\xbc\xd7\x88\xc6'\xc2\x9a\x1aU\xee\xe4\\\x06\xf5\xf5\x9b\x8f\xaf>\x9c\xbf\xff\xf4\xee\xc3\xb7\xbe\x9d\xb2\xb1\xa1\xfa\x1f,\x1f\xed\x0f\xe7\xff\x1b\x08\xe7\x9f\x1a\x8fL\x1c\x0f\xe5\x8b\x1f\xe0?\xed.N\x7fj\x9a\xdfNOO\xff\xee\xbe\xb8\xa8\xefO\xf82\x94\xdf\xb1\x93\x8b\xa8\xbf\x14mw]T<\xc8\xfe\x8a\xf8B8/\x85\xa7\x08\xe5\xe5\xac\x00\x9f\xeb\xedX\x04Q@\xd1A\xc4U\xff\xd7\x0fP\x97\x95\xb7\x81\xfb\xcb\xe5h\xc9\xfc\xe3V\xc4Y\x8f\xc5\xfaC\x03.\xee\xc7e\x97\x9e=\xe4\xf1\x9b\xf6U\xaf\xda$\xe3\xcb\x12\xfb\xa3\x9eZ\x96Tg\xfc\xfb\xfdT\xfc\xc0\x97\xabO\xa10f;>\x13*\xe1@\xabC\xd9B\xec\x0f\x1b\xa6\x96\xba\xba\xd7\xdf\x95\x07\x9b\x05\xc32\x19\x8a\xcb\x9e\xd96 \xa5\x89}\x8c\xa7gO\xed\x8fRs\xa2.\xb2\xf8\xda\x05\xa6Z\xf47\x97MszQ\xb4\xa2\xb2wg\xf7\xa7\xff\xfe\x8d\x8c\xa2\xf8\xf6\xb2\xfas\x7f\x8a\x8a\xa2~\xc3}\xf0\xe9\xd0z\xc9\xff\xfc\xf8\xee\xad\xfd\x97\x1f~\xf8\xe1\x07w\x1b\xe0\xf7\x8d{.r\x1d\xd9\xf0\xe1@-\x82\xe4w\xdd\xbecz\x83\xf5j_\x15\x0eQ\xebC7\xfc\x96\x0d\x1b\x97-'\xc0\xb6\x17l\xb3\x19\x170'r9nsW8vo\x8c%\xc5\xa5\xf8\x90\xfd\xf5\x7f\xf0\xd0\xfd\xaa6\x13&\x9b\xd5\xfa\xe5\xd8;\x88\x1a~^x>@\x8a\xf5\x17>\x06\x8d\x1f\xc4\x97e\xc5\xdc\xf3\x86\x1e\xb3\xde\xb3\xb6kjo\xb7U;q\xe2\xd4\xd8\x95x\xc3?\xc0wn\xcf\xc3\x0d\x82\x9b\xa0\xae\xff>~\x06\x03\xf0\x96\xea\x1b\x11\xcbo^\xc07\xb6^;\x0d\xc3\xa9\xac\xe57'>\x7f\xa2~o\x8b-\xf7\xf9\xdfd\x15\xfe\xbb\xf7\x06^\xbf\xd9\xf5\xb1\x95<\xbfT\x1f\\\xd3\xb6&[C\xd9\xc1-\xab\xaa\xe7_\xea\xe6\xb6\x16\xe3\xccu\xd1A\x01\xeb}\xd77\xdb\xc8\xce5m\xf2'r\x01?\xeb\x07\xfa\xec\xe2\xa18\xbc\x01;>\xae\n\xd9\xa4\xed\x0f\xfbUtF\xdd\xce\xaf\x9bj\xa3\x84hE\xc9eW.\xeb\xa1\x7f\x80\xdc\x01\xb4\xbb\x92]\xc6\xfe\x1cQ\x84\xd3ar~\xc6\xc75\x1d\xc2\x83\xad!\xbdc\xfa\xaf\xff\xe7_\xbf\xf5t\xa4\x1cmn\xfa@\x7f\xb3\x13\xa1\xe2.\xbf;\xfd\xfe\xbb\xef\xbbo\x00\x82\x0f\x11W|\xef\x81\xca\x11\xbb4c\x13\xf3\x8af\x07d\xc8\xf3=\xc8+\x1c\x9e\xe71\xd37\xef\xe0\xa1\x05\x1eU\x95]\xcfj\xc1\x94H\xba\xbff\xfdm\xd3:\"\x1a\xb8\x17\xd1\xa4\x9c\xf7\xae\xaf\x8b\xbaf6\xa0\x15qspOo\xdb\xd4\xe5\x17\x17\xe7-\xe0\\l\x8d\x1e\xad\x9b\xf4w\xa1\x83r\x82u\x07hw\xeb07\xc6\xe3\xc7P4w\x8f\x0b\x0b\x06\x1d1\x0d\xa5\xc4\xbe\xd8\xedV\xc97/i\x8eW%\x86@\xeb\xbc\xfdb_V\x9b\xd5t>\x8c\xb8\xfd\xaa\xc1\x0c\xcf\x81\xa7o\xd8\xce\xfbt7-\xd0K \x0c\xb6\xf9PcP\xd7\x14\xbd\x97\x8c\x89h\xf5\xe22I]\xdb6\x9b}\xc5\xfc\xf0<\xe2\x90\x8e\xa4\x87*\xbf\xce\xeb;?/1\xee\x99\xebk\xb6\xfe\xd2\xed\xed\xeb\xfc\xe1\xaa\xbf\xc8\x92\x95\xc6G$_\x04\xff\"Kzn\x13\xe5\x9c,u\x8c\x0b\x0f\x9c\xf0\xff0VS\x03\x85i\xd8\xd1wz\xb5\xd1\xa1\x0e\xdc\x0cL\xa8\xbf\xedY\xd7O\x1f;P\x9ffK9m\xc4\x81\x92F\x1c(\xe2@\x8dF\x1c(\xe2@\x8dF\x1c\xa8\x9e8Pv#\x0e\x946\xe2@\x11\x07\x8a8P\xc8U\x12q\xa0\x06#\x0e\x94i\xc4\x81\"\x0e\x94\xc5\x88\x03e\xbd\x868P\xc4\x81r\x18q\xa0\x88\x03E\x1c(\xe2@\x19\x96\x83\x8fB\x1c(a\xc4\x81\xfa\xbdp\xa0\xd2\xf9G\xdd}\xbd.k%G\xe2`\x1f}\x94\xd7\x0c\xe4#A8R7\xba8G\xea\x1e\xf5\xeb\xa3\xa5\x1cM\xaao\x9a\xf4u\xd14\x15+\x0e7\x82\x86M\x04\xcb\xefA\xe4O\x85\x06%\x810\"\x7f\xd3\x80j#\xe0O\x1a\x01\x7f\x04\xfc\x8dF\xc0\x1f\x01\x7f\xa3\x11\xf0\xd7\x13\xf0g7\x02\xfe\xb4\x11\xf0G\xc0\x1f\x01\x7f\xc8U\x12\x01\x7f\x83\x11\xf0g\x1a\x01\x7f\x04\xfcY\x8c\x80?\xeb5\x04\xfc\x11\xf0\xe70\x02\xfe\x08\xf8#\xe0\x8f\x80?\xc3r\x800\x04\xfc #\xe0\x8f\x80\xbfQ\xc7\x9b\xf5\xddYU\xf4\xac\xeb\xbd(\xe0\xcf\xe2\x92\xe1`\xa3\x8f\xac\x1f\x00Ay\xf7(\x0d\xfe\xbcc\xbd\x0b\x183J\xcf\xa5\xf4\xdc\xd1(=\x97\xd2sG\xcbJ+\x88\xa1\x14D\xd1 (=w)u \x816\x90\x852\x10O\x17\xa0\xf4\xdc%\xf4\x80\x18j@\x02-\x80\xd2s)=\x97\xd2s\xb1\xb0~VH?\x05\xce\xa7\xf4\\\xd7eA\xd8>\x02\xb2\xc7$\x9f\xc6@\xf5\x94\x9eK\xe9\xb9\x18\xd8\x9d\xd2s\x85-\x81\xd6)=\xd7\xe6)\x08\x9f\xa7B\xe7\xce\xb9\x81\xd2s\x0f\x8d\xd2s\x13 \xef0\xdc\x1d\x0buG\xc0\xdc\xd1\x10w\x1c\xbcM\xe9\xb9q\x106\xa5\xe7\x0e\xf6\x87L\xcf\xf5\x9dM>\x82\xa6\xa7_\x989\x0bN>&gX\xa4\x02\x1f\x0b5\x84\xb6\xac\xdf\xb7\xb5\xd8TR\xa8\x9aB]\x07\xa4Rl\x05]\xcd\xf6L\x04\xf4\xc8\xbb\xbd\x1f}<\x85w|\xc2kj\xf1\xad\xd8\\^v\xac\xe7\x9f_\xd3\xe2\x82\xb1\x95=\x83\x96\xcb\xfa\x85|\x96\xf1\xb7\xf1\xb8\xf5\xcb\xa2\x9a Z\x8eM\x02\xeb\xc6\x80%\x88\xb2|\xae8\xce>\xcaUeD(\xeb\xfd\x96\xb5\xe5Z\xffM\xf4\xb6uQ\xf3\xfa\xc8]\x91kV\xeb\xc0\xef\xeba#j\xb6\xfc<\x17\xde*\xd6uc\x08\xe5\xd6\xcd\xbe\xe3\xa1\xfe\xc2\"\xe39u\x7f\xe4\xe0\xce\x10aKx\xabr[b\xa3+\xae\x1dX\x08\x0e\xa0XnR\x9a-Xa\xae\xfbj\x06^\xca- \xf3O\xe7\x97P\xb1\xcb^\xed~\x95\xbd\x1c\x0e\xf5\xa2Q\xec\xaf\xca\x0e\"\x1f\xc2\xe3|q\x0f\xacX_C\xb1\xdb}\xc5(\x9ap\xf7x\xbf/\x96\xc6\x1d<\xa2\xa2\x856\xd0\xb7{\x06\xfc\x1fe\xbd)\xd7E\xcf\x06\xa4EEP\\\xa8\x1a\x92\xe9\xae\xac\xd7\xd5~3[\x12\x16\xf2)\x03\xd45{c\x0285v`\xf9\xd0mP>f\x83\xcb\xe7\xf3n\xf6\xb6fU\x10\xab\xe8\x96u\n\xe1\x16\xddk\xec\x8f\xbc\xcb\x9d\xaa\xdeT^\xd5M;\xdb\xbf\xd6\xbdq\xfa\x08\x19\x99\xa5/\xf6P\xce\xdb%\xf4my\xb5-\xbba\xed\xc4\xa9\xef\xb5\xaa\xab\xe7\xafT\xbfN\x89\x9c\x9d\xf8;\xcb\xc4!\x7f\x18\xab\x05\xf8\xd7\xb4\x1b\xd6>T,\xdc\n\x14O\xe3$(~\x93\n\x0b\x7fW\x82\x0f\x0e\x15\n+\xcdB\xebPL8NP\xf4P\xc0Uy\xc3j\x90\xae]\x92\x146\x9fOt\x94H\x94B[\xff\x15\xb8\x15$J\xe1\xb1X6\x88\xd7\x99\x1d\x12\xf0\xec\x90\xe5f\x85@\x98\x19\x02 \xec\x10\x7f\x05H\x94\"\x951\x02\xd1\xac\x11\xaf+\x12\xa5 Q\x8aTf \xa4\xb1K \x17\xc3\x04\x92X&\xfe\xee@\xa2\x14q\xac\x13\x88d\x9e@\x1a\xfb$4\x04\xe3\x18(\x90\x97\x85\x02\x11L\x14\x88g\xa3@\x02#\x051d\x92(\x85\xb4h\xb6\x8a\xd7\x1b\x89R\x90(\xc5\xcc\xf2\xb0Z\x00O\xce\x00\x0c\xbb\x05\xe2\x18.\x10\x82\xa4\x13\x99.\x80\xf0K\xa2\x14\x1eKb\xc2\x00\x89R(Kb\xc9@\x14S\x06H\x94\x02\xc3\xa0\x81c\xb0h\x00SF\x12\xa5\xc8\xcb\xb0\x81 \xcb\x06R\x996No$J\x81c\xe68\xbd\x91(\x05\x92\xb1\x03\xd1\xac\x1d Q\n\xab\xa50z\x9c\xceH\x94B\x1b\x89RX\x8cD)H\x94\xc2zApG\x89D)\xfe@\xa2\x146*\x02\xc9R\x0c\xe6iL$Ka\xb9\x9dd)\"\x08\x08$KA\xb2\x14\xa3e%\x16\xc4\x90\n\xa2\x08\x05$K\xb1\x94<\x90@\x1c\xc8B\x1a\x88'\x0c\x90,\xc5\x12\x82@\x0c9 \x81\x18@\xb2\x14$KA\xb2\x14X`?+\xa8\x9f\x02\xe8\x93,\x85\xeb\xb2 p\x1f\x01\xdacD\x17b\xc0z\x92\xa5 Y\n\x0c\xf0N\xb2\x14\xc2\x96\x80\xeb$Ka\xf3\x14\x04\xd0S\xc1s\xe7\xdc@\xb2\x14\x87F\xb2\x14 \xa0w\x18\xf0\x8e\x05\xbb#\x80\xeeh\x90;\x0e\xe0&Y\x8a8\x10\x9bd)\x06#Y\ne:\xa3\xf9\xdaL\x7f\x05\x95<<\xdb\xca\x1es\x87\xfbv\x1f\x91\x1f\x1fL\x8f'!\x0c\x08G\x91\x840\x8e\x18\xdc\xb0\x84\x03 a\xe4\x88\" a\x90\x10\x86\xb0?\x80\x10\x86\xd6\xc1\xd8\x94\xbc\xc3\\\xecy\x1c\x06\x11\x8cu\xb3\xdd\xee\xeb\xb2\xbf_\xed\x9aF\x81\xf56\xed\x8bW\xfa\xba\xf7MS\x0d\x8a\x17\x12\x91T\xbf\x00\xf7\x00\xeb\xa6\xac;\xab\xd4\xc5\xc4\xc5\x13]\xfbG*p1F\xc3\xb4\xfe+\x10)6\xacn\xb6\xc9\x10B\xb1\xe5\x9d>\xf1v\xcc\x06\xfek\xb6~\xd5\x94\x06\xf5\x0d\xfa\xe6\x0b\xab\xd5\xfe\xbb,\xbd\x1e\xa1\xf8\x17\x00\xff\xd3\xba\xdc\x16v.\xbb,\xaek'\xfa\xed\xbbOo^\x88oiy\x9d\xfa(-\x05n\xf0\x9a\xad\xd5r}\xc0j\xcc5\xbb\xd5\xa1\xdc\xc2\xb0?\xac+\xaf\xea\xa2\xdf\xb7\xac\x1b\xfa(\x9f\xbc\xae\x9a\xabF,\x90\x0f\xbfs\xa7\xac@\xde\x19tP\xa6}\xe4i7\xed%\x96\xbb\x0f\x82-\x18U\x93\x1e\x94\xce\xcb\x9av\xc4\xd9%D\xce\x92F\xe4,\xdf\xb0r\x04\\s>\x81\xfdo5Q>\xf5\xce_\x1bV\xb1+\xa1\x18t\xf6\xdb\xf0\xef\x95\xd2\xed\xf9\xfbY\xcbn\x8bv\xd3yD\x9d\x8c\x0f\xbb\xd7\xf2\xfe\xb2\xa9?\xf15\xd2\x07y\xefd\xb2\x93\x8b'\xe5\x15\x8a\xf5\xba\xdd\xcba\xa1\x10\xab\xda\xc1\xd5\xc0,\xb6\xce\x84\xf6\x07\xa9+\x1f\xed\x94\xa8j\xfd8Z\xf0\x10\xe0\xd5R\x8d&Y-\xff\xed\xf6\xbaIs\xd6PZ\xa0\x9e\xd2B\xb5\x95\xe6] H\x0b\xd6V\x9a\x7fU \x0d\xe5\n\xb3B\x90\x16\xbdN\xf0\x06B\xac \x02\xab\x05iIk\x06\x8f?\xb5\x03\xe8[9H\x8b_?\xf8\xb7\x9c\xb4\x8d\x83\xc7k=\xde\xc9\x01d\xdc\x0c\x95c\xd5\xd8\xa8\xac~\x9aK\x11v\xe5\xe2i\xa7\xff\xcd_\x80\xec\x13\x81\x15\x8e\x1e\x05\x877ZUj!b\x19\x1d\x87\x07\xcd\x9d:\xb8\xfb_cL\xa1\x95\xf6`I\xbd\xe6+\xad\xb4\xe5\x9c\xac\xa3\"\xc8;\xfb\xadh\xde\xd3\x06\xe9Yn\x1ft5\xb1\xf8\xb0O\xd3\xe9\xebn\xc7\xfa\x82V\xdc\xd2h\xc5\xfd\xc0+n\x1f\x0es\xb0\x96v\xb5\xc4\x83\x0b'=q\xf8UKiB\xdf\xa8,\xaf\xcb\xe6`ol\x01\xces\xcc\xaf\x87\xb3\xdf\x0eV\x9b>\x99\xd8\xb1\x9bG~A\x8c\x13p\xe0\xab\x81>\x18\x0e\x7f\x0eu@\x9a\xdc\x07\xfbG\x9a\xdc\xe7\x8b\xcc\xd0\x02\xd3\xe8<\x16o\xa1y>\xe3\x14O\xb3\xfb\xd4hv\xa7\xd9=yv\x1fK~0\x13\xbbJ~p\xe1\xa4\xe4\xc3\xaf\xc7.\xf9Q\xd6%\xa3Lzx\x19\xd2\xb4C\x0e\xf6t!2:\x99m\x05\xf8\x16\x1f\xa6\xb7':\x1a\x8ft\xf9q$1yG?\x0cO\xf2F\xc0\xadM\xb13_\x02\x9fz\xf4\x94f\xed\xf5\x97\xf3\xad\x14\xfcDg\xbe\xc4\xc5S\xdd\xa4}\xd1d'\x8d&;\x9a\xec\x1e\xd7\x94\xc1\xbf#6mq\xab\xff\x82\x998\xfe\xaa\xeey\xa9\xea\xabg\x0f\xedk\x08D\xcc\xfc1s\xfaD\xc7\xe7\x91N\"\xf3\xb8Eu\xdbY\x99\xe7\xbe\x12\x9bW\xdcP?\x8bw\x86\xf1~\xde,h\xd0\x97F\x83>\x0d\xfa\xd9\x07}\xef\x98/\x02\xd0\xb9G\xf2\xf7\xe2\xf7a\xdc\x96\x97\x0f\xc9B\x86G\xd86\x9b}\xc5\xec#\xb7q\x9dt\xf8DW\xef\x91\x8e\xd9fXL\x9b\xf2\xb3d0\xcc\x97=\xb6'\x1d\xa3iXF\xf3v&\x7fW\x1a \x97}q\xe7\xeek\x9e\xdepQtl5(\xea\xf9\xe8\x0b!GM\xbd\xef\xb2x\x9a\xccl+V\x17\x17\x15\xf3z:d\xb5\x8e\xe6\xe2\xfaB\xf0+Kt\x1a\xd9FQ\xf3\x9c\x9a\xd9T7\xf9\xf0\xfe\xd5\xcc\x1f\xcdj4\xab=\xf8\xac\x96\xb6\xfc\x1fw\x11lh\x95\xa0y\x97]W6\xb5g\xe1?|\xc8\xbf\x1a\xae\x1e\xe6\x8eb\xbd\xdeo\xf7\x95\xd0\x94\x18\x9d\x89\x8eT\x04\xd8n\x16\xb7\xea\xb2G;\x83\x8c5\x0c\xcc\"F(\xcc\x99D\xfe\xb9TbP\xe3fc\xcb\xd6\xac\xbca\x16f\xcd\xc2\x19\xc5UX\x08t,\x08\x11\xd8\x02\x1d\x0c\x82\xa5\x93\x16\xa4\xae!\xfaJ\x08\x85\x03\x9c\x9b\xf0F\x9d\xb4hD\xceSy,]- \x99szCR\xd5\xe2\x10:\x97\x1e\xac\x18\xa6,]\x1d5\x11\xdb|\x9d\xd9\x86\xa3\xf1[s\xb8\x85&\xe5\xe9o4)\x1faR\xf6}j\xfe1 \xa9\xc0\x02\xa3\xd9\xf7]_\x88\xbc\xb7U\x98t?t\xedw\xe3ms\xb2\x8cF\xf9\xc5\xe6\xe2Ap\xfc+\x8dC\xb7Ot\x9c\x1e\xe9\x8a#\xc0\x95IZ\x188}\x02\xad\n\xe6F\xab\x82\x99\xc5\xad\n\x00\x15B_\xb77\xc8\xeb\xc6Xbq\xf2l_?\xd7\xfb\x0d\xf5\xb7\xba\x91\xdb*2\xfb8\x81R,\x03\xea\xae\xbca2\xd1\xb7X\x7f9\x91\xb2\xa7\x1dt\"|\xd0\x15ui=?r}\xcd\xd6_\xe2S\xf6 \xb8\x0f\x82\xf4q\x10=\x1a\xa0\x8f\x84\xe7c\xc0y'4\xef.\x0d\x16\"\xc5\xc1\xf2\x91\xa0|\x04$o\xadZ^8\xde\xd5)\x16@\xf1\xd6}\n'\x10\x9f\x06\xc3\xfb \xf7\xfc\x80\xfb\xf2\x96\x84\x06\xdb\xb1P\xfbt\x8aDd|F\xa5{\xaa\x04\xcf\x19p\xa0\x8d\xce\xd6\x90F\xc9\x9d\x94\xdc9\x1a%wRr\xe7h)X\x8b\xd3\x19%w\x1eZ&\xdce\x19\xf2\x92\x80\xbddA_\xb2\xe3/A\x04\xe6\x08\x18\xcc\xb1P\x98#\xe001HL*\x16\xe3\x1d\xc3ChLF<\x06\x8b\xc8Db2\xd9Q\x990.\xb3\x18\x99\xa1\xe4\xce`\xc9\xd2\x90\x1a\xab+J\xeeL\xc1lB\xa8M\x1e\xdc\x06 F\x04\xb1\x9b\x08\xf4&\x98d\x17\x89\xe0Pr'%wb\xb0\x9d`Tc\xf1\x1d<\xc2C\xc9\x9d3\xcb\x8c\xf7Pr\xa7i\xa9\xe8\x8f\xd5\x19%wF`AK\xd0 \xab;J\xee\xb4\xde\x80\xc2\x8f(\xb93\x1f\x9aD\xc9\x9d\x8b\xb1\xa6\x88\xfbF]\x7f8O9\x8b A\xbcK\x17\x81\xb5e\xb3I\xe4\xe2N\xea\xf43\xab\xaf\xfa\xa1)K\xf7 \xdd\xcf\x0b\xbea\xbb\xa6+{\\\xac\xa6\x17#\x82\xa5n\xc8\x1a\xadmY\xaf\x94__\xac\xec\x80%\xf8@K\x08\x15LZ\x08\xbc\x04\x11\xb6\xba\xd9\xfa\xbe\xca\x82/\x94[\xb1m\xf6\xb5\xa3\x96\xd2\x10n0\x1bi\xdc^5\xe5(.^@\xdf|a\xb5\xda\x08\x93\xd5\xd1\x99\xa7|*.jU8\xdf\x9e\xeb\xdbw\x9f\xde\xbc\x10\xabWy\xadZ\x06\x96b\xa7\xee\xbc\xee\xd5\x049\xec\x8ev^\x10@\xcd\x9e\xf2\xc3\xc1\xfd\xd0\xae\xbc\xaa\x8b~\xdf\xb2n\x18\x92\xf9\xa7\xd2Us\xd5\x88\xa9\xc9\xbe\xc2\x9c\x04\xe9/e]n\xf7[\xddz\xc5\xf7B!^{\xd3\x15\x15o\xd7\xac\xe6\x9f#\xde\x8e\xc5m[\xdc\xad\x86>\x93\xadw\xbb\x89\xf4\xc5\x9d(\xb7|\x94(\xf6K\x1e2\xbe\x02\xe1\x1ds\xec\x90\xc0_\xe3P#\xd7W\xe9y]\xf6eQ\xa9}h\x98\xb3\x0c\x06\xdb6u\x7f}\xb0\x87\xdd\x17Uu\x8f\x1bW\xccK\x11\xa3\x8a\xb8<\xeb\x98\xf2\xb7}\xd3\xee\x1d\xfd5\xf8r\x82\xdb\xec\xc8\xb7\xa7Z\xdd\x8e\xb5k\xbe&\xbd\x92\xdb\xc9\"\x7f\xbb\xeb\x8b/L Q\xc3$$\xe92.lP\xa5\xa3\x0b\xd4\xca\xf5\xda\xd6M\xdd\x95\x1b\xc6;\x88\xd8\xd4\xb75\x83\xfe\xbae\x1do?\x8f$6\xbc\xc5\xb6\xfa\xab\xf5_X'\"\xd1\xc9\xdcx\xa3\x7f\xee\x8a\xce\x81\xa9\x00\xbcV\xfb \xaaU\xff\xd3\xe9\xffg\xcd\x8ba}\xb3zd\xb5\x97\xdf\xf8\xcd%\xfc\xc2T\x1b\x10}\xfa\x93h\"\xf2?\xc5b\xcd\x03\xe7\x9bAr\xb7\x0c^y\xb69\x9d\x87\xea\xbb\xb3\x7f\x9e\x86\n\xc1\xfc\x92\x0b\xc6\x18\xde\x97Z\xa9~x\xffj\xe6\x8fX_\xc4\xfa\xca\xb5\xd8!\xd6\x17\xb1\xbe\xecF\xac/a\xc4\xfa:4b}\x11\xeb\xcbe\xc4\xfa\"\xd6\x970b}\x11\xeb\x8bX_\xc4\xfa\x92F\xac/b}\x11\xeb\x8bX_.#\xd6\x17\xb1\xbe\x88\xf5E\xac/\xc3r0p\x88\xf5%\x8cX_\x7f\x04\xd6\x97\xc1\x802\xfc\xf8\xbe$\x8d;\x06\xb8Y\xbe6\x03p\xee\x1buT\xf8e\xd3\x9ehiz\xa9\"?q\xf6\x8d\xa4\x01|s2\x0d\xef7\x02\xa5\xe6?\xf0\x0f\xado\x14\xf0\xfeMF\x16\x99\x8b.fe\x8b)\xdcO\xdd`e\x88\xe9K\xa6$\xb1\xe1\xaf\x83\xe6\xf3Uy\xc3j\xe8\xfa\xa2\xdfwV\x9e\xd8\xe0\xe9\x89\xae\xd4#\xe5\x89\xcd\xa2bZ\xff\x15\xf0/]\x9cU\xe9\x00\x9c\xa3\xf6\x7f<\x87\xcd\x0bD\xc0M,\nT\x03\x10U\x01\x04\x9c\x07\xb8\xfa\x00r[H[,\xb4\xe7uf\xdf\xdf\xf1|\xee\xe4\x86\xf8 \x0c\xf3A\x02\xd4\xe7\xaf\x80\x16\xd6\xc6\xc0}\x90\x0b\xf2\x83D\xd8\xcf\xeb\x90\x07\x17\x0d\xfd\xc1r\xf8\x0f\xa2!@\xaf\xabQ|\x1b\x0f\x03Bn(\x10\"\xe1@\x88\x85\x04\xfd-{\x80\x0b\xb1\xb0 \xe4\x86\x06\x01\x07\x0fBN\x88\x10\x16\xc3\x84\x90\x06\x15B.\xb8\x10\x92 C\x7fw\xd0K\x90P\xbf9\nt\x08G\x84\x0f\xe18\x10\"D\xc2\x88\x90\x06%\x86\x86`\x1c\x9c\x08y!E\x88\x80\x15!\x1eZ\x84\x04x\x111d~\x8b\x80\x18!\x07\xcc\x08!\xa8\x11\xf0\xcb3\x04\xe4\x08\x91\xab\xb8h\xe8\xd1\xebM\xc0\x92\x08\xf8\x11\"J\x99\x11\x86\x84((\x12r\xc3\x91\x90\x08I\xfa\xdbU\x17\x86%!\x1d\x9at\xfa\xe3O\x0c\xc1\x93\x90\x0d\xa2\x04<\xd2\x06\x18\xa8\x12\xe2\xe0J\x08\xe1\x0b\x89\xb0% \xfcz\xb603A\x98\x90\x14\\<\x94 \x88Z&@\x9a\x90\nk\x82?\xaa\xf9\xe0M\xc0C\x9c\x80\x849\x01\x0du\x02.\xea\xf1\x90'D\xc1\x9e\xe0\x85>!\x17\xfc \xb1\x10(,\x84A\x01\x11\xde\x088\x14\x8e\x01\x89\x02\xa6\x8c\x9e\x9e\x90\x0f\x1e\x05\x0cD\n\x0b`R\xa7C~\xa1\x0f*\x85\xdcp)\x04!SH\x85M\x9d\xde\xe47\xaa\xffs\x1d\x01\x9f\x82\x17\xe5\x01/\x8c\nIP\xaa\xd3\x95\x17b\x85T\x98\xd5\xe9\xcd#\xc1.-\x1f\xdc\n(\xc8\x15\x12`W\x88\x83^!\x05~\x85h\x08\x16\x02\xb3m\x00\x16\x83\x08h\x0c\x0b\xc7B\n$\x0b\xb1\xb0,\xf8+\x9e\x02\xcf:\x9d\x19\xe0'\xb6\xcb\xe0`Zo\x87\xa8\xaf\xfcP-\xe4\x85k!\x04\xd9\x82\x1f\xb6u\xde\x93\n\xe7B\xc6\xb6\x1b\x01\xebB\x14\xb4\x0b\x07B\xf2\xda$\xb4\xb8\x00\x02c\xb5+\x99\x17\x04R\xfa\xfe\xc3\xbb\xf7\xef>\xbe\xfcy\xf5\xf1\xd3\xcbO\x9f?\xae>\xbf\xfd\xf8\xfe\xcd\xab\xf3\x9f\xce\xdf\xbc\x8e\xb8\xeb\xf5\x9b\xf7\xef>\x9e\x7fZ\xbd\x7f\xf3\xe1\xfc]\xcc\x8d\xbf\xbc\xfbt\xfe\xf6O\xf1\xf7\xbd\x7f\xf9\xf1cT ?\xbc\xf9\x9fo^}\x8a\xba\xe5\xa7\x97\xe7?;o\xd0\x19\x97 \x01\xc4\xee\xaah\xec\xf8\xa3h\x03\xe2M\x8ao\x7f\xd99\xd5^\x90\xf8\x8d \x86\xb2{\xe8\x19\xb3\xdb\xddM\xd0\xdb\x14\xbc\xd5\x9c\xa4\xa9\xeb\x15\xa4x\xe4\xae\x93 \xdb\x06:\x8ez\xf2\xb49\x1d>|\xfa\xbb\xa1\xd40\xe4\xf4\xca\x87\xc2f/\xa6AY0\xc1:p\xc7\xc8)]\xa0,\xd0x\x0fK9\xf9\x19WH\xc9\x9f\xc8YF\xd9Q\x0e\x0b'\xff\xee)\x15oPF\x8e4\x9f\x87\xae=\xc0\xd0\xae\xe8:\x16W4\xdd%\x0f\x0b\xa7\x7f\xc9W\xbc\x0b\xc6jh\xd9\xbf\x89\x04\xe8\xa8R\xcaQ\xe0\xb0\x8c\xf2\xef\xf9JxY\x94\x95\xabh\x97e]T+)\x0d!\xc1\xa1#\xf3\x15\x9e\xde\xb3\xee\xe9\xe2\xdd\xf0\xe2\xa2\xe3+\xee\xc5~\x9e\xd6\xcd\xf2\xc2\xd4\xcd\x8a\x7fA\xacnX\xdf,t\x86\x1d\xc0?\xf1\x17\xf6A\xcaO\x8c\xed\xa4\xeb\x8bzS\xb4\x1b\xa9\xdd\xa1\x14U\xae\x9a\x1b\xd6\xd6\xc5\xe1\x19/\xa3\xf9%J\xba\xfd\xc5\xb6\xecW}\xb9\xcd\x910\xb5)z\xf6\x9c\xfb\xb2^\xa7u\\X\xbdy\x98\x07\n\xe5\x0f\xbf\xd2\x91\x9f\xa6$\xcd\xabv\x84\xea;\xb8\xde\x83\xd0\xde\xf6t\xe6\xbd\x91\xe6\xed\xc2J\xcd\x10\xad\xf9(\xb4\x12\xce\\\xc3\xc7m\xd1A\xc7\xfa\x13(\xfbN3\x84:\xd8\xd7\xb2\x01n$ \xe2\xb6\xec\xa6\xef\x14#\x11\xa4Y\xb8(\x95 \x9b\x87\xb3\x91\xbb\xfc\xe1\xfd\xaby\x05H7\x88t\x83B\xb3\x04f\x06\x80\x04r\xb1l\xba\xa4\x1b\x84 \x12g!\x11\xa7\x10\x88I7(#Y8\x86(\x1cE\x12&\xdd\xa0\xa5\x84\xe0\x042p\x16\"p< \x98t\x83\x96\x90~c\x08\xbf d_\xd2\x0d\"\xdd \xd2\x0d\xc2\x92u\xb3\x12uSH\xba\xa4\x1b\xe4\xba,H\xc6\x8d \xe2bTqb\x08\xb8\xa4\x1bD\xbaA\x182-\xe9\x06 [B\x98%\xdd \x9b\xa7 )6\x95\x10\xeb\x9c\x1bH7\xe8\xd0H7(\x81\xc8\x1a&\xb1\xc6\x12X#\xc8\xab\xd1\xc4\xd58\xd2*\xe9\x06\xc5\x11SI7h0\xd2\x0dR6\xe8\x06i\xb9\x15\xc9]2|M\xbe&g0\xe4\xec\xae \xfe:\x92\xa0\x04\x1a\xabA\xa9\xf9:\xe9aY\x87_\x8fihe\xee}%F!\xb2,\xc7d\x0eZ\xd9\x82\x0f\xcf\x10\xf4\xb1\x02\x1f\x96 x\xc8\xfe+\xeb\x17\x12\x907\xfe6Jb]\x16U\x17\xd0\xc4\x02+\xfb\x1b\xcf\xf8\x0eu\x96\xc0\xc5nf7\x8a\xcd\x8ddp#X\xdbQLm= \xde4\xfdd\xbfk2\x0c\x8a\x1f'\xe3\x8f\xfcK\xb1\xd9\xb4\xac\xeb4s\xb4\x1c\x1b\xd0\x96 \xca\xf2\xb9\xe28\xdb\xfcU\x95\x11\xa1\x14\xb9\x04\xe5Z\xffM\x8cIJ\xd7O\xee\xbe_\xb3Z\x07~_\x0f\x80\xc7l\xfa>\x17\xde*\xde\xe6\x87\x10J\x88`\xdf\xf1P\x7fa\x91\xf1\x9c\xba?rpg\x9c#Kx\xabr[b\xa3+\xae\xd5t\x1d\x17\x15I\x82af\x0b\x96\xdf\x9c\xfc\xd7\x89\xb7\x9d\xdc\xfa6\xfft~ \x15\xbb\xec\x15\xcaR\xf6r\xd9\xadW>\x02\xc7\x93\x1dD>\x84\xc7\xf9\xe2\x1eX\xb1\xbe\x86b\xb7\xfb\x8aQ4 U\xe3\xfd\xbeX\x1aw\xf0\x88\x8a\x16\xda\x08\x19H\xe0\xff(\xebM\xb9.z6 \xfa\xfa\x8c?~\xa1jH\xa6\xbb\xb2^W\xfb\xcdl\xeb\xa1\x90O\x19(\x15\xb37&\x08:\x06\xd2'\x8e\xd539\x85\x13g\x9f\xcf\xe7+\xdbY\x15\xc4nM\xcb:\xc5\xa4\x12\xddk\xec\x8f\xbc\xcb\x9d\xaa\xdeT^\xd5M;\xc3Iuo\x9c>BFf\xe9\x8b\xbdh\x9a\x8aMX\xbc\xc3\xe03\xfb\xc5\xf2j[v\xc3\xda\x89S\xdfkUW\xcf_\xa9~\x9d\x92\xa1q\xe2\xef,\x13\x87\xfca\xac\x16$\x93\xa6\xdd\xb0\xf6\xa1b\x11w:\xb5\x9eS\xcf~\xdb\x8d\xaa\x96\xde\x03\xaa\xf5RQ\xab\x8f\xeeF\xc2\xad\xe0\x9a\x8d\xea_\xfa\xd2\xf3\xd7\xba\xeeV\xf9\xd1'\xba\xfe\x8f\\}\xd4E\xa2K\xe2\xe6\x1a\xd1>\x16;\xd5\xab\x1e\xea-:\x04\x8b\x0f\x08:\x1f\xa2\x0e\x80\x84\x84\xa5%\x91\xfa<\xfe\xa2\xf4B\xb3\x12\xfb\x82\xd4\xbe\xdc\xe4><\xbd/\x13\xc1/\x8d\xe2\xe7q\x17\xa9\x10\xba\x90\xe6\x97\x9b\xe8\x17I\xf5\xcbL\xf6\x8b\xa3\xfbE\x12\xfe|m8A\x134+\xe9\x0fE\xfb\xcbH\xfc[J\xfdK\"\xffe\xa2\xff\xa5\x10\x00=\xce\xd0\x1a\xa0G \x01\x1e\x8f\x06x\x14\"`\x1c\x150;\x19\x10K\x07\xccJ\x08\xc4S\x02\xa3I\x81\xf1\xb4\xc0\xe0P\x88S\xfb\\L\x0d\x0c*}\xa2\x16T\x08\x82`\xcc\xaa+\x9a$\xe8\x9b\x04\xd1\xfa\x9e\xb8\xf2e\xa4\n\xc6\x90\x053\xd3\x05\xd3\x08\x83\xbe\x16\x84\xd2\xf4L$\x0d:\xbc\xf5(=\xcf<\xc4A4\xfb\x0dA\x1e\x8c\xa2\x0f\x86\xe4\xf0R(\x84!\x9fN*A&\"a|0\xf1d\xc2P\xdd\x12\x08\x85\x89\x94B\x1f%#\x1b\xad\x10M,\xc4Q\x0b\xb1\xe4BD\x94\xe3 \x861\x14C\xbfBg\x16\x9aa$\xd1p\x19\xd50\x14\xd0\x08\xba\xe1\x11\x08\x87\xc1\xd29[z>\xda!\x82x\x98N=t\xb8\xeb\x83J\x9cY\xe9\x87!\x02b\"\x05\xd1\xe1+\xac\xc0\x89\xa0!\xfa\xd57}\xda\x9b\xb9\xc9\x88\xd9\xe9\x88nBbNJ\"\x86\x94\x18OK\x8c\"&&P\x13c\xc9\x89\x01=M\x7f\xe9\xb0t1,E1\x81\xa4\x18IS\xf4T7\x85\xaa\xe8p\x85P\xd0L\xa1+z\x9a|X=3#e1\xa8\x9cy\x0c\xdab\xae\xb6\x18A]\x8c!/\xdau1}\xaa\x98\xc1\xefw\x9f\"&\x9e\x1d\xe5\xbb\x07\xa5\x86\x19\xc3\x98\xf2\xdd\xe5U\xc2D\xb2\xa8|7xT0\xa3\x98U\xd3\x1b1;\x0f\xb9\xf4/G\x89!W3{X\x16\xaa\xef\xb9\x0f\xc5G\x1d-\xa0)\xf9\x958\xaa\xa3E\x97\xef\x98\xbc\xd5\xd1\x02z\x97\x0f\xcfe\x1d\x0d\xa7u\xf9\xb0\xfc\xd6\xd1\xdc:\x97X\x95\xcb~9\xae\x1e\xd0\xb7\x0c\xce!\x08mK\x84\x0f\xbf\xae%\xc2\x01N\xd32\xe8\x087\x1c\xe7T\xb3\x1c\x87\xe4\xc3\xdf\x82J\x96\xc1\xfa\xe0t\xee0\x1a\x96Y\x1e\x85P\xaf\xec=RQ\x10R\xae\x0c\xf6\x07L\x8f@hV\x06\x83\x01(\xbdJ\x84\x1b\\\x83\x8cV\xaaD\xe8Q\xe6U\xa3DjQ\xa6(Q\"u(\x83\xc1\xc64`\x94\x02e\x86'\x85_{>\xe5I\xfb\x08\x14!\xd1\x87R\xe8\x9bi\xf2\xcd\xfc}x\xff\x8a\x14\xf9H\x91/\xdbp\x98D\xde#E>\x0ce/\x0ba/\x85\xaeG\x8a|\x19Iz1\x14\xbd(\x82\x1e)\xf2-\xa5\xe5%\x90\xf2\xb2P\xf2\xe2 y\xa4\xc8\xb7\x84\x88\x17C\xc3\xcbL\xc2\xc3Q\xf02\x12\xf0\xb0\xf4;\xcb\xce:)\xf2M\x0dA\xb8\xc3\xae\x92\xa2\xc9v\xa4\xc8\x87\xa2\xd8\xa5\x10\xecH\x91\xcfuY\x90T\x17A\xa9\xc3\xe8\xcd\xc5\xd0\xe9H\x91\x8f\x14\xf90\xa49R\xe4\x13\xb6\x84&G\x8a|6OAb\\*-\xce97\x90\"\xdf\xa1\x91\"_\x02\xfd-L~\x8b\xa5\xbeE\x10\xdf\xa2ioq\xa47R\xe4\x8b\xa3\xb9\x91\"\xdf`\xc7\xa0\xb6\xe5hs\x11\xb46<\xa9-J\x91\xaf4G\xee\xe9\xc9g\xe3%\x13\x82/x\xd2\xe8\xccP\xc4\x96Z4\x13#X\xf8\xdf\xd1\x99\xa1\x98 \xaaah\x8c\xa0\xe6\xaa\xe8\x1e \x9f\xc3\xff\xbc\x96\xb2UZk\xd0q\x98\xa3\xb8\xb2/o\x1c\xab{\x17\xff\x8aN\xdd\x14F\xa7n\xfe\xa1N\xdd\xd4\x8b\x80\x18J\xcfl\xe1\xa0\x8d(=\xd2\x88\xd2C\x94\x9e\xd1\x88\xd2C\x94\x9e\xd1\x88\xd2\xd3\x13\xa5\xc7nD\xe9\xd1F\x94\x1e\xa2\xf4\x10\xa5\x07\xb9J\"J\xcf`D\xe91\x8d(=D\xe9\xb1\x18Qz\xac\xd7\x10\xa5\x87(=\x0e#J\x0fQz\x88\xd2C\x94\x1e\xc3r\xd0+\x88\xd2#\x8c(=D\xe9y\xbc\x94\x1e:\xbe-\xf5l,:\xbe\xed\x88\xc1\x0d\xb7Q:\xbe-G\x14\xe9\xf86:\xbeM\x18\x1d\xdff\xe3\xa8\x9e\xfd6\x90\x14}g\xba\x19\xb1\xd4d/\xcd\\U\x1a\xc1\xe0\x04\x83\x8fF0xO0\xb8\xdd\x08\x06\xd7F08\xc1\xe0\x04\x83#WI\x04\x83\x0fF0\xb8i\x04\x83\x13\x0cn1\x82\xc1\xad\xd7\x10\x0cN0\xb8\xc3\x08\x06'\x18\x9c`p\x82\xc1\x0d\xcb\x01I\x12\x0c.\x8c`p\x82\xc1\x1f/\x0c\x9e\x05V\xbeiz\xe6;W\xea\x17\xfe\xfb\x00(\x8b\xab%\x98|U\xde\xb0\xfa\xa0\xbe\x134Y\xdc\xfbD\xd7\xf8\x91\xe2\xc8\xa2J\x8f\x03\xbf\n&\xeaG\xed\xdfx\x0e3\xe1uN?BJn\xc0\x07\x92\xee\x1f\xc7\x19R\xb2\xa8\xbe+\x10\xf5\xd5\xc6\xea}\xe0<*\xde\x0b\x7fy\xf7\xe9\xcd\xea\xdd\xfbO\xe7\xef\xde\xae>\xbf\xfd\xf8\xfe\xcd\xab\xf3\x9f\xce\xdf\xbc\x8e\xba\xef_\xde|\x8c\xba\xfe\xe5\x8f\x1f?\xbd<\x7f\x1bu\xcf\xdbw\x91\x97\xaf\xfez\xfe\xe9\xcf\xab_\xde|\xf2\xdf\xa8Q\xf5\xa4@`\xb6\xefF\xe3\xe3\xcb;q\xb1x7b\xfbI\x8e\xcbr\xbb\x917s\xddZ%Q!\xe0P\x8ei#\x99\xc1\x18\xde\x02w\xba_\xbc3\x10\x06\xa7\xa2n\x9e7;\xb3\xb8\x9e/>\xdb\xe3\xfe\xe5\xcd\xc7\x17\xf3?\x18\xee\xef\xd5\xc8\x9d\xe6\\5\xae\x17\xb6?ND\x14$ f\xc1\x93\xde\xbe{1\xfb\xefI\x8c\x16y\x1e[\xef\xfc\x19\xe3/\xd3\xa7\x89\xdd\xdc\x1b\xd6\xa3\x9f{\xcb\xca\xab\xeb\x87=f\xee\xaf\xe2\x91lc\xf4\x84\xb1\x0e\xfb\xba\x14\xa0\xad(>o\xfe\xfc\x1f\x1eg\xdd\xae*\xfb\xd4Mu^\x02\xe3\xd92d\xf5\x84\x1a\x14\xeaM/\xa5\x93uSwe\xa7\x0f\xad\x1c8k\xe7\xafOd\xd7\xe6s\xd7\x89\xdeAp\xd7\xc9\xf5\xbe&\x95\x91\xeb\x19}`\x16\xf7'W:r\xec8\x00X\xe888at\x1c\xdc\x1f\xea88\xb1\x8c\x8f!\xe0\xc9o\x86\x0f\xef_\xcd\xbc\x11\x01\x8f\x08x\xa1\xd9\x0f3\xd7\x00\x11\xf0\x88\x80\xe7\xbc\x92\x08x\xc2\x88\x80whD\xc0#\x02\x9e\xcb\x88\x80G\x04Rr\x92#N\xa6ywy\xbc\xfb;\xe1\xfd\x93\x83\xc7kD6\xf8\x0e,\xce&oE\x9a\x8f\x8e\xad\xf0\xe0\xf9\x1bCa\xc36Gg\x07\x0d\x89\x0e!\x94F8\xb1o\x93\xf4\x08[\xacQCeY_V\x86\xc6\x9dm\x88<\xd7\x97(\x16\xab\xbd\x8f\x0e\x8e<\xe3\xe3\xe0I\xfd\xf8h\x07\xc6YTL\xcb4 \x8e\xe1r\x8cy\x8exZ\\\xd9\x99.C\xac\xd3\x87\xb4\xf1\xc5\x7fx\xffj\xbeb\xa3\xa1\x8d\x86\xb6\xc7=\xb4\x89\x85\xbag\xe9\xf7^\xfc>\x19\xd4d\xa6\x83H\xee\xb9\x1cz\xe2\xb8\xe0\xb7\x0ej\x7f)\xeb^\xbaR\xbf>\xdaQ\xcd\x0c\x88i\xd3\xef\x13\x19\x95\xa9\x90\xa9\x0e\x80\xfe6\xd96\x9b}\x95W\xc6\x94G{\xb5au\xe3\xa0U\x07\x1b\x8c\x12\xe9\xec\x15\x0c\xb6nJ\xf1a\xcb\xfdZ\xae\x1f\x86\xd7U[\xf4l%q\xedeO\xde\x16w\xe5v\xbf\xd5\xabU\xe9\x92\x7fg\x8fC9\x7f\x96\xb70\xdb\xe2.O!b\x9e\x99x\x96\xf9\xf8\xcc\xb2\xc6=\xf3\xaa)\xaa\xd5ESoXj\xee\x82z\"w\xc4_\xf2\x8e\xb5k>iJ\x9fP\xf4\xcd\xd6\xf6mpQ5\xeb/\xddj\xc7\xda\xd5=+\xd2R\x1b\x10y\x13C\xf1\x86iN>\x98\x17\x13\xf8\x83'\xf7 \xe6p9\xac\xa0&p5e\xab1\x8d\x18\xab4][~\x7fl\xd3\xb5\x9ck\xd0\x13\xb6\xf1 \xaf\xda\xb9\xce'+FJ\xcb0YIz\xb9\x9c\xa9NT~G\xd9w\xd0\xed/\xba]!hf\xe3&\xdd\x17vo\x9d\xdc\xff\x81&v\xcc\xbc>\x99\xd6\xb5\xf8\xf9\x10\xb1\xac\xf3\xb9\x0es\xd2`\x9b*g\xeei\xc3\xce;\x93\xc6a\x1a\x83i\x0c\xb6\xdf\xfe\xd8\xc6`\x1f\\\xa1\xfb\xa8\xab\x01\x0eC\xa59l\xc8\x11\x95/\xadG\xb1\xfeq\xd0\xbdl\x16\xe7/\xcfj\xa8\x0b\xeb\x91\xda\xf8\xc2\xee'E\xe4\xff\xadQ\x94\xa1d\n\x85\xd7u\xcaZ\xca\xd0D\xd7UEw]\xd6W\xe8\xa9n6\xbf\x1d~\x85i\x8f\xeau\xa8\xfb's\xd7Gu\xc9?\xd0\x1c\xe6\xec\xc7iSPyU\xb3\xcdJ\xad\xfeo\xcbz\xd3\xdcFN\x0e\xda\x8ca\xcb\xba\xf4\xdf\x96\xf5J=\x8e\x7fedy\x96\x835\xbbin\xeb\xbe\xdc\xb2\xd5\xbf\x15e\xb5\xda(\x903\xe9Y\xa2\x11\xad.E\x92HS\xaf6\xcd\xfe\xa2b\xa2\x1eI\xee\x82E?x\x9e\xac\xc91\x1e\x16F\x9f\x86\xed\x1f\x85\xc1\x1f\xf4\xb2\x813~!\x079\xdd\xe5l\xaf\xdf\xb2\x1f\xe2:4\xe48_v\xc3\x1fiQ1\xfd\x8d\x16\x15GXTD\xcfw|L)\xeb\xabUY_6\x9ei\xef\xa3\xbc\xec\x9c_5L~\xea^!\x17\">\xea\xaaJ&\x01\x14}\xd3\xeaym:\xf3\x19n\xd4\xef\x8fv\xde\xe3\xb5z\x1c\x0dM\xd18\x92[J\xd7\x17m\xbf\xba\xf6\xa6\xc5\x07\x9d\x84\xa7Z\xf0\x8c\xad\xa3\xfdY\x14\x03\x8a^\x91\xa0\x86\x06#NN\x12\\3\x99\x89\xb9\xe1\x7ff\xf0\xee\x03\xff\xc1\xe9n_\xf3\xd9\xd6\x91vU\xd6\x1bv\xb7\x92BHG\xaexxZ\x93v\xce\x8b\xa4\xaa^vP\xd6\xebV\xe4\xff\xf0!\xbfX_\x03\x9fv\xc5\xe42\x8d\x8b;\xd3O\xee\xb0\xbai[e\x0d\x85\xdc\xee\x14L\xb9mq/S\xe5\xe4\xa2H\xe4\xf9\xb3u\xb3\xdd\x96\xbd\xcc\xc5\xece\x9a\xb1\xcf\xdf\xba\xa9\xffMe\x88\xc8|\x18o\xe6\xe7\xaf\x1f\xc5\x93~\x14\x8b\xbd\xbf\x8a\xf5\xd7\xaf\xc3\xa6G\xcf\xda\xed\xf0u ^\x97M\x88i\xe2\xee/e\xd7iw?\x96\xfdK\xde\x15\x7f\xb5\xb3Ce\xd3X\xed\xeb\xbeL\x1f\xa5\xc7\xf7\xcf\xdb\xe3s\xfe\x82\x16\xb6\x81O\xe5\x96u}\xb1\xdd\x81(\x99j\x0d\xd3\x97^v\xaa\xf4\xb0\x11\x9akNgUy\xc3j\xd6u\xc3\xf2\xd3\x1e\x8a\xbe\xd9^t}S\xbb6\xf8u \x0e5\xaaLsiwM\x0d\x1b\x87\xbf^3\x91s'\xdb\x9d\xce \x13\xd5\xbf.:\xb8`\xac6\xca\x0d\xcf\xbe\x94\x95\xab\xa7sk\xf6Rlcp\xd2\xb1\xfe[\xad{\xd61o\x12\xfcz\xde\xe9d\x97\x10\x99c\xfc{\xf3\xa6Y+J\xb4\xf8\x92\xf6&\x90\xcaD\xc2uS_\x96W\xfb\x96m`[v\x17\xec\xba,n\\\x99\xb3[\xd1\xa4\xf5\xf7\x90\xd0v[p0p\xde\x01\xeb%\xa8\xf2\xc0\x17\xb6\xeb\xc7\x14\xda}]3>\x0b\x17\xed\xbd\x9c\x0e\xa1e\xc5f\xaeSg\xda\xdbFk\xea\xfd\xfaq\xbf}f\xeb\xc7\xdf\xfe\nEu[\xdcw<\xe8E\xe5\x1e\x85&\xa3\xc0+Y@\xeb \x80\xa9\xe6/\xfa\xad\x1b\xcb\x13SOE\xff\xfct\xb6\xe4q\xe5\xc6o\x9b\xba\xec\x9bV\xa9\x81\x96\x0e\xae\xfd\xd0q\xf9G\xd7M\xd9\xdf[vy\xe5l*\x1e\xa6\xbeDPk.m\xbe\x832\x17|\xbe\xd3\xc1\x96t\xb0%\xf6`K@\xf5AShW\xd6jB\xb7/k\xb8\xfa\xf0\xfe\xd5\xf8\x19\xae\xbe\x1d;\xb8\xbdf\xad\xad\x119V$\xeb\xa6\x95>\x84nG++?0\xe3\xf9\xa4#\xf6\x16\xcc\xc8X\xc3\xa1\xef\xf8\xd8l\xc7r{3\xbcZ\xb6c\"s\xf6\xc7\xa2\x1d^R ]d\x1a\x16\xd12] #\xd3d5\xef\x0e\x87\xf9\x0d\x86\xda\xe7\xb099\x9b|\x10:Yh\xc3\x1fi\xf3c\xfa\x1bm~\x1ca\xf3\xc3\x9b\x00B\xd2\xe0A\xb0\x04\\\x933I\x83\xe7\x0dnX\xd4\x9a\xa4\xc1sD\x91\xa4\xc1I\x1a\\\xd8\x1fG\x1a\xdc\xbf\xc1\x7f\xf6\xdb\xba\xa9\xbb\x95\xdaP\xf6\xc9\x82\x9b\x9f\xc2&\xd8=\xff\xfe\x94\xf4\xad\xb5\x10\xfb\x92^\x95'\xd7\xbe\xff\x13\x1d\x90G\xba\xed\x7fST+3fY\xbf\x9c\xbd;\xf9\x81EOx\x17?\xb8j\n\xef\x0b\x85\xbe;\xb3\xee\xde{\xf6\xee\xc3;\xf7\x19*\x1b\xfe.\x85\xfc;\xf6\xfe\xfd\xfa\xc4\xddz\xb7N[\xcc^}\xd6\x9dz\xfc>}x\x97\x1e\xfd\xae\xfd;\xf4\xb8\xf7\x9dqw\x1e\xb57\x1f\xda\x99\x0f\xef\xcbcv\xe5quO\xdb\x91\x87f\xef\xd2\x9fM\xd9\x8f\xcf\xb9\x1b\x1f\xbb\x17\x1f\xb1\x13\x8fn\x94K\x07\xa0\\;\xf0\xf9\xf6\xdf\x91\xbb\xef\xe1\xea\xe5\xddy\xc7\xec\xbb\xe3w\xdd\xad\x05\x9e\xaf\x0e\\\xdb\xf2jk\x91m\xf8\x1dbydq6]0I\xc3n\xdde\xd9\xb9\xa3\x8d;\xda\xb8\xb3\xfd\xfe\x986\xee\xcc\x0f\x16W#4\xaf\xd1\x1dB\xff\xe7@\x87\x9euQ\xc3\xd7\x91\x14P\xc6o\xb2^h\xf4\x0e\x9fd\x1bV\xb1+1\x81ug\xbf\xa9\xffhZQ\x01\xdf'\x991&\xbc\xd67\xbd\x1e]\x8d97bsf\xfc\xbbH\xb7\x91\xdfi\xc3\xc3\x06O*L\xd6\x1c\x1b\xdbS\xd4u\x8f\xf6\xf3m\xac\xf8\xcaRFm_\xa3\xe3\x8d%\xf3w\x9e\xc5G)M[\x94\x878\x06\xb8\x0e\x0b\xa8\xa9\xdc\xbcv\xf6|\xdd%/\xd8\xfa\xfa\x9f\xbf\x7f\xcej>(o\x86\x1e\xea91\x81[/\x14\xe8\x94K;\x7f\x02\xe4\xb0$\xd7\n_\xa9\xd6\x07\xcf_^\xeb\xc1\xa5\xbb\xd6\xddu\xd1\xfa\xdaBZU\xa5W\xb5\x103_\x80\xd0\xa8\x96?\xb6l\xcd\xca\x1b\xb6q\x95\x0d\x1b\xbbql\x993\xbe\xf9\x97\xb2\xfafm\xbe\xb0\xba\x83kV qK'\xf1\x08\xa0X\x8b\xb5\xb2\xfa\xca\xf00~nk)\x94\xd9\xd4F\xebR\xe2\xe4B\x9e\xbfY\x97\x02\xaf\x1d>\x9a]\xaen\x1a)F\xd0\xdc\xca\xfd\xdb\xa6\xf6\x90\xe1\x02\xaf\xf4\xa2\xa8\x8a\xda\x95\x9a\x97q\x80p&\xf3KC\xb5\x99b\xcb#\xbd\xd0\x0d\xb6\x95\xbcjJ\xf3`%\xd1 \x94\x16\xb7\xac\x8e\xde\x1e\xe7/\xb0\xa8U\xe1|\xb2\xefo\xdf}z\xf3B\x08h\xcak\x95\x12e)>2\xcfk\xbd\xc15\x08\xb4w\xdeF\xa0\x04\xfc\xd4\xe2\xd9\xdd]\xcb\xab\xba\xe8\xf7\xb2\xff\xc8\x15\x06o\x84W\xcdU#\xd4\xf1R\x19Lc'2\xbf\x0b\xc4\xa7rQ h\xac1;\x1a\xbb[\x8b/\xc9k\xc7\xb91eoH\xa7\xdbk\xa3Z\xea\\\xadP\x0d\x0e\xc3n\xd9\xb6i\x19t\xfb\xb2\xd7P\x86\xd5\xd9\xba\x12\xf8\xdd0a\xa7|J\xda&\xfe\xb1\xc5T\xd5l\x18\xeb\x9e\x8e\x14*\xb7\xb7\xc3~\xea\xa3TM\ni@6S\xc9\x0e\x03\xc9\x99|\xb9eM\xf2%\x8a\x16Q\xb4\xb0\x14-\x1f\x03Bm\x1a\xd8\xbe\x04\x82Y\xd76Gg\xd6/\x17R\xe4\x93F\x1b\x0fyV\x0btr\x1b\x9d\xdcf7:\xb9M\x18\x9d\xdcvhtr\x1b\x9d\xdc\xe62:\xb9\x8dNn\x13F'\xb7\xb9\xdb4\x9d\xdc&\x8dNn\xa3\x93\xdb\xe8\xe46atr\x9b0:\xb9M\x18\x9d\xdc&\x8dNn\xa3\x93\xdb\xe8\xe46:\xb9mn\xd8S\xb4\xe8\xe46atr\xdb\x1f\xe1\xe4\xb6)\x9b\xc8p5\xf9\x98\x9c^5A\\\x87\x9f\x0e)\x81\x16M\xd4\x05<@J6N\xcd\xe4\xa4d\xe3#\x067\x9c&K\xc9\xc69\xa2H\xc9\xc6\x94l,\xec\x0f\x94ll'\xb67\xed!\xaf\xfd\xace&\xf9J\xba\xb5\xb1\xdc?\x98\xd7\x0d\x9c\xf6\xc9\xddc\xde\xb1\x8f\xbd>q\xf4DG\xe6\x91\xd2\xd6\xcd\xfa=6\xe2\xbaY\xb6\xa33S\xff\xd8\xd4\xf5\xae]\x7f\xa5\x9a[\xcb\xa0k?&b\x9am\xc1\xebOQod\x8f\x1c\xd7\xde\x98 l\xba\xfe\xab\x07\xc1(\xc3\x82 lX\xd7\xeb\xa9\x14\x1f V\xf7\xad\xb7\x97\xf8\x87\x81\xd1\x9c\x03\xc2h\x88~+\x0d\xd3{\xa5\xad[&\x871\xbf\xe0\xf0h\xc8\x17)-\x9cTkZ\xcc\xcb\x976+=L>%\xd5\xdf\x86\x8cp\x84?\xb3\xad@\xdf4_`W\xcd\x0e\xb9\xb0\xd9\xba\xe1\x9f\xff\xa2 n!~\xd3\x92\x82\x18\x12\xb4\x1d-!\x90\xd3\x1a\xcc\x8fT\xbf\x93\xba >\x92\xd2h\x93 \x8e\x8eCA\x14\xc4\xa0\xa2Z\x05\xb2*F\x8b\nb|Hf\xe5\x99\x84D\xfd\xa6y\xf5\x08ob\xb5<\x89\x8cP\x08qg\xe4h\x93\x1c}>\xc4}\xf5\x88\x8cE\x19\xd26\xb7\xeas\x05q\xb71\xbc>7T\x06d\n\x82\xe8\xc8\x02RAx2\xc3\xe8\x0f_\\\x1d\xcd5\xe8\x9b\xbao\xef\x8d\x1c\x96\xc9\xabC\x8c\xc0 \x19\x0c-\xab\xd8MQ\xf7\xb0e}\xb1)\xfa\xc2W\xdeIi\xd5\xbc\"\xa8]\xf2k\xd2(\x80\xfa\xd1\xe5\x0c[\xed\x0f\xd3\x9ej\xa0\x01U\xd9\xf52\x15uW\xb4}\xb9\x16P\x86\xcb\xcd\xb0hzj.\xfd\xeb+\x91\x13\xe6I\xeb\xbal\x9b\xed\xe4 z\x1d26\x0f\xb1\x83\x80*\xc28w\x07\xb2\xb6\x02\x13vx\xb2\x0eL\xd4\xa8I\x1a7AO\xbe3x\xb9\x1d\x19\"\xdaP\x8f\x06\xf4\xe3\x81\xd6\x073\xa3\xf5\x01\xad\x0f\xb4\xd1\xfa`n\xb4>8\xee\xfa\x00\xd5\xf2Q\xef\x18_\xef\x83:\xbbSV\xdd,y[\xe8\x8c\xacV(=),`\xb0Kc\xf2X=\x0e\xcd\x0cW\x95\xcd\xea{\xbe'\xd1\x15\x17I\xb3\xf2\x9e\xf0M\x97c2>V\x7f*f\x9d^\xca\xd8\x0b?\xe4,-\x8e\x1a:^\xceHQ\x1e\xae0\xca\xc3\xfd\x9d\xe6\xe1\x1eTG\x80/\x13L#-\x01w\x8a\xaf8\x05\xc0\xc6^@\x89\xb8\xd3\xdf(\x117\xd4TG\xa3D\\J\xc4\xb5\x1b%\xe2\n\xa3D\xdcC\xa3D\\J\xc4u\x19%\xe2R\"\xae0J\xc4\xa5D\\J\xc4\xa5D\\i\x94\x88K\x89\xb8\x94\x88K\x89\xb8.\xa3D\\J\xc4\xa5D\\{\x07\xa1D\xdc\x03\xc3&ER\"\xae0J\xc4\xa5D\xdc\xc7\x99\x88\xdb\xb5\xeb\xd5T\x98\xdfU\xee\xc3+'e\x1f\xe9#F\xd9\x07\x86\x06\x13\xc4\xc3y\x0db\xd3\xb2\x1cu\xd8t=\xb2\x0e\x87WF\xd5a*?\x9e\xb1\x06\x94\x0e\x8d\x89\x16\xa5CK;rp\xc3\x89\xbc\x94\x0e\x9d#\x8a\x94\x0eM\xe9\xd0\xc2(\x1d\xda\x96\x0e\xbd\xaf/\x1aQ\x87\x95A\xc7\x89<\xfc\xeb\xb3\xf6\xe1:\x05lx\xc8\xc1y`\x833\x91G=\xb6\xb0\x835\x9a\x0e\xae\xfd`0[ \xd4\x0d\x8f6\xd5z\x8c\xfc#\xcb\xb3\x9e6\x11O\xf6+\x02\x9d\xc2\x00<`{f0\xe1\xd9\x8b%\x0f\xee\x9c\x98\x1b\xee\x8c\xae\x8c5\x8c?\x97\xcb[\xc3\xdfO*PT\x1e\x0e\xe2\x85H\xc3\xe7\xdf`_\xa0\xb4y\xdeMi\xcf\xb8\x19{w\xc0\x1f.\xd5&*\xcd&:F\xb8\xf4\x9a\xc88\xcd\xd2jJKF\x0d:H\xb8T\x9a\xa84\x1at\x90\xe2\xaa\xedK\x9dQ\xa7\xc7\xa9K<|(i|\x9a\xd9\xec+I\xb7Q\xa7\xdc\x01\xffPB\x05\xe3k\x06\xc1S\xf9IU2\xbcu|\xc1,K\x84Y\xa6Km\xacS\x82y.q9.\x1b_\xfe\xabmu\xe4\xcb\x83\xc5\xd4\xd9R[\xe8\xfa\xa6U\x0b2\x91\xff\xca?\x92+f\xe6\xb8Z]\x8d\xc5\xf3$\xbd\x8a\xd3\xcf\xb5G\xe3|\xfa\x9a\x87\x95\xf7\xf7\xe7b\x89\xcc6\"\xff\x96\x92(\xec\x1e(\x89\xe2\x8f\x94D1\xef\xa3\xf8S\xcdf\xde,l]\x99c\xe1}\x02\x9dv\xa6\x8c\x92,\xf2|\xe1P\x92\x05%Y\xd8\x8d\x92,\x84Q\x92\xc5\xa1Q\x92\x05%Y\xb8\x8c\x92,(\xc9B\x18%YP\x92\x05%YP\x92\x854J\xb2\xa0$\x0bJ\xb2\xa0$\x0b\x97Q\x92\x05%YP\x92\x05%Y\x18\x96\x83\xf0NI\x16\xc2(\xc9\x82\x92,\x1eg\x92\x05\xd1\xfb\xe3\xb8\xd3D\xef?bp\xc3\xc4t\xa2\xf7\xe7\x88\"\xd1\xfb\x89\xde/\x8c\xe8\xfd6z\xff@\xc5\xf2q\xfa\xff\xc3\xc2\xe9\xffe\xb8q\xc2\xe4\x1f\xfdAY_6\xa2\xe5\xca#\xd0\x86'\x0f\xbe|\xcc\xfd\x8f\xb2\x0e\x96\xc7\xa9\xab\x1f-m\x7f\x8c\xc0\xe3 x\xe8\xf3\x9c\x1e\x90\xca>\x7f\xe4d\xe17\xe5\xaf\x8f\xe1r\xb0\x0bM\x7f\xffUp\xe1A3\xe1\xcbZ,\xf0\xed\x1f\xb2k\xfez\xebn\xdf\xadv\xfb\x0b''/\x18]@D\x18\x104\x1a\xc0E\x18\"\xa2\x0c \x94\x1a\xaf3;\xae\xe2\xd9f\xccM\xad\x810\xbd\x06\x12(6\xfe\n\x14\xfd5\x9af\x03\xb9\xa86\x90H\xb7\xf1:\x14\x8a\xe7X\xca\x0d,\xa7\xdd@4\xf5\xc6\xebJQ\x02\xa2\xe87\x90\x9b\x82\x03\x914\x1c\x88\xa5\xe2\xf8[\xf6@\xd3\xc1\xd2q 7%\x07p\xb4\x1c\xc8I\xcd\x81\xc5\xf4\x1cH\xa3\xe8@.\x9a\x0e$Qu\xfc\xdd\xa1\xe0\x9f\xc2A\xba\x0e\x1c\x87\xb2\x03G\xa4\xed\xc0q\xa8;\x10I\xdf\x814\nOh\x08\xc6\xd1x /\x95\x07\"\xe8<\x10O\xe9\x81\x04Z\x0fb\xc8\xfc\x16A\xed\x81\x1c\xf4\x1e\x08Q|\x00\xbfZ\x11\xe0\xa9E\x80\xa4\x17\x01\x9ab\x04\xb8\xa8\xc7S\x8d \x8an\x04^\xca\x11\xe4\xa2\x1dA,\xf5\x08\x16\xd2\x8f\x00\x11\xde\x08\x1a\x12\x1c\x83\x8a\x04\x982zzB>Z\x12`\xa8I\xb0\x80\x9e\xe4t\xd8\x8b,f7E r\xd3\x94 HU\x82T\xba\x92\xd3\x9b\xfcF\xf5\x7f\xae#hK\xe0eW\x80\x97\xbe\x04I\x14&\xa7+/\xb5 R\xe9MNor\x1d\xe8\xd95\xcbGs\x02\x14\xd5 \x12\xe8N\x10Gy\x82\x14\xda\x13DS\x9f 0\xdb\x06\xe8(\x10AI\xc1\xd2\xa0 \x85\n\x05\xb1t(\xf0W<\x85\x16\xe5tf\x90\x8e\xb0]\x06G\x8f\xf2v\x88\xfa\xcaO\x91\x82\xbc4)\x08Q\xa5\xc0O\x97r\xde\x93J\xa3\x82\x8cm7\x82N\x05Q\x94*0hUS\xfb\xb7\xa2\xac\xd8\xc6\x8fN\x1d\"\xc3\xa6\xb9\x10\xf3\xa9a\xbf\xf4ey@\x8b\x17\xdc^3\xb5\xdfc\xcav\xf0~p\xc1X\xad\xaev\xb7\x83\xb6\xd9\nU\x10\xb6\x81\xae/\xfa}'7\xc5\x0f\x04>\xa4\xc9K\\\xb1\xc0\xd6@=\xa8\x9c\x8b\xc9\xca\xbf;o{&\xcb9\n\xde\xa9\x7f \x10\xc4~\x0bb\xc7\x88\xd5\xfb\xad{\x1d\xff\x1c~|\xf7\xf6\xf5\xea\xe3\xa7\x97\x9f>\x7f\\}~\xfb\xf1\xfd\x9bW\xe7?\x9d\xbfy\x8d\xbe\x83\xffW\xe4\xe5\xe7o\xff\x84\xbc\xde\xeb\\+ADUA\xaa\xfc<\x00\x04\xad\xe4\x84d3\x06\x83p(v\xe3\xc5o\xcf\xcaz]\xb9\x97\x07\x1d\xab.\x9f\x8f\x82;\x8eF0\xf2)\xe4\x99\xc2\x0fP\xb5\xf9#Gt]\xf0}\xd4\x1f\xcb\xae\xdbK\xe4\xc1=a\x19\xd8\xfb\xe8\xd5\xb1\x85j\x96nq\x05\x86\xebf\x94\xd0\xf1\xef=k\xb7\x1d\xd8\xcf\x87\x1d- r\x97\x0d\xdd\xdf6u\xf9\x85Y\x94FFC\xbc`\x88\x88\x11\x8cO5\x8eZ\xbf\xdeo\x8b\xfay\xcb\x8a\x8d\xa0\x85\x89u_(F\x80\x89\x13(\x9e@\xef\xe4I\xc0q\xea\xa8\x1fk\xaali\x14t\xfc\xb1+\xaf\xea\xa2\xdf\xb7\x0c\x9e\xb1;\xff\xa7\xf4\xe7\xf7M+8\x9e\xff\x8b\xdd_\x14\x1ds\x0e\xde\x00\xb7\xec\xa2+\xfb\x1c\x98\xc0\xa4\xc6\xca\xad\xb5F\xfa\xb7\xaa\xac\xbf\xf8\x86\x9e\xf5\xbe-\xfb\xfb\x95\xf8\xa2Y{%\x0fSJ\x18x'\xf3\xc7[k\xc2\xb6EY\x05\xa1t\xed\n\x94+w\x9d\x9d\xa28\xa3\xa5TU\xb9\xd5\x13\x81\x04\xaf\x86J\xa8_\xed\xa5\x1a\xf5W\xfd\xc2\x93\x88ba\xc4&\xb1oh^,\xfdvN\xa0\xbc\x1c\x7f<\x11#\xaa\xba\xc2C\xb9\xd1\x82\x94ew\xb0\xbc\xbb\xda\x1b\x82w\xa1\x10\xf9T'#\x02\x14R\x9a\x8c\x0f\x92\xd0\x92\xf4\x84h[\xd6\x83\xde\xa4\xd3\xddt!\xd97Zz\x90\x85\x02\xb4n\xb6\xdb\xb2\xeb\xb0\x93\xe6x\xf9db4\xfe<\xe6d\x1cy\xca\x1b\x9f\xb9j\x8b\xde\xaf\xd0\x8a}+`\xf1;\xa9\xa8\x92\xbe4.\xf2\xfa\x92\x0e$\xf1`\x00\xcb\xa5\x00\xab\xf8*FL{\xa8x\x012f\xa0\xca\x14\xda\xb8Gt\x08m1\xa1\x05\xf5x\xfd\xe9c4\x1b\xf1\xe7\xf5u\xd1^\x895a\xd0\xcd\xb8\x1a<\x01\x91\nv)H^~IQ\x80mq\xb7\xfa\xca\x01\xd0E\x98\xb4\xabmqWn\xf7\xdbyD\x82\xce\xe4\xe88\xf6\xfcuQ\x03\xbba\xad\netl$+\xe51\x84\xc8(\x895R\x9b\xa2\x0c\n\xd0\x8a\xdc\x86\x96\x15\x1d; \xf3\x1a\x91\x96A\n\xba\n\x07q\xbf\xe3\xb3CP\xdf\x18\x198\xec\x8c\x03\x91\x016J\xa9\xfb\xa1\x00\"\xc4\x1fl\xbd\xf26@\xc6\x93ojc\x8f\xcb\xb6\xacW\xfcC\xd5\x10\xe7_0\x0bc\xebiy\xea\xc1v\xcb\xd3N|A\xc3\x86\xad\xabb\x9eR2s&Z\x9c\xbaZ;\xb4\xd5\x17S\xbe!Q\xc0\xf8l\x1a\nu\x02}s%7\xb4\x04\xd8\xd0\xeb\xdc\x1b\xab\xabbk\xe4\xe8\xd87 \x7f1\xaa\xcb\x17\x02\xfa\xeb[\xe5\xea\x97-\xb0;\xf9\x02\xe5\xcb\x16K\x87\xb2vL\xde\x1f\xab\xa2\xbb\xe6S\x97NBqQ\x88\x0b\x1eV\xd9\xf3\x14\x865y\xcc\x89$\x1e\n\x1e\\\xd3\xb6\xae\x89m]T\xeb}5@7\x97{\xfe\x85e\x7f\xe0\xbe6\x0ff\xe0\xb1k\xf6=\x94\xbd\xc8\xd8\xa8\xaf\xa0\xb9\x11\xdf\xa9\xc3\x16\x02\xfc\xf5\x9a\xd5\xb2\xaa\xf6\n\xb4\xd3\x0d\x19\xfbS\xa7\xcb\xd2\x93\xd9\x10Sv|\xae\xdf\x94\xbd&\x87\x15F\xf3\xb1\xfa\xbb\xbdn:6\xa6Y\xd9\x1fj\xbe\xc6\xb2\x9b\xd00\x8d\x16!\xaa6V\xc1\xeaiS\x0e8\xad\xdcl\x17\\B\xfbS'\xef\xef\x14~iDXw\xcd-kuj\xa4~]l#\xb0Wg\xb3\xd5\xfb\xad\xa2\n\xf6\xa7m\xf7U_\xee\xaaR\x16n\xfa\xec\x83\x1b&\xbd\xce\xc8\xef\x99\xa8w\x9bo\xa6{*s\x7f\x84\x88\xb4\xf3\xa4\x05\xd2t\x16F\x9a\xce\xbfSM\xe7\x837*\xf2\xf4, m^%g\xcb\xd6\x9e\x94n\xb6%\xe2\x91`\xb34\x12l\xce\xb3\xce\x8b\xcd.\x93\xad\x96\x04\x9b\x11\x99d}\x8e,\xb2\x94\x0c2\x12l\xce\x98-\x16\x93)\x16\x95%F\x82\xcdK3\xc2\x12\xb2\xc1\xb2d\x82\xc5g\x81\x91`\xf3\x92\xac\xaf\x98\x8c\xaf\x84l/\x12l&\xc1\xe6\xc0*):{\x8b\x04\x9bQ\x99Z)YZ$\xd8\xec\xba,\x98\x8d\x15\x91\x89\x85\x91#\x8e\xc9\xc0\"\xc1f\x12l\xc6dS\x91`\xb3\xb0%\x19S$\xd8l\xf3\x14\xcc\x8aJ\xcd\x88r\xce\x0d$\xd8|h$\xd8\x9c\x90\xc9\x14\xceb\x8a\xcd`\x8a\xc8^\x8a\xce\\\x8a\xcbZ\"\xc1\xe6\xb8\xcc$\x12l\x1e\x8c\x04\x9b\x95\x91`3 6\x93`\xf3\xf8\xb7\xe4\xe0\x86\xa5\x86I\xb09G\x14I\xb0\x99\x04\x9b\x85\x91`\xb3_\xb0\xf9\xec\xb7\xe1\xdf\xf2\xb7T\x05\xe7A\xc0\xd9<\x97\xdf\xae\xdd<^2\xf8\xdb\x15\xe5\x10\xc9\x89\x84\xf3\xe1\x83\xd4U\x8f_\xba\xd9\xc5\xf4Hb\x90\xe1\x04\x98\x83\x98\x05f\xd3?\xb7\xf4r\xbc\xf02Nv\xd9\x1bM\x08F\x14\x104\x18DD\x01\x1dUH%\xc3x\xfcE -g%\xc4\x04)1\xb9I1xZL&bL\x1a5\xc6\xe3.RZy!=&7A&\x92\"\x93\x99$\x13G\x93\x89$\xca\xf8\xda\xf0@\xa1\xc1Re2\x93ePt\x99\x8c\x84\x99\xa5\x94\x99$\xd2L&\xdaL\nq\xc6\xe3\x0c-\x9e|\x04\xf2\xcc\xf1\xe83G!\xd0\xc4Qh\xb2\x93h\xb04\x9a\xacD\x1a<\x95&\x9aL\x13O\xa7 \x0e\x858\x99\xe4\xc5\x94\x9a\xa0D2jA\x85 \xd6\xc4\xac\xba\xa2\xc95\xbeI\x10-\x8c\x8c+_F\x8aM\x0c\xc9&3\xcd&\x8dh\xe3kA(1\xe4D\xb2\x8d\xc3[\x8f\x12B\xceC\xb8A\xb3F\x10\xa4\x9b(\xdaMHG4\x85z\x13\xf2\xe9\x84\xe02\x11p\xe2\x83\x89'\xe1\x84\xea\x96@\xc4I\xa4\xe2\xf8\xa0\xcclt\x1c4!\x07G\xc9\xc1\x92r\x10Q\x8e'\xe6\xc4Ps\xfc\xd2\xc6Y\xe89\x91\x04\x9de\x14\x9dP@#h:G \xea\x04K\xe7l\xe9\xf9\xe8:\x08\xc2N:e\xc7\xe1\xae\x0fJ\x18g\xa5\xed\x84\x88;\x89\xd4\x1d\x87\xaf\xb0t1\x82\xbe\xe3\x97-\xf6\x89\x16\xe7&\xf1d\xa7\xf1\xb8\x89<9\xa9<\x182O<\x9d'\x8a\xd0\x93@\xe9\x89%\xf5\x04\x84\x88\xfd\xa5\xc3\xd2,\xb0\xd4\x9e\x04rO$\xbd\xc7S\xdd\x14\x8a\x8f\xc3\x15Bz8\x85\xe6\xe3i\xf2a\xd9\xe1\x8cT\x9f\xa0\xe4\xf01\xe8>\xb9\xdab\x04\xe5'\x86\xf4c\x17\x14\xf6\xc9 \xf7\x0e\xd4r4\x8c\x940\xee\xdb8EFX\xc8\x05;\xfcaE\x84}\x12\xc2\xb8\x92'\xc9\x07G\x8b\x07\x07\xf7R|\xc2\xc1\xb1\xb2\xc1Q\xa2\xc1q\x92\xc1h\xc1\xe0\x04\xb9`\x9fXp0~\xb8\x97\xbdT&\x18#\x12\x8c\x93\x08\xceT\xa1\\\xe2\xc0xi`\xb3\\\x8b\n>\\\xb5H\x148\xa0\xf9\xd7/G\x9e\x83b\xc0\xc1W \xe8\xa8@F\x19\xe0\xa0\x1abX\x028s\xcd2\x8b\xff\xa2\xa5\x7f\x83\xc2\xbf\xf1\xf5\\*\xfa\x8b\x97\xfc\x8d/\x9b\xf7\x1dd\x13\xfb\xc5J\xfd\x06\x85~\xe3+\x98,\xf2\x8b\x93\xf8\x0d\x16(,\xef\x8b{\x1f9\xa5}\x97\x08\xfbbd}\xd1A\xf1\x0b,\xc6\x06&F\xce\x173K\x00Z\xcc7$\xe5;\xa9\xc9r!\xdf\x0c\x13\x15^\xc2\x17\xf7\x16 ^\xbeWJ\xf4z\xfc-\x12\xef\x0d\xc6\x08Pq\x02\x94lo\xb0\xc1k\xc3\x07\x13\xd0\x82\xbd\xa6 o\xc0!Z\x92\x16'\xd6{\xa4j\xc7\xc8\xf4\xca\xb1,\xe00\x87Ho\x94D\xef\x11\x03\x83\x12\xe7\x1d\xc4w\x03\x0e\x83\xd2\xbc\xc1\xd0\xa0\x84wQ\xe1\xc0\xcd \x10\x15\xb4\xcc\x82\xbb\x1e\xb9]\xb4\xd8n0\x16\xb8\xdae\x94\xd9E\x8b\xec\x86K\x96&\xb0\xab\xa4S-\xfe\xdc\xf2\xba9\xc5u\x91\xd2\xba\xd1\xc2\xba\xa6\x88\xae\xbdrnY\xdd\xbc\xa2\xba\x18I\xdd\xbc\x82\xba\x089\xdd$1]-\x9ck\xf3\x17\x94\xd2M\x13\xd2U\xfb\x8b\x16\x7fn\x19]\xb4\x88\xee\xa4OaeA\x07U\xd0%\x92\xa0\xa4\x08\xaa\x8c\x14AI\x11t4R\x04%E\xd0\xd1\xb2&;\xc4\xa4:D%:\x90\"\xe8\xd2\xf4\x86\x84\xe4\x86,\xa9\x0d\xf1\x89\x0d\xa4\x08\xba$\xa1!&\x9d!s2C\x8fJe\xc8\x98\xc8\x80Mc\xe8\xe3\x92\x18bS\x18H\x11tb\xd1I\x0b\xa4\x08\x8aJUHIT EP\xd7e\xc1\xe4\x84\x88\xd4\x04\x8c\xdeeLZ\x02)\x82\x92\"(&\xf9\x80\x14A\x85-I7 EP\x9b\xa7`\x82Ajz\x81sn E\xd0C#E\xd0\x844\x82p\x12Al\nAD\x02At\xfa@\\\xf2\x00)\x82\xc6\xa5\x0b\x90\"\xe8`\xc7H\x11\xc8\xd1\xe6\"\xd2\x03\xf0\xc9\x01\xbfWE\xd0\xa9\xe2\x99\xab\xcc\xd3\xab&e\x1e\xd1\xce#\x979Z\xf4\xed\xba\xec\xfa\xa6-\xd7E\xb5*\xeb\xcb\xe6\xec7\xc9\xf0\xf3\xa9\xba\xfdy\xb8\xe5\xbc\xbel\x06\x197^\xcf\xd1\xdb\\\xcbM\xba\xd55\x9d(\xb6M\xfd=\xd1\x95~\xa4jm\xbc\x8a\x87K\xf9IQ\xf8%\x93\xd7?\x0f\x8b\x12\x84\xb4Ef4g\xd9 \x08\xce]\xb3b\xe3\xa2\x8a{\xddB\xd057\xb5G\xeaa\xe5\xc8\xa35/\x8a\xae\\\xc3E\xd5\xac\xbf\x88z\xbb\xaf\x0f\x95 P\xe5\xe2&\x9e\x96\x89B\x858DTZ\xb1\xdb=\xec#1\x1bo\xd2^ie\xdf\x16\xeb\xeb\xb2v\x08\xb1\x08>VY\xafJGJ\x1b\xe0^\xa9\x8f\xdd\x0d8\x17\x18\x967\xc0\x03r\xe4\xc4\x8aY\xbc@\x7ft\xe4\x08\xb0k\xd9\xcd\x03\x0f\x00\xd7Ew\x9d\xb93zE\x85\xc4j\xa7_u\xac_\xf9\x86]m\xa8\x9a\x02\xba\xb6\xdc<\xe7$O.\xf3RU\xe6\x86iv\xda\xc2!\x87\x98\xb0\x03>\xf4CC{_\xb4}\xc7\xfa?\x8b7\xe0k\xba\x82\x96\xd9\xaf\xfcEF\x15\x15UDU<\xfe8&\xf6\xe8eg\xe0\xc3\x9e\xe3\x1e\xfe\xd3\x03\x15o\x14\xf5}\xa0\x07\xce\xe3q\xd96[=\x8eC\xb3\xefw\xfb~\xfc\xdb8v8\xbc )\xfd\x07\xaf\xc3(5\xfb0\xcf+v\xbb\x07z\x92\xe8\x1f\x8a\x0b\xf0@\x8fd7\xe5\x86\xd5k\xf6@\x8f\x1b\xda\xdf\xb8\xfc\xf1LK|\x04n:\x16PP\x86l\xe5\x9b,\xea\xe4H6\xf9\x8a\x18\x96IbS\x11>\xb1z\xc3\xdamY\xf7jP\x91\xd3\x8fmEsST\x1d\xf3\xa6\x99\xd9\xa9\x83\xe0\xa3\x0f\x02n6\xc3\xccc8\xadji\xa8X\xc7\xac\x90\xa3\xd4\xab\xbd~Lz|\xbc\x86\xb54\x9c\x92\xb54D\xf4\x01\xf9\x06@\xb9\xf3k[\x8f\xd7!\xde\x00D\xbe\x05H z\x06\x1d\xf6V\xc4\xdf\xf7\xa5 \x0dM\xfc\x0cz\x1a\x89\xa1!\x02\xa8\xb6X\"h\xd0\xe1\xae\xe8\xaf\xd1\x84Pm6\xac'\x9a\x18\xaa\x0dO\x10\x0d\xba2 \xa4\x11DQm\x0b \xa3\xda\xe2\x88\xa3Aw\x8a\xd4\x16E \xd5\x16K$\x0d:\xbcl\xda(B\xa9\xb6(bi\xd0[\x8a\x8e\xb64\x14\xd14\xe8eJD\xc5\x10N\xb5e#\x9e\x8e\x0e\x97\x10P\xb5%\x10Q\xb5e!\xa4j\xc3\x13S\x83\xae&\xc4\xd50AU\xdb\x11\x88\xaa\xda\x8eEX\xd5v\x04\xe2\xaa\xb6\x18\x02\xab64\x915\xe8\xc9$\xba\x8a\xf6\x1d&\xb4j\x8b\"\xb6\x06\xbd\x89q\x02Kp\xd5\xd6\xc7\x11]\xb5\xc5\x12^\x83\x0ec\x94\xbb\xa5-&\xc0j\x0b\xa8xK\x8bX:\x06?\x97F\x8b]eF\x11e\x83\xdezM\xa4E\x10f\xb5\xc5\x948\x92@\xeb\xf55]\xcd\"\x88\xb4\xda\xa2\x08\xb5^OA]pi)\xa4\xdbp\xfbDi\x84KK!\xe1\x86\x1c\xf6(\xbdpiyH\xb9\xda\x90\xfcRmA\x92\xae\xb6\x08\xb2\xae\xb6\x80\x90\xaf\xb0\x14\xf2\xae6\x8c\x7f\xaf\x16h6R\xaf\xb6\xb4\xe0\xe3I\xbe\xda05O \xfdjK\"\xffj\x0bD<\x1f\x19X\x1b\x92\x14\xac\x0dC\x0e6\xaeE\x90\x84\xb5!\xdfJ$Ae^\x9aOk^]\x81\x8bwL\xa3Y\xaa>/\x0d\xa3A/\x0d\xa7D/\xed\x08\xd5\xcd\xa5M/\x0d\xafP/\xcd,i\xb6\n\x0d\xd7.\xd2\xac\x97\x86\x10\xbc\xcd\xce4 j\xd9KC6\x06\x88\x8c\x1fdT\xb7\x97\x86\x8a!F\xe9^\xda\x11\xeb\x1d\xa9}\x1f\xf4\xf7\x8c\xdd\x9d\xe2\x15\xf0\xa5\x05u\xf0\xa5\xa5Fa\xa9&\xbe4\xbc2\xbe\xb4\xd4\xd2\"\xdeY6\xad\xfc\xa9\xbb\x90b\xbe\xb4\xa0n\xbe\xb4\xd4\xea'k\xe8K\xc3)\xe9KC\x16\x11K|\x8fy\x8b\xf1\n\xfb^wE\xbfHg_\x1aFm_Zd\xe0B\x19$\x90\x1c<\xac\n\xbf\xd7\x9d\x1a\xd3S\xb4\xf8\xa5\x85\x14\xf9\xa5Mj\xb8\\\x97_Z\xe6i\x18\xaf\xd4/-\xe6\xadA\xbcj\x7f\xd0\x9ft\xb2H\xbb_\x1a2\x8e\x10\x11K@\xa9\xf9KCv(m\xb1a\x07\xb4\xbe?\xca\x95q\x06\x00N\xb8}4\x9c\xd6\xbf\xb4\x07\x08J\x8c\xfa?\xca\xa1\x1c\x85\x03g\x00\xa0<\xc5\xc5\x14}Z\x80\xb4\x07\n-\xea\xfc\x00\x947}\xc6@\xf8\x14\x01\x94;\\pQ\xe7\x0dH\x8b\x08h\xcc\xac\x08 \xc1\x8f=\x87 \xe8\xf0\xb6\xe8|\xa7\x11HC\x9fI \x0d\x19\xaf\x98\xbag<\xa5`p\x88;\xab@\x1a\xb6\xaci\xe7\x168\xdd\x8d\xea\xf5^Jv\xfc\x19\x06NW\xf2l\x03\xecI\x06\xd2\xa2\xcf3p?}<\xe7\xc0\x7f\xaa\x81\xb4\xa4\xb3\x0d\xfcUG\x9dp -\xf6\x9c\x03\xa7#\xa3M#N;\x90\x96t\xe6\x81\xbb\x04\xe5\xc0\x19\xe8\xfd'\x1fHK;\xff\xc0[\x19\xb6\xf1\x9c\x82 -\xed,\x84\x83\xde*DR\xa6*$\xc39\x08e\x17q\x14\xc2L\x19\xe5\xc3\xfbW\xf3\xb2\xd3\xa9\x08\x93/l:\x15\xc1b\xd8\xa9%6YN\xb6_:\x15\x01\x91\x04g\xe3\x0eE'\xbf\xe1\x93\xde\xe8T\x04m\xb1\xc9l\xde\x1d\xcf\x98$\xb6\xa8\xe45:\x15aiRZB2Z\x96$4|\xf2\x19\x9d\x8a\x90#\xb9,&\xa9\x0c\x9dLF\xa7\"\xd0\xa9\x08\xe8URT\xb2\x97\xfcZ\xa2S\x11\xe8T\x84\\ X\xc8\xdc\x9f`\xc2UD\xa2\x15F\xf3?&\xb1\x8aNE\xa0S\x110 Ot*\x82\xb0%\x89Kt*\x82\xcdS0\x01)%\xf1\x88NE0\x0d\x91HD\xa7\"\xd0\xa9\x08\x13\xa3S\x11\xe2\x92s\xe8T\x84\xc1\xe8T\x04e\xfa\x84\x81\x03\xd6\xdf\xe4#r\xca\x1a\x1c\xf9\x7f\xea\xef\xc3Y\x02\xfd\xa1\xd6\xbc9,-<[\x00\x1c\xecH\xd7\x99\x03\xae#\x07D\x1c\xd4\x1d\xb6\xf3\x05\xde\x0fq\x9a\x9c-\xa0\xdcX\xa8r\x93\xd3\x04>\xca\xcb\x84\x13\xfd\xa5\xf9h\x0f\x130Ca\xda\xa40\xf2\"\xd5\x1b\xc5n\xbaXY\x0dA\x12\xb3`\xd9\xc1\xb6\xd9\xec+\xcb\x8e\x84\xb3\\\x10\xc4\xb30$\xd1\xe0v\xce\xa4236\xa7\xa2lHf\xa7\xeav\xe2K\xdf\xc7\xc3\xdc\x16w\x86\xee\xaf\xafT>\xb5\xeb0\xd1wR\xf0\xe9Cu\xc15\xb7i\x00\xe8\x0dQeW\xd1Y\xdd\xb7^\xfc0k\xb9\x9d[cFQ\x8c\xda\x80\xfe\x93Xj\x96b\xcfqx\x19\x0eO\x06]A\xc0\xd3\xc6\x7f?\xdb\xb1\x16vE\xd9\x9e\xf5m\xd9X\x13\x03\x8c\x13H\x1eId\x0eK\xa4\x034\xbefc\x98\xd5\xd78I4;\xd6veg%\xda\xf3\xc0\xae6\xacn\x1c\xd9rq\x9dk\xf46!\xe0\xf1?\x8b\xdd\xf2uS\xd6 ~/k'\xbbI\x906V-\xdb\xec\xc5\x1e[b\xb9\x94\xd0\xb23\xc6\xb3\xa7\xe8\x00\x8fL\x15=\xdc\xab\x8c4=Q9\xdc\xf1\xd6\xfa\x1d\xec\xebR\xb1\\\x94\x88\xeesV_\x955\x93O\x9b\xdc\x8a`\x84\xc8)$\xc8\x04Q\xdc\x0fy\xb5\xe0|L}\x11\xe5\x83(\x1f!\xbc\x037.\x11\xe5\x83(\x1f\xae+\x89\xf2!\x8c(\x1f\x87F\x94\x0f\xa2|\xb8\x8c(\x1fD\xf9\x10F\x94\x0f\xa2|\x10\xe5\x83(\x1f\xd2\x88\xf2A\x94\x0f\xa2|\x10\xe5\xc3eD\xf9 \xca\x07Q>\x88\xf2aX\x0e\xf8\x9d(\x1f\xc2\x88\xf2\xf1{\xa1|DS#\x9a\xa6\xf2\x10#\x9a\xa6\x9aP\"\xf8\xe5\x13\x96\xc7\x84 \xc1/W\x7f\x7f\xbc\x04\x88\xa1\xc2\xa6M\xe9\x0f\xbc\x92&\x9cyP\xeb\xd1\x9c%\x80 \x8eS7\xfdJ\xa6\x9d\xaf|\xaa\x9c\x81\x9d\x8c%\x1e&\xb5\x96\x08d\xd3Th\xfc\x91G\xe5\xc3\xfbW\x847\x12\xde\x18\xdcl\xc3\xecW\x01\xe1\x8d\x847:\xaf$\xbcQ\x18\xe1\x8d\x87Fx#\xe1\x8d.#\xbc\x91\xf0Fa\x847\x12\xdeHx#\xe1\x8d\xd2\x08o$\xbc\x91\xf0F\xc2\x1b]Fx#\xe1\x8d\x847\x12\xdehX\x0e\xec\x87\xf0Fa\x847\xfeQ\xf1\xc6y\x16\xad\x0du\xfceLz\xd5\xd8cQUF\x9e\xab\xdeY\xec\xd7R\xc1\xfc\xaa\xbca\xb5:\x82\xd0\nL\x8e\x1e\xd5\xaf\x8f\x16\x9e\xf4e\x19\xf7_\x01\xfa\x91al\xdaU\xb1\xd9\xb4\xacs\\\x85\xda\xff\xc0l!\x80\xe5\x91\x13(V\xffm~N\xc3S\xf7\x16\x96\xf6\xf7_\xe1\x82\xad\xaf\x81\xd5\xebf#v)E\xd7\xb7OqC>\xe7j\xb7\xbf\xf8\xc2\x9c\x07\xa8\x05\xa2\x0b\x88\x08\x03\x02`\x03\\\x84!\"\xca\x90\x00\xb6y\x9d\xd9w\\<\x1f \xb9A7\x08\x03o\x90\x00\xbe\xf9+P\xf4\xd7h\x00\x0er\x81p\x90\x08\xc4y\x1d\xf2\xe0\xa2\xc18X\x0e\xc8A4(\xe7u\xa5\xc0\x82(`\x0er\x83s\x10 \xd0A,H\xe7o\xd9\x03\x80\x87\x05\xea 7X\x078\xc0\x0er\x82v\xb0\x18\xb8\x834\xf0\x0er\x01x\x90\x04\xe2\xf9\xbb\x83q\x1aG\xa0\nG\x00\xf3\xe0\x88\x80\x1e\x1c\x07\xd4\x83H`\x0f\xd2\xc0\xbd\xd0\x10\x8c\x03\xf8 /\xc8\x07\x11@\x1f\xc4\x83}\x90\x00\xf8!\x86\xcco\x11\xa0\x1f\xe4\x00\xfe \x04\xfe\x01~y\x86\x00\x01!r\x15\x17\x0d\x06z\xbd \xa0\x10\x01\x08BD)3\x02\x83\x10\x05\x0eBn\x80\x10\x12AB\x7f\xbb\xea\xc2@!\xa4\x83\x85N\x7f\xfc\x89!\xc0\x10\xb2\x81\x86\x80\xc7\xbe\x00\x03\x1eB\x1c\x80\x08\xa1\x1d\xffD \x11\x10~=\x9b\x8a\x99@EH\n.\x1e\\\x04D-\x13@FH\x05\x1a\xc1\x1f\xd5|\x80#\xe0AG@\x02\x8f\x80\x06\x1f\x01\x17\xf5x\x10\x12\xa2\x80H\xf0\x82\x91\x90\x0b\x90\x84XP\x12\x16\x02\x93\x80\x08o\x04@ \xc7\x00)\x01SFOO\xc8\x07X\x02\x06\xb4\x84\x05\xc0\xa5\xd3!\xbf\xd0\x07^Bn\x00\x13\x82 &\xa4\x02\x99No\xf2\x1b\xd5\xff\xb9\x8e\x004\xc1\x8b\xbb\x80\x17\xd8\x84$p\xd3\xe9\xca\x0bzB*\xf0\xe9\xf4&\xd7\x81\xbe3B\xb3\x01\xa0\x80\x02A!\x01\x08\x8580\x14R\x00Q\x88\x06E!0\xdb\x06\x80*\x88\x00\xab\xb0\x00)\xa4\x80\xa4\x10\x0b\x94\x82\xbf\xe2)\x80\xa9\xd3\x99\x01Gb\xbb\x0c\x0e8\xf5v\x08q\x8c\xbd\x07<\x85\xbc\x00*\x84@T\xf0\x03\xa9\xce{R\x01V\xc8\xd8v#\x80V\x88\x02[\xc1\x00\\\xa7\xf6oEY\xb1\x8d\x1f\x9d\xbah\x9a\x8a9\xb7\x8e\x87\x0d \xefU\xd8/}Y\x1e\x85\xd8m\xe0\xf6\x9a\xa9\xfd\x1e\xf3\\b\xde\x0f.\x18\xab\xd5\xd5\xeev\xd06\xdb\xe1`^\x01\xee\xcaMq\xab\xae-\xa8K\\\xb1\xc0\xd6@=h~\xb2\xb7\xfa\xbb\xf3\xb6g\xb2\x9cg\x83r\xb1\xfa\x97\x00A\xec\xb7 v\x8cX\xbdw\xc8\xf4\x82@\xdb\x7f|\xf7\xf6\xf5\xea\xe3\xa7\x97\x9f>\x7f\\}~\xfb\xf1\xfd\x9bW\xe7?\x9d\xbfy\x8d\xbe\x83\xffW\xe4\xe5\xe7o\xff\x84\xbc\xde\xeb\\\xe7\x88FU\xc1\x97\xe4\x8a\x8a'\xb6\x11( `\xd9\x8c\xd5\xaad<\x8f[\xfc\xf6\xac\xac\xd7\x95{y\xd0\xb1\xea\xf2\xf9(K\xedh\x04\xc3\xc1\xe0+y\xf0\xf4\x03Tm\xfe\xc8\x11]o\xfa\xa2\x1a\xcf\xf3\xee\xf6\x12ypOX\xe6\xa9\xf7\xc6 \xe7\x8e\x8a\x8e\xa5[\\\x81\xe1\xba 3\xc0\xfc{\xcf\xdam\x07\xf6\x83\xb3G\x1b*\xe0\xef\xa1\x8b\xd1\xfdmS\x97_\x98%\x07y4\xc4\x0b\x86\x88\x18\xc1\xf8\xd4\xf1\x0c\x07\xb8\xdeo\x8b\xfay\xcb\n\xa9\xcd-\xd6}\xa1\x18\x01&N\xa0x\x02\xbd\x93'\x01\xc7\xa9\xa3~\xecX\xc91\x8dq\xfc\xb1+\xaf\xea\xa2\xdf\xb7\x0c\x9e\xb1;\xff\xa7\xf4\xe7\xf7M\xdb\xf3Y\xe6\x7f\xb1\xfb\x8b\xa2c\xce\xc1\x1b\xe0\x96]te\x9f\x03\x13\x98\xd4X\xb9\xb5\xd6H\xffV\x95\xf5\x17\xdf\xd0\xb3\xde\xb7e\x7f\xbf\x12_4\xeb>w \x03\xefd\xfexkM\xd8\xb6(\xab \x94\xae]\x81r\xe5\xae\xb33]~\xb4\x94\xaa*\xb7z\"\x90\xe0\xd5P \xf5\xab\xbdT\xe3\xb1\x13\xf2\xcc\x94\x05C{\xf8\x94\x01\xfc\x1b\x9a\x17K\xbf\x9d\x13(\x8d30N\xc4\x88\xaa\xae\xf0Pn\xe4\x17\x81\x00@\xe7\xcb\xbb\xab}\xed?S\x03w\xd6GT\x806E\xcf\x9es_\xd9\x82$\x8f q\x87h[\xd6\xf2(\x11_S\x9e.$\xfbF\x00\xe0\x15\xebY(@\xebf\xbb-\xbb\x0e;i\x8e\x97O&F\xe3\xcf\x87'\xd9\xcc-\xd3\x947>s\xd5\x16\xbd\xefJ\xfc[\x01\x8b\xdfIE\x05A\xa5\xa8\x8c\x8b\xbc\xbe\xa4\x03I<\x18\xc0\xf2u\xcb\x8a^~\x15#\xa6=T\xbc\x00\x193Pe\nm\xdc#:\x84\xb6\x98\xd0\x82z\xbc\xfe\xf41\x9a\x8d\xf8\xf3\xfa\xbah\xaf\xc4\x9a0\xe8f\\\x0d\x9e\x80 \x89_\n\x92\x97\xfd\xf4\x8f\xd1\xb6\xc5\xdd\xea+\x07@\x17a\xd2\xae\xf4\x91;\xb3\x88\x04\x9d\xc9\xd1q\xec\xf9\xeb\xa2\x06v\xc3Z\x15\xca\xe8\xd8HV\xcac\x08\x91Q\x12k\xa46E\xe9Q\x91\xd0V\xd6\xbc\xb7u\xec\x80\xcckDZ\x06)\xe8*\x1c\xc4\xfd\x8e\xcf\x0e\xde\x99\x06\xf0\x81\xc3\xce8\x10\x19`\xa3\x94\xba\x1f\n B\xfc\xc1\xd6+o\x03d<\xf9\xa66\xf6\xb8l\xcbz\xc5?TW\xe3\x87\xea\x82Y\x18[O\xcbS\x0f\xb6[\x9ev\xe2\x0b\x1a6l]\x15\xeeCx\x843\xd1\xe2\xd4\xd5\xda\xa1\xad\xbe\x98\xf2\x0d\x89\x02\xc6g\xd3P\xa8\x13\xe8\x9b+\xb9\xa1%\xc0\x06\x01\x14\xf0\xaff\xab\xab\xf1`!'\x05\xf4\x17\xa3\xba|!\xa0\xbf\xbeU\x16_\xd9\x02\xbb\x93/P\xbel\xb1t(k\xc7\xe4\xfd\xb1*\xbak>ui\x91\x0f\x17\x85\xb8\xe0a\x95=OaX\x93\xc7\x9cH\xe2\xa1\xe0\xc15m\xeb\x9a\xd8\xd6E\xb5\xdeW\x03ts\xb9\xe7_X\xf6\x07\xee\xeb\xf1\xcdt\"v\xcd\xbe\x87\xb2\x17\x19\x1a\xf5\x1547\xe2;u\xd8B\x80\xbf^\xb3ZV\xd5^\x81v\xba!c\x7f\xeatYz2\x1bb\xca\x8e\xcf\xf5\x9b\xb2\xd7\xe4\xb0\xc2h>V\x7f\xb7\xd7Mg\x1c\xc8e\x7f\xa8\xf9\x1a\xcbnB\xc34Z\x84\xa8\xdaX\x05\xab\xa7M9\xe0\xb4r\xb3]p \xedO\x9d\xbc\xbfS\xf8\xa5\x11a\x15gP\x89Y\xe7\x82\x0d\xaf\x8bm\x04\xf6\xeal\xb6z\xbfUT\xc1\xfe\xb4\xed\xbe\xea\xcb]U\xca\xc2M\x9f}p\xc3\xa4\xd7\x19)<#\x1bL\x9d/(S}6\xe0>\xcenW\\\xa9S\xc4\x0eG\xa9\xc9c\xc6\x0b\xa72~\xe3\x9fU\xbb\xb7%\xf2H\xf3\xae\xeb\x02\xba~\xec\xae_9sF\x82\x03i\x90!\xa8\x0e:\xfb\x0f\xd7\x08\xab\x9f\xaf\x07U\xfeOE\xaf-\xbaN\xee\xea\xbd/\xae\xd8\x07\xf6\xb7=\xeb\xfaS\xf9\xbb\xc3\xd9x\xcc'w\xcbC\xc8`\xdbt=0AR\x15\xecV\xcb\xad\xa2}-\x0c\xc0\xde\xfd\xbd\x1b:\xebM\xeee\x96zSs\x82\xaa\x8c\x08e\xbd\xdf\xb2\xb6\\\xeb\xbf\x89\x01B\xf1\x0d\xe4F\xce5\xabu\xe0\xf7\xf5\xb0w6[1\x9f\x0bo\x15\xeb\xba1\x84r\xb7i\xdf\xf1P\x7fa\x91\xf1\x9c\xba?rpg0\xb5%\xbcU\xb9-\xb1\xd1\x15\xd7j\xe4\xde\x85^\xcb}U\xb3\x05+2\xc3\xbe\x9a\xe1\xadr\x17\xc5\xfc\xd3\xf9%T\xec\xb2W\x1bve/Gp\xbd\xce\x15[\xc2\xb2\x83\xc8\x87\xf08_\xdc\x03+\xd6\xd7P\xecv_1\x8a&\x06?\xde\xef\x8b\xa5q\x07\x8f\xa8h\xa1\x0d\xf4\xed\x9e\x01\xffGYo\xca\xb5\xa0U)pHEP\\\xa8\x1a\x92\xe9\xae\xac\xd7\xd5~3[\xc5\x16\xf2)\x03:7{c\x02\xeb56\x8d\xf9\xb09\xa1\xa1L\x9c}>\xeffokV\x05\xb1\xf0oY\xa7@y\xd1\xbd\xc6\xfe\xc8\xbb\xdc\xa9\xeaM\xe5U\xdd\xccys\xba7N\x1f!#\xb3\xf4\xc5\x1e\xa6\x8f\xba\x12K-\xaf\xb6e7\xac\x9d8\xf5\xbdVu\xf5\xfc\x95\xea\xd7)\xc1\xbe\x13\x7fg\x998\xe4\x0fc\x82\x86\x0fM\xbba\xedC\xc5\xc2\xa5\x9d\xfc4,\x9e|\xf6\xdb\xf0o!\x93\xfbw\xa5\\\xec\x95S\x1e\xd4\x94\x0d\x16\\}\xd9\x88F)g\xed\xf1\x07\xa5\xb3\xabCaWS~\xa2\xe3\xf1\xd8\xc5\x94]\x04\x8d$~\x17N\x129\x085`\xf6\xeas\x8b!\xc7K!\xe3\x84\x90\xbd\xd1\x84`D\x01\xc1^AD\x14\xd0Q\x85T\x0e\x8b\xc7_\x94\xf4qV\x1eK\x90\xc9\x92\x9b\xcb\x82g\xb3d\xe2\xb3\xa41Z<\xee\"\xc5\x8e\x17\xb2Zr\xf3Z\"\x99-\x99\xb9-q\xec\x96H~\x8b\xaf\x0d\x0f\xcc\x17,\xc3%3\xc7\x05\xc5r\xc9\xc8sY\xcatI\xe2\xbadb\xbb\xa4\xf0]<\xce\xd0r\xc6G\xe0\xbc\x1c\x8f\xf5r\x14\xdeK\x1c\xf3%;\xf7\x05\xcb~\xc9\xca\x7f\xc13`\xa290\xf1,\x98\xe0P\x88\x13.^\xcc\x84 \x8a\x16\xa3\x16T\x08>L\xcc\xaa+\x9a\x13\xe3\x9b\x04\xd1R\xc5\xb8\xf2ed\xc6\xc4pc2\xb3c\xd2\xf81\xbe\x16\x84\x92'N\xe4\xc88\xbc\xf5(i\xe2<<\x194\xd9\x03\xc1\x95\x89b\xcb\x84\x94=S\x183!\x9fN\xe4,\x13o&>\x98x\xeeL\xa8n \xfc\x99D\x06\x8d\x0f\x81\xcc\xc6\xa2A\xf3hpL\x1a,\x97\x06\x11\xe5x>M\x0c\xa3\xc6/6\x9c\x85U\x13\xc9\xabY\xc6\xac \x054\x82]s\x04~M\xb0t\xce\x96\x9e\x8fe\x83\xe0\xd9\xa43m\x1c\xee\xfa\xa0\xa8pV\xb6M\x88o\x93\xc8\xb8q\xf8\n\x8b #X7~!a\x9f\x8cpn\xeeMv\xf6\x8d\x9b\x7f\x93\x93\x81\x83\xe1\xe0\xc4\xb3p\xa2x8 L\x9cX.N@\x1a\xd8_:,;\x02\xcb\xc8I\xe0\xe4D\xb2r<\xd5Ma\xe68\\!\xc4\x80S\xd89\x9e&\x1f\x16\x02\xce\xc8\xd0 \x8a\x00\x1f\x83\xa5\x93\xab-F0ub\xb8:v\x89_\x9f\xc0o\xef@\x1bG\xc3\x88\xfb\xe2\xbe\x8dS\x84}\x85\x80\xaf\xc3\x1fV\xd6\xd7'\xea\x8b+y\x92\xa0o\xb4\x9cop/\xc5'\xe5\x1b+\xe4\x1b%\xe3\x1b'\xe2\x8b\x96\xf0M\x10\xf0\xf5\xc9\xf7\x06\xe3\x87{\xd9K\x85{1\xb2\xbd8\xd1\xdeL\x15\xca%\xd7\x8b\x17\xeb5\xcb\xb5\xa8\xe0\xc3U\x8bdz\x03*|\xfdr\xe49(\xcf\x1b|\x95\x80\x8e\nd\x14\xe6\x0d\xea\x13\x86Ey3\xd7,\xb3\x1c/Z\x8c7(\xc5\x1b_\xcf\xa52\xbcx\x11\xde\xf8\xb2y\xdfA6\xf9]\xac\xf8nPz7\xbe\x82\xc9\xb2\xbb8\xd1\xdd`\x81\xc2\x82\xbb\xb8\xf7\x91Slw\x89\xd4.Fh\x17\x1d\x14\xbf\xe4al`b\x04v1\xb3\x04\xa0\xe5uC\xe2\xba\x93\x9a,\x97\xd6\xcd0Q\xe1Euqo\x01\xe2\x05u\xa5h\xae\xc7\xdf\"9\xdd`\x8c\x00\x15'@ \xe9\x06\x1b\xbc6|0\x01-\xa1kJ\xe4\x06\x1c\xa2Ebq\xf2\xb9G\xaav\x8cp\xae\x1c\xcb\x02\x0es\xc8\xe6F\x89\xe6\x1e10(\xb9\xdcA\x0e7\xe00(\x96\x1b\x0c\x0dJ\n\x17\x15\x0e\xdc\x9c\x00QA\xcb,\x81\xeb\x11\xc0E\xcb\xdf\x06c\x81\xab]F\xe1[\xb4\xecm\xb8di\x92\xb7J\xcc\xd4\xe2\xcf-x\x9bS\xee\x16)v\x1b-uk\xca\xda\xda+\xe7\x16\xba\xcd+s\x8b\x11\xb9\xcd+q\x8b\x10\xb8M\x92\xb7\xd5R\xb66\x7fAq\xdb4i[\xb5\xbfh\xf1\xe7\x16\xb6E\xcb\xda\xe2D;\xa35;g\xdeH\xb2S\x18Iv\x92d\xe7h$\xd9I\x92\x9d\xa3eMk\x88Ij\x88Ji \xc9\xce\xa5\x89\x0c i\x0cY\x92\x18\xe2S\x18H\xb2sI\xeaBL\xe2B\xe6\xb4\x85\x1e\x95\xb4\x901e\x01\x9b\xb0\xd0\xc7\xa5+\xc4&+\x90d\xe7\xc4\xa2\xd3\x13H\xb2\x13\x95\x94\x90\x92\x92@\x92\x9d\xae\xcb\x82i\x08\x11I\x08\x18A\xca\x98\x04\x04\x92\xec$\xc9NL\x9a\x01Iv\n[\x92X@\x92\x9d6O\xc1T\x82\xd4D\x02\xe7\xdc@\x92\x9d\x87F\x92\x9d \x03\xe1t\x81\xd8d\x81\x88T\x81\xe8D\x81\xb84\x01\x92\xec\x8cK\x0c \xc9\xce\xc1\x8e\x91\x0c\x90\xa3\xcdE$\x02\xe0\xd3\x000\x92\x9dS\xed/\xc3\xd5\xe4crz\xd5\x84xp\xa0\xf35\x11\xf64\x07\xa7R\x1c\xa78\x19\x11G\xf9\xb3\xbe\xdd\x07$\xferJ\x9c\x9d\x19\xe8*F\xee\xec\xb5\x01\xc6j\xe53\x8dI:\x85\xcft\xdd\xed\x82g\x86\xcb':\x18\x8fT\xfbl\x0c\xd6\xcaRFm\xfdW\x00\xbdBl\x8b\xe0\x03\x00\xf1\x10\x98p\xe7\xbdJm\xd2\x10\xfbL\x80\xdc\xae\x19\xaf\x9d=_\xb3=.\xd8\xfa\xfa\x9f\xbf\x7f\xae\xe5\xd7F\x197\xaf\xbb~\xccf\xf0mZO{\xcd\xc3\xd7\xfa\xe0\xf9\xcbk\x8d\xa0\x0e\xfaR1\xa4\xa5Tu\x92sa\xbe\x00\xb1\xbd)\x7fl\xd9\x9a\x957\xae#\xb6\xf1\xb1\x1b\xc7\x96q\xc2V\x81kj\xb5\xc1\xaaRX\xae\xf9*\xf3\xe2\x1ebp\xc3\x07:\xd3\xb1\xd89\xa2H\xc7b\xd3\xb1\xd8\xc2\xe8X\xec\x00g\xfc\xec\xb7)!\xd7wf\xb6\xc1\x11CS\xc7G\xfa$\xec\x8a\xd2\xce$\x7f=\xd7\xdf\xfaG\xe2\x8f\xbb\x08\x1dI\x1c\xb1\x10\x0b\xdc\xeb\x1a\x82\xee!\x8e\xff\x8d\x80@p8\x82\xbe2\x96\xf9\x1d\x00-\x83\xbc\xef\x08\xd6w\xe6\xba\xc6\xf3\xbd\x03u\x0d\xb2\xbdC\\\xef\xf8\n.\xe7y\xe3\xe2\x95\x93\xe3\x8dcx\xc7\xf3\xbb\x15\x8f\xdb\xe1\x0f\xc3\xee\xf6\xbe@/\xb3;K\xa7\xf7r\xba\x11m#\xc4\xe7\x0e\xba\xc0\xb5\x85\xdcL\xee\x9c\xce\x03\x91CL*\xd4\xfe\x16f\x8b\x08r\xf3\xc4\x02L14W,k\x0d\xb32\xc6\x82\xaaT^\xd6X\x987\x16`\x8e\x05\x9b\x98\xb4PC\x93\x16\xc1\x1fC\xbd\x10iX\x0e\x19\xfe\x05J\xcb\xcb#\xc31\xc9\xa2\xb8d 1\xc2\xf0\xc9\xa2\xe3\x94\x8fS\x86c\x95E\xf1\xca\"\x82\x14W\xedl\xec\xb2e\xfc2\x14\xc3\xechA\xc0\xd2\xd02\xbcu|\xc1\xb2\x12\xd5\xe2\xa8jY\xc9j\xb8:g#\xac\xa1(k\xcbHkt\x8e\xb42:G\xfa\xf7s\x8e4\x82\x89\xe9\xfdz\xf1\x923g\xde,|\x9f\xd9)\xd3\xd6\xcf0\xa2iJ#\x9af\x9e/\x1c\xa2i\x12M\xd3nD\xd3\x14F4\xcdC#\x9a&\xd14]F4M\xa2i\n#\x9a&\xd14\x89\xa6I4MiD\xd3$\x9a&\xd14\x89\xa6\xe92\xa2i\x12M\x93h\x9aD\xd34,\x07e\x8eh\x9a\xc2\x88\xa6I4\xcd\xc7I\xd3\xa4\xf3\xa6\xe3\x0e\xf3\xa5\xf3\xa6\x8f\x18\xdc\xf0I\xc9t\xdet\x8e(\xd2y\xd3t\xde\xb4\xb0\xdf\xfdy\xd3\x9a\xc2\xdf\xdf\x0d\xec\xfd\xae\xdc\xee\xab\xa2W;\xdb\xbb\xa6;$\xe5\x7fT\x97\x80\xbe\xb6\x03v\xc7\xd6\xfb\x9e\xd7\xab\x80\xbe-\xea\xae\x10\x9b\x97\xf2c\xae\xeb\xcbm!~\xbc*x\xdb\x11C\x85\xf49\xa1\xdek\xbfOt\xe5\x1f)\xcb\xfe\xaa\xe8Ve}\xd9\x04\x88e\xfa2=\xc6\xf2\x7f\xf3\x97#\x0e<\xbdh\xf6\xbd\n\xc78\xae\xaaxZ\xd9\x89\xcerB\x90\xb1\xc1\x0br[\xd4=\xb3\xa8\xbe\x02\x06\xac@\x90\xac0\x80\x00\xc0\x9f\x8a\xee\xaf\xa2 :&\xdb\xe2\xae\xdc\xee\xb7\xb0\xaf\xcb^\xecd\xdf6\xed\x17\xb8U\x88\xa5\x04\xca\xfa;7\xe3l\xc7Z^8\xdb\x87)\xaf5\x0f\xee\x03\xd5\xf9OE\xf7\xb9\x1b+\xa6\x0e\xa8m.\xc5K.\xd6\xbd\xe4\x16\xac\x9bZ\x81\xceSWr\x08 4(5i\x94\x9d9\x85hP\xe38MgS\xf4\xc5\xc2\x00:\xf1-\\\x93y]\xf4\x85X\x02\xd6\xf7\xa24\xe3\xf8z\xd9\x8a\xf3{\xe5\x17\x95@\x9f\xebM\xe5\x00\x90@\x8fPM-\xe6\xad\xbf|\xfe\xf8\xc9\x03\x0fV\xac\xbe\xea\xafa\xd7\xb2\xcb\xf2N\xf6O1^\xf3!\xbec\xfc#\xa7g\xb24\xb2\x10\xfb\xaa/w\x95\x0bP\xd3e\x1c\x8a`E\x14\xab\xe6*1\xd2\xb8@\xfe\xdc\\Mwu\xaa\xe6j2&\xa5\xc6\xd3r\x01\xbbau\xff\x88\xf5\x85\x85\x1b\xe7\xaf\x88\x90s+\xfa\xbe-/\xf6\xbd?\x15%T]i\x81\xd4\x18\xc0U]\x1a&\x00\xd2\x9c\xbcc\xd3P\xb1\xd0\x16\xec\xf4\xa3y\xf1\xf3\xd1\x8e\xf5\xf8\xb2\xde\xb0;\xec\xe3\x0f\xd7Yvs\xadDm\x86\xeb\xb5\xda\xde\xf0\x1e\xf5R\xb78\xf9M\xac\xa8\xf1_\xd8\xfds\xf9!\xb5+\xca\xd6\xb7\x9f\xc3m~\x1c~Q\xcb\xde\x8aJ3\xf0\x14S\x14PN\xdb\x1d\xff~\xd3\x04$\xd8\xb0\x1bV\xf1\x16)\x16\xc8E\xdf\x8b\x0f\xbca\xf7\xd9\xe9\xd0\x1c\x9az\x0fr\xa5\xb7S~dWe\xfdc\xd5\xac\xbf\x9c\x0c\x7f{Sof\x7fyu\xcd\xd6_>\xdd\xb9;u\xbd\x19\xae}\xcd\xaa\xf2\x86\xb5\x9f\xee<\x08\xe4\xcfE\xcf\xda\x13s\xcd\xdb\xc1\xb6\xb8\xe7\x1f\x022%u\xa3\xb6\x16\xfak\xd6150\xdac\x8d\x8b\xb4\x88sg\xd0*\xa0\xab\xca\xb5\xd8\xac\x90\xaf@\x8e\x10\x8a\x89x\xcbZ\x06l[\xf6\xbd\x93\x15\xb5\xd9K.\xab\x1c\xf8]5\x1d\xe7\x03\xd7\xc8\xef\xdb\x11\x83amor\xd0{#\xa9B\xee*\xdbE\x82?\xb2\xf6\xa6\\\xb3\xd3\xc1\x07\x91\xcc\x85\x11\xc9\x9cH\xe6\xa3\x11\xc9\x9cH\xe6\xa3\x11\xc9\xbc'\x92\xb9\xdd\x88d\xae\x8dH\xe6D2'\x929r\x95D$\xf3\xc1\x88dn\x1a\x91\xcc\x89dn1\"\x99[\xaf!\x929\x91\xcc\x1dF$s\"\x99\x13\xc9\x9cH\xe6\x86\xe5 \xfc\x12\xc9\\\x18\x91\xcc\xff\x08$\xf3\x8bfc\xce}e}\xf0''\x11\xdc\x86\xfd\xfc?-\xbb|\x01O\xff\xef3c\xe3P\x91\xe6N\xfb\xbbSE\x9a\x1b\x91))\x01\xf5T\xf9\x98\xd3\xee\x14\x90e'\xde\xf5w\xeaZ\x9b\x0e\xee\x9fX\xff\xe9\xae\x93\x00\xdf%\xeb\xd7\xd7|\x90\xbf\xeb\x04a\xd6Do'|:\xe3&\xf5\xf3\xc3P\xea\x90A3\x8a\xa7Q\xc1\xa7O\xc6R\x10\x9eg\x1a\xe1y\xb8\xfd <\x8f\xf0<\xe7\x95\x84\xe7 #<\xef\xd0\x08\xcf#<\xcfe\x84\xe7\x11\x9e'\x8c\xf0<\xc2\xf3\x08\xcf#\xac~\xfc\x97\xd5\xe7\xb7\x1f\xdf\xbfyu\xfe\xd3\xf9\x9b\xd7/\xac\x7f\x1d6\x9c\xd51\x8brQ\xd95m?\xd6\x18\xde\xf1\xff\xfb\xf1^\x0f\x04\"l/?\xbe\x92\xe1*;X\x17\x07\xe7\xf9\x19ex\xf9\xf1\xd5\x8b\xc9\x7f\x8d\x07;NC\xeb\xf4\xf0\xfa\xcd\xc4\x05\xff\xcf\xc1\xc7\xfc\xfd,|=\x07c\x10\xab\xf7\xdb\xe9\xfa\xc4\x1e^\xd7%/?\xber\xfd\xc4\xeb1y\xa9\x92\xac\xe3s\xef\xe6B9T\xc6~l\x9bb\xb3.\xba\xfe\xd3\x1d\\\xe8\x7f\x9bk;+\xe7\xc9\xb8K\xfd\xfc0\x9c\xa7>\x9eT\xd4\xdf\x0d\xa7t\xbb(:I\x9aM\xbe3\x8f\x83\x10\x93\xc1A\xf2\x1f\xa7\xf8\xe9\x9a\xc1E\xd5\xac\xbf\xa8\xe7Y\xae\xed\xef\xae\x8b\xee:\xb1 \x93W\xc2\x1ff\xae\xea\xb9_\xdb\xbe\xc2\xba\xd9\xb0nW\xb8\xce\xa8\x0d>T\xd5\x8d\x7f\x03\x0b7Z\x90\x02^5\x1b\xdb\xd7\x9c\x9d\xe5\x05A\xa6\x17\xa0\"= \xc1 \x9c\xc1\x9fiE\xd7\xd2\xa5\xba&\x0fz\xfaA.\x17\xf8\xea\xba;\xd1\x1b\xd4O-7\xb6\xc5\xed\xea\xd8\xaaU\xfc\xcd7\xfb~\xb7\x1f\xd6\"\x86\xb6\xcc\xd3\x0e\xaa\xe6\xea\x8a\xb5\xf0\xac-n\xd5\xc3\xbe=\x85\xbf8\xb5\x96\xdc\xe0n\xdd\xd4\xcf7\xfc#t[\xd6e\xd7\x97k[\x8c\xab\xe6\xea\x11\xabZm\xbb\xabUP\xd6(\xdc0\xa5\x85\x9b'\xf8D\xcb\xa4\x05\x1b\x01\x04\xc4\xc2\xa4\x85\x82+\xed\xebhh \x97\x81k\x90\x81\x90\x86\x93\x15\x93\x86\x0b\x8c4Dx\xa4\xa1\x83$\x0d\x1f*i(\xd11i\x11Q\x93\x86\xd4\x14\x93\x16\xe9\x1d7^Mm\x14\xec2N\x04\x1f^0\xdc\xb6\xc5n\xc7Z\xfe\x05\xd3\xfa\xc8B\xa3\xf5\xea\x88\xe6\xa2\xde\xa8\xef\xd9\xa2\xf5\xf0UL\x93\x15\xed\xa0\xac\xbb\x9e\x15\x1b\xf1\xe1]\xdc\xcaa\xde\x03bE\xd7\xfc\xa3x\x8e\xa4\xaa\xebZ\xb3z\"N\x15UqA\x93\xe4\xe3\xfe\xd0/B\xf5\xd5\xe4\xda/\xec\xfel\x14FS4\xcb\xa2e\xf3P\x04\xdca\x03\x15\x13\xa6x\x15/\xaf;\xa5\xf0\xa5\xb5\xbc\xbaf\x1bh\x14^\xf5F\x88\xa8\xcc\xcb\x1f_\x9d\xffEnP\xff\xdc\\\x8d\xcd\x9c\xc7x\xbf\xee\xf7-\xd3\x95\x14\xe2\xc0\xb5\xd4\xdd\xf3\xb0\xed\xfa;\xe1s\xd8\xf5\xae\x9a+{\x19q%\xc4\xae\x1f\xf8`\xb0\x91K\x07\xbeH\xb0;C\xad\x11\xec\xca\xc0\x80\x19p\xa6\x9f!#\xd6fH\xe1\xe9\x12\xe2\xca\x92M\xf9\x17\xb9H}9Q\xbdme6\x8c\xe6 \x1e~\xb9\x99\x96I\xae7\xa9\xa0Z\x95\x17.\xeeC\xc5\xec\x1d\x8b\xab\xe0\xa4\x19\x9e&\xfb@\x86\x04\"\n\x80\xee\x17\x90\x9a'\xe1\xf1w@\x95\xf3\x8dAYs%\x82\xd9\x12\xb9\xf3%\xf0\x19\x13\x99r&\xd2\xb2&<\xeex@\xd1y\x13\x8b3'r\xe7NDfOd\xce\x9f\x88\xcb\xa0\x88\xcc\xa1\xf0\xb5\xe1!\xbb\x02\x9bE\x919\x8f\x02\x95I\x911\x97bi6ER>E\xa6\x8c\x8a\x94\x9c\n\x8f3\x91m\x11\xce\xaa8J^\xc5\xf12+\x8e\x92[\x11\x97]\x91=\xbf\x02\x9ba\x915\xc7\x02\x9fe!\x97\x11\x11y\x16\xf1\x99\x16\xc1\xa1\xf0[D\xaeE\x86l\x8b\xe0\x86\x00jA\x85\xc8\xb9\x88YuE\xe7]\xf8&\xc1\x8b\xe6\x86!2/\xb0\xe5\xcb\x98}\x11\x93\x7f\x919\x03#-\x07\xc3\xd7\x82\xbap\x16Fr\x1e\x86\xc3\x1b\x7fZ(\x13#W.\x06:\xa1\x00\x91\x8f\x11\x95\x91\x11 P'ee\x84|:\xd9\x99\x99r3\xe2\x83\x89\xcf\xcf\x08\xd5-!G#1K\xc3\xc7r\xcd\x96\xa9\x81\xce\xd5\xc0ek`\xf35\x10Q\x8e\xcf\xd9\x88\xc9\xda\xf0\xe5md\xca\xdc\x88\xcc\xddX\x96\xbd\x11\nhD\x06\xc7\x11r8\x82\xa5s\xb6\xf4|\x99\x1c\x88\\\x8e\xf4l\x0e\x87;~\x99/\x9f#sFG(\xa7#1\xab\xc3\xe1K~\x19\xfa>\x8e\x11\x99\x1d>\xfa\xb9/\xbb#\x7f~G\xf6\x0c\x0fw\x8eG\xce,\x0fL\x9eG|\xa6GT\xaeGB\xb6Gl\xbe\x877\xe3\xc3\xcf\xbf\xc73\xf0\xb1Y\x1f y\x1f\x91\x99\x1f\x9e\xea\xa6d\x7f8\\\x19\x99\x15\xb8.\x81\xcb\x00\xf14yqx\xa5'\x07$k\x16H \x0f\xe48\x99 \xb9\xdabD6HL>\xc8\x98\x11bZ_nY\xd7\x17\xdb]\"2\x84\xfb\xf2\xfdT\x8e\x1b\xf2\xbb\x96\xdd\x94\xcd\xbe\x93\xfc\xb6S\xf8\xa9i\x15\xc9\xad\x83\xff\x0e\xdf\x9d@\xd9?\xed\xfe\xa5\xd90C!I\xec\xdc\x0f\":<\xda\x0e\x18\x13\x04\xae{\x00f\xc2\x87\xf7\xaf\x068\xd3\xd6\xf6}Q\x7f\x01\xff\xce\xda\xe6\xb9\x9c\xfaE\xe7\xe7\xcf\x17\x9aG\x8eq\xcb\xfeR\x0eb%\xfej`\xcf\xbd\xa1\x14$P)\xfe\x1c\x91c.\xc7\xb5JH\xf0\xdd\x16e\xdf9\xa0\x041\xc7\xdf\xa9]\xd4\xb5\x80\xda{\xa9\xaeU(\x0c\x1eU\\\xfe\xc6\x0fJ\xcb\xff\x98\xb5\xb0\x05\xbc\xbaf\xeb/\x9f\xee\xc6t\xee\x11\xaa\xe6\x0bV\\a_ZK\xfb2\xa9\xb8R\x8f\xcc\xb6\xe7Sn\x05\x1b\xa2g\xf3b\xf9\x1b\xf5\x04\x95\x17\xe9\xc4#(/\xff\xb3\x8f\xc2\xe4\x95\x93y\x1b6\x9b\xb7\xfc\x8b[\xaf\xea\xa9\xfd\xf0\xbe\xb3\xdf\xae\x8b\xee\xfa\xefJW\xcay\x88\xdfp|\x9f\x0c\xe9\xfdD\xcb\xe8\xf0\xf8>\xf5\xc3\xc3\x88X\xc5\x1c\xdcGG\xf6\x01\xb1\x1b\x82[\xfb\xe1\x19K\x1a\xb1\x1b\x88\xdd`7b7\x08#v\xc3\xa1\x11\xbb\x81\xd8\x0d.#v\x03\xb1\x1b\x84\x11\xbb\x81\xd8\x0d\xc4n v\x834b7\x10\xbb\x81\xd8\x0d\xc4np\x19\xb1\x1b\x88\xdd@\xec\x06b7\x18\x96\x03i&v\x830b7\xfc\x11\xd8\x0d\xd7Eg\x0eQ\xd3\xc3%\xf8\x8f\xc39`w\xe2Z\x1eyq\xd8\xcd \xb0Z\xa4\xed\x82hb\xd7\xecN\xf5\xe2\xc9\xe9\x13e\xfdb\xbe1\xeedKX>\xcf\x11\xb8\xde~w\xd5\x16\x1b6\x80{B1\x9amV\xbb\xaa\xa8\xcf~\xe3\x95\xf4\xa1|/\xe5\xd5\xef\xab\xa2\x16\xd5\x12\x07\x14\x0d9\xe5\xd5=(w\xa0\x1e\x03\xdc-_G\x94}'\"h\x05\x03\x0d\xafOt\xa5\x1f\x02\x12\xec\xe3\x917\xd7\xf93\xde\xbd\x12\xbf~\xf3\xa4\x1e*\xbf]5\"\xf3\x0c\x1a(z\xd5\xdd\xf9/\"\xae\xb7\xbc)\xc9\xd8\xc5\xc0\xce\xff\x9b\xb7G#\xe6)\x19\xe1\xc2\xc7\x99\xd9\x1c>\xbc\x7f5\xef\xf3\x94\"N jh\x07\x11\xb3 \x07\x04\xa2\x12\x88\xea\xbc\x92@Ta\x04\xa2\x1e\x1a\x81\xa8\x04\xa2\xba\x8c@T\x02Q\x85\x11\x88J *\x81\xa8\x04\xa2J#\x10\x95@T\x02Q Du\x19\x81\xa8\x04\xa2\x12\x88J \xaaa9\x00-\x02Q\x85\x11\x88\xfaG\x00Q\xf9\xff\x1a\x0e&\x9f\x90\xa2'* \xca\xdc\x84\xd6\xc0\xa2\x00\xbe4\xa8\xca\xa7\x08s(\xca\x0c\x9f\n\x90\xeb \x80\x0b;U{4\x02;uc\xa6\xaf\xe4U\x13\xccT63\xf1\xf7 Tj\x85G\x0d\x07Ot\xa5\x1e)<:F\xc2\xb4IQ\xc4\x0b,\xc3!\x18\xcdY\x0e\x08BT\xa2\xbdY\xdbjp_\x06\xb3\xb1\x01\xf0\x91\xf5F[UX\xa9\xae\x8f\xc2\x88\xc4Oz\xd4\x12\xbbM\xce\x83R\x8c\x9b\x9d\x90\x94\xda\x9e\x1c61\x9a\xcb\xfe\xb6h\x99\xd8O\xdd\xed*\xf9u(6n\x8a\n\xbei\xea\xe7\xca\xa1\xab\xcf\xae\x9b\xed\xb6\xa87\x9d:`\xdb\xf5X\xb1\xf0\xe3\x93\x0f\xfc\xc8\xae\xca\xfaG\x01M\xcb\xe5\xe1\xb8\xec\x1b\xded\xe9@\xa6G;\x17\xbb\x8eE\xd5 \xe8\xc3Y\xdb\xbe\x81\x0d\xeb\xc5\xb9\xea\xd7Ll\n\x16c\x95u(\xd6E\x0d\xd7E\xbd\xa9\x18\x14pU\xfe\xff\xec\xbdiw\x1c7\x92(\xfa\xdd\xbf\"\xae\xde;#i\x9a.\x89\xdali\xae\xe6\x0c\xb5\xd9l[\x12G\xa2\xdcw\xa6__\nU\x85*\xa6\x99\x95Y\xca\x85T\xa9\xa7\xff\xfb;@$r\xc5\x12\xc8\xcc\xa2ew\xc6\x993-\xb3\x12\x01 \x10\x11\x08\xc4\x02\\r\x93\xa3\xb4\\\x18\x19\x170\xf5\xa9&\x81(\x13t3e\xe5R\x8a\xfdm\xcey$\xa3\x1e\x81\xcd%\xae\x06z\x00A\xa68\xc0\xd4i\x11\x84(\xe3F\xd5,\x83\x14\xe2<\xfb6^}\xbbd\x99\xacK\x8f\xea\xb46\xe0\xc3K\xff\x13\xf8Qe\x14\x98:N8[\x9c\xd7\xae\x9a/\xfb\x95\x03\xe6\x9f\xf5\x17\xf2\x9b\x12!\x80\"[\x9e\x0fZw\xae\xb3W ,n]v\x84Z\xc0M\xe1\x0e\xdd\xf2Dtif\xc6\xb7\xc5\xf1f)N\x93\x92r\x85G<\xe5\xda\xd9\x0fx\x07=\x0b\xb2\x90[4\x8a\xf4\xefTa\x9b\xca\x0b]\x8aV\xb4\x8a\x8b8G\x10-\xc2\xdc\xfc\xf0G\x1c}\xbb8g\xe6\xa8m\x9a/\xce1\x1di\x1dd\xc5\x8d\x10\xc8\x7f\xd2{\xcc\xb28Ia!\x83\xb5,\xcf\xe2\x0d\xcb\x82\x85%\x0c\xa8\x06\x98\xc5\x8d\x0f\x08\xc9(\xb5\x1d\xae\x7f2J}\x9f\x9d\x92Q\xa6d\x14\xdd\xefS2J\x0d\xa6d\x94)\x19\xa5\x82)\x19%\x9b\x92Q\xf40%\xa3(\x98\x92Q\xa6d\x94)\x19\x85h%M\xc9(%L\xc9(u\x98\x92Q\xa6d\x14\x0dL\xc9(\xdao\xa6d\x94)\x19\xc5\x00S2\xca\x94\x8c2%\xa3L\xc9(5\x18#1`JF\x910%\xa3\xfcQ\x92QL\x89\x1d\xc6\xaax\x15\x83?[\xc4Q\xca\xa34O\xcf\xd2\x8ce\xfc\xce\xdf\xa5\x84b\xcc\xd1V(_\x0bY~(p=W\xa8\xde\x0bL\xcdT\x10\xf5\x13\xc8^\x90\xd3$kI\xcfQ\x89J\xf2r\x96\xe4\xa98h]\xf0$\xe2a\x99s\x10\xf1\xcfY37 HA\x86\xfffp\\`\x93\x1b\xe7\xbc\xc2\x97fq\"x\x16\x03\xcerG,\xc2\xa9M\x04\xae\xb9\xbc;y\x8e\xd1R<\x7f*\x17F\xc8\xd7l\xb1+f\xaa\x8e\xd0\x8d\xd4\x16=\xbe\xe2\xcb\xaf6\xcb\xc5\xc4\x1d^\xb13\x8b\xab\x85\x101\xd5\x13\xae\x7f\xf0\xd4\xb0\x10\xado\xbb7\xc9Oq\xd4)\x8e\xda\x05\x8a\x1f\x0e\xa68\xea\x14G5~9\xc5Q%Lq\xd4.Lq\xd4)\x8ej\x82)\x8e:\xc5Q%Lq\xd4)\x8e:\xc5Q\xa78*\xc2\x14G\x9d\xe2\xa8S\x1cu\x8a\xa3\x9a`\x8a\xa3Nq\xd4)\x8e:\xc5Qk0FLk\x8a\xa3J\x98\xe2\xa8\x7f\x948\xaa\xad\xa8\xbf\x16\x18\xad\xe1\xb1\xd5qv\xe2\x8dUA\xb8\x0c;\x96\xe5\x9b\x82M\xc4\xa2\x15\xaf\"7\x90\xc8=1(\x9fb/\xd0\xe5\xd1\x92'\x05\x0f\xc8\xc0h;\xc2*\xbd\xfcq\xd2p&\x0d\xbc=\x00\x0c\x85\xad\xfa\xe0s\xcd\x1f*~d\x17,=\x9f\xcdY\xca\xcb\x97\x88\x8f\xb2, \xe6\xb9\n+f\xed\xa8N7\x8es\xc1wUG\x9a\x11\xb6|\x1a\x9d/\x8a\xd2\xd4\xb2\xe3JHS\x81\xbb\xd8\xe7\xb6,H\xf4#~~\xf2\x81<\xd6<\n\xb2\xb4=\x96V\xccJ\x1f\xa9\xbad\xa1.L\xa8\xf1\xc6h}0\xc5$o~\x88\x82\x0cy \x85\xc56?\x80\x0d\xdf\xc4\xc9N*;\xf1g!\xc8\x1b\x9e%\xc1\"U7\xf43E\x98\xce\xc0\x9b\x11\xbaNdN;;s$\xae\xb1\x8eu\x0c\x9a9j\xfdT\x86\xaf\xbd\xd6\xb7\xfc\xfc\xf9\xc9\x07E\xa72R'WO\x92j\xb1\xcd\x85p\xad\x82u\x8d\xd29\x12\xa48Ii\xec\x96S\x91Yy5\xda+`\xd1n\xbfc\xecD{\xb0G`\x19\xe6\xb9\x88\xc5(\x8cu9\x07AlT,\xbaI\xb4q\xb5\xa7\xf4O&\x80\xda&\x8a\xc5+Z\x14<^\xb0x\x8d\xc6\x85\xff\xb1!\xcdZ\x11\xd4K\xeb\xbbB\xd4?T\xb67AJ\x17\xdb\xbc\x97ZoY\xf8\xc6\xd6f\x0c\xa0\xdb\x1c\xc0\xb6v`\x8b\xbc\x0e\xd8(\xc0\xc0\xab\xd0O\xfc\xb4\xb9y\xb6\xbc<\x0d\xff\x82\x8b\x0e\xc6\x08\xb6\xa5U\x7f~\xeewJ\x00\xe9\x0e\xacL\x0d\xf0c\xb1\xae\xd9aD`F\x02\x13\x97\x15\xf0\xf5sY_\xd3\x05\x8ad\xf7Fb\xee\xc4h\x13\xa3\x99\x18\xed}A8+\xa7)\xeavXM\x9d\xc2\xf6m\xd54\xfc#u\x14Zj\xb4}%\x08&\x8f\x89\xfaU\xe77A\xb0zO\xd4'\xf6D\xa2a\xc7\xec\x0e:\x8dgE\xf53\xde\x01\xbc\x02\xf3U~CO\xe7\x1d\x84\x0d\x8f\x0b\xc2 \xbfKw\xf0\x0d\xe3\xb0\x8e,\x0ck\xd9\x8aJ\x100\xcb7\x95\xe1\\\x1c\x9b\x98\xca\x9d(.\xef\xa3\xe4\xd9BE:\x82U\x11\x84\x0cR\x19\xa8/\xa5\xa9\xc8P,dR\x05\x8b\xe5\x05\x9e\xb0d\x19\xfb6\xcd\x92|!Nuv\x83\xf6\x97J7\x10\x0c\xda\x86\x0e\xd6\xcaKG\xe7\xf6\xd4\xb5\x9a!\xab\x93-y\xb4\xedS\xa9\x87\"i\xcdj\x9cSh\xfb\x04:x<\x0d\xf1\x19\xeb\xb4\xd9\x1av\xbb\xab\xd2\xbfP\xdb\x10\x8a;/\x838\x12R\x13\xe7Q\xd6\xf08\x94\xa7\xb1\xba\xa7\xa1L\xddW'\xb3z\xc7\xc5OGa\xf8v%\xe3\xa7\xdb\x84/\xf8\x92G\x82\xf3g|&\xe4\";\xe7x\xc3k5\xe3H\xe8\x89,\xd9\xc1Q\xb4{\xbb\x92\xaab\x1d\xd5BU _\xb3d\x19\xf2T\xe6/\x0b\xd5\xb2aQY\x90 \x9a\x16\xd52I\x99)!\xd7w\xce\xcf\xd9e\x10\xe7I\x91O\xbd\x0c\xd2E\x9e\xa6&\x0f\xe0\xfb\xba\xb9D\xe0\xd3\xc9\x05(\xe1+\xf7@\x0c6o\x90S*\x95_\xf2\xcb\x8b\xf2Od\x96\xa9\xb0\x9c\x05\x9d@\x0f\x89o\xe2\xab\x88'$\xceY\xa6\xfc\x13\xe9\xc3\x8a\xc5\xf2\xe6\xf5\xc4\x05\xe9\xaay\x1e\xbfP\xf4\x93\xc3@\x9a\xf1O\xb9\x14\xf0(\xdf\xcc\xcbt\xe7Vu\xa8\xb6\xe7n$+\x88\xa4Jj\xfc\x8d-\xb2\xa0\x91\xda\xfd-,\xc2\xb8^\xdeQZe\xed\xe6f[\xac\xec\xea \x9c$|\x15|V\xd5\\i\xc6\x92\x0c\x13\xb2\xef\x8a}B\x8cq\x06\xefcX\xf2E\xc8\xc4\xf0a\x99o6\xf5\x83BZ+\xe0-\x90\xe3\x98\xeb\x94;\x92\x7f\x81%\x8fba^aH\xbeiJtgZN\xb5\x8e\xe9\xb9\xfc\x8b\x1dS\x8b@\xa5\x08\x14y\x00\x0c\xe7Ud\x0b$|\xc5\x13\xa9Y\x11W\xbc\xaa\xa1*p\x14\xb5$\xbeF\x04\xc0\"\xe1,\xe3\xcb3\x96\x11\xdbV\x1c\xa8T\\5u\xc5|\xcb\x1aC\x1e\x14\xa3\x16\xac\xa8j\xc1\x8b\xe2\xd2\x9b4\xe1\x9d\xbd\xafx\xb53\xb4f\xd8\xad\xc9`-\xdel\xf0\xa5\x96'M\x81\xb7\x81\xbc\xd8\xe4\xc0q\xb8o\x04\xce\x1b\xc6u\x84\x85{\x15\x84Ub\x0eA\xf9\xb6T\xa7\x86\x0d\x9b*\xd3\xca\xa7\x0dU\xe9\xd2v\x1dEZ\x0c\x1dk\x04\x85YU\xfc\xb7,\xe2\xc9\xe2\xe2\xbfk\x14!nD\xc7/~sj\xf4\xdc4\x8c\x93\xfb!\x89\xf3-yVk\xf1\xf5\xefao\x05X\x1bp\xe8J\xf0\xf5\xcf\x07\xe8\x8e\x13\x92\\-\x92\x1f\xd4%\xb4Ez\xb9\x1c\x92j\xe5/5l{\xda\xd3\xe3m\xe3\xbd\x8aoa\xcb\xf2f\xc1\xa6h\x97\xe6\xb2\x12P\x18K\xabW5\x9c\x0e\xf6\x93\xc1\xd5\x04\x97\xf3A\x81_v\x97\x03\x99\xb52K\x0f\xc58\xfbf~i\x91\x19&\xdd;+L\x8b\xad\x95)V\xcf\x11kB\x9f\x8c1}\x8f\xed,\xb2&\xc84\x1f\x9d\xcc\xa2\xd0\x9b\xee\xff5\x85 \x14l\x93`a\xc9U\xed}\xfc_\xf2(6\xaa\x18\xa7\x9eb\x1b\xd3l\xc1\xdd\x9c\xa21\x9e\xc7AT\x06\xf1\x18d\xf1\x05\x8f\x8a\xeb\xdcp\xe8AT\xe4WEKya\x9c\x1c\x90\xe9\xf6\xb27oO_>\x91\xf7\xaf\xe0w\x15G\xb0\x08\x8e#\xf5\xdes)i\xf5{\x1e\xb4\x08\xf1\xda\x1b}g\xb5\xa4.U\xf3\x0f\xf3\x1d\xac\xe3u,/Uh\xdf\x8d\xa2\xcc$%\x1fj\xe3\x14\xc7\xc9\x03\xc8\xe2\x8c\x85\xc8\\r\xae\x92\x1f ^\x95|\\\x99L\x05\"\x198x\xbf\xe5\x0b\x85\xa8\x08B\x15\xb7\x15\xe2e\x9fE\xa3\x11\xb2\x08~@\xec\xf5\xae\x82e=y\xa0\xd9q\x19v\xb0&\x11H\xa4\x03\xf2\x07j\xb1\x9fV\x0c\xcc\x12\xff\xfaj\xf2\x0c\xfaD\xb8\x86E\xb7\xf6\x1c\xd9\xea\x1d\xd5\xea\x1d\xd1\xb2s\xd6W\x10\xcdo\x87\xa9\xf5\xbb\x84C\xec\x86\x85\xa3\x8b_\xdc\x82\xf8\xbe\x0c\n\x12\x08\xd6\x0c\x04j\xc8\xa1\x0f\x00j\xb73\xfd&f\x08\xfa)^\x19\x10\xdb\xebF\xf2\x8c\xbb\xacy\x7f5E\xeflG\x15G\x98\xc7\xb0\x95\x8e\x1b\xad3E\xea\xf66n\xed\xd6\xdf/*\xa7\xaf\x11\x06]\x9d0L\x05K\xb6\xe3\xfc\xa8Q6B\x84M\x13\xe2\xd2\xad\xc2\xd0\x9cic$\xad\xe7*\x1a\xa2g\x03\x8drk\xc4\x8c\xe0\xa9p\xe1\x07\xb7+\xd0i\xfa#\x10\\\x80\xa3\xb9\xff\xdc\xae\xbf\xaf\xca\x0b\xe4r\xf3\x11)Lp\xef\x910\xf5\xd4\x03\x8d\xc6cD\xbb\xcc\x91\xae\x81B\xe3r\xa7\x13\xd6\xd6\xd5\x05Lr\xa3\x07\x02mi\xd4\xfdc\xca\xcd8\x91)KTj\x12\x9d\x06L\xa2\xa3\x07\"\x85\xbf&\xd1\x19+\x8ad\x8d \xd9\x17\xd1\xb2\x80\xce\xc5s/\x9c=ZD\xa2\xb3+JD\x8d\x10\xd1\xa2C^\x91!\x8a\x8f\x17\xc1;\"dyH <\xa3A\xfb\x8e\x04Q\xa2@~\x11 \x19\xe3\xb1\xe9Rr\xf4g\xb4\xc8\x8fy\x92\xe3E|H\xd1\x9eQ\"=\x96(\x8f6\xc2\x83\x82\xaa\x8f\xee\x98#;\xda\xa8N\xcf\xa3\xa81\x92c\xd5!\xe6\x08\x8e\xa5\x99K\xaa\xc7\x8b\xda\x8c\x1a\xb11Ek|\"5\xa3Di<#4F\xaf\xac\xbc\xf7\xb9*\x04So\xb5\xe2jv\xd8\xa8\xcb<\x15\xca\x8a\x01\xb4\xdc\xa7\xe7;C\xb1\xb5\x11\x8b\x19\x13\xe8\x8b\xc3\xc0\xc1\x86\x9d\x02/G\x03K\xb1X\xb9(\xbeuu\n4\xcf\xf5\x1aG\xa2\xdb\xb0u\x85\\P+7\xed\xfc\xb9U\xf4\x03\xb6\"-p\n\xed\xe0\xe0U\x0b_\xa7`\x0bjs\x19V:[a\x1b\\B\xab\xc0;\xbe\xd4)\xe0\x06]\x117\xd8\x98\xc0p\x8e\xd1\x85bIx\xb4\xa5\x8b\xc3\x8a\xbbA\xd5\x83\xed\xd9+\xdb-*\xb5\xa2\xb1\xa1\x02\xb3&q\xa8\x06\xbd6q\x9a\xe0\x16\x8d\x02\xda\"T\x04\x9b\xbd\x00\x8el\x10\xb3\xa5\xd5?\x1a\xd8Ae\xd6tZ]g\xa5\x93\xe9\x9a0\xbd\xc6\x83n\x01\xab\xfas\xa7\x8cU\xfd`\xaf\xa6,>\xd2\x08\xbeCg\xba\xb4\xe6 \xbd\xd9\xe5\xc0n\x12@\xbd\xa3>\xe9\x00\xf5\xf6C\x12\x03\xeax\xf6\x9a\"P\xef\xa8g\xb2@\x05\xdej\xbd+\n\xbar\xd8\x02y?\xe5\xd4-\x90E\xb0\xaa\x19s\xb1l\xbdqo\xff\x9f\xa5|\x16\xc1}\x80\xf5\x0e\xb7\x1b1\xd9\xc2\xf0\x158=/\xeeY\x83\xa3\xc4\x16\xc1\xed\xe0\x03\xb7\x93\x0f\\\x0b\\\xfb\xccIj(\xc7M\x8c\xf5\xdb1\xd93\xaf\xc1Q\xbb\x8b\xf0\x95\x12\xc97\x87\xc0\x8a\x8d\x94<\x810\xb9\x8d\x0d@\xc24\xc8m\x0c$\xee\xe8\x93\xd6`\xa3r\xb7\xa8\x18\x81\x90\xf8P\x01\xa1\xca\xf7\xb7qQ[\x07\x86\xe0\xec\x05H=\x81\xbd \x19\x81\xd4\x17\x90\xfb\x03W\xc2E\x05\xe4\x9e\xc1\xabwp\xc7\xc6* \x89P\x1d\x08\xf1\xb2\nF\x8b\x9cU\xe0V\x86\x15\xb8\xd5b\x05\x84\xdd\x04\xc1k\xd5|\xd7\x8d\xa0>+\xf0^;\x82J\xad\xc0\x13\xfb`5\xdb@\xe3\xacp\xa1\xe6\x8e\x90\xb9\xc9\xf2\xa1\xbd\x9a\x1a\x81\xcc\x15t~p\x85\xd1+ w\x0e^\x03\x80I\x91\x140)\x92&\xfc\x81\x14 =\x99\x86\xccO\x96\x0f\x1d\xa5\xe0\x08d\xc6\xa0\xb3\xc4\xa4K*\x98t\x89\xe7\xbaM\xba\x84\xa8K|\xb2\x8b\xc8\x1ce\xf9\xd0Y\xc7\x8e@\xe58\x12\xb7yp\x9a\x0f\x97\xb9\xab\xdc\x11<\x19\xc0\x95\xcbT\x015\xab\xa9\x02Z~S\x05^\x99N\xf5f\xd4\x9c\xa7\n\xc8\xd9O$l\x94\x07D\xed\xb0\xef\x8c\xa8\n\xa8\xa2\x8a\xe0\xce\x92\"\xa1!\xbfcj\x03\xfa\xc8=\x92\xab\x9c\xb8\xcce\xf7\x08\x94Q\xf5J\xc8\xb2\xe0\xd3<\xd9b.\xc4G\x18%I\xab\x02GQ>\x82\xb14\x1f\x015\x959$\x8b`/\xd3G0\x16\xeb#\x9042M\x17[\xcb\xf7\x11\x88\n\xd8^\xca\x8f@BEW\x7f\x9eib\xce\xc1\x9b\xca\xfe\x11z\xa5\x92Y\xf0a\x92\x99\xf5\n\x00\x04\x9f\xf4\xb2\nFI4\xeb\xa0\xa3\xa6\x9cU`\xcaG\xb1r\x83IH\xd4\xa4\x86\\\x16 @\xb0X|uV<\xaaS\x0dL+YzI\x1a!c-]\xc4[\x8d\x98[\xe8\xf2\xb9\x9b\xe3b\xf9^\x19\xc38\xcb\xe3\x17\x82W\x852,\xa6\x0d\xc1\x92GY\xb0\n\x1a\xda\x8a~\xc7\xfa\xfe2\xd64\x19\x08\x86\xec\x8bo!\xbe\xe4\xc92aW\xcd\x06\xf4L\xb6\xff\xb1d\xb2\x15\x94\x93\xf1\xffc\xfcc!\xef\xc5'\xa645L\xb5(\x9a\xcbd\x8b\x82\xf4\xc8\xa1\xd2d`Q\xb5\x10\xa96\xe9\xa2\xca`(0\x159\x0c.\\ZJ\xd5IU\x0dM\xfd\xc5\x89SO\xe6F\x82D!\x8eUf\x85\xb0\xf5\xa4\xa0)D\xb5\xb6s\x16\xb2\xa8\xbd\xc9\xf5\x90!\xc3\x06f\x91!\xd3Felb\xdf\x90<7!\xe3V\xd3k{\xd1g*\xeb\xb7\x14\x9fm$KX\x94\xaex\x92\xf0\xe1ZnZ\xa1}\xacP\xca\xb3,\x1c-\xcd\xb3P\x07T\x11n\x9f\x11\x0cy\xe4\x824\x89\xfa\xb7\x18\x98D)\x88\"\x1b\xdc\xa9\xe5\x96\xbe;y^\xe0*HC\xcfZO\x07\xa4\xad\xa7\xed\xad\x7f\xdc\xbcT]~\xbc\x15\x91\x0d\x19\xd83\xe6\x11\x1cG\x03\xd7\xa1\xc0\x98\xf9\n\x14\xeb\xdd\x94\x01\x0b\x94\xc6\xceL\xd8\xc1\x19\xf6\x08\xda\xdcSp\x8f\xd0\xecX2\xe7\xa1\x829\xff^\xfd\xa8\xdf\xab]\x16\x8c\xfa\xc4}R\x1a3\xbf\x14\\9\xa60z\x8e\xbe\xc29Z\xa6>\x82wb\xa76_\x1fA\x9b\xb5_tcg)k\x10\xc3|n\x02:fK\xf6\xf7\xf0\xcc~\x84v~\x7f\xd1\x89\xd1\x03m\xf09[\x15\x97]m\x99\xb2\xff\x11\x9c\xce\x12\x97NthE\xe7Z\x80C3\x92\x10\x10\xb4#X\xaa\x05\x10\xb0\x9f\xe1\x0e*\x97\x8bp\xc4*\x02\x04\x97N\xb7hu\x02um!\x03\xbbn7V\x1a\xa8\x1f\x0d\xf5\x06\xeagJ\x1a{\xf1\xa9Q\x95\x91v\n\xda^\xd1c\xb70\xf1\xbb\xedb\xc26\x0c\xadLPX\xc6\xa9OP\xd8\xae\xa9JAu7\xb8V\x01\xc1{c3\x89\x9d\xb9n\xa1\xe8h\xb8Z5U2 8\xc5\xd6]\xd5\x80\xe0\x1c)\x90F\x0b\x94:\x07\x04\x97~T0^\xcd\x03\x02\xad\xf2\x01\x81D\x15 S\x06H\xb5\x10\x08f\xdb\xa0\x0b\xa4\x085\xd0\xd8\xa5\xf61q\x81`\xd4J\x89\x02\x1f%\xce\x0f\xa4\xaa \x84\xdf\x199=j*\x08\xe8\xe8\xd7R\xd6\x81\x9a\xbdC%-\x89\xacd\x89\xf3\x919r\xa6\x8e\xd7\x82\x923t<\xb0^sf\x8eo\x85\x86k\xf4\xa6\xc7\xdf\x1a\x1f\xf9Tk \x90K#\xecL\xe8d@\"\xf3Q\x19\x8f0l\x04b\xbf\xe0\xd17Pj<\x109\xf1e\xea\xa6j\xdf\xf2'\x04\xbf\"(':Y$E+\x85Bp\x14D!\xa0\x9ete\x9d \xb8sO\x148J\xa4\x10<\xf6\x0c\x9f\xdd\x82P4\x85\xe0\xb5EP\n\xa8\x10<\xd0\xfa*e\xcf\\i'>Ja\x15\x02-\xbb\xda\x89F\x9b}M(\xb2B\xf0\xc9\xc0n\x03M\x8b\xf8\x95cYQ)i\xd7~\xd4\xbb^\x0b\xc1\x9e}H`A\xbb$\x8fU\xc7\x85`\xaa\xe6*\xfa2+\x01\x9b\xd0\xef%\xbf\xdaP\xf1\x85\xe0\xa4\xa9\xb6\xfa\x0b\xc1\xd1\xb6W%\x18B\xbf\xcb\x90\xaf?\xcb\xda\x98\x1bf\xcd\x9d3\xd5\x8f!\x102\xeb\xec\xb5d\x08\xc3+\xca\x14\x9eq\xea\xca\x14\xb61\xab\xcb\x14\xce\xf1k\xcc\x10\xfaW\x9a!h\xeb\xcd\n\xd4\xc3dzz\x01\xbd_\x0d\x14\xc2\x98/\xa0[\xea\xd6\x8a\x9f\xa7\x95\xfe\xa3\xac\xb4\xa9\xfe\x0d\xc1AMBy\x84gE\\\xa3mk}\x06W\xc75\xb0\xbd;y^\xd5\xc8 \xd8\xb2u\xb1\xb0\x15%\xb4\x8c\xaeg\xef\x88\x7f\xce\xce:\x9eZ#\x01\x8d\xee\xfab\xee\x9d-P\xe1W\xda_\xfc3\x8ba\xcea\xcbR\xb1\xdfd1\x9c\xb05\x7f\xc7?\xe5<\xcdf\xf8{\x0b\xc9'A\x11\xd9\\\xa0\x13S\xe6\xb0\x89\xd3\x0c\xb8\xca\xaf\x0e\xeb\xeeFiN{N\xc8\xfc\xa2KG\xdc\xd0Z\x17\xf3\x91\xff(\x8a\x18\xf0\xf2\x84<\xcc\xd2\x9a+ h\x9b\xf0\xf5\xa9J\xf69\x93H\xdabq\xc5R\xc1\xe2\x07\x10di\xe1W\x0e\xc4a\x01\xc5{ qv\xce\x93\xab \xad\xd6\xc0l\x88`\x97\x15\xd3!\xf5\xf9f\xce\x97K\xb1\xdfG\xb0\x16LU\xf2\xe2\x86\xa7)[\xf3Tl\xd1 oy\x0e\x16q\x82\x1f.\x83h-\x85\x95\xa7\x99j\x02\xe7,\x85\\,j}\x9a\x8d\xb9\xa9/\xdf\xc7\x9bjP\x7f\xd7)\x85\x84o\xe5\x19\x04\x9e\xb1\xa4\xa4\xecS8\xfc7\xdd\xc7\x8d9J\xf6x\n\xf7\x1a_\xfeC\xfeG{IM\xb5\xa4t\xe1L\xfdkW\xe5\xa9\xc7\xbbjU\x1e|z\x89\xb8\xbe@\xca\xb8\x19\x9a\xb7\xc1\xdf\xfa\x89%S\x81\x93\xdd\xc5d\xd6\xf6&\x01\x1f\xad\x80\xe9\xb7x\xeeI{y\x86\xb6\x10\x89P\x80\xf4;}&jHA\xd18\x85D\xd7T@4\xb8php\xc1\x90\xa9P\xa8\x87z\xd1\x17\x04Y\x94\x85\xbd\x00\xc8j\xed\xdbm}G\xa1\x8f\xcb\xd57Va\x0f\xa5\xa0\xc7\xe9\xe3v\x9dj\xdc\x85;\xd8\xc5(\x19\xe8\x0e\xa7\xb5\x8b\xb00bA\x8e3\x02\xee*\xc0\xf9\xca\xc8\xe2QXS\x91\xc9\x82\x90RP\xe3\xcaoq\x91\xc8J\x1e'gSx\xdb\x99\x85BZ\x00g\x86 \x01\xcb\xc0\xec\x11\x17\x0f\xf8\x16\xbcX\"\x82\xc6B\x17\x8f\x02\x17K\x85\x88\x8d)\x8c\x0c1\xd0u\xe3,X\x19\x89\xd9\x1c\x85)\x84^\x80\xd8\x13P\x0bP\x88}\x82G\xbf@\xcf\x0e$\x08F\x1d<\xb2\x01U\x0c\x89\x90\xdbG\xbb\xd5\xdb\xa5\xcc*p\xa9\xb5\n\x9c\xfa\x1f\xc1c\x8d\xfcV\xc9\xa9\xfe*\xf0\\)\xa7J\xac\xc0\x0b\xf3@5\xd9@B-\xc0p\xdb\x02\x94\xa2\n\xe2\"R\x97\x8f\x9a\x15L\xec\x16<\xba\x86I\xbe'\xf9\xfe\x1d\xc8\xb7#\xd7b\xa4\xda\x02\x82r \xd4\x12\x10Y\x80\xba\xf8\x93v\x98\xb4\x83\xf3\xdbI;X`\xb4\x94z\x82~ \xa5\xd0\xd3\xf8\x8a\xc0Sd~\xa2\xf3\x12-5\xdek\xa9\xa9\xa9\xf0\xbe)\xf0~\xa9\xef\xbdR\xde)\xd1\xf8&PR\xdc\xa9\xefs\x0cMm\xbf\xae\x94v\x9a\x18\"\xb8S\xd8\xeb\x89\xe9\x04\x84=S\xd7\xa9c\xa6\xa6\xaa\xbb_\xe4\xb0\xa7\xa8\xbb\xc7\xe3\x99\x92.e\xd4\xcc&\xde\xa9\xe8~)\xe8\x8ew8\x08\xa9\xe7\xd6\x94s\xd4?\xf6Tsw\x8a\xb95\xb5\x9c\xa0[)Z\xd5\x99BNR\xa5\xee\x94q\x02\x1a\xaa2\x1b7\xbd\x08\xfa\xa6\x18\x19\xb1\x11S\xbd\xfdS\x8d*c\xd3/y\xdb\xf0\x96F\xcf\xcclSF\xb6q\x85\xad\x17~\x0f\xcc\xbc.\xb0t\xb3\x19\\y\x13\xd8m#\x87\xc9\x98+\xa1\xa8\x8d\xf3\xed\x08^W\xcc4N^\xad\xb8\xea\x05\xb4\xe3\xba5\x8a\xbaY\xc0\x0d\x0eY\xab\xd2\xb0\xab\x0b\xe3A\xcb)\xd9\xd6\xc3\xd4\x08\xc7'\xdb\x81\xc9f\xca\xee\xcb\xc5o9\xea8ie=\xce8Z\xf7<\xb2\x8c\xe2\xa2\xd49%{\xb0\xad\xd9\x990qn\x0d&\xce\xad7\xa3{\xd7\xf4\xbc\xab\xf5\x99M\xcc;1o\x01{e^\x1f\xe7\x8f\x9e}\x0d.\x1d\xd3\x12h\xc9o!\xbd\x8d\xec&g\x8c\x83b\xb6\xda*\x97\xf7\xc3\xe5T!\xbaQ(g\x0d\xb2\xab\xa4rOh\xf1P\x9d#\xfbs\x87\xd8\x0f\xef~.\x8f\xd2\xa1\xa1\xc5\xe5rr\x14#\xf1\xf0Zt\xfc\x12\xba\xc9\xf4\xf2=\x08\x0dY\xc3\xe1\xf06\xf4\xf1/\xe8\xfd\x08\xda\xa7\xfe\xda\xbe\x02\xdd\xa1\xa9\xe5\x0f\xf08RhN\xf9\x06\x19\xd5\x9d\xe4\xb5\x9f\x9a\xd3\xfc{\x9f\xcf+\x14\xbd\x0e\xe4\xad\x83w\x85\x8dv\xd2\x1e\xe1l\x8d'H\xac\xca)O\x8fG\xf5j`\xc2\xe1\xb1\x9e\x1e\xef\xb1\xc4\x9a\x8a^\xc3\x12w\xaaw\xb5\xdf\xa9m\x8d\\\xa9\xdb\xca\xc9\xd7 m\xa5\x9ak\xbbm\xef\x0d\xba\xf4\xf2Nj\xb9&9\\WOkL\x177\xf3\xf2\xb0\x8a\xd91\xead\xc7\xab\x8e\x1d\xbb&\xb6\xb4`\xbc*a;\xf5\xaf\x1e<>\xa91\xb7\x1a3\xd4\x9eNT\x1e\x99\xca\xba\xbaO\xed\xdc\xbb;yS\xb5\xd2D\xc7\xb6\xb5\xcc\xdeW\x8a\xb53\x84\xbaBm+\xd3\x86\"m)\xd1\xb6\x02\xd5*O\xfd\xba\xf6W\x9aC\x15\xe68\xcarLE\xe9\xaf$m+}\xfc\x82lF\xb4\xec\x01\x0dk~\xeeZ\x1a\xb5\xdf\xbd\xf6\xffE\x9cn\xe2t6g)\x9f\xc9\x12\xd9r\xe0\xb5\xfaK\xf2\xd0\x1b'y\xabL5|\x1bf%ST\xfd\xb2\xe2,\x9e\xf0,O\"\xac8\xad\xd7k\xce\xca\x12aY\x99\xba\x0e\xea\x1b\xb1\x9cV\x10\xad\x1d\xc5\xbf3x\x1b\x85;\x88#\x8e\x85\x0f\xab\x94g\x10'b\x085dE\xad\xd9\x9c\x0b5\xa24\n~L\x9cy\xab(\xd1<\xf7b\x08r\xfaQ\xbe\xe1I\xb0P\x7f\x93g\xc9\x05\x8b\xc48d\xb1\xac\xe4\xe6\x82XyT\x1e\x9c\xea\x91\xa8c\x89*\xe4iZ\xcdZ \x8a O\x05u.\xb8\x8d\x04\xc5\xc4k\xf8\x9a$\x08\x83M0\x06\x05\x1a\x87C\x89T\xb1\xaf\xa9R\x1ak\x91\xeb\x9c!\xbe\xc6_k\xb8\xc4\x9a76\x9f\xe3\x15\x84|\x95\x01\xdfl\xb3\x1d\x04\x19\\\x05a\xa8\x94\xa5\xc0\xaa\x98\x0e;\x10\xa4\x98\xef\x80\xb3\xc59\xb0\xedV\xcd\xbbV\x80\xdd\x9e\xfd<\x8eC\xce\"\xc2\x93\xff=\xcfW\xb3\xa3hG\xa6\xa0\xf8\xe4,O\\\xe2e\xde\x1c\x8e\xe0\xc3\xbb\x9f\xef\x94\xbe\xe2\x88m\x8a\xfd7\x8f\x82O9\x0fw\x95\x1d]\xd8'\xbb-/v\xd8\x1a\x9a\x94'\x01\x0b\x83/\xbc\x91O$\xa7\xb4\x88C\x98\xe7\xab\x15O\x14\x87\xce\xd0\xa3\x8fc\xc4\n\xdbE\x1ce,\x88\xca\xa2\xdc:\x16a\xa7\xdd\xb8s\x03\x16\xe7,a\x8b\x8c'3\xb94!K\x85i\xb0\x96\xd7L\x14[\xfe\x87w?\xdfLa\xcb\xb2sD[F\xba\xea\xf8\xc4\x87\xab<\x0cw\xf0)g\xa1\x98\xd9\x12\xe7\xad\xec\x061\xc3[,\x85 \xaa7\xfb(\xd0\xdei/\xd6\x8b<\x91\x9c\xf4\xf16\x8eJ\"\xaa\xacg1%a\xc1\xc6Q\xb0hh\x1d\xa1\xf0\xea\xd8o\xf1\xd9zv &/%\xff\xc6\xec\x06\x14~{\xb6X\xf0m\xc6\x97\xb7\x9b b\xc7\x11l\x059\x82\x05?\x80\x8c\xb3\x8dP\x0d9\x13\xd3\xda&|\x11o\xb6\x81\xd0\x80\x91\xd8\xee\xcf9\xcc\x83\x88%;\x19o\xc8dl\xa1\x95B\x9b\x9d7m\x93\xa2\xea>\x90\xf6B\x9erep\x8a\x85\x12\n?^\xc1Q\xb4\x9b\xc1\x8f\xf1\x950/\x0e\xe4\xb6\xf8\xe1\xdd\xcfi!\x1by\xca\x9b\xd8\xeb\xc8\xd3\xc59\xdfp\xf8x\x9ee\xdb\x8f\x07\xf8\xbf\xe9\xc7\x03a\x83Gq\xf1\xeb\x81\\wa\xfc\xc7\x92o\xe5\xcc\x84\xfd\x92o\x85D\xef\xb6M\x8c<\xb9\xe4 r\xee\x86m1\x80\x82\xe3\xc9\xe2R3J\x8d\x10`\x9a\x16\x13;y\x18\xc6W\xe9\x93\x06]\xffUX\xcc\xe5(\xc4\"\x14E\xbe\xcbr\xa0R\x11\xa4i\xbe\xe1\xcbY\xb3\xe9Q\x04?\x9e\x9e\x9e\xc0\x0f/O!\x8e\x14K\"/\xee\xa4\x0ea\xf0\xd76\x0b\x9d\xee\xb6\xfco\x7f\xfd[\x0d\x11\xa8}(R\xeb\x86\xfb\xa3\xa4\xd06\x89\x97\xf9\x82\xcb\xa3y\x92\xc4\xc9\xac9\x82\xed6,S\xd1X\xc2\xc5\x8a\xc7W\xb8\xa1/\xd8B\xc8M\x1c_\xe4\xdbR\xf5\x0b\xed\xbd,\x06\xdb\x18\xc2\x87w?\xcb\xfe\xe4\x1d\x01\xd99\xdf\xd4\xf8j\x89\x8c\xc5\xd4\xf0\xc4\xbf/\xe3@\xe8\xd2f0\x17;\x93\xa2\x91\xf0U\x9c\xf0\x03\xd5D`bY0\x0f\xc2 \xdbA\xc4\xf9Rm\x9bRd\x93\xcbVh.\x8e\x84\x02\x88\xc4\xa6)XZ\xf0\xf0\x0cn}H\xb9zt]\xccQ,\xba\x90@\\u\x16\xb5\x0b\x12\xe6 g\x17B\xbe\nT\xb3\xdb\x0d?]\x9c\xf1'xE\xc2*\x8f\x16\xc8ubt\x85$.\xf2$\x91\x86M\xdd\xc4\xc0U\x8e\xa5\xd5\xd3\xbc\x9dJ-0$\\F\x1d\x0f\xe4n\x83'=\x81N\xee\xe42\xe9\xaf\xe4Uy\xa6\x8f\xc4\x00\xc5f\xd5PZ\xbb-\x9f!\xe7\xb0m\x90\xce\x16\xf1\xa6\xa9\x0f\xdeK~M\xd1\\\xc1\x03oK\xbe\xe0V\x91`\x88GAd\xf0\xdb\xb0 \xd6\xe7\x19\xcc\x1b\xe2\x84\x87m\xb1_\x96{\x1c\xee\x97*\xd7\x11R\xbeaQ\x16,R\xc5~\xad\x0c\x05\xbayj\xde\x9b^\x0b\xb1\x99s<\xa1\x06\xcb\xda&\xd3\xd9Y\n\xd5\xcd\xe6\xf1%W\x83l0\x90\xa4\xdf7\xe6\xfe>\x1eE\xbb\x8fj\x1b\x92\xfb<\xc6I\xbex\xf9\xfe\xf9\xbb\xe3\x93\xd3\xb7\xefn7\xc34\xd5B\xb6\xd1!\xc2\xf6\xf4\x1e8\xa6\xf7C\\\x9f\x99\x9c\xda\x93\xa7\xf0/\xdb\xf9\xecU\x1c\xff}6\x9b\xfd\xe3\x9bf\xef\x07b{\x15\xdflq\xb3y\xcd\x92\xf4\x9c\x85b\xd2\xed\x015'\xd8\xc6\xdd@\x1c\xacZh?D\x9b\n\xb1\xecV2\x89\xfc\xea\x7f=\x95\x99\x1c\xad3\\\xab\xb7r\xa5\x85\xf9)\xe7\xad\xe4V\x19.\xe2\xc4\xb1m\xeb\x11\xe9\x06\x9c\xefJO\xa00\xd8\nD75\x9b\xcd\x1da1\xcf\xe4\x0fb\x83\xbd)\xec\xa7R\x8f \x1d'\xe8.\xfe\x80\xb4W\xa8J\x15\x12\x85;iF\xea\x8c\xefr\xdb\x06\xb6\xca8\xeeQ\xd2\xba\xbfy\xe7\xa6BT\xe82\xd5\x1d\xda\x9b\xbcX\xfb\x1b\xab8\x9e\xcdY\"\x07\xfa\xf9\xcen\xf6\xe5\x06\xce\x0fm\xae\xba\xb1(\xbb\xb9!\xbe\x10j\xac\xf8\xe3\x9f\xdf\xbf}\xa3\xfe\xfd\xf4\xe9\xd3\xa7u\x8a\x8a\xdf\xaas\x04\xee\x82\xb1`\xe1b\xcb@K-O\x0b\xbd\x9e\xf0u\x1e\xb2Da\xe86\x14\x1f-y\xa5\xf2\x0f*7A\xc1\xad\x07\xc5I\xb5<}\xd4\x943\x1eD?\xfe\x87\x98\xd2\xc7\xc2\xd4.7\xad:\x81fJ0\x9e4L\x12\xb6\xb8\x10\xf2P\x99\xa0\xab \xe4u\xbd\xa1$\xe6\x84'i\x1c\xb5X\xaf8\xb1\xad\x82$\xcd\xce$%;\x8e\x83\xe2\x13\xb1|\xea\x8b{z\xbd\x04\xd0\xc2~C\xce\xea\xc6\x13\xb8\xa1\xe3\xbf\xe6\x90g8\xbe\x1b\x07M\x0crdo\xd8F`\xf9\xdf8\x94\x7fo}\"F\xd6\xfaB7\xbc\xe3Ua*5\xd7\x06\xe9\x1b\xa4p\xc5\xc3\xf0\xdb\x8b(\xbeB\x1f\xc29K\xc5A\x0f=\x00uvj2\xc0\x01\x9a\x02-\xae@Q\xacu&\x16JVS\xab~\x1e\x87\xcb\x86\xdfA2\xaa8o\x16\xdc\x02\xc5\xc9\xaf`\x16\x85E\xa2,\xb9\x03n 9R\x93\xeb\x1cM\xd4\xe9\xf6o\x7f\xfd\xdb\xed'\xc3W\xae\x89\xb4\xbdxrz\x02\xc9\xe1\xec\xde\xe1\xbd\xf4FcY\x00\xd6\xc9v1[\xb3\x8c_\xb1\xdd,\xc9\xa3,\xd8\xf0\xd9Kq\x02\"{Kx\xf55\xe8m\xd4E\xbc\xec\x18\xb1\x96\xcc\xb7\xfb\xf7\x8a\xbf\x16\x14\xb4\xe2^\xf2\x8c\x05a\xa7\xe4\xa6\x99\x01\xdb\xc9~\xedL\x0b\xc1\x94\xf5\x9au\x1cBu4\xda\x8cWW\xaa\xe9H.\"\x04\xbd\xa3\x08a\x1cw\x11B\x7f\xa7Q\x07\x95\xd6\x89\x84\xd0\xd3\x95\x84\xd0\xdb\xa1\xd4\xc1T:\x98:n%\x04o\xe7\x12\xc2@\x17\x93\x86Z\x18\xd7\xdbu\xbb\x1a\xe8n\xea\xe0+L\x8dnG\x03]O\x1d|]WT\xd1\xcfh\x0e)\x84\x01n)\x85`4\xe7\x14BO\x17U9\x9a\xd1\x1cU\x08\xa3\xb8\xab\x10\xc6sZ!\x8c\xe2\xbaB\xb0;\xb0\x10\xfa\xbb\xb1\xbaZT\xe3\xd6B\x18\xe2\xdc\xea k;\xbb\x104\xb6\x84NK\x0ds|u\xd0\xcd5\xc2\xdc\xc3\x1d\x86\xa0-\xdb\xb1l\xc5\x96\x92(\xd7.\xdd\xd3Y\xd6U\\\xcayVs\x99!\xd8F0\x86\xfb\xac\x81\x10\x8f@\xcd\xa5\x18\xe8JC\x18\xeePk\xa0\xebn\xb8\x03]l\x0d\\Y\xc3\xdd\x86\xd0\xd7\xe9\x86`\xf4V!h\x1cp\x08V7\x1cB\xcb/!\x81\xe6\x923\xb7\xff\x87~\xee\xdeN:\x04\xda\xe4m\x0e;\x04\xdbL\xad\xce;\x04\xa2\x0b\x0f\xa1E\x81!\xee<\x04\xa3S\x0fA\xef\xda+\x7f\xd3:\xf8\x10\x0cT\xa18\xfb\x10l.?\x84\xba\xe3\x0f\xa1\xa7\xfb\x0f\xc1\xe1\x04D\xf0s\x05\"\xe8Hau\x0b\"\x8c\xe0\x1cD\xd0\xf6\xdf\xe2\xa4\xd1\xdc\x85\x08#:\x0d\x11Fs\x1d\"\x8c\xe5@D\xd0\xba\x11\x11\xea\xde\x1f\x84\xbaK\x11a\xb8c\x11a\x14\xf7\"\xc2xNF\x04\xb7\xab\x11\xc1\xeapD \xb8\x1d\x1b\x1f\x1a\x9d\x8f\x08m\x8d\xdaqg!P\x9dZfwd\x81\xc7\xed\x94,>\xb4\xbb&\x11Z\x83\x1f\xcbM\x890\xa2\xb3\x12a\x1c\x97%\xc28\x8eK\x84!\xebmub\x16\xa8,\xaeL\x84\x7f\x98\xea(N\x98\xac\xf0%\xbb4\x8bj\x87\xb3\xdfkQ\xe6\x16\xe7\xab\x19\x7f\x03\xf3\x1f\xa5v\xf3\xdf\x0d\xb5\x9b\xc5\xb2\xb7\xcb\x90\xb2f\x1dO&\xb7l|X\xa9\xf1T\xbd\xe6y!U\xa9T\xc7l(Wj\xa2\xb5\x14x\xd6q\x19\x0b\x97Z\xd8\x1ce\x9e\x8d\xe1YJ\x98\xdac4\x15{\x16\xf8\xb0\x9e\xa9\xf81\xd1p\x06I:\xa6BCW\xee*L\x05\xb3\xd7@a1F\x94\x97\x89\xc6\xfb\xa1qK{t\xeb \x95\xf2q\xec\xdb_q\xa5k\x9f-\xa6\xbd\xb1\x8c\xb3\xa9\x8c\xb9\xa1\x8c\xbf\x99\x186\x12\\\xf5\x0dK.xu\xf1\xe23e\xb6\x10,\xb5y\xb0\xeck\xa5i^\x934Hp\xf7\x15I\xc3\x87\xc6\x92\x1b\xdd\xcb\x91\x996\x0e\x0e\x96;b\xe3\x11p\xa8\xc7\x95\x08\xf31\xeb\xa3g\xc1\xb2\xf5<%j\x9e0,\x02\x06)\xffT\xd4\x10\xd5\x0d\xaa#Hsy\xc9\xcf*\x0f\xc5\xca\xd5n4\xfa\x99\xb3\x94\xdf:~q\xbb,\xb4\xdf\x9f\xe5\xc9\x16Y\xd0\xf0\xd1\x7f\x0ba\xdc\x08Qw\xac\xd3\x81v\xe8\xd0\xa7&\x8dW\x8c<\x0b\x96\x86\x07&\x05y\xbb6'N]\xb6{\xcd\xb2\xc5\xb9\xf6\xb1F}SA\"\xd9\xf0\xe78\xcd\x0c\xadZd\xac\xe9\xa4g\xc1\xd2\xf88\xa4h\xd9\xa2w\xa3~\x9e\xf2,\xe4\xbc\\\x93\xe9\xba\xa4}n\xe9\xfa\x8b\x80\xb5s7\xde\x80q\xf3Y\xb0T\xcaCj\x92\x83\xc6:V\x17-\xdd\xb4\xec\x10c\xd9\x04\x0de\xd0P\x04\x0d%\xd0\xd3:\xe8%\xf8\xfa\xcb1\xe8\xa2\xdeS\xcc\xfdE\xbc\x97x\xf7\x14m\x13\x1f\xbc\n\xc2\x8c')\xd9`p\xfb<\x9a\xbb\xbd\x95\xb5\x1b\xbb\xfcZ\xd3\x8er\xbf[\xdc\xb3]w'\xef\xe1\xc0)V\xa3\"d\xa9\x93V![\xa7\xd5\xb2\x07\xa9\xd0/\xe2\x13\xcbbx\\T\xf2O\xb5\x0ezE\xd1\xc3\x8a\xa2ZP\xda\x05\x92_\x90\x17H&\xa0L\xb6\xb5\x0f\x0e\x0f\xdb\xba\x90;\xb9$\x15\x13\x88\x15-\x12Z\x85\xe6\x93KP4q 2\x90\xeda\x8d\xf9k}\xe8\xfbw`\x0c\xab\xfdN\x92\xf3H\xfe\x87f#\xc2[J;\xd37\xbc\x95\x8eKCx+\xbd\xb8\xfc\xd4\xfaVz\xb5SJ\xb4\xc6\xbd\x12q\x0d5\x86\xeb|3\x99\xc3_\xbd9,YB\xa9\x80B#\x1c\xb4V\x93`\x14\xcb\x96\x03\xcc\xe2\x96%ld\xe8\xaf\xc6.\xee/\xf5{\x96\xf8\xde\xd2\xde[\xd2\xcd\x0c1\xd9\xc7\xd6\xb1\xba\xb6\xd5\xfa>m\xb6\x90q! 6r!\xdd\xd3j\xb8h\xed\xb4\x89\xb4\xe4}\x9b\x94=P\x88+\xbe\x9e,\\:\x8eb\x81$\x95}O..A\x03\xb2\xfdJ\xf1\xe7~\xf5\x16+\xfat$%\x0d^\x1d\xc9\x9d\x16\x17\xaelk\xf6\xee`\xf3\x0d\xfe\xde\xc4\xa06'\x89\xc1\xb89!\x82\x86G\xd7{{\x928\x14\x03l\xf9\xa2\x97\xa4ElCK\xa6)\xec4i\xdb\xe9\x1ah\x1e\xba0?s!\xec?\xbe<\x9b\xeb\xdeu\xb1\xbc\xab\xf0^6{\xb6\xc3\xcd ^\xc1\x05\xdf\xa5E\x8d\x16\x8f\x98\xb0:\x8b\xaa\xac,\xc6\xaa\x9a\xca\xd0\xd4\xa0[%\xf1\xa6\xdb\xbfi6`\x9d\x91\x00\x16\x86g\xf1J\xf7\x8bBk~\xff\xd5\xfa\xf2\xabQ\xa5\x95\x1f \xd1p\x00RSH\xca\xc8\x04\xd2 Er\xc9\xa2\xa9\x92(|i\x7f\xda\x96E\xbb\xdfv.\xc6\xc7\nqde\x1d\xa5\x94\x04L)\x94s\x16\x8b\x8a9\xb5\x8dI\x1b\x90\xb9H1=\xc8S\xfc\\$\xc9y>\xc8\xa3m\xaa\x84\xb7\xa2m!\xbd\x85\xf0\xd6\xd6P\xd95\xdfh\x10\x9e\x84l!\xd5\xd1\xbb\x9af\xaa}\xa8y0\x10,\xab6\xe6\x1b>\x86\xae\x11\x06r@\xe7%\xc3\n\x1c\x98\x81\x80\x1d\xcc\xef\x1cV@\xe8\x07\x88}\x01\xed\xb9y'oW`\xa9G\xab\x83r\x0f\x0cx\xac\xab\x02\xda\xf3\xf2.\xb5\x89\xf0\x1b=\x01NyJ\xdec\x15\x88O\xc8\x931\x0e\xd0?\x0d\x04\xc3^d\xac@\xf76c\x05\x84\x05\xa2,\x8d\xf9\xf1\xbb\n\x08]\x01\xb1;\x98d\xb1\x05\x93,j?\x1cI\x16\x87\xbe1Y\x81\xf6\xb5\xc9\n\x08kDY\x9dI\x1c'q4\x81\xc7*|\xad\xe28\xfc\xd5\xcc\n\x0c\xefgV\xe0^p\xc7b\x93\x16\x9a\xb6\xc8\xa6\x177+ \xaf\x85\xf9\x15\xce\n\xdc\xefq\xd6\xbf\xb5\xbf\xccY\x01\xf1\x8d\xcez\x03\xfb\xe5\x0cM\xf0~\xb7\xd3\x81\x8f\x91_\xf0\xac`\x7foyV\xe0r>(\xf0{\xdf\xd3\x81\xacL\xf0v\xbd\xf4YA1\xce!o~v\x90\x19&=\xc6;\xa0\x158^\x04\xad\xa0\xcf\xdb\xa0\xfa\x1eu\xef\x85V\xb0\xe8F\xd7\x11P\xe8u\xfe{\x04S$\x00\xa1\x95\x19P\xc1\xc0\xe3\xbf&o\xa0\x02\xa7\x9e\xd2\xe5\x12T\xe0hN\xd1\x18\xbd3\x0d\xb4\xd8\x86$\x1dh\x11\x16\x89\x08\xda\xdf\xa89 \n\x94\x994\xe0m\xd3\x06\xa2\x1f\x928\xdf\xbe\xdf\xf2\x85B\xb4\x16\x7f(\xef\xeb\xc1k\xa7\x8aF#\xe4E\xc8\xf8D\x19e\xc2\xa0\xd3A+\xb8 G\x8e1\xa7\"Hh\xcc\x8f\x90\xe8\x06\xe4G\xd8\xd2\x86\xbf\x92\x8c\x88>Q\xa5a\x11\xa5\x9e\xd1\xa4\xde\x91$\xf3\xca\xfe\xf3&:\xb8B\xab\xf5\xb0\xad9\x87\xa1X!w\x0eC\x11\xfe\xfd\xa7#t\xdf\xe8\xb7\x96\x88\xff\x99\xf3d\xf7,Xz\xbfY5\xef\x99\xaf\xd0.\x94367\xa3\x00}\xda\x03\xd8\xf7\xe5n\xfa\x83\xa3\x81%\x0d\x02\xb4\xa9\x10\xe04\x85l\x86P7-\x02\x06\xe1\xd3'\x01\x83m\xce\xe6\xb4H\xe8\x97&\xae\x80\x9a.\xae\xa0\xa5I\xc06h\xddAR\x97\xb0\x01\xba\xa4\x0d\xd0'n\xe0\x9f\xdbUd\xba\x8c\x0e\xb0eu\x80\xd3\x14\x1c\xbc\xf3\xb6\xf0u2<\xa0\xb6\x1f\xd3+w\xaa\x96\xbd*x\xaa\xe6\xbe\x95qG|\x06\x1c\xf6\xf5B\xd7u\xbd7\xa1\xff\xc1_\xb5\x1ft\xfcWH\xfa:\x01T\xfb\x01\xae\x00\x84\x81\x0e\x01\x84)L9\xc8\nB\x18\xd1\x16B\x183Liv/ 8\xa8i\xd3\xff}\x1d\x0e\x08&\xb7C\x81\xbb\x9f%\xb1\x17+\xc2\xe0\x9a@p2\xb3\xd6M\x81\xe0h\xdb\xcbe\x81`4|\xac]~U\x1b\x9eQ\xf1\x99\x1d\x1d\x08\xbe\x1b\x9b\xc1\xe8\x18\xee\xfaPx\xc6q\x80(lc\xbaA\x14\xce\xf1\x9d!\x08\xfd]\"\x08Z\xc7H\x81z\x98LO\x1b\xd4\xd7\xb3A\x19\x1d,\xc5\xcf\xd3J\xffQV\xda\xe4\xa8A\x18n\x8ax\xban\x1am\x07;p\x04l\xd9\xbaX\xafj\x82Z\xfe\xd5sm\xc4?gg\x9d\x84s\xa7\x1b\xab\x93\xd0_L\xa9\xb3\xb3)\xfcJ\xa9\x8b\x7f\x16\x8f\x01\xb24\xc5\x97\x0cO\xd8\x9a\xbf\xe3\x9fr\x9ef3\xfc\xbd\x85\xe4\x93\x98\xbel.\xd0\x89)s\xd8\x88C\x10W\x17\xb6\x84\xf5\x08\xae\xcc\x84\xf3\x9c\x90\xc6ebJR\xc5D;1\x1f\xf9\x0f\xf4\x02\x14\x89v\xf2\x11\xc6\xda\x8b\x81\xabV\xdb\xfaT\xf1M\n\x89\xa4\xcd\xedW,\x15\x9c{\x00A\x96\xaa7$S\xc8#\x94\xda\"C\xee*H\xab50\xdb\x17\xd8e\xc5aH\xfd\xf2e\x92 \x82\xb5`\xaa\x92\xf1\x8a\xe7BR\xb1\xf3&\xf8@h\x85l\x11'\xf8\xa1|\xce$\xc1\x99\x94/\x8c\x9c\xb3\x14\x9f\x01\xacO\xb317\xf5\xe5\xfbxS\x0dJ\xfb:S\xc2\xb7\xf2\x10\x01\xcfXRR\xd6\xf0\xa4Ms\x8e\x92=\xda\x8f\xda\xe0CR-\xc1K=$/\xa5\xfaN\xa5{\xc7\xdby\x1aV\x97\xf9i[\xe8[\x81\xf6b?#\x023\x12\x98r\x81\n\x189\x17\xa8\xe08\xda%8\n\xf6\x17\xda5\xa4\xe8\xd8o\xbb3\x1d\x8e\xe8Q\xde\xdf*a\xa7\xff\x95b\x15\x8e\xbd^-Vu\xd3\xf3\x8a1\x05\xde\xbe\xb96\xcfM\xe9:\x0d\x18\xd1\xac\x1d\x1em\x1c9]\xc7\xff\x82B\xa8\xbcg\xdb\xfa\xdb[\xe0\xb7U\xe9\xde\xe12\xa20\xa3\x81\xaf5yG\xf7N\x97\xa5\x97\x7f\xb6\\\x1f\xeb.\xd0\xe3\xe1\x95\x166\x83\xf3m\x9c\xe7X*lJQ\x0f\x7f\x96\xa56\xc2\x91\x9fgQPp\xb1\xee\xbd/\xe8\xbc\xf9\x05\xfd$qR\xf9\xfbP\xf9S\x82\xd6\xd7\xbc:\x9a\xb7\xc6`Z\x9f\xafe}ZZ\xaf\xeb\x9a\xab\xbdS\xd6\xf4 4\xce\xee.\xa7\x00\x9aQ>^\x01\xff\x9c*i\x8b\xed9\xab\xaa\xe5z\xb0\xe2\xb0\xe1\x01\xa33\x02\xc1\x82\x12\x08^\xf5)\xb3\xea\xab\xcf\xac\xea\xe5\xec@\xb8\xfe@\xb05\xbd\xc9}b/>\xfc\x03&;\x0dw\x9a(L\xd7\xe2:Q\x9d\x0dt\xa0 \x0cv\xa3 LIN\x83l \x84\x11-\n\x84q#\x8b{Or\xea\xe7\xa6A09k\x8a\x1e\xfam\xee&\xf7\x0d\xc2@\xd6\xfe\x1d\xa6<\x99\xdc=\x05b[\xbfS\xb6\xd4\xa8;\xa3\xaf\xf3H\x8b\xb0\xfb\x92o\x13\xc6u$)\x9c\xe3\xbb\x93\x14\xe6}9\x95\x10\x1c\xae%\x84\xae\x83\xa9h\xe5eD`F\x02SN[\x01f|\x05\x03y_\x82\xa6\xe0\x9a\x13\x13\x0c\xe9k\xbf\xcb\xdc\xb4>\x97;V\xad\x87\\\xf2Xa\xe9u\xd9\xa3\x02o_i\xfd\xf90\x01\xcd'\xc4\xa0\x9f\x84w\x9f\x13\x03\xbb\xbc\x9a\x9f\x15\x03\x97-k\xb7d-O\x8c\x81e\xfbU\xe0\xfd\xd4\x98\x01O\xcd\xe8\xd3>7\x06\xaeY\x82s\xa6\xe0xz\x0c\xca.\xec\x17\xec;\xaf\xd7wZ\xff@ ,\x94\xa3%\xbeSf\xc3c\xbf\x85\xde\xfe\x8a\x19|}d\x19\xf3e3\x00\xf7\xebf@x\xa0\xc1E\"\xc2co\x16\xce\xa6\xf0\xb6\xf3 \x06\xd2\x028\x9f] `Q\xde\xe9\x9eO-\xb8x\xa0\xcf\x13if\xaav\x1fN\x83j\x0c\xae\xc7\xd3\xc0\xfe\x8a\x99\x8d)\xf6\xf5\xf4\x9d\xf5Q5p\xe3\x07B\x1f`\x7f`\x0dh\xbd\x00\xb1'\xa0<\xb6\x06\xf4>\xc1\xa3_\xa0\xbd.\x034\xc1\xa8\x83\xf1\x10\xdf\x05\x15[\x1b\xe5\xa5\x19 (\xb3\n\\j\xad\x02\xa7\xfeG\xf0X#\xbfUr\xaa\xbf\n{\x07u\xe7\xb2O'\x94Xs\x13\xc8O\xe0\x11pi\x1f\xa8#>\x83\x07m\x02\xed\xe9)< \x8b!\xc2\xa8O\xe2A\xbfg\xf1\xc0c\xcc\x1eo\xe790\x99_\xd6\x03\xd2xz\xbd\xb0g\xc4\xb6\x8a\x13\xfa+{0\xe6K{\x02\x1c\xaf\xed\x81\xed\xc5=(\xf5\xcf\xf0\xca C\xc67\xd0t+E\xabZ\x13e\x80\xaaJ\xed 3@CCUf\xe3&\xcf@\xdf\x04\x1a#6L\xac\xb1&\xd1@\x8fD\x1a\xa8\x19\x9b\x83_\xeb\xab!\xf3y\xb1\x0f\xc6\xbf8\xa0\xff\x0b~\xcdT\x85F:\x81+S\x01;\xf5IT\xf0/\xb3\x93#\xafI\x9e\xce\xaa\x1aZf\xa7\xcfi\xb0*\x07\x9bR\xe8\x97An*\x83s\x88\xbc\xa3\xfc\xcdT\xfa\xe6R\xadv\xb5j*w\x1b\x82uh\xbe\x83!\x07\xdfB>\xbd\xc5j\xce\xbb7\xe4\xdc\x1b\xeb\xd5\x0c\x89\xf8\x8e${\x97\xfe\x1e\x90\x03\xd1\xe59[\xc9\xd9\xb0<\x88\xb12!\x06\xe7B\x8c\x90\x0d\xa1\xcb\x87\xe8\xad\x1d\xf4Y\x11\x0e9\xb7gF8\xcd\x18\x97 \xe3\xc8\x8f\xa0\xd8\xadc\xe5H\xd0\xb2$\x9c3\x06\xc2\xac\x81\x90+1\xfa1\xdey\x9av\x93\x1aF\xcc\x9a \xb9;\\\x99\x13_-\x91|s(\xac\xd8j\x04u\x11\xcd\xed|t\x13\xccA,\x02\xff\xd3$\x80\xe0T$.\n\xc1\x89H\xc24\xd8i\xe8\xe6\x8e\x11\xb3+,\xf9\x15^\x19\x16\x8e\xa4\x06;\xc3X\x98\xc5\xc9(n&qf[\x10z\x01RO\xe0\xce\xb9 \xf6\x05\xe4\xfe\x80\x9ay\xe1\xd13x\xf5\x0e\xf4\x08\x0cQ\x84\xea\xe0\x11\x85\xd9C\x1c\x86\xa2\x0c+p\xab\xc5\n\x08\xbb \x82\xd7\xaa\xf9\xae\x1bA}V\xe0\xbdv\x04\x95Z\x81'\xf6\xc1j\xb6\x81\xc6\xe9b\xa5&o\x90\xb9\xc9\xf2\xa1;\xb9\xc3\x83+\xe8\xfc@\x0d\xe2zt\x0e^\x03\x80I\x91\x140)\x92&\xfc\x81\x14\xc9Hi DUBH\x05\xf1`\x0c:KL\xba\xa4\x82I\x97x\xae\xdb\xa4K\x88\xbad\xb4\xa4\x11\xa26!%\x8e\xd09\x8e\xc4m\x1e\x9c\xe6\xc3e\xb4\x14\x12o\x06\xa0\xa6\x91\xf8'\x92\xf8\xa6\x92\xf4L&q{\xf0u0fB\xc9\xf0\x94\x92\xebK*\xa1\x8b*\x82;\xb1\x84\x84\xa6\x96|\xd27\xb5\xc4g\xe4\xe3\xa5\x97\xb8\x12Lh\xa3\x1a7\xc9\xa4G\x9a\xc9\xc8\x89&\xa4T\x13G\xb2\x89\xd2T\xf6t\x13Wd\x14\xc1\x9arB\xd4\xc84]\xecLV\xad@Z\xdb\x98\x04S\xf3\x9bS8\x9b;H\x9b\xd1]{H\xd9\x0de\x17i\xf4\xe0\x9f*\xac\xf0\xedy/\xd0\xa6\xf7\x1a\x97B/y\x96\x06f\xcf\xb4I\xfe\x8c~@\x8b\x0c\xba\xce\x97F\xff\xb1U\x12\xad\xbeak\xcb^\xf2\xa8\x93\xc8\xde\x9a\xc7 \x97\x8eq\x1be\x93\xa2}\xb4\xf2\xd9GB\xa7#\xd1t$\x920\x1d\x89|\x8fD\x9d\xed\x86\xba\xa3\xb5\x0eF\xcf\xcf\xf9\xe2\xe2\xf4\xf3;9D\xf2\x96\xb5\x88\x97\x1dC\xb4\xe9\x80\\\xb2\x8c\xb5\xbfh0\xf0\x9a\xa5g\x82\xdav4\xe2\xab+\x16e\xae\xeft\xe7\x8bFwa\xbc\xb6\xfe\x9e\xb1\xf5\x9e\xf7\xdf\xf1\xcfb\xfc3\xdblC\xdeX\x14\xb8[_\x00\xf9\xffk\x14\x10\xff\xafM\x7fxx\xf7\xee\xdd.\xb9\xe1\xf0n\xf5wI^\xf9\xff\xb5\xe4\xfa\x16n\xdel\xff\xc7\x0b\x1e\x06\x97<\x99X\xeb\x8f\xc3Z\x0f\xeb\x0b\xf0\x1b\xb2\xd6\xb3$f\xcb\x05K\xb3\xd3\xcf\xcf\xe3\xcd&\xc8|YL\xe8\xbc\xb3\xecs{QH&G\x93?\xc1\xc04\xd0\xe1S0/J\x97_mhu|k\xfb\xdet\xfa\xeb\x0c\xa3\xc1\xc7\x96\xef\x9a\x0b\x04\x06\x9e\x86\xdf\xdd \xbb\xc5\xf3\xd0Q\xa9\xa0\xe3}\xe8\xf2?\x98d\x00,r\x00:Y\x00-\xb9\x1b2\xd1\xfa\xc3\x12\xd5\xee\xc4\xdd\x13w\x13\xb9\xfba{Q\xbfb\xee>g\xe9y\x9b\xaf\x0d\xf3\x84\x97/\x1f\xbe\xba\xff\xe0\xee\x83\xbb\xf7\x1f<\x7fx\xef\xc1\xc3\xbb\x87\x8f\xee=~\xf6\xf0\xd1\xcb\xbb/^<\xbf\xff\xfd\xab\xa3\x17\x8f\x1e\x1e\xbe\xba\xabNM\xe7\xfa\xbc\xe3\x9b-\xdfl\xb7\x8f\xef}~|\xbe\xfb\xf2\xe5\xf1U\xb2^=~\x90<\xfa\xf5\xf1\xf9\xc3\xd5\xbd\xab\x07\xd1\xbd\xf0\x1b\x8c\xc3\x93\x17\xa4\x95q`\xe7\x9d4c\x17\xea\xe0\xd8N0\xb0\xb7\xbc\xf9\xf0\xae`\xd6\x1fKF\xed|\xde\x87AO?\xcbC\x1cy\xb2>r\xf2\xe2\xee\xf7\x0f\x0f\xef\x7f\xff\xe2\xf1\xe1\xfd\xc7\x8f\xef?>||\xef\xf1\xc3W\xaf\x1e<\xbb{\xf4\xf8\xf0\xeew\xaf\x0e_\xdd{\xfe\xe2\xe5\xdd\x17\xf7\xbf;\xfa\xfe\xbb\xe7/\xef>z\xf0\xe0\xe5\xbd\xc3\xef\x9e?{u\xff\xd9\x83\xc7\x8f\x1e>\xb2\xca\x0f\xba\x17\xba\x9d\xde\x7f\xf4}\xf1\xc7\x9e\x1b\xd5&\xd5\xaas/-\xdd\xd1\xab+\xae\xdd\xfc\xbc\xfc\xe4k\xa6Q\xef\x16=n\x7f|\xfbz\xaf'\x1e\xf6n\x92A~\x9a0\xe8q%\xd0H\x9a\x82\x0d\xdf\xd0\x0c\x812\xade\xf0R\x1b0\x81k\"\xe5\x14\xb4YF\xaf_~x~\xfc\x9f/\xee\xde[\xa5/N\x12\xf6\xfd\xebl\xfe.\xdd=;\xbc\xfan\xfe\xe9\xf4\xf5\xc3\x87\x7f\xc9\x0f\xef\x7f\xff\xe5?\xe7\xaf\x16\x7f\xf9\xfc\xe0O\xcf_\xed\x8e\x8e\xd7\xfc\xe1_\xde\x9c\xac~:\xce/\xbf<\xfb\xefG\x8f_\xef>\xfd\x98~z\xf1\xfd\xfb\xc3\xe3\xab\xe0\xe5\xf6O\xc1\x87\xf9\xa3_\xde/\xb3p\xbb\xfe\xaf\xa7\xad.\xb7\xf9\xbc\xebA\x05\x17/\xd99I6\xd5\xae\x9fs\x81K\xdad\x8c\x16\x89Z\xc3\xa8,\xb6\xa2\xcd\xe7\x91$\xa5c\xc9!\xd8\xec\x1f\xc2\xc5\x01\x06\x11\xebXx\xf56\xbd\xed&\xad\xcd\x87\xe0\xdc~(\x06\xd1\xd7q\xdf\xc6x9\xdb$K\x11a\xb4\xf4n\xb0\xd8\x8e\x08]\x0b\x12\xc1\x8a\xdeb\x03:\x89\xef\"\xbb\x157\xb8F\x86`\xb75\x11\xae\xd9\xe2D0\xda\x9d\x08\x04\xbeu\x91\x0f\x14\x1a\x0bO\x10(\x08\xbd\xadR\x04g\xd9\xa1\xef\x18\x06\xd8\xa9\x08.k\x15\x810,\x8b\xe5\x8a`\xb6_\x11\x86\xf4\xd1\xb6h\x11znB\x1d\x1b\x17\xc1:>\x93\xbdKhj\xb7}\x11\xf4\x160\x02\x1dy\xdb\x1a.\xdawl\xe2\xe2\xef\xc36]\x8b\xb8\xba\x85\xd5Z\xfaK`\x14\x87\x9c\xb50\xbc\xcf\x96\xa7\x85\x05\xd3\x19{w\xac\x0d\x1b\xc5\xc38l\x0c\xb8a{h \xa6'R\xc7\xba0\x10C\xb7U\x9a\x16t\xcc\xa3\x8e\xd1.\xa0r\xa9\xde\x060\xef\xfcT\xbc\xb5]\xbe\xb9\xb7k\x10h\xf6Z\x8f%\xb2\xfa\x94l\xc7\xd5\xce\xae|\x8d{\xb1v\x076\xf2\x80\x99\x03\xf4{\xacu\x91\xfc\xf7S\x83t\xd3z\xe9\xb9c\xda\xf6I\xf7\xd26\xf7+\xfdNH\xc5\xf2,\x8c\x17\x17\xc7/\xc8\xfa\xca\xc7\xff\xef\x11\x86\x90\x9d\xb1$\xeb\x9c\x94IBbLl\xd4\x1c<\xcb\xd1\xd5\x03\x88\xdd\x13\xb4\x9b~\x1e\xb3\x93D\xfe\x913\x9fz\xa0\xc59\x0b\xa2\xc6\x15\xccvbc\xa4\xeb<\x9f\x7f{O-\x95W\xdcD\x89E\x16l\xcc\xd1\xc3V\x9b\x9b\xf7\xee\x1e~\xf7\xed\xe1\xbdo\xef\xdf=\xbd\xfb\xf0\xc9\xc3\xfbO\xee>\x9e\xdd\xfb\xfe\xbb?\xdd=|R\x19\x1eQ\xbe9\xd3\xf8@L\x03Q\xeb\x12\xb24;\x9b\x0b\xcai\xa8@b\x8b=\xafj\xd9y\x93o\xa1\xa7\xae\xeb\xf20\xd8\xf8\x18L\xbc\x0c\x06\x8f\x10U\xa5yR\x00\x1d\x7f\x1e\xeb{\xffa}\x81\x172\xcd\xeal\x8fje\xc92\xb6O\xfc\x97*t\x9d\xee\xb3\x17\x99/~=]-\xe2(\xe5Q\x9a\xef\xb5\x13\xb6\xdd\xee\x13\xbd\xe4\xad\";z\x9f\xfd\xf0\xcb`)6\xdf}\xf6!tF\x9c\xf2\xe4\x8c\xd5s#\x8c\xddPs$\xa0\xbb{\xd0\xf35\x04\\\xf2$\xed[^!\xf5\xba\xafn>\xac\xab9\xb6\xdd\xfa\xb6\xbf\xab\xb6b\xf2&|^\xdb\xb3\xb5M\xf4\xcd@\xbb\x7f\x03i\x90\xdd}\x1c\x0c\xdeu\xb7\x89S7u\x9b\xfb:\x90\xc6B\xdb\xdfA\xb7\xc7\x03i\x80\xf5\x055\xec\xf7\xd0o;\xbd\xc6\x1dP\x81\xc6\x0e\x00\xdb\xe0\xc1\xe9\xbc0\xd8\x04\xe0\xb2\x0b\xc0f\x1b\x80\x91:\xe0\xa2\x10\x0c\xa4\x92\xc6V\x00\x12\x9f\xdc\x7f\xd8f\x14\xad\xdd\x00$\xae\xee1p\x8d\x0d\xb1\xb7\xbe\x8c\x9b\xfc\xdez\xb4\xdb\x16{\xeb\xd6dg\xec\xad\xc3\xae\xcd\xb1\xb7\xae,\xf6\xc7\xde\xfa4\xd8\"{\xeb\xcfl\x97X\xbb\xf4\xb1O`\xa8\x8d\x02:;\x05\xfam)\x1a\x9b\x05\\\x1aSo\xbb\x80\xce~\x012\xae\xa1\x89\x05\x0d\xfc\x8ak\x86c\xaa\xe9\xe5^\x16\xd3\xb4\xf77\x9a\xfe\xc1\xf6\xfem\xc2\x917\xb4zb\xbfq\x84ro\xd3\xab*\x04\xeb\xec+\x0cA\xb4\xe4\x9d\x04\x15g\xfb\xbaQ\xad\x89\xc8\xe9\x93g` \xd6$\xce\xf57\x92\x0eA*\xce\x11i\xc66\x1a\xed\xe5\x81\x98|\xb0\xa8\xe15\xf6g\x94\x84\xb2\xbf{\x9d\x1f\xf5\xca\x06\xc1*\xb5.\xb9\xb5 \x98\x93@0P\xc8*0($\x04\xc7\x04\x810I\xb0\xab\xa8\xe2\x03\x97\xa2B\xb0\xaa+\x04\x1bM\x81FW\x18\x85\xb6\x84\xac\x1c7\xfb\x1b2f\xbe\xcbO\x9f\x7f\xf7\xe0?\xc3\x8b\xe8\xd3\x7f\xfd\xe5\xe5\xd5\xfa\xbb_\xa2G\xaf\xbf\x7f\xbb\xf9\xeeU\xfe\xdfw_\xbe}0\xff\xf52\xff\xf5Qr\xf5\xe3\xe1\xe6\xf4\xc3\x9f\x93w\xf9\xeb\xd7\xff}yt\xf4\xe9\xf4\xf1/\xbf\xbeY\x9f\xdc}wt\xe7\xf4\xc5\xf6Q~\xe7\xf1\xbd\xa3O\xc9\x7f\xaf\xfe\xcf\x9f\xdfo\x9f\xfd\xe7\xd3\xa7\xca\xed\xe1W\xe9\x81\x12\xb2\xe1\xdd\x92h\xd2n\xdev\x9d\x18\x9b\x9bQ\x80\xd1\x8d\x02.b;\xdc)`\xd1\xb9V\xa6\xd5\xbaV\x00t\xee\x15 \x8f\xd1O\x1bj]-@\x1ex[\xc6,n\x17p\xa9\n\xbb\x92\xf8\x8d\x0c\x0d\x05\x16\x0d\xe8\xd4\x7fn\xed\xe7\xd0}$\xcd\xe7\xd4{v\xad\xe7\xa4\"\x8c@I\x83\xcb\x06\\s\xd4\xbbn\xc0\xe9\xbe\x01\xd7\xc4\x86N\xc8\xe0\xca\x81}\xf7k\xf5\xaf\xc0\xbe{w\xbbx`\xdfC\xb0\xb9{`\xdf\x9d\xeb]?\xb0\xefn\x1dn \xd8w\xff\x16\x97\x10\xec\xbbo\xbb{\x08\\\xdd\xfb\xba\x89\xa0\xbb\xeb\xfb\xbb\x8a\xc0\xe4.\x02\xd7\xaea\xdf1\x0c\xae#p\x11\x01\xc0\xe6B\x02\x93\x1b \xbc\xf0\xd6\xd1N>\x98F\xd3?\x90\x0f\xa6\xc5\x82\x93%?Y\xf25\x98,y\xfd\x8f\x04A\x07\x97\xb0\xc3d\xc9\xefE\xdfO\x96\xfco4\x84\xc9\x92\xbf\xfe\xfe'K~\xb2\xe4\x9dx\xebh\x0dY6^\x81\xb6N\x9f\xdd`1\x8c\x84Y\x1b<\x86~\x96\xe6d\x035a\xb2\x81\x14\x98\x82\xd0`\xe1b\xd8\xe3\xb5H\xa4\xc04P\xa8C\x08P\x03\x05O\xfd0c(\xbd5\x07\xaba\xa4\x1e\x8c\x81k\x18\xa9\x03k\x10\x1b|;\xf1:\xf4!H\xfc\xd6\xbe\xad\xd2V\xf6\xdd\x0dl\x83#\xb8\x0dn\xae\x05\x02\xe7\x82S\xa0ID\x84\x11\x84\xba\x02k\xd0\x1bh\x13\x07\xe2\xe4\xc1\xad6\x8b\x8f\xdc\xcb\xa9\xc0\xa9B\x11\\t\x07:\xeda4\xfa_\xd7\x95\x12{\x0c\x92\xbf\xe0!_\xcb'#\x8a\x7f\xc5\xc9;~\xc5\x92B\x8e:\xcc\xd3e\x13\x8b>\xd7N\xdf\xc74n\x99\xc4\xdewZ\x82\xbc\xd9\xa0\x9a\x0e\x18\xf6\xbc\xa1\xb7\x11i\x8b\xb6-\x8b_\xce\xab[\xac\xad/\xd4\xa6\xe0*\n\xb4\xcbu<\x15\x92\x8a\x8b\x99\x92W3\xa9\x7f\x0f{\"\x97\xd3\x04\xb0L\xd7\x87}\x10\xc6`\"\x846+!\x98\x8d\xa8\xf1_\xe4\xb1\xdc\x1a\xe4\xd45\x16\xa6C\xb0\xdd\x0eD\xc7^\xbb'@{\xe1\xd8\xb8\xac\xf45I\xde3\x96\xf2w\xfc\x13Y\xd6V \xfd\x0e\xdd\xc2'\xb0~\xcc\xce\x93G\x9f\xcf\xcf\xb3\x87\xc9\xe6\xd3%\x8f\x1e\xdd\xfb>\xba\x08?\x87\xf9\x97\xdd\xe5\xf7_\x1e\xff\xfa\xe9\xd7\xc5fQ6o\x08\xcb{\x1e\xc9\x07UQH N\xe0'\xbe\x9b\xb3\x94C\xc46\x1c\xb2\x18\xd6<\xe2 \xcb80\xc8\x12\x16\xa5l!Z\x16\xd8\x9c\x97>\xd4F{\xe3=\x8f2\xb8\x0c\x18<\x97\xe3\x86_\xe2\x1d[\xf3\x04\xfe\xbf\x0fw\xef\xde=|\xf5\xe8\xfb\xbb7\x8aV\xbe5\xdf\x88\xf0\xdb\x1f\xf3y\xf1\x9b\xe9^\x01;\x9a\xcaJ\xee\xde%\xe0hy\xa8Z6\xae\x12q4j\xdeK\xb3f\xe9\x19[\xfe\x9a\xa7\xd9\x86{\xdc\x86|8\xbb\xa70\xac8\xdf\xb3\x92\xfe\x9a$\x0b\xa4\xb1\xb5\xc9C\xd6}\xb2q\x1e\xc7!\xaf\xbd\x0b]\xb6]\xb1\xd0\xf4(R\xc3\xd6z\x99f\xc1Fp\xfd\x9a\xa5\xf2\x99\x9f\x06\xf7\xc3\xad\x05\x8b\xa28\x839\xc7\xf7\x8c\x82\x08\x16q\xf4k\x1e\xe1\xcfWAv^C\xa6D\xe8,\x8e\xc2\xdd\xedo\x00N\xb9\xba\x93\xa3\xbc\xef\x9b\xac \xbeN\x83\xaas\xd3\x89\x9dk\x1b\xb4.\xbb]\xc4Q\xba\xcd\xe7\x87_\x16\xbf.s\xbe\xfdt\xf72\xbf\xf7e}\xb1\xbex\xf0\x98\xaf\xd8\xdd\xe8\xd3\xd5\x97h\xc9\xa2O\x0f7\x0f\x16\xdfm\xd9\xfd\xfc\x01\xdb~y\xb0\xbe\x97<^\xa7\xdbO\xebG\xeb\xc7\x8b\xf4\xfe\xc5\xe3E\xae^\xd5\xba\x8c\xb3 Z\x9fm\xe3+\x0f%pX\x93\xc9\xd2\xe3\xbbM\x828 2\xf2\x04K,\xa7\xfcsv\"\xb1\xa8]\x8f\xb0\xc6\xdb\xa2\x81F\x056\xdfg\xc0\xf7\xaalc\xaa3\x82\xed\xbb\xb2K\xf9\x1b\xe9\xcb4cYng\xc4U\x10 \x94,\x0cwg\x03\xee\xc7\xbd\xb9\xe3\xe9\xcd\xa6\xaa0*\x8a\x9a6\x9f\xdd-\xa1\xee}`\xf34c\x81\xb6\x0e\xaa\x17\xbe\x9bQ<\xde\xe0\xa2\xf8Lh\x8f\xb3K\x9e\xd1.\xdbv!M\xf3\xf9&\xc8\xce\x9c\xd7\x99`Xt\xc9\xb7q\xda\xad[\xfac\xef\"\x85\x9aH3\x968\x08uR\xe8\x831$Y#T\x16-\xf5\xa2\xbe0\x84\x8e\xf5o*\xfc\xb1\xd7\x91J\xec\x82\xc9c\xd7\x9e0`\x13\xa5\x07\xeaN\x85r\xf4|^\xab\xa5\x0f\x1d[\x91N+tt`\x0f\x1cM\xbd\xd7\x03\x81^\xd7y\"\xfa%V\xe6\x1f\x81p\x97q\xe6\xb0\x04\xa8<\x14\xdb\xb7T\x7f\xbbN\xfc\xf7W\xec1\xabr\x1d\xb6\xf9\xfc\xeb\xb3\xf4~eA\xd8}f\xb0y\x0c\xd0\xdb+-\x83*\xbe\xe0\x91\x9d\xf6K\xe5K;K\xcfY\xd2=qQ\xcd/\x92\xe5\xb3\x89\xa3\xe0\x82x3^\xb0\xe4Q\xd6\xb0Q-\x1f\xd3\xdf\xf2\x17\xa7\xe1E.\x8c\xdf\xb3E\x1cel\xa1\x0dLw\x1a\x15\xaf\x10;\xbf\x9d\xc7\xd1\xf2L\x7fE\x9bY\x07\xdc\xac7\x0e\xa2,ag\xd9g\xbcu\xbf+\xdf\xed'\xcdJ<*\xba\x90Gs|\xb0\xb6\xf78*\x0cN;\xabqHx\xfc\xdd\xddo\xef\x1e~{\xf7\xf0\xf4\xee\xdd'\xf2\xff\xfe[\xa1\x94\xf1\xd9\xb4\xf7\xc5B #.\xaev>\x026\xec\xf3\xd98X\x16\xe7,Z\xf3\x11\x90\xe5\xdb\xa58F\xf7\xba\xc2\xc7D\xeb*\xd8AV\xd5\x95\x06\xa0\xe8j\xbfX\x08A\xa7\xccY\xc84\xbe)\x12[hL67\xed\xda\xe6\x9a\xf9\x1a\\\xeb\n\xa0\xa1\xf6A\x89JEx\xafg\xdf\xf6I|\x1eeI\xb0o\x1fZ\x10\x05Y\xc0\xc2\xb3\xce2\xd6\xb1i\x08\xe9\xfb\xfd\"\xe1\x92\xba\x1d\xa5\xe6h\xb7 \"\x8d\x84u\x1a\x94\xeb\xf8\xb2N4\xc2\x02\x1a\xe7Og\xf5\xc67\xc6yj\xbe\xed\xce\xcd4\xab\xafL-\\3\xd1\x9a[\xa6\x89j\xd5W\xef\xf8\xf2\xfa\xe8\x95&\x0b\xcf\x16\xcb4#\xb5\xe8'\xff\xffo\xc2WO\xe0\xe6\xffsG\xbe\xbe\x1f\x08\x1a\xa4w\xea\x14\xb9\xd9\xa2\x90\x90\x18z\xfd\xb9\xd7R-b\xa1l\xe5\xe7\xf6\x15\x83=0\x15\xee]\x82\xda\xc6\xcf\xcas\xd1\x8b \xcd\x8e\xcb\x97e d\xf8\xca\xcfG)\x0fWg\xd2\x1c\xbd\x96h\xf9\xd7\xe6z\xb9\x94\x8f^\x99,\xd6?\xee\xdcO\xf2y\x18,~\xe2tq\x96\x9f\xd8x\xd7\xfen\xed\xfb`\x1d\x05\xd1\xdaKt\xd0\xb1I\xd8\x1ee\xca\xe4Y\xbcZ\xa5\xdc\xfe!\x1e\xb7\xcf\xf2(\x0b:\xb1\xfc\xd6\x86\x9b\xa6|\x89\xd5X\xa9\xe9\x80V\xb68a \xdb<\x97\xa7\x05\xfa\xe4\xf2y\xbae\xf4P\xad`\x82\xea\x07\x0fO\xc6k\xf6\xb9\xd4^i\xd5\xb9\x07\x86\x9b7mK\\\xce\xf2}\xbe\xdd\x86\x1e\x0c\xf5\xcf\x95P\x81:z\xc6\xf2\xec|vy8\xe7\x19;\x9cI\xbe\xa1[\xa0\xe2L\xba\xe1\x9bX\x1cL\x13\xb6\xc8x\xe2\xdaMVq\xb2a\xd9\x13\xc8\x83({\xa4\xf2\xfe\xb2\xcfgi\xb0>\xd3>\x86Gn\xff\x85\x9f-\xe24;\xdb\xf2\xe4l\xbe\xebF\xb2)\x88\xc4(.y\x12\xacv\x88\x8b/\xef=|x\xf8x\x0cT\xa9z,\xc2\x1fYc\x07\xc6\x15\x02i!\xf1\x14\xb2s\x0e[\xf1'.\x88/\x03\xec\xe2ObQa\x13/\xf3\x90\xcf\x0cK-\xef\xee9\xc2\xf4\x8ew<\xdd\xc6QJ\xd7\x15EZ\x88Q\xf2\x10\xf4R >=\xcb\x13\xed\xf3\n\x1a\xc65\xa7\x16\x088\x82\x0f\xef~\xbe\x93\xf04\xce\x93\x85\xca\xb59g\x19\xe4Q\xf0)\xe7\xe1\xaep\xe6\xad\x82\x82X\xa2\x1f\x88W\xe2\xdf-T)O\x02\x16\x06_\xf8\xf2\x9b\xd6/\xdb$\xce\xe2E\x1c\xc2<_\xadx\x02\x1b\x9e\xa6l\xcdgpz\x1e\xa4\xc5\x98a\x93\xa7\x19H\xbf^\x10\x01\xcb \xe4,\xcd\xda\x98\xe2\x88\xc3\x8d;7\xa0\x94\x17\x81\x83\xcbZ\x15H\xf9z\xc3\xa3\xac\x18\x9c\x98\xd7\xcd\x14\xb6L,d\x9ef-D \xdf&<\xe5Q\xa7\x07\xd1t\x95\x87\xe1\x0e>\xe5,\x14\xf3^\"U\n\xb4r\xfe\xb7X\nA\xd4n\xfaQtvg\x1d\xc7\xeb\x90\xcf\xe4\x9c\xe7\xf9j\xf6\"O\xa4\xd5\xfc\xf16\x8eU\"K\xcf\xe3<\\\xc2\x9c\x83\x98l\x0b\xcf\x82Eq\x14,X(\x99\xb9\xdd\xcb->[\xcf\x0e\x04y\xc4\xe9\x10n\xccn@\x90B\x14g\x82\xa9\xf86\xe3\xcb\xdb\xb3o\xda\x8d\x8e#\xd8\n\x82\x05\x0b~\x00\x19\x17\x12\x90\xa79\x13\xd3\xc4\n\x8cm\x10\x8a\xb1d\xb1\x9c\xe4<\x88X\xb2\x03\x16\x86r\xbe\xed\x9cE\xc9 \xd99\xdf\xb5\xbb\xe1\x9f\xb7|\x91A\x90A\x16C\x9e\xca\xd9 |bY\xf9g\xb94G\xd1n\x06?\xc6W\xfc\x92'\x07R\xde>\xbc\xfb9\x85\xab\xf3`q\xde\xc2&\x10\x086k\xf3\xd9\xe2\x9co8|<\xcf\xb2\xed\xc7\x03\xfc\xdf\xf4\xe3\x01\xc4 Dq\xf1\xeb\x81\xe4\x94\x05\x8b\x8a\xf0\x88\x9ci\xca3\xc8\xb7\x1dr\x8b\x19v\xfa\xe0\xc9%Op\xa2\x1b\xb6Mq\xd9\xe5H\xb3X\xf1/\xd4\x8eY \xb3s\xc20\xbeJ\x9ft\xa8\xff\xafp\xbc\xaa\xc6&\x96k\x9b\xc4\x97\xc1\x92/\xcb\xe1\x8b?\xb24\xcd7|9\xeb6?\x8a\xe0\xc7\xd3\xd3\x13\xf8\xe1\xe5)\xc4\x91bo\x14\x99]\xc0\xc3%0\xf8k\x9b\xf1Nw[\xfe\xb7\xbf\xfe\xad\x85\xac\xd8\xf3\xc5\xca\x14\xab\x8c\x1aS\xd2o\x9b\xc4\xcb|\xc1\x81E\xc0\x93$Nf\xdd\x91l\xb7a\xb0`\xc5\x9c\x13.x$\xbe\xe2KA\x96\x05[\x08Y\x8c\xe3\x8b|[<\xd9\x96\xc2\x9c\xa5|Y\x0c\xba3\x94\x0f\xef~\x96\xfd\x9e\xb3K\xb9\xd4\x9b\x1a7.\x91\x1d\x99\x1a\xa6\xf8\xf7e\x1c,\x81E\xddr \xecT\nX\xc2Wq\xc2\x0fT3\x81\x8de\xc1<\x08\x83l\x07\x11\xe7K\xb9\x84s\x0eR\x01$\x97|\xd9\xc1\x16G\x80\x9eb\xf9\xa9\x94\x80\x19\xdc\xfa\x90rU\xc0(\xe6+\x18B\xc82r\x04\x8b\xd8\xba;\xbfy\xc2\xa5\x8d\xa7\xd0\xcdn\xb7\xd7\xf6M\x9c\xf1'\x90 =\xb8*\x92\xb6\x98\x1ci!\xd3\x8b9}\xfb\xeev\xfb\xa8\x8a\x88\x91\x11t\xa8\x11\xb9n\xfa\x0f\x1c\xd3\xff!n\xcf\\N\xfd\xc9S\xf8\x97\xed|\xf6*\x8e\xff>\x9b\xcd\xfe\xd1\xfe\x84E\xbb\x03a6\x88\xef\xb6\xb8i\xbefIz\xceBA\x14\xdd\x00\xbb\x93o\xf7\xd3\xe9$X\xb5\xba\xf8\x10m\xaaN\xe4\x10$\xb3\xc9\xaf\xfe\xd7S\x88\x82P\xc3@\xba\x9e\x1b\x9cr*\x8f\x85\x8b\x8bRo(\x83\x0d\xe6\xbbjKUZ\xed*\x08C\xf1\xc3\x92\xafX\x1e\xca=\xb5\x8e\xec\xa6f\xcb\xbc#\xce\x183\xf9\x830\"n\n\xfb\xb1\xd4\xaeB\xf3\x8a\xb5\x11\x7f\xc0\xf5\xa9\xa3+UY\x14\xee\x94\x8d\xdc9\xb2\x94\xe6 \xb0U\xc6q\xa7\x95\xa7\xa4\x9bwn\xd6\x91\x15\x06\xba\xea\x16-\xf2\xc2\xd3\x017Vq<\x9b\xb3D\x0e\xf8\xf3\x9d\xdd\xec\xcb\x0d\x9c+\xda\x9cm\xc3YvwC|%\xd4j\xed\x87?\xbf\x7f\xfb\xa6\xfe\xdfO\x9f>}\xda\xa6\xb6\xf8\xa6:\x95\xe1\xde\x1e\x0bQ(6:\xb4Z\xf3\xb4\xd8\x85\x12\xbe\xceC\x96\xd4\xb1t\x1b\x8b\x0f\x97\xbc\xda\xa4\x0e\x80o\xe6|\xb9\xac\xb6\xab\x83b\xdfk\x9c\xe5j\x1b\xc8JN\xf4\xe3\x7f\x88\xa9~\xc4CJ\xb5\xe5\xd6 7S\xc2\xf5\xa4c\x80\xb1\xc5\x85\x90\xab\xca<_\x05!o\xeb)%}'\xda\xdd\x8fF\xaaP]\x90n'd\xd7\x0d9\xc8\x11IrE\xf6qF\xeaI\xe1tH\x8e\xe6\x924\xf4\xdf\xe2\xa4Q\x1d\x93\xa3\xbb&GvN\x8e\xeb\x9e\xb48(\xbb.\xca\xae\x93r,7\xe5\x88\x8e\xca\xb1]\x95Tg%\xc1]IvX\xd2\\\x96\x1a\xa7\xa5\xce\xb1Ewm\xd9\x1d\x97d\xd7%\xc9y\xd9\x19\xfc\x98\x0e\xcc\xd1]\x98c:1\xc7tc\x0e[o\xa7+\xd3\xed\xccT\xeeL\x01x\xddI\xe9\x1d\x94Ga\xb9\xa4\x9f\x834\x93\x84-~)Zl\xd9:\x88jE)\xd0\xb6\xcc\xab\x0fZ\xa9\x89\xe5\x9f\x0bU\xa8\\\xa3\xd5V\xa1\xf55\xea=\x8d\xf2\xaa\xfaF\x9e0\xf4\xca\x88(\xa6\xff?\xed\x03\x8d\xc2\xaf\xfc\xb8\xe2\x9f\xc5I\x9b\xa5)\xba N\xd8\x9a\xbf\xe3\x9fr\x9ef3\xfc\xbd\x85\xe4S\xce\xc5i\xff\x9cKt\x82\x04\x1c6q\x9a\x01\x97\xe7Zy\x08\xae5\xd1\\\xf9\xe9\x9cP#\xd3\xb4h\x83S\xea\x9c\xd1$z9\x1f\xf9\x0f\xbc\xc7K\xe8l\xe5\xe1\xa8\x1d\xc7W\xad\xb6\xf5\xa9\xe25`\x12I\x9b\xb3\xafX\n)\xcf\x0e \xc8R\xe5\xa0I!\x8f\x90\x11\x96xF\xbe\n\x8a\xeb\xa2\xdc\xde\xf4\xb4\x87;=\xf5\xf3\xa7c\x16\xad\xb77}[K\x8f\xee\xccek\xcd\xcc-v\xc9*'\x17\xc1\x83\xf9\xad\xc9\xd6\xd0\x8bm\xf4\x89\xd7\x03p\x99\x93\xb0\xfb!u&d\x8f\x83V\x93\x9c\xed\x8b\xb8\xc1\n\x1a\x1e\xa3\xf0r\x91\xdb\xfd\xee\xe4y\x97\x87\xe7,\xba(y\xf8\x05\x8f\xe2\xcd\x87\xc8\xe3\x16\x9bV\xe1\x81vf\x8d)\xc8\x06\xd56\x8c\x83/L\x9dz\xb0a\x1d\\\xf2\xa8\xf8:\x8f\x82L\xba\xfd!gY\xbc\xb9\xad\xd8\x9c\x7f\xde\xc6\x91\xe6*\xbe\xf6}\x02\x8a\xac\xcd\xe52{\x80\x14\xde\xfa0\xe5\x15ebp\x87w\xab\xdf\xa5I\x11G\x1cC-5\x0c \x0b\n\x1b\x7f\xceR~\x86\xd3\xc8b\xb1Y\xc5\xc9R\x98\xf61pa\xf8\xd7\xe6Z\x12\xfff\x8a\xf3\xae#<,H\xf1\x14\x0e\xffo\xd9}\x85\xbb\xfe\xa9\x8c\x8f\x14fq\xbd\xfbx\x85\xe4\xab\x02\x02\xb2p\x91\x03\xab\xba\x16\x1f\xdd\x14\x1f\xd5\x8b\xfa\xdb\x0e\xcd\xb2\xff\xa7\xf0H\x98Uy\xfa\x04\x0eA\xb4\x12\xc3\xbb\xfb\x7f\x1f\xb5\x96\x89\x85\x01K\xbd\x8b6\xb5\xac\xa4\xec\x0b\xc4(c\x04\x10\x06\xa9\x1cw\xc1D\xea7%\x025F\xea\nT\xb9SW\x14\xa8\xad9\x138\xf3E\xd6\xf6\xd31DZ\x17\x01e\x8d\xe4\x05\x11\x8b\xa5\x0f\x16xa\x89I\xe0^\xf3\x8c-\x99z\xb8\x98$o\xb4\xdb\xe2\xe4\xa0\xce\xc4h\xfa\xd1\x9d\x1c\xa2\xf5\xadF\xf3\xdd\x80\xc3\xba\x851|8\xe0\xed\xc7\x01\x18\xd9\x97\x03\x1d\x7f\x0e\xd8\xa8l\x97\xca!\xbe\x9d\x16\xaa\x1a\xd7\xddm\xb0V\xc7\xc7\x03\xe4\xf1v\x96p\xa0\xbf\x07\x1c>\x1f\xe8\xf8}\xc06\xd61\xfc?\xa0\xf1\x01Y;\xb5/\xe8`\x7fP\x0b\x9f,\x98Z\xb4S\xbc\xdc~!\xb0.\xa5\xbf\x7f\x08t>\"\xab\x01\xa55l\xacfT\xbd\xf5\x9dFsOs[\xb6M\x07\x1bU{\xf72\x18\xcc/+\xf3\x19L0\xdb\x06\xf1u=\xeaH1SF6\xc9\x1cF\x99\xdd,s\x1bfn\xd3\x8c:\xeb1\xcd\xb3\xf1\x0c4\xb2\x89\xd6\xd3H\xebc\xa6\xb9\x06J2\xd4\x86\x98jVc\xcde\xaeY\x0d6\x82\x0c\x8dj\xb4\xb9\xf6|\x18\xcbp\xebc\xba\xed\xc1x\xd3\x99oV\x9a\xbbdwD#\xceb\xc6\x19\x0c9\xfa\xc85\x0b;\x829\xe76\xe8t&\x9du\xd4c\x99uz\xc3\x8eN0\xcdR\xf77\xef:\xa8j\xe1?\x9d\x81G3\xf1\xecK\xdc\xcf\xcc\xd3\x1az\x9d\xae\x1a\xc4Q\x16SU\x82'F\x8b\xbc\x00A\x84\xdb\xa3\x90y)\x96\x85\xfb?\xe1\xeb \xcdx\xd2\xa8\xb4\xc5'\x8e\xa6\xa0\xc0\x14\x14\xb8\xbe\xa0\x80\xfe\xb8\xe0yTI{\x9eUF\xca\x9a\xf6\xe0f}h\x18,F\xcbo\xef\xc75\x84\xec\xabv\xfa\xb0=XC\xf7@P\xf8c\x86\xf0\xa1<\xd7\xb4\xc3\xf8\xa0\x0b\xe5\xe3\xe7\xb6p>X\xa7o\x9a\xf8\xf0\xd0\xbeU\x9aZ)\xdau\xcc]Q\x92JK\x98\xab\x9f\xef\x88>\xea\xcc-G`\x15\x1d\xbc\x8a\xfe\xed\xca[x\xf4\xcf\x8f\x92\x84G\xc3\xbe\x06\xc6\x9d\xa2j\x1a\xe6h/\x19%\xac\xa6\xda\xf8\xc5\xd5N\xc5\x96\x81M\xbd\xf9#\xad\xbdq\x00\x06\xbd8\xdc\xfb3\xe5\x98(\xa0\xb1\x15T\xe6\x06.\x90b\x9e\xe2\xbf\x8a\x83\x81\xcc*)\x1aL\xf6\xe3d?\x8ed?\xb6\x07jR2\x14\x8dVkV`\xeb\xd8\x8c\x06\xd5V3G\xc8\xda\xac\xa5i4\xab4V\x9e`\xc9\x98\x03\xad\xa6\xcaJBt\x0d\xd3\xa8$K\xcag\x19\x8f\x96<\xd9\x04QVR\xe8\x07\x9e=\x0b\xe3\xc5\xc5\xb3\xdd\x8f\xf2I!o\xe5/_\x03\xd2<\xb0L\x92\xf4s\x96\x9e{\nEK\xca\xb7,\x11\xe6^vv\xce\xd9R\xff\xb6\xae\xc6\xe66[\xdc\x1a9\x85\x12\x93\xc9\xa7m\xf3gw\xa7\x08.\xeb\xdd\xa5\xd0NX\x92\xa5<\xfbQ\xce\xf8\x9b\xd6\x8fr5\x8f_\xd4W\xa7\xdf\xd2\x8cC\xcf\xe2\xa2/\x0d\x05p\xb8\xe89\x91\xc3\x94\x9e\x0f\x03\xa5z\x85]Z\x93\xaf\x83\x95\xfe`\xd7\xc1\x08l\xbb\xdd\x0fj\xd7\x11K\x18%\xc5\xf3\xdd\xb0`[\xb4\x03p'W\x7fN\xf2\xb0peo\x93x\xc1\xd3\x14\xef)\x90\xf4\xd0\xe0+\xf6l\xf9\xf3\xe2\x9c\x05\xd1\x81\xce\xff\x1fD\x8b0\xc7\x1b\x0f\xc2\xb0\xf61\xc8S\xf1\xcd!KX\x94\xe2% \x1b\xb68\x0f\"\xde\xf6x\xcbQ44\x90\x02\xcbR\xe8\xdfQ%\n\xa6n\xe1t\xaf\xac\x12\xd1-Y\xc6\xbf\x15\xed[_\xc8\xeb<\xba\xfaU\xc1\x00\xc9\xd0+%p\x0d\x18l\xca \xc1\xaa\x8f\x15XG\x0e\xce\xd1\x83YO\x97?[\xf5\xb5\x02w\x1c\xd2F*\xa0\x90\x0b\xdc$s\xe8\xf5\xd6GM\xfd\xae@\xb2\x8a|\xb31;\x1bs\xc7\x81\xaac\x81\x16\xe5\x19\xb5\xb5\x10\xfb\xd6\xb7\xe2O#w_\xbe\xfb\x9a\x8e\x8c\xb8=\xafU\"C7\\\xe8%\x88\xf3l\x9bg\xd5\xdf\xb6 \xbf\xd4\xaaOy\x94\xd8\xdb\x18K\x8d>2^\xb6\xdd\x8e\x8cQ\xf2_q\xd6\x18\x195\xbf\x0c\x96\xd2\x81\xff\x94\xc6\x9a\x15\xa1<\xfdWg{1f\xfb>Z\xdboM\x9fH\x0bq>Y\x88\xf4\x96\x93\x85X\xc1d!N\x16\xa2\x0d\x88\xba\x03<\xf4\x07x\x18\x1e\x1ed\x07\xfa\x1e\x800Y\x88\x04\xa0.\x14\xf8/\x16\xf8.\xd8d!v\xa0\xc7H\x9c\xa4\x9e,D\xfa\x16\xfa\xbb\xb0\x10\xa5Z9\xbb\x8c\xb3 Z\x9f\xc9bF\xb7\xb5\xe8$(M\x95T\xbct\xbd\xfd\x92D\xd9\xb3G\x97\x08S\xf9\xe6\x85r$\x0b\xe6yY\xb8\x91+\xb7\xbbr,c\x98\xa6$\xa0\x11]a\xa6eW\xb1\xc0\xb1\n\x83\x85|\xea@p\x9a\x81'Ba\xf0\x9cam\xd0\x19\xcb2\xb6\xb8\xb8.wvm\x84g\x96\\\x1a\x04B\x9f@\xec\x17JB\x11w{b\xdf\xe0\xd1?\x18R\xa0\xf4\xe01\x00\xf0\x1c\x04\xd8\x92\xa8\xf4@M\xad\xd2\x83\xe7\\\xa0\xc7|\xc0\x9e\x9c\xa5\x07\xa2\x02h\x83R\x08\xc6D.=\x18\xd3\xbb\xf4p\x9d\x83\xa3\xaa\xae6\xd0\xd2\xc6\xc8\xe8\xf4\xe9e\xd4\x93\xa7\x02G\xd2\x99\x1e\xa8\xa9hd\x84\xba\x945w\x82\x9a\x1e\xa8ikz0'\xb3\xe9\xc1\x9b\xf1h'h\x05\xde\xe8\xa9{~\x1d\xf4\xa9sz\x180 \x97I\xd0\x04G\xf2\x9d\x1e\xaeIw\xfa\x9c\xf3\xa0\x1f\xd1\x80n\x827\xa1\xc7A]A\x0f\xeaAO\n\x82\xef\x01^\x81\xcf\x01\xaa\x0d\xfe\x92\xa1\xc0w\xc1\xa1\xff\xa2C\xdf\x85\xefu\xe0W\xe0q\xf0W\xe0Ny\xd4C\x0f\xba\xf4\xa0\x07=iR\x0f\x96TJ=\\\xc7\xb4\x9c\x89\x8ez\xb8\x8e\xa1\x99K\xa3\xcc@\xcd\xfc$#4%\xd8w\x81\x967\xaa\x87\xeb \xa7+\xf3T\x0f\xd712s\xee\xaa\x1e\xaecL\x84\xecW=\\\xc7\xe0\x1c\xf9\xb3z\xb8\x8e\x81\xd12p\xf5\xe0\xce\xcb\xd5\xc3\xfe\xe7\xd5\xe7t\xe6\x93\x00LBhJ\x12\xd6\x03n\xa2\x14\x12zZh\xbe\x96\xd9Wx6!E\xfd\x14\xf41\x0e\xe9^v\x05\xd3\xa1\xc4C\x1c\x11\xa6C\x89\x11\xfcEB\x81\xef\x82C\xffE\x87\xbe\x0b\x7f\xdd\x87\x92\xeaj\x06*e\x90\"\xe6\x9b\x0f\xbb`\xbd\x0b\xb1\x0b\xbd\x18\xb8\x1f\xfb*\xcdt\xb6\n\x99\xe6\n7\x1b\xf4f\x0cZFR\x13\xbe\x85g?\xbf}\xfe\xd3\xd9\xf1\x8b\xb3W?\x1f\xfd@\xcc\xd6iC\x1b\xcb\xd1\xb3\xf7/\xdf\xb8\x93\x8d\x9a\xd0FB\xccXjB\x1b\xc9\x9bcW\xe2R\x13\xca4\xa6\xe1d\xf1?\x85!\xa0\x90-_\x85l]\xbb^\x11/Fy\x16.\xe2\x8b\xe3\x17^~e\x84R\x1c!\xc0\xe8\xac\xabA\x05\xde\xd1\xfd&\xf4\xe6\xe7\xdej\x8e\x10C\xed\xc2\xe0a\xfa9U\x11\xc8\xe9\x02M\x18V\xc3I>\x0f\x83\xc5O|\xd7\xf0\x9b\\\xf0]\xfd\xb2+\xbf=?O9^\xeeV\xab\xb7\xfe\xa5\xd4\x01DD\xd4\xd4\xad&\xf4\xa2w\x9f\xb3[\xe99\xdb&A\x9c\x04\x99\xb7h\xedu\x8cjt\x94AyJ\xba\xaf\x8c{\xaa\xc4\x1e\xc4\xf1\x16\x15Oe\xe8I \xe8A$\xe8\xa7\x06{\x10\x0b\xfa\x10\x0c\xfa*\xc0\xeb\x1b\xa0\xbf\xea\x1b]\xf1\x8d\xa0\xf6\xfa(\xbd\x1e4\xf6S&0D\xdd\xed}t~\x89\xbee+\xbfa\xd1\x86$,\xf58:s\xbb\xdf\x89\xbd\xd3z\x9d\xef\xbe\xb0(\x0b\"~F\xb3\xb3i\xf65\xc1\xae&\xebE\xba6$o\x16D\n\"x\xa8\x13\xf2\xd6@\x9eJ\x9e\xaa\xde\x85\xda&\xa0\xeb\xad\xd8\xfd4\x93\x17\xfdh\xfa\x01\xa1\x87\x02\xdf\xc3X\xfc\x945q\x00\xc4\xae)\x9e=\xcf\x1e]^;\xaa\x03\xe9g\xb1a<\x97\xb5 G\xb24\xc1U!\x81N #\xbeZ-\x0d\xcb2\xbe\xd9\xca\xea\x88,\x86M\x90\x86\x9c-\xe5\xbbM\xeb\xf3\xacx+\xa5\xeeA\xaa\xa5\x835 eTxf\xe56\xfa\xe5\x90\x86(2\xe2#\xdc*\xdb\x89\x0cO\xb7Bja\xba\x15\xb2\x01\xb6h\xa4\xcd\x9a\xda\xd7\xad\\\xa4\xf8 \x81x\xf6\x98\x9fot\xcf3\x8e\xe7\x19\xb1\xa3\xc7\xe6zE\xe1\x1a\xeb\xef\x0c\x9f\xd1\x02b\xe4\xd0\x17a\xa9\x08\\\xee\xd8\xde<:\xb1ok\xce\xb0\x93GO\x86\xe94\xf6Mj\x1c\xc8\x1c\xdd\xb1o\xc3\xe4\x88\x8d!\x1a\xd3B\xa7\x89\xcd\xe8\xfb7]\x19O\x7f\x01\xaa\x8d\x01\xde\x9d<\xd7=Rb\xbc\xb2\xfeg\xc1\xde\x88c\xba\xb0~\xba\xb0^\xc2H\xf4\x9c.\xac\xef\x80\x03\xb5\xfb\xb0@\xab<\x84\xe9\xc2z\xcbR\x8c~&\x99.\xac\x970\x1dM\xba@0\xda\x86\x1eM\xdc\xd5[$N\xd4\x8e\x90^{5]X?\xee\x18]eC}\xf1N\x17\xd6\x03\xd0\xcae\xdc\x851\xfd\xfa\x9f.\xac\xb7,\x8c\xdb\x02\x9a.\xac\x9f.\xac\xb7\x1a\x08\xd3\x85\xf5\xcdo\\&\n\x02-\xf9\x7f\xba\x8e\x946_\xb7\x1ak\xc2t\x1d\xa9;c\x02\xfc\x18\x9ab\xe0#\x90\n\x13i\xa7\n\x04[\xb8\xa9 \xd4\x02D\xa2\xee\x00\x0f\xfd\x01\xce\x03N\x05\x1ed\x07\xd7\x0e\xdf\x06\xd2\xa9\xb1 \x1e\xd4\x00O\x8a\x08\xf0*\x1c\xf4\xe1\x0b\x05t\xd6T@](\xf0_,\xf0]0\xe2\x99U\xdb\x84R\x00\xe8\x0cc\x94\x1f\xd2'\xear\xb74\x81\x1c\xb5Q\xd0c$NRO\xd7\x91\xd2\xb7\xd0\xdf\xc5u\xa4\xd3\x85\xf5\xbe-'\x0b\xb1\x82\xc9B\x9c,D\x1b\x10u\x07x\xe8\x0f\xf00<<\xc8\x0e\xf4=\x00a\xb2\x10 @](\xf0_,\xf0]\xb0\xc9B\xec@\x8f\x918I=Y\x88\xf4-\xf4wa!\xfe\x86\xa9\xd1\xd3\x85\xf5]\x98.\xac\x9f.\xacw}\xe75\x00\xf0\x1c\x04L\x17\xd6#\x10\x15@\x1b\x94B\xf0\xba\x13~\xba\xb0\xde\x0d\xd3\x85\xf5z\xa0\xa6\xad\xe9a\xba\xb0\xde\x0e\x03\x06\xe42 \x9a0]XO5\xc1\x9b\xd0\xe3\xa0\xae\xa0\x07\xf5\xa0'\x05\xc1\xf7\x00\xaf\xc0\xe7\x00\xd5\x06\x7f\xc9P\xe0\xbb\xe0\xd0\x7f\xd1\xa1\xef\xc2\xf7:\xf0+\xf08\xf8+p\xa7<\xea\xa1\x07]z\xd0\x83\x9e4\xa9\x87\xe9\xc2z\xbf\xa1\xf9\x15\x85#P3?\xc9\x08\xe9\x17\xba\xd1\xf2F\xf5p\x1d\xe4te\x9e\xea\xe1:F6]X\xef9\xb8\xe9\xc2\xfa\x1a\xec\x7f^}Ng> \xc0$\x84\xd3\x85\xf5z\xf0\xb7\xc0HQ?\x05}\x8cC\xba\x97]\xc1t(\xf1\x10G\x84\xe9Pb\x04\x7f\x91P\xe0\xbb\xe0\xd0\x7f\xd1\xa1\xef\xc2_\xf7\xa1d\xba\xb0\xdey!\x85\x1ez3\x06-#\xa9 \xbeWZ\xe8\xc1\xf3\xa2\x0b=x^\x7f\xa1\x07\xfa\xa5\x18z\xe8uU\x86\x1e\xfcOa\x08\xc4\x1b7<\xb1\x92\xee\xe7\xd0\x83wt\xbf \xbd\xf9\xb9\xb7\x9a#\xc4P\xbb0x\x98~NU\x04r\xba@\x13\x06\x8f\xd5\x8b\xa4}\xecx\x04\xeaE%\x1e(\xa7\x0b\xebm\x9fz\xedq>;\x1b\xed\"M\x05~;\xb9\xc7.\xee1;\x04\x9f9\"x\xeb\xb8^\xc2\xd8C\x10\xc9\x17q*\xf0&\x16\xf4\"\x18\xf8^\xd0\xa9\xa0\x17\xe1\xa0\x1f\xf1\xc0\xff\xe2N\x05\xd7;\xcc>V\x03\xf5bO\x0f\x94#\xdc\xdc\xec{\xd1\xa7\x82^\xf4\xeesv\xdb\xfa_\x00\xaa\xe0\x1a\xc6\xb8\x9d.\xac\xb7\x80\xa72\xf4$\x10\xf4 \x12\xf4S\x83=\x88\x05}\x08\x06}\x15\xe0\xf5\x0d\xd0_\xf5\x8d\xae\xf8FP{}\x94^\x0f\x1a\xfb)\x13\x18\xa2\xee\xf6>:\xbfD\xdf\xb2\x95\xdf\xb0hC\x9a.\xac\xd7\x03]\x1b\x927\x0b\"\x05\x11<\xd4 yk O\x1e\xbc\x08\x00\xbe\x1b\x81\x17!\xc0\x8f\x18\xe0\xaf\xf6\xf7;\x1c\x1f%OU\xef\xd3\x85\xf5&\xd8\xc3X\xfc\x945q\x00\xc4\xae)\x9e=\xcf\x1e]^;\xaa\x03i\xba\xb0\xbe\x02\xdbjN\x17\xd6\x13\xe2\xaf\xce\x9d\xc9\xbd\x1bM\xb7B6`\xba\xb0\x9e\x12\xc6\xf2\x8c\xe3yF\xec\xe8\xb1\xb9^Q\xb8\xe9\xc2z\xf2\xb6\xe6\x0c;y\xf4d\x98\xce?\xcb\x85\xf5\x9a\x0b\xe3\xad\xd7\xd5W\x17\xd5\xd7Z\x16\xe8\xfa]V_\x9a\xb1\xefy\xd6\xf3\xce\xfa\xf6.\xaf]~\xddf\xa0;\xae\xea\xd4iG\x8d\x1a\xd4\xa7Im\x1a\xa4\xcf\xc8\xa6\x863\xa0Ei\xdb\x14\xb6hv\x96'\xda\xed\xd4!)\x14\xf3\xf1\x08>\xbc\xfb\xf9N\xc2\xd38O\x16\x1c\"\xb6)\x986\x8f\x82O9\x0fw 89\x0bVAq\x02\xca\x8a\x9bNLY\x00)O\x02\x16\x06_\xf8R_\xab\xb5M\xe2,^\xc4!\xcc\xf3\xd5\x8a'\xea\xaa\x94\x19\xde\xca\x89s\x81M\x9e\x96\x12\x05,\x83\x90\xb34\xd3\xe3\x8b#\x0e7\xee\xdc\x80\xc59K\xd8\"\xe3\x89\xc0\xc4\xa5\x1d\n)_oxT\x8a\xfb\x87w?\xdfLa\xcb\xb2s\xd9\x81\x16]Y\x97\xae\xefM\xa0Y\xe5a\xb8\x83O9\x0b\x05U\x96H\xb3\xa2\x0bI\x9d[,\x85 \xd2#\xf8(\xba\xbf\xb3\x8e\xe3u\xc8g\x92\x16\xf3|5{\x91'\xb2\xc0\xed\xe3m\x1c\xbdD\x99\x9e\xc7y\xb8\x84\xb9\xbcFF_\xae\xb0`Q\x1c\x05\x0b\x16J\x01\xd1\xf7x\x8b\xcf\xd6\xb3\x03ABY\xaawcvC\xe8\x08y\xdb\xeab\xc1\xb7\x19_\xde\x9e}\xa3oz\x1c\xc1V\x105X\xf0\x03\xc88\xdb\xa4\x90\xa79\x13\xd3\xc7J\xfdm\x10\x8a\xd1e1^j\x1aD,\xd9\x01\x0bC=\xedv[^\xdc\xb8\x9a\x9d\xf3\x9d\xbeK\xfey\xcb\x17\x19\x04\x998n\xe4\xa9\xbaBG2\x03\xff,\x97\xf2(\xda\xcd\xe0\xc7\xf8\x8a_\xf2\xe4@\xaa\xb6\x0f\xef~\xd6\x1f\xa3q\xe7\x15h\x04\xbb\xea\xf9uq\xce7\x1c>\x9eg\xd9\xf6\xe3\x01\xfeo\xfaQ\xde?\x10\xc5\xc5\xaf\x07\x92\xcb\x16,\x82XJ\x93\xa4@Wu#\xe4\xdb\xe2> C\x7f<\xb9\xe4 \x92a\xc3\xb6)\xb2\x8c\x98\x81<`\x15\x17\x07I\x9fC\x80w\xc72\xfd\xdcVq\x18\xc6W\xe9\x13\xc3\xda\xfd+\x1c\xaf\xaa\x19\x88%\xdf&\xb1\xd8\x96\x96\xe5$\xe5\x86\x98\xa6\xf9\x86/\x0d\x17\x0f\xfd+\x1cE\xf0\xe3\xe9\xe9 \xfc\xf0\xf2\xb4\xb8pW\x8c\x15\x05t\x17\xf0pi\xe0\xcc\xbf\xb6Y\xfct\xb7\xe5\x7f\xfb\xeb\xdf\xb4\x1fK]\x9e\xcb\xb5.x\x08\xf5\xbd\\\x85m\x12/\xf3\x05\x07\x16\x01O\x92\xd8\x90H\xfd\xafpT\xd5\x89\xa6\xf2\xee`&\xe8\xc3\x97\x82\xac\x0b\xb6\x10:!\x8e/\xf2-\x14\x15\x02 6\xb7%\xc4\x91I\xd0\x0dC\xfd\xf0\xeeg9\xaesv)\xd9jS\x93\x85%\n\x03S\xd3\x10\xff\xbe\x8c\x83%\xb0\xc8\xe4,\xc5AI\xb1O\xf8*N\xf8\x81j,p\xb2,\x98\x07a\x90\xed \xe2|)Yd.\xaba$\x1b\x99rW\xe2H\xa8\xc3h\xcde\x03)w3\xb8\xf5!\xe5\xaa\x84]PE\xb0\x9d\xd03\xc8w,bk\xd3\x8c\xe7 g\x17Bw\x14Hg\xb7\xf5\xdc\xf2&\xce\xf8\x13\xc8\x84\x1e_\xe5\xd1\x02%E\x8c\xbd\xd07\x8b\x1eE\xbb\x8f\x95\xe1\xce\"`\xc9<\xc8\x12!|\x96Q\x15:\xba\x83\x8e\x85q\xb4\xc6\x15a\xdd%\x13ZS*}\x1c\xd5\xbckN\xd5\xfbTV\x91\x86\xcdN\x14\xe3\x87\xc1\\\x0e\xb5\xd0\xeb)\xa4\xf9v\x1b'r\xe7\xdc\xb2\xc5\xc5\x9d<\x12\xff#\xf6K\\oi\x95\xb4\xd1I\x8bFk<\xc4+\xc83T>J\x9cS\xa1\xf8\xd8r\x19\xa0l\xc3\x9aG\xc8A\x9f\xc6\xb7\xfeE\xe0\xb8\x0d\x7f7\xe8S\x13\x9e\x7f\x98is\xcfA\x9b?\xb3K6\x988\xf0T\xdaV\x02\xfb\x00*\x04\xe9\xadWq<[\x84,M-D\xc0!\x89\x068\x9fZ#}\xbf\x1a\xea\x94\xe4\xb9\xef \xcf\xc9.;\x8f#\x03\x81p$\xaf\xe2\xf8\xd6l6\xd3k\xe2\x928\xb7\x8c\xbfK\x06\x92d\xf3\xa5\x9ah|\x8cD{\xf1\xf2\xfd\xf3w\xc7'\xa7o\xdf\xdd6yG*F3w\x86\xdd\x99\xc9\xf5\xc0A\xae\x1fb\xc3=\x1b\x82TO\x9e\xc2\xbfl\xe7\xb3Wq\xfc\xf7\xd9l\xf6\x0f\xfd\x87,\xda\x1d\x08sM|\xbdE\x03\xe45K\xd2s\x16\n\"\x9a\x07n\"S\xbbgC\xb7\xc1\xaa\xd5\xe9\x87hSu+\x07%\x19[~\xf5\xbf\x9eB\x14\x84F\x065\x8fE\xc3\x89\xe2\xd0&\xe9\xa8\xf4\xa02\xb6a\xbe\xabL\x15\xa5\xb1\xf1\xb9\x8c\x9dr5v\xb0\xe5\xa9f\xcf\xbf\xa91C\xee\x88\xb3\xe8L\xfe L\xb9\x9b\xc0j\xbb\x8a\xd8q\x8a\x1bU\xba=\xc8U\xefvR\xaa\xf1(\xdc\xa9sS\xe7\xc0[\x9a\x8e\xc0V\x19GkF\x9c\xb7\xbbC\xbes\xb3\xdbEq\xa0SC\xc4\x13\x1c/8\xf3\xc6*\x8egs\x96\xc8\xc9}\xbe\xb3\x9b}\xb9\x81\xd4\xc2\xb3\x86\xfeX%\x87rC|+\xb6\x97\xce\xcf\x7f~\xff\xf6M\xf7\xafO\x9f>}\xaa_G\xf1}\xe5\x07@\x9b*\x16bZ\x18\x0cxV\xc9S\xae\x16\x87\xdc\x86\xffQ\x11w\xa6D\xfe\x89\xc1\x88f\x8b\x0b!\xf3\xd5am\x15\x84\\\xaf\x7f\x95~8\xe1I\x1aGF\xb1)<8\xf2\xf5\x953\xb92O\xe1P\x8f\xb1\xfcX\x06\x0d\x8bo\xef\xd1\xb5?\x80q\x147$mn<\x81\x1b:\xa9iNw\x863\xbaq`\xc2%\xe7\xf2\x86m\x04\xbe\xff\x8dC\xfew\xe3\xc7b.\xado\xa9\x13:^\x15\x07\x83&O\xe0j\x06)\\\xf10\xfc\xf6\"\x8a\xaf\")\xd7\xe7,\x05\x06\x8b<\xcd\xe2\x8d\x81\xc9\x9b,x\x80\x06h\x8b/\xd5\xdb=e\xb7\x82\xd1\xa2\xb5\xe6\\/\xd9\xae\xdb\xc9G)\x10\x8a\x0f\xcf\xe3pY\xdchU\x8dLz\xb0\n\xfe\x85\xc2[T\xb0o\x17\x9f\xec\xa6\xe4\\\xb8%\xf4\x83\"E\xc7\xad\xa0\xf2\x1fQ\xbe\x99\xe3\xa9\\\xb9\xd0j~\x9cv6I}\xaa\x8b8\x8f\xb23\x89\xa4-\xa2W,\x85\x94g\x07\x10d\xa9\xf2\x02\xa6\x90G\xc8\x08Kt\xa4\\\x05E\x8e\x95#\x12\xa6\x8bFy\xbd\xdf\\G\xd0\xfb\x19\xe77\xf1\x92\x1fG\xab\xd8;\x1eV\x98\x83gQ\xbc\xe4gA\xb4\x8a\xdbq-\x12\x9f+w\xc5\x99\xf6\xbaJ-\"32\xf9\xcb=MP\xd8\xea'\xb2\xb0\x9a\xf1\xc6\xc9\xfe\x08\xb5wD\xf6C\xd7\\\x81%I\xb2\xc2 \xcdx$c\xf4\xa4\xef#\x9e]\xc5\xc9\x05\xe9[\xcb\x12v\xbe]\x9c\xb3(\xe2aJ\xfa\xd8\xa8\xdf6q\x14\\\xe8\x1f\x9c\xee \x91\xb29\x98\xbd\xb2\xcf\xa6;\xb3-k\x98l\x17^oA\xd6.\x91\xec\xca\x85\x87p #\x95D\x1b\xb6\xdd\x9e\x91?\xf6Y\xe6u`\xcb\xaf\xeb|>\xcf\x83py\x96\xb15\x8d/\xd6\xb1Mm\x18\xb0/\xf9V\x8b\xbd\x9b\xd5\xa4\xcdh2\xf2\x8c=0\xbee\x996\xf7\xcb*\xf9\xe5^\xb7\x89\x97y\xc8%\x92\xceG\x96{~\xbd\x90\x17x:\xdf\xa5\xfa\xb4)\x1a\xee\xc59_\\\xa4\xf9\xa6MD\xfc\xf55\xf6\xdc\xb6\xcd~\xc1\x91\x1c\xd7\xefuj\x9au\xd5\x07Z\xc3N\xb3\xadU>\xea\x0e\xb6\xfa\xce\xdciV\xee\xc7\xd26hvSn\xc4\xaa\x95\xd8|\x0b\\>[\xf0\xfb]\xb4\x08\xa2\xb5\xf7\x0e\x9cb\xbb\xb6j\x98\xc7q\xc8Y\xb5\x90\xa5\xee\xac\xfd\xddH\x80\xd6X\x88 :E\xab\x9e\xf3\xd7\xd91\xde\xc4\x98\xd2sT\x8b)=gJ\xcf\x99\xd2s`J\xcf\x99\xd2s\xa6\xf4\x9c)=\x07aJ\xcf\x99\xd2s$\xa5\xa6\xf4\x9c:L\xe99\x1d\xa0g\xa0L\xe99\xbaO\xa6\xf4\x9c)=gJ\xcfi\xc3\x94\x9e3\xa5\xe7L\xe99%L\xe99Sz\xce\x94\x9e3\xa5\xe7L\xe99Sz\xceW\x97\x9ec\x8bG]s\x82\x0eFH\xc9A\xb0f\x94Y\xbbz\xc6\x88\xb2!\xd1\xc0\xda\xbc\x193nD\x8am\xad\x1bQa\x9fX\xb0\x83Z%\xbd\xc9\x04\xeb\x84\xe34\xc3\xee\x84\xe0<\xf4D\xa6\x0d\xb8\x19\xc5\xca\xeed\x1a1\xbcf\x0e\xac\x8d\x17R\x1b-\x98f\x0c\xa3\x0d\x08\xa0\x8d\x15:\xb3\x07\xcdz\x85\xcbz\x07\xca\xe4|\xdb\xf1\x1dc\x88\xacwp\x0cm\xb3\x166CXlH@L\x06\xbf\xda\xb3\xd1\x9c\xd9\xfa\x04\xc1\xcc\x01\xaf\x81\xa1.R\x90\x8b\x1e\xd0\x1a\x10\xca\x1a\x10\xc4\xd2\x9e\xf2G\x0bU\x8d\x1b\xa4\x1a-<\xe5\x0eL\x8d\x16\x922\x05\xa3\x86\x84\xa1\xb4!'\xcdY\xa4\xabo\xfa\x86\x99\x8c!\xa5\x9e\xc1$M\x18\xc9i\x7fv\x0cj\xfb\x0e\xda3\\T\x85\x86t\xf4\xfd\xc6\xdd\xf7\xb0\xe0\x10\x06\x83j\xe8\xbaa\xa1\x11\x02B\xc3BA-.oo\x86\x03\xc3?\x05\xa1\xeb\x18\x87\x04z\xacQ\x0cCp\xc7\x19\xd6\xe9zx\xe9\xa1\x9cn\xdb\x7f\xe8\xe6\xda+pC\x99\xac+Xc\x9e\x9b3@\xe3\x11\x9aiz\xb1\x06\x86c\xac\x81\x18s\x08\xc6\x16|\xd1R\x81\x1apq\x85Z\xdaA\x96\x01\xe1\x15B`\xc5?\xa4\xa2 `\xb8\xc2(#\x05P4=78eP\xb8\xa4\x1d\x1e\x19\x12\x18\xd1\x04B\x06\x85@\xda!\x8f1\x83\x1d\xc60G\xdb\xf7\xdb\x0em\x8c\x13\xd4\x18-\x9c1n \x83\x16\xc2p\x06/\x88a\x0bJ\xc0\xa2\xe3\xd9\xef\xf6Fu=\xdb\xc3\x13\xc4\xc0\x04!$\xd1\x18\xf2\x98a\x88A\x01\x88n\xc0a\xbcP\xc3xA\x86\xfe\xab\xeb\x0c,\xb8B\nJ}\xeb\xc3\x08ZK\\\xe7\xe4\xb7\x04\x0d\x888\x86\x84\x08\\\x0e\xc2\xca\x9bHv\x116\xeb\xa24s\xe8\x16Oi>\xa2xWu\xc5R\x9a\xcftER:l\x9a\xe2(#\xb6fQT\xb6\x87\xc2\x07]\x01\x94\xf1x\xe7,|2\x14=\x91\x11\xea\x8a\x9d4\x85Nn|\x9a\x02'\x1f\x87\xf6\xb8\x85M5\x8e_$\xbbm\x16\xcf\xcaw!\xc8\xec\xdey\x8f\xc3*\xb5\xb5\xf3\xb7\xe6\xed\x0cZSue\xb9\xc7\x13\x16\xf6\x07*jd\xd8\xde\xdb\xce^\xa0\xa5\xa7\x08G\xa6\x84\xb94Y\xcb\xfa\x86\xfa\xe6v9\xb2\x91\xa5\x8c!5M \xb2?\x92N\xd9\xb1\x1f\nc\xa9\xb1\x06\x8d\xb6\xc4X\xf3]\xa7\xb4\xb8\xa7\xda\xec\x96\x12\xd3\xf8NS>\xaci\xd8*\x1b\xf6Xz}\xa9\xb0\x81\xee\xc6\x12\xe1\xd6\xf7v\xde~[\x0d\x96\xc0\xe0\xdd\x01j\x06\xa7\x1d\x98}P'\x85\xe0\xfcR_<\xc2x\x1a\xb2b]\xc3\x06o\xb6\xe4\x83\xde\xb0!\x13\xb4f\xb5\x99f\xf2H\xfb\xac\xea\x9c0\xc3\xf6K\x16\x1e\xdc\xa4/tF\xd59gi\xb0(\xaem\x0f\xeaU\xb3\xc6>\xc0Z(\xf85_z\xe0r\xf1>\x17\x9bb\x94\xe6),\xd8V>c\xa1\xa2Z\xc5\x9f\x93<\xe4\xf2\x19\x03A\x80\x05OS<\x1e(\xea\xb5\xd0\xc9\x08\x9b\xf8iq\xce\x82\xe8\xa0m\xaf\xe3u\xfc\x12\x838w\x94\x1f\xc2\x92eL\xcc-_\xe0\x18\x94\x8b\x00{\xd7\xc6dkU\xff7\xd3vGi\xc62\x0eY\xc2\xa2\x14O#\x1b\xb68\x0f\xa2F\x99\x82\xec\x99z\x11\x84\xee\xb9\x1a\xe7\x9e\xd0^\x8c, \xde\x19P\xa1\xd0=\xb7 O\xc0\xfa\xd7izp\xaf\xfe\x99\x15\x12\xb7i*Q\x9c\xaf\xd0\x18G\x08\xd6Q\xca\xa6\xe6\x97g\x10\xab\xed\xd5\x19s\xde\x16\xc2\xbe\x1e\xe6q\xbe0c|]\xa6\xf6\xda\xd2YwtN\xce1%O T(S(\xc3B\xf4j\xdf\x89\xff\x1c\xa1\xbb\xaa@|\x04d\xed\xb1\xaf\x92x\x83\xe1\xa6\xed\x16\xe2<\xdb\xe6Y\xf5\xb7m\xc2/;\xaf\xa8\xcb\x04\xb1Q\xc7Tj\xc8\x11p\x89#\xf1p,\x92_\x8a\xd8\xf4\x08\xe8\xd43'#\xa0\xaa\x8e\x7f\xe5\xb6\xd2\xdawK7\x08\xc5\xa8\xab@\xdb_c\xc3C\x81k\x9c\x91\xcamF:a\xeb\xc7\"\x14\x08\xd4\\j\xa7\x10\xf2\xd0\xcb\x02\xc9>kg\xe1uo\x8aV\xe9\xf4\x0c\xe6\x9e~.\n\xc0\x95\xcfOn\xa0\xe8\xf6\xc7\xed\xf2?\x90\x003\xcc\xbc\xfb\xd3a'H\xf4\xe6\xed\xe9\xcb'\x98\x8f\x13\x86b\x82p\xce\x13.s%\xa4l\xcd\x00\xfe\xc2o&\x1c~\xcd\xd3\x0c\xd8:\xe1\\\xec\xf5\xda\x0c\x898\x11\xeb\"\xbd\xa8\x9d~d\xee\xd4\x86\xb3\xa8\x181\x0e\xebh\xbb\xfd\x91\xa5\xe7\xb0\x8c9\xc6\xf7\x8b\xc7}\x04\xf2\x94\x8b\xe1\xd4rS\x91\xdf^\x08\xb3\xa2\xe1\xd4\xc6\xc7\xf1\xd02`E`\xb5\xfeHPi\xc0\x14\xa8\x94\x14\xf4b\x81nc\xe8\xc7\x07\xde7W,s4\x8e\xf8\xd9e\x9c\xf13\xfd@\x10\xac\x1b\xb2kK\x96\xfeO~\xc6\xf4\xbf9\x91\x03\xa1\x03Ph\x8c\xbf\x12\xb6h\x04\xfb\x9bf _\x12{\x7f\xfc\xc3\x9b\x97/\xce^\xbf\xff\xe1\xec\xf4\xbfN^:_6\xd3\xb7:y\xf7\xf2\x97\xb7\xa7/\xfd[9^:3\xb5{{\xf2\xf6\xfd\x91\xe9\xd13\x80\xda\xc3g\xfe\xf3s\x95\xf2\xd6\xe1}\xb0\x8e\xf8\xf2u\xba>-\x02\x16x\x1d\x83\x10\xb9T\xfeT\x8f\xc5\x9a\xeb\xfc\x11\xca\xdd\xc2P\"\x10I\n.\xe3\xbc\x0e\xce\x93K\x13\x88\xb3\x06\x8f\x99\x0bp\xbc\xaeY\xfb\x90\xb8\xce\nh\xec\xa5\x80\xb2\x08\xe0\xb7\x10\xe0\xb3\x18\x84s\x93\xf6s\xfd\x1b\x9d\xf5\xcf\xae\xff\xa1_\x8f\xc7\x1e\xc1\xbfw+)\xab\x8e\x0d\xb70V@\xe5'\x9a\xdep\xbe\x03 \xa3\xce\x94\xbaE\xc97!\xcb\x10\xb8|12\xe1\xc2\x829(\xb2s7\x01f\x0b\xe3?\xa5qcD&O\x9c\xb5\xd7\x94W\xb1\xa6\x10UAm/\xd3\xfd,\xad\xa8\xf9dEMV\x14LV\x94\x16\x88\xccI\xdb\xe6&+\n\xe8$\x05\x9a\x0eF\x98\xac\xa8\x1aP\x16\x01\xfc\x16\x02|\x16c\xb2\xa2\xa8\xbdOV\x94\xc7\x16\xf5\xd5ZQR\xec\xcfl\x85\xfd\xe5\x97n\xa2\xb9E\xbd\xe2\x8b\xfd\xf7\xe5\x149\x8f^l\xa2F\xe1\x81\x17\xca\xb9(\x18\xe1\xa5z\x0d\xbdt\xb3\x96\xef\xa3K\xf7zI$-\xaa\xc2\x9c\xc9\xaeb\xd1~\x15\x06\x0b\xb1v\x92c4k\x1c\n#\xe1l\x11\x06<\xca\xceX\x96\xb1\xc5\xc5>]\x9b\xb5\x11\x9d\x19b\xfc\x08\x84]\xcc\xd5\x17\x94\xc4 \xec\x9c\x84\xfe\x80\xd8'h\xd2,\xf4@\xec\x14<:\x06\xfb}\xecm\xa0\xa4o\x18Z\xd2\xc7\x0e\x9e\xe3\x07s\x02\x88\x1e\x08\x82\xda\x06%\xb8\xdad\x11=hSH\xf4p\x1d\x03\xa2\xa8\x956\xd0SSH\xe8\xb4\xe9+\xae\x84\x15=\xf8\xa4\xb1\x90\x10\xb6S]\xec\xc9-z\xa0\xa4\xbc\xe8A\x9f\x08\xa3\x07/fq\x9f\xea\x14x\xa1\xa5\xec\x97u\xe8\xa6\xdd\x18\xbe\xeb7\x08\xb7\xe5\xaa\xc0\x92\xb8\xa3\x87=\xeb-\xea\xf9\x04\xfc\x89\x034\x93\xb3 \x9e\x87G\x05\x9eT\x82\x1e\x94\x02\x9fC\xa5\x02\xeaa\xa0\x0d~\xdc\xad\xc0g1\xa1\xdf\x82B\x9fE\xf5>\x84\xb6\x9a\xb9\x0e\xa3\n\xec\xe9Rz\xf0\xa4\x81\xe7\xdci Wz0\xa4a\xe9a\x9f\xd3\xb0&M\xe9a\x9f\xc31_\x98\xa5\x07j\xc6\x18 Y;\xabL\x0f\xee\\3=\xec\x93l\xb6l5=\xecs4\xfa|7=\xecs\x1c\x8e\x8c9=\xecs@\x96\x9c;=\xecs0\xee\xac==\xd8s\xf9\xf4\xb0\xbfy\xf8\x9e<|\x12\x06\x9d\xc8t \x85z\xd0\xbd\xfa\xd6\x05\x0fK\xc7\xc7\xc2\xf9J\xectgTF\x81\xafaE\xf3\xb6*\x98\x0ct#L\x06\xba\x04?\xb6V\xe0\xb3\x98\xd0oA\xa1\xcf\xa2^\x97\x81^F3HK\x8a\xb3\xeff\xc9\xeaA\x9b;\xab\x07of\xf4gE\xa5A\xceV![S\x1b\xf5\\pw6F\x13\xbe\x85g?\xbf}\xfe\xd3\xd9\xf1\x8b\xb3W?\x1f\xfd@\xc8\\hC\x1b\xc3\xd1\xb3\xf7/\xdf\xd8\x93-\x9a\xd0F@\xc8\xd6hB\x1b\xc1\x9bc[\xd2F\x13\xca\x14\x8ead\xf0;\x85 \xa0\xa0,_\x85l\x0dA\xb4\x94!\x94\xe2zHx\x16.\xe2\x8b\xe3\x17\xcel\x8e&\x94\"\x05\x01\xdd\x11\xea\x19ImB/\x1e\xed\xa5\x92\x08!\xe6&\x0c\x1a\x1a\xdd\x89\x87@\n\xcd6a\xd0\xf8\xc8\xa4\xf3\xb5w\x11\x9eK\xf3\xf3}\xb0\xc6l#\xb1\xcf+W\xb4\x8c\xf6\xaa\x12 \"\xba \x02V\xe0t\xb9\x9f}\xc7\x8bX\x9bE\x1de\xc4QV\x8b(\xef\xfe\x95\xe1\xf1\xbe:\xa0\xd9\x9da\x15\x0cS\xd5!\xd5\xe1\xdd<\xfaJ\x86RNH\\r\xee7\xd4]F\xf7\xf2\xaa\x1e\xe8;(q\xf7$\xce\x04\x81:\x1f\x04/=\xe4-H\x9eBdxDV\x0f^D\x01o\xc2\x80\xee\x8e\x11\x17x\x13\x08\xfc\x89\x04\xfa;L\\p=C\xf3\xdd\x9d\xa9\x97\xa9\x10\xd19\xaf\\q\x01%\x85\xa5 \xdet\xf5=\xc3l]\xaf[\xe8a\x8f\xe3R#r\x0d\xc4CB}d\xd3Cey\x12\xc1\x8b\xdd=\x94\x95\x07!\xc0\x93\x18\xe0\xaf\xa6<\x89\x02\xbe\x84\x81>\nj\xff\x83\xf2SMT\xc5$\xef\xe5t!\x03u\x17r?\xb5\xe4\xab\x94\x14\xf70\x84\x15\x1bG\x9d\xd7\xfc\x9b@\xe8\xd1\xdd\xd3|\xf7\x85EY\x10\xf13\xb7\x1d\xea\xb6?\x1dv'I_\xd1\xb4\x14IY\x13(\x84@\x14y\x92j&M\x12\xc8\x13\x05\x1fEL\x9e0\xd0'\x0d~jw?C\xa0*Y\x1f\xf5\x8a/\x06\xd8\xf1\xf9*V\xba\xc6 \xd3\xc9-\xc3\x08\x9e\nt\xc4\xfe\xe9\xca\x92\xd0)\xa1;\x97'\xc9\xa3\x97\xa1\x99\xd3?\x0b\x05\xfd\\\xe6/\x1f\xc9\xf4eW\xf64:$\xb4\xb8j9\xf3,\xcb\xf8f+3\xa7\xb3\x186A\x1ar\xb6\x04\x86\xf9\xd2\x80\xf9\xd2\xca\x93QK\x93\xa9\x08\xa2UBz\x853\xcaEX\x9aH\x1f\xe2\xd0\xc5bL\xd1\xbb\xe9\x06\xac\xc6OF\xfa)p\x89\xca\xd7w\x03\x96)bd\xb2,\xc6\xbcA\xc5\x19\xc3q\x10\xc5\x1c\x97\xf1\x89\xc0x\xc4Z<\xa2*\xb4\xf8\x89w\xa4\xa4\xb1\x8e\xce0\x87;xA\nS8\x96\xc1\xc1\x99\x96\xad\x81\x88\xd8\xbc%XC\x04D\xec\x9aa7\xf6\x19\xaa\xdf^\xef\x917oY^^v\xbd\x17\xbd\x86\xad\xe9O\xd7_\nz\xfc\x02\xc9\xd4\x11\xd7\xae\x906\x15\x95\x96\x92\x1a\xfa\x19\xf5\xb2\xc7\xe6g|\xf3\xd3\xb1o5\xf4\xed\xd0\xfb\xd4\x8c\xfa\xb4\xa3GM\x94~U\xaa\xb4N\xcfu\xb5eWTV\xd5dUF&\xf5CP8\xc3UL\x87&\xcfk\xb6\x10\x85\xf9Z\xf6\x8f\x95\xfd\xeaK\xdf\xb2y\xfe\x7f\xf6\xde\xadKn\xdcJ\x13}\xaf_\xb1G\xe7\xac\x96\xe4V\xa5N\xb9\xe7\xbch\xa6\xbc&KR\x95\xb3\xa7J\xd2Q\xa6\xec\xf1\xea\xe5\x95bF 3\xd9b\x90Q$#/\xdd\xed\xff~\x16n$\x08l\x00\x1b$Bv\xbb\x89\x97*e\x90\x1b\x17\xe2\xb2\xb1\xf1}\x1f\xf0~\x83\xf9:\xae\x9f\x93\xd0c\x97v\xb6\x88?3\xc3\xdb\xf2\xf80a\xff%\xe4\xbb\xe4t\xdf\x82\xbe\n\xea\xa7`>\n\xe6\x9f,\xbd\x10 \xe8\x8f\x04*\x8b\xfb!T\x1f\x84\xe8\x7f\x10}\x8f\xb8\xdfA\x98\x02\xc6\xb4|2\x18S\xd4\xd7\x084q\xa07y\xfc\x0b\x821\xdc\xaf\xf0\xfa\x14\x04\x8bV\xf12\xf9\x11\xb8\x0f\x91\xcf\x7f\x88\xf8\x0eC\xc1\xc9\x13\xb8g \xa1\x0dh\x0f\x9e\xf8\xb0\x89\x0e\x98\xe8P \x0d\x12\xe2\xf0\xc830\x02C\x82\xeas!\x03 \xf8\xaa\xdd\xe9\x91\xeeN\xcb:K\xe7v:\xdb\x9bA\x0b\x96\xd0\xcf&\xfa\xaf +\x823\x86\xd1\xf1\xebw\xdd\x17\xea\xbc.\xd2x\x95\xaa\xaef\xd9\x1d}\xd7e\xda\xaeYt]\xdd\xef\x8a \x1a\x90?\xb4\xad\x80\x9a\xe0\x9d\x89G\x8d\x7f\x07\xe6ql\x1d\xa7\xealQ\x95\xb5\xe8ZZD\xf5\xac$\xbd\xacI\x97\xfe\x0f;\x80\x9a\xaa\x89\x15\xd2\xbdJU\xbaJ\xd5\xb6Zc\xa4\xb0\xc6H\xedt\xa4\x18\xa9\xc7\xc7\x8cv7\xcc\xbf\x8c8\xc1Q\x9bV\xd5\x82\xbaI\xe9}\xd9\xe3\xfb\xa6\x95\xca\xbfn\xceQ5\xb2\xd5\x8b\xbe\x99\xe4n\xce;\x8er\x91\xad\xf8\xb8\xae\x1aCZW\x8d!E;\xf7\xbaj\x18i]5\xd6U\xe3\xef{\xd5\x08a'\xd0*a]\xd3\xab[G\xb6\xb0l_\x8f\xb7\xe6\x02D\xfd\x04\xc8\xec+\xc0\x0c\x7f\xc1\xf7NLE\xd9\x07\xfb$-\xb3\xd8\x92\xe5\xe1\xe1\x87\xd7A\xdf\xfc\x0bAF\xfd\x82\x15\xfbX\x8b*\xc1\xcf\x80X\xc9!Zz\x08\xfb\x1c\x10mo\x9db\xbe\x07D\x99\xe7\xd1\xe6\x82x\x93\x11|\x11\x08\xf9#\xe0\xf7I V\xc4\xf0\x89I\xd4?\x01\xaa}\xa4\xeaQe\xe0\xf9c&\x80\x1e\x99W\xda0>q\xb6\x1f\xe3k\x11T\xc9\x17\xd5\xef\xc5\xee>XW\xc3u5\\W\xc3IZW\xc3u5T?Q\xba\xf2\xba\x1a\xc2\x7f\xca\xd50\xc6\x8e\xf0V\xd7\xd7\xf5\x83*\xf5\xc9\xd6\xf2\x05\x8e\xfc_ W$\x00|\xd1\x00 k\xc9\xa3\xf3\x1a>\x97E\xd4\xe2gx4\x11=\xf8%\xab\xc5q\xa7\xf2\xa8\xa6{\xaa\x92{\xb4L@*\x17\xd0\xb4\xdaIK\x00\x18\x9d;*\x83\x1eUc\xcf\x9d%\x85\x8c$\x13]e\x1dF\x05\xf5PUgi\xab\xa7(\xaa\x8fj\xe9\x01\x83\xa9:\xea\xa9\xea\xe9q\xcdt\xc2'\x8d\xe9.\x12L\xd0\\\x9e\xb0\x02zR61\xa1$\xa2\xc6y\xc6\x11\x1d\xd7\xd5#U\x10(~\x9dL$\x97X'RM\x81\\[\x88\xbb\xca\xc3c$\x97Y'J?\xd2)\xde\xe4\x90\xd2\xec@oz\xa2km=\x1c\x96(\xa4+\x87\x93jD\xaaI\xba68A\x11\xb4\xf7\x88\xba\xc8QB\x10\xed\xb5\xb8\x062\x91<\x84'\xaa\xa2N>\x95\xe3\xa8<\x80\x99\x08Q\xediJ\xe85 \x03\x98\xa8Y<#\xf3\xd8\xb6[&\xb2*\xf1\x8c\x12D\xaaO\x8f8\xd1\xd5\x86\x05!\x8b` \x0f\xd2\xd0J4\x9f\xa9\xe81HP\x11\x8eh\x07\x07g\xd3\xf0\x1c\x1aSe\x8b\xcd\xf6\xc1\x99\x9e0\xcbSfx\xc2\x08%vOR\xd7$\xa8\xb0\x11*\x06\xc4\xca\x01]\x7f\x8dXI\xa0V\x14R\x94\xd7\xf2gN[!\xf2*\xae\xa5\xe9\xadQ$\xc7\x80\xde64\xbfr\x9f\xa2\xb3\x96)\xe7}P\x197\xda\xdb\xe3\xfd<:\x84I\x15!t\xac\xe8\xe0\x8dV\x06H\x15\x02\xea\xb0%U\x0ch\x95\x03\xfa\x80\xcd\x9b-e\xa8\xe6\x1c\xa8)\xc3\x946HI\xed\x11\x1b&\x906<\xb3\xe4\x19;\xde\x1f\x9e\x8be\xe6\xcb(\xa0\x05\xeb\xb5\xe9\xb3\x15W{\xf5\xf9\x139\x95\xd8\x8e$\xfe\x15\x98Z\"\x93Jl:\x89L$\xd1OK\x18\xc5\xd1icy&\xe1I\"yz\x88]\x9b\x17\x98\x18b\xa3\x85\xd8\x0b\xf0!I\x9a\x00f\xe6\x10\x1b\xec\xc9\x03\xf2k\xa0ofj\x94\xe2|&\xaa2\xa9\x97\x9f\xf3s\xd9\xd1\xb5\xb9|\xf8\x1d\x92\xee\x863\xdc}\xc3<\xca\x04\nZ\x0dY\x06\x0f7H\xa6\x85\xb3\x92x\x1d\xfd%\xda\xbf!\x1a;KAL\xfb\xde\xf0\xe3\xa6\x03oD\xa2e \x18j\x99\x92\x91\xd4\xfa5J\xac!\x1dU\xed5\x14A[\xcb4\x07s\xed\x7f3\x86\xbc\x96\xe9+\x88\xd0\x07O{d\x0e\xe1\xb3\x81\xf8IO\xec\x9c\x87\xb0\xed\x88\x8dG \x1c7\x10\x9a\x0b\xe2+\xb9L g;\x84\xda\x01\xb1\x86\x00\xc4S\x1d\xcaw\xd3)\xdeEt\x8a50\xd0\x1b\x19\xa8\x0d\x9dt\x92C8\xc7\x89\x86\x95 \x15\xa0\x85\x91\xc9Q\xf4\x84\x1c\xbdM\x15E\x8b\xcbD\xe9\x17\xf1\xf1\x1c\x0d\x8c/\xaf\x11e \xc8\x85+\x97)\x8c.\x97 \xc5\x98\xab\xd7\x11\xde\x95L\xab\xa7\xb1z\x1aCZ=\x8d\xa3\xceL\xab\xa7\xb1z\x1aH\"5\xf4\xeai\x00\xa5\xa9VO\xe3\xaf\xeci\xc4\xe2`\xea\xa9p\xc3\x84\x87b\x90\xe5&\xd3\"\xfb\xc7\xbc*\"\xf6=\x17\xf1\xe1\xdc\x9a\xdc7~V\x9cL4n\x9c27/\xcc\x15a\xcb\xc9\xb4\xd0\x0f\x8d\xf0\xe7d\"\xac@\xb1| \xc2\xa8\x93\x89\x90\x11\x103\x03\n\xc7N\xa6T\xa6\x9dz\x8bVVH(/\xd0\xb8w2\x11\xe6H3\xe9\x01\x16\xe5\xe1\xc9\x14e\xe3\xc9t\xccB\xc4\x86\xbc\x9d\xe8,\xbd\xa8\xa9\x91\xc57\x93\xab'S*c/jP\xd6 \x95\xb7'S*{O\xa68\x87O&rG\x88\xe1\xdde\"\x9b\x8b\xadIf\n3\xfc\xd43\xe9\x19\xd3`\x87D\xce\x9fLG\x9a[(\xfe7\xa45\x02\xc4]\xb1iJ\xd8\xf8\xe8\x94\xd0\x1a\x90\xd8\"@\xdd\x10\xe9Dq\x80\xedD\xef\xa1:Q?\x14\xa4\x7f,H\xfd`I\x1b(\xeb\x950\xf4^&:\xb3P\xa6\x84\xfa&\xd43\x9dk(\x13\x81q(\xd31\x8aM\xe6\xef\xc9t\x8c\"\xe4e%\xca\x94\xc6M\x94\xe9\x18u\xa3\xb2\x15e:F \xe2\xfcE\x99\x8e\x91w\x02\xa3Q\xa6c\x14\x82\xc8q\x94\xe9\x18\x05Hc=\xcaD\xe7>\xca\x94\xbf\xdc)\xaes:Y2h\xceO\xa4\x94)D\xa7\x94\x89\xb8\xdcS\x97\xf9\xbf\xa2\xc3\x19\xa1\\\xca\x94\xe2Q\xc4Ck:\xad\x9e\xe6\xeai\xc6\x9e\x86\x84\x0f\x05\xe9\x1f\x0bR?\xd8\xb1=M\n\xd5S&Y\xd30\xe1S\xa6(\xedS\xa6\xa4\x8e\x95\xd6\xad\x92\x88\xa02%\x7fH\x1a)T\xa6\xb9\xd4P\x99f\x12De\x9aI\x13\x95)\x9d,*\xd3\"\xca\xa8L\x14\xae\x81\x99r\xd1GeJ\"\x91\xcaD>\x9a\x9a\xa6\xe4~\x97<}\x10\xc9\xa52\xcd.\x0e-\xe2#S\xf4\xack\x9af\x97\x89\xd4D)~\xa1L\xf9h\xa8\xa6\xbdP\xcc1\xa5\x8cI\xc4\xd4\xa0%\xf4z\xcd\x00=U\xa6\x08IU&\xc2\xdcO\x99\xf1c\xb4U\x99h+\x17a\xd5\"\x94Z&J\xd9e\"\xcf\x15I\x83 a\x00D\x99r:\x91+\x0fI\x0d\x00q\xe2\xcb4%5\x04\xa45\x06P(2\xd3t\xdc\xe2\xa4\xac\x82)\xd4\x1a\x829\x8b|\x13g\xe0\xe9\x14;\xaf\x9f\xa6\xa4\xf6K\xf1\xe5I\x04\x9di:BY\xc2\x94Z\x99\x88#\x8b:\xa6\x88SJBe\xc9]\x968\x99\x10+\x0c \x95\x86\xb4i$\xa1\xf2\x90\xd2\x00\x90:\x81\x1c\xaf \xf4\xa9#\xeb\xc41s\xdaH\x994\x12\xda\x8c6Ha\xcet\x91\xbd\x144\xb4\xd3\xf04-\xfbp\xd6\x01\xd2\xafL\x91\\\xc2\xd6\xe34`\x99\xc2\xfeY\xc0/\x8b\xce#\xf1\xd9#:Y\x92\xda\x990,\xa3Sc\xb42@\xaa\x10P'BR\xc5\x80V9\xa0O{y\xb3\xa5Lr)\xd3\xdb\xaaH0\xa4p\x9e\xb4\xc9j\xd1\xf4\xf1\xd7\x84N\xce$3;v\x0c\x00\xeclJ\xf3\xef\x8dP\xbd3I\xb8\x13\x82\x03\xf0\x8bA\xf9\xd0\x89\x07\x9fh\xbc\xf7\x13 \x1fB\x7f\x02\x07\xd7\xe6\xc0\xe8RM\xf8?\x1e\x1d\xee\xe6\x87\xb3\xd9\xd5u\x81m\xa9\x10\xb6 Dm\xda\x108X-\x06Ks\x01hH\x13\xda\x8b:\xda\xca\xd8\x08\x9cB\xc2\x82\xaf\xd9\xc3\xcb\x03\xe8J\xe8a\xee\xd9K\xb4wX\x0bD\xf0\x88\xcb\xbb\xc8\xfa\x17V\xcf\x01\x95\xb4D\xb8\x93\xc6\x99\xd9\xf0\xe3\xa5\xe0\x84\xe6]\x0b\x83\x87C\xe81\x90\x1fZ\x14\xfc\xd2\x93\x9c\xe3\xc0 \x04\x02D5\xef\x05\xb9P\x0d,\x83\xdf\x84\x816\xd42\xf8`2\xd4\xf7]\x90\x0b\xf5\xcd\x00D\x85j\xc2\x030\xa1\xbe\x1e\x86\x87\xf8\x81 4\xfb\xf9D\xad\x9d\x85V,\xfa?\x8cK\x1ca\xb1\xf5P\x05R&\xbc<\xb3\x94\x17\xd6\x1f[\xfd\x87\xe7B\xdb\x8f\xf0\xb6#\x00\xcf\x8fz\x9a^/A'/\xe8~\xa9\xe9\x98\x0b\xb8\xd0\x9b@\xec\xd1\xe0\xf2\xb9\xbc\x0b\x9d\xa2\x90\xf8\x98\xb7\xa1\x93\x1f\xf6\x1e\xf8\x14\xd9\xafU\xc4\x01\xeb$s\xbe\xcd@\x04\x86\xbe`d\xf8\x91$\xe4\xde\xeb\xd9\xfe\x92\x80<\xc1\x92C\xb4\xf4\xe0\xf7~\x86\x9f\x83^\x90N\x94\xedk\x18t\x13m.\x887\x19\x11J\x13\x04\xcf\xc4\x81\xd9\xa4\x9e\x88\x960\xeeU\xe9\x14\x00X\xcf\xcd>\n-\x9ekx\x997\xa6\x13\x0d\xfe<\xb7\x8c1P\xf3\\\xbb~\xa8\xf2\\\x8b\x04\x00\xf2\\\xd3\x11X\xf1\\\xb34\xb0p\x1c\x1e\xd4\xd53wto7\x0fwr\xd2w\xc6:8\xa1{\xcf\xb2\x1d\x03'x\x8d\xda\x06\xf1#\x02\x0c\x17 3p:\xa8\xdb)\x03\x02F K^@\xa2h\xc6\x08\xf6m\x99\x16\x8c\xb7\xa0\xcc\x10\xf5L\x02be\x80h9 .\x1f\x14\x1d\x9e`\xf4\x8c\xa0JOP (W6\xf1s\x0b\x98\x7fv\x11jA\xe2\xf9\x05,9\xc3\xf0\xd8#K\xfbP\xcf2 *\xe3\x13\xf9\\!\x06u\xf4K\xc7\xb6\xff~Q\x1e\xb2\xe9\xd0>\x85 \xbb\x93a\xd4}\x8d\xf8\x051\xec\x03\x94\x1a\x01\xa9V\x00\xd1\x10\x10\x0c\xb9\xc5\xc2@@\xe8\x0b:\xc5I\xc9\xa4&\x05Z\xb3\x12CC\xc6\x83~\xb2q\xfc\xcc\x04(\xa5\x8f\x96\x9a~~\x02q\x91\x9a\xa5\xc5\x89\x9eU@\x86L\xf2\x9c\xad\x00\xf9|\x052\x949v\xd6\x02\x19\xf2\x08K\xc4,\xb5N8\x83\x81\x0c\xd9\x10d^\x96fA;\x9b\x01\xd2\xf9\x0c,.O\xfe\xb3\x1a\x08h\xab,\xf0m\x8f\xba\xf6\x07\xf4Q\xe2\x8b\x8aa\x1c\xd5BY\x17}$\xc5k\x05\xeb\xa2\x8f?\xe8_\xf4c\xba\"\xb2\xdc\x7f\xdd\x0b\x85IgE@o\xe4\xb8\"H\xea\xb9\x11\xf6\x0eA\xfd#\xf1\xfc\x08{%\xac\xf41\xeb\x1c \x16\xb7\xd5i\xceQS\xac\xf3{\x7f'\x1fE\x01\xbd'\x10\x07\x1bA\x99#1\xc3\xb8\nG\xf4\x88\n\xd2s\x0dT3\xf3q\x95c\xd2\x03\xdc\x9c\x7fl\x85\xcde!\xe1\x8b\x80\xdc\x85w\x9a\n\xc0x\x03D\xc9\xd0\x94y\xac\xe3\xf4\xafp:\x1b!Ff\x9a\xeb \x94HBe\x80R!\x88\x9f\x08\xc8\x94/\xc3\xf8\xb4\x9a|R\xe0\xb5D\xa7@\xc6\x8e\xc6\x80\xd6\x06qg\x89p\x8e \xd3\xc2\xdc\xf0#3\x88\xf5\xd2p\xff<\xe2\x8e*2\xb8\xa2C+>\xb0\xa2\xc3*Z\x01\x88W\x02h\x03*OV\xb1\xa1\x94k Q\x87Q|\x10E\xeb\x1d\x1b@\xc4\xe1\xb3(\x9f\xd8\x91\x1c\xc42\xc0\x8c{\xe4\x0bP;\xd8\xfba\x81\x02l\xbd]z\x07\xb0g\xb0\x07j\xee\xed\xb0\x9e\xa1\x1d\x18\xd4\xa1\xe1\x1c\x18\xc8\x91\xef\x1e\x1cQ\xc1a;\xdf\xb0\x7f\x90&\x0f\xcf\xd0\x89\xb8g`\x86z1\xe1K\xba\xc3#:\x00\x13\xad\x86\x06\x1byp \xdb\x93\xe0\xbb\xd3\xad\x07\xee\xa4\xcf\xa4\xd5\xbbw\x84\xcf&\xd3\x7f(\xda\xfe\\\x876d\xcd\x9c\x11\xe3\x8e\x13+\xf8#\xdf\xb0\x03=X#\xceaPz\x820NU\xe4M\x8d\x895Y\xc0TD\x8f\xf4)G\xf9\xde)\xc9?!y\x8e\xecI+\x04zv\x8e\x1e\xcd\xcf5\x17\x03M\xce:z\x1fZ\xcf2\x179r\x9f}\xd4\x8e\xd0\x05\x83G\xec\x94\xa3u\xfcH\xdd\xd3\xccX\x18\xdd\xfbE|\x93\xa7{T\x1e5\x81\xc5H\x02G\xe23zo^\x06M4\xda\x1d\xf4\xe3\xc3>| \xaa\x8dOrf\x8a\xf9\x95\xc7:\xb8\x8aF\xa9\xbd\xd1\xe9\xf0Qt\xb4\xe78\xa5\xa1\x1d9{\x8e\x9aS\xb3\x0b\x1e\xcf\xa6\x1a[~t\x1c?2N-S\xe8h8\xd5\x16~\x04\x9cj%r\xd4\x9bj.p\xa4\x9bj*~t\x1b>\xb2M\xcb/\xef\xd1\xac}$\x9b\xe0\x83dY3\x90#V\xffdg\x18\x99\x1c\xa9\xae\x8b\xc5\xe4\xa7\xbf\xc3\xc5\xc2w\x84)\xcbs\\ZI\xf4h2\xd2(\xfe\xa3\xc8\x94#\xc8\x84\xa3\xc7\x84#G\xdaQc\xf2\x11cn\x9a\x1a\xe9\\0\xf2\x19\"=\xf3x\xfav\x91s>\xa2u\xa4\xd8\x19\xcf\xf3B2n\xf3\xcf\xef\\%\xbe\xe9\xb9\x9dg\x1b\xfdKws\xc1\x1bE\xbc\xe74\x8f9\x9c\xbe\x85\xf3\xb3\x9f\xde\xbd}s\xf9\xcb\xf9O\x97\x17\x7f\xfa\xf0\xd6\xea\x93\xee\xef\x1f>\xbe\xfd\xc3\xfb\x8b\xb7\xa1\xdf'\xc3\x05{\xe2\xfd\x87\xf7\xe7\xa7r\x9c\x0c##T\x8eI\xe3\xfe\x87n\xdcI]\xe5G\xe3u\xe5\x1fM2\n`\xc7\xba\xae\xb8a\x1a\xebm\\\xce\xad[\xd4[\xbfW\xe2\xa3w\xa1\xe7d-^\xc1\x07\xe1\x9b\x14U\x87}\x90!\xeaf~\x8c`Pc\xa6\x94\x14\x12CMpE\xd0\x88i\xd4\x17\xb1\x86\x94'>\x9af\x06\x8b\x86f\x8a\x83:\x11\xd0\x85A\xc5@\xa4\x93d\xc3\xdfY\xce\xf5\xe9;\xa1\xbf\xac\xd1\xfe5\xda\xff\xf7\x13\xedwO\xa5\x13f\xb1\x0c\x9bCO\xe7\xf4vM\x7f\xc7\xf4v\xcb`\xdf \xf4\x9c@\x87\x9cg\xd2\xd7\x153vD\xb4\x1bf\xe02\xea\x14\xe9~I\xf6\x16\x1f4\xb9\xf3y\xd3\xd3\xb9\x94\xfd\xe0\xb1y3\xb47B1\xef\x0d\x7ff\xea\xc1y\x9fq6=\x11O\x0e\xa8\xde\x1cx=:\xc8\xe4\xd5y\xeb\x84xv\xbeg1\xef\x0e\x96(\x11[\x81\x1a\xf9^\xe0\xd8m\x08\xd0\xb8\xc1\x99\x84)qypn\x95 \xb6~\x9c\x06W\x96\x9d,\x07w\xe6A;F\xd1G\x13e\xbde\x0fs\xfa\x18\xb2\xc1\xa6\xe5\x8e\x0fd\xb1an\xd9\xbee\x1d\xab{\xb1\x9dn\xd9]\xd3\xb3\x17\xfc\x7f\xe4\x1e\xf7\x054\xad\xda\xee\xf2\x15\x81\xc9\x08\xbd\xa11?\xc61\x8c!>\x99e\xd5!\xee\xc9pHI\x9elQ\xb2\xba\xa7\xae\x933\xd3\xc9\xd1+\xf55<8\xb0\xf4h\xd58\xf3D\x8eTs\x1c\xa5\xa2G\xa8\xa1\xa3\xd3M\xd3\xed\x9a\xee\xe4\xaa\xe8\xd8\xc9\xddwW\xac/\xbe;y\xc36\xaf\x9b\xb2&\x7f\x9a-\xab\x9b]\xb0\x8d\x8b]s\xa8CS0\xde)UA\x06\xa7\xa6\x80\xbe\xf9\xc2j\xe9\xc1\x142\xdf\xb2\x16\xb5\x15\x8d\xc2\xff\xb4)wE\xa52\x1c\xd6\x97wb\x15\xb9\xb8e\xea\x07\xb8.Y\xb5\x15kU\xcdsQ\x01\xbar\xb7\xaf\xd8N\xf4\x7f\xf1]\x0f]\xdf\xec`\xc7\xfa\xdbfk\x0f\xbb\x0eZ\xf6\xeb\xa1le\xdc\xe7\xa6\xb9i\xf6m\xd37F\x9bnK^\xc1\xab\x03/\x9e\xd1\xb6\x15\xbb\x11%V\xff\xd7\xb4\x1f\xd9}\xd1n\xc9\xad\x9d6\xfd\xb4\x86\xf1\xf1\x91\xbc\xfbL\xeb\xfb\x9b6\x90\xd9\xdc\xee\x0b\xc1\xc7\xfd^G\xc6\xde!S\xbe>\"\x13\xa5\xa7\xf8;\xbe\xa7\x97\x98S\xb4<\x1a\xd5\x9fD\xbd)\x0e\xc0\xb6\xfa\xa5\xa7\x9d\xfe\x7f\xde\x08\xb2/\xc4z\xe8\x87\xa2-v\xf4y\x99\xaf\x07\x87\xba\xec\x1f/\xfb\xc2Y\xc8&\xdf\x93\xcf1\x97\x83\xfb\x8fw\xcc\xe9\x0bM}\xe8\x92\xde\xe0\x9f~\xdb\x16\xf7bh\\\xb2\x9a\xef{\x9c7\xae\x9a\xa6b\xc5\x88s\x19VH\xe3\xef\x93\xcf\"[dz\xe2(\x81a{\xf9\x0b\x9f\xf0\xf9_\xcd\xf6\x84]\xb3=T,\xd6\xda\xff\xdf\x81\xb5\x8f\xafu\x1b~h\x9a\xea#\xeb\xf6|A!\x7f\x81}\xd38\xe0\xb0u\x80\xff\xad\x0cp\xa7\x92\xfcs\x0dU\x1aF\x8f\xf8\xf3S\xfe\x87\xb2\xee\x90\xa9a\xf0A\xfc\x1d\x86\xd7D\xb8\x05\xfa\xdf\xbc\xc9u\xdf4\xdf~9y]7\xd2\xc7\x0f\xafU-I}v\x9c\xa2\xe4\xcc\xd4%\xf7[9\x9e\x8f\x1c\x03]\xbbn\xc6\xae\xab\xbe\xd8d&\xd4\x7f+6\x9b\xf6\xa0\x0f\xc1\xc6E'\xb4\xca\x85\xfb\x11\xbd;;&\xe6\xf7\xe5\x0b\xbe\xd5\xfd\x9b\xee\xd0\xd1sao\xe7\xb6\xd7O\xf3q\x8c\xd6\xe7!\xf5y\xca+S\x18\xc1\x81\x0eF\x99\xbc\xa5\x96 \x1f\x98\x84W\xe3l\xcd\xd9C\xd5[\xcc\x93o0}\xa8%c\x181\xa7F5\xf2\x0b}p\xc7\xe6\xb0\xb9N\xa8L4W\x14)\x87=\xcd\xf0\xedpl\xaai\x06x\x17\n\x96\xcf;\x06\xd7E%\xe3\xa2\"\xbe\xd7\xd4\xb9>\xecD\xe7\x99~\xf6\x84\x95\x04\x9b\xc5\xe7,'\xa6\x9d\x99kJ\xd3\x8e\x07*\xc9\x0b\xca\xc2\x83b\xabsM\x9a\xce\x88\xda\x99Mo^\x189\x0e-\xdevz\xf0\xd67\xbc\xd1\xa8\x1f\x03\xab~\xf2\x970\x8d\xcc\xfe\x0c\x7fT[\xc3S\xb9j&\x7f\x8b\xc9\xd62\x16u\xb1\x9a\xc6~w\xd2\xe4c+\xeb_\xfb\x06~\xe5eOkhO\x05g\xb4\xb6e)\xb5\xc9\xe5v9\xb9\x81\xf7F\xdc\xc1\xa9\xf3\xde\xdd\x82\x8b?\xb1\x9e\xb5:\x04j\xec\xb8\xcd\x0fC:t\xf1D1\xc0?Q\x87\xa3\x19\xa1\x17\xc3Q\x8d\xc0\x9b\x91\xe8\xc6\xf8\xa6\x1d\xe1\x00J\x94\x03\xf9v\xc1\xbe\xa3z\x8d\n\x8e$\xf6\x91a@\x0b\xac]\xd7 \xdf=\xb1\xc3l\x86W=\x9df|`\xd2q\xe4\x9f\xf9_'3\x1e\xb4l\xc3\xca;\xb6\x9d\xdd\x81\xec\xc2@\xc0\xbd\xce\x89\xd6\xf5\xba\xd5A\xcf\xd8\xefR\x07^\x8b\xb9\xd3\xb3]\x14O\xf10Wz\x89\xdf\xe2\x18\xf3\xb9\xd14gF\x9d/Ng\xe4@\xdf\xa6O\xc6\x88\x11c\x8c%\x0d\xb1\xf7\x87\xbe\xeb\x8bz[\xd67\x99w\xb6\xa4\x91\xe1\xbc\x0b\xeb\xb0\xf8;\x1f\x16\x10l\x92@\xc74w\x96\xcd\xf8+<;\xd4\xdf\xea\xd5\xaf~\xeev.\xb3\xa0|4\x15\xc6\xb4^\xd6\xeca\xcf\xea\xae\xbcc\xdc\xb3\xea\xdbb\xf3\xe5\x05\xdf\\4\xf7\x1dt\xa29\xa0+D\x0cvs\xcb6_\xe2\x1b\x0d\xc2\xc8\x9a1\xd0\x91\xd6\x98\xbb\xa8\x9eW\x82U\x97<\xcc;\xf9\x9e=\xccI\x9b\x0d\xf2\xe6y\x0c`\xedY[6\x9e\x80\x14:\xcc\xd0\xf3}\xf5S[lzg\xf5\x9d\xb5\xcd\x9e6\xe3\xdb;V\xf7Sd\xc4\xd8\xb7D\x83\x01\xbbSt\xff1\xfd^`\x8ex/\xe0\x1d\xac\xdc\x94\xbd\x18\xeb\n\x00\xd5\xf5M+\xe0y\xd3\x97.n\xf9\xf3\x1d\xd4\x8cm\xd9\x96w\xd6MQm\x0eU\xd1\x0b^d\xdb\xec\xdbR\xfc\xbf\x1c\xdf\xcd5t}\xf1E\x8a\x10|a\xf54\xfa\xc2\xfb\xda\x18p\xd1\x14\x94\xa2e\x83\x1bYCq\xdd3>Xd5n\x8b\x0e\x9a\xcd\xe6\xd0\xb6\xcc\x17\x99Q\x1dd\xba[W\x7f\x0b;S\xfb\xe2FMp^\x0f_?`y\xf9\xc3\x9fU\xe3\xe9!5\xcbM\x13\xacQ\x0fV\x14\xe9r1\xd4\xd1\x7f\xd8S\xbd\xb6\xaf\xc7?\xff\xdf\xbe\x81+^\x91\xae\x93\x1f\xf5Cq\xc3>\xb2_\x0f\xac\xebO\xe4\xef\x96\x11\xb9\xf9\xe3\xafss\xbc \xf8\xde\xa6\xeb\x81]_\x97\x9b\x92\xd5}e\xae\x9a\x08<+Z!d\x04\xf9\xb0\xa52>\xc3\xeb#\xfe\xa7>\xec\xaeX\xcb;\x9f\"\xa6\x1a\x08\xd3\xd2\x16\xd07\xab\xba\xe1\x9d\xf6R\x18\xb1\xd7\x95\xfb\xa2\x83\x8e\xf5/\xa0\xec;\xde\x87\x0eb\xfe<\xd4\xb2#l\xa1\xe9oY{_v!\x00Sp\x06\x9c1\x1d+\x0b s\xf0\xf0\xea\xe9fs\xd8\x89a\xbb}mm\x0b\x08\x930\xb6\x938\xc6<\xbc\x061\xe7\x071\xf1\n\x86;\xc0d\x0d\x19\x1f0\xbe\xb72c;0_\xd8\xbe\x87\x82\xb7T{\xa8k>\xdd\x8b\xa1\xc4\xda\x17\xb0)j>\xb7\x183z\x0fE\xfd( \x8e\xe4\xee\xea:\x1e\xe4\xbe\xfaUN\xbc\xd6\x8ez\xb4\x8e:\xd7\x03\x1f\xfcni/\x8b\xcbM\xea\xab\xa3KF\xee\xa3~\x7f\x13\xed\x14\xe8\n\xe9z\x97\xce\xbb\x91\x96\x9e\xe5K&z\x91\x99\xfc\xc7\xe5\x9e\xa3\xfa\x94\x9a3;\xdd\xa5\x9cV\x95\x96\xddJ\xde\xa0\xb0\xc9uWp\xa4 \x87?~yh\x1d\xc8\xfb\x82\x00\xc0)|\xfa\xf8\xf3\xcb\x96u\xcd\xa1\xdd0\xa8\x8b\x9db\x12\x1f\xea\xf2\xd7\x03\xab\x1e\x81W\xac/\xafK\xe5\xf7\xf6\x8aA\xe1\xaa$\x01t\xac-\x8b\xaa\xfc7\x86l\xd0\xc5\xd8\xdf4\x15\\\x1d\xae\xafY\xab\xa9\x17'\xb2s\xc8\xb2\xc3\xee\xd0\x0d\xf4f\xbedT\xac\xe8z\xd7VS3x\xf2\xf2 ln\x0b\xde\xffY{\"\xe6\xaf\xaa\xe8z\xe8\xd8\x0d\x9f\xa5t\xe8\xfd\xd3\xc7\x9f\x9fv\xb0/\xfa[a\xdc15\xf4y7\x17\xfe\xfa\xf5\xa1\xaa\x1e\xe1\xd7CQ\xf1\x16\xd8\xca\xf6Q\xa6EK<+:(k\xf7\xe5\xcf<\xcb\x977MsS\xb1\x13Q\xf7\xab\xc3\xf5\xc9\x9bC+\xfa\xee\xe7\xe7\xb2\xc4\xc2\\w\xdb\x1c\xaa-_.y\xa5\x1dK\x9b\xa2n\xearSTb\x06psz\xc6NnN^\xf0\xa6\x12\xf3\xe1\x93\x93'b\xa85=_\xcc\xd9\xbeg\xdb\xe7XT\xe6\xac\x86\xbd\x98<6\xec\x05\xf4\xac\xd8up\xe8\x0e\x05\xaf\xae\xc4\xd5\xefK\xee8\xd7|\x9a\xbcepU\xd6E\xfb(\x8f>\x1f\xf7\xccU\xe4\x14\x9d\xa6\xbfe\x8fnV|\xce\xdd\xf4P\xf6|\xe4\x1f:\x93n\xd3\xf3}Ds\x0d\xa7\xf5\xe3 \xfc\xbe\xb9gw\xdc{\xe0\x03\xfd\xd3\xc7\x9f\xd5\x08w\xecq\x13\xbc\xfb\xb9\xfdos\xcbv\x0c>\xdf\xf6\xfd\xfe\xf3\x0b\xf9\xdf\xee\xb3`\x07\xd4\x8d\xfa\xf5\x85\xe8=\xdc?i\xc4\xa8\x105\xeeX\x0f\x87\xbdcO\xf2\x85\x90|X{\xc7ZY\xe5]\xb1\xefdW\x10%\xee\x9b\x81T$\xd6\xe7RNUE\x07\xd7\x8dXf^!\xdf\xe27pv=\x96\x90\x7f\xbe}\xdb\xf0\x19e;TB\xac\xc7]w\xd8\xf1\x89\x0c1pZ\xc3\xef/.>\xc0Oo/@\x1d |\xfa\xf8\xb3\x1cP\x8fbA/\xe0_\xec\xeex\xf1\xb8g\x7f\xfe\x97?;\xe6@\xefuj\xfd\xdd\xe5\xe2#Zr\xdf6\xdb\xc3\x86q\xef\x80\xb5m\xe3\\,\"J3\xa2\xfd;1A\x8b%VO\xfd\x1b>V\x9b\xe6\xcba?l\xd5\xae\n\xbe\x07mjtZ\x01^\x15\x91\xf7mq'>\xfd\xce\xe8\xa3[\xd9I\x0b]T\xfe\xffwM\xb9\xe5\xfe&bJf,\x86_\xcb\xae\x9b\x96\xbd\xd0/r{E_^\x95\x15_\xff\xf9Z\xd5\xe9-2\x9f\"\xda;\xb6E\xec55\x9f\x86\xea\x1b&\x1e\x16c\xe3\x04\x9e}\xea\x98\xd6\x05\xe4\xb5\xe6\xdd\x83\x8fu\xd9?\x8a\xba\xb8\xc1jy\xd52\xb9\xea)\x83'\xcf\x91`j\xd3\xb3W\xd0\xf39\xf3\xfaPod\x0f\xe6\xe5Uc^\xacu|\x1fn\xee~\xf1fm\xc4\xa6\xdd\xdd\xf4\xaa\xb9\xfa\xea\xc0w\xd2|\x06f/\x84\x1fY\xf6:\x93\x03\xffXb\x93:\xf4\xfb+vS\x8a=\x80cLh\xfd\xba\xd3\xc5\xe3\x9e\x9d\xc8\xfeX\xec\xcb\xeed\xd3\xec\xb0Y\xea\\\x8c\x88Nn\xb4\xf9\x80\xab\xed\xd1\x0d\xcf\xd4\xa9\x1f\xdb\xed\xfbG5\x84\x9e\xc3\x8e;(\x8e\xb9+d0\x8b\xca\x08\xdfypq\xa5\xef\xdc\xed\xd9\xa6\xbc.7\xd0\xb1]Q\xf7\xe5\xa6\x9bvu1F\x12\x96\xe2\x00\x1f7\xb6J\xff\xc2\x87\xf1\x15\xd3n\x99\xb1\xd0:\xeb\xaaZ\x9c\x8a\xab\xe6\x0eY\xa0e\x95T\x97\xf4\xe2\xad\xac\x12|>\xad\x1f?\x8f\xaa#E\x0dE{U\xf6-\x1f4\x81\x92\xe8y\xb0\xa8\x1a\xab-\xe4Ne\xfa)\xf8l%&TY\x92+\xd7\xdd0\xf3\xd2\xde\x83\xd5e>\xe8\x8e[\x95W\xa2xj\x1e\xed\xa0;\xec\xf7M+V\xa0}\xb1\xf9\xf2\xf2P\xf3\xff\xf0uG~\xc7\x0e\x1b%\xee\x82\xdb\\\xc3\xa1\x97\x13\x84\x1e~\x1dH\x84D)\xc7\"\xdc\xb0\x9a\xb5b\x03-7G\x03\n\xe0\xd4\x9a\x8f\xe4'\x98\xda\x7f\xfbP\x88M\xc8w\xaf\xe0\x03/\x1f\x1fw\xaa\xa8\x85\xc9V}\xfd\x8f\xff\x88,\x03?6\x0d\\7\x0d|\x0f'''\xff\xc3\xf9\x99W\xb6\xa8\x1f\xdd\x1f\x8a\xfa\xf1\x84g\xf7c\xdb\xec\x9e]7\xcds\xf7\x91\x93\x13w\x9e/\xaf\xe1\x19\x7f\xf5\x93(\xe0E\xf3\xec\x1f\xf8\xbb\xcf\xe1\xdf\x91\xb9\x0d{\xff/x\xdd\x7f\x1b\xa9\xfb?\x17w\xc5\xec\xca\xc3\xf7\xc2\xd7\xe0Vg\xd4\xb4\xec\x9e\xfd\xd84'\x9b\xaa\xe8:OEe\x11\xf8\xc3\xb2\xec\xc6\x0bn^V\x0b\x0cM\xf0O\x91&\xf8\xf0\xd8\xdf65\xd2\x082\xf7\x1f\x9b\xe6\xd9\xc9\xc9\xc9s\xecC\xcb\x06x\x86\xfe&:\x81h\x16j\xab\xf0\x97\xced\xa3\xbcy{\xfe\xfa\xe3\xd9\x87\x8b\xf7\x1f\x9f\xdb\x93\"(\xf3\xb2\xa3\xe0\x19\xc8,\xf0\xe6\xf8\xef\x91\xe6\xf8\xa9q[B4\xc5\xab\xef\xe1\x1f\xf6W'?6\xcd\xbf\x9f\x9c\x9c\xfc\xc5}\xa8\xa8\x1f_p7\x86?\xb9\x97\x8b\xf7/E\xdb\xdd\x16\x15o$\xbc\xa0XS\xd8\xb9!Y\x95\xd7VF\x9f\xea\xdd\x98\x95(\x88\xe8\x90\xe2\xa9\xff\xf6=\xd4e\x85v0<\x7f\xab']\x88\x13\x8a\xcd\x97a\x0e\xd2\x0e%\\=\x8e\xcb\xbb\x9e%\xef\xcb\xaa\xe2?(\xce=_\x12\xa7\xe6\x9e\"\xcb\xf5K\xbe7\x12\xea\x04'\xdc\xb5y\xca}\xdca\xc6\xe6\xb3\xb9f\x83\xca/658L\x8du\xf5\xa8\xfdyg\xb35\xb8MjW\xdf\xeb=\xde\xd3\x97O\xa7\xe6\xd4\x86Bg-w\x10L\xf5\x9e'\xd7MsrU\xb4\xa2\xd0\x0f/\x1fO\xfe\xed\x89\xac\xb1\xf4\x8b]\x17_d\xf9\x84?\xc7\xa7\xe7\xc9O\xff|\xfe\xfe\xdd\xf4/\xdf\x7f\xff\xfd\xf7n\xdb\xf3\xe7\xc6\xbd\xa5\xf4'\x1a>\\\xd4b*\xfd\xebC7p\x15n\x0eU\xd1N\xed\xb8\xaf\xf7\x02\x957.\x83/\x80\xed\xae\xd8v;.\x88/\xd4\xdaj\xedH\x8d\xe5IF\xf7>\xff/^\xed\xcf*\x842\x11\x14\xd3\x8dx\xa2\x87\xdf+\xc4A,6_\xf8\xd8\x1b7\x14\xd7e\xc5\xdc\xf9M\x8f\xd1\x0f\xac\xed\x9a\x1a\xed\xcej\xe7\x7f]\xb6]\x7f)Z\xfe{\xf8\xce\xb54<(\xa4G\xd5s\xbf\x8d\xcf\xa8\x00h\xaeOD\xfd\x9f\xbc\x82'X\xcf\x9eV\xebD\x96\xfe\xc9\x0b\xcc\x8e(\xf7\xbbb\xc7m\xfdOY\xc4\xdf\xa1\x0f\xf2r[\xcf\xc5\n\x7fv\xad\x1c\xdb\xe97\x96_\xa8\xec\xe0\x9eU\xd5\xb7_\xea\xe6^\xc6yoE(^\x05f\xdd\x8e:\xedN/\xa4\xb3e\xf519\x11\x18Y\xf2\x8e#\x98\xe2\xa2\xdbL\x0d~\x16\x9dX\xf7\xa1\xdb\xa6\xdaNB\xc3b\x08\x94\xf5\xd0\xf7@E\x12T\xd7\x9b\xda\x12\xe6\x87\x1e\x07\xcf\xf8\xf8\xd5\xd5u\xb6\xad:\x8a\xf2\xe7\x7f\xf9\xf3s\xa4s.\xf9\xde\xd3\x0c\xf0O.\xaa\xcdM}w\xf2\xdb\xef~\xdb=A>\xa3\xfe\xbf\x89W=(\xf5\xb5\xac?\xb4\xb5\xa4\x0f\xe8?v\xeby\xf4z\x1e}\xcc\xf3\xe8)O\x13\x89uS0\xb5\xc6k\xca\xda\xc7\x0f\xafu!\x9d\xc3h<\xcc\x9e=\xc6N\xea\xcf=\x1a:\xf7~\xfe\xf0\x86\xb2\xee))\xf2P\\u\xdc\x9f =\xfb\xb4nhF\xeb\xe6\x92{6\x97w\xaco\x08/L&\x96\x0b^\xf7\x8f\xa2\xeaF\xb3\n\xb9\xb1\xa2\xdd\x82h\x1au\xfc\x84\x1c\xb1\xe8v\xec\x0eW\xbb\xb2\xbf\xec\xcb\x1d\xf5\x1a\\\xfb2_}`\xc5\xea\xed\x123\xf2&\xf2\xf5\x98\xf3o\xf4\x98S]\x11\xdf\xf5E\xbb\xa8\xb7(;\x8b:\xcb\xa4\x91\xf5\x92j]P\xd02\xd52;\xee\x0f\xb6j~\xf1\x0c\x84\xc0Q\xe3\xb9\xe1\x139E4}!\x8a\x1f\x14[J\xbd\x8fa\xfeO\xc4\xf7\x89\xfa=A\x9f\x87\xec\xef\xe0\x1d>\x87\x9f\xf3\xb5|\x9c\xd8G9\x86\x7fc\xf9\x14_\xdd\xaf\x89\xe6\x7f\x1c\x7f\xc6\xf2e\xbe\xa6\x1f\x83\xfb0_\xcb\x7f\x19}\x17d\xaaQ\x97\x10\x89\xfe\x91\xcc5\xf5,\x98$\xe7\x07EG\x00\xe5\xf0\xc5!\x1b#\xb0\xb8\x80!lI\xc5\x16z\xf8\xfb\xbd\xcfb\xb63\xe0XZ\xe2\x118\xc62\xdfZ1\xf1\x80\xb2\x02\xed\xc0\x02\xdb\x05q\xa8\xd6\xe0\xa2\xc0Pua\x89(T3\x9b\xf4[#4\x1c\xea\xb8n\xafw\xb8\x07;r@_\xc03\xe8g\xfa\xd2\xff\x85/P\xcd7\x19d\x9e\x0e\x8erI\xea\xefl\x95\xf0E\xd3\xc2\xb4\x7f\xc9)\x02\xed\xf6\xba<\xabn\xc9\xaa[r|\xdd\x12{-HXs\xba\xa4Eg\xe6]\x91j\x1f\x1e\xbc2r\xf2\x8c\x0b\xe5\x957G\xb6L^\xc2\xd07\xea\xf9Y\xa3Ag\x85\xdcg\xe4\xedA\x93\xb2\xfe\xcc\xea\x9b\xfeV\x1f'\xa2\xe8\xea\x01Y\x1d\xaa\xf3\xf4!B\xa5\xd5\x0b\xb3j\x8d\x02\xfbau\x86\xe7\xaf\x7fYW\xbf\xe5\xce0\xd8\x95_D\x0f\x80\x08E\x00\xc8\xa3\xc5\x85\xc7e\xa4\x0b\x80\x872\x00\x16m\x00d\x8c:<\x1e\xcdG\x08\xa3Q<>k,\xfezh\xda\xc3\x8e\xd8\x98sA\x88\xea\xeb\xefY\xbbau\xcfWS>a\x89\xd5\xac\xeb\x8b/\xcc\xb8x\xe2\xae\xe9\x99\xea\x1erysW\xe7+\x07\xca\xbai\xea\xae\xdc2\xde!E\x90\xcd\xec9\xfdm\xcb:\xfe=\xbfR\x1dy\x0fi{\x85\xf1\xf8\x13\xebD\x8d$\xfd\xc3\xec\xef\xdc\x1b9\x8172J\x87\xf7\xa2\xff\xe7\xe4\xff5+r\xc7\xfa\xe6\xf2+\xd7F\xba\x02\xcd5\xfc\x81\xa9o#\xc6\x84\xb8\xde\\\xfdS\x1c\xbf\xdb\xd5\x8b~1^\x19\xb6\x1d\x1a@W\xf9\xbb\x97\xff\x84\xecj\x8fp\xc1\xb0\xebO\xa8\xc2'{\x14\xba\xd6\xaf\xe6\x8c\xbe\x8c\xa1(\x87\xb4\x03\xa15\xd2\xbfB\xf6\x9e;L\x16\xef\xf62\x92y r\x97INR\x0f\xe4$\xf6@\xf8F\x93E\x04\x1f\xc8H\xf2\x81(\xd1\x07\xe6\x92}` \xe1\x07k\xb1\xc7\xbd\xe8/\xde\xdbM\x16\x10\x7f\x10[\xd2\x91\xf2\xdep\xb2\x8c\x00\x84\x98;\xec\xbd\xb7\x9c\xe4&\x02\xc1r2\x10\xe4'\x04\xc12R\x10,#\x06\xe1C\x14-d6\xba\x10d\xa7\x0cAN\xda\x10\x90\xa8C\x90\x93>\x04\xc1\xdbP\x96\xd1\x88\xb01\x8e\xde\x88\"\xa7\x9a(\xb9\x08\x16\x13\x8c\x10\x83\xd8\xbd(\xb3iG\xe0\xbb\x1b%\xb2\xc4\x07\xeeG\xa1\xac\xff3\xa9H\xd8\xb4\xe7\xbd%%V\x8ee\xb4$\xcb\x98 )\xa1w\xa5d\xa1'An\x8a\x12 4%XNU\xb2\xac\xf5\xc8\xad)\xcb\xc8K\x10\xe3\xf4@\xe8\xee\x14\x02\x91 |\x976$\x10\x9a\xfc6\x1c@\xfb\"r\x13$4F\x8c\xe4\x04\xd1zG\xc9N\x90Fx\x02\xf4\x06\x80\x85\xc4'\x88\x91\x9f r\xb3J\xecn\x95@+Q\xc9P@ D\x01z\xc7\xca\"b\x14\xd0\xc8Q0\x8b \x05\xde\x86\x89\x12\xa5 \x1fY\n\xfc\xa5pzZV\xe2\x14,$OY\xa6\xb0[X2\xd3\xa9 3\xa5\n\xc2w\xb1`\xb7\xb1`\xf7\xb1\xe4\xa2XAN\x9a\x15d\xa7Z\x01P\xe9V@\xa1\\\x01\x9dv\x05D\xea\x15\xe0\xf7\xb3\xe07v\xd0\x89:\xb1;Z\xc8T,\xa0\xd1\xb1\x00\xabFNZ\x16,\xa5fY\xb6\x90\xbb[r\x92\xb5 +a\x0b\x16\xf7\x87(q\x0b\x08\xe4-\x98\xdc\xe3\xe2\x92\xb8 \xb4\x9b\xb1\xc9\\\x10\xc3\xddF\x9f\xf5\x92\xba\xf0\xc7}\xc4.\xfci\x87\xdc\x85?\x86\x10\xbc\xf0\x07-\x92\x17\xa4\x00\x9f\xc7\x17\xfc\x88\xff<@h\x9d\xbe\x16 \xda\x9f\xdf\xf1\x81\xd1:!\xa4+\xbcHG\x06J'\x97\xe78\xc0\xe9\xa1\x18.\x19\x0c/\xc6\xf1\x80\xd4:\xf9Iax\x89\x8e\x03\xac\xd6iJ\x0e\x83\x08A\x0c\xe6\x9d\x08!d1\x08\xc7\x8aP\xd2X\xe4\x1d\x97<\x16y\xc1O\"\x0b\xbex\x042\x19\xf8\x08e\xc1\x82\xf8\xa8B``v\\\xbe\xd0l\x93\x1e\xa2\x19\xac\xb0\x9b\xbf#\xd8M\x80\xae\x06s;\x8e\x97\xba6\xd3bv\x1a[\x10\x90h\x9f\xeb\x93\x80\x03\xbaPI\x80D\xf5R:&Q\xd7\xe5?\x1b\x0e\x1eE\x1c\xcc\x9e z/\xee 2G\xc4\x07<\xe4G\x1f\xc4\xf0\x07\xb9\x11\x08\x991\x08\x11\x14\xc2b\x1cB^$\x02\x05\x8b\xb0\x00\x8d\x90\x17\x8f@B$\xe4\xc5$\x10P \xd9q \x11d\xc2YU\x99\x16\xa0\x1c\xbc8\x87\xa8K\x11\xc4:\xd0<\x8e|x\x870\xe2!^\x9a\xac\xa8\x870\xee!\x1b\xf2a)\xf6\xc11'<\x1a\xd4y\xc8\x8b\x7f\xf0! \x96c \x08\x07\xffA\x1c\x04\x11 \xe1=NMDC\xf8\xed gL\x8b1\x11)\x8dC\xc1E\xc4[\x81\x84\x8dHFG\xe0'p\x19\x10\x12\x04\x8cD\x0c%\x11\xc7I\x04[-\x05+ACK\xe0x\x89\xc5\x88 2fb.j\xc2\xdfL$\xe4DV\xecD\xa0,HO\\\x84\xa0p\xac!\x88\x8a\xac\x98\n\x1f\xaab!\xae\xc2-\xb2\x8b\xb3\xc8\x8f\xb4\x88`-p\xb4\x05\x8e\xb7\xc8\x89\xb8\xc8\x8c\xb98\x06\xea\"\x05wAD^$a/\xe8\xe8\x0b\x0f\xfe\xc2w\xe2N?s\x8fc0\x92P\x18d\x1c\x06Z\xa1\xdcX\x8c\xbch\x0c\x0f\x1e#7\"#7&cy\x1f!\xe12h\xc8\x8c)6\x03Gg\x04\xf7`\x18B#\x0d\xa3\x11?\xc8'\xbc\x10\xc2i\x90\x91\x1a X\x0d\"Zc\x06^#\x86\xd8\xc8\x8b\xd9\xf8\xfa\xa8\x8d\xf8\xe7>&n\xc3\x8b\x94\x88v\xaa\xe3a7\x92\xcat\\\xfc\x86\x17\xc1\xf1\xd7\xc1p\xc4P\x1c_\x1f\xc7\x81!9\xe2X\x8e\xd9gm\x1eDG\xec0\xde\x87\xea\x88\xbc\x87#;\"/\x85\xd1\x1d\xf4\xf3\xff|\x08\x8f\x00\xc6\x83t\x82\x8a\x9d\xad\xc7\x90\x1e\x0b\x0c\x07\xf0\x1e~\xc4\xc7*=\x96\x8c\x01\xc9\x8c\x02\xc9%=\x16\xc5\x82,\xe8ZAD\xc8l\xbbG\xc0\x85\xac\xaag\xab\xea\xd9qT\xcf\xfe\x03\x05\x19\xa5\xc9\x93\xe8\x97\x92`F\xc6z\x96\x0c4\x12\x8b\x9d\x0d2\"\xf5\xdf\xff\xe2\xf7\x05\x04\xf0e\xc8\xf7\xa0||\xf1Z\xd2\x87\xffC\xd3\xb3\xe4/~\xd7\xf4\x8e\xd6<\xe9\x83{\xc1b\xe9C\x9c\x97\x81\xa6\x8f,A'(\x89\xe3\xb8\xe0T\x99q\xa2\x9b \xde0\x05\x88\x1d\xc4\x1f\xde_\xbc\xbd|\xff\xe1\xe2\xec\xfd\xbb`\x98\xc2}\xfaOo\xcf O\x9d\xfep~qz\xf6\x8e\xf0\xe4\xbb\xf7\xa4\x87.\xffxv\xf1\xfb\xcb?\xbc\xbd\xc0\x1e\x1f\x02\x0e\xf4j\xc5\xbd0\x00\xde\xab\xdf\x8bG\xf0\x80\x83\x90\x03S\xfdB\x8f\xd2\xf2\x8e\xe1X\x16t\xfc\xa2O\xfa?\x8f\xb7\x82\xc6\xe4Q7\xdf6{\xb3h\x9e\xf3\x13\xe7\xab\xbe\xb2\xff`\x18}TRa)&U\x17x\x85\xfd\x11LaY9)'\xdb\x7f\xf7\xfe\x95\xf5\xefI+\xcc\xb07\xf61\xdb\xf2\xf8\xcb4\x0f\xe1\x94\xdfi\xf91on\xf7\xac\xbc\xb9]\x84\x14\xff\xa3\xb0\xc0\xb6F\x97\x1c\x0br\xa8K\x81\xc9\x1b\xe4\xe9\xc4\xfft\xfb\xca\x94\xc0\xf4G\xd8\xb8M\xc3\x9a\xacI\x1d\xdfs\x9e\xca7\x85\xbe]\xd7\xdb\xc1\x84\xb37/t\xf8\x87\xb5/\x86K\x19\x9dvr\xc5\xd4\xcc\xc5\x84\xb2\\\x89R\xd0\x84\xd4\xf8\xa3\xe9\x18h\xa1%g\xafT\x7f\xe3\xf8gda\x0b\x98B\x17\xb7\xaf\xbb\x13\xf7/s\xd1\x85.\xb4\xd4\xa5.v\xd4\xe5.e\xc1#.y\x89\x8b\xde\xace\x8f\xb6\xf0e^\xfa\x92\x16\xbf\xaf\xb4\xfc\x1de\x01<\xfe\x12\x98\x7f\x11\xfc\x8a\xcb`h!L \x9a-_\x0c\xc3\x07Ns\x17\xc4\\K\xa2S>)f\xaaw\xfe\xfc\x9d_\x0f\xac-\x99\x1c\x87\xdd\x1aOZ\xe3I\xc7\x8c'\xb9\xae\x13\xd5-#\x08\xdc\x8a`\xc3\x07Cn\x9a\xe0\x90\xd9\xba\xd0\xe8\xa7@\xfb\x95\x7f\xd8/\xd5\x81\xb6t\x84}\xaa\xcf\x88F\xf2\xcc\xd2\xff\x0e-};C\xe1\xd9\x05\xa2\x1b\xea\xce>e\xe7\x99\xa5F\xdb|\xae\x92\xb3\xd5\xe6I\xba\xcdF\xbf\xb3&C\xf1'\xd1\x97\xf9#e}\xa3\x8a\xd0\xd4\xd8\x02\xd0\x85\xfa\xf5G\xe3`\x94\xd0\xaf\xadH&\xd2\xc4N\x04\x13yf\x1a\xb9D\x1e\xc0#\x96\xce\x83\x99#\x95H\x1b\xfda\x88\x00\x12\x1a\x07\xdd\"\x05{\xe1d\x02\xb66D\xc8\x8b\xce&\xe8\x18\x1b=|\x9b\x13\xf0}|`#\xaa\xcf\x1f\xdf\xce\xd062\xd1-\x0cy\xf3\x92\xb8m\x89mX\xb2mU\x88\x9b\x94\xa3oO2oL\x8e\xb9%\xc9\xb9\x19\xf9*\xdb\x10|\x03\xe2\x19~\x197\x1d\xf8\x1a8g\xa3\x91c\x8b\xe1\x99\x8a\xdf\x1bs\x93\xd3$\xd3{u\xc3C\xd77\xe7\x84f\x1a\xcf\xfc\x12\x99UHs >\x83\xcc\x9d7\x8c\x8f\xa3,\xb9\xb3\xc5\x91\xe6\x88,3C\xfe\xf9`\xf9,p\xc4\xb1\x8f\xf7\xf5\xb2\xbeI\xdcsxn\xc3B\xa7\x8eI\x87\x8b\xde\x825y\xda,\x9b\xcf/U6\xd2\xfcQw\xfe\"W\xdd\xf6Y\xd0:\xdb~Jl\x8ep\x9f\x99\xfa&1\xaf$\xe0\x8f\x10<\x11\xd2\xbc\x01A\xef#\xdf\xfc\x01\xe8\x1c\xe2\xd6$\xdb<\xe2\x9a\x9e9\x97\xb8\x86r\xcc'\xae\xd59s\nf%\xe3\xbc\x02\x887\x11\xdeB-\xf1 \xd4\x80\xde\x95u?^\x87\x9f6\x81\xf1w/-\xbc#:\x92U\x90\xaaW\xa4\xe8MS\n\xba\x08\x7f_=S\xd6\xd7\x95\x88\x17^\xf2N\x7f)\x15 hVw\xeaR\xb3\xa2\xae\x0fE\xa5\xc4\x0c\xa0\xacG\x9b|\xab\xcf\x9c\x8cv\xc5CZ\x061{\x91M\xf4hO\xc5(P{7MQ]^5\xf5\x96\xc5\x96\x04e\x8d\xbf\xc0\x1bUE\x99@\xbe\x0bE\xdf\xec\x86[\xd1\xabf\xf3\xa5\xe3\x0b\xcd\xe5#+\xc2[Vo\xb0Qe'\x85\\\xd8V\x19\xe5\xd9\x027\xeavN\xb5\xe2H\xe2\x90q\x8f\x9b\x8e\xe9\xf1\xaf\x0f\xbbf{\xa8\x98\xaf?\x8a\xb0\xdf\xa9\xf8\xae\x1f\xda\xe6\xae\xec\xf8\xcc\x97|\xd8*;\xc6\xe5~\xb0@l\x00\x7f\xc8\xc9\xb1\xa8\xa3\x97J\nC\xd4M\x90\xadd\x9f4\x1e\x14\x11\xa4\x90\x07\x1f\xacs0Jj\x1axi[\xc0\xc3\xa6nk\x9f\xe9N\x99\xdc\xccCw^\xdc\xbc\xe3\xc0\xf04\xeb\xf8\x00\xad9\x9dJQ\xa2\xcd\xc3K!\xdc\x9a\xdb\x803oj\x0d^\x8f\x18\xbe\x18Q\xf9\x81\xe3P2\x1b\x9ft\xbe\x82M\xe4\x10\n\"\xc5't\x88O\xea\x94\x1c\xd2&w\xf0O\xf0)\x99Ql\x131\x9f\xb4I\x1f|\x13?\xc52a\x01\x80\xd0\"\x10\xcc#~\xf2D_\x10\x8ep\xaf\xa1\x1c\x18S\xff\xe5\xb5\xd1\xcd\x08\x03\xaf;\\u\xfbb\x13v6&g\x8f\xc8\xef\xd6qG\xd8k\x1b\xe6&\xa3\xb8\xa6#[\xd6\xdb\xf2\xae\xdc\x8a\x85C\x8fr\xd5\xf3%\xab^\xea\xa7\x99F\xf8#\xd2\xd0\x077>n5\xd2\xe2Y*4IM\xe6(}\xa4<\xd4b\xd6\xe4\xe4~ \xf0\xf7X\xea!1\"\x94\x14\xfeh\x9e\xce;\xb7\xe3vU\xd1\xdd\x96\xf5\xcd\\\xd7\xbb+oj\xb6\xbdT\x83\xfa\xbe\xac\xb7\xcd=q\xdd5G\xf2\xae\xac/\x95)>1$\xd91\xd6\xefms_\xf7\xe5\x8e]\xfekQV\x97[E\xa9\x0e\xda\x11\x0dpy-d\x08\x9b\xfar\xdb\x1c\xae*&\xca\x92\x9e\xbdcK\x96&\xd5\x10\xe6\xbd\x0e\xa4zg\xd5\x1d\x84\xc8\xae\xe4\xa1\xbf\xfe\xa2\xaeK\xeb|\xeb\xc5#\xd0\xf1`i\x03)\xd8g\x80\xb2\x0c\xd8\xab@\xa4\xff\x90lZ(\x8dX_\n\xd8\xa4\xf4\xa9\xc0\xeb\xde\"E\xfbW\xba\xd1\xec}mX\x8fs\xad\xb2\xb1\xfe{^\xde\xd4e}sV_7\xc9\x9d\xf8\xae\xa8\xc4g)\xeb\x9b\xcb\xb2\xbev\x8e\x8cI\xdd\xb9\xd8n[\xd6u\xa4\xaf Y\x81\xb7\xc8QM\xf4\xb3y\x1d\x9f\xdf\x0bkPh\xc2\xa3\x88\xd1\x15}\xd3\n`\x8c\x10\x17\x81\x026E\xbd\xe5\x7ff\xf0\xfe\xa3\xf8\xe1P\xff\xab\xe0>\x1b&\xcbz\xcb\x1e.\x9b\xeb\xeb\x8e-/]\xf8p\xf3\x8cg\xa5\x19\x9a\x1d\x94\xf5\xa6\x15$M\xb6\x05Vln\x81\xf7\xeb1\xe28\xd4\xa6P^\xa5}xY\xd6\xfc'>\xa1\x88\x83\xa1]\xf1(\xf53\xe5\x9c \x8e\x91\xd8\xa6\xd9\xed\xca^\n\xaf\xf6J\x0f\xd8\x11\xac\xdb4\xf5\xbf*1:\x19 C\x84]?\x9f\x0b\xab?\x88\xf9\xeb\x8fb\xaa\xf9+\x05\xbc\xc1\xf91K\xc3\xb1k&\x8a\x9ae\x0d7\x1f?\xbc\x1e}=%g\xd9\xc1\xfd-k\x99\xb5\x8em\x9aV>(d8\x95\xbb9(`\xf2\x19U\x84y\xccjN\xea\xa6\x9f\"\xe6\x1d\xe2~\xa1\xcf#\xf4\x979\x97\x17H\xf2\xff\x16x~\x86\xa7g\x18D|\xbe\x88\xb7\x97eX-\xf1\xea\x96\xf9s\x01O\xce\x03Z\x9f\xef\xbd\xb91\x9a\x89\xdf\x86zlzJ\xef\xc5\xd5C\xc3\x8c\xfeCSo\xcf\x0d\xd5d\xe7+L\xc9\x02?\xbc\x7f\xf7\xc6/\x01l\xff\xce\xff\x15\xfc\xf1\xec\xddO\xe8\xaf\xc6\x8b\x03\xbc7\x945\xeeI\x8cu\x1b\xbcSC+uh`\x13\xeb\xef\xc9\xe4\x15\xa0\xb8\xdc\x1a\xcaZ!\x84\xc7A6\xd5\x0d\xc6\x9b\x84\xdb\x93\xff\x87}q\xd9 \xd5\xbdKr\xbe\x0f\xda;{\xf7\x936x\xf6\xee\xa7\xa0\xc5C}%\xfd \x8fA]\x81t]\x99\x00O\xdf\x0c\xaf\x08\xe4\x92\x0f\x965\x19\xf2\xf6;\x13$\x84\xb8\xf4M\x84\x15\xf5C\xa0\xc0\xdd\xc2\xa3\xd4\xe7{\xa6\xb9\x96\x15\x12Bh\xf6\x10\xfdk\xc2.\x85\xe7Ct\xe8'\x95{\xca_\x1c\x00x\xd3r\x8b[\x19o\xe4\x0ed\xcb*v#vU/@x\x06\xfa\x9c\xf4\xe4\xa9a|W<\\\xce-\x89\xb3\x8b\xd0\xc6&M\xac\xc1[vQm\xc7k\xe3\xc4A\xd8\x9d\xc4\xd7\xb47\xcc\xae\x82U\x03 \xc2\xc9[\x11\xc3&Z\x9fmQV\x8f\xd21+:\xcf\x15\x9d\xd6j)j\xef\xa9\xcaa\xcf\x1d\x96\xcb\x04|D\xc4\xc11\x0c\xea\xde\".\xe9\x1c\x05\xf2\x80\x00\xc4H1\x9a\xec?\x06\x96F\x08\x9fY\x02\x14\xfb}>s\xe1\x9d\xffk>!\xd5\xdd\xa1\x83M\xb1\x97\xd3\xac\xdc/\xea?\xb7\x87j\x14Y\xdb\xb0\xae\x93\xb1 \xddz\x969\xb1\x04\xf3\x9f6\xb7EY\xbfpa\xba\x9b\xea o\xff\xab*\xe3A\xbe\xb7/x\xdd\x0e\x1bY\x06\xad\xee\"sGc\x0d\xc5x\x1f\xff\xd3\xce\xce\xa8\xeb\xf9\x96\xado\x8b\xba\x93\xf3\xf4\xae\xd8\xdc\x96\xf5\x04\xcc\"r\xa6\n\xedg\x81l\xcf\x00\xebcX q\x9d\xa5h<\xb7\xf4\xb2\x87\xef[v\x97\xb1\x83\xdf\x16\xdd\xed\xcc\x0e\x89\\\xe4\xbe/\xda\xfe\xb2c\xfd\xa5=\xbcu\xf2\x96\x10\x82\xa5\x14\xaf\xba\xb0\x81\xe1'a\xb5\xac{v\x83\xc0s \x02\x9f\x01o3@\xac) \xdc\x1c\xc3G\xfbP\xb4}\xc7\xfa\xdf\x8bV\xb1?\xb7<}\xbat\x8b\x10\xedA>\x98\x077%\xc7\x96\xec(|\x08\x1a\xcf\xf1\x7ff\xc8n\xc4\xbad0f\x97\xfd\xbamvb\x9a(\xf6{h\x0e\xfd\xfe\xd0\x8f\x7f\x1b\xc7\x80aA@Y\xb2\x96i\x98)3\xd8*\xf6\xfb\x0cVD\x7fQh\x8b\x0c\xe6\xd8\x1d\xf7\xc76,\x83\xa9\xe1\xfb\x8d\xcb\x8b5=I\xad\x18\x96\xba\xe5E\xf3\x9b,|rTM\"h\xc3r#\xcf\xbf.X\xbd\x15\xe7\xf6\xbd\x1a\x10rz2bJ\x08\xea!/Z\x99\xff\xd5\xbf\xe1\x0fN3\xe1U\xde5=i \xdf\xe6\xff\xa9\x0b\xd0\xd3v\xfe\x87\x08 \x80\x0e\x1f\x94\xb5\xb8\x87\xf7d\xf2\xfc84\xf6\x87+\x07\x9f\x16\x9c\xe7C\xb3<\x7f\xed\xf2\xd0\xa2\xd3|d\"\x8e\xb5\x12\x88#\xf3O\x1f\x7f~\xd9\xb2\xae9\xb4\x1b\xb5\x11\x12[\xc2C]\xfez`\xd5\xa3\xda\x9f\\\x97\xaa\xf5z%>\x80\xa1\x85Al\x18\xf4}\xdc\xb8.\xbc\xd8\xc6n\x9a\n\xae\x0e\xd7\xd7l\xb8\x8bX\xa1Rd]`w\xe8\x86\x1d)\x14=T\xac\xe8\x10\xc4*\x08\xec\x02\x83'/\x9f\x88(y\xb1\xe9Y{\"6\xe3\xe20\xa4c7|\xcb\xad\xbf\xf4\xa7\x8f??\xed`_\xf4\xb7\"\x03\xd4\xdc\x10`\xc1s\xeb\x91\x0b\xdcE\x9b\xa9,D\xeb<+\x04p\x1b5\xf0\x99g\xef\xbd\x0e\xf9\xf3sYza\xb2\xbbm\x0e\xd5\x16\xae\xe4\x16\x1c\xb5\xb6)\xea\xa6\xe6\x1b\x0d1'\xe09>c'7'/x\x13\nW\xf4\xc9\xc9\x13}\xb8\\l6l\xdf\xb3\xeds\xfc\xc6A\x80\xb3\x1a\xf6\"p\xbfa/\xa0g\xc5\xae\x83Cw\x10\n\xb1\x12U\xb4/+^:u\x07\xf5UY\x0b\x84EU\xe1m\xf7\xb8\x17}\xa8\xe8\xf9\xd3\x8fx\x96R\xd7\x00J\x11\xad\x90\x8c{\xed\xa2\xf7\xecA|\xca\xd3\xfa\xf1\x04~\xdf\xdc\xb3;\xd6Jf\xfe\xa7\x8f?\xbbc\x97'\x19\xa5P7\xef\xe3\x19v\x9b[\xb6c\xf0\xf9\xb6\xef\xf7\x9f_\xc8\xffv\x9f_H\xe0\x8d\xfa\xf5\x85\xe8e\x1bc\xdbZ=\n\x0c\x0df\xf0\xb0\x87B\xd4\xd5\x93\x1fk\xef\x98:G\xdf\x15\xfbNv\x19^\x03!\xe5\xa1\xd0\x86b\xbe\x12\xbe|\x07\xc8=\xae V\x81\xaaj\xee\xbbW\x9eo\xf7\x1b8\xbb\x1ek\xc0?\xb9\x90\xc3\xd9\xb2\xedPI\x15\xed;\xec\xd8\xd6s\x89\xc3o\xe0\xb4\x86\xdf_\\|\x80\x9f\xde^@S\xeba$\x07\xe8\xa3\x88t\xe1=\xd3\xb9Z\xfc\xe2q\xcf\xfe\xfc/\x7fF\x1fV\xc2\x00\xfc[\xab>$\x978\xf1\x15\xf6m\xb3=l\x98@\"\xb5\xad\x0d\"\xd7\xe97p:\xee\x90:(Z\xc6\xfbas/O\xfd6\xc5\x86\xcf M\xf3\xe5\xb0\x1f\xa0\x99WE\xc7\xb6\xd0\xe0W]\xf8\xa67\xe0\xd5\x17\xe5\x12(\xbb\xfe\x96\xed\x8c\xb1\xb0\x95\x83\xa1\xd0\xd5\x18\x10HEm_\xbc\xa2\x93,\x94\x18\xf6-\xbbnZ\xf6B\xbf\xccm\x16}yUVe\xff(D\xcb\xf5q\x97\x98\xa2\xda;\x8b'3\xa6\xa6VG\xbd\xe2\x051\xeeN\xe0\xd9\xa7\x8e\xe9@\x01o\x15\xde\xed\xf8<#\xfb]Q\x177\xbe\x1a_\xb5L\x048\xb4\xd1\x93\xe7xoy\xd7\xf4\xec\x15\xf4|\x1e\xbfV\xb8\xc2B\x94]\xcd7JO\xa8z4\xf1\xc68\xef\x84\xa7F@\xa5]\xa8\xb1L\xbacA\xcb\xf8\xea\xc0T\xfcz@\xce\x0c\xe4\xedq|]\xb1\x9b\xb2\xae}\x9b\x96\xfb\xb2\xbf\xf5L\xfa\xee\x85\xf6\xbe\x19\xf3\\\x8c\xb6NE\x9c\xfa\xdb\xa2\xb6g\x16x\xa6\xc2\x8cl\xb7\xef\x1f\xd5\xf0|\x8e\x1a\xdb \x14\xeb\x95g\"\x11\x15\x14\xb1\xea!\xb6\xacN\x18\xf6lS^\x97\x1b\xe8\xd8\xae\xa8\xfbr\x83\xdcc\x8e\x08q\xc8\x14q)\x82;;\x9a\xc7\xf1\x0b\x9f:\xae\x98\x8e\xab\x19\x0e\x83\xe3\x1b\xa8E\xb5\xb8j\xee<\xce\x86\xac\xaa\xea\xcev5c\xa5\xf9|Z?~6\x02\xdf5\x14\xedU\xd9\xb7|\xf0\x05J\xa5\xe6h\xc7\\Q5\xf5\x8d:=p?\x19\x9f5\xc5\xa4/Ku\xe5\xbaSf\x9e\xda+B\xba\xd9\x07\xdd\xf1\xab\xf2J\x14U\xcd\xeb\x1dt\x87\xfd\xbei{y-\xc0\xe6\xcb\xcbC\xcd\xff\xc3\xd7K\xf9\xbdQ:\x99\xf0hP\xe7\xa1\xb9\x86C/'\x1f=\x9c;>\xf1\xe9\xd3\x80\xa2\x82\x1bV\x0b\xb9\xcc\xad:\xc9\x18\x9c\xeaSd\xbe\x93\x9f\xc8\xcd\xe7\xedC\xc1;0|\xf7\n>\x14\n\xc6\xac\x8a^\x0c\x0bbY\xc3\xeb\x7f\xfcG\xcf2\xf5c\xd3\xc0u\xd3\xc0\xf7prr\x82\xc2\xedE#\x14\xf5#\xfecQ?\x9e\xf0\xac\x7fl\x9b\xdd\xb3\xeb\xa6y\x8e?vr\x82\xaf=\xe55<\xe3&>\x89B_4\xcf\xfe\x81\xdbx\x8e\xb3\x04\x02v\xfe\xe2o\x9b\xdfF\xda\xe6\x9f\x8b\xbbbq\xe3\xc0\xf7\xc2\xb7\xe2\xd6\x17\xb4B\xd9=\xfb\xb1iN6U\xd1u\x81F\x90E\xe2/\xc8\xfa\x18/\xe1\xf9\"\xad34\xcf?E\x9a\xe7\xc3c\x7f\xdb\xd4\x9e\x06\x92%\xf9\xb1i\x9e\x9d\x9c\x9c\xe03\xf1\xd08\xcf\xbc\xbf\x8b\x0e$\x9a-\xb5\xd5\xf8\xcbg\xb2\xd1\xde\xbc=\x7f\xfd\xf1\xec\xc3\xc5\xfb\x8f\xcf\xf1\xd0\x9b\xccJv4\x7ff2;\x7fs\xfd\xf7Hs\xfd\xd4\xe0-%\x9a\xea\xd5\xf7\xf0\x0f\xfb\xab\x93\x1f\x9b\xe6\xdfONN\xfe\x82?X\xd4\x8f/\xb8\xbb\xc6\x9f\xdeK\x07\xe4\x97\xa2\xedn\x8b\x8a7\xa2\xbf\xe0\xbef\xb2s\xf6d[^[\x99~\xaawc\xb6\xa2P\xa2c\x8b\xa7\xfe\xdb\xf7P\x97\x95\xb7\x83\xfa\xcb\x82\xf4\xc4\x0b\xa1\x1c\xb3\xf92\xcc\x83\xda\xd9\x86\xab\xc7\xd1U\xd13\xf6}YU\xfc\x07\x85nv\xac\x1d:d\xcd\x7f\x8a\xb8!/\xf9^\xf4D\xfc\xc0]\xb9\xa7P\x18\xab\n_q\xd4\xc9\x82\x9b\x83\xf8\xean&\xc34^W\x8fz\xdf\xe4lx\x07\xd7\x11\x8a\xeb\x9eIo\x86\xef\xb7\xdd\"\xbf|\xeaf\xa16t\xba\x88r\x07\xc7T\xcf|r\xdd4'WE+*\xf7\xf0\xf2\xf1\xe4\xdf\x9e\xc8\xd6\x92{\x0d|[%\x8a\xf2\x84?\xcb\x97\x17\xe7\xe7\x7f>\x7f\xff\xce\xfd\xeb\xf7\xdf\x7f\xff=\xfe\x1d\xf9\xf3c\x1c@\xd1\x1e\xf80U\x0e\x83\xdc\xab\x1c:\xa6 W7\x87\xaah][\xae \x05\x19\x97\xf9\x17#\xa9M\x8d\xbe\x17\xca\x7f@\xa2\x07\xc6\xb2+!\x06\x9f\xff\x17o\x8e\xcfj\x93;\xb81f\xe3\x9e\xe8!\xff\xca\xe3D\x17\x9b/|\xcc\x8f\x9b\xb5\xeb\xb2b\xf8\xfc\xab\xe7\x87\x0f\xac\xed\x9a\xda;lT\x04G\x90\xac.\xc5\x97\xf1Q\xe0\xc6\x87E\x0cW=\xfb[\xfa\xec\x0f\xe0-\xc5\x13\xd16O^\xc1\x13l\xd4L\xab{\"k\xf4\xe4\x85\xcf\x96\xa8\xcb\xbbb\xc7\xed\xfdOY\xe4\xdfy\x1f\xe6u\xb1\x9e\xa5V\xe8\xecZm\x0c\xa6}B~\xcd\xb2\x83{VU\xdf~\xa9\x9b{\x89G\xb9\x15\xc8J\x85$\xc1;\xf9\xb4\x0b\xbe\x90\x0e\xa8\xd5/\xe5ddd\xcb;Z}\x83\xec\xebE\xb7s3\xf9,\x06\x84\xee\x87Rx\xd8\xc0\xb8\x88\xe1d\x81H\xf8\xcf\xaa\xfb\xba\xf6D6C\xcf\x85g\x82\xf2\xa2\x9a\xc2 +\xe8\xc8\xd9\x9f\xff\xe5\xcf\xcf=\x9d|i\x1f\x99f\xe4\xef&\xa2\x19\xb8\xb9\xefN~\xfb\xddo\xbb'\x9e\xcfn\xfeKR\xce\xf0H\xf11\xb4\x054\xc5M\x91r\xef\x15\xc9l\x12\x06\x1f\xf9e\xeaiq\xc6\xa4\x88\x87\xb6AM\xa9\x91\xcc\xc2o\xdc\x9f\xec\xbaM\x01\"\x13z\x8e\xcd\xa2\x81g2\xd3\x97\x03mE\xfd\x9f\x88XN\xcd\x06\xb6\xad\xbe{\x97\xc2d&\xff\x93\x13ZS\xf8\xb1\x91\xe0\xe4{\x0e5F\"=\xe9$\x81\x7fs\xcfN\x14l\xd0\x85*\x8a\xb8\x99\xf8\xedYYo\xaa\x13\xe8Xu\xfd\xed\x88c\xb4\xbe\xc0\x88\x04\xc5`\x93\xf4\xf2 }\xd66=\x9e\xe5\xc8+\xfd\xe4\x1f\xcb\xae;\xc8X_\x11<\xd1\x19\xf1\xffv\x05,$\x1a\xfe\x93\xf9\x8f\xc9\xa1\x92\xf9\xf7\x9e\xb5\xbb\xce\x0f'\xd3\xa9\x9fw \xe4\xe0\xdf\xc6\x14 \xde\xe4\xc4\xc4\x8d\xc9E\xc7\x8d)\xa5@\x9ep\xd1|\xec\x1cj\xaei\x1d\x14\xdd\x98\x1c<\xdd\x98Rj\x92\x8a\xb1\x1b\x93\x1fm7\xa6\x94\x92x\xdat&0\x0f\xb5e\x81\xf5\xc6\xe4\xc0\xf6\xc6\x94R\x85\x04(\x9fN\xc3z\x91W\xda*\xd6\xb2v\xb6\xbaU_\xf0m\xe9\xf0\xa3\xbc\xd6\xeb\xd6R(\xe8oKw\xae\xb2\x97\xe4\x9bC\x8dP8\xad\xbc]\xd4\x15\xa9\xc2sU\x98\xa6\x19\x87\xaa\xbc\xe3\x1b\xbfrg\xdf\x9b0&\x83d\xda\x88\xc3\x8f\x8a\xf5\xccW\xe1\x8dE/\x1d\xd3\xa4\xc4\x1b\x97\xd7\xd6O b#\xb7-\xd3\xfc\xecg\xb1\x8e)\xd6\xaa\x98\x9d\x04>\x14jo8\x10 s\\\xc7\x14\xa8?D\xa1i\x18\x03vL\x91 \x00\x88M\x04*\x9b\x19\xbc?\xaf=\x8c\x84:&\x9cP;\xa6\x8c\x15K\xa7\x11zM\xb9\xf4\xc28\xf1vLA\n\xee\x982W=\x99\x8c\xe8\xb5\xd6\xbb\xc2\x16!\xaa\xee\x98P\xd2\xaea\x97vT\xe6\x9bY\x81\xd8 s\x98\xbe\xf8\x84b\xb2\x7fu\x12R\xe2\xac\xba\xbe\xc4\xf8d2-\xf0\xdd\x11\xeb\xcen\xefi'\xf6\x16\xb0e\x9b\xaa\x90\x82q\xe2\xce\x0e\xc7\x98zJ\x1b2\xeb\x11*\xc7\x1f\x0c\xf4\xbe\x83\xe8\x7f\x01}s#7\xc1\x03\xd9I\xee+\x14\x9bG!\x9dp\x8bO\xa5\x0e\x82\xde\x83\xa8`k\xd9\x02{PW\xa6\x88\x0f\"\x96\xb3\xb2\xeeN\xe0\\I*M\xcci<\x82\x0d\x19*x\x93\xc8\xde\xadb\xa6\x13\xb3/$\xc0A\x9c\xcb7m\xcb6=l\x8ajs\xa8t\xb8qb\xec\xfa\xc0\xbd\xe3i\x06\x87zl\xcdN\xd4\xbf9\xf4P\xf6\xac\x95\xebCs'\xf6\x07\xc3\x86 \xfex\xcbjY\x15(\xdai\x7f6\xb7\x8d\xd3\\\x04\x1e\xc0lp[wg\xd3\xb2m9\xd0\xcd\n\x93,w\x7f\xdbt\xd3|\x06\xed\xb2i&\xe6g(Gh\x87\xc8l\xfc\x92\xb2\xe8cQ\xc5\x85\x1f2Fo;$\n\xab0\xcde\xd2\xfe'\xea\x8aG\xc5\x8a\xe33\xeb\x15\x1b>\x01\xdb\x8aX\xbc\xe8J\xeaj\x18Y\xbc\xa9\xc5\xdd\xa1\xea\xcb}U\xcaBL\xed\x8b\x07\xf1\x9e=e\x98\x8c\xb1_ \xe2\x14\x1d\xd1h\xe2ZNE\xbcA\xaf\x9dk\x93\x05\xfas8,R\xf2@}\xd3\xca\n\xec\x8bV\xb4\x9c\xa2\xb8(\xe5{>d{\xd1\x05\xa5\xf7\xbag\xad\xbc\xc3V\xc4\xf5\xea\xcf\xca\xd8\xae\x19A{-\x13\xb7\xe4L\x0b\xae\x7f|\xf6\xb9\xfe\xacd\x89\x06\xad};\xc3\xcf\xb7\xc3\xab\x97\xac\xee\xdb\x92u\x9fG\xe7Ml\xe6|\xae4:\x0dN>\x8f\xe5\x0b\xab\x89N\xfa\xc5*z(\x0e\xd5m\x8f\x96/w#J\xdb\xce\xd1\xc6\xf0\x13D\x91\xa6\x06uA\xf4\xca9\xca\xff\x8d\xcf\x98EQ\xad\x9b\xa1\x1c\x8e\xc2\x802m\x94\x08\xf4\x9f\xc4)P)f\xe2\xa1\x81\xcc\xa9`B\x84k\x99\xf1\xcb\xb3=ka_\x94\xed\xcb\xbe-\x9ba[\xef\xf6\x97\x0c5r\x8d\xea\xba\x8c\xad:>3T\xaeo\xf4\x18\xd1\xa5\xe35$]\xe28\xc9~|k\xe2\x13\xf1?\x8b\x98\xcdF\xf2YG\xe2\xaa\xceN\xccQ\x97-\xdb\x1e6\xd3%\x1e\xcd\x13\xd3\x91\xb4,\xe8j\x8f\x93\xab\x1e\xb1*l8\xd0W\xf9\x87\xfdN_\x8bi\x18\x1c\xf0\xd2\xdf\xb2\xfa\x86o\xedE\x0e\xdf8u\xf6]\xa1;\xbd\xd6p:_\x84f\x83\xa6\xa9\xc8sA\xdd\xf4\xear\xb0K;\xce\x8a4\x1c\xf5\xc9I\xf5\xc6k\xa9\x9aFht\x8e\xc0\xb5\xb6\xd8\x88:\xa9\xf5\x83\xcf\xeau\xd3\x7f\xab\xfe)\xc9\xca\xdda\xbf\xaf\x1e\xf5\xe1\"\xffI\x99\xb3{\x81\xa79\x840d\x16\x19\x82\xcbv\xf2.\xfa>ncjg\xea~z7\xa1\xfe\xedgD\xda\x00b\xae{\xcc\xa9Er \xc9\x0c\x84\x0c\xd9\x9b\x8f\x88\x1a\x02,\xaf\xc3<\xa9\x84\x90!\xbb\x0e\xf8I@J\xc1\xe7 )8f\x9c\xfa/\x16T\xb0\xec\x95\x0e#s\xb9\xc6\x82m\xb0v\x80\x0fh\xc3;\xd2\x0b0w\x1092\x0c\x10\xfev\x98\x1cC\xf0\x95\xf07\x9a-\xcd`\xd9Y\xa2\xcf`\x99Rj\x0dv7'I6@\xb0\xc2y\xa4\x1b\x0c\x83\x13\x00\xeaB%\x07\xc3\xd2D\xd3\xc1W!\xcf\x92\x02\x91{\xfb\x8c\xfa\x05n~\x0d\xad_M;\xdaH\xbf\x9e\x03Y\xc9\x9cEZ\xd4?[P\xf2L>\x99\xc7 p\xe2\xc12a\x9fW&\xe7#\x9b/\xcc\x92\xee\x91 \x8c\xa6\xf6@\x94d\x8ax\x86q\x0d\x9fxC\xcbd\x95F7\xb6\xfa\xd7x_\xc6\x18\x99\xef\x9b\xe6\x8b\xc7\xd8\xbe*6\x0e\x17\x13$\xa2e_1\x91\x8f\xefL=\xa1\xce\xa1su\xab\xdeV\xc6\xbaz\x87\xba|\x18!Ic\xdd\xc6\xc7\xb1Z(\xe8\xcd\xa5\xc7\x93\x94)Z\x0b\xdaw\xb1\xf2\x9a,\xd3\xca\x15W\x8fT\x92J\xbc=T\xf2\x08\x16\xb7\xa7\xb6\x06P\xf4\x91Jf\xac\\\xa0\xec}C-Q\xbc\xb9\x90\xd9\xffm\xdd\xb7\x13\xdc\xe8\xf8\x89\xe5\x98\x95\x9co\xd7V\xcb*vW\xd4=_\x81\x8am\xd1\x17\xc1\xad\x94>\xe4)\xe4\xddS\xf8\xf1\x95z\x88\xea\xd6\"\xb5\x91\xa7\xb2\xd2\x0d\x14\x0e_W\xd67\x95\xb1\x87zj\\\xf001\xc6\xfff\xed\xc4\xe49\xb0\xb2`\x1e\x15\xf3f\xe2C\xe2\xdb\xa6\xdd2\xee\x94W\xc6\xa1\xd5\xeaQ\xae\x1e\xe5\xf1=J\xbb\xef/p-\x83\xa6\xe6\xf8\x98\x03\xf4'\xd9\xb1\x1c\x06\x99\xedN\x92\xba|X+\xcb\xdbS\xc2\xd3\xe6L\x95\xacQ\x15\xcb\xb2\x17\xd3\xc8\n+dy\x9d)\xbf#\xd5{\xb5\xb1\x82KT|1\xc9\xac\x8a\x15\xd6\xc4\xca\xab\x88\x95U\x0f+\xa8\x86\xd5/\xd3\xc2\xca\xa9\x84\x15\xd7\xc1\x9a\xad\x82\x95S\x03\xab\x8f+`\xe5\xd4\xbf\x8a\xaa_e\xd6\xbe\n*_\xcd\xd1\xbd\nk\\eP\xb8\"\xe9[\xa5iY-T\xb2\xca\xabc\xe5;\xa7\xc8\xaaa\x95_\xc1*\xab~\x15M\xbd*\xabvUH\xb9*\xb3n\x95O\xb5\xaa\xa7jV\xcdU\xac\x92\xeaT\x88A\\\xafj\x81Z\x95G\xab*\xb8\xc4\x07u\xaa\xe2\xeb\x7f>\x8d\xaa\x90BU\xb8\x1cY\xd5\xa9B\xdaT\x99\x94\xa9\x96\xe9R!# [\xca\xf3jR\xf5\xa8\"\xd5R=\xaa\xa8\xe0R@\x8b\x8a\xa4D\x85\x0b\xd3\xa4\xa9P\xe16\x1cQ\x8a\xc5\xfaS\xd4\xc6\xa0hO\x85\xebM\xd2\x9dJT\x9drE:2(NE\xf5\xa6\xc2jS1\xad)o+\xa5\xe8LQT\xa60\x8d\xa9\x85\nSD}\xa9y\xeaR\x1e='\x8a\xb2TF])O)\x9c\x9e\xb6HQ\nS\x90\xca\xa8\x1f\x85\xabG-\xd2\x8e\xc2\xb4\xa2r+E\x05u\xa20\x01\x1dL#*\x9fBTV}\xa8\xfc\xeaPtm(\x922\x94\x8acPt\xa1\xd4\xa3QU(T\x13\n\xcf\x9d\xaa\xf5\x13\xd7\x83JP\x83\"jA9\xd5\xc8\xad\x03\x95S\x05\n\xd5\x80\xca\xab\x00\x95W\xffiY\x7f i?Q\x94\x9f\xcce\x05S}\x92\xbb\x19L\xd5)\xa4\xf8\x14\xdeAdV{\xf2j=aJOS\xd4b&\x9d'\xef\x96\x0f\xd3x\xa2*<\x91\xf4\x9dh\xeaNQm\xa7\x04e'L\xd7\xc9[\xffIk\xe7\xd1t\x1a\xb1#\xf3/\xc2tz\xa4mt\x89\x96\x93AL\xfe\x06\xcf\xdf_0\xe3\x1f\xcbT\x9c\xfa\xf4C\x0b\xaf~S0\xa01)~&\xed&\xbfr\x13\xbd(h\xf8d\xbef\xd3\x94\xe6\xa9\x93O\xb1\xc9\xab\xd7D/\xff\\\xad\xa6\xb8R\x13\xbd\x0ch\x1b\xe6\xd3h\xf2(4y\xf5\x99\xe8\x05O\xd6f\n+3y3\xf6\xc3\x9c\xc2\xed\x98Y\x91\xc9^4\xbdzL!5\xa6h%q\\\x13\xb5\xa2\x0bU\x98\xc6*F5\x98|\nL6\xf2j\xa6\xfe\xd2\x8c\x995\xae\xbc\x14\x1fvyU\x97\x125\x97\xbcu\x86(\x9e\xd0\xaf\xcc\x13\x1c\xce@j\x14\xc8\xae\xb3\x14R\x1c\nk,e\xaaN6u%CY(Y[\x89\xa4\xac\x94\xb1\xc2\xc9\x9aJ\x9e\xf3-\x98\xd6\x9b\xaa\xa8\x14\xd4S\nV3\x8e\xf9\x9c4\xc2\x1c\xc9$L\x1e)*\x8e4\xd3\x0d^\"\x8b$\xfej\xd9\x1b\xcd\x8c\xa5\xf7\x97 \xb7 RV9$\\\x0c)\xa3\x14\x92+\x84\x94O\x06\xc9\xdcg\x999\xe4\x94@B\x05\x90\xae\xf2\xca\x1f!\xe2G\xb9\xa5\x8f\xd2\x84\x8f<\x94\x13\x07\x8dG\x80\x04\xba//\xc2\x01\xa63L\xfcJ?y\x89%a\xc8`p\xc2\x8d\xad(3\x81\x83^;\xeb\xf5\x9aD a\x0cJ\x98\x1bL\x98\x19N\xb8^\xaf9I9\xa1\x85$pa^x!\x01`\x98\x1db\xb8^\xaf)S\x12$q1(17,q\xbd^\xd3L4\x80bf\x88\xe2z\xbd\xe6z\xbd\xe6z\xbd\xe6z\xbdf\x1c\xceH\xc0\xf0\xad\xd7kR\x1a\x87\x02q\x8c\xb7\x02 \xe6\x98\x0ct\\\xaf\xd7T\x89\x02|\\\xaf\xd7\\\x0e\x83\\\xaf\xd7L\x86H\xbaE^\xaf\xd7\xcc\x05\x9f<\x06\x802\x05BI\x04Q&\xc1(\xe9@\xca\xf5z\xcd9\xb0\xca\xbc\xc0\xca\xf5z\xcd\x10\xc4\x92\x06\xb2\\\xaf\xd7<\n\xec2\xb8m]\xaf\xd7\xb4\xadg\x87b\xba\xb8\xc9\xb9\xe5 j\x84-\x87d\x82\x07\x94 ~X\xa6\x83(\xcb\x04\xcc\x9c} \xb4^\xafI\x84j\xa2\xe6\xd6\xeb5\xb3B7\xd7\xeb5\xc7\x94\x19\xcc\x99\x00\xe7\\\xaf\xd74R&x\xe7\xec\xf99\x0e\xf2\x8c\xb7*fg\x19\xd03\x19\xea\x19\x01{\xc6\xe0\x9e\xeb\xf5\x9aK+\x96\x0d\x00\xba\x0c\x02J\x04\x81f\xafz2\x14\xd4k\xad_\xaf\xd7\x14i\xbd^3\x0b\x9a43\x9et\xbd^3\x01[\xfa_\xefzM\xb0{\xf7\x88\xce\x9cL\x8b\x93V]e\xf7W\x91\xd4\xbf\xb6Hj\x00\x89L\x93FE\x0c$\x00\xa1\xa7\xf7\xb8&c\xa0o\xcb\xae\xf7\x8c\x0e\xfe\xd3d\\\x18\xd7i\x8aQ'\xf1\x8d\xf2\x0e[\xb5\xd1\x9b5@\xe4]\xb9XoJ\"\x9d)\xc8\x97\xeb\xc1\xa8^vUt\xe5F\xde\xb2+\xca\xef>\x17\xda\x07\x84w\x01\xc2*\xee0F\xdd\xc5\xc0\xf8\x90\xa9\xd8\xef\x8fc:\xe6\xd5\x00\xbc\xd6Xo\xd8\x14{yI\x8c\xf4\xc4\xf4\x9f\xdbC\xa5\xae\x8c\xdd\xb7\xcd\x86u\x9d\xdco\x89\xf6@\xec\xa9\xf9T\xfc\xbc\xb9-\xca\xfa\x05v\x94Q\xd6\x9b\xea \xcff\xaa\xcax\x98\xbb\x98\x05\xaf\xefa#\xcb\xa2\x1c\x11U\n/X\xbb\x18\x11\x93O\x91\x8b\x90d\x08\x9fA\xdf\x16u'\x8fnv\xc5\xe6\xb6\xac\x1d\xa0\x95(\xc5e\xe9\x1cd\x04?\x85\xef^\x81\xe0\xd7\x0b\xc5g\x8e@\xdb\x12\x07\x93\xa2\xa1\xf1\xda\xc9\x11\xb4o\xd9\xdd\x91\x06\xd0m\xd1\xdd.\xec\xe4\x1e\xa8\xde\xbeh\xfb\xcb\x8e\xf5\x97\xd84\xa3S$\x04\x10+=\xe0K\xe2\xe4g\x91\x83}\xd1\xb1\x9d\xe2\xd7H\x84\x9a\n(\xcd\x05\xf1&\x1b>\xf8\x87\xa2\xed;\xd6\xff^\xb4\x1c\xd6e\xc4\x96\xac\xbf\xc4\x8bD\xea\x91h\x11T\xf6\xdc\xac\x1c\xd7\xb2\xd3\xf1\xe1o=\xcb\xff\x949\xfb\xd1\xbb\xccl\xd8\xae\x978o\x14\x8e\xfb~\x0f\xcd\xa1\xdf\x1f\xfa\xf1o\xe3X\xb3\xac\x08w\xefhe\x1c\xc9=y\xed\x16\xfb}f\x8b\xa2\xff)\x7f0\xb3i\xc6wK\xf5\x86e6;|\xffq\xf9D\xa6Q>\xd34\x1d\x9b{\xdf\xb07\xff\xc9b/G\xf4\xc4\xbb\x1b\x96U\xb9\x9b\xba`\xf5\x96\xb5\xbb\xb2\xee\xd5\xe0\x93\xd3\xa7\xb9\"\xde\x15U\xc7P\xe5\x08\xf7\xe6\x1e\xf4\xde\x9e\xc0\xac\x1b\x9aoc|:\x88\xb5\x11\xc5\xf3\xc9\xc7\xad\x83D~\x1d\x108v\x10_\xb3b+V\x1f\xe0\xdbA\xbc\x05\x81\xd8\x8a\xb0\x80{\xe75\xd8O@\xe4\x1e\x0c\xe7L\x0e\x9e\xd7X\x80\x9b\x07s\xf9y^k\xa2P\x11\x8e\x1e@\x06\x9e\x1e\xcc\xe7\xeay\xed\x15$\xbe\x1e,\xe3\xec\xc1\\\xde\x9e\xbf\xd8U%\xda+\xca\xdd\x83\x99\xfc=\xaf1\xc1\xda!p\xf8`\x01\x8f\xcfo\x90\xf51.\x1f\xe4\xe4\xf3A\x9c\xd3\x07\xb9x}\xb0\x88\xdb\x07\xe9\xfc>\xc8\xc1\xf1\x83\x05<\xbf\xc0\xfc\xe4\xd9\x1d\xeb\x94\x99\xef\x07G\xe2\xfcA~\xde\x1f$p\xff`6\xff/8\x87\x879\x800\x8b\x07\xe855\xf0\x03\x03\\@P.\x00\x91\x0f\x08\xb99\x81\x10\xe5\x05\xc2Rn \x84\xf8\x81@s\x81\xa2;i\xba\x97\x94\x93/\x08Q\xce \x10K6\x8f;\x88\x9a\xd2kD\x98?\x0899\x84\xb0\x8cG\x88\xdaS\x0b\xbd\xdf\xb1Y\xc0'D\xed\xf1\xf2\xf4\x1eN!d\xe1\x15\x02\x8d>\x071~!\xd09\x86\x10\"\x1e\xcd\xe0\x1aB\xc4\x9e\x87W\x91\x81w\x08\xc9\x8dG\xe3\x1f\x02\xb1\x85\x88G\xe4j\x02\x99\xaf \x0eg\x13\xbc\xbcM\x18\xf6\xc68;\x13\xa2\xfcM \xee>g\xf38Qk\x1a\x9f\xe8\xe7r\x82\x97\xcf v\x89\xf3q:!\x1ej\xc0\xb9\x9d\x90\xc4\xef\xc4\x9e\xf6p<}\x8fb\x10&\x08\x85\x07\xc6\xa3\x88\xe3\xd2\xad\x9c|\xf4\xe8\xbdb\x9b\xdb\x7f\xfa\xed\xb7\x9a35e^\x85M\xb9\x0e\xf4\xb0\"]v\xed\xe6\xc85B\xf3r\x0f\x0c'k\x8a\xa4H\xa1\xe64\x87L\xb7@\xa8r\xdb\xae\xffj\x953\xf2\nW\xce\xf3\xad\xba^\xab\xad\xc4k\x88.\xa62a\xc3iL(\xff\xd0|q\x11\xf7[F\xeb\x9a:\x10\x17\x97\x89\x10B\x88\xc7\xc8e\xa2|$\x99\xac\xd2\xc1T\xd4C\xfeM\xab3\x86\x82,\x93\x8e\xda7\xcd\x17\xd8W\xc5\x06E\x96\x83\x8c\x8f\xee+&2\x0eEU\x12\x1b%\x16YIj\x98i '\xedr\xa8\xcb\x871\\\x1e\xed\xc6\xb6A_\xa3\xa8\xb8\xf0\xe5UQ\x15\xf5fi\xa3\xd0\xabj\xe5\x8b\xc6\xaa\xf5o\xf7\xb7,T\xc9\xe9|\xd5\x17m\x8f\xc5\x94d\x92[Q>E|\xb5\x9a\x8eY\xba\xee\x9f1\xd9|;\xccQQ[r\x00\xc9]\xb3Yy\xdfQ\x1d\xa5\xa4\xa6k\xf1\xb6\xee[\xe3\xe8v\xda\xc0r^\xf2#\x03A\xf0\x81\xee\x8a\xba\xe7NM\xb1-\xfa\x02+\xd7\xa4Tz7P\xb42\x888\xc9P\xfd\x98\x1aI3+4\xc5\x1dVe\xd7KN\xf9\xbeh\xfbrs\xa8\n#*\x84\x10\xa6\xc7\xe2\xd47\xc29Db\x19B'abQ\x91\x8b'\x07XV\x96\xc3\xc7w\xccy\xceX<\xcb\x8d\x7f\xa9\xf1,3\xc1%&r\x9d\xbc\xe9E\xf2\xf2x\xf0\x04\xeb*\xb6\xaeb\xeb*\xb6\xaeb^[\x7f\x0f\xabX\xb0\xbf\x05\xbf@\xbc>N]\xcc\xa0\x02\xfb\xf5P\xde\x15\x15\xab{\xb9\xac8\x0f#\x06\xd9\xc3\x86\xed{ \x83.Q \x87\x91U9\xf4Z\x0b\xb3\xac>\x9d\x9c\xd7D8\x1a96\x01\xe8\x0ee/bm\x02:P\x95\x1e\xc9\x88!\x08a\xb6m\xa8e\xccjR\x9b\xc3\xaa\xf7tyW\x0b\xea\xb4p\x83\xf6FJ+L\xea<5\x87\xd4\xdf\xa9\xf9\xaa\x0d\xbaj\x83\x1eC\x1btzj\x86\x06\x10cA\xca\xc9K\xcaZ\xf2\x99\xd9'}\x9c\xf1\xc6\x19\xc0\xe4\x00\xa6<\x12\xb1\x03\x96\xa4~\x1d \x1az\xfb\xc3\xa4-\xe7E\x04\xf1\xe8\xdf\x18\xaeZP \xc7\x08\xad@\xe8\xe6\"p,t\\\xf5,\x82\x97\x1f\xf1eb\x9e}|\xadu\xbd\xf9\x12\xf7\xe3\x8dc9\xee\xaa\xa3\xa6<\xee;\xc1q'\xd6\x93\x0c\xd1\xb4=\xf1\x12s\xc2\xc7\x1a\x85\xfcl\x82\x87\x9d!\x88\x1b\xf2\xa7\xd5\x11\x99z\xa4\x92j\x1d\xdbC%\xd1\x19\x98\xb5\x96mXy\xc7\xa0\xe8\x83U\xcbT\xa5@\x99\xfb\x86V\x96X\x13!\x93\xa8\xe5\xe5\x1a\x18\xe1\xa0\x8f\x1b\xf1n\x83\xd1\x19\xf4d\xda\x89\xd2LLL\xfc\x00\xa4\x16\xd0\xf5\x8d\x00 U\x95\x8c\xccte}S13*cd+C0\xa3A\xde\x8b\x87W\x0c\x04N\xcd\xdb\x83\xf7\xf3o\x9bv\xcbZ\xb6\x15\xa1\x1fYD\xbcx\xa6\x80\xb6\xe5b\x86VH\xa4F\xca \xfdlo\xc0d\xbdqWh\xf2\ni\x84f\xbe\xd2\x01\xdf\x98c\xa6\xe5 \xb2R\xcb\x942.\xffF\x8e\xf7\x8e[\x9by\x9e@\xd8\x94[\x9b<\x14\xb3 \x83\xcc\xf4\x90\xc4D \x7fT\xd3\xa5\x13\x01\x89\xb5\x851\xa5\x0cL\xdf\x11\xfe\xa1`\x93rR\xbee\x95\x88=\x145\x14\x1b\xe1|\xbb\x15>\xe3\x8e\x80\xbbsm\xeek\x19\xb7hjc\x8eR\x02XB\x02\xae\xd9\x94\xc5\x80\xfc\x13>\x97\x01\xa1s\xed]sKn>\x9eO\xe1Y\xb0f\x0f8\x07g#S\xf0\x9b\xca\xe8O\xe2k\xb1\xaf\xf7Z\"st\xc4F|\xa8\x11<9\x02vDC\xf3\xef\xb6\x93\x9f\xcdm\xb9w\xef/\xde\xbe\x12\"\n*L%\xd5\x08J\xb1D\x9e\xd5\xda\xa3\x1bD\xbad\x1f\xf1\xd0\xcc\xe5\x04\xeef2\xf0\xd7\x0c\xe0\xce\xd5#\xdc47\x8d`DS\xa3\x1a\xf8\x823\x8di\xbc\xf1\xc53&\x96\xc6\x00\xce7X\x8fI\x8ec\xe8\xd8\x85ik\x0d]\xac\xa1\x8bc\x85.\xec\xb6\x8fzF^\xcf\xcc4\xf0\x12\xb3`\xb8fT\xcf,\xd9\x1d\x1b\xe6\xefY1\x8b\xb0\xac4-B\xe0|\xf2\x99\"\xd2\xa3`\xb4e/&\x1f\x1d\x16\x8e\xf6.Y\xfe\x05\xab\xf7\xcaD\x07\xd7\xab\xd8\xd23_\x14\xda\xe3H\x85\xe5\xa0\xe7\x08A\xfb\x05\x9fgI=\x0b\xf3\x88\xb1\xa0\xc8s\xbfL\xdey\xa6\xb03*'\x10\x97t\x9e-\xe6Z\xcdBb\x8d[d\x97h\x93\x9fj\x13!\xdb\xe0t\x1b\x9cp\x93\x93r\x93\x99ts\x0c\xdaM\n\xf1\x86H\xbdI\"\xdf\xd0\xe97\x1e\x02\x8e\x8frA']\xc4I8I4\x1c2\x11\x07\xadPn2N^:\x8e\x87\x90\x93\x9b\x92\x93\x9b\x94\xb3\xbc\x8f\x90\x8894j\xce\x94\x9c\x83\xd3s\xf4\x1e\x0c#\xe1\x84):\xf1\x1dOf\x9aN\x80\xa8\x83Su\xac\x12\xe6\"\xeb\x04\xb7\xad\x18a\x87N\xd9!\x92v\xa8\xb4\x1d\x02q\x07R\xa8;8y\x87~v\x92\x87\xc0\x03\x11\n\x0f\xbdr\x8c\xa9\xa7\\\xfeQ\xb8\x1c\xb99H\x99YH>\x1eRV&\x12\xc6E\xca\xc9F\x02/\x1f)/#\xc9\xc3I\xca\xceJByI\xf9\x99I\x04n\x12\xd8\xbd{Dg\x1a'\xd7U%j\xfa\xeb\x81\xb5\xdc\xd4\xf8\x8c6\xb2\xe2\xa0W\x1ct&\x1c\xb4]P\x0f\xdc\x98\xcc\x9b\x13\xa8fe+F\x9f3\xef\x04\x94M\xeet>\xef\xedD\x18\xd0\x18\xfdP\xd6\xf6s\x0e!\xcd%\xa0\x8d\xf4\xb0\xae\xdd\xcc)\xc8\xa4c\xa0\xd6\xdc8\xea\xf4r_\x89\xf0\xd5\x90f\xc3\x9az\xdf-\xea\xb6\xeb3\x16\xd5\xb0\x16)*~E\xb9.\xb9]^\x87\x1b\xd7\x1f\x01\xac\x1ea\xbf\x11v\xd8sB\nI\x97}\xbbWz;\xf6\x10\xa2[\x84\xe2F\xa8\xd8\xdc\xd0A\xa6\x0b\xbb}$\xac\x08\xebm\x81W\x9bz\xfdv\xb8\xfc\xe8\xa5\xdb\xfe\xab\xb6\x17\x94;\xf92m\xeb\xcal\xc7`\xe0\n\xedPY\xe6\\\x97=0\xdc&\x96\\\xb6\xdb$_\x9b\xe761>\xe1\xb7\xe1\xc5\x9d\xdc\xe7<9`\xaf\xca\xae\x97\x9c\xb6}\xd1\xf6%w\xf9\xda \xafm\xccj\xf8L\x13R\x9b8T\x9b\xbc\xad\xe6\xe7I\x14\xcc2?|\xa2i\xe0\x86\xb0X\x8af&\xaf\x98\xde\xc9\x0e\xed|\xf8\x047\x0d\xc3-\x9b\xc7\xa6\xf3\x96w\xc6\n\x96\xce\x9d\xa5\xec@\xe1\x8c\xc9\x08\x99|\xbc\xd3N|\xdd\\4\xaf\xd8\xf3\x086\x83\xc4\x8b0\x19\xa9K\xe7\x0b\xb82\xfddw\xa6\x98\xe4\xbchR\x98L\x04\xd4\xe1\x90L\x8c3\x8bq\xc9\xc6\x11\x85\xbe\x8e\x9b\x80\x98+\x11\xdd:\xa4\n\x93-\x1cz\x965\xc7\x81\x08\xba\x0f\xd1\xca\x10\x04\xc8\xb2\x0dL\x88\xf9\x04\xde\xd2\x86\x1bx\xd1\xa8\xb5l!\xbe\x80\xcf\x13\x98Y\xda\xa5c\xda2\xe7\xf5\x00\xfc\xa5X4\xd0\x0d;\xf6\xda\x1f\x9fp\xe3\x8b\xfcd^\x00\xe76\xc4\x02)\xbcq-\xa22X\x0eQ\xa31@\xb3\xf8*\xc4a\n2nA$Lt\x8b\xe6\xb8Y\xb3\xdb\xe0\x04-\xb9?\xce12s\xd7\x0d\xf1\x9d7\xbdP\xceX\x9a\xbf\x0b\xb7\x0c\xf9v\xb6\x10\xdf\x8dC\x8e\xe2/\xdd\x99C\xa4\x0e\xeb%\xff3\x97`\xd4\x9c\xeb\x11\x1bY\xc5\x05k\x88\x15^zl5o\xdd\x8e\x98r+L\xd0\xb6\x89T\x98R\x99\xd45\x1e5\x12\xf2\xd6\xc7\xe4\xdf\xf9C\x9e\xba\xcc\xf5\x00\xfc][\x1e^\xf8\"\x01@(W.\x9f@&\\\x03gfd\xc0y\xd5\xeb\xcc\xa4E\x08\x0c#f\xac\xc0\x95\xbeY\x16)0\x0c9`\x8f\xaf\x128\x0dm\x9a\x82\x06CFa\x9d\xdb\xe7Lu\xeb\xdc\x8e\xa4un\xff\xcf?\xb7\xa7\xc5\xf8\x93b\xd3I\xbb\xc1\x89)\xeb\xc2\xfc\xc9o\x19v\x86S{\x93]\xa2L\xd6\x8d\xf9\xf1\xdd/\xb5\xaaV\xcdt\xefQ\xcb\x89\xb5\xf9]P\xc3\x19{_D5\x8b\xbc\xf5\x0d\xec\\\xe3\x81\xd3\\;\xd6qS6\xa3\x10\xce\xcb\xb4B\xfcu\x1c\x83\xafp\xa2:O$\xf4\xafxJ\x9aI\xf6\xf3\xafs\xf4\x99&\xefI\x90\xd1\\X\xfc\x852\x9e\xa1\xa6\x98-\xdd\x99\xe5\x183.\xd79y}@I-\x95\xe8T{\x13i,]\x8f\x93>e\xff\x8d\x9dV\xce\x996\xbe\xca!e\xf2\xf4\xb0\xe0pr2\x02fO\x03\xc6\xb03\xcc\xb9\x05\x9dQ\xc0\xd9\xc3\x1d\xaff\xb6!N8\x9a\x1c\xb0p\xe4>\xef\xd7\xce\x8c7\xd4\xe4K\xceT\xca\xb4\x941\x0d\x83\x1e\x8dL\xbf:&\xea6\xe0NC\x8fjaz\xd7\x83\xf0b\x96Q\xf9\xd2\xafy\x99O\xed2\x9b\xce\xa5W\xe1\xb2\x9f\xafm\x99K\xd52\xacg9K\xc9r\xb6\x86\xa5\xa8\xaf\xbd3\xf6\xaaW\xce\xd6\xadD\xa9;\x1e\xc5\xca%Z\x95B\x97\xd2\xae\x0d\"\xa72G\x9f\xd2\xafE\xb9P\x85\x92\xa4?I\xd7\x9a\\\xa02\xb9@_\x12\x9902\xaaH\xe6\xd5\x8f\xcc\xa6\x1c\x19\xd7\x8c\xcc\xa6\x16\xe9\xd3\x89\\\xa2\x10\x89\xaaA\xf6\x14\x1d\xc8\xb9\n\x90^\xb5\xc7\x99:\x8f\x88\xc2\xa3w\xa1\xf4\xf2,\xc2+\xe8L%\xc7Q\xb5\x11k\xdfo\xe2y/\xd3m\x94:\x8d\x869W\xb11\x83V\xe32\x95F\xab\x97\xdb\x8b\xe1BeF\xd5\xd0\xa6\xc5%\x1a\x8cA\x81A\x8f\xeebTq\xd1\x15_\xa3\xab,\xba\xef\xfe\x05\xab\xeb,MEJec:\x8a\xfe\xbaE\xb5\x13\x13T\x13\xa7\x02S\x0b\x95\x12\x83\x1a\x89~u\xc4\x90.\"\xda\nT-\xc4\x98\n\xa2\xad\x7f\xb8@\xf9\x90\xa0y\x98\xaev\x88h\x0b\xc6\x14\x0e3i\x1b\"9Oz\xca\"%C[\xb9p\x89f!\xa2Q\xb8H\x9d\xd0V#\xcc\xa9C\xe8U \xb4e\xd9l\xd5\xc1\xfd\xbf\xf9_7\xaa\xf9\x17S\xfb\xd3\xd3\xb7\xad\xf0'}p[\xbd\xcf\xa7\xea\xe7\xf7\x813*\xf9\xa1\x1a~\xb6z\xdf\xa4$9t\xfb\xd0\xcd\x88\xad\xd5GQ\xe9\x8b\xea\xf3\xc5\x95\xf9\x82\x9a|D5>[\x87\x0f\xad\xdf\xa4\x15\x97k\xef\x8d\x87\xce\xb6\xea^<\xf7Io\xb2\x0d\x8dQ\xe04\x8d\xbd\xc1N7\x16q\xcc\x13/\x88\xf1\x8fI\xf0\xd9\xfc{TQ\xaf\xa7\x07\x91Q\xfd<\xef\xd6xR\xd4\x0c\x9ay\xb8Z\x1e-{\x97z2[\x1b\x0f,\xfc\x08\xa0\xaax\xa8\x1e\x1e\xad\xacs4\xf0\xc2\xeaw\xb4|gJ\xdba2v\xa8\x80\x1d\xad\x14I\xa2u~\xb9:43\xc2\x01\xe6\xa4\xa3d\x94\xa5\xb3W\x16T\x90\xce'E\x17\xacL\xe4\xe0\xd3S\xa1>Qrn\xac\x80a.(6\x87\xc9\xcc\xd9G\xb23\x04\xe6\x12\xa6\xab\xb0\x9c\\x~X !'\xc2\x8e\x969\x9ax\x1cZ7\x08\x82yqY1\xefP\x83h\xc5!\xab0\x9cO!\xcc/\x06\xb7\xb0\xe8\xe9\xd2oh\xcf\xd6)M\xf4-*\xf7\x96\xa1r\xc9\xe2nH\xd8\x1f\xa6\xc2v\x14Y7\xaf\xa0\x9b\xb7J D\xd59:m\xb6&[P\x8d-\xd1\xa7[\xa2\xbd&\xfe\xfa\x8dY\xd1)\xfa\x17\xcf5\xa7\xd2\xdar\x8d5}\x0e\xa7\x0c\x8e\x87\xd6Ku\xd5,-\xb5\x85*j\xa3\xd3\xaf\xec\x8d\xfai\x8b\x95\xd3\x94Z\x9427j\xa6eTK\xb3t\xd2r*\xa4E\xb4\xd1\x14\x96\x86\x17\xfe\xa4\xb8\xda\x94\x03\x9a\xe6\xf4\x87\xd7g\xbf\xc8x\xc1\xcf\xcd\x0d\x19R\xb3\xebn.\xcbz\xcb\x1e\xec\x11W\xd6=\xbba\xe3\xc4\x8a9`\x95\xce\x08\xf0\x81\xca\xeeX\xdd\x1f\x19P+\x1e\x9f\xfc%0\xb1\x15}\xdf\x96W\x07D\x9f\x16+\x9aL(33\xb0\xe0CT%\x16\xb9&W\xa6\xe0\x1a\x13\xb8\xben\xf1\xeat\xaa\xdb\xc5\xdc8\x0c\x8d\x05\xf7m\xb1\xdf\xf3)\xec\x96)0\xe6\x17\xf6(&%Q$\xc4`a\xab.\xca$\x0b\xd8AYw=+\xb6B\xd0\xad\xb8\x17'\xb0\xfe+\xd7-\xbd\xbbsa\xe3-\xefZCiY\x0d\xf2\x0f\x1a\x916)\xb0\x16\n\x1c\xbf\xfe\xc4\xa0\xc6 }a\x8f/e\xd4y_\x94m'C\x83|\xae\xa2\x95\xda_fQ4S\xb8\x10\xba\xaa\xdc\x88\x05\xde,\xb5\xca\xf1\x9e\x17\x99\xed\xca^\xcc>\x07\x11\xde\xed\x9a\xc9\x1a\xcc\x1e\xd8\xe6\x10[\x97\xa6\x13\x82\xb18u}{\xd8\x88\x9d\xb1*\x91plk\x10\xd3\x00w\x0f\x1f\xc4\xbb\xd6\x8d\x7fUs\x13\x9e\x7ft\xe3\x92\xa7\x1e\x04\x0f7\xe9\xc0Vww\x9e\xc0\x1b|YW6\x14>c_\xdd\xdb\x12?\x15\xddY}\xdd\x90\xdb\xe1\xa6\xe8.\xef\x8b\xbaw\x03\xa6\x9em\xe3!\xb0 \xfe\xa9\xe8\xfe(li\xafG;\x97\x87\xba\xec\xc5q\xf8}\xd3~\x81{\x05\xe4\x91\xabm\xff \xce\xe5Y\xcbs81\x8a\xc5\xb7Cy\n\xf5\xa9\x1b\x8b4.\xb67\xdci\xdd\xf4\x12\x98\xb6ij\x85\x87\xc2\x0c\xf0&\x1d\xbd\xe6\x87q\x0c\x08#\np\x16\xfc.\x1f\x85gD\xfe,\xdb\xa2/\x88u\x9f H\xfc\xb3\xed\x9b\xa2/\x04\xee\xab~\x14\xd6\xa1e\xfd\xa1\xadu\x88ZG\xfbE\xa0\xa1\xdeV\xac5\x06:\x9c\xf5\xf0\xcb\xa7\xf3\x0b\xc3\xdc\x144S\xb1\xfa\xa6\xbf\x85}\xcb\xae\xcb\x07\x89D\x15Pt\xc19b|;\xce\x87\x04\xcfUf&\xdd\x0c\x86\xdc\xeb9d:Ln\xb1u\xde\xaa4\x9fn\xa6\xac\xe0\xe6\x06\xcaZ\xb6\x16\xffb\xf1\xea*\xc3\xab\x03\x91\xd5\x81\x08`\x9ed\x9a\xeba@\xdc\xb4\xe5d\x9aI\x9a\xc6\xefv\x92\xc9wR\xa4S\xdc\xc3\x11\x0b\xed\xb86\x94\xddH\xe3\xf8\xc2\x1e\xbf\x1d\xd7}\xbe\x91\xee\x9aMY\x8c;\x0c\xacL\xa2gz]\x16\xab\x08r\x95\x17\x13n\x07\xc5\x88\xa8\x84-\xbbc\x15\xff\xd2\"\xfeT\xf4}\xb1\xb95\x8f\xa3\x8dA3\xed\xb3\x16`Cs\x18\x7f`7e\xfdC\xd5l\xbe\xbc\x18\xfe\xf6\xb6\xdeZ\x7fy}\xcb6_.\x1e\xf8\xaa\x87Zy\xc3\xaa\xf2\x8e\xb5\x17\x0f\x16 \xe6\xe7\xa2g|C\xd6\x16uW(\xfc\xd5\xaex\xe4\xdb\x1b\xad\xc1|\xe8\x041\xe4\x96uL\x0d^\x8f\x83\xf4\xbb\xac\x0e\x92aK\xcfg\xc6\x9f\xfc3\xcc\xa4Hr}0\xe8%r\xdf\xab[\xe5G\xf1%\x84\xab`5dp\xd51\xdcU\xf2\xd23\x9d\x92\x90\x91\x87MC\xc7\x98\x1b\x91\x89\xc6;\x0f\xa0s\x87\xe7\xe9\x90\x7f\x9f\xcd\x81\x93)\xe6\xc6\xf9\n\x93q\x9b\xb1x\x83\xe1\xed\\\x17\x0f\xc9RW\x0bN[\x94\x06\xf6\xc5-\x83+>\xa3([\xba\xd3>\xdc\x16\xddm\x8a\x9f\xc0\x0d\x19\x93 \xf0\xf7\xc7#\x88-\xeb\xf6E\x94\x0c\xa5\xca\xf4\xae\xd8\xc9\xc7\x87C\x8f\xd7\xcd\x96\x19\xb6l3\x94\xf0\x86;?H\xa28\xb7\xa7\xcbI\xf0\x12'F\x9e\xaaYF|\xdb\x17\x1a\xfc\xf7T=\xdc\x16\xf7\x97\x89\xce\xd6d\xf4\xf0\x16m\x0e\xfd\xfe0\xb0b\x8c\xd5\xe6i\xc7\x1d\xb1\x1b\xd6\xc23\xde\xbb\xa4\xd1\xe7'\xf0\x8b\x98\xc2\x0d+uS\x7f\xbbe=kwe]v}\xb91\xfc\xc0#O8H8\xca\xb4c\x7f5\x99\xfc\xcc\xe8I[\x9a\x86\x90\xf9\xcb\xf65\xcd\xc7\xbf\x8e[\x87y\xa2\xc6/~\xe7\xcb\xef\x95\x9a\xafc\x95\x90\xc9S\x15\x99\x82\x15\x92)\\-\x99\xbc>\xabLQ\xf7\x12\xc2\xee\xa9L\x04+qWQ\xa6\xb9\xcbP\xb8\xf0\xbe\xc0\x98L\xb1u`\x9a\xe25\x99\xbd\x86\x05\xfb\x18V\xfe\xc5K\x9c\x99b\x15\x9b\xef.\xbamh\xc4\xd7\x9c\x1f\x9d\xed(D\n\xb74\xe461\xa6\xf7\xc7*\xf0\x16\xcb\x9d:\xf5\xf3!\xb2M\x9a\xf5\xcb!\x98\x05\xa4\x15\xe9\x14\xdd\xbf\xe8\x1c\xfd\xf9$\xc7\xc1\x02k\xf5\xe9$\xc4\xd4\xca\xdb@4\xf1it9f\xc6\xba\xc8\x19\xeb\x90\x968=r\xb3\xed\x9dS\x17\x128\xa2_ \xc1+!x%\x04\xaf\x84\xe0\x95\x10<\xa4\x95\x10\xbc\x12\x82WB\xf0J\x08^ \xc1\x81wWB\xf0J\x08^ \xc1\"\xad\x84`\x95VB\xf0J\x08^@\x19] \xc1+!\x98@\x08\xee\xcb\x1d\xeb\xfab\xb7O $N\xe3\x9b\xe5\x18\x82\xd9\xb7\xec\xael\x0e\x9d<\x86<\x81\x1f\xf9\x0eR\x9cEv\xf0;\xf8\xee\x05\x94\xfdS\xd9\xec\xf7\xe2\xaf\xa2\x8bl\xcb \x90cz\x97\xb6\x18\xc9\xba\x8cS\xe9?\xb8k\xfa\xc1\x1bU9\xfe\\t\xfd\xebf\xb7+{3\xf3\xc9\x04\x07\xdf\xbd\x98L\xb3\xbcD\xdc\x1b\xed\xcaN\xe4\x84\x9c=\x0f\xf5\x1d\x8fuc1\xe4\xe1*\xb8\xfeA\x82\xbbx\x7f\xb7\x85U/\xc6\x10J_\xdctF<^.\x15z\xa5\x110\xadN\xf6\xd1-\x13\x82\x86\xc6\xe9\xf3\xa6}\xdc\xf7\xcd\x89\x00\x8eu\xe5(\xe3\xf8\x9a\xef\xaf7\xfd\x0fe\x7f\xda\xb6\x05]\xc0\x94=\xf4mqyU\xf6\xdd\xa5\x90cu\x82\xaf\x94#ZVMN\xae\xd0>\xe5l\xeb\xf0\xf3S\xab\x1e\x12\xa8go6\xa5Z\xac8h\x1e\xee\xc5\x86\xab\xb2\x97\x87kc\x83\x97\x82bpP\x97o\xb3\xba;\xb4l\x88\x9a\x0dj\x91\xe2\x8b\xf5\xc5\x17\xd6\x89\xb0\x94\xe4\xa1\x98\xdc\x10eOf(\xd7q1*\xa5\x05\x83\xb1\xa7s\xe4\x1b\xfa\xfe\xb6e\xc5\x16\xba\xe2Z\xef\xf5\xe5\xdfy{\n\xc2\x81`\xb45\xb5\x8a,\xc0An\xdb\x86\x0f\xdd?\x9ct\xe5MmJu\x9e\x977\xf5/\xc3)\xba\xd3\xca&\x81\xfd[8?\xfb\xe9\xdd\xe5/\xef\xdf\xbcE\xf8\xe2\xe6\xafo\xce>\xbe}}\x81\xfcp\xf1\xf6\xff\\|:\xfd\x19\xf9\xe5\xe7\xb7?\x9d\xbe\xfe\xd3\xe5\xe9/g\xef\xde_\x8a\x99\\~O\xc5U\xf7\xe7\xec\xc1x\xa8j\x8d\xf3\xbd\x84\x85\x89\xca\xc3\x8e\xff\"#\x0e}\x07|1\x19x\xb37\x87\xa2-\xea\x9e\xb1n\xf4\xaf=\x15\xf7\x94j\xd8\xfd+IU\xb9ZM\xb2\xe6\x9fN\xad<*\x8f\x96\xf1\xf14\x06\x0c\xdc\xd6|\xe5\xfc\xc5\xcc\xc8\xaa\x9aX\xa2\x84C\xc5\x1b\xe2M\xb3Q\xbdE\x99\xbfc\xad\x9c\x1f\xa4\xbe\xab>\xad\x93\xe8\xcd\x8b\x07\xac\x10\xea\xcb\xbdr\xff$\x11w\x92C4-\x86<\xa4\xe3\xf5\x14\x19>\x9a`w\x8bh\xde\xb3\x87\xfePT\x8e\xa3\xc7\x97\xd1\xbd\x9e\xb4U\xd8o\xfa\x8c\xb2'\x8a\xee\xe9\x81\xe1\x8e\xf6*\xf4\xa3\xac\xdcU\xb1\xf9r_\xb4\xdb\xce\n9Z\x8d\xad\xb2;\xdd\x95u#\xe7Z\xe3CC\xcbv\xcd\x9d\x84\xefJ\xaf^\x90\xae\xcc\xb19\x00\xee\x0f\xfdm\x12\xce\x9c\xb7:k/\xcb\xfa\xbaIEq\xfc\xdf-\xbb~\x05O\xff\xaf\x97F\xc0\xfb\xa5[\xa4s\x91\x03/\xd4\xd3\xe1e\xff\x8an\x96g\xc2\x874\xbb\xc7\xa8\x7f\xd0\xb2_\x0fe\xcb\xb6\xea\xbdN\xc4z\x0ds\x8a\xf5e\xfc\x85\xb7\xab\xc4@7\xd7b\xa5\x10\x03\\\xc4\xccwE?\\N35\xab\xbb\xf7\x0f\xcd\xf6\xf1i7\xddv \xe7Kf,\xfdpmU\x83\x06\xf7m\xb9\x13\xe17akXX\x9b\x9a9\xe7\x1b\xfb\xe2\xb1\xb3=\x90k6\x04\xfe\xae\x99\x11\xb5\xf4\xb7\xe1\x8fl\xa0]^39e\xdc\x14\x1dT\xe5\xae\xec\x87\x963O\x1e\x8d\xb2\xabBN\xb8\xee\xd6iK\xac>\xa2\x16C\xd1\xa5m\xc6\x14\xe7\xcd\xb03\xb2\xdfL\xeb\x13\x06\xde\xa6\x917G1\xeeQJ\x0e\xa1\x18\xcd\xcdV\xa2\xfb\xb6\x8d8\xa8\xd7\xaa\x0e\x86\x199O\xc9# \xd3\xbc\x0eQ\x8e\xdd\xa5\xec4\x1d\x8fu}\xb9\x13q\xc1\xbb\x92O\x8b;Et<\xb1\xc6\x05\xe9+\x0e~\xfa\x07]\x9egr\x8e \xdf_\xb1\x07q\xf9\xa1\xac\xcc\xe6\xb6\xe03b\xe3\xc2\xe5\xf8\xa3\xfa\xf0k\xb0\xd2\xbd\x90_Y\xb8\x81\xd7EY\x89\x97\xf0]\x8b\xee0\xd6\xb1\x9c^\xffU\xa3J\xe7i\xc0\xdf\xe9\xad(\xffu\x00@X\x9d\xc0u\xe8~h\x9bb\xbb)\xba\x9e\xbc\xf9\xfb\xe1\xe3\xfb\xd37\xafO\xcf/\xfc;@\xeb\x91\x1f~~\xff\xfa\x7f\xfb~<\xff\xd3\xbb\xd7\xbe\xdfN\x87\x1fG\xb1\xb2p\xee\xf8,3\xa9\xa4\xb1]\x12\xee\x87\xfeMz\xf1z\xf4\\<\x9c\xb3\xf6\xae\xdc\xb0\xb1\x85\xe0\xe3\x07]R\xb9\xea\x98;C\x7f\xb9^\xc1\xbf\xb1\xb6Q\xfc#\x11\xe2\xe3\xf9\xe8\x01\xed\xb5 \x1a\xcd\xa9\xaf\xf8\xab\xb9\x0c?\x8c\x150\xb6}\x1a\xb1*/\x1a\x83\xfb\x82\xefo\xc7\xbb\xd5\xc4\xf4\xf0\xa0\x164!\xdf!\x986\xf2R3\x11\xfe\xf2\x16\x8b\x7f\x11\xa7T\xfc\x8f\x8b\x0bU\x80f-\x8d\xc4O}5\x9a8\x08\xf1\x17\xea\x14-\xd5\xe9\xacbI\xc6\xe6\xa0\xae\xb1\x13a\xc5\x9e\xc9\xec\x03\xe3\xe7\xe2\xe1\xa3\x9c\xb5\xc8\xbb\xb5\xfe\xe1Rl\xb7S\x83[`\xf7smH\xbb\x05|#\x8f\xcc\xfe;\x84$a\xe5\x85\xe8\x14\xc6F;\xfa\x989\xe2\xd1\x07\x8cQ\x8f\xfe~:y\x80:\xfa!\xe8g\xe4\x99\x05\x0c\x83\x1f?\xbcvf\x02\xb46\xc9\xb3\x01j\xe5\x983\x02$\xcd\nh\xf1\x8e73@\xd2\xec\x80\x16\xeex3\x04\xb8\xb3\x84oYw\xe7\x8aa\xc4\xaa\x7f\x8a\xe3-\xdd\xf9\x9c\xae7\xbc\xa6\xec\x99\xfd/:7%\x92\xc8\xfa\x87\xcbv\xf2\x0e\xfa\x1e\xfe. $4\xa0\xec\x85\xbc[!\x0f!M\x12\x1c\x04\x1aC\xa6\x00\x83,\xd002\xc5\xd9c\xc2\x84\xe7\xb7H\x85d\x8a\x11\xe4 ZA\x99\x82D9\xa0TV\xa6x\x95e\x8a\x90\xe6\x80V{\x99\xa2\xe49\xa0[\x8b\x85\x03\xcd4\x87H\x1748\xe5z\x07\x1f\x95\x15\xa1\xb1\xced\xa2\xd5,'\xb1\x0e\xa2\xe4:\x98O\xb0\xf3X\xf36\x00\xa5\xfa\x19\xe9w<\x05)x\xe0\xa3\xe1\x01\xa1\xb0Y\xe9x\xe0\xa3\xe4A\xb4$\xd4\x05\xac\xf7Q\xf3 \xb6vM)z@^k\xe7R\xf5\xc0C\xd7\x0b\xe6L\xf4V\x12\xa9{\x80\xd2\xf7 {A\"T>\x91\xe1\x03V\x00d1\xf0O\xff=J\xed\x83\xd8\xcc\x1c\x1b Yi~\x10\xa4\xfaAV\xba\x1f\xe4\xa4\xfcA\x88\xf6\x07\xb0\x88\xfa\x07\x19\xe9\x7f\x10\xa5\x00\xc2\\\x1a ,\xa1\x02b-\xf6\xb8\xd7Qf\x8c\x0e\x08K(\x81\x88\xad\x01E\x01\x08-\x10\x16R\x03\x11s\x02\x95\xd5#\xf4@\xc8N\x11\x84\xe54A\xc8O\x15\x84etAXF\x19\xc4\x87(Z\xc8lDB\xc8N&\x84\x9c\x84B \x91\n!'\xb1\x10\x02\xe4BXH0\xc4\xc68B9\x045\xd5Di\x87\xb0\x98z\x88\x18t\xc9\x880\x9f\x90\x08\xfe\xadXp\x89\x0f\xca\xeb\xc5\xd7\xff\x99$El\xda\x1b\xce\xcc\xfb Q\x11\xa2\xe5XFX\xb4\x8c \xfa\"BZ\x84<\xc4E\xc8M^\x04\x84\xc0\x08\xcbI\x8c\x96\xb5\xde\xa14\xc2BZ#\xc4\xd8~\xe0\xa77\x02\x85\xe2\x088\x1b+\x89\xea\xe8\xb7\xe1P]\x16\xd1\x1e!\xa11b\xf4G\x88\xd6;J\x83\x844*$`\xed\xb1\x94\x12 1Z$\x04\xa9\x91\x10\xa1GB\xa8\x95\xa84I P%\x01\xa1K\xc22\xca$\xd0h\x930\x8b: \xde\x86\x89R(!\x1f\x8d\x12\xfc\xa5pzZVJ%,\xa4UZ\xa6\\\x92%\xe4&ZBf\xb2%\x84\x08\x97\x80\x90.\x01!^B6\xf2%\xe4$`Bv\x12&\x90\x89\x98@!c\x02\x9d\x90 DR&\xa0\xb33J\xdf\x83\x04\n_\x98\xa0 t\x92&\xd0\x88\x9a\x80U#'a\x13\x96\x926-[\x0e\x85\x13\xb2\xd28!+\x95\x13\x16\xf7\x87(\xa5\x13\x08\xb4N0\xa8\x9d\x00(\xbd\x13\xc8Ah7^\xbe\x88\xea\xe9\xcc\xe1\xdb\xb2\xa8-\xba'\xc0R\xca\xa7eL]!\xe8\xd0>\xc1O\xfd\x84`;,\xa3\x80\x1a\x86\x062\xa8I\x03\xe5i\x0e\x15\x94\x84]Q\xc5\x1e\xc0+\xea\xdf\xbd\x81^Q\xaf!\x18\x96 d\xe5GF\x87\xa8\xd84\x87\x1e9\xde]\xaaV\x8b\x120\xbc\x9d\x1e'^x\x1e\x0fA\"f\x93-L#Kx\x16\x9aWa\xda\xa3S*\x16\xd2)\x10*\x05\xda\x86\x1e\n\x05\x86Y\xcfD\x9d\xc0i\x13T\xca\x84E\x97@\xeb\xe4\x9f/\x16S$\x04b\xdf\x1c\n3\xe8\x11}Fj\x04N\x8bXD\x89\xd0$\x08\xc3^\x80\x0e\xe1P!\xd0/\x82u\xa7\xac\xf4\x87\xf9\xd4\x87\xd9\xb4\x07\x93\xe8`\xb6\xd5,\xca\xc3\\\xba\xc3\xd0\xa2\x82\xe2Xo\xaa\xc3\x96\xe1S\x85\x98$\xcaZVT/`j\x04\x7f3N\x1a\xc6\x0d\xaf\xea2?\x97\x18)\x9c\"\x10\xfb-1\x0f\xb2\xebk\xb6\xe9\xcb!\x0e\xfa\xe4\xa6\xe8\xf6m\xb9aO\x86U^N\x93C\x7f\x97\xcan\xcd\x8e\xc1\xae\xdc\x95\xf5a\xa7\xb2\xd5gr\xe3\xb9\xda\x8e\xed\xf6MS\xe1+\xddOl\x1e,s\xec\xadD\xca\xee\xc5\x83\x87\xaa\xdb?\xe8\xc9P\xdf\xed\x81\n\xd8\xae8\xd0\x15\x07\xba\xe2@\x9d\x87W\x1c\xa8\xe7\xc5\x15\x07j\xa6x\x95eZq\xa0HZq\xa0+\x0eT\xbe\xb9\xe2@UZq\xa0+\x0et\xc5\x81\xae8\xd0\x15\x07\xba\xe2@W\x1c(\xac8\xd0\x15\x07\xba\xe2@'i\xc5\x81\xae8\xd0\x15\x07\xba\xe2@W\x1c\xe8\x8a\x03\x85\x15\x07\xba\xe2@\xc7\xb4\xe2@\x9d\xb4\xe2@W\x1c\xe8\x8a\x03]q\xa02\x00\xb6\xe2@=8\xd0 Z%\x08\xfc\x1c \x9f\xe2\x95 \xd8S<\xd1\x89\x93\xa4\x19@\x18G71\x8f\xc2}\x00.3\x08,V\xa5T2Gp3\x1d\x02\x9cI-\xa9S}\x99|g \x18\xc4&\x18b\x08\x81 \xe2@\x1b\x1cj\x13\xcc0 n\xe3\x05\xdc\x04\xb3\xa0\x82n0\xd8M\x18~\x11j-\x1a\xf8\x06\x83\xdf\xd0\xdb+\x0e\xc1\xf1\x80p\xe8Y8@\x1c\xfaIf\x1c\x8a\x139\xd0\xc4\xe08!\x88\x86\x07\x98\xe1\x1932\x85A\x18A`N\xb8o\xc8\x14\x06\xe7x\xe19Q\x0c\x86\x1f\xa2\x13\xc7\xb0\x04\xf1+\xc1\xc6\x92\x89\x82[\xe9\x83`\x9dh\xf5d\xa2\x00v\xe2\xd5\x95)\n\xda!U]&J\x03\xc8D\x80\xee\x10\xdbB&\x12|'\xc1b\xe1\xe0\xa7\x9c\xf0\xa7\xcc\x00\xa8c@\xa0R@PD\x18T\x12\x10\x8a\x0e\x85\xf2\x80\xa1|\xf0\x17:\x00&\x0e\x88J\x82D\x91AQh\x85r\x03\xa3\xf2B\xa3<\xe0\xa8\xdc\xf0\xa8\xdc\x00\xa9\xe5}\x84\x04\x92\xa2\xc1\xa4\xa6@)/T\x8a\x1e\xc6\xc7\xce\x1er\x02\xa6\x02\x90\xa9\xcc\xa0\xa90l*\x08\x9c\n\xb7I6\xf0T\x00>5\x17@\xe5\x94\xdd\x84\x04\xf9\xa0Dc\x85\x86\x8d\xfd\xbe\xb8Qro\xafp\xbb\xe3\x03\xe6\x99\xad\xf1W\x8d\x85\xd1\xb9\x8f\xe5\xeb\xb1s\x0b\xfc\xc4\xa2f\x0f\xfd\xa5s\xd6\xed\xed\xcb\xde`\x82B\xea8\x98\x13m_\xb7\x0c\xff_\xad\x11\xd7\xa9\xbb\xad?\x147L\xdd\x81y\"\x7f\xb7\x8c\xf0f\x94\xcaO\xdc\x1co\x03\x06\xbb\xa6\xeb\x81\x89x\x93\x08P\x19\xaf\xf4M_T\x89\x15J\xb8\xb0_\x98\x17\xf5\x11\xffS\x1fvW2\xf0\xa1\xa3\x94F\xa8\xcc\xbe\xc1\xde\xac\xaaPf\xbb\x14F\xec\xb1s_tR\x8a\xac\xec;\x1dh\xed\xe0P\xcb\x8e\xb0\x95\xb1\xaa\xfb\xb2\x93\xdf\x00G\xfd 8<\x1a\xc4\xef\xe2\xa1\xfb\xe1Q\x9e&+S\xb1+I\x7fi\xb6\xecl8\xd9tz\x9f\xdb\xf3\xba\xb2\xbe\xa9L\xe9)\xd9\xd4\xf2\xcf\xe3j'\x86\xbd\xfc\x9b\xd4\\\x9b\xd3\xc3w\xae \x93\xccM\xdc\x03\xabZ\x84\x9b\x1f\xee\x86\xd5\xb1\x1d4g\x08\xf5&\xfb\xa6e\x10\xb7\xd6\x9e\x9f\xfd\xf4.t\xd1\xb2\xfd\xd4\x9b\xb3\x8fo__\x04\x1e\xb8x\xfb\x7f.>\x9d\xfe\x1cx\xe2\xe7\xb7?\x9d\xbe\xfe\xd3\xe5\xe9/g\xef\xde_\nG\xc3|r\xb8y9^\xb2\xf0\xd2u^\xde\xd4\xe2\xdee\xeb\x93\x19\x8d)\xc3\x9d\xbd\xd4\xab\xeb\xd8\xe6\xd0\x96\xbd\x1dh\xba9\x14B\xb4\xcf\x92%\x14\xc9\xd3|\x9e\xb2\x1b\x17@\x175\x1cj\xe9zM\n\xc4gx\xe5@Yy\xb5\x8cw'wAu\xbf\xcd+\xe7/f\xc6V\x03\xe8\x03\xadN4\xd7\x9bf#\xc3\xde\xf6\x11\xd1\x1dk\xe5\x12$Zl@\xc7\xc0u\xdb\xec\xe0\xc2\x81< \xfd\xe1\x95\xfb'q^\x04\xd7\x07\xb1nN\x8a%Q \xbc\x1dD\xc6\x8f\x12\xe71\xcd\xe3\xf6\xb0+\xeao[Vl\xc5l\xd6\xb3\x87\xfePT\xce.\x89\xfb\x87{=j\xe4I\x88\xd3\xb2\xe6\x1b\xf67\x165\x8ct\xffp\xef~\x15\xfaQ\xb6\xc1U\xb1\xf9r_\xb4\xdb\xce:\xa4\xb1\xbe\x91\x95\xed\xe9\xae\xac\x1b\xe9\x05\x18\xfd\x06Z\xb6k\xee\x94\xa4\xa8\xd8m\xf3\xf6U\xaf\xee\x0eU_\x8e\x93\x00\x11\xa0\xac\xa7\xd0\x93_\xf8\xebO\xed\x99Q\x18\x9d\x8e\xb2Z\",\xc4/]yc\xceS\x93A\xab-[Ql{\xc6\x1bf\xda\xa6\xf5\x98\x0e\xcf\xfd\xb2\xe0\xe4\x15\xe0\xaa\xec\x05\xee\xcfY\x03\xf4\x0f\xc6\x80\x92_\xe7\x0b{\xec\xc4\xd8P\x8d>\x94\xae\x18\xbb\xf6\x9c\xf5\x81=\xf4mqyU\xf6\xdde\xd77-\xaeB\x93\xa2\xde\xc7*\x07\xaf\x18u?&\xfe\x94\x7f\xce}\xcd\xbb\xee\xa6\xff\xa1\xecOE\x1bI\xd5_\xeb0I~L\x01\x97\x1e\xfc#\xde\xac\x12h9\x99a\x05\x80\x83{\x16\xca\x13cuwh\xd9p\xe0\x0f\xac\x16\x9e\xaft\xad\xfb\xe2\x0b\xeb\xe4Y\xf9\xae\xac\xcb]Q)IO\xc3\xe0t\xcf!\x0b!#NbW&\x0d\x96\xf5\x0dZ\x8a\xba\xe1\xb9\xf2\xe9\x06\xba\xe2Z\x1f\x0f\xca\xbf\xf3\x0fPo\xd5\xf9\xe0\xa6\xa9\xd5\xc1$\x1c\xe4\x99\x8b4\xc4\xfb\xf2eY_7\xa9\xd8\xfc\xc4A\xea\x0c\xcf\x89\xdb;\x96B{\x17\x9b\xa6\x95.\xd7V\x8f\xb8nt2\x84\xb4\xad\xfe\xa7\xee\xd4\x869\x1d+:\x08\xa5]\xa1\xa7\xea\x0c\xd0\xfd\xe1\xaa*7b\x88|c\x14K\x0c\xc9A\x1bY\xb8;|\"\xe0MX`/\x87\x07\xf8\xb9\xe1\xb4\x11F\xf8\xd4\xefZ\xe4s\xa1\xc3\xc7\xf6\xb5\xe2~V\xd0\xc7\n\xfbW4\xdf\x8a\xe8W\xf9\xc7\xf7\\\x7f\xca\xebA}%\xef \xf3\x9c\x8e\xef5%xL\xc7\xf6\x96\xb2xJ~/)\xea!}}\xef(\xd93\xb2\xa7J9\x9d\xf8f\xa7\xc9Dp\x02g\x02$2\x84\x80\x94\xb8\xfc\xf4X\xbfo$~HZ\xb0B\xef\x1dt\x87\xcd-\x7f\xadj6\x85\x92SG:\x80\x89m\x19\n\xefN\x8a\xef\xdb-k\x7fx4'Ccz2\xa7\xa6o\xe1\xfd\xc77o?^\xfe\xf0'd.0~<=\x7f\xed\xfe\xf1\xcd[\xf5\xd7af\xf1\x1a\xc3'\x15\x17\x1d/)\xa8!\xd7\xd1i0-\xc1\x0f\xedQ\xd4\xb0\xd7s\x0co\xcc3b\x84\xfd\xe8\xe0|\xb8\xe0l\x88`/\x16\xb8\x9f\x8f\x02\xce\x85\xff\x0d#\x7fga~g\xa3}E}\xed\xcd\xae\x17\xe7;\x1b\xe1+\x97\x0e\xcb\x9a\x07\xdb\xbb\x04\xd5+v%vm\x90\x83\xe79H^?jw!^\x97\x84\xd4\xa5\xa3r\x17\xe0q\x17 q\x91 ##\xde6/\xd26\x1b\xc66\x8e\xae\xcd\x86\xab\xf5!j\x97`iQ\xdc,r\xa0\xea\xce7s\xb1\xb2^\\\xecLD,\x82\x85M\x0b\xb1@t\x05\x9d\x89y\x1d\xf1\xadX\xfb~\x13\xcf{\x19\xc2U\"Z\x0ds.\xb65\x03\xaau\x19\x9e\xd5\xea\xe5\xf6b\xb8\x10\xc3\xaa\x1a\xda\xb4\xb8\x04\xad\x1a\x84bz\x10\xaaQl\xaa\x0bS\xa3\xe3Q\xddw\xff\x82\xd5u\x16\xfa\x94R\xd9\x18\xe2\xd4_\xb7(\xca4\x01_:\x85\xe2,\xc4\x94\x06\xd1\xa4~\x1ci\x08A\x8a\xb6\x02\x155\x1a\xc3\x8b\xdaH\xd1\x05\x18Q\x02:4\x1d\x17\x8a\xa00cX\xd0L(P$\xe7\xbfL#\xcd\x0b0\x9f6\xc6s \xba\x13As.\xc2q\xda\xb8\xcd\x9c\x88M/V\xd3\x06\xb0\xd9\xf8\xcc<\xc8\xccl\x98\xcc\xbchL\x1a\x0e3\x8a\xc0$b/)\xa8K\x07\x9e\xe8\xe6F\xc5\xcf\x851\x96Dt%\x01W9)rN,\xe5\"\x14\xa5\x8b\x9a\xcc\x87\x97\xcc\x87\x94\x9c\xffu\xa3\xe8\xc8\x18.RO\xdf\xc3I\xd7\xec\xe3n\xe2IZ\xe4\xec\xba\x1f\x0e\xd2\xf4\x91\xa1>\x1e7\x8c\x8d\xf8\xc1\xbe\x19\xfcT\xe4 \xed\x0b{|\xaa##\x1d\xfb\xf5\xc0\xea\x8dsI\x9e\xb5\xcd\xf0\x80\xc8\xfcN\xbe\xb6;\x1c\x85\xe9\x7f\xeb\xad\x84\xbc\xb6\xf3\x85\xeap\x93\xdaO\xa6\xe6\x01{\xb6\x11(\xcd\xde\x92-\xd3\x97u^=B\x017\xe5\x1d\x13}\xb4e]\xa7C\xea\xe2\xf2\xc9\xd1`?q\x11\xf6\xad\x10+\xe2\x03\xa7*\x1e\xa1\xe8\xfbb\xf3Em\xc4p\xd0\xd9\x186\xb5>\xd9x\xc8(>\x91\x17}\xd07\xfbo+v\xc74\x1f=\x04=8/w\x87\xaa\xe85\xa0\x8e\x1c\xa8\xcdy\xdd\xe2\xa4\xbf\x8ew/\x9aRh\xbc\xbb\xa9\x92\x9a\xde\xc9\x1b>\x1bm\xf8.\xe6\x04\xceY\xbd\x15\x07X\xfd\x83:\xc3R\xaa1'C\x91/\xc5\xdf\x89\x1d\xd1\x0f'\xd0\x86\x06( \xcf\xd4V\xc4\xf0}\xdbIs\x8f`B\xf9\xcf\x1e\xc3\x12\xeaw\x94\x89\x18\x90p\xcc\"Q8\xf0\xa6\xe8\xac\x89hR\x07\xfd\xb3.\xb3\xa1\x9f\xc2\xb7\xed\x87^\xa8\x84\x0c\xb7\x04\x8b\xe9D\x94d\"\x12\xe2\x94\x03/\x0b,\xb9\\ \xc1\xa1\x86\xe3\x14?\x15\xdd\x1fEF`\xdd\x81|\xa8\xc5)\xf15\xdc7\xed\x17\xb8W!=\x19\x93\xea\x1f\\\x90\xed\x9e\xb5\xbc\x10'V-f\xdc\xcb\x14\xab\xc3OE\xf7\xa9\x1b\x0b\\L\xa4Z\x8aM/\x03\xd8Z\xb3E\x17HF\x1e=\x1fX\xfeh\xe0[\xf9\xbf\x86\x95a\xd1\xa7L\xb8dsf\xa8\xe9M\xd1\x17\x12\xca\xf3(\x916-\xeb\x0f-\x9f\xb7\xc5\xb9\xafv\x0fD@\xb5\xdeV\xac5t\x97\xe0\xcc>\x02\xf9\xe5\xd3\xf9\x05\x12i\xabX}\xd3\xdf\xf2)\xfd\xba|\x90\xfd\\\x9c~\x89\xe9\x89\xed\x8b\xb6\xe8\x99\xcc]f\xcaWD\xee\xa1\xe0\xd4\xe9\xa1\x00\x93\xb0\xdc\xcc\x1bC\x9d\x06\xf9\xb9\xb9\x99\xba\xe3\x02\x8do\x8cYO\xbb\xf8\ni\x96\x11\x93\xdf\xeb\x11\x8c\x10d\xbe(T\xbc\xe6\xfc5\xd0D\x10\x95\xd1\xf3\x15[\xa6\xe3^\xe9\x19\x94\xc7\x0b\xd6I\xa7\x88.\x01\xc45\xf3re\x13\x90\x89\x84!\x9b\xab\xa6\xa9X\x81+\x8f\x80\x99O\xe0\xb9\x18\x0fH&\x01\xbd\x1f\x05\xfbJ\x03\x05\xff\x85=~;\x8a\xcd\xbd\x80\xa2\xeb\x9aM)\"\xa1\"\xa6\x8f\x1b,j\xd9\xeb\xed\xd8H\xac8R6N,\x1b\x9d\xa9\x86\x06[\xee\xa0\xf1\x1e\"\x0eI\x84[xkl\xaf\x1dC\xe6\xd0\xed\x11\xa2\xb2^\xee\x7f`7e\xfdC\xd5l\xbe\xbc\x18\xfe\xf6\xb6\xdeZ\x7fy}\xcb6_.\x1e\x1c\xaa\x8fi\xe9\x0d\xab\xca;\xd6^< \x9c\xea\x9f\x8b\x9e\xb5/\xa6~\xf2Nj\xa8i\xbe\xce\x81\xb77\x9fy:\xa6&\x8ci\xdb\x85[n\xbe\x12\x9f\xd2\xdc\xb3\xec\xe9)\xd8\xfa3\xba\x1e\x88gb\xfe\x1b\x81\x0d\xa2\xdf\xb1\xfc\xb8\x98\x03w\xf1@v\xd9\xae\x9a-\x82\xfem\xb6\x03Uh\xdf6\x1b^\xf3\xabJ\x9d4\x8f \x00\xe3\xdb\x8d\x16\xe8K\xbaj\xd0\xbf\xd2*\xb0J\xc3\xad\xd2p\xa8\xb5U\x1a\x0eVi8<\x9f\x85P\x13m\x84\x008A\xdf$\x83PdZ\x00E\x91i\x01 \xc57\xd0=E\xcd\x06U\x91)/`E\xa6l\xb0\x15\x99\xe2\xe0\x15\x99\xb2AXdZ\xa5\xe1Vi8\x19\xeeY\xa5\xe1\x8c\xb4\x0cJ\xe3\x98\xebWi\xb88\xfcF\xa6\x98(Z\x1c\x8a#\xd3*\x0d\x97\x06\xdd\x91i\x95\x86\x13)\x06\xf5\x91i\x95\x86\xeb\x17\x80\x82dZ\xa5\xe1\x12!En\x91Wi\xb8\x1c0$\x99\xf2\x82\x91d\xa2A\x92d\x8a\x02\x93d\"\xc2\x93&\x0f\xaf\xd2p\"\xe5\x843\xc9\xb4\x08\xd4\xe4X[\xa5\xe1rK\xc3\x85w(:\xe8,\x0ft\xb4B\xd8\xf0W\x19\x0b\x90\x81|\xb6\x95\x81\xc3\x96\xfdz(['00j\x06\xd8M\xd4\xdf6\x1d\x1bmJ\xca\xa3\xf8>\n)\xc4{\x9a<\xf6m\xae\x85P\x858\xa9p6\x12\xa7\x87\xfeV\xc0\xb3\x9c\x0b\x90d\xdeJ\xde\x80[\xbbxx*aFE\x7fhYw\x02o\x8b\xcd\xedP\xf2\x01\x96%QG\xae\xeaM!:\xa9{(\xd4\x0f*j|\xed\x12\xeb\x16\x1f\xb7BF\x0e\xca\x1e\x9a\xcd\xe6\xd0\xbarA?\x08\xdc\xc0\x1d\xab\xf5\x08\xd1\xef\xd9\x05z\xa6C\x9f\xe2(yx\x0e\xfffN\x84\xa4\xec\xa0e\xd7\xacme@\xaa\xd0\x07\x16\xe5N\xec6G(\xda\xbex\x94\xbf]3\xfbhE\xa7\xfb\xdb\xa6r\x96A\xcf%5;\xb6k\xb2\x9c\xb0sC\x1ar0n\x93\xeb\xa6g/7\xcdN\x84\xd9e\x87\xd4\xdf\x07\xacc\x17\xa7\xe5\xffx\xfa\xf1\xdd\xd9\xbb\x9f^\xf1\xc9aS\x95\xbc_\xbd\x10\xe6%\xf2\xabz\x04\xf6\xb0o\x84\xce\x08{\xe8u8\xbcnzW\x87iST\x95\x980w\x8d\xa3*xu\xe8\x8dP\xbaz\xf23/\xf8\xff\xcf\xde\xd9\xf4\xc6\xad[ax\x9f_Ad\x93\x16\xf0\x07\x9a]\xbb\x8b\x9d\x00-P\xa0i\xe2\xae]\x8eD{\x08\xcb\xe4\\\x91r\xec\x0b\xdc\xff~\xc1O\x91\"%q$\x06\xf7.\x8e6Af,J\xa2\x8ex\xc8\xf7\x99\xf3\xea\xff\xfeM[\x7f\x11$q2\x92\xf2$\xfeq}\xfdH\xe5q8\xe8!\xc1\xc0+\xfb\xcf\xa5h\x9f\xae\xa9\x10\x03\x11\xd7\x7f\xff\xdb\xc7\x8f\x7f\x0d{]\xc5\x1c\x1f\xe4}\xee\x95\x9c\xb3\xfd\xbfn,\x97x\xe5\xd9\xe38\xfe\x15\xbe\xa9\xd3\xce\xcd\xcc\xa0l~\xc2\x13\xfc\xc2L\x0f\xfa\x8cO\xa3\xf7\xe0\x19\x9a}\xf3\x91\x1a\xc6\x8f8z\xda\xc9\xab$LP\xce\xee\x8d\x18\x0eL\x0c\x98\x1801`b\xc0\xc4\x80\x89\x01\x13\x9bn\xc0\xc4\x80\x89\xad\xcf8\x80\x89\x01\x13\x8b6`bv\x03&\x06L\x0c\x98X\xd1\x91\x81\x89\x01\x13\xf3\x1b01`b\x93\xad\x94w\x00\x13\x03&\xb6\x16#?\x91\x89\xcd\xbdD%\xd1\x9d\x8d\xa0\xe1W'\xeeS}?\x1b\xccF\x16q\x98\xce\xbb\xb5\xa4\x9d\x80\xaa\x1fG\xc2\xecpd\xdc[\xc2\xe3\xa8\xe5\xb3\x18\x9c9\xfa\x95\x8aK5\x012\x03\x98P\xe71M(3\x9a\xa9\x8a\xd2\x06\xb3\x0fz\xbdg\xaaqZ\x83\x9d\x12}^\x9b\xe3&6\xc9\x8c\xb3\xfb\xa6\xa7\x926\xb8\xbb\x071\x1e\xc4\xf8h\x031\x1e\xc4x\x10\xe3A\x8c\x071>\xb3\x81\x18\x0fb\xfc\xfa\x8c\x03\xc4x\x10\xe3\xa3\x0d\xc4x\xbb\x81\x18\x0fb<\x88\xf1EG\x061\x1e\xc4x\xbf\x81\x18\x0fb\xfcd+\x15ZA\x8c\x071~-F@\x8c\xaf.\xc6\xbf\xf9\xa8\xa3\x8f\x8c\x87\x055\xd1\x9a\xed\xee\xf5&\xb0\x9f\xd2VT\xda\x9a62sU]\x80\xbb\xce\x17\xe1\xa8\x7f\x11\x7f!^(\xc2\x83\x05\xcd\xc5\x15Tc\xd5S\\\xe6\xe4_,\xd8p\xc6H\xa3\xdf\x1c\xe7\x0f\xa8\xe608t\xb8\x0b\x1a\xec\xe8S4\x7fX2AV\x137.tldL\xdc\xee\xbc\xb3\xb0\x90\x98\xb5\xb8\xb7\xd3\"/;\x1dz\x8e\xdb\x06\x0b}r\xa1\xb5\xdd\x9cO\xdb\x8d\xb7_\x93\xeb^m\xae\xa2l\xd3=O\x18\xd4\x1c\x7f\x923\xeciA$Z\xd3\\\xaa\xf2\xa6%\xd6T\x933UdL\x0b|i\x17[\xaa\xc7\x95\xd6\x98\xd2F\x9e\xb4\x99%\x19\xfd:\xd3[\xb3\x1ci3C\xca\xbe\x1do\xf6\xfdx\xfb\xd8\x11\x1aNI{s\xdch\x0b3Z\xe2C\xbb\xd9P\x11\x17:\x87\x01\xed\xe2?;\xd8OvX\xa9\xcaxj\xf3\x9d\x8al\xa7\x84\xebTd:\xf3<\xa7*\xcb\xc9s\x9c\xcc\x14?7Jm\xe57\x86\xd5$\xcd\xe5\xd8\xcdfn\x93e6\x0b\xa9x\x81\xd5\xace\xe9Z\x8cf\x9e\xcf,\x9d\xc1>.\x93\xbcq/\xf7\xce\xbdJ\xf0A\"\x8cN\x1dfL\x8d\xef\xb6=u\x9fu\xacPW\x85d\xdb\xd2EeW\xf3#\xd6\x7f\x07\xd2\xbf}2\xcf\x9a:\xae\xcb6\xc5\xa3X\xad\xf89\xba06\xf3\xb8\xa8\xf4(\x0c!u\xe5\xe8\x07\x1e\x07\x88\x85\x8e\x9c\xbb8w\x94\xde\xfd_\xafu\xdc \xaa\xf7\xba\x0ev\xb3\xad}\xfbz\xeb\x1e13p\xadu\xeb\xad\xa1$\x9b\xba\xf5\xe43Iry\xba\x07\xa8[\x05\xe9C\xf88P\xdf]M\xee\xc5d\x06\x99\x9f?\xc6\xc9\x08-\xcd\xf9\x961\xc2\x9e\xc44i*\x97\xa6P\xedT\x85\xb2\xe9\n\xedOY\x93\xd6T\x02K\xd2\x16\xaa\x90\xba&\xcd%\x89\x0c\xedOf\x93\xd6\xec\x9d\x9b\x1e\xa4fRCs\x89\x0d\x9d\x95\xdcPf\x80BK\xb1\x9d\x1f\xa8\xd0b\xb2C{\x13\x1e*Lz(I|h\xe9Z\xe6\xbc]\xf7%\xc1Ic{3a\xf20\xe8\x0f\x16\x86\xf3\xcc\xa0Z2\x9c\x07\xbb\xd9\xd6\xce\x1e\xce\xffg\x87\xa3[u\x0c&\x06\xf1]bI\xce\x1e\xd9\xdd\xa8v\xdf\xb8v\xee\x85j\xa80\x85\xfa5\xd1B\x1f-\x9f\xe9bw\x85\xcd\\\xe7\xdby7v\xa0\xef9A\x9a\xa1\xa7\xf2\xed\xf3\xf8k\x14u=ON\xd1\xb0\xeb5,h\xf3\xee\xf7\x00\x00\x00\xff\xffPK\x07\x08&b]i^\xcd\x01\x00Nh\x17\x00PK\x01\x02\x14\x03\x14\x00\x08\x00\x08\x00\x00\x00!(\xd4`4t\xc7\x01\x00\x00\xbd\x01\x00\x00\x11\x00 \x00\x00\x00\x00\x00\x00\x00\x00\x00\xb4\x81\x00\x00\x00\x00favicon-16x16.pngUT\x05\x00\x01\x80Cm8PK\x01\x02\x14\x03\x14\x00\x08\x00\x08\x00\x00\x00!(6B\xc8\xd7\x7f\x04\x00\x00u\x04\x00\x00\x11\x00 \x00\x00\x00\x00\x00\x00\x00\x00\x00\xb4\x81\x0f\x02\x00\x00favicon-32x32.pngUT\x05\x00\x01\x80Cm8PK\x01\x02\x14\x03\x14\x00\x08\x00\x08\x00\x00\x00!(\x8e\x10\x9f\xf1}\x02\x00\x00\xe3\x05\x00\x00\n\x00 \x00\x00\x00\x00\x00\x00\x00\x00\x00\xb4\x81\xd6\x06\x00\x00index.htmlUT\x05\x00\x01\x80Cm8PK\x01\x02\x14\x03\x14\x00\x08\x00\x08\x00\x00\x00!(]\x12r 9\x03\x00\x00T \x00\x00\x14\x00 \x00\x00\x00\x00\x00\x00\x00\x00\x00\xb4\x81\x94 \x00\x00oauth2-redirect.htmlUT\x05\x00\x01\x80Cm8PK\x01\x02\x14\x03\x14\x00\x08\x00\x08\x00\x00\x00!(&b]i^\xcd\x01\x00Nh\x17\x00\x0c\x00 \x00\x00\x00\x00\x00\x00\x00\x00\x00\xb4\x81\x18\x0d\x00\x00swagger.yamlUT\x05\x00\x01\x80Cm8PK\x05\x06\x00\x00\x00\x00\x05\x00\x05\x00_\x01\x00\x00\xb9\xda\x01\x00\x00\x00" + fs.Register(data) + } + \ No newline at end of file diff --git a/client/docs/swagger-ui/swagger.yaml b/client/docs/swagger-ui/swagger.yaml index 304b5ebf84..fc57c3daa7 100644 --- a/client/docs/swagger-ui/swagger.yaml +++ b/client/docs/swagger-ui/swagger.yaml @@ -17,249 +17,316 @@ paths: deployment: type: object properties: - deployment: + deployment_id: type: object properties: - deployment_id: - type: object - properties: - owner: - type: string - dseq: - type: string - format: uint64 - title: DeploymentID stores owner and sequence number - state: + owner: type: string - enum: - - invalid - - active - - closed - default: invalid - description: >- - - invalid: Prefix should start with 0 in enum. So - declaring dummy state - - active: DeploymentActive denotes state for deployment active - - closed: DeploymentClosed denotes state for deployment closed - title: State is an enum which refers to state of deployment - version: + dseq: type: string - format: byte - title: 'Deployment stores deploymentID, state and version details' - groups: - type: array - items: + format: uint64 + title: DeploymentID stores owner and sequence number + state: + type: string + enum: + - invalid + - active + - closed + default: invalid + description: >- + - invalid: Prefix should start with 0 in enum. So + declaring dummy state + - active: DeploymentActive denotes state for deployment active + - closed: DeploymentClosed denotes state for deployment closed + title: State is an enum which refers to state of deployment + version: + type: string + format: byte + created_at: + type: string + format: int64 + title: 'Deployment stores deploymentID, state and version details' + groups: + type: array + items: + type: object + properties: + group_id: type: object properties: - group_id: - type: object - properties: - owner: - type: string - dseq: - type: string - format: uint64 - gseq: - type: integer - format: int64 - title: >- - GroupID stores owner, deployment sequence number and - group sequence number - state: + owner: type: string - enum: - - invalid - - open - - ordered - - matched - - insufficient_funds - - closed - default: invalid - description: >- - - invalid: Prefix should start with 0 in enum. So - declaring dummy state - - open: GroupOpen denotes state for group open - - ordered: GroupOrdered denotes state for group ordered - - matched: GroupMatched denotes state for group matched - - insufficient_funds: GroupInsufficientFunds denotes state for group insufficient_funds - - closed: GroupClosed denotes state for group closed - title: State is an enum which refers to state of group - group_spec: + dseq: + type: string + format: uint64 + gseq: + type: integer + format: int64 + title: >- + GroupID stores owner, deployment sequence number and + group sequence number + state: + type: string + enum: + - invalid + - open + - paused + - insufficient_funds + - closed + default: invalid + description: >- + - invalid: Prefix should start with 0 in enum. So + declaring dummy state + - open: GroupOpen denotes state for group open + - paused: GroupOrdered denotes state for group ordered + - insufficient_funds: GroupInsufficientFunds denotes state for group insufficient_funds + - closed: GroupClosed denotes state for group closed + title: State is an enum which refers to state of group + group_spec: + type: object + properties: + name: + type: string + requirements: type: object properties: - name: - type: string - requirements: + signed_by: + title: >- + SignedBy list of keys that tenants expect to + have signatures from type: object properties: - signed_by: + all_of: + type: array + items: + type: string title: >- - SignedBy list of keys that tenants expect to - have signatures from - type: object - properties: - all_of: - type: array - items: - type: string - title: >- - all_of all keys in this list must have - signed attributes - any_of: - type: array - items: - type: string - title: >- - any_of at least of of the keys from the - list must have signed attributes - attributes: + all_of all keys in this list must have + signed attributes + any_of: type: array items: - type: object - properties: - key: - type: string - value: - type: string - title: Attribute represents key value pair + type: string title: >- - Attribute list of attributes tenant expects - from the provider - title: PlacementRequirements - resources: + any_of at least of of the keys from the list + must have signed attributes + attributes: type: array items: type: object properties: - resources: + key: + type: string + value: + type: string + title: Attribute represents key value pair + title: >- + Attribute list of attributes tenant expects from + the provider + title: PlacementRequirements + resources: + type: array + items: + type: object + properties: + resources: + type: object + properties: + cpu: type: object properties: - cpu: + units: type: object properties: - units: - type: object - properties: - val: - type: string - format: byte - title: >- - Unit stores cpu, memory and storage - metrics - attributes: - type: array - items: - type: object - properties: - key: - type: string - value: - type: string - title: Attribute represents key value pair + val: + type: string + format: byte title: >- - CPU stores resource units and cpu config - attributes - memory: + Unit stores cpu, memory and storage + metrics + attributes: + type: array + items: + type: object + properties: + key: + type: string + value: + type: string + title: Attribute represents key value pair + title: >- + CPU stores resource units and cpu config + attributes + memory: + type: object + properties: + quantity: type: object properties: - quantity: - type: object - properties: - val: - type: string - format: byte - title: >- - Unit stores cpu, memory and storage - metrics - attributes: - type: array - items: - type: object - properties: - key: - type: string - value: - type: string - title: Attribute represents key value pair + val: + type: string + format: byte title: >- - Memory stores resource quantity and - memory attributes - storage: + Unit stores cpu, memory and storage + metrics + attributes: + type: array + items: + type: object + properties: + key: + type: string + value: + type: string + title: Attribute represents key value pair + title: >- + Memory stores resource quantity and memory + attributes + storage: + type: object + properties: + quantity: type: object properties: - quantity: - type: object - properties: - val: - type: string - format: byte - title: >- - Unit stores cpu, memory and storage - metrics - attributes: - type: array - items: - type: object - properties: - key: - type: string - value: - type: string - title: Attribute represents key value pair + val: + type: string + format: byte title: >- - Storage stores resource quantity and - storage attributes - endpoints: + Unit stores cpu, memory and storage + metrics + attributes: type: array items: type: object - title: >- - Endpoint describes a publicly accessible - IP service + properties: + key: + type: string + value: + type: string + title: Attribute represents key value pair title: >- - ResourceUnits describes all available - resources types for deployment/node etc + Storage stores resource quantity and + storage attributes + endpoints: + type: array + items: + type: object + properties: + kind: + type: string + enum: + - SHARED_HTTP + - RANDOM_PORT + default: SHARED_HTTP + description: >- + - SHARED_HTTP: Describes an endpoint + that becomes a Kubernetes Ingress + - RANDOM_PORT: Describes an endpoint that becomes a Kubernetes NodePort + title: >- + This describes how the endpoint is + implemented when the lease is deployed + title: >- + Endpoint describes a publicly accessible + IP service + title: >- + ResourceUnits describes all available + resources types for deployment/node etc - if field is nil resource is not present in - the given data-structure - count: - type: integer - format: int64 - price: - type: object - properties: - denom: - type: string - amount: - type: string - description: >- - Coin defines a token with a denomination - and an amount. + if field is nil resource is not present in the + given data-structure + count: + type: integer + format: int64 + price: + type: object + properties: + denom: + type: string + amount: + type: string + description: >- + Coin defines a token with a denomination and + an amount. - NOTE: The amount field is an Int which - implements the custom method + NOTE: The amount field is an Int which + implements the custom method - signatures required by gogoproto. - title: >- - Resource stores unit, total count and price of - resource - order_bid_duration: - type: string - format: int64 - title: GroupSpec stores group specifications - title: 'Group stores group id, state and specifications of group' - version: + signatures required by gogoproto. + title: >- + Resource stores unit, total count and price of + resource + title: GroupSpec stores group specifications + created_at: + type: string + format: int64 + title: 'Group stores group id, state and specifications of group' + escrow_account: + type: object + properties: + id: + type: object + properties: + scope: + type: string + xid: + type: string + title: AccountID is the account identifier + owner: type: string - format: byte - title: >- - DeploymentResponse represents details of deployment along with - group details + state: + type: string + enum: + - invalid + - open + - closed + - overdrawn + default: invalid + description: |- + - invalid: AccountStateInvalid is an invalid state + - open: AccountOpen is the state when an account is open + - closed: AccountClosed is the state when an account is closed + - overdrawn: AccountOverdrawn is the state when an account is overdrawn + title: State stores state for an escrow account + balance: + type: object + properties: + denom: + type: string + amount: + type: string + description: >- + Coin defines a token with a denomination and an amount. + + + NOTE: The amount field is an Int which implements the + custom method + + signatures required by gogoproto. + transferred: + type: object + properties: + denom: + type: string + amount: + type: string + description: >- + Coin defines a token with a denomination and an amount. + + + NOTE: The amount field is an Int which implements the + custom method + + signatures required by gogoproto. + settled_at: + type: string + format: int64 + title: Account stores state for an escrow account title: >- QueryDeploymentResponse is response type for the Query/Deployment RPC method default: - description: An unexpected error response + description: An unexpected error response. schema: type: object properties: @@ -335,6 +402,9 @@ paths: version: type: string format: byte + created_at: + type: string + format: int64 title: >- Deployment stores deploymentID, state and version details @@ -362,8 +432,7 @@ paths: enum: - invalid - open - - ordered - - matched + - paused - insufficient_funds - closed default: invalid @@ -371,8 +440,7 @@ paths: - invalid: Prefix should start with 0 in enum. So declaring dummy state - open: GroupOpen denotes state for group open - - ordered: GroupOrdered denotes state for group ordered - - matched: GroupMatched denotes state for group matched + - paused: GroupOrdered denotes state for group ordered - insufficient_funds: GroupInsufficientFunds denotes state for group insufficient_funds - closed: GroupClosed denotes state for group closed title: State is an enum which refers to state of group @@ -505,6 +573,20 @@ paths: type: array items: type: object + properties: + kind: + type: string + enum: + - SHARED_HTTP + - RANDOM_PORT + default: SHARED_HTTP + description: >- + - SHARED_HTTP: Describes an endpoint + that becomes a Kubernetes Ingress + - RANDOM_PORT: Describes an endpoint that becomes a Kubernetes NodePort + title: >- + This describes how the endpoint is + implemented when the lease is deployed title: >- Endpoint describes a publicly accessible IP service @@ -536,19 +618,79 @@ paths: title: >- Resource stores unit, total count and price of resource - order_bid_duration: - type: string - format: int64 title: GroupSpec stores group specifications + created_at: + type: string + format: int64 title: >- Group stores group id, state and specifications of group - version: - type: string - format: byte + escrow_account: + type: object + properties: + id: + type: object + properties: + scope: + type: string + xid: + type: string + title: AccountID is the account identifier + owner: + type: string + state: + type: string + enum: + - invalid + - open + - closed + - overdrawn + default: invalid + description: |- + - invalid: AccountStateInvalid is an invalid state + - open: AccountOpen is the state when an account is open + - closed: AccountClosed is the state when an account is closed + - overdrawn: AccountOverdrawn is the state when an account is overdrawn + title: State stores state for an escrow account + balance: + type: object + properties: + denom: + type: string + amount: + type: string + description: >- + Coin defines a token with a denomination and an + amount. + + + NOTE: The amount field is an Int which implements + the custom method + + signatures required by gogoproto. + transferred: + type: object + properties: + denom: + type: string + amount: + type: string + description: >- + Coin defines a token with a denomination and an + amount. + + + NOTE: The amount field is an Int which implements + the custom method + + signatures required by gogoproto. + settled_at: + type: string + format: int64 + title: Account stores state for an escrow account title: >- - DeploymentResponse represents details of deployment along - with group details + QueryDeploymentResponse is response type for the + Query/Deployment RPC method pagination: type: object properties: @@ -580,7 +722,7 @@ paths: QueryDeploymentsResponse is response type for the Query/Deployments RPC method default: - description: An unexpected error response + description: An unexpected error response. schema: type: object properties: @@ -661,7 +803,13 @@ paths: in: query required: false type: boolean - format: boolean + - name: pagination.reverse + description: >- + reverse is set to true indicates that, results to be returned in the + descending order. + in: query + required: false + type: boolean tags: - Query /akash/deployment/v1beta1/groups/info: @@ -696,8 +844,7 @@ paths: enum: - invalid - open - - ordered - - matched + - paused - insufficient_funds - closed default: invalid @@ -705,8 +852,7 @@ paths: - invalid: Prefix should start with 0 in enum. So declaring dummy state - open: GroupOpen denotes state for group open - - ordered: GroupOrdered denotes state for group ordered - - matched: GroupMatched denotes state for group matched + - paused: GroupOrdered denotes state for group ordered - insufficient_funds: GroupInsufficientFunds denotes state for group insufficient_funds - closed: GroupClosed denotes state for group closed title: State is an enum which refers to state of group @@ -839,6 +985,20 @@ paths: type: array items: type: object + properties: + kind: + type: string + enum: + - SHARED_HTTP + - RANDOM_PORT + default: SHARED_HTTP + description: >- + - SHARED_HTTP: Describes an endpoint + that becomes a Kubernetes Ingress + - RANDOM_PORT: Describes an endpoint that becomes a Kubernetes NodePort + title: >- + This describes how the endpoint is + implemented when the lease is deployed title: >- Endpoint describes a publicly accessible IP service @@ -870,14 +1030,14 @@ paths: title: >- Resource stores unit, total count and price of resource - order_bid_duration: - type: string - format: int64 title: GroupSpec stores group specifications + created_at: + type: string + format: int64 title: 'Group stores group id, state and specifications of group' title: QueryGroupResponse is response type for the Query/Group RPC method default: - description: An unexpected error response + description: An unexpected error response. schema: type: object properties: @@ -952,7 +1112,7 @@ paths: enum: - invalid - open - - matched + - active - lost - closed default: invalid @@ -960,7 +1120,7 @@ paths: - invalid: Prefix should start with 0 in enum. So declaring dummy state - open: BidOpen denotes state for bid open - - matched: BidMatched denotes state for bid open + - active: BidMatched denotes state for bid open - lost: BidLost denotes state for bid lost - closed: BidClosed denotes state for bid closed title: State is an enum which refers to state of bid @@ -979,10 +1139,74 @@ paths: custom method signatures required by gogoproto. + created_at: + type: string + format: int64 title: 'Bid stores BidID, state of bid and price' + escrow_account: + type: object + properties: + id: + type: object + properties: + scope: + type: string + xid: + type: string + title: AccountID is the account identifier + owner: + type: string + state: + type: string + enum: + - invalid + - open + - closed + - overdrawn + default: invalid + description: |- + - invalid: AccountStateInvalid is an invalid state + - open: AccountOpen is the state when an account is open + - closed: AccountClosed is the state when an account is closed + - overdrawn: AccountOverdrawn is the state when an account is overdrawn + title: State stores state for an escrow account + balance: + type: object + properties: + denom: + type: string + amount: + type: string + description: >- + Coin defines a token with a denomination and an amount. + + + NOTE: The amount field is an Int which implements the + custom method + + signatures required by gogoproto. + transferred: + type: object + properties: + denom: + type: string + amount: + type: string + description: >- + Coin defines a token with a denomination and an amount. + + + NOTE: The amount field is an Int which implements the + custom method + + signatures required by gogoproto. + settled_at: + type: string + format: int64 + title: Account stores state for an escrow account title: QueryBidResponse is response type for the Query/Bid RPC method default: - description: An unexpected error response + description: An unexpected error response. schema: type: object properties: @@ -1044,58 +1268,131 @@ paths: items: type: object properties: - bid_id: + bid: type: object properties: - owner: + bid_id: + type: object + properties: + owner: + type: string + dseq: + type: string + format: uint64 + gseq: + type: integer + format: int64 + oseq: + type: integer + format: int64 + provider: + type: string + description: |- + BidID stores owner and all other seq numbers + A successful bid becomes a Lease(ID). + state: type: string - dseq: + enum: + - invalid + - open + - active + - lost + - closed + default: invalid + description: >- + - invalid: Prefix should start with 0 in enum. So + declaring dummy state + - open: BidOpen denotes state for bid open + - active: BidMatched denotes state for bid open + - lost: BidLost denotes state for bid lost + - closed: BidClosed denotes state for bid closed + title: State is an enum which refers to state of bid + price: + type: object + properties: + denom: + type: string + amount: + type: string + description: >- + Coin defines a token with a denomination and an + amount. + + + NOTE: The amount field is an Int which implements + the custom method + + signatures required by gogoproto. + created_at: type: string - format: uint64 - gseq: - type: integer - format: int64 - oseq: - type: integer format: int64 - provider: - type: string - description: |- - BidID stores owner and all other seq numbers - A successful bid becomes a Lease(ID). - state: - type: string - enum: - - invalid - - open - - matched - - lost - - closed - default: invalid - description: >- - - invalid: Prefix should start with 0 in enum. So - declaring dummy state - - open: BidOpen denotes state for bid open - - matched: BidMatched denotes state for bid open - - lost: BidLost denotes state for bid lost - - closed: BidClosed denotes state for bid closed - title: State is an enum which refers to state of bid - price: + title: 'Bid stores BidID, state of bid and price' + escrow_account: type: object properties: - denom: + id: + type: object + properties: + scope: + type: string + xid: + type: string + title: AccountID is the account identifier + owner: type: string - amount: + state: type: string - description: >- - Coin defines a token with a denomination and an amount. + enum: + - invalid + - open + - closed + - overdrawn + default: invalid + description: |- + - invalid: AccountStateInvalid is an invalid state + - open: AccountOpen is the state when an account is open + - closed: AccountClosed is the state when an account is closed + - overdrawn: AccountOverdrawn is the state when an account is overdrawn + title: State stores state for an escrow account + balance: + type: object + properties: + denom: + type: string + amount: + type: string + description: >- + Coin defines a token with a denomination and an + amount. - NOTE: The amount field is an Int which implements the - custom method + NOTE: The amount field is an Int which implements + the custom method - signatures required by gogoproto. - title: 'Bid stores BidID, state of bid and price' + signatures required by gogoproto. + transferred: + type: object + properties: + denom: + type: string + amount: + type: string + description: >- + Coin defines a token with a denomination and an + amount. + + + NOTE: The amount field is an Int which implements + the custom method + + signatures required by gogoproto. + settled_at: + type: string + format: int64 + title: Account stores state for an escrow account + title: >- + QueryBidResponse is response type for the Query/Bid RPC + method pagination: type: object properties: @@ -1125,7 +1422,7 @@ paths: } title: QueryBidsResponse is response type for the Query/Bids RPC method default: - description: An unexpected error response + description: An unexpected error response. schema: type: object properties: @@ -1220,7 +1517,13 @@ paths: in: query required: false type: boolean - format: boolean + - name: pagination.reverse + description: >- + reverse is set to true indicates that, results to be returned in the + descending order. + in: query + required: false + type: boolean tags: - Query /akash/market/v1beta1/leases/info: @@ -1283,10 +1586,89 @@ paths: custom method signatures required by gogoproto. + created_at: + type: string + format: int64 title: 'Lease stores LeaseID, state of lease and price' + escrow_payment: + type: object + properties: + account_id: + type: object + properties: + scope: + type: string + xid: + type: string + title: AccountID is the account identifier + payment_id: + type: string + owner: + type: string + state: + type: string + enum: + - invalid + - open + - closed + - overdrawn + default: invalid + description: >- + - invalid: PaymentStateInvalid is the state when the + payment is invalid + - open: PaymentStateOpen is the state when the payment is open + - closed: PaymentStateClosed is the state when the payment is closed + - overdrawn: PaymentStateOverdrawn is the state when the payment is overdrawn + title: Payment State + rate: + type: object + properties: + denom: + type: string + amount: + type: string + description: >- + Coin defines a token with a denomination and an amount. + + + NOTE: The amount field is an Int which implements the + custom method + + signatures required by gogoproto. + balance: + type: object + properties: + denom: + type: string + amount: + type: string + description: >- + Coin defines a token with a denomination and an amount. + + + NOTE: The amount field is an Int which implements the + custom method + + signatures required by gogoproto. + withdrawn: + type: object + properties: + denom: + type: string + amount: + type: string + description: >- + Coin defines a token with a denomination and an amount. + + + NOTE: The amount field is an Int which implements the + custom method + + signatures required by gogoproto. + title: Payment stores state for a payment title: QueryLeaseResponse is response type for the Query/Lease RPC method default: - description: An unexpected error response + description: An unexpected error response. schema: type: object properties: @@ -1348,54 +1730,143 @@ paths: items: type: object properties: - lease_id: + lease: type: object properties: - owner: + lease_id: + type: object + properties: + owner: + type: string + dseq: + type: string + format: uint64 + gseq: + type: integer + format: int64 + oseq: + type: integer + format: int64 + provider: + type: string + title: LeaseID stores bid details of lease + state: type: string - dseq: + enum: + - invalid + - active + - insufficient_funds + - closed + default: invalid + description: >- + - invalid: Prefix should start with 0 in enum. So + declaring dummy state + - active: LeaseActive denotes state for lease active + - insufficient_funds: LeaseInsufficientFunds denotes state for lease insufficient_funds + - closed: LeaseClosed denotes state for lease closed + title: State is an enum which refers to state of lease + price: + type: object + properties: + denom: + type: string + amount: + type: string + description: >- + Coin defines a token with a denomination and an + amount. + + + NOTE: The amount field is an Int which implements + the custom method + + signatures required by gogoproto. + created_at: type: string - format: uint64 - gseq: - type: integer format: int64 - oseq: - type: integer - format: int64 - provider: - type: string - title: LeaseID stores bid details of lease - state: - type: string - enum: - - invalid - - active - - insufficient_funds - - closed - default: invalid - description: >- - - invalid: Prefix should start with 0 in enum. So - declaring dummy state - - active: LeaseActive denotes state for lease active - - insufficient_funds: LeaseInsufficientFunds denotes state for lease insufficient_funds - - closed: LeaseClosed denotes state for lease closed - title: State is an enum which refers to state of lease - price: + title: 'Lease stores LeaseID, state of lease and price' + escrow_payment: type: object properties: - denom: + account_id: + type: object + properties: + scope: + type: string + xid: + type: string + title: AccountID is the account identifier + payment_id: type: string - amount: + owner: type: string - description: >- - Coin defines a token with a denomination and an amount. + state: + type: string + enum: + - invalid + - open + - closed + - overdrawn + default: invalid + description: >- + - invalid: PaymentStateInvalid is the state when the + payment is invalid + - open: PaymentStateOpen is the state when the payment is open + - closed: PaymentStateClosed is the state when the payment is closed + - overdrawn: PaymentStateOverdrawn is the state when the payment is overdrawn + title: Payment State + rate: + type: object + properties: + denom: + type: string + amount: + type: string + description: >- + Coin defines a token with a denomination and an + amount. - NOTE: The amount field is an Int which implements the - custom method + NOTE: The amount field is an Int which implements + the custom method - signatures required by gogoproto. - title: 'Lease stores LeaseID, state of lease and price' + signatures required by gogoproto. + balance: + type: object + properties: + denom: + type: string + amount: + type: string + description: >- + Coin defines a token with a denomination and an + amount. + + + NOTE: The amount field is an Int which implements + the custom method + + signatures required by gogoproto. + withdrawn: + type: object + properties: + denom: + type: string + amount: + type: string + description: >- + Coin defines a token with a denomination and an + amount. + + + NOTE: The amount field is an Int which implements + the custom method + + signatures required by gogoproto. + title: Payment stores state for a payment + title: >- + QueryLeaseResponse is response type for the Query/Lease RPC + method pagination: type: object properties: @@ -1427,7 +1898,7 @@ paths: QueryLeasesResponse is response type for the Query/Leases RPC method default: - description: An unexpected error response + description: An unexpected error response. schema: type: object properties: @@ -1522,7 +1993,13 @@ paths: in: query required: false type: boolean - format: boolean + - name: pagination.reverse + description: >- + reverse is set to true indicates that, results to be returned in the + descending order. + in: query + required: false + type: boolean tags: - Query /akash/market/v1beta1/orders/info: @@ -1558,19 +2035,16 @@ paths: enum: - invalid - open - - matched + - active - closed default: invalid description: >- - invalid: Prefix should start with 0 in enum. So declaring dummy state - open: OrderOpen denotes state for order open - - matched: OrderMatched denotes state for order matched + - active: OrderMatched denotes state for order matched - closed: OrderClosed denotes state for order lost title: State is an enum which refers to state of order - start_at: - type: string - format: int64 spec: type: object properties: @@ -1700,6 +2174,20 @@ paths: type: array items: type: object + properties: + kind: + type: string + enum: + - SHARED_HTTP + - RANDOM_PORT + default: SHARED_HTTP + description: >- + - SHARED_HTTP: Describes an endpoint + that becomes a Kubernetes Ingress + - RANDOM_PORT: Describes an endpoint that becomes a Kubernetes NodePort + title: >- + This describes how the endpoint is + implemented when the lease is deployed title: >- Endpoint describes a publicly accessible IP service @@ -1731,17 +2219,14 @@ paths: title: >- Resource stores unit, total count and price of resource - order_bid_duration: - type: string - format: int64 title: GroupSpec stores group specifications - close_at: + created_at: type: string format: int64 title: 'Order stores orderID, state of order and other details' title: QueryOrderResponse is response type for the Query/Order RPC method default: - description: An unexpected error response + description: An unexpected error response. schema: type: object properties: @@ -1819,19 +2304,16 @@ paths: enum: - invalid - open - - matched + - active - closed default: invalid description: >- - invalid: Prefix should start with 0 in enum. So declaring dummy state - open: OrderOpen denotes state for order open - - matched: OrderMatched denotes state for order matched + - active: OrderMatched denotes state for order matched - closed: OrderClosed denotes state for order lost title: State is an enum which refers to state of order - start_at: - type: string - format: int64 spec: type: object properties: @@ -1961,6 +2443,20 @@ paths: type: array items: type: object + properties: + kind: + type: string + enum: + - SHARED_HTTP + - RANDOM_PORT + default: SHARED_HTTP + description: >- + - SHARED_HTTP: Describes an endpoint + that becomes a Kubernetes Ingress + - RANDOM_PORT: Describes an endpoint that becomes a Kubernetes NodePort + title: >- + This describes how the endpoint is + implemented when the lease is deployed title: >- Endpoint describes a publicly accessible IP service @@ -1992,11 +2488,8 @@ paths: title: >- Resource stores unit, total count and price of resource - order_bid_duration: - type: string - format: int64 title: GroupSpec stores group specifications - close_at: + created_at: type: string format: int64 title: 'Order stores orderID, state of order and other details' @@ -2031,7 +2524,7 @@ paths: QueryOrdersResponse is response type for the Query/Orders RPC method default: - description: An unexpected error response + description: An unexpected error response. schema: type: object properties: @@ -2122,7 +2615,13 @@ paths: in: query required: false type: boolean - format: boolean + - name: pagination.reverse + description: >- + reverse is set to true indicates that, results to be returned in the + descending order. + in: query + required: false + type: boolean tags: - Query /akash/provider/v1beta1/providers: @@ -2154,6 +2653,14 @@ paths: value: type: string title: Attribute represents key value pair + info: + type: object + properties: + email: + type: string + website: + type: string + title: ProviderInfo title: Provider stores owner and host details pagination: type: object @@ -2186,7 +2693,7 @@ paths: QueryProvidersResponse is response type for the Query/Providers RPC method default: - description: An unexpected error response + description: An unexpected error response. schema: type: object properties: @@ -2254,7 +2761,13 @@ paths: in: query required: false type: boolean - format: boolean + - name: pagination.reverse + description: >- + reverse is set to true indicates that, results to be returned in the + descending order. + in: query + required: false + type: boolean tags: - Query '/akash/provider/v1beta1/providers/{owner}': @@ -2284,12 +2797,20 @@ paths: value: type: string title: Attribute represents key value pair + info: + type: object + properties: + email: + type: string + website: + type: string + title: ProviderInfo title: Provider stores owner and host details title: >- QueryProviderResponse is response type for the Query/Provider RPC method default: - description: An unexpected error response + description: An unexpected error response. schema: type: object properties: @@ -3708,6 +4229,57 @@ paths: description: Invalid request '500': description: Server internal error + /bank/total: + get: + deprecated: true + summary: Total supply of coins in the chain + tags: + - Bank + produces: + - application/json + responses: + '200': + description: OK + schema: + type: object + properties: + total: + type: array + items: + type: object + properties: + denom: + type: string + example: stake + amount: + type: string + example: '50' + '500': + description: Internal Server Error + '/bank/total/{denomination}': + parameters: + - in: path + name: denomination + description: Coin denomination + required: true + type: string + x-example: uatom + get: + deprecated: true + summary: Total supply of a single coin denomination + tags: + - Bank + produces: + - application/json + responses: + '200': + description: OK + schema: + type: string + '400': + description: Invalid coin denomination + '500': + description: Internal Server Error '/auth/accounts/{address}': get: deprecated: true @@ -3807,7 +4379,7 @@ paths: parameters: - in: body name: delegation - description: The password of the account to remove from the KMS + description: Delegate an amount of liquid coins to a validator schema: type: object properties: @@ -3861,7 +4433,7 @@ paths: type: string description: bech32 encoded address example: cosmosvaloper16xyempempp92x9hyzz9wrgf94r6j9h5f2w4n2l - delegation: + amount: type: object properties: denom: @@ -4022,7 +4594,7 @@ paths: parameters: - in: body name: delegation - description: The password of the account to remove from the KMS + description: Unbond an amount of bonded shares from a validator schema: type: object properties: @@ -4076,9 +4648,15 @@ paths: type: string description: bech32 encoded address example: cosmosvaloper16xyempempp92x9hyzz9wrgf94r6j9h5f2w4n2l - shares: - type: string - example: '100' + amount: + type: object + properties: + denom: + type: string + example: stake + amount: + type: string + example: '50' tags: - Staking consumes: @@ -6876,150 +7454,17 @@ paths: type: string '500': description: Internal Server Error - /supply/total: - get: - deprecated: true - summary: Total supply of coins in the chain - tags: - - Supply - produces: - - application/json - responses: - '200': - description: OK - schema: - type: object - properties: - total: - type: array - items: - type: object - properties: - denom: - type: string - example: stake - amount: - type: string - example: '50' - '500': - description: Internal Server Error - '/supply/total/{denomination}': - parameters: - - in: path - name: denomination - description: Coin denomination - required: true - type: string - x-example: uatom - get: - deprecated: true - summary: Total supply of a single coin denomination - tags: - - Supply - produces: - - application/json - responses: - '200': - description: OK - schema: - type: string - '400': - description: Invalid coin denomination - '500': - description: Internal Server Error - '/cosmos/auth/v1beta1/accounts/{address}': + /cosmos/auth/v1beta1/accounts: get: - summary: Account returns account details based on address. - operationId: Account + summary: Accounts returns all the existing accounts + operationId: Accounts responses: '200': description: A successful response. schema: type: object properties: - account: - description: account defines the account of the corresponding address. - type: object - properties: - type_url: - type: string - description: >- - A URL/resource name that uniquely identifies the type of - the serialized - - protocol buffer message. This string must contain at least - - one "/" character. The last segment of the URL's path must - represent - - the fully qualified name of the type (as in - - `path/google.protobuf.Duration`). The name should be in a - canonical form - - (e.g., leading "." is not accepted). - - - In practice, teams usually precompile into the binary all - types that they - - expect it to use in the context of Any. However, for URLs - which use the - - scheme `http`, `https`, or no scheme, one can optionally - set up a type - - server that maps type URLs to message definitions as - follows: - - - * If no scheme is provided, `https` is assumed. - - * An HTTP GET on the URL must yield a - [google.protobuf.Type][] - value in binary format, or produce an error. - * Applications are allowed to cache lookup results based - on the - URL, or have them precompiled into a binary to avoid any - lookup. Therefore, binary compatibility needs to be preserved - on changes to types. (Use versioned type names to manage - breaking changes.) - - Note: this functionality is not currently available in the - official - - protobuf release, and it is not used for type URLs - beginning with - - type.googleapis.com. - - - Schemes other than `http`, `https` (or the empty scheme) - might be - - used with implementation specific semantics. - value: - type: string - format: byte - description: >- - Must be a valid serialized protocol buffer of the above - specified type. - description: >- - QueryAccountResponse is the response type for the Query/Account - RPC method. - default: - description: An unexpected error response. - schema: - type: object - properties: - error: - type: string - code: - type: integer - format: int32 - message: - type: string - details: + accounts: type: array items: type: object @@ -7196,48 +7641,30 @@ paths: "@type": "type.googleapis.com/google.protobuf.Duration", "value": "1.212s" } - parameters: - - name: address - description: address defines the address to query for. - in: path - required: true - type: string - tags: - - Query - /cosmos/auth/v1beta1/params: - get: - summary: Params queries all parameters. - operationId: AuthParams - responses: - '200': - description: A successful response. - schema: - type: object - properties: - params: - description: params defines the parameters of the module. + title: accounts are the existing accounts + pagination: + description: pagination defines the pagination in the response. type: object properties: - max_memo_characters: - type: string - format: uint64 - tx_sig_limit: - type: string - format: uint64 - tx_size_cost_per_byte: - type: string - format: uint64 - sig_verify_cost_ed25519: + next_key: type: string - format: uint64 - sig_verify_cost_secp256k1: + format: byte + title: |- + next_key is the key to be passed to PageRequest.key to + query the next page most efficiently + total: type: string format: uint64 + title: >- + total is total number of results available if + PageRequest.count_total + + was set, its value is undefined otherwise description: >- - QueryParamsResponse is the response type for the Query/Params RPC - method. + QueryAccountsResponse is the response type for the Query/Accounts + RPC method. default: - description: An unexpected error response. + description: An unexpected error response schema: type: object properties: @@ -7425,87 +7852,7 @@ paths: "@type": "type.googleapis.com/google.protobuf.Duration", "value": "1.212s" } - tags: - - Query - '/cosmos/bank/v1beta1/balances/{address}': - get: - summary: AllBalances queries the balance of all coins for a single account. - operationId: AllBalances - responses: - '200': - description: A successful response. - schema: - type: object - properties: - balances: - type: array - items: - type: object - properties: - denom: - type: string - amount: - type: string - description: >- - Coin defines a token with a denomination and an amount. - - - NOTE: The amount field is an Int which implements the custom - method - - signatures required by gogoproto. - description: balances is the balances of all the coins. - pagination: - description: pagination defines the pagination in the response. - type: object - properties: - next_key: - type: string - format: byte - title: |- - next_key is the key to be passed to PageRequest.key to - query the next page most efficiently - total: - type: string - format: uint64 - title: >- - total is total number of results available if - PageRequest.count_total - - was set, its value is undefined otherwise - description: >- - QueryAllBalancesResponse is the response type for the - Query/AllBalances RPC - - method. - default: - description: An unexpected error response. - schema: - type: object - properties: - error: - type: string - code: - type: integer - format: int32 - message: - type: string - details: - type: array - items: - type: object - properties: - type_url: - type: string - value: - type: string - format: byte parameters: - - name: address - description: address is the address to query balances for. - in: path - required: true - type: string - name: pagination.key description: |- key is a value returned in PageResponse.next_key to begin @@ -7552,31 +7899,203 @@ paths: in: query required: false type: boolean + format: boolean + - name: pagination.reverse + description: >- + reverse is set to true indicates that, results to be returned in the + descending order. + in: query + required: false + type: boolean + format: boolean tags: - Query - '/cosmos/bank/v1beta1/balances/{address}/{denom}': + '/cosmos/auth/v1beta1/accounts/{address}': get: - summary: Balance queries the balance of a single coin for a single account. - operationId: Balance + summary: Account returns account details based on address. + operationId: Account responses: '200': description: A successful response. schema: type: object properties: - balance: - description: balance is the balance of the coin. + account: type: object properties: - denom: + type_url: type: string - amount: + description: >- + A URL/resource name that uniquely identifies the type of + the serialized + + protocol buffer message. This string must contain at least + + one "/" character. The last segment of the URL's path must + represent + + the fully qualified name of the type (as in + + `path/google.protobuf.Duration`). The name should be in a + canonical form + + (e.g., leading "." is not accepted). + + + In practice, teams usually precompile into the binary all + types that they + + expect it to use in the context of Any. However, for URLs + which use the + + scheme `http`, `https`, or no scheme, one can optionally + set up a type + + server that maps type URLs to message definitions as + follows: + + + * If no scheme is provided, `https` is assumed. + + * An HTTP GET on the URL must yield a + [google.protobuf.Type][] + value in binary format, or produce an error. + * Applications are allowed to cache lookup results based + on the + URL, or have them precompiled into a binary to avoid any + lookup. Therefore, binary compatibility needs to be preserved + on changes to types. (Use versioned type names to manage + breaking changes.) + + Note: this functionality is not currently available in the + official + + protobuf release, and it is not used for type URLs + beginning with + + type.googleapis.com. + + + Schemes other than `http`, `https` (or the empty scheme) + might be + + used with implementation specific semantics. + value: type: string + format: byte + description: >- + Must be a valid serialized protocol buffer of the above + specified type. + description: >- + `Any` contains an arbitrary serialized protocol buffer message + along with a + + URL that describes the type of the serialized message. + + + Protobuf library provides support to pack/unpack Any values in + the form + + of utility functions or additional generated methods of the + Any type. + + + Example 1: Pack and unpack a message in C++. + + Foo foo = ...; + Any any; + any.PackFrom(foo); + ... + if (any.UnpackTo(&foo)) { + ... + } + + Example 2: Pack and unpack a message in Java. + + Foo foo = ...; + Any any = Any.pack(foo); + ... + if (any.is(Foo.class)) { + foo = any.unpack(Foo.class); + } + + Example 3: Pack and unpack a message in Python. + + foo = Foo(...) + any = Any() + any.Pack(foo) + ... + if any.Is(Foo.DESCRIPTOR): + any.Unpack(foo) + ... + + Example 4: Pack and unpack a message in Go + + foo := &pb.Foo{...} + any, err := ptypes.MarshalAny(foo) + ... + foo := &pb.Foo{} + if err := ptypes.UnmarshalAny(any, foo); err != nil { + ... + } + + The pack methods provided by protobuf library will by default + use + + 'type.googleapis.com/full.type.name' as the type URL and the + unpack + + methods only use the fully qualified type name after the last + '/' + + in the type URL, for example "foo.bar.com/x/y.z" will yield + type + + name "y.z". + + + + JSON + + ==== + + The JSON representation of an `Any` value uses the regular + + representation of the deserialized, embedded message, with an + + additional field `@type` which contains the type URL. Example: + + package google.profile; + message Person { + string first_name = 1; + string last_name = 2; + } + + { + "@type": "type.googleapis.com/google.profile.Person", + "firstName": , + "lastName": + } + + If the embedded message type is well-known and has a custom + JSON + + representation, that representation will be embedded adding a + field + + `value` which holds the custom JSON in addition to the `@type` + + field. Example (for message [google.protobuf.Duration][]): + + { + "@type": "type.googleapis.com/google.protobuf.Duration", + "value": "1.212s" + } description: >- - QueryBalanceResponse is the response type for the Query/Balance + QueryAccountResponse is the response type for the Query/Account RPC method. default: - description: An unexpected error response. + description: An unexpected error response schema: type: object properties: @@ -7594,26 +8113,188 @@ paths: properties: type_url: type: string + description: >- + A URL/resource name that uniquely identifies the type of + the serialized + + protocol buffer message. This string must contain at + least + + one "/" character. The last segment of the URL's path + must represent + + the fully qualified name of the type (as in + + `path/google.protobuf.Duration`). The name should be in + a canonical form + + (e.g., leading "." is not accepted). + + + In practice, teams usually precompile into the binary + all types that they + + expect it to use in the context of Any. However, for + URLs which use the + + scheme `http`, `https`, or no scheme, one can optionally + set up a type + + server that maps type URLs to message definitions as + follows: + + + * If no scheme is provided, `https` is assumed. + + * An HTTP GET on the URL must yield a + [google.protobuf.Type][] + value in binary format, or produce an error. + * Applications are allowed to cache lookup results based + on the + URL, or have them precompiled into a binary to avoid any + lookup. Therefore, binary compatibility needs to be preserved + on changes to types. (Use versioned type names to manage + breaking changes.) + + Note: this functionality is not currently available in + the official + + protobuf release, and it is not used for type URLs + beginning with + + type.googleapis.com. + + + Schemes other than `http`, `https` (or the empty scheme) + might be + + used with implementation specific semantics. value: type: string format: byte + description: >- + Must be a valid serialized protocol buffer of the above + specified type. + description: >- + `Any` contains an arbitrary serialized protocol buffer + message along with a + + URL that describes the type of the serialized message. + + + Protobuf library provides support to pack/unpack Any values + in the form + + of utility functions or additional generated methods of the + Any type. + + + Example 1: Pack and unpack a message in C++. + + Foo foo = ...; + Any any; + any.PackFrom(foo); + ... + if (any.UnpackTo(&foo)) { + ... + } + + Example 2: Pack and unpack a message in Java. + + Foo foo = ...; + Any any = Any.pack(foo); + ... + if (any.is(Foo.class)) { + foo = any.unpack(Foo.class); + } + + Example 3: Pack and unpack a message in Python. + + foo = Foo(...) + any = Any() + any.Pack(foo) + ... + if any.Is(Foo.DESCRIPTOR): + any.Unpack(foo) + ... + + Example 4: Pack and unpack a message in Go + + foo := &pb.Foo{...} + any, err := ptypes.MarshalAny(foo) + ... + foo := &pb.Foo{} + if err := ptypes.UnmarshalAny(any, foo); err != nil { + ... + } + + The pack methods provided by protobuf library will by + default use + + 'type.googleapis.com/full.type.name' as the type URL and the + unpack + + methods only use the fully qualified type name after the + last '/' + + in the type URL, for example "foo.bar.com/x/y.z" will yield + type + + name "y.z". + + + + JSON + + ==== + + The JSON representation of an `Any` value uses the regular + + representation of the deserialized, embedded message, with + an + + additional field `@type` which contains the type URL. + Example: + + package google.profile; + message Person { + string first_name = 1; + string last_name = 2; + } + + { + "@type": "type.googleapis.com/google.profile.Person", + "firstName": , + "lastName": + } + + If the embedded message type is well-known and has a custom + JSON + + representation, that representation will be embedded adding + a field + + `value` which holds the custom JSON in addition to the + `@type` + + field. Example (for message [google.protobuf.Duration][]): + + { + "@type": "type.googleapis.com/google.protobuf.Duration", + "value": "1.212s" + } parameters: - name: address - description: address is the address to query balances for. - in: path - required: true - type: string - - name: denom - description: denom is the coin denom to query balances for. + description: address defines the address to query for. in: path required: true type: string tags: - Query - /cosmos/bank/v1beta1/params: + /cosmos/auth/v1beta1/params: get: - summary: Params queries the parameters of x/bank module. - operationId: BankParams + summary: Params queries all parameters. + operationId: AuthParams responses: '200': description: A successful response. @@ -7621,30 +8302,29 @@ paths: type: object properties: params: + description: params defines the parameters of the module. type: object properties: - send_enabled: - type: array - items: - type: object - properties: - denom: - type: string - enabled: - type: boolean - description: >- - SendEnabled maps coin denom to a send_enabled status - (whether a denom is - - sendable). - default_send_enabled: - type: boolean - description: Params defines the parameters for the bank module. + max_memo_characters: + type: string + format: uint64 + tx_sig_limit: + type: string + format: uint64 + tx_size_cost_per_byte: + type: string + format: uint64 + sig_verify_cost_ed25519: + type: string + format: uint64 + sig_verify_cost_secp256k1: + type: string + format: uint64 description: >- - QueryParamsResponse defines the response type for querying x/bank - parameters. + QueryParamsResponse is the response type for the Query/Params RPC + method. default: - description: An unexpected error response. + description: An unexpected error response schema: type: object properties: @@ -7662,46 +8342,231 @@ paths: properties: type_url: type: string - value: - type: string - format: byte - tags: - - Query - /cosmos/bank/v1beta1/supply: - get: - summary: TotalSupply queries the total supply of all coins. - operationId: TotalSupply - responses: - '200': - description: A successful response. - schema: - type: object - properties: - supply: - type: array - items: - type: object - properties: - denom: - type: string - amount: - type: string - description: >- - Coin defines a token with a denomination and an amount. - + description: >- + A URL/resource name that uniquely identifies the type of + the serialized + + protocol buffer message. This string must contain at + least + + one "/" character. The last segment of the URL's path + must represent + + the fully qualified name of the type (as in + + `path/google.protobuf.Duration`). The name should be in + a canonical form + + (e.g., leading "." is not accepted). + + + In practice, teams usually precompile into the binary + all types that they + + expect it to use in the context of Any. However, for + URLs which use the + + scheme `http`, `https`, or no scheme, one can optionally + set up a type + + server that maps type URLs to message definitions as + follows: + + + * If no scheme is provided, `https` is assumed. + + * An HTTP GET on the URL must yield a + [google.protobuf.Type][] + value in binary format, or produce an error. + * Applications are allowed to cache lookup results based + on the + URL, or have them precompiled into a binary to avoid any + lookup. Therefore, binary compatibility needs to be preserved + on changes to types. (Use versioned type names to manage + breaking changes.) + + Note: this functionality is not currently available in + the official + + protobuf release, and it is not used for type URLs + beginning with + + type.googleapis.com. + + + Schemes other than `http`, `https` (or the empty scheme) + might be + + used with implementation specific semantics. + value: + type: string + format: byte + description: >- + Must be a valid serialized protocol buffer of the above + specified type. + description: >- + `Any` contains an arbitrary serialized protocol buffer + message along with a + + URL that describes the type of the serialized message. + + + Protobuf library provides support to pack/unpack Any values + in the form + + of utility functions or additional generated methods of the + Any type. + + + Example 1: Pack and unpack a message in C++. + + Foo foo = ...; + Any any; + any.PackFrom(foo); + ... + if (any.UnpackTo(&foo)) { + ... + } + + Example 2: Pack and unpack a message in Java. + + Foo foo = ...; + Any any = Any.pack(foo); + ... + if (any.is(Foo.class)) { + foo = any.unpack(Foo.class); + } + + Example 3: Pack and unpack a message in Python. + + foo = Foo(...) + any = Any() + any.Pack(foo) + ... + if any.Is(Foo.DESCRIPTOR): + any.Unpack(foo) + ... + + Example 4: Pack and unpack a message in Go + + foo := &pb.Foo{...} + any, err := ptypes.MarshalAny(foo) + ... + foo := &pb.Foo{} + if err := ptypes.UnmarshalAny(any, foo); err != nil { + ... + } + + The pack methods provided by protobuf library will by + default use + + 'type.googleapis.com/full.type.name' as the type URL and the + unpack + + methods only use the fully qualified type name after the + last '/' + + in the type URL, for example "foo.bar.com/x/y.z" will yield + type + + name "y.z". + + + + JSON + + ==== + + The JSON representation of an `Any` value uses the regular + + representation of the deserialized, embedded message, with + an + + additional field `@type` which contains the type URL. + Example: + + package google.profile; + message Person { + string first_name = 1; + string last_name = 2; + } + + { + "@type": "type.googleapis.com/google.profile.Person", + "firstName": , + "lastName": + } + + If the embedded message type is well-known and has a custom + JSON + + representation, that representation will be embedded adding + a field + + `value` which holds the custom JSON in addition to the + `@type` + + field. Example (for message [google.protobuf.Duration][]): + + { + "@type": "type.googleapis.com/google.protobuf.Duration", + "value": "1.212s" + } + tags: + - Query + '/cosmos/bank/v1beta1/balances/{address}': + get: + summary: AllBalances queries the balance of all coins for a single account. + operationId: AllBalances + responses: + '200': + description: A successful response. + schema: + type: object + properties: + balances: + type: array + items: + type: object + properties: + denom: + type: string + amount: + type: string + description: >- + Coin defines a token with a denomination and an amount. + NOTE: The amount field is an Int which implements the custom method signatures required by gogoproto. - title: supply is the supply of the coins - title: >- - QueryTotalSupplyResponse is the response type for the - Query/TotalSupply RPC + description: balances is the balances of all the coins. + pagination: + description: pagination defines the pagination in the response. + type: object + properties: + next_key: + type: string + format: byte + title: |- + next_key is the key to be passed to PageRequest.key to + query the next page most efficiently + total: + type: string + format: uint64 + title: >- + total is total number of results available if + PageRequest.count_total - method + was set, its value is undefined otherwise + description: >- + QueryAllBalancesResponse is the response type for the + Query/AllBalances RPC + + method. default: - description: An unexpected error response. + description: An unexpected error response schema: type: object properties: @@ -7722,31 +8587,99 @@ paths: value: type: string format: byte + parameters: + - name: address + description: address is the address to query balances for. + in: path + required: true + type: string + - name: pagination.key + description: |- + key is a value returned in PageResponse.next_key to begin + querying the next page most efficiently. Only one of offset or key + should be set. + in: query + required: false + type: string + format: byte + - name: pagination.offset + description: >- + offset is a numeric offset that can be used when key is unavailable. + + It is less efficient than using key. Only one of offset or key + should + + be set. + in: query + required: false + type: string + format: uint64 + - name: pagination.limit + description: >- + limit is the total number of results to be returned in the result + page. + + If left empty it will default to a value to be set by each app. + in: query + required: false + type: string + format: uint64 + - name: pagination.count_total + description: >- + count_total is set to true to indicate that the result set should + include + + a count of the total number of items available for pagination in + UIs. + + count_total is only respected when offset is used. It is ignored + when key + + is set. + in: query + required: false + type: boolean + format: boolean + - name: pagination.reverse + description: >- + reverse is set to true indicates that, results to be returned in the + descending order. + in: query + required: false + type: boolean + format: boolean tags: - Query - '/cosmos/bank/v1beta1/supply/{denom}': + '/cosmos/bank/v1beta1/balances/{address}/{denom}': get: - summary: SupplyOf queries the supply of a single coin. - operationId: SupplyOf + summary: Balance queries the balance of a single coin for a single account. + operationId: Balance responses: '200': description: A successful response. schema: type: object properties: - amount: - description: amount is the supply of the coin. + balance: type: object properties: denom: type: string amount: type: string + description: >- + Coin defines a token with a denomination and an amount. + + + NOTE: The amount field is an Int which implements the custom + method + + signatures required by gogoproto. description: >- - QuerySupplyOfResponse is the response type for the Query/SupplyOf + QueryBalanceResponse is the response type for the Query/Balance RPC method. default: - description: An unexpected error response. + description: An unexpected error response schema: type: object properties: @@ -7768,6 +8701,11 @@ paths: type: string format: byte parameters: + - name: address + description: address is the address to query balances for. + in: path + required: true + type: string - name: denom description: denom is the coin denom to query balances for. in: path @@ -7775,42 +8713,115 @@ paths: type: string tags: - Query - /cosmos/distribution/v1beta1/community_pool: + /cosmos/bank/v1beta1/denoms_metadata: get: - summary: CommunityPool queries the community pool coins. - operationId: CommunityPool + summary: >- + DenomsMetadata queries the client metadata for all registered coin + denominations. + operationId: DenomsMetadata responses: '200': description: A successful response. schema: type: object properties: - pool: + metadatas: type: array items: type: object properties: - denom: - type: string - amount: + description: type: string - description: >- - DecCoin defines a token with a denomination and a decimal - amount. + denom_units: + type: array + items: + type: object + properties: + denom: + type: string + description: >- + denom represents the string name of the given + denom unit (e.g uatom). + exponent: + type: integer + format: int64 + description: >- + exponent represents power of 10 exponent that one + must + raise the base_denom to in order to equal the + given DenomUnit's denom - NOTE: The amount field is an Dec which implements the custom - method + 1 denom = 1^exponent base_denom - signatures required by gogoproto. - description: pool defines community pool's coins. + (e.g. with a base_denom of uatom, one can create a + DenomUnit of 'atom' with + + exponent = 6, thus: 1 atom = 10^6 uatom). + aliases: + type: array + items: + type: string + title: >- + aliases is a list of string aliases for the given + denom + description: |- + DenomUnit represents a struct that describes a given + denomination unit of the basic token. + title: >- + denom_units represents the list of DenomUnit's for a + given coin + base: + type: string + description: >- + base represents the base denom (should be the DenomUnit + with exponent = 0). + display: + type: string + description: |- + display indicates the suggested denom that should be + displayed in clients. + name: + type: string + title: 'name defines the name of the token (eg: Cosmos Atom)' + symbol: + type: string + description: >- + symbol is the token symbol usually shown on exchanges + (eg: ATOM). This can + + be the same as the display. + description: |- + Metadata represents a struct that describes + a basic token. + description: >- + metadata provides the client information for all the + registered tokens. + pagination: + description: pagination defines the pagination in the response. + type: object + properties: + next_key: + type: string + format: byte + title: |- + next_key is the key to be passed to PageRequest.key to + query the next page most efficiently + total: + type: string + format: uint64 + title: >- + total is total number of results available if + PageRequest.count_total + + was set, its value is undefined otherwise description: >- - QueryCommunityPoolResponse is the response type for the - Query/CommunityPool + QueryDenomsMetadataResponse is the response type for the + Query/DenomsMetadata RPC - RPC method. + method. default: - description: An unexpected error response. + description: An unexpected error response schema: type: object properties: @@ -7831,73 +8842,148 @@ paths: value: type: string format: byte + parameters: + - name: pagination.key + description: |- + key is a value returned in PageResponse.next_key to begin + querying the next page most efficiently. Only one of offset or key + should be set. + in: query + required: false + type: string + format: byte + - name: pagination.offset + description: >- + offset is a numeric offset that can be used when key is unavailable. + + It is less efficient than using key. Only one of offset or key + should + + be set. + in: query + required: false + type: string + format: uint64 + - name: pagination.limit + description: >- + limit is the total number of results to be returned in the result + page. + + If left empty it will default to a value to be set by each app. + in: query + required: false + type: string + format: uint64 + - name: pagination.count_total + description: >- + count_total is set to true to indicate that the result set should + include + + a count of the total number of items available for pagination in + UIs. + + count_total is only respected when offset is used. It is ignored + when key + + is set. + in: query + required: false + type: boolean + format: boolean + - name: pagination.reverse + description: >- + reverse is set to true indicates that, results to be returned in the + descending order. + in: query + required: false + type: boolean + format: boolean tags: - Query - '/cosmos/distribution/v1beta1/delegators/{delegator_address}/rewards': + '/cosmos/bank/v1beta1/denoms_metadata/{denom}': get: - summary: |- - DelegationTotalRewards queries the total rewards accrued by a each - validator. - operationId: DelegationTotalRewards + summary: DenomsMetadata queries the client metadata of a given coin denomination. + operationId: DenomMetadata responses: '200': description: A successful response. schema: type: object properties: - rewards: - type: array - items: - type: object - properties: - validator_address: - type: string - reward: - type: array - items: - type: object - properties: - denom: - type: string - amount: - type: string - description: >- - DecCoin defines a token with a denomination and a - decimal amount. + metadata: + type: object + properties: + description: + type: string + denom_units: + type: array + items: + type: object + properties: + denom: + type: string + description: >- + denom represents the string name of the given denom + unit (e.g uatom). + exponent: + type: integer + format: int64 + description: >- + exponent represents power of 10 exponent that one + must + raise the base_denom to in order to equal the given + DenomUnit's denom - NOTE: The amount field is an Dec which implements the - custom method + 1 denom = 1^exponent base_denom - signatures required by gogoproto. - description: |- - DelegationDelegatorReward represents the properties - of a delegator's delegation reward. - description: rewards defines all the rewards accrued by a delegator. - total: - type: array - items: - type: object - properties: - denom: - type: string - amount: - type: string - description: >- - DecCoin defines a token with a denomination and a decimal - amount. + (e.g. with a base_denom of uatom, one can create a + DenomUnit of 'atom' with + exponent = 6, thus: 1 atom = 10^6 uatom). + aliases: + type: array + items: + type: string + title: >- + aliases is a list of string aliases for the given + denom + description: |- + DenomUnit represents a struct that describes a given + denomination unit of the basic token. + title: >- + denom_units represents the list of DenomUnit's for a given + coin + base: + type: string + description: >- + base represents the base denom (should be the DenomUnit + with exponent = 0). + display: + type: string + description: |- + display indicates the suggested denom that should be + displayed in clients. + name: + type: string + title: 'name defines the name of the token (eg: Cosmos Atom)' + symbol: + type: string + description: >- + symbol is the token symbol usually shown on exchanges (eg: + ATOM). This can - NOTE: The amount field is an Dec which implements the custom - method + be the same as the display. + description: |- + Metadata represents a struct that describes + a basic token. + description: >- + QueryDenomMetadataResponse is the response type for the + Query/DenomMetadata RPC - signatures required by gogoproto. - description: total defines the sum of all the rewards. - description: |- - QueryDelegationTotalRewardsResponse is the response type for the - Query/DelegationTotalRewards RPC method. + method. default: - description: An unexpected error response. + description: An unexpected error response schema: type: object properties: @@ -7919,180 +9005,17 @@ paths: type: string format: byte parameters: - - name: delegator_address - description: delegator_address defines the delegator address to query for. + - name: denom + description: denom is the coin denom to query the metadata for. in: path required: true type: string tags: - Query - '/cosmos/distribution/v1beta1/delegators/{delegator_address}/rewards/{validator_address}': - get: - summary: DelegationRewards queries the total rewards accrued by a delegation. - operationId: DelegationRewards - responses: - '200': - description: A successful response. - schema: - type: object - properties: - rewards: - type: array - items: - type: object - properties: - denom: - type: string - amount: - type: string - description: >- - DecCoin defines a token with a denomination and a decimal - amount. - - - NOTE: The amount field is an Dec which implements the custom - method - - signatures required by gogoproto. - description: rewards defines the rewards accrued by a delegation. - description: |- - QueryDelegationRewardsResponse is the response type for the - Query/DelegationRewards RPC method. - default: - description: An unexpected error response. - schema: - type: object - properties: - error: - type: string - code: - type: integer - format: int32 - message: - type: string - details: - type: array - items: - type: object - properties: - type_url: - type: string - value: - type: string - format: byte - parameters: - - name: delegator_address - description: delegator_address defines the delegator address to query for. - in: path - required: true - type: string - - name: validator_address - description: validator_address defines the validator address to query for. - in: path - required: true - type: string - tags: - - Query - '/cosmos/distribution/v1beta1/delegators/{delegator_address}/validators': - get: - summary: DelegatorValidators queries the validators of a delegator. - operationId: DelegatorValidators - responses: - '200': - description: A successful response. - schema: - type: object - properties: - validators: - type: array - items: - type: string - description: >- - validators defines the validators a delegator is delegating - for. - description: |- - QueryDelegatorValidatorsResponse is the response type for the - Query/DelegatorValidators RPC method. - default: - description: An unexpected error response. - schema: - type: object - properties: - error: - type: string - code: - type: integer - format: int32 - message: - type: string - details: - type: array - items: - type: object - properties: - type_url: - type: string - value: - type: string - format: byte - parameters: - - name: delegator_address - description: delegator_address defines the delegator address to query for. - in: path - required: true - type: string - tags: - - Query - '/cosmos/distribution/v1beta1/delegators/{delegator_address}/withdraw_address': - get: - summary: DelegatorWithdrawAddress queries withdraw address of a delegator. - operationId: DelegatorWithdrawAddress - responses: - '200': - description: A successful response. - schema: - type: object - properties: - withdraw_address: - type: string - description: withdraw_address defines the delegator address to query for. - description: |- - QueryDelegatorWithdrawAddressResponse is the response type for the - Query/DelegatorWithdrawAddress RPC method. - default: - description: An unexpected error response. - schema: - type: object - properties: - error: - type: string - code: - type: integer - format: int32 - message: - type: string - details: - type: array - items: - type: object - properties: - type_url: - type: string - value: - type: string - format: byte - parameters: - - name: delegator_address - description: delegator_address defines the delegator address to query for. - in: path - required: true - type: string - tags: - - Query - /cosmos/distribution/v1beta1/params: + /cosmos/bank/v1beta1/params: get: - summary: Params queries params of the distribution module. - operationId: DistributionParams + summary: Params queries the parameters of x/bank module. + operationId: BankParams responses: '200': description: A successful response. @@ -8100,153 +9023,32 @@ paths: type: object properties: params: - description: params defines the parameters of the module. - type: object - properties: - community_tax: - type: string - base_proposer_reward: - type: string - bonus_proposer_reward: - type: string - withdraw_addr_enabled: - type: boolean - description: >- - QueryParamsResponse is the response type for the Query/Params RPC - method. - default: - description: An unexpected error response. - schema: - type: object - properties: - error: - type: string - code: - type: integer - format: int32 - message: - type: string - details: - type: array - items: - type: object - properties: - type_url: - type: string - value: - type: string - format: byte - tags: - - Query - '/cosmos/distribution/v1beta1/validators/{validator_address}/commission': - get: - summary: ValidatorCommission queries accumulated commission for a validator. - operationId: ValidatorCommission - responses: - '200': - description: A successful response. - schema: - type: object - properties: - commission: - description: commission defines the commision the validator received. - type: object - properties: - commission: - type: array - items: - type: object - properties: - denom: - type: string - amount: - type: string - description: >- - DecCoin defines a token with a denomination and a - decimal amount. - - - NOTE: The amount field is an Dec which implements the - custom method - - signatures required by gogoproto. - title: |- - QueryValidatorCommissionResponse is the response type for the - Query/ValidatorCommission RPC method - default: - description: An unexpected error response. - schema: - type: object - properties: - error: - type: string - code: - type: integer - format: int32 - message: - type: string - details: - type: array - items: - type: object - properties: - type_url: - type: string - value: - type: string - format: byte - parameters: - - name: validator_address - description: validator_address defines the validator address to query for. - in: path - required: true - type: string - tags: - - Query - '/cosmos/distribution/v1beta1/validators/{validator_address}/outstanding_rewards': - get: - summary: ValidatorOutstandingRewards queries rewards of a validator address. - operationId: ValidatorOutstandingRewards - responses: - '200': - description: A successful response. - schema: - type: object - properties: - rewards: type: object properties: - rewards: + send_enabled: type: array items: type: object properties: denom: type: string - amount: - type: string + enabled: + type: boolean + format: boolean description: >- - DecCoin defines a token with a denomination and a - decimal amount. - - - NOTE: The amount field is an Dec which implements the - custom method - - signatures required by gogoproto. - description: >- - ValidatorOutstandingRewards represents outstanding - (un-withdrawn) rewards + SendEnabled maps coin denom to a send_enabled status + (whether a denom is - for a validator inexpensive to track, allows simple sanity - checks. + sendable). + default_send_enabled: + type: boolean + format: boolean + description: Params defines the parameters for the bank module. description: >- - QueryValidatorOutstandingRewardsResponse is the response type for - the - - Query/ValidatorOutstandingRewards RPC method. + QueryParamsResponse defines the response type for querying x/bank + parameters. default: - description: An unexpected error response. + description: An unexpected error response schema: type: object properties: @@ -8267,45 +9069,36 @@ paths: value: type: string format: byte - parameters: - - name: validator_address - description: validator_address defines the validator address to query for. - in: path - required: true - type: string tags: - Query - '/cosmos/distribution/v1beta1/validators/{validator_address}/slashes': + /cosmos/bank/v1beta1/supply: get: - summary: ValidatorSlashes queries slash events of a validator. - operationId: ValidatorSlashes + summary: TotalSupply queries the total supply of all coins. + operationId: TotalSupply responses: '200': description: A successful response. schema: type: object properties: - slashes: + supply: type: array items: type: object properties: - validator_period: + denom: type: string - format: uint64 - fraction: + amount: type: string description: >- - ValidatorSlashEvent represents a validator slash event. + Coin defines a token with a denomination and an amount. - Height is implicit within the store key. - This is needed to calculate appropriate amount of staking - tokens + NOTE: The amount field is an Int which implements the custom + method - for delegations which are withdrawn after a slash has - occurred. - description: slashes defines the slashes the validator received. + signatures required by gogoproto. + title: supply is the supply of the coins pagination: description: pagination defines the pagination in the response. type: object @@ -8324,11 +9117,13 @@ paths: PageRequest.count_total was set, its value is undefined otherwise - description: |- - QueryValidatorSlashesResponse is the response type for the - Query/ValidatorSlashes RPC method. + title: >- + QueryTotalSupplyResponse is the response type for the + Query/TotalSupply RPC + + method default: - description: An unexpected error response. + description: An unexpected error response schema: type: object properties: @@ -8350,27 +9145,6 @@ paths: type: string format: byte parameters: - - name: validator_address - description: validator_address defines the validator address to query for. - in: path - required: true - type: string - - name: starting_height - description: >- - starting_height defines the optional starting height to query the - slashes. - in: query - required: false - type: string - format: uint64 - - name: ending_height - description: >- - starting_height defines the optional ending height to query the - slashes. - in: query - required: false - type: string - format: uint64 - name: pagination.key description: |- key is a value returned in PageResponse.next_key to begin @@ -8417,221 +9191,644 @@ paths: in: query required: false type: boolean + format: boolean + - name: pagination.reverse + description: >- + reverse is set to true indicates that, results to be returned in the + descending order. + in: query + required: false + type: boolean + format: boolean tags: - Query - /cosmos/evidence/v1beta1/evidence: + '/cosmos/bank/v1beta1/supply/{denom}': get: - summary: AllEvidence queries all evidence. - operationId: AllEvidence + summary: SupplyOf queries the supply of a single coin. + operationId: SupplyOf responses: '200': description: A successful response. schema: type: object properties: - evidence: + amount: + type: object + properties: + denom: + type: string + amount: + type: string + description: >- + Coin defines a token with a denomination and an amount. + + + NOTE: The amount field is an Int which implements the custom + method + + signatures required by gogoproto. + description: >- + QuerySupplyOfResponse is the response type for the Query/SupplyOf + RPC method. + default: + description: An unexpected error response + schema: + type: object + properties: + error: + type: string + code: + type: integer + format: int32 + message: + type: string + details: type: array items: type: object properties: type_url: type: string - description: >- - A URL/resource name that uniquely identifies the type of - the serialized - - protocol buffer message. This string must contain at - least - - one "/" character. The last segment of the URL's path - must represent - - the fully qualified name of the type (as in - - `path/google.protobuf.Duration`). The name should be in - a canonical form - - (e.g., leading "." is not accepted). - - - In practice, teams usually precompile into the binary - all types that they - - expect it to use in the context of Any. However, for - URLs which use the - - scheme `http`, `https`, or no scheme, one can optionally - set up a type - - server that maps type URLs to message definitions as - follows: - - - * If no scheme is provided, `https` is assumed. - - * An HTTP GET on the URL must yield a - [google.protobuf.Type][] - value in binary format, or produce an error. - * Applications are allowed to cache lookup results based - on the - URL, or have them precompiled into a binary to avoid any - lookup. Therefore, binary compatibility needs to be preserved - on changes to types. (Use versioned type names to manage - breaking changes.) - - Note: this functionality is not currently available in - the official - - protobuf release, and it is not used for type URLs - beginning with - - type.googleapis.com. - - - Schemes other than `http`, `https` (or the empty scheme) - might be - - used with implementation specific semantics. value: type: string format: byte - description: >- - Must be a valid serialized protocol buffer of the above - specified type. - description: >- - `Any` contains an arbitrary serialized protocol buffer - message along with a - - URL that describes the type of the serialized message. - - - Protobuf library provides support to pack/unpack Any values - in the form - - of utility functions or additional generated methods of the - Any type. - - - Example 1: Pack and unpack a message in C++. - - Foo foo = ...; - Any any; - any.PackFrom(foo); - ... - if (any.UnpackTo(&foo)) { - ... - } - - Example 2: Pack and unpack a message in Java. - - Foo foo = ...; - Any any = Any.pack(foo); - ... - if (any.is(Foo.class)) { - foo = any.unpack(Foo.class); - } - - Example 3: Pack and unpack a message in Python. - - foo = Foo(...) - any = Any() - any.Pack(foo) - ... - if any.Is(Foo.DESCRIPTOR): - any.Unpack(foo) - ... - - Example 4: Pack and unpack a message in Go - - foo := &pb.Foo{...} - any, err := ptypes.MarshalAny(foo) - ... - foo := &pb.Foo{} - if err := ptypes.UnmarshalAny(any, foo); err != nil { - ... - } - - The pack methods provided by protobuf library will by - default use - - 'type.googleapis.com/full.type.name' as the type URL and the - unpack - - methods only use the fully qualified type name after the - last '/' - - in the type URL, for example "foo.bar.com/x/y.z" will yield - type - - name "y.z". - - - - JSON - - ==== - - The JSON representation of an `Any` value uses the regular + parameters: + - name: denom + description: denom is the coin denom to query balances for. + in: path + required: true + type: string + tags: + - Query + /cosmos/base/tendermint/v1beta1/blocks/latest: + get: + summary: GetLatestBlock returns the latest block. + operationId: GetLatestBlock + responses: + '200': + description: A successful response. + schema: + type: object + properties: + block_id: + type: object + properties: + hash: + type: string + format: byte + part_set_header: + type: object + properties: + total: + type: integer + format: int64 + hash: + type: string + format: byte + title: PartsetHeader + title: BlockID + block: + type: object + properties: + header: + type: object + properties: + version: + title: basic block info + type: object + properties: + block: + type: string + format: uint64 + app: + type: string + format: uint64 + description: >- + Consensus captures the consensus rules for processing + a block in the blockchain, - representation of the deserialized, embedded message, with - an + including all blockchain data structures and the rules + of the application's - additional field `@type` which contains the type URL. - Example: + state transition machine. + chain_id: + type: string + height: + type: string + format: int64 + time: + type: string + format: date-time + last_block_id: + type: object + properties: + hash: + type: string + format: byte + part_set_header: + type: object + properties: + total: + type: integer + format: int64 + hash: + type: string + format: byte + title: PartsetHeader + title: BlockID + last_commit_hash: + type: string + format: byte + title: hashes of block data + data_hash: + type: string + format: byte + validators_hash: + type: string + format: byte + title: hashes from the app output from the prev block + next_validators_hash: + type: string + format: byte + consensus_hash: + type: string + format: byte + app_hash: + type: string + format: byte + last_results_hash: + type: string + format: byte + evidence_hash: + type: string + format: byte + title: consensus info + proposer_address: + type: string + format: byte + description: Header defines the structure of a Tendermint block header. + data: + type: object + properties: + txs: + type: array + items: + type: string + format: byte + description: >- + Txs that will be applied by state @ block.Height+1. - package google.profile; - message Person { - string first_name = 1; - string last_name = 2; - } + NOTE: not all txs here are valid. We're just agreeing + on the order first. - { - "@type": "type.googleapis.com/google.profile.Person", - "firstName": , - "lastName": - } + This means that block.AppHash does not include these + txs. + title: >- + Data contains the set of transactions included in the + block + evidence: + type: object + properties: + evidence: + type: array + items: + type: object + properties: + duplicate_vote_evidence: + type: object + properties: + vote_a: + type: object + properties: + type: + type: string + enum: + - SIGNED_MSG_TYPE_UNKNOWN + - SIGNED_MSG_TYPE_PREVOTE + - SIGNED_MSG_TYPE_PRECOMMIT + - SIGNED_MSG_TYPE_PROPOSAL + default: SIGNED_MSG_TYPE_UNKNOWN + description: >- + SignedMsgType is a type of signed + message in the consensus. - If the embedded message type is well-known and has a custom - JSON + - SIGNED_MSG_TYPE_PREVOTE: Votes + - SIGNED_MSG_TYPE_PROPOSAL: Proposals + height: + type: string + format: int64 + round: + type: integer + format: int32 + block_id: + type: object + properties: + hash: + type: string + format: byte + part_set_header: + type: object + properties: + total: + type: integer + format: int64 + hash: + type: string + format: byte + title: PartsetHeader + title: BlockID + timestamp: + type: string + format: date-time + validator_address: + type: string + format: byte + validator_index: + type: integer + format: int32 + signature: + type: string + format: byte + description: >- + Vote represents a prevote, precommit, or + commit vote from validators for - representation, that representation will be embedded adding - a field + consensus. + vote_b: + type: object + properties: + type: + type: string + enum: + - SIGNED_MSG_TYPE_UNKNOWN + - SIGNED_MSG_TYPE_PREVOTE + - SIGNED_MSG_TYPE_PRECOMMIT + - SIGNED_MSG_TYPE_PROPOSAL + default: SIGNED_MSG_TYPE_UNKNOWN + description: >- + SignedMsgType is a type of signed + message in the consensus. - `value` which holds the custom JSON in addition to the - `@type` + - SIGNED_MSG_TYPE_PREVOTE: Votes + - SIGNED_MSG_TYPE_PROPOSAL: Proposals + height: + type: string + format: int64 + round: + type: integer + format: int32 + block_id: + type: object + properties: + hash: + type: string + format: byte + part_set_header: + type: object + properties: + total: + type: integer + format: int64 + hash: + type: string + format: byte + title: PartsetHeader + title: BlockID + timestamp: + type: string + format: date-time + validator_address: + type: string + format: byte + validator_index: + type: integer + format: int32 + signature: + type: string + format: byte + description: >- + Vote represents a prevote, precommit, or + commit vote from validators for - field. Example (for message [google.protobuf.Duration][]): + consensus. + total_voting_power: + type: string + format: int64 + validator_power: + type: string + format: int64 + timestamp: + type: string + format: date-time + description: >- + DuplicateVoteEvidence contains evidence of a + validator signed two conflicting votes. + light_client_attack_evidence: + type: object + properties: + conflicting_block: + type: object + properties: + signed_header: + type: object + properties: + header: + type: object + properties: + version: + title: basic block info + type: object + properties: + block: + type: string + format: uint64 + app: + type: string + format: uint64 + description: >- + Consensus captures the consensus rules + for processing a block in the + blockchain, - { - "@type": "type.googleapis.com/google.protobuf.Duration", - "value": "1.212s" - } - description: evidence returns all evidences. - pagination: - description: pagination defines the pagination in the response. - type: object - properties: - next_key: - type: string - format: byte - title: |- - next_key is the key to be passed to PageRequest.key to - query the next page most efficiently - total: - type: string - format: uint64 - title: >- - total is total number of results available if - PageRequest.count_total + including all blockchain data structures + and the rules of the application's - was set, its value is undefined otherwise + state transition machine. + chain_id: + type: string + height: + type: string + format: int64 + time: + type: string + format: date-time + last_block_id: + type: object + properties: + hash: + type: string + format: byte + part_set_header: + type: object + properties: + total: + type: integer + format: int64 + hash: + type: string + format: byte + title: PartsetHeader + title: BlockID + last_commit_hash: + type: string + format: byte + title: hashes of block data + data_hash: + type: string + format: byte + validators_hash: + type: string + format: byte + title: >- + hashes from the app output from the prev + block + next_validators_hash: + type: string + format: byte + consensus_hash: + type: string + format: byte + app_hash: + type: string + format: byte + last_results_hash: + type: string + format: byte + evidence_hash: + type: string + format: byte + title: consensus info + proposer_address: + type: string + format: byte + description: >- + Header defines the structure of a + Tendermint block header. + commit: + type: object + properties: + height: + type: string + format: int64 + round: + type: integer + format: int32 + block_id: + type: object + properties: + hash: + type: string + format: byte + part_set_header: + type: object + properties: + total: + type: integer + format: int64 + hash: + type: string + format: byte + title: PartsetHeader + title: BlockID + signatures: + type: array + items: + type: object + properties: + block_id_flag: + type: string + enum: + - BLOCK_ID_FLAG_UNKNOWN + - BLOCK_ID_FLAG_ABSENT + - BLOCK_ID_FLAG_COMMIT + - BLOCK_ID_FLAG_NIL + default: BLOCK_ID_FLAG_UNKNOWN + title: >- + BlockIdFlag indicates which BlcokID the + signature is for + validator_address: + type: string + format: byte + timestamp: + type: string + format: date-time + signature: + type: string + format: byte + description: >- + CommitSig is a part of the Vote included + in a Commit. + description: >- + Commit contains the evidence that a + block was committed by a set of + validators. + validator_set: + type: object + properties: + validators: + type: array + items: + type: object + properties: + address: + type: string + format: byte + pub_key: + type: object + properties: + ed25519: + type: string + format: byte + secp256k1: + type: string + format: byte + title: >- + PublicKey defines the keys available for + use with Tendermint Validators + voting_power: + type: string + format: int64 + proposer_priority: + type: string + format: int64 + proposer: + type: object + properties: + address: + type: string + format: byte + pub_key: + type: object + properties: + ed25519: + type: string + format: byte + secp256k1: + type: string + format: byte + title: >- + PublicKey defines the keys available for + use with Tendermint Validators + voting_power: + type: string + format: int64 + proposer_priority: + type: string + format: int64 + total_voting_power: + type: string + format: int64 + common_height: + type: string + format: int64 + byzantine_validators: + type: array + items: + type: object + properties: + address: + type: string + format: byte + pub_key: + type: object + properties: + ed25519: + type: string + format: byte + secp256k1: + type: string + format: byte + title: >- + PublicKey defines the keys available for + use with Tendermint Validators + voting_power: + type: string + format: int64 + proposer_priority: + type: string + format: int64 + total_voting_power: + type: string + format: int64 + timestamp: + type: string + format: date-time + description: >- + LightClientAttackEvidence contains evidence of a + set of validators attempting to mislead a light + client. + last_commit: + type: object + properties: + height: + type: string + format: int64 + round: + type: integer + format: int32 + block_id: + type: object + properties: + hash: + type: string + format: byte + part_set_header: + type: object + properties: + total: + type: integer + format: int64 + hash: + type: string + format: byte + title: PartsetHeader + title: BlockID + signatures: + type: array + items: + type: object + properties: + block_id_flag: + type: string + enum: + - BLOCK_ID_FLAG_UNKNOWN + - BLOCK_ID_FLAG_ABSENT + - BLOCK_ID_FLAG_COMMIT + - BLOCK_ID_FLAG_NIL + default: BLOCK_ID_FLAG_UNKNOWN + title: >- + BlockIdFlag indicates which BlcokID the + signature is for + validator_address: + type: string + format: byte + timestamp: + type: string + format: date-time + signature: + type: string + format: byte + description: >- + CommitSig is a part of the Vote included in a + Commit. + description: >- + Commit contains the evidence that a block was committed by + a set of validators. description: >- - QueryAllEvidenceResponse is the response type for the - Query/AllEvidence RPC - - method. + GetLatestBlockResponse is the response type for the + Query/GetLatestBlock RPC method. default: - description: An unexpected error response. + description: An unexpected error response schema: type: object properties: @@ -8819,137 +10016,577 @@ paths: "@type": "type.googleapis.com/google.protobuf.Duration", "value": "1.212s" } - parameters: - - name: pagination.key - description: |- - key is a value returned in PageResponse.next_key to begin - querying the next page most efficiently. Only one of offset or key - should be set. - in: query - required: false - type: string - format: byte - - name: pagination.offset - description: >- - offset is a numeric offset that can be used when key is unavailable. - - It is less efficient than using key. Only one of offset or key - should - - be set. - in: query - required: false - type: string - format: uint64 - - name: pagination.limit - description: >- - limit is the total number of results to be returned in the result - page. - - If left empty it will default to a value to be set by each app. - in: query - required: false - type: string - format: uint64 - - name: pagination.count_total - description: >- - count_total is set to true to indicate that the result set should - include - - a count of the total number of items available for pagination in - UIs. - - count_total is only respected when offset is used. It is ignored - when key - - is set. - in: query - required: false - type: boolean tags: - - Query - '/cosmos/evidence/v1beta1/evidence/{evidence_hash}': + - Service + '/cosmos/base/tendermint/v1beta1/blocks/{height}': get: - summary: Evidence queries evidence based on evidence hash. - operationId: Evidence + summary: GetBlockByHeight queries block for given height. + operationId: GetBlockByHeight responses: '200': description: A successful response. schema: type: object properties: - evidence: - description: evidence returns the requested evidence. + block_id: type: object properties: - type_url: + hash: type: string - description: >- - A URL/resource name that uniquely identifies the type of - the serialized - - protocol buffer message. This string must contain at least - - one "/" character. The last segment of the URL's path must - represent - - the fully qualified name of the type (as in - - `path/google.protobuf.Duration`). The name should be in a - canonical form - - (e.g., leading "." is not accepted). - - - In practice, teams usually precompile into the binary all - types that they - - expect it to use in the context of Any. However, for URLs - which use the - - scheme `http`, `https`, or no scheme, one can optionally - set up a type - - server that maps type URLs to message definitions as - follows: - + format: byte + part_set_header: + type: object + properties: + total: + type: integer + format: int64 + hash: + type: string + format: byte + title: PartsetHeader + title: BlockID + block: + type: object + properties: + header: + type: object + properties: + version: + title: basic block info + type: object + properties: + block: + type: string + format: uint64 + app: + type: string + format: uint64 + description: >- + Consensus captures the consensus rules for processing + a block in the blockchain, - * If no scheme is provided, `https` is assumed. + including all blockchain data structures and the rules + of the application's - * An HTTP GET on the URL must yield a - [google.protobuf.Type][] - value in binary format, or produce an error. - * Applications are allowed to cache lookup results based - on the - URL, or have them precompiled into a binary to avoid any - lookup. Therefore, binary compatibility needs to be preserved - on changes to types. (Use versioned type names to manage - breaking changes.) + state transition machine. + chain_id: + type: string + height: + type: string + format: int64 + time: + type: string + format: date-time + last_block_id: + type: object + properties: + hash: + type: string + format: byte + part_set_header: + type: object + properties: + total: + type: integer + format: int64 + hash: + type: string + format: byte + title: PartsetHeader + title: BlockID + last_commit_hash: + type: string + format: byte + title: hashes of block data + data_hash: + type: string + format: byte + validators_hash: + type: string + format: byte + title: hashes from the app output from the prev block + next_validators_hash: + type: string + format: byte + consensus_hash: + type: string + format: byte + app_hash: + type: string + format: byte + last_results_hash: + type: string + format: byte + evidence_hash: + type: string + format: byte + title: consensus info + proposer_address: + type: string + format: byte + description: Header defines the structure of a Tendermint block header. + data: + type: object + properties: + txs: + type: array + items: + type: string + format: byte + description: >- + Txs that will be applied by state @ block.Height+1. - Note: this functionality is not currently available in the - official + NOTE: not all txs here are valid. We're just agreeing + on the order first. - protobuf release, and it is not used for type URLs - beginning with + This means that block.AppHash does not include these + txs. + title: >- + Data contains the set of transactions included in the + block + evidence: + type: object + properties: + evidence: + type: array + items: + type: object + properties: + duplicate_vote_evidence: + type: object + properties: + vote_a: + type: object + properties: + type: + type: string + enum: + - SIGNED_MSG_TYPE_UNKNOWN + - SIGNED_MSG_TYPE_PREVOTE + - SIGNED_MSG_TYPE_PRECOMMIT + - SIGNED_MSG_TYPE_PROPOSAL + default: SIGNED_MSG_TYPE_UNKNOWN + description: >- + SignedMsgType is a type of signed + message in the consensus. - type.googleapis.com. + - SIGNED_MSG_TYPE_PREVOTE: Votes + - SIGNED_MSG_TYPE_PROPOSAL: Proposals + height: + type: string + format: int64 + round: + type: integer + format: int32 + block_id: + type: object + properties: + hash: + type: string + format: byte + part_set_header: + type: object + properties: + total: + type: integer + format: int64 + hash: + type: string + format: byte + title: PartsetHeader + title: BlockID + timestamp: + type: string + format: date-time + validator_address: + type: string + format: byte + validator_index: + type: integer + format: int32 + signature: + type: string + format: byte + description: >- + Vote represents a prevote, precommit, or + commit vote from validators for + consensus. + vote_b: + type: object + properties: + type: + type: string + enum: + - SIGNED_MSG_TYPE_UNKNOWN + - SIGNED_MSG_TYPE_PREVOTE + - SIGNED_MSG_TYPE_PRECOMMIT + - SIGNED_MSG_TYPE_PROPOSAL + default: SIGNED_MSG_TYPE_UNKNOWN + description: >- + SignedMsgType is a type of signed + message in the consensus. - Schemes other than `http`, `https` (or the empty scheme) - might be + - SIGNED_MSG_TYPE_PREVOTE: Votes + - SIGNED_MSG_TYPE_PROPOSAL: Proposals + height: + type: string + format: int64 + round: + type: integer + format: int32 + block_id: + type: object + properties: + hash: + type: string + format: byte + part_set_header: + type: object + properties: + total: + type: integer + format: int64 + hash: + type: string + format: byte + title: PartsetHeader + title: BlockID + timestamp: + type: string + format: date-time + validator_address: + type: string + format: byte + validator_index: + type: integer + format: int32 + signature: + type: string + format: byte + description: >- + Vote represents a prevote, precommit, or + commit vote from validators for - used with implementation specific semantics. - value: - type: string - format: byte + consensus. + total_voting_power: + type: string + format: int64 + validator_power: + type: string + format: int64 + timestamp: + type: string + format: date-time + description: >- + DuplicateVoteEvidence contains evidence of a + validator signed two conflicting votes. + light_client_attack_evidence: + type: object + properties: + conflicting_block: + type: object + properties: + signed_header: + type: object + properties: + header: + type: object + properties: + version: + title: basic block info + type: object + properties: + block: + type: string + format: uint64 + app: + type: string + format: uint64 + description: >- + Consensus captures the consensus rules + for processing a block in the + blockchain, + + including all blockchain data structures + and the rules of the application's + + state transition machine. + chain_id: + type: string + height: + type: string + format: int64 + time: + type: string + format: date-time + last_block_id: + type: object + properties: + hash: + type: string + format: byte + part_set_header: + type: object + properties: + total: + type: integer + format: int64 + hash: + type: string + format: byte + title: PartsetHeader + title: BlockID + last_commit_hash: + type: string + format: byte + title: hashes of block data + data_hash: + type: string + format: byte + validators_hash: + type: string + format: byte + title: >- + hashes from the app output from the prev + block + next_validators_hash: + type: string + format: byte + consensus_hash: + type: string + format: byte + app_hash: + type: string + format: byte + last_results_hash: + type: string + format: byte + evidence_hash: + type: string + format: byte + title: consensus info + proposer_address: + type: string + format: byte + description: >- + Header defines the structure of a + Tendermint block header. + commit: + type: object + properties: + height: + type: string + format: int64 + round: + type: integer + format: int32 + block_id: + type: object + properties: + hash: + type: string + format: byte + part_set_header: + type: object + properties: + total: + type: integer + format: int64 + hash: + type: string + format: byte + title: PartsetHeader + title: BlockID + signatures: + type: array + items: + type: object + properties: + block_id_flag: + type: string + enum: + - BLOCK_ID_FLAG_UNKNOWN + - BLOCK_ID_FLAG_ABSENT + - BLOCK_ID_FLAG_COMMIT + - BLOCK_ID_FLAG_NIL + default: BLOCK_ID_FLAG_UNKNOWN + title: >- + BlockIdFlag indicates which BlcokID the + signature is for + validator_address: + type: string + format: byte + timestamp: + type: string + format: date-time + signature: + type: string + format: byte + description: >- + CommitSig is a part of the Vote included + in a Commit. + description: >- + Commit contains the evidence that a + block was committed by a set of + validators. + validator_set: + type: object + properties: + validators: + type: array + items: + type: object + properties: + address: + type: string + format: byte + pub_key: + type: object + properties: + ed25519: + type: string + format: byte + secp256k1: + type: string + format: byte + title: >- + PublicKey defines the keys available for + use with Tendermint Validators + voting_power: + type: string + format: int64 + proposer_priority: + type: string + format: int64 + proposer: + type: object + properties: + address: + type: string + format: byte + pub_key: + type: object + properties: + ed25519: + type: string + format: byte + secp256k1: + type: string + format: byte + title: >- + PublicKey defines the keys available for + use with Tendermint Validators + voting_power: + type: string + format: int64 + proposer_priority: + type: string + format: int64 + total_voting_power: + type: string + format: int64 + common_height: + type: string + format: int64 + byzantine_validators: + type: array + items: + type: object + properties: + address: + type: string + format: byte + pub_key: + type: object + properties: + ed25519: + type: string + format: byte + secp256k1: + type: string + format: byte + title: >- + PublicKey defines the keys available for + use with Tendermint Validators + voting_power: + type: string + format: int64 + proposer_priority: + type: string + format: int64 + total_voting_power: + type: string + format: int64 + timestamp: + type: string + format: date-time + description: >- + LightClientAttackEvidence contains evidence of a + set of validators attempting to mislead a light + client. + last_commit: + type: object + properties: + height: + type: string + format: int64 + round: + type: integer + format: int32 + block_id: + type: object + properties: + hash: + type: string + format: byte + part_set_header: + type: object + properties: + total: + type: integer + format: int64 + hash: + type: string + format: byte + title: PartsetHeader + title: BlockID + signatures: + type: array + items: + type: object + properties: + block_id_flag: + type: string + enum: + - BLOCK_ID_FLAG_UNKNOWN + - BLOCK_ID_FLAG_ABSENT + - BLOCK_ID_FLAG_COMMIT + - BLOCK_ID_FLAG_NIL + default: BLOCK_ID_FLAG_UNKNOWN + title: >- + BlockIdFlag indicates which BlcokID the + signature is for + validator_address: + type: string + format: byte + timestamp: + type: string + format: date-time + signature: + type: string + format: byte + description: >- + CommitSig is a part of the Vote included in a + Commit. description: >- - Must be a valid serialized protocol buffer of the above - specified type. + Commit contains the evidence that a block was committed by + a set of validators. description: >- - QueryEvidenceResponse is the response type for the Query/Evidence - RPC method. + GetBlockByHeightResponse is the response type for the + Query/GetBlockByHeight RPC method. default: - description: An unexpected error response. + description: An unexpected error response schema: type: object properties: @@ -9138,88 +10775,94 @@ paths: "value": "1.212s" } parameters: - - name: evidence_hash - description: evidence_hash defines the hash of the requested evidence. + - name: height in: path required: true type: string - format: byte + format: int64 tags: - - Query - '/cosmos/gov/v1beta1/params/{params_type}': + - Service + /cosmos/base/tendermint/v1beta1/node_info: get: - summary: Params queries all parameters of the gov module. - operationId: GovParams + summary: GetNodeInfo queries the current node info. + operationId: GetNodeInfo responses: '200': description: A successful response. schema: type: object properties: - voting_params: - description: voting_params defines the parameters related to voting. + default_node_info: type: object properties: - voting_period: + protocol_version: + type: object + properties: + p2p: + type: string + format: uint64 + block: + type: string + format: uint64 + app: + type: string + format: uint64 + default_node_id: type: string - description: Length of the voting period. - deposit_params: - description: deposit_params defines the parameters related to deposit. + listen_addr: + type: string + network: + type: string + version: + type: string + channels: + type: string + format: byte + moniker: + type: string + other: + type: object + properties: + tx_index: + type: string + rpc_address: + type: string + application_version: type: object properties: - min_deposit: + name: + type: string + app_name: + type: string + version: + type: string + git_commit: + type: string + build_tags: + type: string + go_version: + type: string + build_deps: type: array items: type: object properties: - denom: + path: type: string - amount: + title: module path + version: type: string - description: >- - Coin defines a token with a denomination and an amount. - - - NOTE: The amount field is an Int which implements the - custom method - - signatures required by gogoproto. - description: Minimum deposit for a proposal to enter voting period. - max_deposit_period: - type: string - description: >- - Maximum period for Atom holders to deposit on a proposal. - Initial value: 2 - months. - tally_params: - description: tally_params defines the parameters related to tally. - type: object - properties: - quorum: - type: string - format: byte - description: >- - Minimum percentage of total stake needed to vote for a - result to be - considered valid. - threshold: - type: string - format: byte - description: >- - Minimum proportion of Yes votes for proposal to pass. - Default value: 0.5. - veto_threshold: - type: string - format: byte - description: >- - Minimum value of Veto votes to Total votes ratio for - proposal to be - vetoed. Default value: 1/3. + title: module version + sum: + type: string + title: checksum + title: Module is the type for VersionInfo + description: VersionInfo is the type for the GetNodeInfoResponse message. description: >- - QueryParamsResponse is the response type for the Query/Params RPC - method. + GetNodeInfoResponse is the request type for the Query/GetNodeInfo + RPC method. default: - description: An unexpected error response. + description: An unexpected error response schema: type: object properties: @@ -9407,121 +11050,320 @@ paths: "@type": "type.googleapis.com/google.protobuf.Duration", "value": "1.212s" } - parameters: - - name: params_type - description: >- - params_type defines which parameters to query for, can be one of - "voting", - - "tallying" or "deposit". - in: path - required: true - type: string tags: - - Query - /cosmos/gov/v1beta1/proposals: + - Service + /cosmos/base/tendermint/v1beta1/syncing: get: - summary: Proposals queries all proposals based on given status. - operationId: Proposals + summary: GetSyncing queries node syncing. + operationId: GetSyncing responses: '200': description: A successful response. schema: type: object properties: - proposals: + syncing: + type: boolean + format: boolean + description: >- + GetSyncingResponse is the response type for the Query/GetSyncing + RPC method. + default: + description: An unexpected error response + schema: + type: object + properties: + error: + type: string + code: + type: integer + format: int32 + message: + type: string + details: type: array items: type: object properties: - proposal_id: + type_url: type: string - format: uint64 - content: - type: object - properties: - type_url: - type: string - description: >- - A URL/resource name that uniquely identifies the - type of the serialized + description: >- + A URL/resource name that uniquely identifies the type of + the serialized - protocol buffer message. This string must contain at - least + protocol buffer message. This string must contain at + least - one "/" character. The last segment of the URL's - path must represent + one "/" character. The last segment of the URL's path + must represent - the fully qualified name of the type (as in + the fully qualified name of the type (as in - `path/google.protobuf.Duration`). The name should be - in a canonical form + `path/google.protobuf.Duration`). The name should be in + a canonical form - (e.g., leading "." is not accepted). + (e.g., leading "." is not accepted). - In practice, teams usually precompile into the - binary all types that they + In practice, teams usually precompile into the binary + all types that they - expect it to use in the context of Any. However, for - URLs which use the + expect it to use in the context of Any. However, for + URLs which use the - scheme `http`, `https`, or no scheme, one can - optionally set up a type + scheme `http`, `https`, or no scheme, one can optionally + set up a type - server that maps type URLs to message definitions as - follows: + server that maps type URLs to message definitions as + follows: - * If no scheme is provided, `https` is assumed. + * If no scheme is provided, `https` is assumed. - * An HTTP GET on the URL must yield a - [google.protobuf.Type][] - value in binary format, or produce an error. - * Applications are allowed to cache lookup results - based on the - URL, or have them precompiled into a binary to avoid any - lookup. Therefore, binary compatibility needs to be preserved - on changes to types. (Use versioned type names to manage - breaking changes.) + * An HTTP GET on the URL must yield a + [google.protobuf.Type][] + value in binary format, or produce an error. + * Applications are allowed to cache lookup results based + on the + URL, or have them precompiled into a binary to avoid any + lookup. Therefore, binary compatibility needs to be preserved + on changes to types. (Use versioned type names to manage + breaking changes.) - Note: this functionality is not currently available - in the official + Note: this functionality is not currently available in + the official - protobuf release, and it is not used for type URLs - beginning with + protobuf release, and it is not used for type URLs + beginning with - type.googleapis.com. + type.googleapis.com. - Schemes other than `http`, `https` (or the empty - scheme) might be + Schemes other than `http`, `https` (or the empty scheme) + might be - used with implementation specific semantics. - value: - type: string - format: byte - description: >- - Must be a valid serialized protocol buffer of the - above specified type. + used with implementation specific semantics. + value: + type: string + format: byte description: >- - `Any` contains an arbitrary serialized protocol buffer - message along with a + Must be a valid serialized protocol buffer of the above + specified type. + description: >- + `Any` contains an arbitrary serialized protocol buffer + message along with a - URL that describes the type of the serialized message. + URL that describes the type of the serialized message. - Protobuf library provides support to pack/unpack Any - values in the form + Protobuf library provides support to pack/unpack Any values + in the form - of utility functions or additional generated methods of - the Any type. + of utility functions or additional generated methods of the + Any type. - Example 1: Pack and unpack a message in C++. + Example 1: Pack and unpack a message in C++. - Foo foo = ...; - Any any; + Foo foo = ...; + Any any; + any.PackFrom(foo); + ... + if (any.UnpackTo(&foo)) { + ... + } + + Example 2: Pack and unpack a message in Java. + + Foo foo = ...; + Any any = Any.pack(foo); + ... + if (any.is(Foo.class)) { + foo = any.unpack(Foo.class); + } + + Example 3: Pack and unpack a message in Python. + + foo = Foo(...) + any = Any() + any.Pack(foo) + ... + if any.Is(Foo.DESCRIPTOR): + any.Unpack(foo) + ... + + Example 4: Pack and unpack a message in Go + + foo := &pb.Foo{...} + any, err := ptypes.MarshalAny(foo) + ... + foo := &pb.Foo{} + if err := ptypes.UnmarshalAny(any, foo); err != nil { + ... + } + + The pack methods provided by protobuf library will by + default use + + 'type.googleapis.com/full.type.name' as the type URL and the + unpack + + methods only use the fully qualified type name after the + last '/' + + in the type URL, for example "foo.bar.com/x/y.z" will yield + type + + name "y.z". + + + + JSON + + ==== + + The JSON representation of an `Any` value uses the regular + + representation of the deserialized, embedded message, with + an + + additional field `@type` which contains the type URL. + Example: + + package google.profile; + message Person { + string first_name = 1; + string last_name = 2; + } + + { + "@type": "type.googleapis.com/google.profile.Person", + "firstName": , + "lastName": + } + + If the embedded message type is well-known and has a custom + JSON + + representation, that representation will be embedded adding + a field + + `value` which holds the custom JSON in addition to the + `@type` + + field. Example (for message [google.protobuf.Duration][]): + + { + "@type": "type.googleapis.com/google.protobuf.Duration", + "value": "1.212s" + } + tags: + - Service + /cosmos/base/tendermint/v1beta1/validatorsets/latest: + get: + summary: GetLatestValidatorSet queries latest validator-set. + operationId: GetLatestValidatorSet + responses: + '200': + description: A successful response. + schema: + type: object + properties: + block_height: + type: string + format: int64 + validators: + type: array + items: + type: object + properties: + address: + type: string + pub_key: + type: object + properties: + type_url: + type: string + description: >- + A URL/resource name that uniquely identifies the + type of the serialized + + protocol buffer message. This string must contain at + least + + one "/" character. The last segment of the URL's + path must represent + + the fully qualified name of the type (as in + + `path/google.protobuf.Duration`). The name should be + in a canonical form + + (e.g., leading "." is not accepted). + + + In practice, teams usually precompile into the + binary all types that they + + expect it to use in the context of Any. However, for + URLs which use the + + scheme `http`, `https`, or no scheme, one can + optionally set up a type + + server that maps type URLs to message definitions as + follows: + + + * If no scheme is provided, `https` is assumed. + + * An HTTP GET on the URL must yield a + [google.protobuf.Type][] + value in binary format, or produce an error. + * Applications are allowed to cache lookup results + based on the + URL, or have them precompiled into a binary to avoid any + lookup. Therefore, binary compatibility needs to be preserved + on changes to types. (Use versioned type names to manage + breaking changes.) + + Note: this functionality is not currently available + in the official + + protobuf release, and it is not used for type URLs + beginning with + + type.googleapis.com. + + + Schemes other than `http`, `https` (or the empty + scheme) might be + + used with implementation specific semantics. + value: + type: string + format: byte + description: >- + Must be a valid serialized protocol buffer of the + above specified type. + description: >- + `Any` contains an arbitrary serialized protocol buffer + message along with a + + URL that describes the type of the serialized message. + + + Protobuf library provides support to pack/unpack Any + values in the form + + of utility functions or additional generated methods of + the Any type. + + + Example 1: Pack and unpack a message in C++. + + Foo foo = ...; + Any any; any.PackFrom(foo); ... if (any.UnpackTo(&foo)) { @@ -9614,80 +11456,15 @@ paths: "@type": "type.googleapis.com/google.protobuf.Duration", "value": "1.212s" } - status: - type: string - enum: - - PROPOSAL_STATUS_UNSPECIFIED - - PROPOSAL_STATUS_DEPOSIT_PERIOD - - PROPOSAL_STATUS_VOTING_PERIOD - - PROPOSAL_STATUS_PASSED - - PROPOSAL_STATUS_REJECTED - - PROPOSAL_STATUS_FAILED - default: PROPOSAL_STATUS_UNSPECIFIED - description: >- - ProposalStatus enumerates the valid statuses of a - proposal. - - - PROPOSAL_STATUS_UNSPECIFIED: PROPOSAL_STATUS_UNSPECIFIED defines the default propopsal status. - - PROPOSAL_STATUS_DEPOSIT_PERIOD: PROPOSAL_STATUS_DEPOSIT_PERIOD defines a proposal status during the deposit - period. - - PROPOSAL_STATUS_VOTING_PERIOD: PROPOSAL_STATUS_VOTING_PERIOD defines a proposal status during the voting - period. - - PROPOSAL_STATUS_PASSED: PROPOSAL_STATUS_PASSED defines a proposal status of a proposal that has - passed. - - PROPOSAL_STATUS_REJECTED: PROPOSAL_STATUS_REJECTED defines a proposal status of a proposal that has - been rejected. - - PROPOSAL_STATUS_FAILED: PROPOSAL_STATUS_FAILED defines a proposal status of a proposal that has - failed. - final_tally_result: - type: object - properties: - 'yes': - type: string - abstain: - type: string - 'no': - type: string - no_with_veto: - type: string - description: >- - TallyResult defines a standard tally for a governance - proposal. - submit_time: - type: string - format: date-time - deposit_end_time: - type: string - format: date-time - total_deposit: - type: array - items: - type: object - properties: - denom: - type: string - amount: - type: string - description: >- - Coin defines a token with a denomination and an - amount. - - - NOTE: The amount field is an Int which implements the - custom method - - signatures required by gogoproto. - voting_start_time: + voting_power: type: string - format: date-time - voting_end_time: + format: int64 + proposer_priority: type: string - format: date-time - description: >- - Proposal defines the core field members of a governance - proposal. + format: int64 + description: Validator is the type for the validator-set. pagination: - description: pagination defines the pagination in the response. + description: pagination defines an pagination for the response. type: object properties: next_key: @@ -9705,12 +11482,10 @@ paths: was set, its value is undefined otherwise description: >- - QueryProposalsResponse is the response type for the - Query/Proposals RPC - - method. + GetLatestValidatorSetResponse is the response type for the + Query/GetValidatorSetByHeight RPC method. default: - description: An unexpected error response. + description: An unexpected error response schema: type: object properties: @@ -9899,42 +11674,6 @@ paths: "value": "1.212s" } parameters: - - name: proposal_status - description: |- - proposal_status defines the status of the proposals. - - - PROPOSAL_STATUS_UNSPECIFIED: PROPOSAL_STATUS_UNSPECIFIED defines the default propopsal status. - - PROPOSAL_STATUS_DEPOSIT_PERIOD: PROPOSAL_STATUS_DEPOSIT_PERIOD defines a proposal status during the deposit - period. - - PROPOSAL_STATUS_VOTING_PERIOD: PROPOSAL_STATUS_VOTING_PERIOD defines a proposal status during the voting - period. - - PROPOSAL_STATUS_PASSED: PROPOSAL_STATUS_PASSED defines a proposal status of a proposal that has - passed. - - PROPOSAL_STATUS_REJECTED: PROPOSAL_STATUS_REJECTED defines a proposal status of a proposal that has - been rejected. - - PROPOSAL_STATUS_FAILED: PROPOSAL_STATUS_FAILED defines a proposal status of a proposal that has - failed. - in: query - required: false - type: string - enum: - - PROPOSAL_STATUS_UNSPECIFIED - - PROPOSAL_STATUS_DEPOSIT_PERIOD - - PROPOSAL_STATUS_VOTING_PERIOD - - PROPOSAL_STATUS_PASSED - - PROPOSAL_STATUS_REJECTED - - PROPOSAL_STATUS_FAILED - default: PROPOSAL_STATUS_UNSPECIFIED - - name: voter - description: voter defines the voter address for the proposals. - in: query - required: false - type: string - - name: depositor - description: depositor defines the deposit addresses from the proposals. - in: query - required: false - type: string - name: pagination.key description: |- key is a value returned in PageResponse.next_key to begin @@ -9981,516 +11720,223 @@ paths: in: query required: false type: boolean + format: boolean + - name: pagination.reverse + description: >- + reverse is set to true indicates that, results to be returned in the + descending order. + in: query + required: false + type: boolean + format: boolean tags: - - Query - '/cosmos/gov/v1beta1/proposals/{proposal_id}': + - Service + '/cosmos/base/tendermint/v1beta1/validatorsets/{height}': get: - summary: Proposal queries proposal details based on ProposalID. - operationId: Proposal + summary: GetValidatorSetByHeight queries validator-set at a given height. + operationId: GetValidatorSetByHeight responses: '200': description: A successful response. schema: type: object properties: - proposal: - type: object - properties: - proposal_id: - type: string - format: uint64 - content: - type: object - properties: - type_url: - type: string - description: >- - A URL/resource name that uniquely identifies the type - of the serialized + block_height: + type: string + format: int64 + validators: + type: array + items: + type: object + properties: + address: + type: string + pub_key: + type: object + properties: + type_url: + type: string + description: >- + A URL/resource name that uniquely identifies the + type of the serialized - protocol buffer message. This string must contain at - least + protocol buffer message. This string must contain at + least - one "/" character. The last segment of the URL's path - must represent + one "/" character. The last segment of the URL's + path must represent - the fully qualified name of the type (as in + the fully qualified name of the type (as in - `path/google.protobuf.Duration`). The name should be - in a canonical form + `path/google.protobuf.Duration`). The name should be + in a canonical form - (e.g., leading "." is not accepted). + (e.g., leading "." is not accepted). - In practice, teams usually precompile into the binary - all types that they + In practice, teams usually precompile into the + binary all types that they - expect it to use in the context of Any. However, for - URLs which use the + expect it to use in the context of Any. However, for + URLs which use the - scheme `http`, `https`, or no scheme, one can - optionally set up a type + scheme `http`, `https`, or no scheme, one can + optionally set up a type - server that maps type URLs to message definitions as - follows: + server that maps type URLs to message definitions as + follows: - * If no scheme is provided, `https` is assumed. + * If no scheme is provided, `https` is assumed. - * An HTTP GET on the URL must yield a - [google.protobuf.Type][] - value in binary format, or produce an error. - * Applications are allowed to cache lookup results - based on the - URL, or have them precompiled into a binary to avoid any - lookup. Therefore, binary compatibility needs to be preserved - on changes to types. (Use versioned type names to manage - breaking changes.) + * An HTTP GET on the URL must yield a + [google.protobuf.Type][] + value in binary format, or produce an error. + * Applications are allowed to cache lookup results + based on the + URL, or have them precompiled into a binary to avoid any + lookup. Therefore, binary compatibility needs to be preserved + on changes to types. (Use versioned type names to manage + breaking changes.) - Note: this functionality is not currently available in - the official + Note: this functionality is not currently available + in the official - protobuf release, and it is not used for type URLs - beginning with + protobuf release, and it is not used for type URLs + beginning with - type.googleapis.com. + type.googleapis.com. - Schemes other than `http`, `https` (or the empty - scheme) might be + Schemes other than `http`, `https` (or the empty + scheme) might be - used with implementation specific semantics. - value: - type: string - format: byte - description: >- - Must be a valid serialized protocol buffer of the - above specified type. - description: >- - `Any` contains an arbitrary serialized protocol buffer - message along with a + used with implementation specific semantics. + value: + type: string + format: byte + description: >- + Must be a valid serialized protocol buffer of the + above specified type. + description: >- + `Any` contains an arbitrary serialized protocol buffer + message along with a - URL that describes the type of the serialized message. + URL that describes the type of the serialized message. - Protobuf library provides support to pack/unpack Any - values in the form + Protobuf library provides support to pack/unpack Any + values in the form - of utility functions or additional generated methods of - the Any type. + of utility functions or additional generated methods of + the Any type. - Example 1: Pack and unpack a message in C++. + Example 1: Pack and unpack a message in C++. - Foo foo = ...; - Any any; - any.PackFrom(foo); - ... - if (any.UnpackTo(&foo)) { + Foo foo = ...; + Any any; + any.PackFrom(foo); ... - } + if (any.UnpackTo(&foo)) { + ... + } - Example 2: Pack and unpack a message in Java. + Example 2: Pack and unpack a message in Java. - Foo foo = ...; - Any any = Any.pack(foo); - ... - if (any.is(Foo.class)) { - foo = any.unpack(Foo.class); - } + Foo foo = ...; + Any any = Any.pack(foo); + ... + if (any.is(Foo.class)) { + foo = any.unpack(Foo.class); + } - Example 3: Pack and unpack a message in Python. + Example 3: Pack and unpack a message in Python. - foo = Foo(...) - any = Any() - any.Pack(foo) - ... - if any.Is(Foo.DESCRIPTOR): - any.Unpack(foo) + foo = Foo(...) + any = Any() + any.Pack(foo) ... + if any.Is(Foo.DESCRIPTOR): + any.Unpack(foo) + ... - Example 4: Pack and unpack a message in Go + Example 4: Pack and unpack a message in Go - foo := &pb.Foo{...} - any, err := ptypes.MarshalAny(foo) - ... - foo := &pb.Foo{} - if err := ptypes.UnmarshalAny(any, foo); err != nil { + foo := &pb.Foo{...} + any, err := ptypes.MarshalAny(foo) ... - } + foo := &pb.Foo{} + if err := ptypes.UnmarshalAny(any, foo); err != nil { + ... + } - The pack methods provided by protobuf library will by - default use + The pack methods provided by protobuf library will by + default use - 'type.googleapis.com/full.type.name' as the type URL and - the unpack - - methods only use the fully qualified type name after the - last '/' - - in the type URL, for example "foo.bar.com/x/y.z" will - yield type - - name "y.z". - - - - JSON - - ==== - - The JSON representation of an `Any` value uses the regular - - representation of the deserialized, embedded message, with - an - - additional field `@type` which contains the type URL. - Example: - - package google.profile; - message Person { - string first_name = 1; - string last_name = 2; - } - - { - "@type": "type.googleapis.com/google.profile.Person", - "firstName": , - "lastName": - } - - If the embedded message type is well-known and has a - custom JSON - - representation, that representation will be embedded - adding a field - - `value` which holds the custom JSON in addition to the - `@type` - - field. Example (for message [google.protobuf.Duration][]): - - { - "@type": "type.googleapis.com/google.protobuf.Duration", - "value": "1.212s" - } - status: - type: string - enum: - - PROPOSAL_STATUS_UNSPECIFIED - - PROPOSAL_STATUS_DEPOSIT_PERIOD - - PROPOSAL_STATUS_VOTING_PERIOD - - PROPOSAL_STATUS_PASSED - - PROPOSAL_STATUS_REJECTED - - PROPOSAL_STATUS_FAILED - default: PROPOSAL_STATUS_UNSPECIFIED - description: >- - ProposalStatus enumerates the valid statuses of a - proposal. - - - PROPOSAL_STATUS_UNSPECIFIED: PROPOSAL_STATUS_UNSPECIFIED defines the default propopsal status. - - PROPOSAL_STATUS_DEPOSIT_PERIOD: PROPOSAL_STATUS_DEPOSIT_PERIOD defines a proposal status during the deposit - period. - - PROPOSAL_STATUS_VOTING_PERIOD: PROPOSAL_STATUS_VOTING_PERIOD defines a proposal status during the voting - period. - - PROPOSAL_STATUS_PASSED: PROPOSAL_STATUS_PASSED defines a proposal status of a proposal that has - passed. - - PROPOSAL_STATUS_REJECTED: PROPOSAL_STATUS_REJECTED defines a proposal status of a proposal that has - been rejected. - - PROPOSAL_STATUS_FAILED: PROPOSAL_STATUS_FAILED defines a proposal status of a proposal that has - failed. - final_tally_result: - type: object - properties: - 'yes': - type: string - abstain: - type: string - 'no': - type: string - no_with_veto: - type: string - description: >- - TallyResult defines a standard tally for a governance - proposal. - submit_time: - type: string - format: date-time - deposit_end_time: - type: string - format: date-time - total_deposit: - type: array - items: - type: object - properties: - denom: - type: string - amount: - type: string - description: >- - Coin defines a token with a denomination and an amount. - - - NOTE: The amount field is an Int which implements the - custom method - - signatures required by gogoproto. - voting_start_time: - type: string - format: date-time - voting_end_time: - type: string - format: date-time - description: >- - Proposal defines the core field members of a governance - proposal. - description: >- - QueryProposalResponse is the response type for the Query/Proposal - RPC method. - default: - description: An unexpected error response. - schema: - type: object - properties: - error: - type: string - code: - type: integer - format: int32 - message: - type: string - details: - type: array - items: - type: object - properties: - type_url: - type: string - description: >- - A URL/resource name that uniquely identifies the type of - the serialized - - protocol buffer message. This string must contain at - least - - one "/" character. The last segment of the URL's path - must represent - - the fully qualified name of the type (as in - - `path/google.protobuf.Duration`). The name should be in - a canonical form - - (e.g., leading "." is not accepted). - - - In practice, teams usually precompile into the binary - all types that they - - expect it to use in the context of Any. However, for - URLs which use the - - scheme `http`, `https`, or no scheme, one can optionally - set up a type - - server that maps type URLs to message definitions as - follows: - - - * If no scheme is provided, `https` is assumed. - - * An HTTP GET on the URL must yield a - [google.protobuf.Type][] - value in binary format, or produce an error. - * Applications are allowed to cache lookup results based - on the - URL, or have them precompiled into a binary to avoid any - lookup. Therefore, binary compatibility needs to be preserved - on changes to types. (Use versioned type names to manage - breaking changes.) - - Note: this functionality is not currently available in - the official - - protobuf release, and it is not used for type URLs - beginning with - - type.googleapis.com. - - - Schemes other than `http`, `https` (or the empty scheme) - might be - - used with implementation specific semantics. - value: - type: string - format: byte - description: >- - Must be a valid serialized protocol buffer of the above - specified type. - description: >- - `Any` contains an arbitrary serialized protocol buffer - message along with a - - URL that describes the type of the serialized message. - - - Protobuf library provides support to pack/unpack Any values - in the form - - of utility functions or additional generated methods of the - Any type. - - - Example 1: Pack and unpack a message in C++. - - Foo foo = ...; - Any any; - any.PackFrom(foo); - ... - if (any.UnpackTo(&foo)) { - ... - } - - Example 2: Pack and unpack a message in Java. - - Foo foo = ...; - Any any = Any.pack(foo); - ... - if (any.is(Foo.class)) { - foo = any.unpack(Foo.class); - } - - Example 3: Pack and unpack a message in Python. - - foo = Foo(...) - any = Any() - any.Pack(foo) - ... - if any.Is(Foo.DESCRIPTOR): - any.Unpack(foo) - ... - - Example 4: Pack and unpack a message in Go - - foo := &pb.Foo{...} - any, err := ptypes.MarshalAny(foo) - ... - foo := &pb.Foo{} - if err := ptypes.UnmarshalAny(any, foo); err != nil { - ... - } - - The pack methods provided by protobuf library will by - default use - - 'type.googleapis.com/full.type.name' as the type URL and the - unpack + 'type.googleapis.com/full.type.name' as the type URL and + the unpack - methods only use the fully qualified type name after the - last '/' + methods only use the fully qualified type name after the + last '/' - in the type URL, for example "foo.bar.com/x/y.z" will yield - type + in the type URL, for example "foo.bar.com/x/y.z" will + yield type - name "y.z". + name "y.z". - JSON + JSON - ==== + ==== - The JSON representation of an `Any` value uses the regular + The JSON representation of an `Any` value uses the + regular - representation of the deserialized, embedded message, with - an + representation of the deserialized, embedded message, + with an - additional field `@type` which contains the type URL. - Example: + additional field `@type` which contains the type URL. + Example: - package google.profile; - message Person { - string first_name = 1; - string last_name = 2; - } + package google.profile; + message Person { + string first_name = 1; + string last_name = 2; + } - { - "@type": "type.googleapis.com/google.profile.Person", - "firstName": , - "lastName": - } + { + "@type": "type.googleapis.com/google.profile.Person", + "firstName": , + "lastName": + } - If the embedded message type is well-known and has a custom - JSON + If the embedded message type is well-known and has a + custom JSON - representation, that representation will be embedded adding - a field + representation, that representation will be embedded + adding a field - `value` which holds the custom JSON in addition to the - `@type` + `value` which holds the custom JSON in addition to the + `@type` - field. Example (for message [google.protobuf.Duration][]): + field. Example (for message + [google.protobuf.Duration][]): - { - "@type": "type.googleapis.com/google.protobuf.Duration", - "value": "1.212s" - } - parameters: - - name: proposal_id - description: proposal_id defines the unique id of the proposal. - in: path - required: true - type: string - format: uint64 - tags: - - Query - '/cosmos/gov/v1beta1/proposals/{proposal_id}/deposits': - get: - summary: Deposits queries all deposits of a single proposal. - operationId: Deposits - responses: - '200': - description: A successful response. - schema: - type: object - properties: - deposits: - type: array - items: - type: object - properties: - proposal_id: + { + "@type": "type.googleapis.com/google.protobuf.Duration", + "value": "1.212s" + } + voting_power: type: string - format: uint64 - depositor: + format: int64 + proposer_priority: type: string - amount: - type: array - items: - type: object - properties: - denom: - type: string - amount: - type: string - description: >- - Coin defines a token with a denomination and an - amount. - - - NOTE: The amount field is an Int which implements the - custom method - - signatures required by gogoproto. - description: >- - Deposit defines an amount deposited by an account address to - an active - - proposal. + format: int64 + description: Validator is the type for the validator-set. pagination: - description: pagination defines the pagination in the response. + description: pagination defines an pagination for the response. type: object properties: next_key: @@ -10508,10 +11954,10 @@ paths: was set, its value is undefined otherwise description: >- - QueryDepositsResponse is the response type for the Query/Deposits - RPC method. + GetValidatorSetByHeightResponse is the response type for the + Query/GetValidatorSetByHeight RPC method. default: - description: An unexpected error response. + description: An unexpected error response schema: type: object properties: @@ -10700,12 +12146,11 @@ paths: "value": "1.212s" } parameters: - - name: proposal_id - description: proposal_id defines the unique id of the proposal. + - name: height in: path required: true type: string - format: uint64 + format: int64 - name: pagination.key description: |- key is a value returned in PageResponse.next_key to begin @@ -10752,51 +12197,53 @@ paths: in: query required: false type: boolean + format: boolean + - name: pagination.reverse + description: >- + reverse is set to true indicates that, results to be returned in the + descending order. + in: query + required: false + type: boolean + format: boolean tags: - - Query - '/cosmos/gov/v1beta1/proposals/{proposal_id}/deposits/{depositor}': + - Service + /cosmos/distribution/v1beta1/community_pool: get: - summary: >- - Deposit queries single deposit information based proposalID, - depositAddr. - operationId: Deposit + summary: CommunityPool queries the community pool coins. + operationId: CommunityPool responses: '200': description: A successful response. schema: type: object properties: - deposit: - description: deposit defines the requested deposit. - type: object - properties: - proposal_id: - type: string - format: uint64 - depositor: - type: string - amount: - type: array - items: - type: object - properties: - denom: - type: string - amount: - type: string - description: >- - Coin defines a token with a denomination and an amount. + pool: + type: array + items: + type: object + properties: + denom: + type: string + amount: + type: string + description: >- + DecCoin defines a token with a denomination and a decimal + amount. - NOTE: The amount field is an Int which implements the - custom method + NOTE: The amount field is an Dec which implements the custom + method - signatures required by gogoproto. + signatures required by gogoproto. + description: pool defines community pool's coins. description: >- - QueryDepositResponse is the response type for the Query/Deposit + QueryCommunityPoolResponse is the response type for the + Query/CommunityPool + RPC method. default: - description: An unexpected error response. + description: An unexpected error response schema: type: object properties: @@ -10814,217 +12261,138 @@ paths: properties: type_url: type: string - description: >- - A URL/resource name that uniquely identifies the type of - the serialized - - protocol buffer message. This string must contain at - least - - one "/" character. The last segment of the URL's path - must represent - - the fully qualified name of the type (as in - - `path/google.protobuf.Duration`). The name should be in - a canonical form - - (e.g., leading "." is not accepted). - - - In practice, teams usually precompile into the binary - all types that they - - expect it to use in the context of Any. However, for - URLs which use the - - scheme `http`, `https`, or no scheme, one can optionally - set up a type - - server that maps type URLs to message definitions as - follows: - - - * If no scheme is provided, `https` is assumed. - - * An HTTP GET on the URL must yield a - [google.protobuf.Type][] - value in binary format, or produce an error. - * Applications are allowed to cache lookup results based - on the - URL, or have them precompiled into a binary to avoid any - lookup. Therefore, binary compatibility needs to be preserved - on changes to types. (Use versioned type names to manage - breaking changes.) - - Note: this functionality is not currently available in - the official - - protobuf release, and it is not used for type URLs - beginning with - - type.googleapis.com. - - - Schemes other than `http`, `https` (or the empty scheme) - might be - - used with implementation specific semantics. value: type: string format: byte - description: >- - Must be a valid serialized protocol buffer of the above - specified type. - description: >- - `Any` contains an arbitrary serialized protocol buffer - message along with a - - URL that describes the type of the serialized message. - - - Protobuf library provides support to pack/unpack Any values - in the form - - of utility functions or additional generated methods of the - Any type. - - - Example 1: Pack and unpack a message in C++. - - Foo foo = ...; - Any any; - any.PackFrom(foo); - ... - if (any.UnpackTo(&foo)) { - ... - } - - Example 2: Pack and unpack a message in Java. - - Foo foo = ...; - Any any = Any.pack(foo); - ... - if (any.is(Foo.class)) { - foo = any.unpack(Foo.class); - } - - Example 3: Pack and unpack a message in Python. - - foo = Foo(...) - any = Any() - any.Pack(foo) - ... - if any.Is(Foo.DESCRIPTOR): - any.Unpack(foo) - ... - - Example 4: Pack and unpack a message in Go - - foo := &pb.Foo{...} - any, err := ptypes.MarshalAny(foo) - ... - foo := &pb.Foo{} - if err := ptypes.UnmarshalAny(any, foo); err != nil { - ... - } - - The pack methods provided by protobuf library will by - default use - - 'type.googleapis.com/full.type.name' as the type URL and the - unpack - - methods only use the fully qualified type name after the - last '/' - - in the type URL, for example "foo.bar.com/x/y.z" will yield - type - - name "y.z". - - - - JSON - - ==== - - The JSON representation of an `Any` value uses the regular - - representation of the deserialized, embedded message, with - an - - additional field `@type` which contains the type URL. - Example: - - package google.profile; - message Person { - string first_name = 1; - string last_name = 2; - } + tags: + - Query + '/cosmos/distribution/v1beta1/delegators/{delegator_address}/rewards': + get: + summary: |- + DelegationTotalRewards queries the total rewards accrued by a each + validator. + operationId: DelegationTotalRewards + responses: + '200': + description: A successful response. + schema: + type: object + properties: + rewards: + type: array + items: + type: object + properties: + validator_address: + type: string + reward: + type: array + items: + type: object + properties: + denom: + type: string + amount: + type: string + description: >- + DecCoin defines a token with a denomination and a + decimal amount. - { - "@type": "type.googleapis.com/google.profile.Person", - "firstName": , - "lastName": - } - If the embedded message type is well-known and has a custom - JSON + NOTE: The amount field is an Dec which implements the + custom method - representation, that representation will be embedded adding - a field + signatures required by gogoproto. + description: |- + DelegationDelegatorReward represents the properties + of a delegator's delegation reward. + description: rewards defines all the rewards accrued by a delegator. + total: + type: array + items: + type: object + properties: + denom: + type: string + amount: + type: string + description: >- + DecCoin defines a token with a denomination and a decimal + amount. - `value` which holds the custom JSON in addition to the - `@type` - field. Example (for message [google.protobuf.Duration][]): + NOTE: The amount field is an Dec which implements the custom + method - { - "@type": "type.googleapis.com/google.protobuf.Duration", - "value": "1.212s" - } + signatures required by gogoproto. + description: total defines the sum of all the rewards. + description: |- + QueryDelegationTotalRewardsResponse is the response type for the + Query/DelegationTotalRewards RPC method. + default: + description: An unexpected error response + schema: + type: object + properties: + error: + type: string + code: + type: integer + format: int32 + message: + type: string + details: + type: array + items: + type: object + properties: + type_url: + type: string + value: + type: string + format: byte parameters: - - name: proposal_id - description: proposal_id defines the unique id of the proposal. - in: path - required: true - type: string - format: uint64 - - name: depositor - description: depositor defines the deposit addresses from the proposals. + - name: delegator_address + description: delegator_address defines the delegator address to query for. in: path required: true type: string tags: - Query - '/cosmos/gov/v1beta1/proposals/{proposal_id}/tally': + '/cosmos/distribution/v1beta1/delegators/{delegator_address}/rewards/{validator_address}': get: - summary: TallyResult queries the tally of a proposal vote. - operationId: TallyResult + summary: DelegationRewards queries the total rewards accrued by a delegation. + operationId: DelegationRewards responses: '200': description: A successful response. schema: type: object properties: - tally: - description: tally defines the requested tally. - type: object - properties: - 'yes': - type: string - abstain: - type: string - 'no': - type: string - no_with_veto: - type: string - description: >- - QueryTallyResultResponse is the response type for the Query/Tally - RPC method. + rewards: + type: array + items: + type: object + properties: + denom: + type: string + amount: + type: string + description: >- + DecCoin defines a token with a denomination and a decimal + amount. + + + NOTE: The amount field is an Dec which implements the custom + method + + signatures required by gogoproto. + description: rewards defines the rewards accrued by a delegation. + description: |- + QueryDelegationRewardsResponse is the response type for the + Query/DelegationRewards RPC method. default: - description: An unexpected error response. + description: An unexpected error response schema: type: object properties: @@ -11042,252 +12410,90 @@ paths: properties: type_url: type: string - description: >- - A URL/resource name that uniquely identifies the type of - the serialized - - protocol buffer message. This string must contain at - least - - one "/" character. The last segment of the URL's path - must represent - - the fully qualified name of the type (as in - - `path/google.protobuf.Duration`). The name should be in - a canonical form - - (e.g., leading "." is not accepted). - - - In practice, teams usually precompile into the binary - all types that they - - expect it to use in the context of Any. However, for - URLs which use the - - scheme `http`, `https`, or no scheme, one can optionally - set up a type - - server that maps type URLs to message definitions as - follows: - - - * If no scheme is provided, `https` is assumed. - - * An HTTP GET on the URL must yield a - [google.protobuf.Type][] - value in binary format, or produce an error. - * Applications are allowed to cache lookup results based - on the - URL, or have them precompiled into a binary to avoid any - lookup. Therefore, binary compatibility needs to be preserved - on changes to types. (Use versioned type names to manage - breaking changes.) - - Note: this functionality is not currently available in - the official - - protobuf release, and it is not used for type URLs - beginning with - - type.googleapis.com. - - - Schemes other than `http`, `https` (or the empty scheme) - might be - - used with implementation specific semantics. value: type: string format: byte - description: >- - Must be a valid serialized protocol buffer of the above - specified type. - description: >- - `Any` contains an arbitrary serialized protocol buffer - message along with a - - URL that describes the type of the serialized message. - - - Protobuf library provides support to pack/unpack Any values - in the form - - of utility functions or additional generated methods of the - Any type. - - - Example 1: Pack and unpack a message in C++. - - Foo foo = ...; - Any any; - any.PackFrom(foo); - ... - if (any.UnpackTo(&foo)) { - ... - } - - Example 2: Pack and unpack a message in Java. - - Foo foo = ...; - Any any = Any.pack(foo); - ... - if (any.is(Foo.class)) { - foo = any.unpack(Foo.class); - } - - Example 3: Pack and unpack a message in Python. - - foo = Foo(...) - any = Any() - any.Pack(foo) - ... - if any.Is(Foo.DESCRIPTOR): - any.Unpack(foo) - ... - - Example 4: Pack and unpack a message in Go - - foo := &pb.Foo{...} - any, err := ptypes.MarshalAny(foo) - ... - foo := &pb.Foo{} - if err := ptypes.UnmarshalAny(any, foo); err != nil { - ... - } - - The pack methods provided by protobuf library will by - default use - - 'type.googleapis.com/full.type.name' as the type URL and the - unpack - - methods only use the fully qualified type name after the - last '/' - - in the type URL, for example "foo.bar.com/x/y.z" will yield - type - - name "y.z". - - - - JSON - - ==== - - The JSON representation of an `Any` value uses the regular - - representation of the deserialized, embedded message, with - an - - additional field `@type` which contains the type URL. - Example: - - package google.profile; - message Person { - string first_name = 1; - string last_name = 2; - } - - { - "@type": "type.googleapis.com/google.profile.Person", - "firstName": , - "lastName": - } - - If the embedded message type is well-known and has a custom - JSON - - representation, that representation will be embedded adding - a field - - `value` which holds the custom JSON in addition to the - `@type` - - field. Example (for message [google.protobuf.Duration][]): - - { - "@type": "type.googleapis.com/google.protobuf.Duration", - "value": "1.212s" - } parameters: - - name: proposal_id - description: proposal_id defines the unique id of the proposal. + - name: delegator_address + description: delegator_address defines the delegator address to query for. + in: path + required: true + type: string + - name: validator_address + description: validator_address defines the validator address to query for. in: path required: true type: string - format: uint64 tags: - Query - '/cosmos/gov/v1beta1/proposals/{proposal_id}/votes': + '/cosmos/distribution/v1beta1/delegators/{delegator_address}/validators': get: - summary: Votes queries votes of a given proposal. - operationId: Votes + summary: DelegatorValidators queries the validators of a delegator. + operationId: DelegatorValidators responses: '200': description: A successful response. schema: type: object properties: - votes: + validators: + type: array + items: + type: string + description: >- + validators defines the validators a delegator is delegating + for. + description: |- + QueryDelegatorValidatorsResponse is the response type for the + Query/DelegatorValidators RPC method. + default: + description: An unexpected error response + schema: + type: object + properties: + error: + type: string + code: + type: integer + format: int32 + message: + type: string + details: type: array items: type: object properties: - proposal_id: - type: string - format: uint64 - voter: + type_url: type: string - option: + value: type: string - enum: - - VOTE_OPTION_UNSPECIFIED - - VOTE_OPTION_YES - - VOTE_OPTION_ABSTAIN - - VOTE_OPTION_NO - - VOTE_OPTION_NO_WITH_VETO - default: VOTE_OPTION_UNSPECIFIED - description: >- - VoteOption enumerates the valid vote options for a given - governance proposal. - - - VOTE_OPTION_UNSPECIFIED: VOTE_OPTION_UNSPECIFIED defines a no-op vote option. - - VOTE_OPTION_YES: VOTE_OPTION_YES defines a yes vote option. - - VOTE_OPTION_ABSTAIN: VOTE_OPTION_ABSTAIN defines an abstain vote option. - - VOTE_OPTION_NO: VOTE_OPTION_NO defines a no vote option. - - VOTE_OPTION_NO_WITH_VETO: VOTE_OPTION_NO_WITH_VETO defines a no with veto vote option. - description: >- - Vote defines a vote on a governance proposal. - - A Vote consists of a proposal ID, the voter, and the vote - option. - description: votes defined the queried votes. - pagination: - description: pagination defines the pagination in the response. - type: object - properties: - next_key: - type: string - format: byte - title: |- - next_key is the key to be passed to PageRequest.key to - query the next page most efficiently - total: - type: string - format: uint64 - title: >- - total is total number of results available if - PageRequest.count_total - - was set, its value is undefined otherwise - description: >- - QueryVotesResponse is the response type for the Query/Votes RPC - method. + format: byte + parameters: + - name: delegator_address + description: delegator_address defines the delegator address to query for. + in: path + required: true + type: string + tags: + - Query + '/cosmos/distribution/v1beta1/delegators/{delegator_address}/withdraw_address': + get: + summary: DelegatorWithdrawAddress queries withdraw address of a delegator. + operationId: DelegatorWithdrawAddress + responses: + '200': + description: A successful response. + schema: + type: object + properties: + withdraw_address: + type: string + description: withdraw_address defines the delegator address to query for. + description: |- + QueryDelegatorWithdrawAddressResponse is the response type for the + Query/DelegatorWithdrawAddress RPC method. default: - description: An unexpected error response. + description: An unexpected error response schema: type: object properties: @@ -11305,9 +12511,377 @@ paths: properties: type_url: type: string - description: >- - A URL/resource name that uniquely identifies the type of - the serialized + value: + type: string + format: byte + parameters: + - name: delegator_address + description: delegator_address defines the delegator address to query for. + in: path + required: true + type: string + tags: + - Query + /cosmos/distribution/v1beta1/params: + get: + summary: Params queries params of the distribution module. + operationId: DistributionParams + responses: + '200': + description: A successful response. + schema: + type: object + properties: + params: + description: params defines the parameters of the module. + type: object + properties: + community_tax: + type: string + base_proposer_reward: + type: string + bonus_proposer_reward: + type: string + withdraw_addr_enabled: + type: boolean + format: boolean + description: >- + QueryParamsResponse is the response type for the Query/Params RPC + method. + default: + description: An unexpected error response + schema: + type: object + properties: + error: + type: string + code: + type: integer + format: int32 + message: + type: string + details: + type: array + items: + type: object + properties: + type_url: + type: string + value: + type: string + format: byte + tags: + - Query + '/cosmos/distribution/v1beta1/validators/{validator_address}/commission': + get: + summary: ValidatorCommission queries accumulated commission for a validator. + operationId: ValidatorCommission + responses: + '200': + description: A successful response. + schema: + type: object + properties: + commission: + description: commission defines the commision the validator received. + type: object + properties: + commission: + type: array + items: + type: object + properties: + denom: + type: string + amount: + type: string + description: >- + DecCoin defines a token with a denomination and a + decimal amount. + + + NOTE: The amount field is an Dec which implements the + custom method + + signatures required by gogoproto. + title: |- + QueryValidatorCommissionResponse is the response type for the + Query/ValidatorCommission RPC method + default: + description: An unexpected error response + schema: + type: object + properties: + error: + type: string + code: + type: integer + format: int32 + message: + type: string + details: + type: array + items: + type: object + properties: + type_url: + type: string + value: + type: string + format: byte + parameters: + - name: validator_address + description: validator_address defines the validator address to query for. + in: path + required: true + type: string + tags: + - Query + '/cosmos/distribution/v1beta1/validators/{validator_address}/outstanding_rewards': + get: + summary: ValidatorOutstandingRewards queries rewards of a validator address. + operationId: ValidatorOutstandingRewards + responses: + '200': + description: A successful response. + schema: + type: object + properties: + rewards: + type: object + properties: + rewards: + type: array + items: + type: object + properties: + denom: + type: string + amount: + type: string + description: >- + DecCoin defines a token with a denomination and a + decimal amount. + + + NOTE: The amount field is an Dec which implements the + custom method + + signatures required by gogoproto. + description: >- + ValidatorOutstandingRewards represents outstanding + (un-withdrawn) rewards + + for a validator inexpensive to track, allows simple sanity + checks. + description: >- + QueryValidatorOutstandingRewardsResponse is the response type for + the + + Query/ValidatorOutstandingRewards RPC method. + default: + description: An unexpected error response + schema: + type: object + properties: + error: + type: string + code: + type: integer + format: int32 + message: + type: string + details: + type: array + items: + type: object + properties: + type_url: + type: string + value: + type: string + format: byte + parameters: + - name: validator_address + description: validator_address defines the validator address to query for. + in: path + required: true + type: string + tags: + - Query + '/cosmos/distribution/v1beta1/validators/{validator_address}/slashes': + get: + summary: ValidatorSlashes queries slash events of a validator. + operationId: ValidatorSlashes + responses: + '200': + description: A successful response. + schema: + type: object + properties: + slashes: + type: array + items: + type: object + properties: + validator_period: + type: string + format: uint64 + fraction: + type: string + description: >- + ValidatorSlashEvent represents a validator slash event. + + Height is implicit within the store key. + + This is needed to calculate appropriate amount of staking + tokens + + for delegations which are withdrawn after a slash has + occurred. + description: slashes defines the slashes the validator received. + pagination: + description: pagination defines the pagination in the response. + type: object + properties: + next_key: + type: string + format: byte + title: |- + next_key is the key to be passed to PageRequest.key to + query the next page most efficiently + total: + type: string + format: uint64 + title: >- + total is total number of results available if + PageRequest.count_total + + was set, its value is undefined otherwise + description: |- + QueryValidatorSlashesResponse is the response type for the + Query/ValidatorSlashes RPC method. + default: + description: An unexpected error response + schema: + type: object + properties: + error: + type: string + code: + type: integer + format: int32 + message: + type: string + details: + type: array + items: + type: object + properties: + type_url: + type: string + value: + type: string + format: byte + parameters: + - name: validator_address + description: validator_address defines the validator address to query for. + in: path + required: true + type: string + - name: starting_height + description: >- + starting_height defines the optional starting height to query the + slashes. + in: query + required: false + type: string + format: uint64 + - name: ending_height + description: >- + starting_height defines the optional ending height to query the + slashes. + in: query + required: false + type: string + format: uint64 + - name: pagination.key + description: |- + key is a value returned in PageResponse.next_key to begin + querying the next page most efficiently. Only one of offset or key + should be set. + in: query + required: false + type: string + format: byte + - name: pagination.offset + description: >- + offset is a numeric offset that can be used when key is unavailable. + + It is less efficient than using key. Only one of offset or key + should + + be set. + in: query + required: false + type: string + format: uint64 + - name: pagination.limit + description: >- + limit is the total number of results to be returned in the result + page. + + If left empty it will default to a value to be set by each app. + in: query + required: false + type: string + format: uint64 + - name: pagination.count_total + description: >- + count_total is set to true to indicate that the result set should + include + + a count of the total number of items available for pagination in + UIs. + + count_total is only respected when offset is used. It is ignored + when key + + is set. + in: query + required: false + type: boolean + format: boolean + - name: pagination.reverse + description: >- + reverse is set to true indicates that, results to be returned in the + descending order. + in: query + required: false + type: boolean + format: boolean + tags: + - Query + /cosmos/evidence/v1beta1/evidence: + get: + summary: AllEvidence queries all evidence. + operationId: AllEvidence + responses: + '200': + description: A successful response. + schema: + type: object + properties: + evidence: + type: array + items: + type: object + properties: + type_url: + type: string + description: >- + A URL/resource name that uniquely identifies the type of + the serialized protocol buffer message. This string must contain at least @@ -11475,103 +13049,32 @@ paths: "@type": "type.googleapis.com/google.protobuf.Duration", "value": "1.212s" } - parameters: - - name: proposal_id - description: proposal_id defines the unique id of the proposal. - in: path - required: true - type: string - format: uint64 - - name: pagination.key - description: |- - key is a value returned in PageResponse.next_key to begin - querying the next page most efficiently. Only one of offset or key - should be set. - in: query - required: false - type: string - format: byte - - name: pagination.offset - description: >- - offset is a numeric offset that can be used when key is unavailable. - - It is less efficient than using key. Only one of offset or key - should - - be set. - in: query - required: false - type: string - format: uint64 - - name: pagination.limit - description: >- - limit is the total number of results to be returned in the result - page. - - If left empty it will default to a value to be set by each app. - in: query - required: false - type: string - format: uint64 - - name: pagination.count_total - description: >- - count_total is set to true to indicate that the result set should - include - - a count of the total number of items available for pagination in - UIs. - - count_total is only respected when offset is used. It is ignored - when key - - is set. - in: query - required: false - type: boolean - tags: - - Query - '/cosmos/gov/v1beta1/proposals/{proposal_id}/votes/{voter}': - get: - summary: 'Vote queries voted information based on proposalID, voterAddr.' - operationId: Vote - responses: - '200': - description: A successful response. - schema: - type: object - properties: - vote: - description: vote defined the queried vote. + description: evidence returns all evidences. + pagination: + description: pagination defines the pagination in the response. type: object properties: - proposal_id: - type: string - format: uint64 - voter: + next_key: type: string - option: + format: byte + title: |- + next_key is the key to be passed to PageRequest.key to + query the next page most efficiently + total: type: string - enum: - - VOTE_OPTION_UNSPECIFIED - - VOTE_OPTION_YES - - VOTE_OPTION_ABSTAIN - - VOTE_OPTION_NO - - VOTE_OPTION_NO_WITH_VETO - default: VOTE_OPTION_UNSPECIFIED - description: >- - VoteOption enumerates the valid vote options for a given - governance proposal. + format: uint64 + title: >- + total is total number of results available if + PageRequest.count_total - - VOTE_OPTION_UNSPECIFIED: VOTE_OPTION_UNSPECIFIED defines a no-op vote option. - - VOTE_OPTION_YES: VOTE_OPTION_YES defines a yes vote option. - - VOTE_OPTION_ABSTAIN: VOTE_OPTION_ABSTAIN defines an abstain vote option. - - VOTE_OPTION_NO: VOTE_OPTION_NO defines a no vote option. - - VOTE_OPTION_NO_WITH_VETO: VOTE_OPTION_NO_WITH_VETO defines a no with veto vote option. + was set, its value is undefined otherwise description: >- - QueryVoteResponse is the response type for the Query/Vote RPC + QueryAllEvidenceResponse is the response type for the + Query/AllEvidence RPC + method. default: - description: An unexpected error response. + description: An unexpected error response schema: type: object properties: @@ -11760,83 +13263,249 @@ paths: "value": "1.212s" } parameters: - - name: proposal_id - description: proposal_id defines the unique id of the proposal. - in: path - required: true + - name: pagination.key + description: |- + key is a value returned in PageResponse.next_key to begin + querying the next page most efficiently. Only one of offset or key + should be set. + in: query + required: false + type: string + format: byte + - name: pagination.offset + description: >- + offset is a numeric offset that can be used when key is unavailable. + + It is less efficient than using key. Only one of offset or key + should + + be set. + in: query + required: false type: string format: uint64 - - name: voter - description: voter defines the oter address for the proposals. - in: path - required: true + - name: pagination.limit + description: >- + limit is the total number of results to be returned in the result + page. + + If left empty it will default to a value to be set by each app. + in: query + required: false type: string + format: uint64 + - name: pagination.count_total + description: >- + count_total is set to true to indicate that the result set should + include + + a count of the total number of items available for pagination in + UIs. + + count_total is only respected when offset is used. It is ignored + when key + + is set. + in: query + required: false + type: boolean + format: boolean + - name: pagination.reverse + description: >- + reverse is set to true indicates that, results to be returned in the + descending order. + in: query + required: false + type: boolean + format: boolean tags: - Query - /cosmos/mint/v1beta1/annual_provisions: - get: - summary: AnnualProvisions current minting annual provisions value. - operationId: AnnualProvisions - responses: - '200': - description: A successful response. - schema: - type: object - properties: - annual_provisions: - type: string - format: byte - description: >- - annual_provisions is the current minting annual provisions - value. - description: |- - QueryAnnualProvisionsResponse is the response type for the - Query/AnnualProvisions RPC method. - default: - description: An unexpected error response. - schema: - type: object - properties: - error: - type: string - code: - type: integer - format: int32 - message: - type: string - details: - type: array - items: - type: object - properties: - type_url: - type: string - value: - type: string - format: byte - tags: - - Query - /cosmos/mint/v1beta1/inflation: + '/cosmos/evidence/v1beta1/evidence/{evidence_hash}': get: - summary: Inflation returns the current minting inflation value. - operationId: Inflation + summary: Evidence queries evidence based on evidence hash. + operationId: Evidence responses: '200': description: A successful response. schema: type: object properties: - inflation: - type: string - format: byte - description: inflation is the current minting inflation value. - description: >- - QueryInflationResponse is the response type for the - Query/Inflation RPC + evidence: + type: object + properties: + type_url: + type: string + description: >- + A URL/resource name that uniquely identifies the type of + the serialized - method. + protocol buffer message. This string must contain at least + + one "/" character. The last segment of the URL's path must + represent + + the fully qualified name of the type (as in + + `path/google.protobuf.Duration`). The name should be in a + canonical form + + (e.g., leading "." is not accepted). + + + In practice, teams usually precompile into the binary all + types that they + + expect it to use in the context of Any. However, for URLs + which use the + + scheme `http`, `https`, or no scheme, one can optionally + set up a type + + server that maps type URLs to message definitions as + follows: + + + * If no scheme is provided, `https` is assumed. + + * An HTTP GET on the URL must yield a + [google.protobuf.Type][] + value in binary format, or produce an error. + * Applications are allowed to cache lookup results based + on the + URL, or have them precompiled into a binary to avoid any + lookup. Therefore, binary compatibility needs to be preserved + on changes to types. (Use versioned type names to manage + breaking changes.) + + Note: this functionality is not currently available in the + official + + protobuf release, and it is not used for type URLs + beginning with + + type.googleapis.com. + + + Schemes other than `http`, `https` (or the empty scheme) + might be + + used with implementation specific semantics. + value: + type: string + format: byte + description: >- + Must be a valid serialized protocol buffer of the above + specified type. + description: >- + `Any` contains an arbitrary serialized protocol buffer message + along with a + + URL that describes the type of the serialized message. + + + Protobuf library provides support to pack/unpack Any values in + the form + + of utility functions or additional generated methods of the + Any type. + + + Example 1: Pack and unpack a message in C++. + + Foo foo = ...; + Any any; + any.PackFrom(foo); + ... + if (any.UnpackTo(&foo)) { + ... + } + + Example 2: Pack and unpack a message in Java. + + Foo foo = ...; + Any any = Any.pack(foo); + ... + if (any.is(Foo.class)) { + foo = any.unpack(Foo.class); + } + + Example 3: Pack and unpack a message in Python. + + foo = Foo(...) + any = Any() + any.Pack(foo) + ... + if any.Is(Foo.DESCRIPTOR): + any.Unpack(foo) + ... + + Example 4: Pack and unpack a message in Go + + foo := &pb.Foo{...} + any, err := ptypes.MarshalAny(foo) + ... + foo := &pb.Foo{} + if err := ptypes.UnmarshalAny(any, foo); err != nil { + ... + } + + The pack methods provided by protobuf library will by default + use + + 'type.googleapis.com/full.type.name' as the type URL and the + unpack + + methods only use the fully qualified type name after the last + '/' + + in the type URL, for example "foo.bar.com/x/y.z" will yield + type + + name "y.z". + + + + JSON + + ==== + + The JSON representation of an `Any` value uses the regular + + representation of the deserialized, embedded message, with an + + additional field `@type` which contains the type URL. Example: + + package google.profile; + message Person { + string first_name = 1; + string last_name = 2; + } + + { + "@type": "type.googleapis.com/google.profile.Person", + "firstName": , + "lastName": + } + + If the embedded message type is well-known and has a custom + JSON + + representation, that representation will be embedded adding a + field + + `value` which holds the custom JSON in addition to the `@type` + + field. Example (for message [google.protobuf.Duration][]): + + { + "@type": "type.googleapis.com/google.protobuf.Duration", + "value": "1.212s" + } + description: >- + QueryEvidenceResponse is the response type for the Query/Evidence + RPC method. default: - description: An unexpected error response. + description: An unexpected error response schema: type: object properties: @@ -11854,507 +13523,259 @@ paths: properties: type_url: type: string + description: >- + A URL/resource name that uniquely identifies the type of + the serialized + + protocol buffer message. This string must contain at + least + + one "/" character. The last segment of the URL's path + must represent + + the fully qualified name of the type (as in + + `path/google.protobuf.Duration`). The name should be in + a canonical form + + (e.g., leading "." is not accepted). + + + In practice, teams usually precompile into the binary + all types that they + + expect it to use in the context of Any. However, for + URLs which use the + + scheme `http`, `https`, or no scheme, one can optionally + set up a type + + server that maps type URLs to message definitions as + follows: + + + * If no scheme is provided, `https` is assumed. + + * An HTTP GET on the URL must yield a + [google.protobuf.Type][] + value in binary format, or produce an error. + * Applications are allowed to cache lookup results based + on the + URL, or have them precompiled into a binary to avoid any + lookup. Therefore, binary compatibility needs to be preserved + on changes to types. (Use versioned type names to manage + breaking changes.) + + Note: this functionality is not currently available in + the official + + protobuf release, and it is not used for type URLs + beginning with + + type.googleapis.com. + + + Schemes other than `http`, `https` (or the empty scheme) + might be + + used with implementation specific semantics. value: type: string format: byte + description: >- + Must be a valid serialized protocol buffer of the above + specified type. + description: >- + `Any` contains an arbitrary serialized protocol buffer + message along with a + + URL that describes the type of the serialized message. + + + Protobuf library provides support to pack/unpack Any values + in the form + + of utility functions or additional generated methods of the + Any type. + + + Example 1: Pack and unpack a message in C++. + + Foo foo = ...; + Any any; + any.PackFrom(foo); + ... + if (any.UnpackTo(&foo)) { + ... + } + + Example 2: Pack and unpack a message in Java. + + Foo foo = ...; + Any any = Any.pack(foo); + ... + if (any.is(Foo.class)) { + foo = any.unpack(Foo.class); + } + + Example 3: Pack and unpack a message in Python. + + foo = Foo(...) + any = Any() + any.Pack(foo) + ... + if any.Is(Foo.DESCRIPTOR): + any.Unpack(foo) + ... + + Example 4: Pack and unpack a message in Go + + foo := &pb.Foo{...} + any, err := ptypes.MarshalAny(foo) + ... + foo := &pb.Foo{} + if err := ptypes.UnmarshalAny(any, foo); err != nil { + ... + } + + The pack methods provided by protobuf library will by + default use + + 'type.googleapis.com/full.type.name' as the type URL and the + unpack + + methods only use the fully qualified type name after the + last '/' + + in the type URL, for example "foo.bar.com/x/y.z" will yield + type + + name "y.z". + + + + JSON + + ==== + + The JSON representation of an `Any` value uses the regular + + representation of the deserialized, embedded message, with + an + + additional field `@type` which contains the type URL. + Example: + + package google.profile; + message Person { + string first_name = 1; + string last_name = 2; + } + + { + "@type": "type.googleapis.com/google.profile.Person", + "firstName": , + "lastName": + } + + If the embedded message type is well-known and has a custom + JSON + + representation, that representation will be embedded adding + a field + + `value` which holds the custom JSON in addition to the + `@type` + + field. Example (for message [google.protobuf.Duration][]): + + { + "@type": "type.googleapis.com/google.protobuf.Duration", + "value": "1.212s" + } + parameters: + - name: evidence_hash + description: evidence_hash defines the hash of the requested evidence. + in: path + required: true + type: string + format: byte tags: - Query - /cosmos/mint/v1beta1/params: + '/cosmos/gov/v1beta1/params/{params_type}': get: - summary: Params returns the total set of minting parameters. - operationId: MintParams + summary: Params queries all parameters of the gov module. + operationId: GovParams responses: '200': description: A successful response. schema: type: object properties: - params: - description: params defines the parameters of the module. + voting_params: + description: voting_params defines the parameters related to voting. type: object properties: - mint_denom: - type: string - title: type of coin to mint - inflation_rate_change: + voting_period: type: string - title: maximum annual change in inflation rate - inflation_max: + description: Length of the voting period. + deposit_params: + description: deposit_params defines the parameters related to deposit. + type: object + properties: + min_deposit: + type: array + items: + type: object + properties: + denom: + type: string + amount: + type: string + description: >- + Coin defines a token with a denomination and an amount. + + + NOTE: The amount field is an Int which implements the + custom method + + signatures required by gogoproto. + description: Minimum deposit for a proposal to enter voting period. + max_deposit_period: type: string - title: maximum inflation rate - inflation_min: + description: >- + Maximum period for Atom holders to deposit on a proposal. + Initial value: 2 + months. + tally_params: + description: tally_params defines the parameters related to tally. + type: object + properties: + quorum: type: string - title: minimum inflation rate - goal_bonded: + format: byte + description: >- + Minimum percentage of total stake needed to vote for a + result to be + considered valid. + threshold: type: string - title: goal of percent bonded atoms - blocks_per_year: + format: byte + description: >- + Minimum proportion of Yes votes for proposal to pass. + Default value: 0.5. + veto_threshold: type: string - format: uint64 - title: expected blocks per year + format: byte + description: >- + Minimum value of Veto votes to Total votes ratio for + proposal to be + vetoed. Default value: 1/3. description: >- QueryParamsResponse is the response type for the Query/Params RPC method. default: - description: An unexpected error response. - schema: - type: object - properties: - error: - type: string - code: - type: integer - format: int32 - message: - type: string - details: - type: array - items: - type: object - properties: - type_url: - type: string - value: - type: string - format: byte - tags: - - Query - /cosmos/params/v1beta1/params: - get: - summary: |- - Params queries a specific parameter of a module, given its subspace and - key. - operationId: Params - responses: - '200': - description: A successful response. - schema: - type: object - properties: - param: - description: param defines the queried parameter. - type: object - properties: - subspace: - type: string - key: - type: string - value: - type: string - description: >- - QueryParamsResponse is response type for the Query/Params RPC - method. - default: - description: An unexpected error response. - schema: - type: object - properties: - error: - type: string - code: - type: integer - format: int32 - message: - type: string - details: - type: array - items: - type: object - properties: - type_url: - type: string - value: - type: string - format: byte - parameters: - - name: subspace - description: subspace defines the module to query the parameter for. - in: query - required: false - type: string - - name: key - description: key defines the key of the parameter in the subspace. - in: query - required: false - type: string - tags: - - Query - /cosmos/slashing/v1beta1/params: - get: - summary: Params queries the parameters of slashing module - operationId: SlashingParams - responses: - '200': - description: A successful response. - schema: - type: object - properties: - params: - type: object - properties: - signed_blocks_window: - type: string - format: int64 - min_signed_per_window: - type: string - format: byte - downtime_jail_duration: - type: string - slash_fraction_double_sign: - type: string - format: byte - slash_fraction_downtime: - type: string - format: byte - description: >- - Params represents the parameters used for by the slashing - module. - title: >- - QueryParamsResponse is the response type for the Query/Params RPC - method - default: - description: An unexpected error response. - schema: - type: object - properties: - error: - type: string - code: - type: integer - format: int32 - message: - type: string - details: - type: array - items: - type: object - properties: - type_url: - type: string - value: - type: string - format: byte - tags: - - Query - /cosmos/slashing/v1beta1/signing_infos: - get: - summary: SigningInfos queries signing info of all validators - operationId: SigningInfos - responses: - '200': - description: A successful response. - schema: - type: object - properties: - info: - type: array - items: - type: object - properties: - address: - type: string - start_height: - type: string - format: int64 - title: >- - height at which validator was first a candidate OR was - unjailed - index_offset: - type: string - format: int64 - title: index offset into signed block bit array - jailed_until: - type: string - format: date-time - title: timestamp validator cannot be unjailed until - tombstoned: - type: boolean - title: >- - whether or not a validator has been tombstoned (killed - out of validator - - set) - missed_blocks_counter: - type: string - format: int64 - title: >- - missed blocks counter (to avoid scanning the array every - time) - description: >- - ValidatorSigningInfo defines a validator's signing info for - monitoring their - - liveness activity. - title: info is the signing info of all validators - pagination: - type: object - properties: - next_key: - type: string - format: byte - title: |- - next_key is the key to be passed to PageRequest.key to - query the next page most efficiently - total: - type: string - format: uint64 - title: >- - total is total number of results available if - PageRequest.count_total - - was set, its value is undefined otherwise - description: >- - PageResponse is to be embedded in gRPC response messages where - the - - corresponding request message has used PageRequest. - - message SomeResponse { - repeated Bar results = 1; - PageResponse page = 2; - } - title: >- - QuerySigningInfosResponse is the response type for the - Query/SigningInfos RPC - - method - default: - description: An unexpected error response. - schema: - type: object - properties: - error: - type: string - code: - type: integer - format: int32 - message: - type: string - details: - type: array - items: - type: object - properties: - type_url: - type: string - value: - type: string - format: byte - parameters: - - name: pagination.key - description: |- - key is a value returned in PageResponse.next_key to begin - querying the next page most efficiently. Only one of offset or key - should be set. - in: query - required: false - type: string - format: byte - - name: pagination.offset - description: >- - offset is a numeric offset that can be used when key is unavailable. - - It is less efficient than using key. Only one of offset or key - should - - be set. - in: query - required: false - type: string - format: uint64 - - name: pagination.limit - description: >- - limit is the total number of results to be returned in the result - page. - - If left empty it will default to a value to be set by each app. - in: query - required: false - type: string - format: uint64 - - name: pagination.count_total - description: >- - count_total is set to true to indicate that the result set should - include - - a count of the total number of items available for pagination in - UIs. - - count_total is only respected when offset is used. It is ignored - when key - - is set. - in: query - required: false - type: boolean - tags: - - Query - '/cosmos/slashing/v1beta1/signing_infos/{cons_address}': - get: - summary: SigningInfo queries the signing info of given cons address - operationId: SigningInfo - responses: - '200': - description: A successful response. - schema: - type: object - properties: - val_signing_info: - title: >- - val_signing_info is the signing info of requested val cons - address - type: object - properties: - address: - type: string - start_height: - type: string - format: int64 - title: >- - height at which validator was first a candidate OR was - unjailed - index_offset: - type: string - format: int64 - title: index offset into signed block bit array - jailed_until: - type: string - format: date-time - title: timestamp validator cannot be unjailed until - tombstoned: - type: boolean - title: >- - whether or not a validator has been tombstoned (killed out - of validator - - set) - missed_blocks_counter: - type: string - format: int64 - title: >- - missed blocks counter (to avoid scanning the array every - time) - description: >- - ValidatorSigningInfo defines a validator's signing info for - monitoring their - - liveness activity. - title: >- - QuerySigningInfoResponse is the response type for the - Query/SigningInfo RPC - - method - default: - description: An unexpected error response. - schema: - type: object - properties: - error: - type: string - code: - type: integer - format: int32 - message: - type: string - details: - type: array - items: - type: object - properties: - type_url: - type: string - value: - type: string - format: byte - parameters: - - name: cons_address - description: cons_address is the address to query signing info of - in: path - required: true - type: string - tags: - - Query - '/cosmos/staking/v1beta1/delegations/{delegator_addr}': - get: - summary: >- - DelegatorDelegations queries all delegations of a given delegator - address. - operationId: DelegatorDelegations - responses: - '200': - description: A successful response. - schema: - type: object - properties: - delegation_responses: - type: array - items: - type: object - properties: - delegation: - type: object - properties: - delegator_address: - type: string - validator_address: - type: string - shares: - type: string - description: >- - Delegation represents the bond with tokens held by an - account. It is - - owned by one delegator, and is associated with the - voting power of one - - validator. - balance: - type: object - properties: - denom: - type: string - amount: - type: string - description: >- - Coin defines a token with a denomination and an amount. - - - NOTE: The amount field is an Int which implements the - custom method - - signatures required by gogoproto. - description: >- - DelegationResponse is equivalent to Delegation except that - it contains a - - balance in addition to shares which is more suitable for - client responses. - description: >- - delegation_responses defines all the delegations' info of a - delegator. - pagination: - description: pagination defines the pagination in the response. - type: object - properties: - next_key: - type: string - format: byte - title: |- - next_key is the key to be passed to PageRequest.key to - query the next page most efficiently - total: - type: string - format: uint64 - title: >- - total is total number of results available if - PageRequest.count_total - - was set, its value is undefined otherwise - description: |- - QueryDelegatorDelegationsResponse is response type for the - Query/DelegatorDelegations RPC method. - default: - description: An unexpected error response. + description: An unexpected error response schema: type: object properties: @@ -12543,146 +13964,284 @@ paths: "value": "1.212s" } parameters: - - name: delegator_addr - description: delegator_addr defines the delegator address to query for. - in: path - required: true - type: string - - name: pagination.key - description: |- - key is a value returned in PageResponse.next_key to begin - querying the next page most efficiently. Only one of offset or key - should be set. - in: query - required: false - type: string - format: byte - - name: pagination.offset - description: >- - offset is a numeric offset that can be used when key is unavailable. - - It is less efficient than using key. Only one of offset or key - should - - be set. - in: query - required: false - type: string - format: uint64 - - name: pagination.limit + - name: params_type description: >- - limit is the total number of results to be returned in the result - page. + params_type defines which parameters to query for, can be one of + "voting", - If left empty it will default to a value to be set by each app. - in: query - required: false + "tallying" or "deposit". + in: path + required: true type: string - format: uint64 - - name: pagination.count_total - description: >- - count_total is set to true to indicate that the result set should - include - - a count of the total number of items available for pagination in - UIs. - - count_total is only respected when offset is used. It is ignored - when key - - is set. - in: query - required: false - type: boolean tags: - Query - '/cosmos/staking/v1beta1/delegators/{delegator_addr}/redelegations': + /cosmos/gov/v1beta1/proposals: get: - summary: Redelegations queries redelegations of given address. - operationId: Redelegations + summary: Proposals queries all proposals based on given status. + operationId: Proposals responses: '200': description: A successful response. schema: type: object properties: - redelegation_responses: + proposals: type: array items: type: object properties: - redelegation: + proposal_id: + type: string + format: uint64 + content: type: object properties: - delegator_address: - type: string - validator_src_address: - type: string - validator_dst_address: + type_url: type: string - entries: - type: array - items: - type: object - properties: - creation_height: - type: string - format: int64 - completion_time: - type: string - format: date-time - initial_balance: - type: string - shares_dst: - type: string - description: >- - RedelegationEntry defines a redelegation object - with relevant metadata. + description: >- + A URL/resource name that uniquely identifies the + type of the serialized + + protocol buffer message. This string must contain at + least + + one "/" character. The last segment of the URL's + path must represent + + the fully qualified name of the type (as in + + `path/google.protobuf.Duration`). The name should be + in a canonical form + + (e.g., leading "." is not accepted). + + + In practice, teams usually precompile into the + binary all types that they + + expect it to use in the context of Any. However, for + URLs which use the + + scheme `http`, `https`, or no scheme, one can + optionally set up a type + + server that maps type URLs to message definitions as + follows: + + + * If no scheme is provided, `https` is assumed. + + * An HTTP GET on the URL must yield a + [google.protobuf.Type][] + value in binary format, or produce an error. + * Applications are allowed to cache lookup results + based on the + URL, or have them precompiled into a binary to avoid any + lookup. Therefore, binary compatibility needs to be preserved + on changes to types. (Use versioned type names to manage + breaking changes.) + + Note: this functionality is not currently available + in the official + + protobuf release, and it is not used for type URLs + beginning with + + type.googleapis.com. + + + Schemes other than `http`, `https` (or the empty + scheme) might be + + used with implementation specific semantics. + value: + type: string + format: byte + description: >- + Must be a valid serialized protocol buffer of the + above specified type. description: >- - Redelegation contains the list of a particular - delegator's redelegating bonds + `Any` contains an arbitrary serialized protocol buffer + message along with a - from a particular source validator to a particular - destination validator. - entries: + URL that describes the type of the serialized message. + + + Protobuf library provides support to pack/unpack Any + values in the form + + of utility functions or additional generated methods of + the Any type. + + + Example 1: Pack and unpack a message in C++. + + Foo foo = ...; + Any any; + any.PackFrom(foo); + ... + if (any.UnpackTo(&foo)) { + ... + } + + Example 2: Pack and unpack a message in Java. + + Foo foo = ...; + Any any = Any.pack(foo); + ... + if (any.is(Foo.class)) { + foo = any.unpack(Foo.class); + } + + Example 3: Pack and unpack a message in Python. + + foo = Foo(...) + any = Any() + any.Pack(foo) + ... + if any.Is(Foo.DESCRIPTOR): + any.Unpack(foo) + ... + + Example 4: Pack and unpack a message in Go + + foo := &pb.Foo{...} + any, err := ptypes.MarshalAny(foo) + ... + foo := &pb.Foo{} + if err := ptypes.UnmarshalAny(any, foo); err != nil { + ... + } + + The pack methods provided by protobuf library will by + default use + + 'type.googleapis.com/full.type.name' as the type URL and + the unpack + + methods only use the fully qualified type name after the + last '/' + + in the type URL, for example "foo.bar.com/x/y.z" will + yield type + + name "y.z". + + + + JSON + + ==== + + The JSON representation of an `Any` value uses the + regular + + representation of the deserialized, embedded message, + with an + + additional field `@type` which contains the type URL. + Example: + + package google.profile; + message Person { + string first_name = 1; + string last_name = 2; + } + + { + "@type": "type.googleapis.com/google.profile.Person", + "firstName": , + "lastName": + } + + If the embedded message type is well-known and has a + custom JSON + + representation, that representation will be embedded + adding a field + + `value` which holds the custom JSON in addition to the + `@type` + + field. Example (for message + [google.protobuf.Duration][]): + + { + "@type": "type.googleapis.com/google.protobuf.Duration", + "value": "1.212s" + } + status: + type: string + enum: + - PROPOSAL_STATUS_UNSPECIFIED + - PROPOSAL_STATUS_DEPOSIT_PERIOD + - PROPOSAL_STATUS_VOTING_PERIOD + - PROPOSAL_STATUS_PASSED + - PROPOSAL_STATUS_REJECTED + - PROPOSAL_STATUS_FAILED + default: PROPOSAL_STATUS_UNSPECIFIED + description: >- + ProposalStatus enumerates the valid statuses of a + proposal. + + - PROPOSAL_STATUS_UNSPECIFIED: PROPOSAL_STATUS_UNSPECIFIED defines the default propopsal status. + - PROPOSAL_STATUS_DEPOSIT_PERIOD: PROPOSAL_STATUS_DEPOSIT_PERIOD defines a proposal status during the deposit + period. + - PROPOSAL_STATUS_VOTING_PERIOD: PROPOSAL_STATUS_VOTING_PERIOD defines a proposal status during the voting + period. + - PROPOSAL_STATUS_PASSED: PROPOSAL_STATUS_PASSED defines a proposal status of a proposal that has + passed. + - PROPOSAL_STATUS_REJECTED: PROPOSAL_STATUS_REJECTED defines a proposal status of a proposal that has + been rejected. + - PROPOSAL_STATUS_FAILED: PROPOSAL_STATUS_FAILED defines a proposal status of a proposal that has + failed. + final_tally_result: + type: object + properties: + 'yes': + type: string + abstain: + type: string + 'no': + type: string + no_with_veto: + type: string + description: >- + TallyResult defines a standard tally for a governance + proposal. + submit_time: + type: string + format: date-time + deposit_end_time: + type: string + format: date-time + total_deposit: type: array items: type: object properties: - redelegation_entry: - type: object - properties: - creation_height: - type: string - format: int64 - completion_time: - type: string - format: date-time - initial_balance: - type: string - shares_dst: - type: string - description: >- - RedelegationEntry defines a redelegation object - with relevant metadata. - balance: + denom: + type: string + amount: type: string description: >- - RedelegationEntryResponse is equivalent to a - RedelegationEntry except that it - - contains a balance in addition to shares which is more - suitable for client + Coin defines a token with a denomination and an + amount. - responses. - description: >- - RedelegationResponse is equivalent to a Redelegation except - that its entries - contain a balance in addition to shares which is more - suitable for client + NOTE: The amount field is an Int which implements the + custom method - responses. + signatures required by gogoproto. + voting_start_time: + type: string + format: date-time + voting_end_time: + type: string + format: date-time + description: >- + Proposal defines the core field members of a governance + proposal. pagination: description: pagination defines the pagination in the response. type: object @@ -12702,12 +14261,12 @@ paths: was set, its value is undefined otherwise description: >- - QueryRedelegationsResponse is response type for the - Query/Redelegations RPC + QueryProposalsResponse is the response type for the + Query/Proposals RPC method. default: - description: An unexpected error response. + description: An unexpected error response schema: type: object properties: @@ -12896,18 +14455,39 @@ paths: "value": "1.212s" } parameters: - - name: delegator_addr - description: delegator_addr defines the delegator address to query for. - in: path - required: true + - name: proposal_status + description: |- + proposal_status defines the status of the proposals. + + - PROPOSAL_STATUS_UNSPECIFIED: PROPOSAL_STATUS_UNSPECIFIED defines the default propopsal status. + - PROPOSAL_STATUS_DEPOSIT_PERIOD: PROPOSAL_STATUS_DEPOSIT_PERIOD defines a proposal status during the deposit + period. + - PROPOSAL_STATUS_VOTING_PERIOD: PROPOSAL_STATUS_VOTING_PERIOD defines a proposal status during the voting + period. + - PROPOSAL_STATUS_PASSED: PROPOSAL_STATUS_PASSED defines a proposal status of a proposal that has + passed. + - PROPOSAL_STATUS_REJECTED: PROPOSAL_STATUS_REJECTED defines a proposal status of a proposal that has + been rejected. + - PROPOSAL_STATUS_FAILED: PROPOSAL_STATUS_FAILED defines a proposal status of a proposal that has + failed. + in: query + required: false type: string - - name: src_validator_addr - description: src_validator_addr defines the validator address to redelegate from. + enum: + - PROPOSAL_STATUS_UNSPECIFIED + - PROPOSAL_STATUS_DEPOSIT_PERIOD + - PROPOSAL_STATUS_VOTING_PERIOD + - PROPOSAL_STATUS_PASSED + - PROPOSAL_STATUS_REJECTED + - PROPOSAL_STATUS_FAILED + default: PROPOSAL_STATUS_UNSPECIFIED + - name: voter + description: voter defines the voter address for the proposals. in: query required: false type: string - - name: dst_validator_addr - description: dst_validator_addr defines the validator address to redelegate to. + - name: depositor + description: depositor defines the deposit addresses from the proposals. in: query required: false type: string @@ -12957,170 +14537,375 @@ paths: in: query required: false type: boolean + format: boolean + - name: pagination.reverse + description: >- + reverse is set to true indicates that, results to be returned in the + descending order. + in: query + required: false + type: boolean + format: boolean tags: - Query - '/cosmos/staking/v1beta1/delegators/{delegator_addr}/unbonding_delegations': + '/cosmos/gov/v1beta1/proposals/{proposal_id}': get: - summary: >- - DelegatorUnbondingDelegations queries all unbonding delegations of a - given - - delegator address. - operationId: DelegatorUnbondingDelegations + summary: Proposal queries proposal details based on ProposalID. + operationId: Proposal responses: '200': description: A successful response. schema: type: object properties: - unbonding_responses: - type: array - items: - type: object - properties: - delegator_address: - type: string - validator_address: - type: string - entries: - type: array - items: - type: object - properties: - creation_height: - type: string - format: int64 - completion_time: - type: string - format: date-time - initial_balance: - type: string - balance: - type: string - description: >- - UnbondingDelegationEntry defines an unbonding object - with relevant metadata. - description: >- - UnbondingDelegation stores all of a single delegator's - unbonding bonds - - for a single validator in an time-ordered list. - pagination: - description: pagination defines the pagination in the response. + proposal: type: object properties: - next_key: - type: string - format: byte - title: |- - next_key is the key to be passed to PageRequest.key to - query the next page most efficiently - total: + proposal_id: type: string format: uint64 - title: >- - total is total number of results available if - PageRequest.count_total + content: + type: object + properties: + type_url: + type: string + description: >- + A URL/resource name that uniquely identifies the type + of the serialized - was set, its value is undefined otherwise - description: >- - QueryUnbondingDelegatorDelegationsResponse is response type for - the + protocol buffer message. This string must contain at + least - Query/UnbondingDelegatorDelegations RPC method. - default: - description: An unexpected error response. - schema: - type: object - properties: - error: - type: string - code: - type: integer - format: int32 - message: - type: string - details: - type: array - items: - type: object - properties: - type_url: - type: string - description: >- - A URL/resource name that uniquely identifies the type of - the serialized + one "/" character. The last segment of the URL's path + must represent - protocol buffer message. This string must contain at - least + the fully qualified name of the type (as in - one "/" character. The last segment of the URL's path - must represent + `path/google.protobuf.Duration`). The name should be + in a canonical form - the fully qualified name of the type (as in + (e.g., leading "." is not accepted). - `path/google.protobuf.Duration`). The name should be in - a canonical form - (e.g., leading "." is not accepted). + In practice, teams usually precompile into the binary + all types that they + expect it to use in the context of Any. However, for + URLs which use the - In practice, teams usually precompile into the binary - all types that they + scheme `http`, `https`, or no scheme, one can + optionally set up a type - expect it to use in the context of Any. However, for - URLs which use the + server that maps type URLs to message definitions as + follows: - scheme `http`, `https`, or no scheme, one can optionally - set up a type - server that maps type URLs to message definitions as - follows: + * If no scheme is provided, `https` is assumed. + * An HTTP GET on the URL must yield a + [google.protobuf.Type][] + value in binary format, or produce an error. + * Applications are allowed to cache lookup results + based on the + URL, or have them precompiled into a binary to avoid any + lookup. Therefore, binary compatibility needs to be preserved + on changes to types. (Use versioned type names to manage + breaking changes.) - * If no scheme is provided, `https` is assumed. + Note: this functionality is not currently available in + the official - * An HTTP GET on the URL must yield a - [google.protobuf.Type][] - value in binary format, or produce an error. - * Applications are allowed to cache lookup results based - on the - URL, or have them precompiled into a binary to avoid any - lookup. Therefore, binary compatibility needs to be preserved - on changes to types. (Use versioned type names to manage - breaking changes.) + protobuf release, and it is not used for type URLs + beginning with - Note: this functionality is not currently available in - the official + type.googleapis.com. - protobuf release, and it is not used for type URLs - beginning with - type.googleapis.com. + Schemes other than `http`, `https` (or the empty + scheme) might be + used with implementation specific semantics. + value: + type: string + format: byte + description: >- + Must be a valid serialized protocol buffer of the + above specified type. + description: >- + `Any` contains an arbitrary serialized protocol buffer + message along with a - Schemes other than `http`, `https` (or the empty scheme) - might be + URL that describes the type of the serialized message. - used with implementation specific semantics. - value: - type: string - format: byte - description: >- - Must be a valid serialized protocol buffer of the above - specified type. - description: >- - `Any` contains an arbitrary serialized protocol buffer - message along with a - URL that describes the type of the serialized message. + Protobuf library provides support to pack/unpack Any + values in the form + of utility functions or additional generated methods of + the Any type. - Protobuf library provides support to pack/unpack Any values - in the form - of utility functions or additional generated methods of the - Any type. + Example 1: Pack and unpack a message in C++. + + Foo foo = ...; + Any any; + any.PackFrom(foo); + ... + if (any.UnpackTo(&foo)) { + ... + } + + Example 2: Pack and unpack a message in Java. + + Foo foo = ...; + Any any = Any.pack(foo); + ... + if (any.is(Foo.class)) { + foo = any.unpack(Foo.class); + } + + Example 3: Pack and unpack a message in Python. + + foo = Foo(...) + any = Any() + any.Pack(foo) + ... + if any.Is(Foo.DESCRIPTOR): + any.Unpack(foo) + ... + + Example 4: Pack and unpack a message in Go + + foo := &pb.Foo{...} + any, err := ptypes.MarshalAny(foo) + ... + foo := &pb.Foo{} + if err := ptypes.UnmarshalAny(any, foo); err != nil { + ... + } + + The pack methods provided by protobuf library will by + default use + + 'type.googleapis.com/full.type.name' as the type URL and + the unpack + + methods only use the fully qualified type name after the + last '/' + + in the type URL, for example "foo.bar.com/x/y.z" will + yield type + + name "y.z". + + + + JSON + + ==== + + The JSON representation of an `Any` value uses the regular + + representation of the deserialized, embedded message, with + an + + additional field `@type` which contains the type URL. + Example: + + package google.profile; + message Person { + string first_name = 1; + string last_name = 2; + } + + { + "@type": "type.googleapis.com/google.profile.Person", + "firstName": , + "lastName": + } + + If the embedded message type is well-known and has a + custom JSON + + representation, that representation will be embedded + adding a field + + `value` which holds the custom JSON in addition to the + `@type` + + field. Example (for message [google.protobuf.Duration][]): + + { + "@type": "type.googleapis.com/google.protobuf.Duration", + "value": "1.212s" + } + status: + type: string + enum: + - PROPOSAL_STATUS_UNSPECIFIED + - PROPOSAL_STATUS_DEPOSIT_PERIOD + - PROPOSAL_STATUS_VOTING_PERIOD + - PROPOSAL_STATUS_PASSED + - PROPOSAL_STATUS_REJECTED + - PROPOSAL_STATUS_FAILED + default: PROPOSAL_STATUS_UNSPECIFIED + description: >- + ProposalStatus enumerates the valid statuses of a + proposal. + + - PROPOSAL_STATUS_UNSPECIFIED: PROPOSAL_STATUS_UNSPECIFIED defines the default propopsal status. + - PROPOSAL_STATUS_DEPOSIT_PERIOD: PROPOSAL_STATUS_DEPOSIT_PERIOD defines a proposal status during the deposit + period. + - PROPOSAL_STATUS_VOTING_PERIOD: PROPOSAL_STATUS_VOTING_PERIOD defines a proposal status during the voting + period. + - PROPOSAL_STATUS_PASSED: PROPOSAL_STATUS_PASSED defines a proposal status of a proposal that has + passed. + - PROPOSAL_STATUS_REJECTED: PROPOSAL_STATUS_REJECTED defines a proposal status of a proposal that has + been rejected. + - PROPOSAL_STATUS_FAILED: PROPOSAL_STATUS_FAILED defines a proposal status of a proposal that has + failed. + final_tally_result: + type: object + properties: + 'yes': + type: string + abstain: + type: string + 'no': + type: string + no_with_veto: + type: string + description: >- + TallyResult defines a standard tally for a governance + proposal. + submit_time: + type: string + format: date-time + deposit_end_time: + type: string + format: date-time + total_deposit: + type: array + items: + type: object + properties: + denom: + type: string + amount: + type: string + description: >- + Coin defines a token with a denomination and an amount. + + + NOTE: The amount field is an Int which implements the + custom method + + signatures required by gogoproto. + voting_start_time: + type: string + format: date-time + voting_end_time: + type: string + format: date-time + description: >- + Proposal defines the core field members of a governance + proposal. + description: >- + QueryProposalResponse is the response type for the Query/Proposal + RPC method. + default: + description: An unexpected error response + schema: + type: object + properties: + error: + type: string + code: + type: integer + format: int32 + message: + type: string + details: + type: array + items: + type: object + properties: + type_url: + type: string + description: >- + A URL/resource name that uniquely identifies the type of + the serialized + + protocol buffer message. This string must contain at + least + + one "/" character. The last segment of the URL's path + must represent + + the fully qualified name of the type (as in + + `path/google.protobuf.Duration`). The name should be in + a canonical form + + (e.g., leading "." is not accepted). + + + In practice, teams usually precompile into the binary + all types that they + + expect it to use in the context of Any. However, for + URLs which use the + + scheme `http`, `https`, or no scheme, one can optionally + set up a type + + server that maps type URLs to message definitions as + follows: + + + * If no scheme is provided, `https` is assumed. + + * An HTTP GET on the URL must yield a + [google.protobuf.Type][] + value in binary format, or produce an error. + * Applications are allowed to cache lookup results based + on the + URL, or have them precompiled into a binary to avoid any + lookup. Therefore, binary compatibility needs to be preserved + on changes to types. (Use versioned type names to manage + breaking changes.) + + Note: this functionality is not currently available in + the official + + protobuf release, and it is not used for type URLs + beginning with + + type.googleapis.com. + + + Schemes other than `http`, `https` (or the empty scheme) + might be + + used with implementation specific semantics. + value: + type: string + format: byte + description: >- + Must be a valid serialized protocol buffer of the above + specified type. + description: >- + `Any` contains an arbitrary serialized protocol buffer + message along with a + + URL that describes the type of the serialized message. + + + Protobuf library provides support to pack/unpack Any values + in the form + + of utility functions or additional generated methods of the + Any type. Example 1: Pack and unpack a message in C++. @@ -13218,368 +15003,378 @@ paths: "value": "1.212s" } parameters: - - name: delegator_addr - description: delegator_addr defines the delegator address to query for. + - name: proposal_id + description: proposal_id defines the unique id of the proposal. in: path required: true type: string - - name: pagination.key - description: |- - key is a value returned in PageResponse.next_key to begin - querying the next page most efficiently. Only one of offset or key - should be set. - in: query - required: false - type: string - format: byte - - name: pagination.offset - description: >- - offset is a numeric offset that can be used when key is unavailable. - - It is less efficient than using key. Only one of offset or key - should - - be set. - in: query - required: false - type: string - format: uint64 - - name: pagination.limit - description: >- - limit is the total number of results to be returned in the result - page. - - If left empty it will default to a value to be set by each app. - in: query - required: false - type: string format: uint64 - - name: pagination.count_total - description: >- - count_total is set to true to indicate that the result set should - include - - a count of the total number of items available for pagination in - UIs. - - count_total is only respected when offset is used. It is ignored - when key - - is set. - in: query - required: false - type: boolean tags: - Query - '/cosmos/staking/v1beta1/delegators/{delegator_addr}/validators': + '/cosmos/gov/v1beta1/proposals/{proposal_id}/deposits': get: - summary: |- - DelegatorValidators queries all validators info for given delegator - address. - operationId: StakingDelegatorValidators + summary: Deposits queries all deposits of a single proposal. + operationId: Deposits responses: '200': description: A successful response. schema: type: object properties: - validators: + deposits: type: array items: type: object properties: - operator_address: + proposal_id: type: string - consensus_pubkey: - type: object - properties: - type_url: - type: string - description: >- - A URL/resource name that uniquely identifies the - type of the serialized + format: uint64 + depositor: + type: string + amount: + type: array + items: + type: object + properties: + denom: + type: string + amount: + type: string + description: >- + Coin defines a token with a denomination and an + amount. - protocol buffer message. This string must contain at - least - one "/" character. The last segment of the URL's - path must represent + NOTE: The amount field is an Int which implements the + custom method - the fully qualified name of the type (as in + signatures required by gogoproto. + description: >- + Deposit defines an amount deposited by an account address to + an active - `path/google.protobuf.Duration`). The name should be - in a canonical form + proposal. + pagination: + description: pagination defines the pagination in the response. + type: object + properties: + next_key: + type: string + format: byte + title: |- + next_key is the key to be passed to PageRequest.key to + query the next page most efficiently + total: + type: string + format: uint64 + title: >- + total is total number of results available if + PageRequest.count_total - (e.g., leading "." is not accepted). + was set, its value is undefined otherwise + description: >- + QueryDepositsResponse is the response type for the Query/Deposits + RPC method. + default: + description: An unexpected error response + schema: + type: object + properties: + error: + type: string + code: + type: integer + format: int32 + message: + type: string + details: + type: array + items: + type: object + properties: + type_url: + type: string + description: >- + A URL/resource name that uniquely identifies the type of + the serialized + protocol buffer message. This string must contain at + least - In practice, teams usually precompile into the - binary all types that they + one "/" character. The last segment of the URL's path + must represent - expect it to use in the context of Any. However, for - URLs which use the + the fully qualified name of the type (as in - scheme `http`, `https`, or no scheme, one can - optionally set up a type + `path/google.protobuf.Duration`). The name should be in + a canonical form - server that maps type URLs to message definitions as - follows: + (e.g., leading "." is not accepted). - * If no scheme is provided, `https` is assumed. + In practice, teams usually precompile into the binary + all types that they - * An HTTP GET on the URL must yield a - [google.protobuf.Type][] - value in binary format, or produce an error. - * Applications are allowed to cache lookup results - based on the - URL, or have them precompiled into a binary to avoid any - lookup. Therefore, binary compatibility needs to be preserved - on changes to types. (Use versioned type names to manage - breaking changes.) + expect it to use in the context of Any. However, for + URLs which use the - Note: this functionality is not currently available - in the official + scheme `http`, `https`, or no scheme, one can optionally + set up a type - protobuf release, and it is not used for type URLs - beginning with + server that maps type URLs to message definitions as + follows: - type.googleapis.com. + * If no scheme is provided, `https` is assumed. - Schemes other than `http`, `https` (or the empty - scheme) might be + * An HTTP GET on the URL must yield a + [google.protobuf.Type][] + value in binary format, or produce an error. + * Applications are allowed to cache lookup results based + on the + URL, or have them precompiled into a binary to avoid any + lookup. Therefore, binary compatibility needs to be preserved + on changes to types. (Use versioned type names to manage + breaking changes.) - used with implementation specific semantics. - value: - type: string - format: byte - description: >- - Must be a valid serialized protocol buffer of the - above specified type. - description: >- - `Any` contains an arbitrary serialized protocol buffer - message along with a + Note: this functionality is not currently available in + the official - URL that describes the type of the serialized message. + protobuf release, and it is not used for type URLs + beginning with + type.googleapis.com. - Protobuf library provides support to pack/unpack Any - values in the form - of utility functions or additional generated methods of - the Any type. + Schemes other than `http`, `https` (or the empty scheme) + might be + used with implementation specific semantics. + value: + type: string + format: byte + description: >- + Must be a valid serialized protocol buffer of the above + specified type. + description: >- + `Any` contains an arbitrary serialized protocol buffer + message along with a - Example 1: Pack and unpack a message in C++. + URL that describes the type of the serialized message. - Foo foo = ...; - Any any; - any.PackFrom(foo); - ... - if (any.UnpackTo(&foo)) { - ... - } - Example 2: Pack and unpack a message in Java. + Protobuf library provides support to pack/unpack Any values + in the form - Foo foo = ...; - Any any = Any.pack(foo); - ... - if (any.is(Foo.class)) { - foo = any.unpack(Foo.class); - } + of utility functions or additional generated methods of the + Any type. - Example 3: Pack and unpack a message in Python. - foo = Foo(...) - any = Any() - any.Pack(foo) - ... - if any.Is(Foo.DESCRIPTOR): - any.Unpack(foo) - ... + Example 1: Pack and unpack a message in C++. - Example 4: Pack and unpack a message in Go + Foo foo = ...; + Any any; + any.PackFrom(foo); + ... + if (any.UnpackTo(&foo)) { + ... + } - foo := &pb.Foo{...} - any, err := ptypes.MarshalAny(foo) - ... - foo := &pb.Foo{} - if err := ptypes.UnmarshalAny(any, foo); err != nil { - ... - } + Example 2: Pack and unpack a message in Java. - The pack methods provided by protobuf library will by - default use + Foo foo = ...; + Any any = Any.pack(foo); + ... + if (any.is(Foo.class)) { + foo = any.unpack(Foo.class); + } - 'type.googleapis.com/full.type.name' as the type URL and - the unpack + Example 3: Pack and unpack a message in Python. - methods only use the fully qualified type name after the - last '/' + foo = Foo(...) + any = Any() + any.Pack(foo) + ... + if any.Is(Foo.DESCRIPTOR): + any.Unpack(foo) + ... - in the type URL, for example "foo.bar.com/x/y.z" will - yield type + Example 4: Pack and unpack a message in Go - name "y.z". + foo := &pb.Foo{...} + any, err := ptypes.MarshalAny(foo) + ... + foo := &pb.Foo{} + if err := ptypes.UnmarshalAny(any, foo); err != nil { + ... + } + The pack methods provided by protobuf library will by + default use + 'type.googleapis.com/full.type.name' as the type URL and the + unpack - JSON + methods only use the fully qualified type name after the + last '/' - ==== + in the type URL, for example "foo.bar.com/x/y.z" will yield + type - The JSON representation of an `Any` value uses the - regular + name "y.z". - representation of the deserialized, embedded message, - with an - additional field `@type` which contains the type URL. - Example: - package google.profile; - message Person { - string first_name = 1; - string last_name = 2; - } + JSON - { - "@type": "type.googleapis.com/google.profile.Person", - "firstName": , - "lastName": - } + ==== - If the embedded message type is well-known and has a - custom JSON + The JSON representation of an `Any` value uses the regular - representation, that representation will be embedded - adding a field + representation of the deserialized, embedded message, with + an - `value` which holds the custom JSON in addition to the - `@type` + additional field `@type` which contains the type URL. + Example: - field. Example (for message - [google.protobuf.Duration][]): + package google.profile; + message Person { + string first_name = 1; + string last_name = 2; + } - { - "@type": "type.googleapis.com/google.protobuf.Duration", - "value": "1.212s" - } - jailed: - type: boolean - status: - type: string - enum: - - BOND_STATUS_UNSPECIFIED - - BOND_STATUS_UNBONDED - - BOND_STATUS_UNBONDING - - BOND_STATUS_BONDED - default: BOND_STATUS_UNSPECIFIED - description: |- - BondStatus is the status of a validator. + { + "@type": "type.googleapis.com/google.profile.Person", + "firstName": , + "lastName": + } - - BOND_STATUS_UNSPECIFIED: UNSPECIFIED defines an invalid validator status. - - BOND_STATUS_UNBONDED: UNBONDED defines a validator that is not bonded. - - BOND_STATUS_UNBONDING: UNBONDING defines a validator that is unbonding. - - BOND_STATUS_BONDED: BONDED defines a validator that is bonded. - tokens: - type: string - delegator_shares: - type: string - description: - type: object - properties: - moniker: - type: string - identity: - type: string - website: - type: string - security_contact: - type: string - details: - type: string - description: Description defines a validator description. - unbonding_height: - type: string - format: int64 - unbonding_time: - type: string - format: date-time - commission: - type: object - properties: - commission_rates: - type: object - properties: - rate: - type: string - max_rate: - type: string - max_change_rate: - type: string - description: >- - CommissionRates defines the initial commission rates - to be used for creating + If the embedded message type is well-known and has a custom + JSON - a validator. - update_time: - type: string - format: date-time - description: >- - Commission defines commission parameters for a given - validator. - min_self_delegation: - type: string - description: >- - Validator defines a validator, together with the total - amount of the + representation, that representation will be embedded adding + a field - Validator's bond shares and their exchange rate to coins. - Slashing results in + `value` which holds the custom JSON in addition to the + `@type` - a decrease in the exchange rate, allowing correct - calculation of future + field. Example (for message [google.protobuf.Duration][]): - undelegations without iterating over delegators. When coins - are delegated to + { + "@type": "type.googleapis.com/google.protobuf.Duration", + "value": "1.212s" + } + parameters: + - name: proposal_id + description: proposal_id defines the unique id of the proposal. + in: path + required: true + type: string + format: uint64 + - name: pagination.key + description: |- + key is a value returned in PageResponse.next_key to begin + querying the next page most efficiently. Only one of offset or key + should be set. + in: query + required: false + type: string + format: byte + - name: pagination.offset + description: >- + offset is a numeric offset that can be used when key is unavailable. - this validator, the validator is credited with a delegation - whose number of + It is less efficient than using key. Only one of offset or key + should - bond shares is based on the amount of coins delegated - divided by the current + be set. + in: query + required: false + type: string + format: uint64 + - name: pagination.limit + description: >- + limit is the total number of results to be returned in the result + page. - exchange rate. Voting power can be calculated as total - bonded shares + If left empty it will default to a value to be set by each app. + in: query + required: false + type: string + format: uint64 + - name: pagination.count_total + description: >- + count_total is set to true to indicate that the result set should + include - multiplied by exchange rate. - description: validators defines the the validators' info of a delegator. - pagination: - description: pagination defines the pagination in the response. + a count of the total number of items available for pagination in + UIs. + + count_total is only respected when offset is used. It is ignored + when key + + is set. + in: query + required: false + type: boolean + format: boolean + - name: pagination.reverse + description: >- + reverse is set to true indicates that, results to be returned in the + descending order. + in: query + required: false + type: boolean + format: boolean + tags: + - Query + '/cosmos/gov/v1beta1/proposals/{proposal_id}/deposits/{depositor}': + get: + summary: >- + Deposit queries single deposit information based proposalID, + depositAddr. + operationId: Deposit + responses: + '200': + description: A successful response. + schema: + type: object + properties: + deposit: type: object properties: - next_key: - type: string - format: byte - title: |- - next_key is the key to be passed to PageRequest.key to - query the next page most efficiently - total: + proposal_id: type: string format: uint64 - title: >- - total is total number of results available if - PageRequest.count_total + depositor: + type: string + amount: + type: array + items: + type: object + properties: + denom: + type: string + amount: + type: string + description: >- + Coin defines a token with a denomination and an amount. - was set, its value is undefined otherwise - description: |- - QueryDelegatorValidatorsResponse is response type for the - Query/DelegatorValidators RPC method. + + NOTE: The amount field is an Int which implements the + custom method + + signatures required by gogoproto. + description: >- + Deposit defines an amount deposited by an account address to + an active + + proposal. + description: >- + QueryDepositResponse is the response type for the Query/Deposit + RPC method. default: - description: An unexpected error response. + description: An unexpected error response schema: type: object properties: @@ -13768,323 +15563,321 @@ paths: "value": "1.212s" } parameters: - - name: delegator_addr - description: delegator_addr defines the delegator address to query for. + - name: proposal_id + description: proposal_id defines the unique id of the proposal. in: path required: true type: string - - name: pagination.key - description: |- - key is a value returned in PageResponse.next_key to begin - querying the next page most efficiently. Only one of offset or key - should be set. - in: query - required: false - type: string - format: byte - - name: pagination.offset - description: >- - offset is a numeric offset that can be used when key is unavailable. - - It is less efficient than using key. Only one of offset or key - should - - be set. - in: query - required: false - type: string format: uint64 - - name: pagination.limit - description: >- - limit is the total number of results to be returned in the result - page. - - If left empty it will default to a value to be set by each app. - in: query - required: false + - name: depositor + description: depositor defines the deposit addresses from the proposals. + in: path + required: true type: string - format: uint64 - - name: pagination.count_total - description: >- - count_total is set to true to indicate that the result set should - include - - a count of the total number of items available for pagination in - UIs. - - count_total is only respected when offset is used. It is ignored - when key - - is set. - in: query - required: false - type: boolean tags: - Query - '/cosmos/staking/v1beta1/delegators/{delegator_addr}/validators/{validator_addr}': + '/cosmos/gov/v1beta1/proposals/{proposal_id}/tally': get: - summary: |- - DelegatorValidator queries validator info for given delegator validator - pair. - operationId: DelegatorValidator + summary: TallyResult queries the tally of a proposal vote. + operationId: TallyResult responses: '200': description: A successful response. schema: type: object properties: - validator: - description: validator defines the the validator info. + tally: type: object properties: - operator_address: + 'yes': type: string - consensus_pubkey: - type: object - properties: - type_url: - type: string - description: >- - A URL/resource name that uniquely identifies the type - of the serialized + abstain: + type: string + 'no': + type: string + no_with_veto: + type: string + description: >- + TallyResult defines a standard tally for a governance + proposal. + description: >- + QueryTallyResultResponse is the response type for the Query/Tally + RPC method. + default: + description: An unexpected error response + schema: + type: object + properties: + error: + type: string + code: + type: integer + format: int32 + message: + type: string + details: + type: array + items: + type: object + properties: + type_url: + type: string + description: >- + A URL/resource name that uniquely identifies the type of + the serialized - protocol buffer message. This string must contain at - least + protocol buffer message. This string must contain at + least - one "/" character. The last segment of the URL's path - must represent + one "/" character. The last segment of the URL's path + must represent - the fully qualified name of the type (as in + the fully qualified name of the type (as in - `path/google.protobuf.Duration`). The name should be - in a canonical form + `path/google.protobuf.Duration`). The name should be in + a canonical form - (e.g., leading "." is not accepted). + (e.g., leading "." is not accepted). - In practice, teams usually precompile into the binary - all types that they + In practice, teams usually precompile into the binary + all types that they - expect it to use in the context of Any. However, for - URLs which use the + expect it to use in the context of Any. However, for + URLs which use the - scheme `http`, `https`, or no scheme, one can - optionally set up a type + scheme `http`, `https`, or no scheme, one can optionally + set up a type - server that maps type URLs to message definitions as - follows: + server that maps type URLs to message definitions as + follows: - * If no scheme is provided, `https` is assumed. + * If no scheme is provided, `https` is assumed. - * An HTTP GET on the URL must yield a - [google.protobuf.Type][] - value in binary format, or produce an error. - * Applications are allowed to cache lookup results - based on the - URL, or have them precompiled into a binary to avoid any - lookup. Therefore, binary compatibility needs to be preserved - on changes to types. (Use versioned type names to manage - breaking changes.) + * An HTTP GET on the URL must yield a + [google.protobuf.Type][] + value in binary format, or produce an error. + * Applications are allowed to cache lookup results based + on the + URL, or have them precompiled into a binary to avoid any + lookup. Therefore, binary compatibility needs to be preserved + on changes to types. (Use versioned type names to manage + breaking changes.) - Note: this functionality is not currently available in - the official + Note: this functionality is not currently available in + the official - protobuf release, and it is not used for type URLs - beginning with + protobuf release, and it is not used for type URLs + beginning with - type.googleapis.com. + type.googleapis.com. - Schemes other than `http`, `https` (or the empty - scheme) might be + Schemes other than `http`, `https` (or the empty scheme) + might be - used with implementation specific semantics. - value: - type: string - format: byte - description: >- - Must be a valid serialized protocol buffer of the - above specified type. - description: >- - `Any` contains an arbitrary serialized protocol buffer - message along with a + used with implementation specific semantics. + value: + type: string + format: byte + description: >- + Must be a valid serialized protocol buffer of the above + specified type. + description: >- + `Any` contains an arbitrary serialized protocol buffer + message along with a - URL that describes the type of the serialized message. + URL that describes the type of the serialized message. - Protobuf library provides support to pack/unpack Any - values in the form + Protobuf library provides support to pack/unpack Any values + in the form - of utility functions or additional generated methods of - the Any type. + of utility functions or additional generated methods of the + Any type. - Example 1: Pack and unpack a message in C++. + Example 1: Pack and unpack a message in C++. - Foo foo = ...; - Any any; - any.PackFrom(foo); + Foo foo = ...; + Any any; + any.PackFrom(foo); + ... + if (any.UnpackTo(&foo)) { ... - if (any.UnpackTo(&foo)) { - ... - } + } - Example 2: Pack and unpack a message in Java. + Example 2: Pack and unpack a message in Java. - Foo foo = ...; - Any any = Any.pack(foo); - ... - if (any.is(Foo.class)) { - foo = any.unpack(Foo.class); - } + Foo foo = ...; + Any any = Any.pack(foo); + ... + if (any.is(Foo.class)) { + foo = any.unpack(Foo.class); + } - Example 3: Pack and unpack a message in Python. + Example 3: Pack and unpack a message in Python. - foo = Foo(...) - any = Any() - any.Pack(foo) + foo = Foo(...) + any = Any() + any.Pack(foo) + ... + if any.Is(Foo.DESCRIPTOR): + any.Unpack(foo) ... - if any.Is(Foo.DESCRIPTOR): - any.Unpack(foo) - ... - Example 4: Pack and unpack a message in Go + Example 4: Pack and unpack a message in Go - foo := &pb.Foo{...} - any, err := ptypes.MarshalAny(foo) + foo := &pb.Foo{...} + any, err := ptypes.MarshalAny(foo) + ... + foo := &pb.Foo{} + if err := ptypes.UnmarshalAny(any, foo); err != nil { ... - foo := &pb.Foo{} - if err := ptypes.UnmarshalAny(any, foo); err != nil { - ... - } - - The pack methods provided by protobuf library will by - default use + } - 'type.googleapis.com/full.type.name' as the type URL and - the unpack + The pack methods provided by protobuf library will by + default use - methods only use the fully qualified type name after the - last '/' + 'type.googleapis.com/full.type.name' as the type URL and the + unpack - in the type URL, for example "foo.bar.com/x/y.z" will - yield type + methods only use the fully qualified type name after the + last '/' - name "y.z". + in the type URL, for example "foo.bar.com/x/y.z" will yield + type + name "y.z". - JSON - ==== + JSON - The JSON representation of an `Any` value uses the regular + ==== - representation of the deserialized, embedded message, with - an + The JSON representation of an `Any` value uses the regular - additional field `@type` which contains the type URL. - Example: + representation of the deserialized, embedded message, with + an - package google.profile; - message Person { - string first_name = 1; - string last_name = 2; - } + additional field `@type` which contains the type URL. + Example: - { - "@type": "type.googleapis.com/google.profile.Person", - "firstName": , - "lastName": - } + package google.profile; + message Person { + string first_name = 1; + string last_name = 2; + } - If the embedded message type is well-known and has a - custom JSON + { + "@type": "type.googleapis.com/google.profile.Person", + "firstName": , + "lastName": + } - representation, that representation will be embedded - adding a field + If the embedded message type is well-known and has a custom + JSON - `value` which holds the custom JSON in addition to the - `@type` + representation, that representation will be embedded adding + a field - field. Example (for message [google.protobuf.Duration][]): + `value` which holds the custom JSON in addition to the + `@type` - { - "@type": "type.googleapis.com/google.protobuf.Duration", - "value": "1.212s" - } - jailed: - type: boolean - status: - type: string - enum: - - BOND_STATUS_UNSPECIFIED - - BOND_STATUS_UNBONDED - - BOND_STATUS_UNBONDING - - BOND_STATUS_BONDED - default: BOND_STATUS_UNSPECIFIED - description: |- - BondStatus is the status of a validator. + field. Example (for message [google.protobuf.Duration][]): - - BOND_STATUS_UNSPECIFIED: UNSPECIFIED defines an invalid validator status. - - BOND_STATUS_UNBONDED: UNBONDED defines a validator that is not bonded. - - BOND_STATUS_UNBONDING: UNBONDING defines a validator that is unbonding. - - BOND_STATUS_BONDED: BONDED defines a validator that is bonded. - tokens: - type: string - delegator_shares: - type: string - description: - type: object - properties: - moniker: - type: string - identity: - type: string - website: - type: string - security_contact: - type: string - details: - type: string - description: Description defines a validator description. - unbonding_height: - type: string - format: int64 - unbonding_time: - type: string - format: date-time - commission: - type: object - properties: - commission_rates: + { + "@type": "type.googleapis.com/google.protobuf.Duration", + "value": "1.212s" + } + parameters: + - name: proposal_id + description: proposal_id defines the unique id of the proposal. + in: path + required: true + type: string + format: uint64 + tags: + - Query + '/cosmos/gov/v1beta1/proposals/{proposal_id}/votes': + get: + summary: Votes queries votes of a given proposal. + operationId: Votes + responses: + '200': + description: A successful response. + schema: + type: object + properties: + votes: + type: array + items: + type: object + properties: + proposal_id: + type: string + format: uint64 + voter: + type: string + options: + type: array + items: type: object properties: - rate: - type: string - max_rate: + option: type: string - max_change_rate: + enum: + - VOTE_OPTION_UNSPECIFIED + - VOTE_OPTION_YES + - VOTE_OPTION_ABSTAIN + - VOTE_OPTION_NO + - VOTE_OPTION_NO_WITH_VETO + default: VOTE_OPTION_UNSPECIFIED + description: >- + VoteOption enumerates the valid vote options for a + given governance proposal. + + - VOTE_OPTION_UNSPECIFIED: VOTE_OPTION_UNSPECIFIED defines a no-op vote option. + - VOTE_OPTION_YES: VOTE_OPTION_YES defines a yes vote option. + - VOTE_OPTION_ABSTAIN: VOTE_OPTION_ABSTAIN defines an abstain vote option. + - VOTE_OPTION_NO: VOTE_OPTION_NO defines a no vote option. + - VOTE_OPTION_NO_WITH_VETO: VOTE_OPTION_NO_WITH_VETO defines a no with veto vote option. + weight: type: string description: >- - CommissionRates defines the initial commission rates - to be used for creating + WeightedVoteOption defines a unit of vote for vote + split. + description: >- + Vote defines a vote on a governance proposal. - a validator. - update_time: - type: string - format: date-time - description: >- - Commission defines commission parameters for a given - validator. - min_self_delegation: + A Vote consists of a proposal ID, the voter, and the vote + option. + description: votes defined the queried votes. + pagination: + description: pagination defines the pagination in the response. + type: object + properties: + next_key: type: string - description: |- - QueryDelegatorValidatorResponse response type for the - Query/DelegatorValidator RPC method. + format: byte + title: |- + next_key is the key to be passed to PageRequest.key to + query the next page most efficiently + total: + type: string + format: uint64 + title: >- + total is total number of results available if + PageRequest.count_total + + was set, its value is undefined otherwise + description: >- + QueryVotesResponse is the response type for the Query/Votes RPC + method. default: - description: An unexpected error response. + description: An unexpected error response schema: type: object properties: @@ -14273,474 +16066,209 @@ paths: "value": "1.212s" } parameters: - - name: delegator_addr - description: delegator_addr defines the delegator address to query for. + - name: proposal_id + description: proposal_id defines the unique id of the proposal. in: path required: true type: string - - name: validator_addr - description: validator_addr defines the validator address to query for. - in: path - required: true + format: uint64 + - name: pagination.key + description: |- + key is a value returned in PageResponse.next_key to begin + querying the next page most efficiently. Only one of offset or key + should be set. + in: query + required: false + type: string + format: byte + - name: pagination.offset + description: >- + offset is a numeric offset that can be used when key is unavailable. + + It is less efficient than using key. Only one of offset or key + should + + be set. + in: query + required: false + type: string + format: uint64 + - name: pagination.limit + description: >- + limit is the total number of results to be returned in the result + page. + + If left empty it will default to a value to be set by each app. + in: query + required: false type: string + format: uint64 + - name: pagination.count_total + description: >- + count_total is set to true to indicate that the result set should + include + + a count of the total number of items available for pagination in + UIs. + + count_total is only respected when offset is used. It is ignored + when key + + is set. + in: query + required: false + type: boolean + format: boolean + - name: pagination.reverse + description: >- + reverse is set to true indicates that, results to be returned in the + descending order. + in: query + required: false + type: boolean + format: boolean tags: - Query - '/cosmos/staking/v1beta1/historical_info/{height}': + '/cosmos/gov/v1beta1/proposals/{proposal_id}/votes/{voter}': get: - summary: HistoricalInfo queries the historical info for given height. - operationId: HistoricalInfo + summary: 'Vote queries voted information based on proposalID, voterAddr.' + operationId: Vote responses: '200': description: A successful response. schema: type: object properties: - hist: - description: hist defines the historical info at the given height. + vote: type: object properties: - header: - type: object - properties: - version: - title: basic block info - type: object - properties: - block: - type: string - format: uint64 - app: - type: string - format: uint64 - description: >- - Consensus captures the consensus rules for processing - a block in the blockchain, - - including all blockchain data structures and the rules - of the application's - - state transition machine. - chain_id: - type: string - height: - type: string - format: int64 - time: - type: string - format: date-time - last_block_id: - title: prev block info - type: object - properties: - hash: - type: string - format: byte - part_set_header: - type: object - properties: - total: - type: integer - format: int64 - hash: - type: string - format: byte - title: PartsetHeader - last_commit_hash: - type: string - format: byte - title: hashes of block data - data_hash: - type: string - format: byte - validators_hash: - type: string - format: byte - title: hashes from the app output from the prev block - next_validators_hash: - type: string - format: byte - consensus_hash: - type: string - format: byte - app_hash: - type: string - format: byte - last_results_hash: - type: string - format: byte - evidence_hash: - type: string - format: byte - title: consensus info - proposer_address: - type: string - format: byte - description: Header defines the structure of a Tendermint block header. - valset: + proposal_id: + type: string + format: uint64 + voter: + type: string + options: type: array items: type: object properties: - operator_address: + option: type: string - consensus_pubkey: - type: object - properties: - type_url: - type: string - description: >- - A URL/resource name that uniquely identifies the - type of the serialized + enum: + - VOTE_OPTION_UNSPECIFIED + - VOTE_OPTION_YES + - VOTE_OPTION_ABSTAIN + - VOTE_OPTION_NO + - VOTE_OPTION_NO_WITH_VETO + default: VOTE_OPTION_UNSPECIFIED + description: >- + VoteOption enumerates the valid vote options for a + given governance proposal. + + - VOTE_OPTION_UNSPECIFIED: VOTE_OPTION_UNSPECIFIED defines a no-op vote option. + - VOTE_OPTION_YES: VOTE_OPTION_YES defines a yes vote option. + - VOTE_OPTION_ABSTAIN: VOTE_OPTION_ABSTAIN defines an abstain vote option. + - VOTE_OPTION_NO: VOTE_OPTION_NO defines a no vote option. + - VOTE_OPTION_NO_WITH_VETO: VOTE_OPTION_NO_WITH_VETO defines a no with veto vote option. + weight: + type: string + description: >- + WeightedVoteOption defines a unit of vote for vote + split. + description: >- + Vote defines a vote on a governance proposal. - protocol buffer message. This string must - contain at least + A Vote consists of a proposal ID, the voter, and the vote + option. + description: >- + QueryVoteResponse is the response type for the Query/Vote RPC + method. + default: + description: An unexpected error response + schema: + type: object + properties: + error: + type: string + code: + type: integer + format: int32 + message: + type: string + details: + type: array + items: + type: object + properties: + type_url: + type: string + description: >- + A URL/resource name that uniquely identifies the type of + the serialized - one "/" character. The last segment of the URL's - path must represent + protocol buffer message. This string must contain at + least - the fully qualified name of the type (as in + one "/" character. The last segment of the URL's path + must represent - `path/google.protobuf.Duration`). The name - should be in a canonical form + the fully qualified name of the type (as in - (e.g., leading "." is not accepted). + `path/google.protobuf.Duration`). The name should be in + a canonical form + (e.g., leading "." is not accepted). - In practice, teams usually precompile into the - binary all types that they - expect it to use in the context of Any. However, - for URLs which use the + In practice, teams usually precompile into the binary + all types that they - scheme `http`, `https`, or no scheme, one can - optionally set up a type + expect it to use in the context of Any. However, for + URLs which use the - server that maps type URLs to message - definitions as follows: + scheme `http`, `https`, or no scheme, one can optionally + set up a type + server that maps type URLs to message definitions as + follows: - * If no scheme is provided, `https` is assumed. - * An HTTP GET on the URL must yield a - [google.protobuf.Type][] - value in binary format, or produce an error. - * Applications are allowed to cache lookup - results based on the - URL, or have them precompiled into a binary to avoid any - lookup. Therefore, binary compatibility needs to be preserved - on changes to types. (Use versioned type names to manage - breaking changes.) + * If no scheme is provided, `https` is assumed. - Note: this functionality is not currently - available in the official + * An HTTP GET on the URL must yield a + [google.protobuf.Type][] + value in binary format, or produce an error. + * Applications are allowed to cache lookup results based + on the + URL, or have them precompiled into a binary to avoid any + lookup. Therefore, binary compatibility needs to be preserved + on changes to types. (Use versioned type names to manage + breaking changes.) - protobuf release, and it is not used for type - URLs beginning with + Note: this functionality is not currently available in + the official - type.googleapis.com. + protobuf release, and it is not used for type URLs + beginning with + type.googleapis.com. - Schemes other than `http`, `https` (or the empty - scheme) might be - used with implementation specific semantics. - value: - type: string - format: byte - description: >- - Must be a valid serialized protocol buffer of - the above specified type. - description: >- - `Any` contains an arbitrary serialized protocol - buffer message along with a + Schemes other than `http`, `https` (or the empty scheme) + might be - URL that describes the type of the serialized - message. + used with implementation specific semantics. + value: + type: string + format: byte + description: >- + Must be a valid serialized protocol buffer of the above + specified type. + description: >- + `Any` contains an arbitrary serialized protocol buffer + message along with a - - Protobuf library provides support to pack/unpack Any - values in the form - - of utility functions or additional generated methods - of the Any type. - - - Example 1: Pack and unpack a message in C++. - - Foo foo = ...; - Any any; - any.PackFrom(foo); - ... - if (any.UnpackTo(&foo)) { - ... - } - - Example 2: Pack and unpack a message in Java. - - Foo foo = ...; - Any any = Any.pack(foo); - ... - if (any.is(Foo.class)) { - foo = any.unpack(Foo.class); - } - - Example 3: Pack and unpack a message in Python. - - foo = Foo(...) - any = Any() - any.Pack(foo) - ... - if any.Is(Foo.DESCRIPTOR): - any.Unpack(foo) - ... - - Example 4: Pack and unpack a message in Go - - foo := &pb.Foo{...} - any, err := ptypes.MarshalAny(foo) - ... - foo := &pb.Foo{} - if err := ptypes.UnmarshalAny(any, foo); err != nil { - ... - } - - The pack methods provided by protobuf library will - by default use - - 'type.googleapis.com/full.type.name' as the type URL - and the unpack - - methods only use the fully qualified type name after - the last '/' - - in the type URL, for example "foo.bar.com/x/y.z" - will yield type - - name "y.z". - - - - JSON - - ==== - - The JSON representation of an `Any` value uses the - regular - - representation of the deserialized, embedded - message, with an - - additional field `@type` which contains the type - URL. Example: - - package google.profile; - message Person { - string first_name = 1; - string last_name = 2; - } - - { - "@type": "type.googleapis.com/google.profile.Person", - "firstName": , - "lastName": - } - - If the embedded message type is well-known and has a - custom JSON - - representation, that representation will be embedded - adding a field - - `value` which holds the custom JSON in addition to - the `@type` - - field. Example (for message - [google.protobuf.Duration][]): - - { - "@type": "type.googleapis.com/google.protobuf.Duration", - "value": "1.212s" - } - jailed: - type: boolean - status: - type: string - enum: - - BOND_STATUS_UNSPECIFIED - - BOND_STATUS_UNBONDED - - BOND_STATUS_UNBONDING - - BOND_STATUS_BONDED - default: BOND_STATUS_UNSPECIFIED - description: |- - BondStatus is the status of a validator. - - - BOND_STATUS_UNSPECIFIED: UNSPECIFIED defines an invalid validator status. - - BOND_STATUS_UNBONDED: UNBONDED defines a validator that is not bonded. - - BOND_STATUS_UNBONDING: UNBONDING defines a validator that is unbonding. - - BOND_STATUS_BONDED: BONDED defines a validator that is bonded. - tokens: - type: string - delegator_shares: - type: string - description: - type: object - properties: - moniker: - type: string - identity: - type: string - website: - type: string - security_contact: - type: string - details: - type: string - description: Description defines a validator description. - unbonding_height: - type: string - format: int64 - unbonding_time: - type: string - format: date-time - commission: - type: object - properties: - commission_rates: - type: object - properties: - rate: - type: string - max_rate: - type: string - max_change_rate: - type: string - description: >- - CommissionRates defines the initial commission - rates to be used for creating - - a validator. - update_time: - type: string - format: date-time - description: >- - Commission defines commission parameters for a given - validator. - min_self_delegation: - type: string - description: >- - Validator defines a validator, together with the total - amount of the - - Validator's bond shares and their exchange rate to - coins. Slashing results in - - a decrease in the exchange rate, allowing correct - calculation of future - - undelegations without iterating over delegators. When - coins are delegated to - - this validator, the validator is credited with a - delegation whose number of - - bond shares is based on the amount of coins delegated - divided by the current - - exchange rate. Voting power can be calculated as total - bonded shares - - multiplied by exchange rate. - description: >- - QueryHistoricalInfoResponse is response type for the - Query/HistoricalInfo RPC - - method. - default: - description: An unexpected error response. - schema: - type: object - properties: - error: - type: string - code: - type: integer - format: int32 - message: - type: string - details: - type: array - items: - type: object - properties: - type_url: - type: string - description: >- - A URL/resource name that uniquely identifies the type of - the serialized - - protocol buffer message. This string must contain at - least - - one "/" character. The last segment of the URL's path - must represent - - the fully qualified name of the type (as in - - `path/google.protobuf.Duration`). The name should be in - a canonical form - - (e.g., leading "." is not accepted). - - - In practice, teams usually precompile into the binary - all types that they - - expect it to use in the context of Any. However, for - URLs which use the - - scheme `http`, `https`, or no scheme, one can optionally - set up a type - - server that maps type URLs to message definitions as - follows: - - - * If no scheme is provided, `https` is assumed. - - * An HTTP GET on the URL must yield a - [google.protobuf.Type][] - value in binary format, or produce an error. - * Applications are allowed to cache lookup results based - on the - URL, or have them precompiled into a binary to avoid any - lookup. Therefore, binary compatibility needs to be preserved - on changes to types. (Use versioned type names to manage - breaking changes.) - - Note: this functionality is not currently available in - the official - - protobuf release, and it is not used for type URLs - beginning with - - type.googleapis.com. - - - Schemes other than `http`, `https` (or the empty scheme) - might be - - used with implementation specific semantics. - value: - type: string - format: byte - description: >- - Must be a valid serialized protocol buffer of the above - specified type. - description: >- - `Any` contains an arbitrary serialized protocol buffer - message along with a - - URL that describes the type of the serialized message. + URL that describes the type of the serialized message. Protobuf library provides support to pack/unpack Any values @@ -14845,46 +16373,40 @@ paths: "value": "1.212s" } parameters: - - name: height - description: height defines at which height to query the historical info. + - name: proposal_id + description: proposal_id defines the unique id of the proposal. + in: path + required: true + type: string + format: uint64 + - name: voter + description: voter defines the oter address for the proposals. in: path required: true type: string - format: int64 tags: - Query - /cosmos/staking/v1beta1/params: + /cosmos/mint/v1beta1/annual_provisions: get: - summary: Parameters queries the staking parameters. - operationId: StakingParams + summary: AnnualProvisions current minting annual provisions value. + operationId: AnnualProvisions responses: '200': description: A successful response. schema: type: object properties: - params: - description: params holds all the parameters of this module. - type: object - properties: - unbonding_time: - type: string - max_validators: - type: integer - format: int64 - max_entries: - type: integer - format: int64 - historical_entries: - type: integer - format: int64 - bond_denom: - type: string - description: >- - QueryParamsResponse is response type for the Query/Params RPC - method. + annual_provisions: + type: string + format: byte + description: >- + annual_provisions is the current minting annual provisions + value. + description: |- + QueryAnnualProvisionsResponse is the response type for the + Query/AnnualProvisions RPC method. default: - description: An unexpected error response. + description: An unexpected error response schema: type: object properties: @@ -14902,206 +16424,39 @@ paths: properties: type_url: type: string - description: >- - A URL/resource name that uniquely identifies the type of - the serialized - - protocol buffer message. This string must contain at - least - - one "/" character. The last segment of the URL's path - must represent - - the fully qualified name of the type (as in - - `path/google.protobuf.Duration`). The name should be in - a canonical form - - (e.g., leading "." is not accepted). - - - In practice, teams usually precompile into the binary - all types that they - - expect it to use in the context of Any. However, for - URLs which use the - - scheme `http`, `https`, or no scheme, one can optionally - set up a type - - server that maps type URLs to message definitions as - follows: - - - * If no scheme is provided, `https` is assumed. - - * An HTTP GET on the URL must yield a - [google.protobuf.Type][] - value in binary format, or produce an error. - * Applications are allowed to cache lookup results based - on the - URL, or have them precompiled into a binary to avoid any - lookup. Therefore, binary compatibility needs to be preserved - on changes to types. (Use versioned type names to manage - breaking changes.) - - Note: this functionality is not currently available in - the official - - protobuf release, and it is not used for type URLs - beginning with - - type.googleapis.com. - - - Schemes other than `http`, `https` (or the empty scheme) - might be - - used with implementation specific semantics. value: type: string format: byte - description: >- - Must be a valid serialized protocol buffer of the above - specified type. - description: >- - `Any` contains an arbitrary serialized protocol buffer - message along with a - - URL that describes the type of the serialized message. - - - Protobuf library provides support to pack/unpack Any values - in the form - - of utility functions or additional generated methods of the - Any type. - - - Example 1: Pack and unpack a message in C++. - - Foo foo = ...; - Any any; - any.PackFrom(foo); - ... - if (any.UnpackTo(&foo)) { - ... - } - - Example 2: Pack and unpack a message in Java. - - Foo foo = ...; - Any any = Any.pack(foo); - ... - if (any.is(Foo.class)) { - foo = any.unpack(Foo.class); - } - - Example 3: Pack and unpack a message in Python. - - foo = Foo(...) - any = Any() - any.Pack(foo) - ... - if any.Is(Foo.DESCRIPTOR): - any.Unpack(foo) - ... - - Example 4: Pack and unpack a message in Go - - foo := &pb.Foo{...} - any, err := ptypes.MarshalAny(foo) - ... - foo := &pb.Foo{} - if err := ptypes.UnmarshalAny(any, foo); err != nil { - ... - } - - The pack methods provided by protobuf library will by - default use - - 'type.googleapis.com/full.type.name' as the type URL and the - unpack - - methods only use the fully qualified type name after the - last '/' - - in the type URL, for example "foo.bar.com/x/y.z" will yield - type - - name "y.z". - - - - JSON - - ==== - - The JSON representation of an `Any` value uses the regular - - representation of the deserialized, embedded message, with - an - - additional field `@type` which contains the type URL. - Example: - - package google.profile; - message Person { - string first_name = 1; - string last_name = 2; - } - - { - "@type": "type.googleapis.com/google.profile.Person", - "firstName": , - "lastName": - } - - If the embedded message type is well-known and has a custom - JSON - - representation, that representation will be embedded adding - a field - - `value` which holds the custom JSON in addition to the - `@type` - - field. Example (for message [google.protobuf.Duration][]): - - { - "@type": "type.googleapis.com/google.protobuf.Duration", - "value": "1.212s" - } tags: - Query - /cosmos/staking/v1beta1/pool: + /cosmos/mint/v1beta1/inflation: get: - summary: Pool queries the pool info. - operationId: Pool + summary: Inflation returns the current minting inflation value. + operationId: Inflation responses: '200': description: A successful response. schema: type: object properties: - pool: - description: pool defines the pool info. - type: object - properties: - not_bonded_tokens: - type: string - bonded_tokens: - type: string - description: QueryPoolResponse is response type for the Query/Pool RPC method. - default: - description: An unexpected error response. - schema: - type: object - properties: - error: + inflation: type: string - code: - type: integer + format: byte + description: inflation is the current minting inflation value. + description: >- + QueryInflationResponse is the response type for the + Query/Inflation RPC + + method. + default: + description: An unexpected error response + schema: + type: object + properties: + error: + type: string + code: + type: integer format: int32 message: type: string @@ -15112,485 +16467,49 @@ paths: properties: type_url: type: string - description: >- - A URL/resource name that uniquely identifies the type of - the serialized - - protocol buffer message. This string must contain at - least - - one "/" character. The last segment of the URL's path - must represent - - the fully qualified name of the type (as in - - `path/google.protobuf.Duration`). The name should be in - a canonical form - - (e.g., leading "." is not accepted). - - - In practice, teams usually precompile into the binary - all types that they - - expect it to use in the context of Any. However, for - URLs which use the - - scheme `http`, `https`, or no scheme, one can optionally - set up a type - - server that maps type URLs to message definitions as - follows: - - - * If no scheme is provided, `https` is assumed. - - * An HTTP GET on the URL must yield a - [google.protobuf.Type][] - value in binary format, or produce an error. - * Applications are allowed to cache lookup results based - on the - URL, or have them precompiled into a binary to avoid any - lookup. Therefore, binary compatibility needs to be preserved - on changes to types. (Use versioned type names to manage - breaking changes.) - - Note: this functionality is not currently available in - the official - - protobuf release, and it is not used for type URLs - beginning with - - type.googleapis.com. - - - Schemes other than `http`, `https` (or the empty scheme) - might be - - used with implementation specific semantics. value: type: string format: byte - description: >- - Must be a valid serialized protocol buffer of the above - specified type. - description: >- - `Any` contains an arbitrary serialized protocol buffer - message along with a - - URL that describes the type of the serialized message. - - - Protobuf library provides support to pack/unpack Any values - in the form - - of utility functions or additional generated methods of the - Any type. - - - Example 1: Pack and unpack a message in C++. - - Foo foo = ...; - Any any; - any.PackFrom(foo); - ... - if (any.UnpackTo(&foo)) { - ... - } - - Example 2: Pack and unpack a message in Java. - - Foo foo = ...; - Any any = Any.pack(foo); - ... - if (any.is(Foo.class)) { - foo = any.unpack(Foo.class); - } - - Example 3: Pack and unpack a message in Python. - - foo = Foo(...) - any = Any() - any.Pack(foo) - ... - if any.Is(Foo.DESCRIPTOR): - any.Unpack(foo) - ... - - Example 4: Pack and unpack a message in Go - - foo := &pb.Foo{...} - any, err := ptypes.MarshalAny(foo) - ... - foo := &pb.Foo{} - if err := ptypes.UnmarshalAny(any, foo); err != nil { - ... - } - - The pack methods provided by protobuf library will by - default use - - 'type.googleapis.com/full.type.name' as the type URL and the - unpack - - methods only use the fully qualified type name after the - last '/' - - in the type URL, for example "foo.bar.com/x/y.z" will yield - type - - name "y.z". - - - - JSON - - ==== - - The JSON representation of an `Any` value uses the regular - - representation of the deserialized, embedded message, with - an - - additional field `@type` which contains the type URL. - Example: - - package google.profile; - message Person { - string first_name = 1; - string last_name = 2; - } - - { - "@type": "type.googleapis.com/google.profile.Person", - "firstName": , - "lastName": - } - - If the embedded message type is well-known and has a custom - JSON - - representation, that representation will be embedded adding - a field - - `value` which holds the custom JSON in addition to the - `@type` - - field. Example (for message [google.protobuf.Duration][]): - - { - "@type": "type.googleapis.com/google.protobuf.Duration", - "value": "1.212s" - } tags: - Query - /cosmos/staking/v1beta1/validators: + /cosmos/mint/v1beta1/params: get: - summary: Validators queries all validators that match the given status. - operationId: Validators + summary: Params returns the total set of minting parameters. + operationId: MintParams responses: '200': description: A successful response. schema: type: object properties: - validators: - type: array - items: - type: object - properties: - operator_address: - type: string - consensus_pubkey: - type: object - properties: - type_url: - type: string - description: >- - A URL/resource name that uniquely identifies the - type of the serialized - - protocol buffer message. This string must contain at - least - - one "/" character. The last segment of the URL's - path must represent - - the fully qualified name of the type (as in - - `path/google.protobuf.Duration`). The name should be - in a canonical form - - (e.g., leading "." is not accepted). - - - In practice, teams usually precompile into the - binary all types that they - - expect it to use in the context of Any. However, for - URLs which use the - - scheme `http`, `https`, or no scheme, one can - optionally set up a type - - server that maps type URLs to message definitions as - follows: - - - * If no scheme is provided, `https` is assumed. - - * An HTTP GET on the URL must yield a - [google.protobuf.Type][] - value in binary format, or produce an error. - * Applications are allowed to cache lookup results - based on the - URL, or have them precompiled into a binary to avoid any - lookup. Therefore, binary compatibility needs to be preserved - on changes to types. (Use versioned type names to manage - breaking changes.) - - Note: this functionality is not currently available - in the official - - protobuf release, and it is not used for type URLs - beginning with - - type.googleapis.com. - - - Schemes other than `http`, `https` (or the empty - scheme) might be - - used with implementation specific semantics. - value: - type: string - format: byte - description: >- - Must be a valid serialized protocol buffer of the - above specified type. - description: >- - `Any` contains an arbitrary serialized protocol buffer - message along with a - - URL that describes the type of the serialized message. - - - Protobuf library provides support to pack/unpack Any - values in the form - - of utility functions or additional generated methods of - the Any type. - - - Example 1: Pack and unpack a message in C++. - - Foo foo = ...; - Any any; - any.PackFrom(foo); - ... - if (any.UnpackTo(&foo)) { - ... - } - - Example 2: Pack and unpack a message in Java. - - Foo foo = ...; - Any any = Any.pack(foo); - ... - if (any.is(Foo.class)) { - foo = any.unpack(Foo.class); - } - - Example 3: Pack and unpack a message in Python. - - foo = Foo(...) - any = Any() - any.Pack(foo) - ... - if any.Is(Foo.DESCRIPTOR): - any.Unpack(foo) - ... - - Example 4: Pack and unpack a message in Go - - foo := &pb.Foo{...} - any, err := ptypes.MarshalAny(foo) - ... - foo := &pb.Foo{} - if err := ptypes.UnmarshalAny(any, foo); err != nil { - ... - } - - The pack methods provided by protobuf library will by - default use - - 'type.googleapis.com/full.type.name' as the type URL and - the unpack - - methods only use the fully qualified type name after the - last '/' - - in the type URL, for example "foo.bar.com/x/y.z" will - yield type - - name "y.z". - - - - JSON - - ==== - - The JSON representation of an `Any` value uses the - regular - - representation of the deserialized, embedded message, - with an - - additional field `@type` which contains the type URL. - Example: - - package google.profile; - message Person { - string first_name = 1; - string last_name = 2; - } - - { - "@type": "type.googleapis.com/google.profile.Person", - "firstName": , - "lastName": - } - - If the embedded message type is well-known and has a - custom JSON - - representation, that representation will be embedded - adding a field - - `value` which holds the custom JSON in addition to the - `@type` - - field. Example (for message - [google.protobuf.Duration][]): - - { - "@type": "type.googleapis.com/google.protobuf.Duration", - "value": "1.212s" - } - jailed: - type: boolean - status: - type: string - enum: - - BOND_STATUS_UNSPECIFIED - - BOND_STATUS_UNBONDED - - BOND_STATUS_UNBONDING - - BOND_STATUS_BONDED - default: BOND_STATUS_UNSPECIFIED - description: |- - BondStatus is the status of a validator. - - - BOND_STATUS_UNSPECIFIED: UNSPECIFIED defines an invalid validator status. - - BOND_STATUS_UNBONDED: UNBONDED defines a validator that is not bonded. - - BOND_STATUS_UNBONDING: UNBONDING defines a validator that is unbonding. - - BOND_STATUS_BONDED: BONDED defines a validator that is bonded. - tokens: - type: string - delegator_shares: - type: string - description: - type: object - properties: - moniker: - type: string - identity: - type: string - website: - type: string - security_contact: - type: string - details: - type: string - description: Description defines a validator description. - unbonding_height: - type: string - format: int64 - unbonding_time: - type: string - format: date-time - commission: - type: object - properties: - commission_rates: - type: object - properties: - rate: - type: string - max_rate: - type: string - max_change_rate: - type: string - description: >- - CommissionRates defines the initial commission rates - to be used for creating - - a validator. - update_time: - type: string - format: date-time - description: >- - Commission defines commission parameters for a given - validator. - min_self_delegation: - type: string - description: >- - Validator defines a validator, together with the total - amount of the - - Validator's bond shares and their exchange rate to coins. - Slashing results in - - a decrease in the exchange rate, allowing correct - calculation of future - - undelegations without iterating over delegators. When coins - are delegated to - - this validator, the validator is credited with a delegation - whose number of - - bond shares is based on the amount of coins delegated - divided by the current - - exchange rate. Voting power can be calculated as total - bonded shares - - multiplied by exchange rate. - description: validators contains all the queried validators. - pagination: - description: pagination defines the pagination in the response. + params: + description: params defines the parameters of the module. type: object properties: - next_key: + mint_denom: type: string - format: byte - title: |- - next_key is the key to be passed to PageRequest.key to - query the next page most efficiently - total: + title: type of coin to mint + inflation_rate_change: + type: string + title: maximum annual change in inflation rate + inflation_max: + type: string + title: maximum inflation rate + inflation_min: + type: string + title: minimum inflation rate + goal_bonded: + type: string + title: goal of percent bonded atoms + blocks_per_year: type: string format: uint64 - title: >- - total is total number of results available if - PageRequest.count_total - - was set, its value is undefined otherwise - title: >- - QueryValidatorsResponse is response type for the Query/Validators - RPC method + title: expected blocks per year + description: >- + QueryParamsResponse is the response type for the Query/Params RPC + method. default: - description: An unexpected error response. + description: An unexpected error response schema: type: object properties: @@ -15608,26 +16527,528 @@ paths: properties: type_url: type: string - description: >- - A URL/resource name that uniquely identifies the type of - the serialized - - protocol buffer message. This string must contain at - least - - one "/" character. The last segment of the URL's path - must represent - - the fully qualified name of the type (as in - - `path/google.protobuf.Duration`). The name should be in - a canonical form - - (e.g., leading "." is not accepted). - - - In practice, teams usually precompile into the binary - all types that they + value: + type: string + format: byte + tags: + - Query + /cosmos/params/v1beta1/params: + get: + summary: |- + Params queries a specific parameter of a module, given its subspace and + key. + operationId: Params + responses: + '200': + description: A successful response. + schema: + type: object + properties: + param: + description: param defines the queried parameter. + type: object + properties: + subspace: + type: string + key: + type: string + value: + type: string + description: >- + QueryParamsResponse is response type for the Query/Params RPC + method. + default: + description: An unexpected error response + schema: + type: object + properties: + error: + type: string + code: + type: integer + format: int32 + message: + type: string + details: + type: array + items: + type: object + properties: + type_url: + type: string + value: + type: string + format: byte + parameters: + - name: subspace + description: subspace defines the module to query the parameter for. + in: query + required: false + type: string + - name: key + description: key defines the key of the parameter in the subspace. + in: query + required: false + type: string + tags: + - Query + /cosmos/slashing/v1beta1/params: + get: + summary: Params queries the parameters of slashing module + operationId: SlashingParams + responses: + '200': + description: A successful response. + schema: + type: object + properties: + params: + type: object + properties: + signed_blocks_window: + type: string + format: int64 + min_signed_per_window: + type: string + format: byte + downtime_jail_duration: + type: string + slash_fraction_double_sign: + type: string + format: byte + slash_fraction_downtime: + type: string + format: byte + description: >- + Params represents the parameters used for by the slashing + module. + title: >- + QueryParamsResponse is the response type for the Query/Params RPC + method + default: + description: An unexpected error response + schema: + type: object + properties: + error: + type: string + code: + type: integer + format: int32 + message: + type: string + details: + type: array + items: + type: object + properties: + type_url: + type: string + value: + type: string + format: byte + tags: + - Query + /cosmos/slashing/v1beta1/signing_infos: + get: + summary: SigningInfos queries signing info of all validators + operationId: SigningInfos + responses: + '200': + description: A successful response. + schema: + type: object + properties: + info: + type: array + items: + type: object + properties: + address: + type: string + start_height: + type: string + format: int64 + title: >- + Height at which validator was first a candidate OR was + unjailed + index_offset: + type: string + format: int64 + description: >- + Index which is incremented each time the validator was a + bonded + + in a block and may have signed a precommit or not. This + in conjunction with the + + `SignedBlocksWindow` param determines the index in the + `MissedBlocksBitArray`. + jailed_until: + type: string + format: date-time + description: >- + Timestamp until which the validator is jailed due to + liveness downtime. + tombstoned: + type: boolean + format: boolean + description: >- + Whether or not a validator has been tombstoned (killed + out of validator set). It is set + + once the validator commits an equivocation or for any + other configured misbehiavor. + missed_blocks_counter: + type: string + format: int64 + description: >- + A counter kept to avoid unnecessary array reads. + + Note that `Sum(MissedBlocksBitArray)` always equals + `MissedBlocksCounter`. + description: >- + ValidatorSigningInfo defines a validator's signing info for + monitoring their + + liveness activity. + title: info is the signing info of all validators + pagination: + type: object + properties: + next_key: + type: string + format: byte + title: |- + next_key is the key to be passed to PageRequest.key to + query the next page most efficiently + total: + type: string + format: uint64 + title: >- + total is total number of results available if + PageRequest.count_total + + was set, its value is undefined otherwise + description: >- + PageResponse is to be embedded in gRPC response messages where + the + + corresponding request message has used PageRequest. + + message SomeResponse { + repeated Bar results = 1; + PageResponse page = 2; + } + title: >- + QuerySigningInfosResponse is the response type for the + Query/SigningInfos RPC + + method + default: + description: An unexpected error response + schema: + type: object + properties: + error: + type: string + code: + type: integer + format: int32 + message: + type: string + details: + type: array + items: + type: object + properties: + type_url: + type: string + value: + type: string + format: byte + parameters: + - name: pagination.key + description: |- + key is a value returned in PageResponse.next_key to begin + querying the next page most efficiently. Only one of offset or key + should be set. + in: query + required: false + type: string + format: byte + - name: pagination.offset + description: >- + offset is a numeric offset that can be used when key is unavailable. + + It is less efficient than using key. Only one of offset or key + should + + be set. + in: query + required: false + type: string + format: uint64 + - name: pagination.limit + description: >- + limit is the total number of results to be returned in the result + page. + + If left empty it will default to a value to be set by each app. + in: query + required: false + type: string + format: uint64 + - name: pagination.count_total + description: >- + count_total is set to true to indicate that the result set should + include + + a count of the total number of items available for pagination in + UIs. + + count_total is only respected when offset is used. It is ignored + when key + + is set. + in: query + required: false + type: boolean + format: boolean + - name: pagination.reverse + description: >- + reverse is set to true indicates that, results to be returned in the + descending order. + in: query + required: false + type: boolean + format: boolean + tags: + - Query + '/cosmos/slashing/v1beta1/signing_infos/{cons_address}': + get: + summary: SigningInfo queries the signing info of given cons address + operationId: SigningInfo + responses: + '200': + description: A successful response. + schema: + type: object + properties: + val_signing_info: + type: object + properties: + address: + type: string + start_height: + type: string + format: int64 + title: >- + Height at which validator was first a candidate OR was + unjailed + index_offset: + type: string + format: int64 + description: >- + Index which is incremented each time the validator was a + bonded + + in a block and may have signed a precommit or not. This in + conjunction with the + + `SignedBlocksWindow` param determines the index in the + `MissedBlocksBitArray`. + jailed_until: + type: string + format: date-time + description: >- + Timestamp until which the validator is jailed due to + liveness downtime. + tombstoned: + type: boolean + format: boolean + description: >- + Whether or not a validator has been tombstoned (killed out + of validator set). It is set + + once the validator commits an equivocation or for any + other configured misbehiavor. + missed_blocks_counter: + type: string + format: int64 + description: >- + A counter kept to avoid unnecessary array reads. + + Note that `Sum(MissedBlocksBitArray)` always equals + `MissedBlocksCounter`. + description: >- + ValidatorSigningInfo defines a validator's signing info for + monitoring their + + liveness activity. + title: >- + val_signing_info is the signing info of requested val cons + address + title: >- + QuerySigningInfoResponse is the response type for the + Query/SigningInfo RPC + + method + default: + description: An unexpected error response + schema: + type: object + properties: + error: + type: string + code: + type: integer + format: int32 + message: + type: string + details: + type: array + items: + type: object + properties: + type_url: + type: string + value: + type: string + format: byte + parameters: + - name: cons_address + description: cons_address is the address to query signing info of + in: path + required: true + type: string + tags: + - Query + '/cosmos/staking/v1beta1/delegations/{delegator_addr}': + get: + summary: >- + DelegatorDelegations queries all delegations of a given delegator + address. + operationId: DelegatorDelegations + responses: + '200': + description: A successful response. + schema: + type: object + properties: + delegation_responses: + type: array + items: + type: object + properties: + delegation: + type: object + properties: + delegator_address: + type: string + description: >- + delegator_address is the bech32-encoded address of + the delegator. + validator_address: + type: string + description: >- + validator_address is the bech32-encoded address of + the validator. + shares: + type: string + description: shares define the delegation shares received. + description: >- + Delegation represents the bond with tokens held by an + account. It is + + owned by one delegator, and is associated with the + voting power of one + + validator. + balance: + type: object + properties: + denom: + type: string + amount: + type: string + description: >- + Coin defines a token with a denomination and an amount. + + + NOTE: The amount field is an Int which implements the + custom method + + signatures required by gogoproto. + description: >- + DelegationResponse is equivalent to Delegation except that + it contains a + + balance in addition to shares which is more suitable for + client responses. + description: >- + delegation_responses defines all the delegations' info of a + delegator. + pagination: + description: pagination defines the pagination in the response. + type: object + properties: + next_key: + type: string + format: byte + title: |- + next_key is the key to be passed to PageRequest.key to + query the next page most efficiently + total: + type: string + format: uint64 + title: >- + total is total number of results available if + PageRequest.count_total + + was set, its value is undefined otherwise + description: |- + QueryDelegatorDelegationsResponse is response type for the + Query/DelegatorDelegations RPC method. + default: + description: An unexpected error response + schema: + type: object + properties: + error: + type: string + code: + type: integer + format: int32 + message: + type: string + details: + type: array + items: + type: object + properties: + type_url: + type: string + description: >- + A URL/resource name that uniquely identifies the type of + the serialized + + protocol buffer message. This string must contain at + least + + one "/" character. The last segment of the URL's path + must represent + + the fully qualified name of the type (as in + + `path/google.protobuf.Duration`). The name should be in + a canonical form + + (e.g., leading "." is not accepted). + + + In practice, teams usually precompile into the binary + all types that they expect it to use in the context of Any. However, for URLs which use the @@ -15779,10 +17200,10 @@ paths: "value": "1.212s" } parameters: - - name: status - description: status enables to query for validators matching a given status. - in: query - required: false + - name: delegator_addr + description: delegator_addr defines the delegator address to query for. + in: path + required: true type: string - name: pagination.key description: |- @@ -15830,270 +17251,165 @@ paths: in: query required: false type: boolean + format: boolean + - name: pagination.reverse + description: >- + reverse is set to true indicates that, results to be returned in the + descending order. + in: query + required: false + type: boolean + format: boolean tags: - Query - '/cosmos/staking/v1beta1/validators/{validator_addr}': + '/cosmos/staking/v1beta1/delegators/{delegator_addr}/redelegations': get: - summary: Validator queries validator info for given validator address. - operationId: Validator + summary: Redelegations queries redelegations of given address. + operationId: Redelegations responses: '200': description: A successful response. schema: type: object properties: - validator: - description: validator defines the the validator info. - type: object - properties: - operator_address: - type: string - consensus_pubkey: - type: object - properties: - type_url: - type: string - description: >- - A URL/resource name that uniquely identifies the type - of the serialized - - protocol buffer message. This string must contain at - least - - one "/" character. The last segment of the URL's path - must represent - - the fully qualified name of the type (as in - - `path/google.protobuf.Duration`). The name should be - in a canonical form - - (e.g., leading "." is not accepted). - - - In practice, teams usually precompile into the binary - all types that they - - expect it to use in the context of Any. However, for - URLs which use the - - scheme `http`, `https`, or no scheme, one can - optionally set up a type - - server that maps type URLs to message definitions as - follows: - - - * If no scheme is provided, `https` is assumed. - - * An HTTP GET on the URL must yield a - [google.protobuf.Type][] - value in binary format, or produce an error. - * Applications are allowed to cache lookup results - based on the - URL, or have them precompiled into a binary to avoid any - lookup. Therefore, binary compatibility needs to be preserved - on changes to types. (Use versioned type names to manage - breaking changes.) - - Note: this functionality is not currently available in - the official - - protobuf release, and it is not used for type URLs - beginning with - - type.googleapis.com. - - - Schemes other than `http`, `https` (or the empty - scheme) might be + redelegation_responses: + type: array + items: + type: object + properties: + redelegation: + type: object + properties: + delegator_address: + type: string + description: >- + delegator_address is the bech32-encoded address of + the delegator. + validator_src_address: + type: string + description: >- + validator_src_address is the validator redelegation + source operator address. + validator_dst_address: + type: string + description: >- + validator_dst_address is the validator redelegation + destination operator address. + entries: + type: array + items: + type: object + properties: + creation_height: + type: string + format: int64 + description: >- + creation_height defines the height which the + redelegation took place. + completion_time: + type: string + format: date-time + description: >- + completion_time defines the unix time for + redelegation completion. + initial_balance: + type: string + description: >- + initial_balance defines the initial balance + when redelegation started. + shares_dst: + type: string + description: >- + shares_dst is the amount of + destination-validator shares created by + redelegation. + description: >- + RedelegationEntry defines a redelegation object + with relevant metadata. + description: entries are the redelegation entries. + description: >- + Redelegation contains the list of a particular + delegator's redelegating bonds - used with implementation specific semantics. - value: - type: string - format: byte + from a particular source validator to a particular + destination validator. + entries: + type: array + items: + type: object + properties: + redelegation_entry: + type: object + properties: + creation_height: + type: string + format: int64 + description: >- + creation_height defines the height which the + redelegation took place. + completion_time: + type: string + format: date-time + description: >- + completion_time defines the unix time for + redelegation completion. + initial_balance: + type: string + description: >- + initial_balance defines the initial balance + when redelegation started. + shares_dst: + type: string + description: >- + shares_dst is the amount of + destination-validator shares created by + redelegation. + description: >- + RedelegationEntry defines a redelegation object + with relevant metadata. + balance: + type: string description: >- - Must be a valid serialized protocol buffer of the - above specified type. - description: >- - `Any` contains an arbitrary serialized protocol buffer - message along with a - - URL that describes the type of the serialized message. - - - Protobuf library provides support to pack/unpack Any - values in the form - - of utility functions or additional generated methods of - the Any type. - - - Example 1: Pack and unpack a message in C++. - - Foo foo = ...; - Any any; - any.PackFrom(foo); - ... - if (any.UnpackTo(&foo)) { - ... - } - - Example 2: Pack and unpack a message in Java. - - Foo foo = ...; - Any any = Any.pack(foo); - ... - if (any.is(Foo.class)) { - foo = any.unpack(Foo.class); - } - - Example 3: Pack and unpack a message in Python. - - foo = Foo(...) - any = Any() - any.Pack(foo) - ... - if any.Is(Foo.DESCRIPTOR): - any.Unpack(foo) - ... - - Example 4: Pack and unpack a message in Go - - foo := &pb.Foo{...} - any, err := ptypes.MarshalAny(foo) - ... - foo := &pb.Foo{} - if err := ptypes.UnmarshalAny(any, foo); err != nil { - ... - } - - The pack methods provided by protobuf library will by - default use - - 'type.googleapis.com/full.type.name' as the type URL and - the unpack - - methods only use the fully qualified type name after the - last '/' - - in the type URL, for example "foo.bar.com/x/y.z" will - yield type - - name "y.z". - - - - JSON - - ==== - - The JSON representation of an `Any` value uses the regular - - representation of the deserialized, embedded message, with - an - - additional field `@type` which contains the type URL. - Example: - - package google.profile; - message Person { - string first_name = 1; - string last_name = 2; - } - - { - "@type": "type.googleapis.com/google.profile.Person", - "firstName": , - "lastName": - } - - If the embedded message type is well-known and has a - custom JSON - - representation, that representation will be embedded - adding a field + RedelegationEntryResponse is equivalent to a + RedelegationEntry except that it - `value` which holds the custom JSON in addition to the - `@type` + contains a balance in addition to shares which is more + suitable for client - field. Example (for message [google.protobuf.Duration][]): + responses. + description: >- + RedelegationResponse is equivalent to a Redelegation except + that its entries - { - "@type": "type.googleapis.com/google.protobuf.Duration", - "value": "1.212s" - } - jailed: - type: boolean - status: - type: string - enum: - - BOND_STATUS_UNSPECIFIED - - BOND_STATUS_UNBONDED - - BOND_STATUS_UNBONDING - - BOND_STATUS_BONDED - default: BOND_STATUS_UNSPECIFIED - description: |- - BondStatus is the status of a validator. + contain a balance in addition to shares which is more + suitable for client - - BOND_STATUS_UNSPECIFIED: UNSPECIFIED defines an invalid validator status. - - BOND_STATUS_UNBONDED: UNBONDED defines a validator that is not bonded. - - BOND_STATUS_UNBONDING: UNBONDING defines a validator that is unbonding. - - BOND_STATUS_BONDED: BONDED defines a validator that is bonded. - tokens: - type: string - delegator_shares: - type: string - description: - type: object - properties: - moniker: - type: string - identity: - type: string - website: - type: string - security_contact: - type: string - details: - type: string - description: Description defines a validator description. - unbonding_height: + responses. + pagination: + description: pagination defines the pagination in the response. + type: object + properties: + next_key: type: string - format: int64 - unbonding_time: + format: byte + title: |- + next_key is the key to be passed to PageRequest.key to + query the next page most efficiently + total: type: string - format: date-time - commission: - type: object - properties: - commission_rates: - type: object - properties: - rate: - type: string - max_rate: - type: string - max_change_rate: - type: string - description: >- - CommissionRates defines the initial commission rates - to be used for creating + format: uint64 + title: >- + total is total number of results available if + PageRequest.count_total - a validator. - update_time: - type: string - format: date-time - description: >- - Commission defines commission parameters for a given - validator. - min_self_delegation: - type: string - title: >- - QueryValidatorResponse is response type for the Query/Validator - RPC method + was set, its value is undefined otherwise + description: >- + QueryRedelegationsResponse is response type for the + Query/Redelegations RPC + + method. default: - description: An unexpected error response. + description: An unexpected error response schema: type: object properties: @@ -16282,66 +17598,143 @@ paths: "value": "1.212s" } parameters: - - name: validator_addr - description: validator_addr defines the validator address to query for. + - name: delegator_addr + description: delegator_addr defines the delegator address to query for. in: path required: true type: string + - name: src_validator_addr + description: src_validator_addr defines the validator address to redelegate from. + in: query + required: false + type: string + - name: dst_validator_addr + description: dst_validator_addr defines the validator address to redelegate to. + in: query + required: false + type: string + - name: pagination.key + description: |- + key is a value returned in PageResponse.next_key to begin + querying the next page most efficiently. Only one of offset or key + should be set. + in: query + required: false + type: string + format: byte + - name: pagination.offset + description: >- + offset is a numeric offset that can be used when key is unavailable. + + It is less efficient than using key. Only one of offset or key + should + + be set. + in: query + required: false + type: string + format: uint64 + - name: pagination.limit + description: >- + limit is the total number of results to be returned in the result + page. + + If left empty it will default to a value to be set by each app. + in: query + required: false + type: string + format: uint64 + - name: pagination.count_total + description: >- + count_total is set to true to indicate that the result set should + include + + a count of the total number of items available for pagination in + UIs. + + count_total is only respected when offset is used. It is ignored + when key + + is set. + in: query + required: false + type: boolean + format: boolean + - name: pagination.reverse + description: >- + reverse is set to true indicates that, results to be returned in the + descending order. + in: query + required: false + type: boolean + format: boolean tags: - Query - '/cosmos/staking/v1beta1/validators/{validator_addr}/delegations': + '/cosmos/staking/v1beta1/delegators/{delegator_addr}/unbonding_delegations': get: - summary: ValidatorDelegations queries delegate info for given validator. - operationId: ValidatorDelegations + summary: >- + DelegatorUnbondingDelegations queries all unbonding delegations of a + given + + delegator address. + operationId: DelegatorUnbondingDelegations responses: '200': description: A successful response. schema: type: object properties: - delegation_responses: + unbonding_responses: type: array items: type: object properties: - delegation: - type: object - properties: - delegator_address: - type: string - validator_address: - type: string - shares: - type: string + delegator_address: + type: string description: >- - Delegation represents the bond with tokens held by an - account. It is - - owned by one delegator, and is associated with the - voting power of one - - validator. - balance: - type: object - properties: - denom: - type: string - amount: - type: string + delegator_address is the bech32-encoded address of the + delegator. + validator_address: + type: string description: >- - Coin defines a token with a denomination and an amount. - - - NOTE: The amount field is an Int which implements the - custom method - - signatures required by gogoproto. + validator_address is the bech32-encoded address of the + validator. + entries: + type: array + items: + type: object + properties: + creation_height: + type: string + format: int64 + description: >- + creation_height is the height which the unbonding + took place. + completion_time: + type: string + format: date-time + description: >- + completion_time is the unix time for unbonding + completion. + initial_balance: + type: string + description: >- + initial_balance defines the tokens initially + scheduled to receive at completion. + balance: + type: string + description: >- + balance defines the tokens to receive at + completion. + description: >- + UnbondingDelegationEntry defines an unbonding object + with relevant metadata. + description: entries are the unbonding delegation entries. description: >- - DelegationResponse is equivalent to Delegation except that - it contains a + UnbondingDelegation stores all of a single delegator's + unbonding bonds - balance in addition to shares which is more suitable for - client responses. + for a single validator in an time-ordered list. pagination: description: pagination defines the pagination in the response. type: object @@ -16360,11 +17753,13 @@ paths: PageRequest.count_total was set, its value is undefined otherwise - title: |- - QueryValidatorDelegationsResponse is response type for the - Query/ValidatorDelegations RPC method + description: >- + QueryUnbondingDelegatorDelegationsResponse is response type for + the + + Query/UnbondingDelegatorDelegations RPC method. default: - description: An unexpected error response. + description: An unexpected error response schema: type: object properties: @@ -16553,8 +17948,8 @@ paths: "value": "1.212s" } parameters: - - name: validator_addr - description: validator_addr defines the validator address to query for. + - name: delegator_addr + description: delegator_addr defines the delegator address to query for. in: path required: true type: string @@ -16604,306 +17999,366 @@ paths: in: query required: false type: boolean + format: boolean + - name: pagination.reverse + description: >- + reverse is set to true indicates that, results to be returned in the + descending order. + in: query + required: false + type: boolean + format: boolean tags: - Query - '/cosmos/staking/v1beta1/validators/{validator_addr}/delegations/{delegator_addr}': + '/cosmos/staking/v1beta1/delegators/{delegator_addr}/validators': get: - summary: Delegation queries delegate info for given validator delegator pair. - operationId: Delegation + summary: |- + DelegatorValidators queries all validators info for given delegator + address. + operationId: StakingDelegatorValidators responses: '200': description: A successful response. schema: type: object properties: - delegation_response: - description: >- - delegation_responses defines the delegation info of a - delegation. - type: object - properties: - delegation: - type: object - properties: - delegator_address: - type: string - validator_address: - type: string - shares: - type: string - description: >- - Delegation represents the bond with tokens held by an - account. It is - - owned by one delegator, and is associated with the voting - power of one - - validator. - balance: - type: object - properties: - denom: - type: string - amount: - type: string - description: >- - Coin defines a token with a denomination and an amount. - - - NOTE: The amount field is an Int which implements the - custom method - - signatures required by gogoproto. - description: >- - QueryDelegationResponse is response type for the Query/Delegation - RPC method. - default: - description: An unexpected error response. - schema: - type: object - properties: - error: - type: string - code: - type: integer - format: int32 - message: - type: string - details: + validators: type: array items: type: object properties: - type_url: + operator_address: type: string description: >- - A URL/resource name that uniquely identifies the type of - the serialized + operator_address defines the address of the validator's + operator; bech encoded in JSON. + consensus_pubkey: + type: object + properties: + type_url: + type: string + description: >- + A URL/resource name that uniquely identifies the + type of the serialized - protocol buffer message. This string must contain at - least + protocol buffer message. This string must contain at + least - one "/" character. The last segment of the URL's path - must represent + one "/" character. The last segment of the URL's + path must represent - the fully qualified name of the type (as in + the fully qualified name of the type (as in - `path/google.protobuf.Duration`). The name should be in - a canonical form + `path/google.protobuf.Duration`). The name should be + in a canonical form - (e.g., leading "." is not accepted). + (e.g., leading "." is not accepted). - In practice, teams usually precompile into the binary - all types that they + In practice, teams usually precompile into the + binary all types that they - expect it to use in the context of Any. However, for - URLs which use the + expect it to use in the context of Any. However, for + URLs which use the - scheme `http`, `https`, or no scheme, one can optionally - set up a type + scheme `http`, `https`, or no scheme, one can + optionally set up a type - server that maps type URLs to message definitions as - follows: + server that maps type URLs to message definitions as + follows: - * If no scheme is provided, `https` is assumed. + * If no scheme is provided, `https` is assumed. - * An HTTP GET on the URL must yield a - [google.protobuf.Type][] - value in binary format, or produce an error. - * Applications are allowed to cache lookup results based - on the - URL, or have them precompiled into a binary to avoid any - lookup. Therefore, binary compatibility needs to be preserved - on changes to types. (Use versioned type names to manage - breaking changes.) + * An HTTP GET on the URL must yield a + [google.protobuf.Type][] + value in binary format, or produce an error. + * Applications are allowed to cache lookup results + based on the + URL, or have them precompiled into a binary to avoid any + lookup. Therefore, binary compatibility needs to be preserved + on changes to types. (Use versioned type names to manage + breaking changes.) - Note: this functionality is not currently available in - the official + Note: this functionality is not currently available + in the official - protobuf release, and it is not used for type URLs - beginning with + protobuf release, and it is not used for type URLs + beginning with - type.googleapis.com. + type.googleapis.com. - Schemes other than `http`, `https` (or the empty scheme) - might be + Schemes other than `http`, `https` (or the empty + scheme) might be - used with implementation specific semantics. - value: - type: string - format: byte + used with implementation specific semantics. + value: + type: string + format: byte + description: >- + Must be a valid serialized protocol buffer of the + above specified type. description: >- - Must be a valid serialized protocol buffer of the above - specified type. - description: >- - `Any` contains an arbitrary serialized protocol buffer - message along with a + `Any` contains an arbitrary serialized protocol buffer + message along with a - URL that describes the type of the serialized message. + URL that describes the type of the serialized message. - Protobuf library provides support to pack/unpack Any values - in the form + Protobuf library provides support to pack/unpack Any + values in the form - of utility functions or additional generated methods of the - Any type. + of utility functions or additional generated methods of + the Any type. - Example 1: Pack and unpack a message in C++. + Example 1: Pack and unpack a message in C++. - Foo foo = ...; - Any any; - any.PackFrom(foo); - ... - if (any.UnpackTo(&foo)) { - ... - } + Foo foo = ...; + Any any; + any.PackFrom(foo); + ... + if (any.UnpackTo(&foo)) { + ... + } - Example 2: Pack and unpack a message in Java. + Example 2: Pack and unpack a message in Java. - Foo foo = ...; - Any any = Any.pack(foo); - ... - if (any.is(Foo.class)) { - foo = any.unpack(Foo.class); - } + Foo foo = ...; + Any any = Any.pack(foo); + ... + if (any.is(Foo.class)) { + foo = any.unpack(Foo.class); + } - Example 3: Pack and unpack a message in Python. + Example 3: Pack and unpack a message in Python. - foo = Foo(...) - any = Any() - any.Pack(foo) - ... - if any.Is(Foo.DESCRIPTOR): - any.Unpack(foo) - ... + foo = Foo(...) + any = Any() + any.Pack(foo) + ... + if any.Is(Foo.DESCRIPTOR): + any.Unpack(foo) + ... - Example 4: Pack and unpack a message in Go + Example 4: Pack and unpack a message in Go - foo := &pb.Foo{...} - any, err := ptypes.MarshalAny(foo) - ... - foo := &pb.Foo{} - if err := ptypes.UnmarshalAny(any, foo); err != nil { - ... - } + foo := &pb.Foo{...} + any, err := ptypes.MarshalAny(foo) + ... + foo := &pb.Foo{} + if err := ptypes.UnmarshalAny(any, foo); err != nil { + ... + } - The pack methods provided by protobuf library will by - default use + The pack methods provided by protobuf library will by + default use - 'type.googleapis.com/full.type.name' as the type URL and the - unpack + 'type.googleapis.com/full.type.name' as the type URL and + the unpack - methods only use the fully qualified type name after the - last '/' + methods only use the fully qualified type name after the + last '/' - in the type URL, for example "foo.bar.com/x/y.z" will yield - type + in the type URL, for example "foo.bar.com/x/y.z" will + yield type - name "y.z". + name "y.z". - JSON + JSON - ==== + ==== - The JSON representation of an `Any` value uses the regular + The JSON representation of an `Any` value uses the + regular - representation of the deserialized, embedded message, with - an + representation of the deserialized, embedded message, + with an - additional field `@type` which contains the type URL. - Example: + additional field `@type` which contains the type URL. + Example: - package google.profile; - message Person { - string first_name = 1; - string last_name = 2; - } + package google.profile; + message Person { + string first_name = 1; + string last_name = 2; + } - { - "@type": "type.googleapis.com/google.profile.Person", - "firstName": , - "lastName": - } + { + "@type": "type.googleapis.com/google.profile.Person", + "firstName": , + "lastName": + } - If the embedded message type is well-known and has a custom - JSON + If the embedded message type is well-known and has a + custom JSON - representation, that representation will be embedded adding - a field + representation, that representation will be embedded + adding a field - `value` which holds the custom JSON in addition to the - `@type` + `value` which holds the custom JSON in addition to the + `@type` - field. Example (for message [google.protobuf.Duration][]): + field. Example (for message + [google.protobuf.Duration][]): - { - "@type": "type.googleapis.com/google.protobuf.Duration", - "value": "1.212s" - } - parameters: - - name: validator_addr - description: validator_addr defines the validator address to query for. - in: path - required: true - type: string - - name: delegator_addr - description: delegator_addr defines the delegator address to query for. - in: path - required: true - type: string - tags: - - Query - '/cosmos/staking/v1beta1/validators/{validator_addr}/delegations/{delegator_addr}/unbonding_delegation': - get: - summary: |- - UnbondingDelegation queries unbonding info for given validator delegator - pair. - operationId: UnbondingDelegation - responses: - '200': - description: A successful response. - schema: - type: object - properties: - unbond: - description: unbond defines the unbonding information of a delegation. - type: object - properties: - delegator_address: - type: string - validator_address: - type: string - entries: - type: array - items: + { + "@type": "type.googleapis.com/google.protobuf.Duration", + "value": "1.212s" + } + jailed: + type: boolean + format: boolean + description: >- + jailed defined whether the validator has been jailed + from bonded status or not. + status: + description: >- + status is the validator status + (bonded/unbonding/unbonded). + type: string + enum: + - BOND_STATUS_UNSPECIFIED + - BOND_STATUS_UNBONDED + - BOND_STATUS_UNBONDING + - BOND_STATUS_BONDED + default: BOND_STATUS_UNSPECIFIED + tokens: + type: string + description: >- + tokens define the delegated tokens (incl. + self-delegation). + delegator_shares: + type: string + description: >- + delegator_shares defines total shares issued to a + validator's delegators. + description: + description: >- + description defines the description terms for the + validator. type: object properties: - creation_height: + moniker: type: string - format: int64 - completion_time: + description: >- + moniker defines a human-readable name for the + validator. + identity: type: string - format: date-time - initial_balance: + description: >- + identity defines an optional identity signature (ex. + UPort or Keybase). + website: type: string - balance: + description: website defines an optional website link. + security_contact: + type: string + description: >- + security_contact defines an optional email for + security contact. + details: + type: string + description: details define other optional details. + unbonding_height: + type: string + format: int64 + description: >- + unbonding_height defines, if unbonding, the height at + which this validator has begun unbonding. + unbonding_time: + type: string + format: date-time + description: >- + unbonding_time defines, if unbonding, the min time for + the validator to complete unbonding. + commission: + description: commission defines the commission parameters. + type: object + properties: + commission_rates: + description: >- + commission_rates defines the initial commission + rates to be used for creating a validator. + type: object + properties: + rate: + type: string + description: >- + rate is the commission rate charged to + delegators, as a fraction. + max_rate: + type: string + description: >- + max_rate defines the maximum commission rate + which validator can ever charge, as a fraction. + max_change_rate: + type: string + description: >- + max_change_rate defines the maximum daily + increase of the validator commission, as a + fraction. + update_time: type: string + format: date-time + description: >- + update_time is the last time the commission rate was + changed. + min_self_delegation: + type: string description: >- - UnbondingDelegationEntry defines an unbonding object - with relevant metadata. - description: >- - QueryDelegationResponse is response type for the - Query/UnbondingDelegation + min_self_delegation is the validator's self declared + minimum self delegation. + description: >- + Validator defines a validator, together with the total + amount of the - RPC method. + Validator's bond shares and their exchange rate to coins. + Slashing results in + + a decrease in the exchange rate, allowing correct + calculation of future + + undelegations without iterating over delegators. When coins + are delegated to + + this validator, the validator is credited with a delegation + whose number of + + bond shares is based on the amount of coins delegated + divided by the current + + exchange rate. Voting power can be calculated as total + bonded shares + + multiplied by exchange rate. + description: validators defines the the validators' info of a delegator. + pagination: + description: pagination defines the pagination in the response. + type: object + properties: + next_key: + type: string + format: byte + title: |- + next_key is the key to be passed to PageRequest.key to + query the next page most efficiently + total: + type: string + format: uint64 + title: >- + total is total number of results available if + PageRequest.count_total + + was set, its value is undefined otherwise + description: |- + QueryDelegatorValidatorsResponse is response type for the + Query/DelegatorValidators RPC method. default: - description: An unexpected error response. + description: An unexpected error response schema: type: object properties: @@ -17092,349 +18547,393 @@ paths: "value": "1.212s" } parameters: - - name: validator_addr - description: validator_addr defines the validator address to query for. - in: path - required: true - type: string - name: delegator_addr description: delegator_addr defines the delegator address to query for. in: path required: true type: string + - name: pagination.key + description: |- + key is a value returned in PageResponse.next_key to begin + querying the next page most efficiently. Only one of offset or key + should be set. + in: query + required: false + type: string + format: byte + - name: pagination.offset + description: >- + offset is a numeric offset that can be used when key is unavailable. + + It is less efficient than using key. Only one of offset or key + should + + be set. + in: query + required: false + type: string + format: uint64 + - name: pagination.limit + description: >- + limit is the total number of results to be returned in the result + page. + + If left empty it will default to a value to be set by each app. + in: query + required: false + type: string + format: uint64 + - name: pagination.count_total + description: >- + count_total is set to true to indicate that the result set should + include + + a count of the total number of items available for pagination in + UIs. + + count_total is only respected when offset is used. It is ignored + when key + + is set. + in: query + required: false + type: boolean + format: boolean + - name: pagination.reverse + description: >- + reverse is set to true indicates that, results to be returned in the + descending order. + in: query + required: false + type: boolean + format: boolean tags: - Query - '/cosmos/staking/v1beta1/validators/{validator_addr}/unbonding_delegations': + '/cosmos/staking/v1beta1/delegators/{delegator_addr}/validators/{validator_addr}': get: - summary: >- - ValidatorUnbondingDelegations queries unbonding delegations of a - validator. - operationId: ValidatorUnbondingDelegations + summary: |- + DelegatorValidator queries validator info for given delegator validator + pair. + operationId: DelegatorValidator responses: '200': description: A successful response. schema: type: object properties: - unbonding_responses: - type: array - items: - type: object - properties: - delegator_address: - type: string - validator_address: - type: string - entries: - type: array - items: - type: object - properties: - creation_height: - type: string - format: int64 - completion_time: - type: string - format: date-time - initial_balance: - type: string - balance: - type: string - description: >- - UnbondingDelegationEntry defines an unbonding object - with relevant metadata. - description: >- - UnbondingDelegation stores all of a single delegator's - unbonding bonds - - for a single validator in an time-ordered list. - pagination: - description: pagination defines the pagination in the response. + validator: type: object properties: - next_key: - type: string - format: byte - title: |- - next_key is the key to be passed to PageRequest.key to - query the next page most efficiently - total: + operator_address: type: string - format: uint64 - title: >- - total is total number of results available if - PageRequest.count_total - - was set, its value is undefined otherwise - description: >- - QueryValidatorUnbondingDelegationsResponse is response type for - the - - Query/ValidatorUnbondingDelegations RPC method. - default: - description: An unexpected error response. - schema: - type: object - properties: - error: - type: string - code: - type: integer - format: int32 - message: - type: string - details: - type: array - items: - type: object - properties: - type_url: - type: string - description: >- - A URL/resource name that uniquely identifies the type of - the serialized + description: >- + operator_address defines the address of the validator's + operator; bech encoded in JSON. + consensus_pubkey: + type: object + properties: + type_url: + type: string + description: >- + A URL/resource name that uniquely identifies the type + of the serialized - protocol buffer message. This string must contain at - least + protocol buffer message. This string must contain at + least - one "/" character. The last segment of the URL's path - must represent + one "/" character. The last segment of the URL's path + must represent - the fully qualified name of the type (as in + the fully qualified name of the type (as in - `path/google.protobuf.Duration`). The name should be in - a canonical form + `path/google.protobuf.Duration`). The name should be + in a canonical form - (e.g., leading "." is not accepted). + (e.g., leading "." is not accepted). - In practice, teams usually precompile into the binary - all types that they + In practice, teams usually precompile into the binary + all types that they - expect it to use in the context of Any. However, for - URLs which use the + expect it to use in the context of Any. However, for + URLs which use the - scheme `http`, `https`, or no scheme, one can optionally - set up a type + scheme `http`, `https`, or no scheme, one can + optionally set up a type - server that maps type URLs to message definitions as - follows: + server that maps type URLs to message definitions as + follows: - * If no scheme is provided, `https` is assumed. + * If no scheme is provided, `https` is assumed. - * An HTTP GET on the URL must yield a - [google.protobuf.Type][] - value in binary format, or produce an error. - * Applications are allowed to cache lookup results based - on the - URL, or have them precompiled into a binary to avoid any - lookup. Therefore, binary compatibility needs to be preserved - on changes to types. (Use versioned type names to manage - breaking changes.) + * An HTTP GET on the URL must yield a + [google.protobuf.Type][] + value in binary format, or produce an error. + * Applications are allowed to cache lookup results + based on the + URL, or have them precompiled into a binary to avoid any + lookup. Therefore, binary compatibility needs to be preserved + on changes to types. (Use versioned type names to manage + breaking changes.) - Note: this functionality is not currently available in - the official + Note: this functionality is not currently available in + the official - protobuf release, and it is not used for type URLs - beginning with + protobuf release, and it is not used for type URLs + beginning with - type.googleapis.com. + type.googleapis.com. - Schemes other than `http`, `https` (or the empty scheme) - might be + Schemes other than `http`, `https` (or the empty + scheme) might be - used with implementation specific semantics. - value: - type: string - format: byte - description: >- - Must be a valid serialized protocol buffer of the above - specified type. - description: >- - `Any` contains an arbitrary serialized protocol buffer - message along with a + used with implementation specific semantics. + value: + type: string + format: byte + description: >- + Must be a valid serialized protocol buffer of the + above specified type. + description: >- + `Any` contains an arbitrary serialized protocol buffer + message along with a - URL that describes the type of the serialized message. + URL that describes the type of the serialized message. - Protobuf library provides support to pack/unpack Any values - in the form + Protobuf library provides support to pack/unpack Any + values in the form - of utility functions or additional generated methods of the - Any type. + of utility functions or additional generated methods of + the Any type. - Example 1: Pack and unpack a message in C++. + Example 1: Pack and unpack a message in C++. - Foo foo = ...; - Any any; - any.PackFrom(foo); - ... - if (any.UnpackTo(&foo)) { + Foo foo = ...; + Any any; + any.PackFrom(foo); ... - } + if (any.UnpackTo(&foo)) { + ... + } - Example 2: Pack and unpack a message in Java. + Example 2: Pack and unpack a message in Java. - Foo foo = ...; - Any any = Any.pack(foo); - ... - if (any.is(Foo.class)) { - foo = any.unpack(Foo.class); - } + Foo foo = ...; + Any any = Any.pack(foo); + ... + if (any.is(Foo.class)) { + foo = any.unpack(Foo.class); + } - Example 3: Pack and unpack a message in Python. + Example 3: Pack and unpack a message in Python. - foo = Foo(...) - any = Any() - any.Pack(foo) - ... - if any.Is(Foo.DESCRIPTOR): - any.Unpack(foo) + foo = Foo(...) + any = Any() + any.Pack(foo) ... + if any.Is(Foo.DESCRIPTOR): + any.Unpack(foo) + ... - Example 4: Pack and unpack a message in Go + Example 4: Pack and unpack a message in Go - foo := &pb.Foo{...} - any, err := ptypes.MarshalAny(foo) - ... - foo := &pb.Foo{} - if err := ptypes.UnmarshalAny(any, foo); err != nil { + foo := &pb.Foo{...} + any, err := ptypes.MarshalAny(foo) ... - } + foo := &pb.Foo{} + if err := ptypes.UnmarshalAny(any, foo); err != nil { + ... + } - The pack methods provided by protobuf library will by - default use + The pack methods provided by protobuf library will by + default use - 'type.googleapis.com/full.type.name' as the type URL and the - unpack + 'type.googleapis.com/full.type.name' as the type URL and + the unpack - methods only use the fully qualified type name after the - last '/' + methods only use the fully qualified type name after the + last '/' - in the type URL, for example "foo.bar.com/x/y.z" will yield - type + in the type URL, for example "foo.bar.com/x/y.z" will + yield type - name "y.z". + name "y.z". - JSON + JSON - ==== + ==== - The JSON representation of an `Any` value uses the regular + The JSON representation of an `Any` value uses the regular - representation of the deserialized, embedded message, with - an + representation of the deserialized, embedded message, with + an - additional field `@type` which contains the type URL. - Example: + additional field `@type` which contains the type URL. + Example: - package google.profile; - message Person { - string first_name = 1; - string last_name = 2; - } + package google.profile; + message Person { + string first_name = 1; + string last_name = 2; + } - { - "@type": "type.googleapis.com/google.profile.Person", - "firstName": , - "lastName": - } + { + "@type": "type.googleapis.com/google.profile.Person", + "firstName": , + "lastName": + } - If the embedded message type is well-known and has a custom - JSON + If the embedded message type is well-known and has a + custom JSON - representation, that representation will be embedded adding - a field + representation, that representation will be embedded + adding a field - `value` which holds the custom JSON in addition to the - `@type` + `value` which holds the custom JSON in addition to the + `@type` - field. Example (for message [google.protobuf.Duration][]): + field. Example (for message [google.protobuf.Duration][]): - { - "@type": "type.googleapis.com/google.protobuf.Duration", - "value": "1.212s" - } - parameters: - - name: validator_addr - description: validator_addr defines the validator address to query for. - in: path - required: true - type: string - - name: pagination.key - description: |- - key is a value returned in PageResponse.next_key to begin - querying the next page most efficiently. Only one of offset or key - should be set. - in: query - required: false - type: string - format: byte - - name: pagination.offset - description: >- - offset is a numeric offset that can be used when key is unavailable. + { + "@type": "type.googleapis.com/google.protobuf.Duration", + "value": "1.212s" + } + jailed: + type: boolean + format: boolean + description: >- + jailed defined whether the validator has been jailed from + bonded status or not. + status: + description: >- + status is the validator status + (bonded/unbonding/unbonded). + type: string + enum: + - BOND_STATUS_UNSPECIFIED + - BOND_STATUS_UNBONDED + - BOND_STATUS_UNBONDING + - BOND_STATUS_BONDED + default: BOND_STATUS_UNSPECIFIED + tokens: + type: string + description: >- + tokens define the delegated tokens (incl. + self-delegation). + delegator_shares: + type: string + description: >- + delegator_shares defines total shares issued to a + validator's delegators. + description: + description: >- + description defines the description terms for the + validator. + type: object + properties: + moniker: + type: string + description: >- + moniker defines a human-readable name for the + validator. + identity: + type: string + description: >- + identity defines an optional identity signature (ex. + UPort or Keybase). + website: + type: string + description: website defines an optional website link. + security_contact: + type: string + description: >- + security_contact defines an optional email for + security contact. + details: + type: string + description: details define other optional details. + unbonding_height: + type: string + format: int64 + description: >- + unbonding_height defines, if unbonding, the height at + which this validator has begun unbonding. + unbonding_time: + type: string + format: date-time + description: >- + unbonding_time defines, if unbonding, the min time for the + validator to complete unbonding. + commission: + description: commission defines the commission parameters. + type: object + properties: + commission_rates: + description: >- + commission_rates defines the initial commission rates + to be used for creating a validator. + type: object + properties: + rate: + type: string + description: >- + rate is the commission rate charged to delegators, + as a fraction. + max_rate: + type: string + description: >- + max_rate defines the maximum commission rate which + validator can ever charge, as a fraction. + max_change_rate: + type: string + description: >- + max_change_rate defines the maximum daily increase + of the validator commission, as a fraction. + update_time: + type: string + format: date-time + description: >- + update_time is the last time the commission rate was + changed. + min_self_delegation: + type: string + description: >- + min_self_delegation is the validator's self declared + minimum self delegation. + description: >- + Validator defines a validator, together with the total amount + of the - It is less efficient than using key. Only one of offset or key - should + Validator's bond shares and their exchange rate to coins. + Slashing results in - be set. - in: query - required: false - type: string - format: uint64 - - name: pagination.limit - description: >- - limit is the total number of results to be returned in the result - page. + a decrease in the exchange rate, allowing correct calculation + of future - If left empty it will default to a value to be set by each app. - in: query - required: false - type: string - format: uint64 - - name: pagination.count_total - description: >- - count_total is set to true to indicate that the result set should - include + undelegations without iterating over delegators. When coins + are delegated to - a count of the total number of items available for pagination in - UIs. + this validator, the validator is credited with a delegation + whose number of - count_total is only respected when offset is used. It is ignored - when key + bond shares is based on the amount of coins delegated divided + by the current - is set. - in: query - required: false - type: boolean - tags: - - Query - '/cosmos/upgrade/v1beta1/applied_plan/{name}': - get: - summary: AppliedPlan queries a previously applied upgrade plan by its name. - operationId: AppliedPlan - responses: - '200': - description: A successful response. - schema: - type: object - properties: - height: - type: string - format: int64 - description: height is the block height at which the plan was applied. - description: >- - QueryAppliedPlanResponse is the response type for the - Query/AppliedPlan RPC + exchange rate. Voting power can be calculated as total bonded + shares - method. + multiplied by exchange rate. + description: |- + QueryDelegatorValidatorResponse response type for the + Query/DelegatorValidator RPC method. default: - description: An unexpected error response. + description: An unexpected error response schema: type: object properties: @@ -17623,267 +19122,431 @@ paths: "value": "1.212s" } parameters: - - name: name - description: name is the name of the applied plan to query for. + - name: delegator_addr + description: delegator_addr defines the delegator address to query for. + in: path + required: true + type: string + - name: validator_addr + description: validator_addr defines the validator address to query for. in: path required: true type: string tags: - Query - /cosmos/upgrade/v1beta1/current_plan: + '/cosmos/staking/v1beta1/historical_info/{height}': get: - summary: CurrentPlan queries the current upgrade plan. - operationId: CurrentPlan + summary: HistoricalInfo queries the historical info for given height. + operationId: HistoricalInfo responses: '200': description: A successful response. schema: type: object properties: - plan: - description: plan is the current upgrade plan. + hist: + description: hist defines the historical info at the given height. type: object properties: - name: - type: string - description: >- - Sets the name for the upgrade. This name will be used by - the upgraded - - version of the software to apply any special "on-upgrade" - commands during - - the first BeginBlock method after the upgrade is applied. - It is also used - - to detect whether a software version can handle a given - upgrade. If no - - upgrade handler with this name has been set in the - software, it will be - - assumed that the software is out-of-date when the upgrade - Time or Height is - - reached and the software will exit. - time: - type: string - format: date-time - description: >- - The time after which the upgrade must be performed. - - Leave set to its zero value to use a pre-defined Height - instead. - height: - type: string - format: int64 - description: |- - The height at which the upgrade must be performed. - Only used if Time is not set. - info: - type: string - title: >- - Any application specific upgrade info to be included - on-chain - - such as a git commit that validators could automatically - upgrade to - upgraded_client_state: - title: >- - IBC-enabled chains can opt-in to including the upgraded - client state in its upgrade plan - - This will make the chain commit to the correct upgraded - (self) client state before the upgrade occurs, - - so that connecting chains can verify that the new upgraded - client is valid by verifying a proof on the - - previous version of the chain. - - This will allow IBC connections to persist smoothly across - planned chain upgrades + header: type: object properties: - type_url: - type: string - description: >- - A URL/resource name that uniquely identifies the type - of the serialized - - protocol buffer message. This string must contain at - least - - one "/" character. The last segment of the URL's path - must represent + version: + title: basic block info + type: object + properties: + block: + type: string + format: uint64 + app: + type: string + format: uint64 + description: >- + Consensus captures the consensus rules for processing + a block in the blockchain, - the fully qualified name of the type (as in + including all blockchain data structures and the rules + of the application's - `path/google.protobuf.Duration`). The name should be - in a canonical form + state transition machine. + chain_id: + type: string + height: + type: string + format: int64 + time: + type: string + format: date-time + last_block_id: + title: prev block info + type: object + properties: + hash: + type: string + format: byte + part_set_header: + type: object + properties: + total: + type: integer + format: int64 + hash: + type: string + format: byte + title: PartsetHeader + last_commit_hash: + type: string + format: byte + title: hashes of block data + data_hash: + type: string + format: byte + validators_hash: + type: string + format: byte + title: hashes from the app output from the prev block + next_validators_hash: + type: string + format: byte + consensus_hash: + type: string + format: byte + app_hash: + type: string + format: byte + last_results_hash: + type: string + format: byte + evidence_hash: + type: string + format: byte + title: consensus info + proposer_address: + type: string + format: byte + description: Header defines the structure of a Tendermint block header. + valset: + type: array + items: + type: object + properties: + operator_address: + type: string + description: >- + operator_address defines the address of the + validator's operator; bech encoded in JSON. + consensus_pubkey: + type: object + properties: + type_url: + type: string + description: >- + A URL/resource name that uniquely identifies the + type of the serialized - (e.g., leading "." is not accepted). + protocol buffer message. This string must + contain at least + one "/" character. The last segment of the URL's + path must represent - In practice, teams usually precompile into the binary - all types that they + the fully qualified name of the type (as in - expect it to use in the context of Any. However, for - URLs which use the + `path/google.protobuf.Duration`). The name + should be in a canonical form - scheme `http`, `https`, or no scheme, one can - optionally set up a type + (e.g., leading "." is not accepted). - server that maps type URLs to message definitions as - follows: + In practice, teams usually precompile into the + binary all types that they - * If no scheme is provided, `https` is assumed. + expect it to use in the context of Any. However, + for URLs which use the - * An HTTP GET on the URL must yield a - [google.protobuf.Type][] - value in binary format, or produce an error. - * Applications are allowed to cache lookup results - based on the - URL, or have them precompiled into a binary to avoid any - lookup. Therefore, binary compatibility needs to be preserved - on changes to types. (Use versioned type names to manage - breaking changes.) + scheme `http`, `https`, or no scheme, one can + optionally set up a type - Note: this functionality is not currently available in - the official + server that maps type URLs to message + definitions as follows: - protobuf release, and it is not used for type URLs - beginning with - type.googleapis.com. + * If no scheme is provided, `https` is assumed. + * An HTTP GET on the URL must yield a + [google.protobuf.Type][] + value in binary format, or produce an error. + * Applications are allowed to cache lookup + results based on the + URL, or have them precompiled into a binary to avoid any + lookup. Therefore, binary compatibility needs to be preserved + on changes to types. (Use versioned type names to manage + breaking changes.) - Schemes other than `http`, `https` (or the empty - scheme) might be + Note: this functionality is not currently + available in the official - used with implementation specific semantics. - value: - type: string - format: byte - description: >- - Must be a valid serialized protocol buffer of the - above specified type. - description: >- - `Any` contains an arbitrary serialized protocol buffer - message along with a + protobuf release, and it is not used for type + URLs beginning with - URL that describes the type of the serialized message. + type.googleapis.com. - Protobuf library provides support to pack/unpack Any - values in the form + Schemes other than `http`, `https` (or the empty + scheme) might be - of utility functions or additional generated methods of - the Any type. + used with implementation specific semantics. + value: + type: string + format: byte + description: >- + Must be a valid serialized protocol buffer of + the above specified type. + description: >- + `Any` contains an arbitrary serialized protocol + buffer message along with a + URL that describes the type of the serialized + message. - Example 1: Pack and unpack a message in C++. - Foo foo = ...; - Any any; - any.PackFrom(foo); - ... - if (any.UnpackTo(&foo)) { - ... - } + Protobuf library provides support to pack/unpack Any + values in the form - Example 2: Pack and unpack a message in Java. + of utility functions or additional generated methods + of the Any type. - Foo foo = ...; - Any any = Any.pack(foo); - ... - if (any.is(Foo.class)) { - foo = any.unpack(Foo.class); - } - Example 3: Pack and unpack a message in Python. + Example 1: Pack and unpack a message in C++. - foo = Foo(...) - any = Any() - any.Pack(foo) - ... - if any.Is(Foo.DESCRIPTOR): - any.Unpack(foo) - ... + Foo foo = ...; + Any any; + any.PackFrom(foo); + ... + if (any.UnpackTo(&foo)) { + ... + } - Example 4: Pack and unpack a message in Go + Example 2: Pack and unpack a message in Java. - foo := &pb.Foo{...} - any, err := ptypes.MarshalAny(foo) - ... - foo := &pb.Foo{} - if err := ptypes.UnmarshalAny(any, foo); err != nil { - ... - } + Foo foo = ...; + Any any = Any.pack(foo); + ... + if (any.is(Foo.class)) { + foo = any.unpack(Foo.class); + } - The pack methods provided by protobuf library will by - default use + Example 3: Pack and unpack a message in Python. - 'type.googleapis.com/full.type.name' as the type URL and - the unpack + foo = Foo(...) + any = Any() + any.Pack(foo) + ... + if any.Is(Foo.DESCRIPTOR): + any.Unpack(foo) + ... - methods only use the fully qualified type name after the - last '/' + Example 4: Pack and unpack a message in Go - in the type URL, for example "foo.bar.com/x/y.z" will - yield type + foo := &pb.Foo{...} + any, err := ptypes.MarshalAny(foo) + ... + foo := &pb.Foo{} + if err := ptypes.UnmarshalAny(any, foo); err != nil { + ... + } - name "y.z". + The pack methods provided by protobuf library will + by default use + + 'type.googleapis.com/full.type.name' as the type URL + and the unpack + methods only use the fully qualified type name after + the last '/' + in the type URL, for example "foo.bar.com/x/y.z" + will yield type - JSON + name "y.z". - ==== - The JSON representation of an `Any` value uses the regular - representation of the deserialized, embedded message, with - an + JSON - additional field `@type` which contains the type URL. - Example: + ==== - package google.profile; - message Person { - string first_name = 1; - string last_name = 2; - } + The JSON representation of an `Any` value uses the + regular - { - "@type": "type.googleapis.com/google.profile.Person", - "firstName": , - "lastName": - } + representation of the deserialized, embedded + message, with an - If the embedded message type is well-known and has a - custom JSON + additional field `@type` which contains the type + URL. Example: - representation, that representation will be embedded - adding a field + package google.profile; + message Person { + string first_name = 1; + string last_name = 2; + } - `value` which holds the custom JSON in addition to the - `@type` + { + "@type": "type.googleapis.com/google.profile.Person", + "firstName": , + "lastName": + } - field. Example (for message [google.protobuf.Duration][]): + If the embedded message type is well-known and has a + custom JSON - { - "@type": "type.googleapis.com/google.protobuf.Duration", - "value": "1.212s" - } + representation, that representation will be embedded + adding a field + + `value` which holds the custom JSON in addition to + the `@type` + + field. Example (for message + [google.protobuf.Duration][]): + + { + "@type": "type.googleapis.com/google.protobuf.Duration", + "value": "1.212s" + } + jailed: + type: boolean + format: boolean + description: >- + jailed defined whether the validator has been jailed + from bonded status or not. + status: + description: >- + status is the validator status + (bonded/unbonding/unbonded). + type: string + enum: + - BOND_STATUS_UNSPECIFIED + - BOND_STATUS_UNBONDED + - BOND_STATUS_UNBONDING + - BOND_STATUS_BONDED + default: BOND_STATUS_UNSPECIFIED + tokens: + type: string + description: >- + tokens define the delegated tokens (incl. + self-delegation). + delegator_shares: + type: string + description: >- + delegator_shares defines total shares issued to a + validator's delegators. + description: + description: >- + description defines the description terms for the + validator. + type: object + properties: + moniker: + type: string + description: >- + moniker defines a human-readable name for the + validator. + identity: + type: string + description: >- + identity defines an optional identity signature + (ex. UPort or Keybase). + website: + type: string + description: website defines an optional website link. + security_contact: + type: string + description: >- + security_contact defines an optional email for + security contact. + details: + type: string + description: details define other optional details. + unbonding_height: + type: string + format: int64 + description: >- + unbonding_height defines, if unbonding, the height + at which this validator has begun unbonding. + unbonding_time: + type: string + format: date-time + description: >- + unbonding_time defines, if unbonding, the min time + for the validator to complete unbonding. + commission: + description: commission defines the commission parameters. + type: object + properties: + commission_rates: + description: >- + commission_rates defines the initial commission + rates to be used for creating a validator. + type: object + properties: + rate: + type: string + description: >- + rate is the commission rate charged to + delegators, as a fraction. + max_rate: + type: string + description: >- + max_rate defines the maximum commission rate + which validator can ever charge, as a + fraction. + max_change_rate: + type: string + description: >- + max_change_rate defines the maximum daily + increase of the validator commission, as a + fraction. + update_time: + type: string + format: date-time + description: >- + update_time is the last time the commission rate + was changed. + min_self_delegation: + type: string + description: >- + min_self_delegation is the validator's self declared + minimum self delegation. + description: >- + Validator defines a validator, together with the total + amount of the + + Validator's bond shares and their exchange rate to + coins. Slashing results in + + a decrease in the exchange rate, allowing correct + calculation of future + + undelegations without iterating over delegators. When + coins are delegated to + + this validator, the validator is credited with a + delegation whose number of + + bond shares is based on the amount of coins delegated + divided by the current + + exchange rate. Voting power can be calculated as total + bonded shares + + multiplied by exchange rate. description: >- - QueryCurrentPlanResponse is the response type for the - Query/CurrentPlan RPC + QueryHistoricalInfoResponse is response type for the + Query/HistoricalInfo RPC method. default: - description: An unexpected error response. + description: An unexpected error response schema: type: object properties: @@ -18071,158 +19734,61 @@ paths: "@type": "type.googleapis.com/google.protobuf.Duration", "value": "1.212s" } + parameters: + - name: height + description: height defines at which height to query the historical info. + in: path + required: true + type: string + format: int64 tags: - Query - /ibc/channel/v1beta1/channels: + /cosmos/staking/v1beta1/params: get: - summary: Channels queries all the IBC channels of a chain. - operationId: Channels + summary: Parameters queries the staking parameters. + operationId: StakingParams responses: '200': description: A successful response. schema: type: object properties: - channels: - type: array - items: - type: object - properties: - state: - title: current state of the channel end - type: string - enum: - - STATE_UNINITIALIZED_UNSPECIFIED - - STATE_INIT - - STATE_TRYOPEN - - STATE_OPEN - - STATE_CLOSED - default: STATE_UNINITIALIZED_UNSPECIFIED - description: >- - State defines if a channel is in one of the following - states: - - CLOSED, INIT, TRYOPEN, OPEN or UNINITIALIZED. - - - STATE_UNINITIALIZED_UNSPECIFIED: Default State - - STATE_INIT: A channel has just started the opening handshake. - - STATE_TRYOPEN: A channel has acknowledged the handshake step on the counterparty chain. - - STATE_OPEN: A channel has completed the handshake. Open channels are - ready to send and receive packets. - - STATE_CLOSED: A channel has been closed and can no longer be used to send or receive - packets. - ordering: - title: whether the channel is ordered or unordered - type: string - enum: - - ORDER_NONE_UNSPECIFIED - - ORDER_UNORDERED - - ORDER_ORDERED - default: ORDER_NONE_UNSPECIFIED - description: >- - - ORDER_NONE_UNSPECIFIED: zero-value for channel - ordering - - ORDER_UNORDERED: packets can be delivered in any order, which may differ from the order in - which they were sent. - - ORDER_ORDERED: packets are delivered exactly in the order which they were sent - counterparty: - title: counterparty channel end - type: object - properties: - port_id: - type: string - description: >- - port on the counterparty chain which owns the other - end of the channel. - channel_id: - type: string - title: channel end on the counterparty chain - connection_hops: - type: array - items: - type: string - title: >- - list of connection identifiers, in order, along which - packets sent on - - this channel will travel - version: - type: string - title: >- - opaque channel version, which is agreed upon during the - handshake - port_id: - type: string - title: port identifier - channel_id: - type: string - title: channel identifier - description: >- - IdentifiedChannel defines a channel with additional port and - channel - - identifier fields. - description: list of stored channels of the chain. - pagination: - title: pagination response + params: + description: params holds all the parameters of this module. type: object properties: - next_key: - type: string - format: byte - title: |- - next_key is the key to be passed to PageRequest.key to - query the next page most efficiently - total: + unbonding_time: type: string - format: uint64 - title: >- - total is total number of results available if - PageRequest.count_total - - was set, its value is undefined otherwise - description: >- - PageResponse is to be embedded in gRPC response messages where - the - - corresponding request message has used PageRequest. - - message SomeResponse { - repeated Bar results = 1; - PageResponse page = 2; - } - height: - title: query block height - type: object - properties: - version_number: + description: unbonding_time is the time duration of unbonding. + max_validators: + type: integer + format: int64 + description: max_validators is the maximum number of validators. + max_entries: + type: integer + format: int64 + description: >- + max_entries is the max entries for either unbonding + delegation or redelegation (per pair/trio). + historical_entries: + type: integer + format: int64 + description: >- + historical_entries is the number of historical entries to + persist. + bond_denom: type: string - format: uint64 - title: the version that the client is currently on - version_height: + description: bond_denom defines the bondable coin denomination. + power_reduction: type: string - format: uint64 - title: the height within the given version - description: >- - Normally the VersionHeight is incremented at each height while - keeping version - - number the same However some consensus algorithms may choose - to reset the - - height in certain conditions e.g. hard forks, state-machine - breaking changes - - In these cases, the version number is incremented so that - height continues to - - be monitonically increasing even as the VersionHeight gets - reset + title: >- + power_reduction is the amount of staking tokens required + for 1 unit of consensus-engine power description: >- - QueryChannelsResponse is the response type for the Query/Channels - RPC method. + QueryParamsResponse is response type for the Query/Params RPC + method. default: - description: An unexpected error response. + description: An unexpected error response schema: type: object properties: @@ -18410,180 +19976,29 @@ paths: "@type": "type.googleapis.com/google.protobuf.Duration", "value": "1.212s" } - parameters: - - name: pagination.key - description: |- - key is a value returned in PageResponse.next_key to begin - querying the next page most efficiently. Only one of offset or key - should be set. - in: query - required: false - type: string - format: byte - - name: pagination.offset - description: >- - offset is a numeric offset that can be used when key is unavailable. - - It is less efficient than using key. Only one of offset or key - should - - be set. - in: query - required: false - type: string - format: uint64 - - name: pagination.limit - description: >- - limit is the total number of results to be returned in the result - page. - - If left empty it will default to a value to be set by each app. - in: query - required: false - type: string - format: uint64 - - name: pagination.count_total - description: >- - count_total is set to true to indicate that the result set should - include - - a count of the total number of items available for pagination in - UIs. - - count_total is only respected when offset is used. It is ignored - when key - - is set. - in: query - required: false - type: boolean tags: - Query - '/ibc/channel/v1beta1/channels/{channel_id}/ports/{port_id}': + /cosmos/staking/v1beta1/pool: get: - summary: Channel queries an IBC Channel. - operationId: Channel + summary: Pool queries the pool info. + operationId: Pool responses: '200': description: A successful response. schema: type: object properties: - channel: - title: channel associated with the request identifiers - type: object - properties: - state: - title: current state of the channel end - type: string - enum: - - STATE_UNINITIALIZED_UNSPECIFIED - - STATE_INIT - - STATE_TRYOPEN - - STATE_OPEN - - STATE_CLOSED - default: STATE_UNINITIALIZED_UNSPECIFIED - description: >- - State defines if a channel is in one of the following - states: - - CLOSED, INIT, TRYOPEN, OPEN or UNINITIALIZED. - - - STATE_UNINITIALIZED_UNSPECIFIED: Default State - - STATE_INIT: A channel has just started the opening handshake. - - STATE_TRYOPEN: A channel has acknowledged the handshake step on the counterparty chain. - - STATE_OPEN: A channel has completed the handshake. Open channels are - ready to send and receive packets. - - STATE_CLOSED: A channel has been closed and can no longer be used to send or receive - packets. - ordering: - title: whether the channel is ordered or unordered - type: string - enum: - - ORDER_NONE_UNSPECIFIED - - ORDER_UNORDERED - - ORDER_ORDERED - default: ORDER_NONE_UNSPECIFIED - description: |- - - ORDER_NONE_UNSPECIFIED: zero-value for channel ordering - - ORDER_UNORDERED: packets can be delivered in any order, which may differ from the order in - which they were sent. - - ORDER_ORDERED: packets are delivered exactly in the order which they were sent - counterparty: - title: counterparty channel end - type: object - properties: - port_id: - type: string - description: >- - port on the counterparty chain which owns the other - end of the channel. - channel_id: - type: string - title: channel end on the counterparty chain - connection_hops: - type: array - items: - type: string - title: >- - list of connection identifiers, in order, along which - packets sent on - - this channel will travel - version: - type: string - title: >- - opaque channel version, which is agreed upon during the - handshake - description: >- - Channel defines pipeline for exactly-once packet delivery - between specific - - modules on separate blockchains, which has at least one end - capable of - - sending packets and one end capable of receiving packets. - proof: - type: string - format: byte - title: merkle proof of existence - proof_height: - title: height at which the proof was retrieved + pool: + description: pool defines the pool info. type: object properties: - version_number: + not_bonded_tokens: type: string - format: uint64 - title: the version that the client is currently on - version_height: + bonded_tokens: type: string - format: uint64 - title: the height within the given version - description: >- - Normally the VersionHeight is incremented at each height while - keeping version - - number the same However some consensus algorithms may choose - to reset the - - height in certain conditions e.g. hard forks, state-machine - breaking changes - - In these cases, the version number is incremented so that - height continues to - - be monitonically increasing even as the VersionHeight gets - reset - description: >- - QueryChannelResponse is the response type for the Query/Channel - RPC method. - - Besides the Channel end, it includes a proof and the height from - which the - - proof was retrieved. + description: QueryPoolResponse is response type for the Query/Pool RPC method. default: - description: An unexpected error response. + description: An unexpected error response schema: type: object properties: @@ -18771,257 +20186,355 @@ paths: "@type": "type.googleapis.com/google.protobuf.Duration", "value": "1.212s" } - parameters: - - name: channel_id - description: channel unique identifier - in: path - required: true - type: string - - name: port_id - description: port unique identifier - in: path - required: true - type: string tags: - Query - '/ibc/channel/v1beta1/channels/{channel_id}/ports/{port_id}/client_state': + /cosmos/staking/v1beta1/validators: get: - summary: >- - ChannelClientState queries for the client state for the channel - associated - - with the provided channel identifiers. - operationId: ChannelClientState + summary: Validators queries all validators that match the given status. + operationId: Validators responses: '200': description: A successful response. schema: type: object properties: - identified_client_state: - title: client state associated with the channel - type: object - properties: - client_id: - type: string - title: client identifier - client_state: - title: client state - type: object - properties: - type_url: - type: string - description: >- - A URL/resource name that uniquely identifies the type - of the serialized + validators: + type: array + items: + type: object + properties: + operator_address: + type: string + description: >- + operator_address defines the address of the validator's + operator; bech encoded in JSON. + consensus_pubkey: + type: object + properties: + type_url: + type: string + description: >- + A URL/resource name that uniquely identifies the + type of the serialized - protocol buffer message. This string must contain at - least + protocol buffer message. This string must contain at + least - one "/" character. The last segment of the URL's path - must represent + one "/" character. The last segment of the URL's + path must represent - the fully qualified name of the type (as in + the fully qualified name of the type (as in - `path/google.protobuf.Duration`). The name should be - in a canonical form + `path/google.protobuf.Duration`). The name should be + in a canonical form - (e.g., leading "." is not accepted). + (e.g., leading "." is not accepted). - In practice, teams usually precompile into the binary - all types that they + In practice, teams usually precompile into the + binary all types that they - expect it to use in the context of Any. However, for - URLs which use the + expect it to use in the context of Any. However, for + URLs which use the - scheme `http`, `https`, or no scheme, one can - optionally set up a type + scheme `http`, `https`, or no scheme, one can + optionally set up a type - server that maps type URLs to message definitions as - follows: + server that maps type URLs to message definitions as + follows: - * If no scheme is provided, `https` is assumed. + * If no scheme is provided, `https` is assumed. - * An HTTP GET on the URL must yield a - [google.protobuf.Type][] - value in binary format, or produce an error. - * Applications are allowed to cache lookup results - based on the - URL, or have them precompiled into a binary to avoid any - lookup. Therefore, binary compatibility needs to be preserved - on changes to types. (Use versioned type names to manage - breaking changes.) + * An HTTP GET on the URL must yield a + [google.protobuf.Type][] + value in binary format, or produce an error. + * Applications are allowed to cache lookup results + based on the + URL, or have them precompiled into a binary to avoid any + lookup. Therefore, binary compatibility needs to be preserved + on changes to types. (Use versioned type names to manage + breaking changes.) - Note: this functionality is not currently available in - the official + Note: this functionality is not currently available + in the official - protobuf release, and it is not used for type URLs - beginning with + protobuf release, and it is not used for type URLs + beginning with - type.googleapis.com. + type.googleapis.com. - Schemes other than `http`, `https` (or the empty - scheme) might be + Schemes other than `http`, `https` (or the empty + scheme) might be - used with implementation specific semantics. - value: - type: string - format: byte - description: >- - Must be a valid serialized protocol buffer of the - above specified type. - description: >- - `Any` contains an arbitrary serialized protocol buffer - message along with a + used with implementation specific semantics. + value: + type: string + format: byte + description: >- + Must be a valid serialized protocol buffer of the + above specified type. + description: >- + `Any` contains an arbitrary serialized protocol buffer + message along with a - URL that describes the type of the serialized message. + URL that describes the type of the serialized message. - Protobuf library provides support to pack/unpack Any - values in the form + Protobuf library provides support to pack/unpack Any + values in the form - of utility functions or additional generated methods of - the Any type. + of utility functions or additional generated methods of + the Any type. - Example 1: Pack and unpack a message in C++. + Example 1: Pack and unpack a message in C++. - Foo foo = ...; - Any any; - any.PackFrom(foo); - ... - if (any.UnpackTo(&foo)) { + Foo foo = ...; + Any any; + any.PackFrom(foo); ... - } + if (any.UnpackTo(&foo)) { + ... + } - Example 2: Pack and unpack a message in Java. + Example 2: Pack and unpack a message in Java. - Foo foo = ...; - Any any = Any.pack(foo); - ... - if (any.is(Foo.class)) { - foo = any.unpack(Foo.class); - } + Foo foo = ...; + Any any = Any.pack(foo); + ... + if (any.is(Foo.class)) { + foo = any.unpack(Foo.class); + } - Example 3: Pack and unpack a message in Python. + Example 3: Pack and unpack a message in Python. - foo = Foo(...) - any = Any() - any.Pack(foo) - ... - if any.Is(Foo.DESCRIPTOR): - any.Unpack(foo) + foo = Foo(...) + any = Any() + any.Pack(foo) ... + if any.Is(Foo.DESCRIPTOR): + any.Unpack(foo) + ... - Example 4: Pack and unpack a message in Go + Example 4: Pack and unpack a message in Go - foo := &pb.Foo{...} - any, err := ptypes.MarshalAny(foo) - ... - foo := &pb.Foo{} - if err := ptypes.UnmarshalAny(any, foo); err != nil { + foo := &pb.Foo{...} + any, err := ptypes.MarshalAny(foo) ... - } + foo := &pb.Foo{} + if err := ptypes.UnmarshalAny(any, foo); err != nil { + ... + } - The pack methods provided by protobuf library will by - default use + The pack methods provided by protobuf library will by + default use - 'type.googleapis.com/full.type.name' as the type URL and - the unpack + 'type.googleapis.com/full.type.name' as the type URL and + the unpack - methods only use the fully qualified type name after the - last '/' + methods only use the fully qualified type name after the + last '/' - in the type URL, for example "foo.bar.com/x/y.z" will - yield type + in the type URL, for example "foo.bar.com/x/y.z" will + yield type - name "y.z". + name "y.z". - JSON + JSON - ==== + ==== - The JSON representation of an `Any` value uses the regular + The JSON representation of an `Any` value uses the + regular - representation of the deserialized, embedded message, with - an + representation of the deserialized, embedded message, + with an - additional field `@type` which contains the type URL. - Example: + additional field `@type` which contains the type URL. + Example: - package google.profile; - message Person { - string first_name = 1; - string last_name = 2; - } + package google.profile; + message Person { + string first_name = 1; + string last_name = 2; + } - { - "@type": "type.googleapis.com/google.profile.Person", - "firstName": , - "lastName": - } + { + "@type": "type.googleapis.com/google.profile.Person", + "firstName": , + "lastName": + } - If the embedded message type is well-known and has a - custom JSON + If the embedded message type is well-known and has a + custom JSON - representation, that representation will be embedded - adding a field + representation, that representation will be embedded + adding a field - `value` which holds the custom JSON in addition to the - `@type` + `value` which holds the custom JSON in addition to the + `@type` - field. Example (for message [google.protobuf.Duration][]): + field. Example (for message + [google.protobuf.Duration][]): - { - "@type": "type.googleapis.com/google.protobuf.Duration", - "value": "1.212s" - } - description: >- - IdentifiedClientState defines a client state with an - additional client + { + "@type": "type.googleapis.com/google.protobuf.Duration", + "value": "1.212s" + } + jailed: + type: boolean + format: boolean + description: >- + jailed defined whether the validator has been jailed + from bonded status or not. + status: + description: >- + status is the validator status + (bonded/unbonding/unbonded). + type: string + enum: + - BOND_STATUS_UNSPECIFIED + - BOND_STATUS_UNBONDED + - BOND_STATUS_UNBONDING + - BOND_STATUS_BONDED + default: BOND_STATUS_UNSPECIFIED + tokens: + type: string + description: >- + tokens define the delegated tokens (incl. + self-delegation). + delegator_shares: + type: string + description: >- + delegator_shares defines total shares issued to a + validator's delegators. + description: + description: >- + description defines the description terms for the + validator. + type: object + properties: + moniker: + type: string + description: >- + moniker defines a human-readable name for the + validator. + identity: + type: string + description: >- + identity defines an optional identity signature (ex. + UPort or Keybase). + website: + type: string + description: website defines an optional website link. + security_contact: + type: string + description: >- + security_contact defines an optional email for + security contact. + details: + type: string + description: details define other optional details. + unbonding_height: + type: string + format: int64 + description: >- + unbonding_height defines, if unbonding, the height at + which this validator has begun unbonding. + unbonding_time: + type: string + format: date-time + description: >- + unbonding_time defines, if unbonding, the min time for + the validator to complete unbonding. + commission: + description: commission defines the commission parameters. + type: object + properties: + commission_rates: + description: >- + commission_rates defines the initial commission + rates to be used for creating a validator. + type: object + properties: + rate: + type: string + description: >- + rate is the commission rate charged to + delegators, as a fraction. + max_rate: + type: string + description: >- + max_rate defines the maximum commission rate + which validator can ever charge, as a fraction. + max_change_rate: + type: string + description: >- + max_change_rate defines the maximum daily + increase of the validator commission, as a + fraction. + update_time: + type: string + format: date-time + description: >- + update_time is the last time the commission rate was + changed. + min_self_delegation: + type: string + description: >- + min_self_delegation is the validator's self declared + minimum self delegation. + description: >- + Validator defines a validator, together with the total + amount of the - identifier field. - proof: - type: string - format: byte - title: merkle proof of existence - proof_height: - title: height at which the proof was retrieved + Validator's bond shares and their exchange rate to coins. + Slashing results in + + a decrease in the exchange rate, allowing correct + calculation of future + + undelegations without iterating over delegators. When coins + are delegated to + + this validator, the validator is credited with a delegation + whose number of + + bond shares is based on the amount of coins delegated + divided by the current + + exchange rate. Voting power can be calculated as total + bonded shares + + multiplied by exchange rate. + description: validators contains all the queried validators. + pagination: + description: pagination defines the pagination in the response. type: object properties: - version_number: + next_key: type: string - format: uint64 - title: the version that the client is currently on - version_height: + format: byte + title: |- + next_key is the key to be passed to PageRequest.key to + query the next page most efficiently + total: type: string format: uint64 - title: the height within the given version - description: >- - Normally the VersionHeight is incremented at each height while - keeping version - - number the same However some consensus algorithms may choose - to reset the - - height in certain conditions e.g. hard forks, state-machine - breaking changes - - In these cases, the version number is incremented so that - height continues to + title: >- + total is total number of results available if + PageRequest.count_total - be monitonically increasing even as the VersionHeight gets - reset - title: |- - QueryChannelClientStateResponse is the Response type for the - Query/QueryChannelClientState RPC method + was set, its value is undefined otherwise + title: >- + QueryValidatorsResponse is response type for the Query/Validators + RPC method default: - description: An unexpected error response. + description: An unexpected error response schema: type: object properties: @@ -19210,241 +20723,391 @@ paths: "value": "1.212s" } parameters: - - name: channel_id - description: channel unique identifier - in: path - required: true + - name: status + description: status enables to query for validators matching a given status. + in: query + required: false type: string - - name: port_id - description: port unique identifier - in: path - required: true + - name: pagination.key + description: |- + key is a value returned in PageResponse.next_key to begin + querying the next page most efficiently. Only one of offset or key + should be set. + in: query + required: false type: string - tags: - - Query - '/ibc/channel/v1beta1/channels/{channel_id}/ports/{port_id}/consensus_state/version/{version_number}/height/{version_height}': - get: - summary: |- - ChannelConsensusState queries for the consensus state for the channel - associated with the provided channel identifiers. - operationId: ChannelConsensusState - responses: - '200': - description: A successful response. - schema: - type: object - properties: - consensus_state: - title: consensus state associated with the channel - type: object - properties: - type_url: - type: string - description: >- - A URL/resource name that uniquely identifies the type of - the serialized - - protocol buffer message. This string must contain at least + format: byte + - name: pagination.offset + description: >- + offset is a numeric offset that can be used when key is unavailable. - one "/" character. The last segment of the URL's path must - represent + It is less efficient than using key. Only one of offset or key + should - the fully qualified name of the type (as in + be set. + in: query + required: false + type: string + format: uint64 + - name: pagination.limit + description: >- + limit is the total number of results to be returned in the result + page. - `path/google.protobuf.Duration`). The name should be in a - canonical form + If left empty it will default to a value to be set by each app. + in: query + required: false + type: string + format: uint64 + - name: pagination.count_total + description: >- + count_total is set to true to indicate that the result set should + include - (e.g., leading "." is not accepted). + a count of the total number of items available for pagination in + UIs. + count_total is only respected when offset is used. It is ignored + when key - In practice, teams usually precompile into the binary all - types that they + is set. + in: query + required: false + type: boolean + format: boolean + - name: pagination.reverse + description: >- + reverse is set to true indicates that, results to be returned in the + descending order. + in: query + required: false + type: boolean + format: boolean + tags: + - Query + '/cosmos/staking/v1beta1/validators/{validator_addr}': + get: + summary: Validator queries validator info for given validator address. + operationId: Validator + responses: + '200': + description: A successful response. + schema: + type: object + properties: + validator: + type: object + properties: + operator_address: + type: string + description: >- + operator_address defines the address of the validator's + operator; bech encoded in JSON. + consensus_pubkey: + type: object + properties: + type_url: + type: string + description: >- + A URL/resource name that uniquely identifies the type + of the serialized - expect it to use in the context of Any. However, for URLs - which use the + protocol buffer message. This string must contain at + least - scheme `http`, `https`, or no scheme, one can optionally - set up a type + one "/" character. The last segment of the URL's path + must represent - server that maps type URLs to message definitions as - follows: + the fully qualified name of the type (as in + `path/google.protobuf.Duration`). The name should be + in a canonical form - * If no scheme is provided, `https` is assumed. + (e.g., leading "." is not accepted). - * An HTTP GET on the URL must yield a - [google.protobuf.Type][] - value in binary format, or produce an error. - * Applications are allowed to cache lookup results based - on the - URL, or have them precompiled into a binary to avoid any - lookup. Therefore, binary compatibility needs to be preserved - on changes to types. (Use versioned type names to manage - breaking changes.) - Note: this functionality is not currently available in the - official + In practice, teams usually precompile into the binary + all types that they - protobuf release, and it is not used for type URLs - beginning with + expect it to use in the context of Any. However, for + URLs which use the - type.googleapis.com. + scheme `http`, `https`, or no scheme, one can + optionally set up a type + server that maps type URLs to message definitions as + follows: - Schemes other than `http`, `https` (or the empty scheme) - might be - used with implementation specific semantics. - value: - type: string - format: byte + * If no scheme is provided, `https` is assumed. + + * An HTTP GET on the URL must yield a + [google.protobuf.Type][] + value in binary format, or produce an error. + * Applications are allowed to cache lookup results + based on the + URL, or have them precompiled into a binary to avoid any + lookup. Therefore, binary compatibility needs to be preserved + on changes to types. (Use versioned type names to manage + breaking changes.) + + Note: this functionality is not currently available in + the official + + protobuf release, and it is not used for type URLs + beginning with + + type.googleapis.com. + + + Schemes other than `http`, `https` (or the empty + scheme) might be + + used with implementation specific semantics. + value: + type: string + format: byte + description: >- + Must be a valid serialized protocol buffer of the + above specified type. description: >- - Must be a valid serialized protocol buffer of the above - specified type. - description: >- - `Any` contains an arbitrary serialized protocol buffer message - along with a + `Any` contains an arbitrary serialized protocol buffer + message along with a - URL that describes the type of the serialized message. + URL that describes the type of the serialized message. - Protobuf library provides support to pack/unpack Any values in - the form + Protobuf library provides support to pack/unpack Any + values in the form - of utility functions or additional generated methods of the - Any type. + of utility functions or additional generated methods of + the Any type. - Example 1: Pack and unpack a message in C++. + Example 1: Pack and unpack a message in C++. - Foo foo = ...; - Any any; - any.PackFrom(foo); - ... - if (any.UnpackTo(&foo)) { - ... - } + Foo foo = ...; + Any any; + any.PackFrom(foo); + ... + if (any.UnpackTo(&foo)) { + ... + } - Example 2: Pack and unpack a message in Java. + Example 2: Pack and unpack a message in Java. - Foo foo = ...; - Any any = Any.pack(foo); - ... - if (any.is(Foo.class)) { - foo = any.unpack(Foo.class); - } + Foo foo = ...; + Any any = Any.pack(foo); + ... + if (any.is(Foo.class)) { + foo = any.unpack(Foo.class); + } - Example 3: Pack and unpack a message in Python. + Example 3: Pack and unpack a message in Python. - foo = Foo(...) - any = Any() - any.Pack(foo) - ... - if any.Is(Foo.DESCRIPTOR): - any.Unpack(foo) - ... + foo = Foo(...) + any = Any() + any.Pack(foo) + ... + if any.Is(Foo.DESCRIPTOR): + any.Unpack(foo) + ... - Example 4: Pack and unpack a message in Go + Example 4: Pack and unpack a message in Go - foo := &pb.Foo{...} - any, err := ptypes.MarshalAny(foo) - ... - foo := &pb.Foo{} - if err := ptypes.UnmarshalAny(any, foo); err != nil { - ... - } + foo := &pb.Foo{...} + any, err := ptypes.MarshalAny(foo) + ... + foo := &pb.Foo{} + if err := ptypes.UnmarshalAny(any, foo); err != nil { + ... + } - The pack methods provided by protobuf library will by default - use + The pack methods provided by protobuf library will by + default use - 'type.googleapis.com/full.type.name' as the type URL and the - unpack + 'type.googleapis.com/full.type.name' as the type URL and + the unpack - methods only use the fully qualified type name after the last - '/' + methods only use the fully qualified type name after the + last '/' - in the type URL, for example "foo.bar.com/x/y.z" will yield - type + in the type URL, for example "foo.bar.com/x/y.z" will + yield type - name "y.z". + name "y.z". - JSON + JSON - ==== + ==== - The JSON representation of an `Any` value uses the regular + The JSON representation of an `Any` value uses the regular - representation of the deserialized, embedded message, with an + representation of the deserialized, embedded message, with + an - additional field `@type` which contains the type URL. Example: + additional field `@type` which contains the type URL. + Example: - package google.profile; - message Person { - string first_name = 1; - string last_name = 2; - } + package google.profile; + message Person { + string first_name = 1; + string last_name = 2; + } - { - "@type": "type.googleapis.com/google.profile.Person", - "firstName": , - "lastName": - } + { + "@type": "type.googleapis.com/google.profile.Person", + "firstName": , + "lastName": + } - If the embedded message type is well-known and has a custom - JSON + If the embedded message type is well-known and has a + custom JSON - representation, that representation will be embedded adding a - field + representation, that representation will be embedded + adding a field - `value` which holds the custom JSON in addition to the `@type` + `value` which holds the custom JSON in addition to the + `@type` - field. Example (for message [google.protobuf.Duration][]): + field. Example (for message [google.protobuf.Duration][]): - { - "@type": "type.googleapis.com/google.protobuf.Duration", - "value": "1.212s" - } - client_id: - type: string - title: client ID associated with the consensus state - proof: - type: string - format: byte - title: merkle proof of existence - proof_height: - title: height at which the proof was retrieved - type: object - properties: - version_number: + { + "@type": "type.googleapis.com/google.protobuf.Duration", + "value": "1.212s" + } + jailed: + type: boolean + format: boolean + description: >- + jailed defined whether the validator has been jailed from + bonded status or not. + status: + description: >- + status is the validator status + (bonded/unbonding/unbonded). type: string - format: uint64 - title: the version that the client is currently on - version_height: + enum: + - BOND_STATUS_UNSPECIFIED + - BOND_STATUS_UNBONDED + - BOND_STATUS_UNBONDING + - BOND_STATUS_BONDED + default: BOND_STATUS_UNSPECIFIED + tokens: type: string - format: uint64 - title: the height within the given version + description: >- + tokens define the delegated tokens (incl. + self-delegation). + delegator_shares: + type: string + description: >- + delegator_shares defines total shares issued to a + validator's delegators. + description: + description: >- + description defines the description terms for the + validator. + type: object + properties: + moniker: + type: string + description: >- + moniker defines a human-readable name for the + validator. + identity: + type: string + description: >- + identity defines an optional identity signature (ex. + UPort or Keybase). + website: + type: string + description: website defines an optional website link. + security_contact: + type: string + description: >- + security_contact defines an optional email for + security contact. + details: + type: string + description: details define other optional details. + unbonding_height: + type: string + format: int64 + description: >- + unbonding_height defines, if unbonding, the height at + which this validator has begun unbonding. + unbonding_time: + type: string + format: date-time + description: >- + unbonding_time defines, if unbonding, the min time for the + validator to complete unbonding. + commission: + description: commission defines the commission parameters. + type: object + properties: + commission_rates: + description: >- + commission_rates defines the initial commission rates + to be used for creating a validator. + type: object + properties: + rate: + type: string + description: >- + rate is the commission rate charged to delegators, + as a fraction. + max_rate: + type: string + description: >- + max_rate defines the maximum commission rate which + validator can ever charge, as a fraction. + max_change_rate: + type: string + description: >- + max_change_rate defines the maximum daily increase + of the validator commission, as a fraction. + update_time: + type: string + format: date-time + description: >- + update_time is the last time the commission rate was + changed. + min_self_delegation: + type: string + description: >- + min_self_delegation is the validator's self declared + minimum self delegation. description: >- - Normally the VersionHeight is incremented at each height while - keeping version + Validator defines a validator, together with the total amount + of the - number the same However some consensus algorithms may choose - to reset the + Validator's bond shares and their exchange rate to coins. + Slashing results in - height in certain conditions e.g. hard forks, state-machine - breaking changes + a decrease in the exchange rate, allowing correct calculation + of future - In these cases, the version number is incremented so that - height continues to + undelegations without iterating over delegators. When coins + are delegated to - be monitonically increasing even as the VersionHeight gets - reset - title: |- - QueryChannelClientStateResponse is the Response type for the - Query/QueryChannelClientState RPC method + this validator, the validator is credited with a delegation + whose number of + + bond shares is based on the amount of coins delegated divided + by the current + + exchange rate. Voting power can be calculated as total bonded + shares + + multiplied by exchange rate. + title: >- + QueryValidatorResponse is response type for the Query/Validator + RPC method default: - description: An unexpected error response. + description: An unexpected error response schema: type: object properties: @@ -19633,82 +21296,96 @@ paths: "value": "1.212s" } parameters: - - name: channel_id - description: channel unique identifier - in: path - required: true - type: string - - name: port_id - description: port unique identifier - in: path - required: true - type: string - - name: version_number - description: version number of the consensus state - in: path - required: true - type: string - format: uint64 - - name: version_height - description: version height of the consensus state + - name: validator_addr + description: validator_addr defines the validator address to query for. in: path required: true type: string - format: uint64 tags: - Query - '/ibc/channel/v1beta1/channels/{channel_id}/ports/{port_id}/next_sequence': + '/cosmos/staking/v1beta1/validators/{validator_addr}/delegations': get: - summary: >- - NextSequenceReceive returns the next receive sequence for a given - channel. - operationId: NextSequenceReceive + summary: ValidatorDelegations queries delegate info for given validator. + operationId: ValidatorDelegations responses: '200': description: A successful response. schema: type: object properties: - next_sequence_receive: - type: string - format: uint64 - title: next sequence receive number - proof: - type: string - format: byte - title: merkle proof of existence - proof_height: - title: height at which the proof was retrieved + delegation_responses: + type: array + items: + type: object + properties: + delegation: + type: object + properties: + delegator_address: + type: string + description: >- + delegator_address is the bech32-encoded address of + the delegator. + validator_address: + type: string + description: >- + validator_address is the bech32-encoded address of + the validator. + shares: + type: string + description: shares define the delegation shares received. + description: >- + Delegation represents the bond with tokens held by an + account. It is + + owned by one delegator, and is associated with the + voting power of one + + validator. + balance: + type: object + properties: + denom: + type: string + amount: + type: string + description: >- + Coin defines a token with a denomination and an amount. + + + NOTE: The amount field is an Int which implements the + custom method + + signatures required by gogoproto. + description: >- + DelegationResponse is equivalent to Delegation except that + it contains a + + balance in addition to shares which is more suitable for + client responses. + pagination: + description: pagination defines the pagination in the response. type: object properties: - version_number: + next_key: type: string - format: uint64 - title: the version that the client is currently on - version_height: + format: byte + title: |- + next_key is the key to be passed to PageRequest.key to + query the next page most efficiently + total: type: string format: uint64 - title: the height within the given version - description: >- - Normally the VersionHeight is incremented at each height while - keeping version - - number the same However some consensus algorithms may choose - to reset the - - height in certain conditions e.g. hard forks, state-machine - breaking changes - - In these cases, the version number is incremented so that - height continues to + title: >- + total is total number of results available if + PageRequest.count_total - be monitonically increasing even as the VersionHeight gets - reset + was set, its value is undefined otherwise title: |- - QuerySequenceResponse is the request type for the - Query/QueryNextSequenceReceiveResponse RPC method + QueryValidatorDelegationsResponse is response type for the + Query/ValidatorDelegations RPC method default: - description: An unexpected error response. + description: An unexpected error response schema: type: object properties: @@ -19897,121 +21574,131 @@ paths: "value": "1.212s" } parameters: - - name: channel_id - description: channel unique identifier + - name: validator_addr + description: validator_addr defines the validator address to query for. in: path required: true type: string - - name: port_id - description: port unique identifier - in: path - required: true + - name: pagination.key + description: |- + key is a value returned in PageResponse.next_key to begin + querying the next page most efficiently. Only one of offset or key + should be set. + in: query + required: false type: string - tags: - - Query - '/ibc/channel/v1beta1/channels/{channel_id}/ports/{port_id}/packet_acknowledgements': - get: - summary: >- - PacketAcknowledgements returns all the packet acknowledgements - associated - - with a channel. - operationId: PacketAcknowledgements - responses: - '200': - description: A successful response. - schema: - type: object - properties: - acknowledgements: - type: array - items: - type: object - properties: - port_id: - type: string - description: channel port identifier. - channel_id: - type: string - description: channel unique identifier. - sequence: - type: string - format: uint64 - description: packet sequence. - data: - type: string - format: byte - description: embedded data that represents packet state. - description: >- - PacketState defines the generic type necessary to retrieve - and store - - packet commitments, acknowledgements, and receipts. + format: byte + - name: pagination.offset + description: >- + offset is a numeric offset that can be used when key is unavailable. - Caller is responsible for knowing the context necessary to - interpret this + It is less efficient than using key. Only one of offset or key + should - state as a commitment, acknowledgement, or a receipt. - pagination: - title: pagination response - type: object - properties: - next_key: - type: string - format: byte - title: |- - next_key is the key to be passed to PageRequest.key to - query the next page most efficiently - total: - type: string - format: uint64 - title: >- - total is total number of results available if - PageRequest.count_total + be set. + in: query + required: false + type: string + format: uint64 + - name: pagination.limit + description: >- + limit is the total number of results to be returned in the result + page. - was set, its value is undefined otherwise - description: >- - PageResponse is to be embedded in gRPC response messages where - the + If left empty it will default to a value to be set by each app. + in: query + required: false + type: string + format: uint64 + - name: pagination.count_total + description: >- + count_total is set to true to indicate that the result set should + include - corresponding request message has used PageRequest. + a count of the total number of items available for pagination in + UIs. - message SomeResponse { - repeated Bar results = 1; - PageResponse page = 2; - } - height: - title: query block height + count_total is only respected when offset is used. It is ignored + when key + + is set. + in: query + required: false + type: boolean + format: boolean + - name: pagination.reverse + description: >- + reverse is set to true indicates that, results to be returned in the + descending order. + in: query + required: false + type: boolean + format: boolean + tags: + - Query + '/cosmos/staking/v1beta1/validators/{validator_addr}/delegations/{delegator_addr}': + get: + summary: Delegation queries delegate info for given validator delegator pair. + operationId: Delegation + responses: + '200': + description: A successful response. + schema: + type: object + properties: + delegation_response: type: object properties: - version_number: - type: string - format: uint64 - title: the version that the client is currently on - version_height: - type: string - format: uint64 - title: the height within the given version - description: >- - Normally the VersionHeight is incremented at each height while - keeping version + delegation: + type: object + properties: + delegator_address: + type: string + description: >- + delegator_address is the bech32-encoded address of the + delegator. + validator_address: + type: string + description: >- + validator_address is the bech32-encoded address of the + validator. + shares: + type: string + description: shares define the delegation shares received. + description: >- + Delegation represents the bond with tokens held by an + account. It is + + owned by one delegator, and is associated with the voting + power of one + + validator. + balance: + type: object + properties: + denom: + type: string + amount: + type: string + description: >- + Coin defines a token with a denomination and an amount. - number the same However some consensus algorithms may choose - to reset the - height in certain conditions e.g. hard forks, state-machine - breaking changes + NOTE: The amount field is an Int which implements the + custom method - In these cases, the version number is incremented so that - height continues to + signatures required by gogoproto. + description: >- + DelegationResponse is equivalent to Delegation except that it + contains a - be monitonically increasing even as the VersionHeight gets - reset - title: |- - QueryPacketAcknowledgemetsResponse is the request type for the - Query/QueryPacketAcknowledgements RPC method + balance in addition to shares which is more suitable for + client responses. + description: >- + QueryDelegationResponse is response type for the Query/Delegation + RPC method. default: - description: An unexpected error response. + description: An unexpected error response schema: type: object properties: @@ -20200,118 +21887,84 @@ paths: "value": "1.212s" } parameters: - - name: channel_id - description: channel unique identifier + - name: validator_addr + description: validator_addr defines the validator address to query for. in: path required: true type: string - - name: port_id - description: port unique identifier + - name: delegator_addr + description: delegator_addr defines the delegator address to query for. in: path required: true type: string - - name: pagination.key - description: |- - key is a value returned in PageResponse.next_key to begin - querying the next page most efficiently. Only one of offset or key - should be set. - in: query - required: false - type: string - format: byte - - name: pagination.offset - description: >- - offset is a numeric offset that can be used when key is unavailable. - - It is less efficient than using key. Only one of offset or key - should - - be set. - in: query - required: false - type: string - format: uint64 - - name: pagination.limit - description: >- - limit is the total number of results to be returned in the result - page. - - If left empty it will default to a value to be set by each app. - in: query - required: false - type: string - format: uint64 - - name: pagination.count_total - description: >- - count_total is set to true to indicate that the result set should - include - - a count of the total number of items available for pagination in - UIs. - - count_total is only respected when offset is used. It is ignored - when key - - is set. - in: query - required: false - type: boolean tags: - Query - '/ibc/channel/v1beta1/channels/{channel_id}/ports/{port_id}/packet_acks/{sequence}': + '/cosmos/staking/v1beta1/validators/{validator_addr}/delegations/{delegator_addr}/unbonding_delegation': get: - summary: PacketAcknowledgement queries a stored packet acknowledgement hash. - operationId: PacketAcknowledgement + summary: |- + UnbondingDelegation queries unbonding info for given validator delegator + pair. + operationId: UnbondingDelegation responses: '200': description: A successful response. schema: type: object properties: - acknowledgement: - type: string - format: byte - title: packet associated with the request fields - proof: - type: string - format: byte - title: merkle proof of existence - proof_height: - title: height at which the proof was retrieved + unbond: type: object properties: - version_number: + delegator_address: type: string - format: uint64 - title: the version that the client is currently on - version_height: + description: >- + delegator_address is the bech32-encoded address of the + delegator. + validator_address: type: string - format: uint64 - title: the height within the given version + description: >- + validator_address is the bech32-encoded address of the + validator. + entries: + type: array + items: + type: object + properties: + creation_height: + type: string + format: int64 + description: >- + creation_height is the height which the unbonding + took place. + completion_time: + type: string + format: date-time + description: >- + completion_time is the unix time for unbonding + completion. + initial_balance: + type: string + description: >- + initial_balance defines the tokens initially + scheduled to receive at completion. + balance: + type: string + description: balance defines the tokens to receive at completion. + description: >- + UnbondingDelegationEntry defines an unbonding object + with relevant metadata. + description: entries are the unbonding delegation entries. description: >- - Normally the VersionHeight is incremented at each height while - keeping version - - number the same However some consensus algorithms may choose - to reset the - - height in certain conditions e.g. hard forks, state-machine - breaking changes + UnbondingDelegation stores all of a single delegator's + unbonding bonds - In these cases, the version number is incremented so that - height continues to - - be monitonically increasing even as the VersionHeight gets - reset - title: >- - QueryPacketAcknowledgementResponse defines the client query - response for a - - packet which also includes a proof and the height from which the + for a single validator in an time-ordered list. + description: >- + QueryDelegationResponse is response type for the + Query/UnbondingDelegation - proof was retrieved + RPC method. default: - description: An unexpected error response. + description: An unexpected error response schema: type: object properties: @@ -20500,67 +22153,83 @@ paths: "value": "1.212s" } parameters: - - name: channel_id - description: channel unique identifier - in: path - required: true - type: string - - name: port_id - description: port unique identifier + - name: validator_addr + description: validator_addr defines the validator address to query for. in: path required: true type: string - - name: sequence - description: packet sequence + - name: delegator_addr + description: delegator_addr defines the delegator address to query for. in: path required: true type: string - format: uint64 tags: - Query - '/ibc/channel/v1beta1/channels/{channel_id}/ports/{port_id}/packet_commitments': + '/cosmos/staking/v1beta1/validators/{validator_addr}/unbonding_delegations': get: - summary: |- - PacketCommitments returns all the packet commitments hashes associated - with a channel. - operationId: PacketCommitments + summary: >- + ValidatorUnbondingDelegations queries unbonding delegations of a + validator. + operationId: ValidatorUnbondingDelegations responses: '200': description: A successful response. schema: type: object properties: - commitments: + unbonding_responses: type: array items: type: object properties: - port_id: - type: string - description: channel port identifier. - channel_id: - type: string - description: channel unique identifier. - sequence: + delegator_address: type: string - format: uint64 - description: packet sequence. - data: + description: >- + delegator_address is the bech32-encoded address of the + delegator. + validator_address: type: string - format: byte - description: embedded data that represents packet state. + description: >- + validator_address is the bech32-encoded address of the + validator. + entries: + type: array + items: + type: object + properties: + creation_height: + type: string + format: int64 + description: >- + creation_height is the height which the unbonding + took place. + completion_time: + type: string + format: date-time + description: >- + completion_time is the unix time for unbonding + completion. + initial_balance: + type: string + description: >- + initial_balance defines the tokens initially + scheduled to receive at completion. + balance: + type: string + description: >- + balance defines the tokens to receive at + completion. + description: >- + UnbondingDelegationEntry defines an unbonding object + with relevant metadata. + description: entries are the unbonding delegation entries. description: >- - PacketState defines the generic type necessary to retrieve - and store - - packet commitments, acknowledgements, and receipts. - - Caller is responsible for knowing the context necessary to - interpret this + UnbondingDelegation stores all of a single delegator's + unbonding bonds - state as a commitment, acknowledgement, or a receipt. + for a single validator in an time-ordered list. pagination: - title: pagination response + description: pagination defines the pagination in the response. type: object properties: next_key: @@ -20577,48 +22246,13 @@ paths: PageRequest.count_total was set, its value is undefined otherwise - description: >- - PageResponse is to be embedded in gRPC response messages where - the - - corresponding request message has used PageRequest. - - message SomeResponse { - repeated Bar results = 1; - PageResponse page = 2; - } - height: - title: query block height - type: object - properties: - version_number: - type: string - format: uint64 - title: the version that the client is currently on - version_height: - type: string - format: uint64 - title: the height within the given version - description: >- - Normally the VersionHeight is incremented at each height while - keeping version - - number the same However some consensus algorithms may choose - to reset the - - height in certain conditions e.g. hard forks, state-machine - breaking changes - - In these cases, the version number is incremented so that - height continues to + description: >- + QueryValidatorUnbondingDelegationsResponse is response type for + the - be monitonically increasing even as the VersionHeight gets - reset - title: |- - QueryPacketCommitmentsResponse is the request type for the - Query/QueryPacketCommitments RPC method + Query/ValidatorUnbondingDelegations RPC method. default: - description: An unexpected error response. + description: An unexpected error response schema: type: object properties: @@ -20807,13 +22441,8 @@ paths: "value": "1.212s" } parameters: - - name: channel_id - description: channel unique identifier - in: path - required: true - type: string - - name: port_id - description: port unique identifier + - name: validator_addr + description: validator_addr defines the validator address to query for. in: path required: true type: string @@ -20863,60 +22492,101 @@ paths: in: query required: false type: boolean + format: boolean + - name: pagination.reverse + description: >- + reverse is set to true indicates that, results to be returned in the + descending order. + in: query + required: false + type: boolean + format: boolean tags: - Query - '/ibc/channel/v1beta1/channels/{channel_id}/ports/{port_id}/packet_commitments/{packet_ack_sequences}/unreceived_acks': - get: - summary: >- - UnreceivedAcks returns all the unreceived IBC acknowledgements - associated with a - - channel and sequences. - operationId: UnreceivedAcks + /cosmos/tx/v1beta1/simulate: + post: + summary: Simulate simulates executing a transaction for estimating gas usage. + operationId: Simulate responses: '200': description: A successful response. schema: type: object properties: - sequences: - type: array - items: - type: string - format: uint64 - title: list of unreceived acknowledgement sequences - height: - title: query block height + gas_info: + description: gas_info is the information about gas used in the simulation. type: object properties: - version_number: + gas_wanted: type: string format: uint64 - title: the version that the client is currently on - version_height: + description: >- + GasWanted is the maximum units of work we allow this tx to + perform. + gas_used: type: string format: uint64 - title: the height within the given version - description: >- - Normally the VersionHeight is incremented at each height while - keeping version + description: GasUsed is the amount of gas actually consumed. + result: + description: result is the result of the simulation. + type: object + properties: + data: + type: string + format: byte + description: >- + Data is any data returned from message or handler + execution. It MUST be - number the same However some consensus algorithms may choose - to reset the + length prefixed in order to separate data from multiple + message executions. + log: + type: string + description: >- + Log contains the log information from message or handler + execution. + events: + type: array + items: + type: object + properties: + type: + type: string + attributes: + type: array + items: + type: object + properties: + key: + type: string + format: byte + value: + type: string + format: byte + index: + type: boolean + format: boolean + description: >- + EventAttribute is a single key-value pair, + associated with an event. + description: >- + Event allows application developers to attach additional + information to - height in certain conditions e.g. hard forks, state-machine - breaking changes + ResponseBeginBlock, ResponseEndBlock, ResponseCheckTx + and ResponseDeliverTx. - In these cases, the version number is incremented so that - height continues to + Later, transactions may be queried using these events. + description: >- + Events contains a slice of Event objects that were emitted + during message - be monitonically increasing even as the VersionHeight gets - reset - title: |- - QueryUnreceivedAcksResponse is the response type for the - Query/UnreceivedAcks RPC method + or handler execution. + description: |- + SimulateResponse is the response type for the + Service.SimulateRPC method. default: - description: An unexpected error response. + description: An unexpected error response schema: type: object properties: @@ -21105,80 +22775,24 @@ paths: "value": "1.212s" } parameters: - - name: channel_id - description: channel unique identifier - in: path - required: true - type: string - - name: port_id - description: port unique identifier - in: path - required: true - type: string - - name: packet_ack_sequences - description: list of acknowledgement sequences - in: path + - name: body + in: body required: true - type: array - items: - type: string - format: uint64 - collectionFormat: csv - minItems: 1 + schema: + $ref: '#/definitions/cosmos.tx.v1beta1.SimulateRequest' tags: - - Query - '/ibc/channel/v1beta1/channels/{channel_id}/ports/{port_id}/packet_commitments/{packet_commitment_sequences}/unreceived_packets': + - Service + /cosmos/tx/v1beta1/txs: get: - summary: >- - UnreceivedPackets returns all the unreceived IBC packets associated with - a - - channel and sequences. - operationId: UnreceivedPackets + summary: GetTxsEvent fetches txs by event. + operationId: GetTxsEvent responses: '200': description: A successful response. schema: - type: object - properties: - sequences: - type: array - items: - type: string - format: uint64 - title: list of unreceived packet sequences - height: - title: query block height - type: object - properties: - version_number: - type: string - format: uint64 - title: the version that the client is currently on - version_height: - type: string - format: uint64 - title: the height within the given version - description: >- - Normally the VersionHeight is incremented at each height while - keeping version - - number the same However some consensus algorithms may choose - to reset the - - height in certain conditions e.g. hard forks, state-machine - breaking changes - - In these cases, the version number is incremented so that - height continues to - - be monitonically increasing even as the VersionHeight gets - reset - title: |- - QueryUnreceivedPacketsResponse is the response type for the - Query/UnreceivedPacketCommitments RPC method + $ref: '#/definitions/cosmos.tx.v1beta1.GetTxsEventResponse' default: - description: An unexpected error response. + description: An unexpected error response schema: type: object properties: @@ -21367,83 +22981,374 @@ paths: "value": "1.212s" } parameters: - - name: channel_id - description: channel unique identifier - in: path - required: true - type: string - - name: port_id - description: port unique identifier - in: path - required: true - type: string - - name: packet_commitment_sequences - description: list of packet sequences - in: path - required: true + - name: events + description: events is the list of transaction event type. + in: query + required: false type: array items: type: string - format: uint64 - collectionFormat: csv - minItems: 1 + collectionFormat: multi + - name: pagination.key + description: |- + key is a value returned in PageResponse.next_key to begin + querying the next page most efficiently. Only one of offset or key + should be set. + in: query + required: false + type: string + format: byte + - name: pagination.offset + description: >- + offset is a numeric offset that can be used when key is unavailable. + + It is less efficient than using key. Only one of offset or key + should + + be set. + in: query + required: false + type: string + format: uint64 + - name: pagination.limit + description: >- + limit is the total number of results to be returned in the result + page. + + If left empty it will default to a value to be set by each app. + in: query + required: false + type: string + format: uint64 + - name: pagination.count_total + description: >- + count_total is set to true to indicate that the result set should + include + + a count of the total number of items available for pagination in + UIs. + + count_total is only respected when offset is used. It is ignored + when key + + is set. + in: query + required: false + type: boolean + format: boolean + - name: pagination.reverse + description: >- + reverse is set to true indicates that, results to be returned in the + descending order. + in: query + required: false + type: boolean + format: boolean + - name: order_by + description: |2- + - ORDER_BY_UNSPECIFIED: ORDER_BY_UNSPECIFIED specifies an unknown sorting order. OrderBy defaults to ASC in this case. + - ORDER_BY_ASC: ORDER_BY_ASC defines ascending order + - ORDER_BY_DESC: ORDER_BY_DESC defines descending order + in: query + required: false + type: string + enum: + - ORDER_BY_UNSPECIFIED + - ORDER_BY_ASC + - ORDER_BY_DESC + default: ORDER_BY_UNSPECIFIED tags: - - Query - '/ibc/channel/v1beta1/channels/{channel_id}/ports/{port_id}/packet_commitments/{sequence}': - get: - summary: PacketCommitment queries a stored packet commitment hash. - operationId: PacketCommitment + - Service + post: + summary: BroadcastTx broadcast transaction. + operationId: BroadcastTx responses: '200': description: A successful response. schema: type: object properties: - commitment: - type: string - format: byte - title: packet associated with the request fields - proof: - type: string - format: byte - title: merkle proof of existence - proof_height: - title: height at which the proof was retrieved + tx_response: type: object properties: - version_number: + height: type: string - format: uint64 - title: the version that the client is currently on - version_height: + format: int64 + title: The block height + txhash: type: string - format: uint64 - title: the height within the given version - description: >- - Normally the VersionHeight is incremented at each height while - keeping version + description: The transaction hash. + codespace: + type: string + title: Namespace for the Code + code: + type: integer + format: int64 + description: Response code. + data: + type: string + description: 'Result bytes, if any.' + raw_log: + type: string + description: >- + The output of the application's logger (raw string). May + be - number the same However some consensus algorithms may choose - to reset the + non-deterministic. + logs: + type: array + items: + type: object + properties: + msg_index: + type: integer + format: int64 + log: + type: string + events: + type: array + items: + type: object + properties: + type: + type: string + attributes: + type: array + items: + type: object + properties: + key: + type: string + value: + type: string + description: >- + Attribute defines an attribute wrapper where + the key and value are - height in certain conditions e.g. hard forks, state-machine - breaking changes + strings instead of raw bytes. + description: >- + StringEvent defines en Event object wrapper where + all the attributes - In these cases, the version number is incremented so that - height continues to + contain key/value pairs that are strings instead + of raw bytes. + description: >- + Events contains a slice of Event objects that were + emitted during some - be monitonically increasing even as the VersionHeight gets - reset - title: >- - QueryPacketCommitmentResponse defines the client query response - for a packet + execution. + description: >- + ABCIMessageLog defines a structure containing an indexed + tx ABCI message log. + description: >- + The output of the application's logger (typed). May be + non-deterministic. + info: + type: string + description: Additional information. May be non-deterministic. + gas_wanted: + type: string + format: int64 + description: Amount of gas requested for transaction. + gas_used: + type: string + format: int64 + description: Amount of gas consumed by transaction. + tx: + type: object + properties: + type_url: + type: string + description: >- + A URL/resource name that uniquely identifies the type + of the serialized + + protocol buffer message. This string must contain at + least + + one "/" character. The last segment of the URL's path + must represent + + the fully qualified name of the type (as in + + `path/google.protobuf.Duration`). The name should be + in a canonical form + + (e.g., leading "." is not accepted). + + + In practice, teams usually precompile into the binary + all types that they + + expect it to use in the context of Any. However, for + URLs which use the + + scheme `http`, `https`, or no scheme, one can + optionally set up a type + + server that maps type URLs to message definitions as + follows: + + + * If no scheme is provided, `https` is assumed. + + * An HTTP GET on the URL must yield a + [google.protobuf.Type][] + value in binary format, or produce an error. + * Applications are allowed to cache lookup results + based on the + URL, or have them precompiled into a binary to avoid any + lookup. Therefore, binary compatibility needs to be preserved + on changes to types. (Use versioned type names to manage + breaking changes.) + + Note: this functionality is not currently available in + the official + + protobuf release, and it is not used for type URLs + beginning with + + type.googleapis.com. + + + Schemes other than `http`, `https` (or the empty + scheme) might be + + used with implementation specific semantics. + value: + type: string + format: byte + description: >- + Must be a valid serialized protocol buffer of the + above specified type. + description: >- + `Any` contains an arbitrary serialized protocol buffer + message along with a + + URL that describes the type of the serialized message. + + + Protobuf library provides support to pack/unpack Any + values in the form + + of utility functions or additional generated methods of + the Any type. + + + Example 1: Pack and unpack a message in C++. + + Foo foo = ...; + Any any; + any.PackFrom(foo); + ... + if (any.UnpackTo(&foo)) { + ... + } + + Example 2: Pack and unpack a message in Java. + + Foo foo = ...; + Any any = Any.pack(foo); + ... + if (any.is(Foo.class)) { + foo = any.unpack(Foo.class); + } + + Example 3: Pack and unpack a message in Python. + + foo = Foo(...) + any = Any() + any.Pack(foo) + ... + if any.Is(Foo.DESCRIPTOR): + any.Unpack(foo) + ... + + Example 4: Pack and unpack a message in Go + + foo := &pb.Foo{...} + any, err := ptypes.MarshalAny(foo) + ... + foo := &pb.Foo{} + if err := ptypes.UnmarshalAny(any, foo); err != nil { + ... + } + + The pack methods provided by protobuf library will by + default use + + 'type.googleapis.com/full.type.name' as the type URL and + the unpack + + methods only use the fully qualified type name after the + last '/' + + in the type URL, for example "foo.bar.com/x/y.z" will + yield type + + name "y.z". + + + + JSON + + ==== + + The JSON representation of an `Any` value uses the regular + + representation of the deserialized, embedded message, with + an + + additional field `@type` which contains the type URL. + Example: + + package google.profile; + message Person { + string first_name = 1; + string last_name = 2; + } + + { + "@type": "type.googleapis.com/google.profile.Person", + "firstName": , + "lastName": + } + + If the embedded message type is well-known and has a + custom JSON + + representation, that representation will be embedded + adding a field + + `value` which holds the custom JSON in addition to the + `@type` + + field. Example (for message [google.protobuf.Duration][]): - which also includes a proof and the height from which the proof - was + { + "@type": "type.googleapis.com/google.protobuf.Duration", + "value": "1.212s" + } + timestamp: + type: string + description: >- + Time of the previous block. For heights > 1, it's the + weighted median of + + the timestamps of the valid votes in the block.LastCommit. + For height == 1, - retrieved + it's genesis time. + description: >- + TxResponse defines a structure containing relevant tx data and + metadata. The + + tags are stringified and the log is JSON decoded. + description: |- + BroadcastTxResponse is the response type for the + Service.BroadcastTx method. default: - description: An unexpected error response. + description: An unexpected error response schema: type: object properties: @@ -21632,80 +23537,53 @@ paths: "value": "1.212s" } parameters: - - name: channel_id - description: channel unique identifier - in: path - required: true - type: string - - name: port_id - description: port unique identifier - in: path - required: true - type: string - - name: sequence - description: packet sequence - in: path + - name: body + in: body required: true - type: string - format: uint64 - tags: - - Query - '/ibc/channel/v1beta1/channels/{channel_id}/ports/{port_id}/packet_receipts/{sequence}': - get: - summary: >- - PacketReceipt queries if a given packet sequence has been received on - the queried chain - operationId: PacketReceipt - responses: - '200': - description: A successful response. schema: type: object properties: - received: - type: boolean - title: success flag for if receipt exists - proof: + tx_bytes: type: string format: byte - title: merkle proof of existence - proof_height: - title: height at which the proof was retrieved - type: object - properties: - version_number: - type: string - format: uint64 - title: the version that the client is currently on - version_height: - type: string - format: uint64 - title: the height within the given version + description: tx_bytes is the raw transaction. + mode: + type: string + enum: + - BROADCAST_MODE_UNSPECIFIED + - BROADCAST_MODE_BLOCK + - BROADCAST_MODE_SYNC + - BROADCAST_MODE_ASYNC + default: BROADCAST_MODE_UNSPECIFIED description: >- - Normally the VersionHeight is incremented at each height while - keeping version - - number the same However some consensus algorithms may choose - to reset the - - height in certain conditions e.g. hard forks, state-machine - breaking changes - - In these cases, the version number is incremented so that - height continues to - - be monitonically increasing even as the VersionHeight gets - reset - title: >- - QueryPacketReceiptResponse defines the client query response for a - packet receipt - - which also includes a proof, and the height from which the proof - was + BroadcastMode specifies the broadcast mode for the + TxService.Broadcast RPC method. + + - BROADCAST_MODE_UNSPECIFIED: zero-value for mode ordering + - BROADCAST_MODE_BLOCK: BROADCAST_MODE_BLOCK defines a tx broadcasting mode where the client waits for + the tx to be committed in a block. + - BROADCAST_MODE_SYNC: BROADCAST_MODE_SYNC defines a tx broadcasting mode where the client waits for + a CheckTx execution response only. + - BROADCAST_MODE_ASYNC: BROADCAST_MODE_ASYNC defines a tx broadcasting mode where the client returns + immediately. + description: >- + BroadcastTxRequest is the request type for the + Service.BroadcastTxRequest - retrieved + RPC method. + tags: + - Service + '/cosmos/tx/v1beta1/txs/{hash}': + get: + summary: GetTx fetches a tx by hash. + operationId: GetTx + responses: + '200': + description: A successful response. + schema: + $ref: '#/definitions/cosmos.tx.v1beta1.GetTxResponse' default: - description: An unexpected error response. + description: An unexpected error response schema: type: object properties: @@ -21894,176 +23772,34 @@ paths: "value": "1.212s" } parameters: - - name: channel_id - description: channel unique identifier - in: path - required: true - type: string - - name: port_id - description: port unique identifier - in: path - required: true - type: string - - name: sequence - description: packet sequence + - name: hash + description: 'hash is the tx hash to query, encoded as a hex string.' in: path required: true type: string - format: uint64 tags: - - Query - '/ibc/channel/v1beta1/connections/{connection}/channels': + - Service + '/cosmos/upgrade/v1beta1/applied_plan/{name}': get: - summary: |- - ConnectionChannels queries all the channels associated with a connection - end. - operationId: ConnectionChannels + summary: AppliedPlan queries a previously applied upgrade plan by its name. + operationId: AppliedPlan responses: '200': description: A successful response. schema: type: object properties: - channels: - type: array - items: - type: object - properties: - state: - title: current state of the channel end - type: string - enum: - - STATE_UNINITIALIZED_UNSPECIFIED - - STATE_INIT - - STATE_TRYOPEN - - STATE_OPEN - - STATE_CLOSED - default: STATE_UNINITIALIZED_UNSPECIFIED - description: >- - State defines if a channel is in one of the following - states: - - CLOSED, INIT, TRYOPEN, OPEN or UNINITIALIZED. - - - STATE_UNINITIALIZED_UNSPECIFIED: Default State - - STATE_INIT: A channel has just started the opening handshake. - - STATE_TRYOPEN: A channel has acknowledged the handshake step on the counterparty chain. - - STATE_OPEN: A channel has completed the handshake. Open channels are - ready to send and receive packets. - - STATE_CLOSED: A channel has been closed and can no longer be used to send or receive - packets. - ordering: - title: whether the channel is ordered or unordered - type: string - enum: - - ORDER_NONE_UNSPECIFIED - - ORDER_UNORDERED - - ORDER_ORDERED - default: ORDER_NONE_UNSPECIFIED - description: >- - - ORDER_NONE_UNSPECIFIED: zero-value for channel - ordering - - ORDER_UNORDERED: packets can be delivered in any order, which may differ from the order in - which they were sent. - - ORDER_ORDERED: packets are delivered exactly in the order which they were sent - counterparty: - title: counterparty channel end - type: object - properties: - port_id: - type: string - description: >- - port on the counterparty chain which owns the other - end of the channel. - channel_id: - type: string - title: channel end on the counterparty chain - connection_hops: - type: array - items: - type: string - title: >- - list of connection identifiers, in order, along which - packets sent on - - this channel will travel - version: - type: string - title: >- - opaque channel version, which is agreed upon during the - handshake - port_id: - type: string - title: port identifier - channel_id: - type: string - title: channel identifier - description: >- - IdentifiedChannel defines a channel with additional port and - channel - - identifier fields. - description: list of channels associated with a connection. - pagination: - title: pagination response - type: object - properties: - next_key: - type: string - format: byte - title: |- - next_key is the key to be passed to PageRequest.key to - query the next page most efficiently - total: - type: string - format: uint64 - title: >- - total is total number of results available if - PageRequest.count_total - - was set, its value is undefined otherwise - description: >- - PageResponse is to be embedded in gRPC response messages where - the - - corresponding request message has used PageRequest. - - message SomeResponse { - repeated Bar results = 1; - PageResponse page = 2; - } height: - title: query block height - type: object - properties: - version_number: - type: string - format: uint64 - title: the version that the client is currently on - version_height: - type: string - format: uint64 - title: the height within the given version - description: >- - Normally the VersionHeight is incremented at each height while - keeping version - - number the same However some consensus algorithms may choose - to reset the - - height in certain conditions e.g. hard forks, state-machine - breaking changes - - In these cases, the version number is incremented so that - height continues to + type: string + format: int64 + description: height is the block height at which the plan was applied. + description: >- + QueryAppliedPlanResponse is the response type for the + Query/AppliedPlan RPC - be monitonically increasing even as the VersionHeight gets - reset - title: |- - QueryConnectionChannelsResponse is the Response type for the - Query/QueryConnectionChannels RPC method + method. default: - description: An unexpected error response. + description: An unexpected error response schema: type: object properties: @@ -22252,296 +23988,283 @@ paths: "value": "1.212s" } parameters: - - name: connection - description: connection unique identifier + - name: name + description: name is the name of the applied plan to query for. in: path required: true type: string - - name: pagination.key - description: |- - key is a value returned in PageResponse.next_key to begin - querying the next page most efficiently. Only one of offset or key - should be set. - in: query - required: false - type: string - format: byte - - name: pagination.offset - description: >- - offset is a numeric offset that can be used when key is unavailable. - - It is less efficient than using key. Only one of offset or key - should - - be set. - in: query - required: false - type: string - format: uint64 - - name: pagination.limit - description: >- - limit is the total number of results to be returned in the result - page. - - If left empty it will default to a value to be set by each app. - in: query - required: false - type: string - format: uint64 - - name: pagination.count_total - description: >- - count_total is set to true to indicate that the result set should - include - - a count of the total number of items available for pagination in - UIs. - - count_total is only respected when offset is used. It is ignored - when key - - is set. - in: query - required: false - type: boolean tags: - Query - /ibc/client/v1beta1/client_states: + /cosmos/upgrade/v1beta1/current_plan: get: - summary: ClientStates queries all the IBC light clients of a chain. - operationId: ClientStates + summary: CurrentPlan queries the current upgrade plan. + operationId: CurrentPlan responses: '200': description: A successful response. schema: type: object properties: - client_states: + plan: + description: plan is the current upgrade plan. + type: object + properties: + name: + type: string + description: >- + Sets the name for the upgrade. This name will be used by + the upgraded + + version of the software to apply any special "on-upgrade" + commands during + + the first BeginBlock method after the upgrade is applied. + It is also used + + to detect whether a software version can handle a given + upgrade. If no + + upgrade handler with this name has been set in the + software, it will be + + assumed that the software is out-of-date when the upgrade + Time or Height is + + reached and the software will exit. + height: + type: string + format: int64 + description: |- + The height at which the upgrade must be performed. + Only used if Time is not set. + info: + type: string + title: >- + Any application specific upgrade info to be included + on-chain + + such as a git commit that validators could automatically + upgrade to + description: >- + QueryCurrentPlanResponse is the response type for the + Query/CurrentPlan RPC + + method. + default: + description: An unexpected error response + schema: + type: object + properties: + error: + type: string + code: + type: integer + format: int32 + message: + type: string + details: type: array items: type: object properties: - client_id: + type_url: type: string - title: client identifier - client_state: - title: client state - type: object - properties: - type_url: - type: string - description: >- - A URL/resource name that uniquely identifies the - type of the serialized + description: >- + A URL/resource name that uniquely identifies the type of + the serialized - protocol buffer message. This string must contain at - least + protocol buffer message. This string must contain at + least - one "/" character. The last segment of the URL's - path must represent + one "/" character. The last segment of the URL's path + must represent - the fully qualified name of the type (as in + the fully qualified name of the type (as in - `path/google.protobuf.Duration`). The name should be - in a canonical form + `path/google.protobuf.Duration`). The name should be in + a canonical form - (e.g., leading "." is not accepted). + (e.g., leading "." is not accepted). - In practice, teams usually precompile into the - binary all types that they + In practice, teams usually precompile into the binary + all types that they - expect it to use in the context of Any. However, for - URLs which use the + expect it to use in the context of Any. However, for + URLs which use the - scheme `http`, `https`, or no scheme, one can - optionally set up a type + scheme `http`, `https`, or no scheme, one can optionally + set up a type - server that maps type URLs to message definitions as - follows: + server that maps type URLs to message definitions as + follows: - * If no scheme is provided, `https` is assumed. + * If no scheme is provided, `https` is assumed. - * An HTTP GET on the URL must yield a - [google.protobuf.Type][] - value in binary format, or produce an error. - * Applications are allowed to cache lookup results - based on the - URL, or have them precompiled into a binary to avoid any - lookup. Therefore, binary compatibility needs to be preserved - on changes to types. (Use versioned type names to manage - breaking changes.) + * An HTTP GET on the URL must yield a + [google.protobuf.Type][] + value in binary format, or produce an error. + * Applications are allowed to cache lookup results based + on the + URL, or have them precompiled into a binary to avoid any + lookup. Therefore, binary compatibility needs to be preserved + on changes to types. (Use versioned type names to manage + breaking changes.) - Note: this functionality is not currently available - in the official + Note: this functionality is not currently available in + the official - protobuf release, and it is not used for type URLs - beginning with + protobuf release, and it is not used for type URLs + beginning with - type.googleapis.com. + type.googleapis.com. - Schemes other than `http`, `https` (or the empty - scheme) might be + Schemes other than `http`, `https` (or the empty scheme) + might be - used with implementation specific semantics. - value: - type: string - format: byte - description: >- - Must be a valid serialized protocol buffer of the - above specified type. + used with implementation specific semantics. + value: + type: string + format: byte description: >- - `Any` contains an arbitrary serialized protocol buffer - message along with a - - URL that describes the type of the serialized message. - - - Protobuf library provides support to pack/unpack Any - values in the form - - of utility functions or additional generated methods of - the Any type. + Must be a valid serialized protocol buffer of the above + specified type. + description: >- + `Any` contains an arbitrary serialized protocol buffer + message along with a + URL that describes the type of the serialized message. - Example 1: Pack and unpack a message in C++. - Foo foo = ...; - Any any; - any.PackFrom(foo); - ... - if (any.UnpackTo(&foo)) { - ... - } + Protobuf library provides support to pack/unpack Any values + in the form - Example 2: Pack and unpack a message in Java. + of utility functions or additional generated methods of the + Any type. - Foo foo = ...; - Any any = Any.pack(foo); - ... - if (any.is(Foo.class)) { - foo = any.unpack(Foo.class); - } - Example 3: Pack and unpack a message in Python. + Example 1: Pack and unpack a message in C++. - foo = Foo(...) - any = Any() - any.Pack(foo) - ... - if any.Is(Foo.DESCRIPTOR): - any.Unpack(foo) - ... + Foo foo = ...; + Any any; + any.PackFrom(foo); + ... + if (any.UnpackTo(&foo)) { + ... + } - Example 4: Pack and unpack a message in Go + Example 2: Pack and unpack a message in Java. - foo := &pb.Foo{...} - any, err := ptypes.MarshalAny(foo) - ... - foo := &pb.Foo{} - if err := ptypes.UnmarshalAny(any, foo); err != nil { - ... - } + Foo foo = ...; + Any any = Any.pack(foo); + ... + if (any.is(Foo.class)) { + foo = any.unpack(Foo.class); + } - The pack methods provided by protobuf library will by - default use + Example 3: Pack and unpack a message in Python. - 'type.googleapis.com/full.type.name' as the type URL and - the unpack + foo = Foo(...) + any = Any() + any.Pack(foo) + ... + if any.Is(Foo.DESCRIPTOR): + any.Unpack(foo) + ... - methods only use the fully qualified type name after the - last '/' + Example 4: Pack and unpack a message in Go - in the type URL, for example "foo.bar.com/x/y.z" will - yield type + foo := &pb.Foo{...} + any, err := ptypes.MarshalAny(foo) + ... + foo := &pb.Foo{} + if err := ptypes.UnmarshalAny(any, foo); err != nil { + ... + } - name "y.z". + The pack methods provided by protobuf library will by + default use + 'type.googleapis.com/full.type.name' as the type URL and the + unpack + methods only use the fully qualified type name after the + last '/' - JSON + in the type URL, for example "foo.bar.com/x/y.z" will yield + type - ==== + name "y.z". - The JSON representation of an `Any` value uses the - regular - representation of the deserialized, embedded message, - with an - additional field `@type` which contains the type URL. - Example: + JSON - package google.profile; - message Person { - string first_name = 1; - string last_name = 2; - } + ==== - { - "@type": "type.googleapis.com/google.profile.Person", - "firstName": , - "lastName": - } + The JSON representation of an `Any` value uses the regular - If the embedded message type is well-known and has a - custom JSON + representation of the deserialized, embedded message, with + an - representation, that representation will be embedded - adding a field + additional field `@type` which contains the type URL. + Example: - `value` which holds the custom JSON in addition to the - `@type` + package google.profile; + message Person { + string first_name = 1; + string last_name = 2; + } - field. Example (for message - [google.protobuf.Duration][]): + { + "@type": "type.googleapis.com/google.profile.Person", + "firstName": , + "lastName": + } - { - "@type": "type.googleapis.com/google.protobuf.Duration", - "value": "1.212s" - } - description: >- - IdentifiedClientState defines a client state with an - additional client + If the embedded message type is well-known and has a custom + JSON - identifier field. - description: list of stored ClientStates of the chain. - pagination: - title: pagination response - type: object - properties: - next_key: - type: string - format: byte - title: |- - next_key is the key to be passed to PageRequest.key to - query the next page most efficiently - total: - type: string - format: uint64 - title: >- - total is total number of results available if - PageRequest.count_total + representation, that representation will be embedded adding + a field - was set, its value is undefined otherwise - description: >- - PageResponse is to be embedded in gRPC response messages where - the + `value` which holds the custom JSON in addition to the + `@type` - corresponding request message has used PageRequest. + field. Example (for message [google.protobuf.Duration][]): - message SomeResponse { - repeated Bar results = 1; - PageResponse page = 2; - } + { + "@type": "type.googleapis.com/google.protobuf.Duration", + "value": "1.212s" + } + tags: + - Query + '/cosmos/upgrade/v1beta1/upgraded_consensus_state/{last_height}': + get: + summary: |- + UpgradedConsensusState queries the consensus state that will serve + as a trusted kernel for the next version of this chain. It will only be + stored at the last height of this chain. + UpgradedConsensusState RPC not supported with legacy querier + operationId: UpgradedConsensusState + responses: + '200': + description: A successful response. + schema: + type: object + properties: + upgraded_consensus_state: + type: string + format: byte description: >- - QueryClientStatesResponse is the response type for the - Query/ClientStates RPC + QueryUpgradedConsensusStateResponse is the response type for the + Query/UpgradedConsensusState - method. + RPC method. default: - description: An unexpected error response. + description: An unexpected error response schema: type: object properties: @@ -22730,3779 +24453,3482 @@ paths: "value": "1.212s" } parameters: - - name: pagination.key + - name: last_height description: |- - key is a value returned in PageResponse.next_key to begin - querying the next page most efficiently. Only one of offset or key - should be set. - in: query - required: false - type: string - format: byte - - name: pagination.offset - description: >- - offset is a numeric offset that can be used when key is unavailable. - - It is less efficient than using key. Only one of offset or key - should - - be set. - in: query - required: false + last height of the current chain must be sent in request + as this is the height under which next consensus state is stored + in: path + required: true type: string - format: uint64 - - name: pagination.limit - description: >- - limit is the total number of results to be returned in the result - page. - - If left empty it will default to a value to be set by each app. - in: query - required: false - type: string - format: uint64 - - name: pagination.count_total - description: >- - count_total is set to true to indicate that the result set should - include - - a count of the total number of items available for pagination in - UIs. - - count_total is only respected when offset is used. It is ignored - when key - - is set. - in: query - required: false - type: boolean - tags: - - Query - '/ibc/client/v1beta1/client_states/{client_id}': - get: - summary: ClientState queries an IBC light client. - operationId: ClientState - responses: - '200': - description: A successful response. - schema: - type: object - properties: - client_state: - title: client state associated with the request identifier - type: object - properties: - type_url: - type: string - description: >- - A URL/resource name that uniquely identifies the type of - the serialized - - protocol buffer message. This string must contain at least - - one "/" character. The last segment of the URL's path must - represent - - the fully qualified name of the type (as in - - `path/google.protobuf.Duration`). The name should be in a - canonical form - - (e.g., leading "." is not accepted). - - - In practice, teams usually precompile into the binary all - types that they - - expect it to use in the context of Any. However, for URLs - which use the - - scheme `http`, `https`, or no scheme, one can optionally - set up a type - - server that maps type URLs to message definitions as - follows: - - - * If no scheme is provided, `https` is assumed. - - * An HTTP GET on the URL must yield a - [google.protobuf.Type][] - value in binary format, or produce an error. - * Applications are allowed to cache lookup results based - on the - URL, or have them precompiled into a binary to avoid any - lookup. Therefore, binary compatibility needs to be preserved - on changes to types. (Use versioned type names to manage - breaking changes.) - - Note: this functionality is not currently available in the - official - - protobuf release, and it is not used for type URLs - beginning with - - type.googleapis.com. - - - Schemes other than `http`, `https` (or the empty scheme) - might be - - used with implementation specific semantics. - value: - type: string - format: byte - description: >- - Must be a valid serialized protocol buffer of the above - specified type. - description: >- - `Any` contains an arbitrary serialized protocol buffer message - along with a - - URL that describes the type of the serialized message. - - - Protobuf library provides support to pack/unpack Any values in - the form - - of utility functions or additional generated methods of the - Any type. - - - Example 1: Pack and unpack a message in C++. - - Foo foo = ...; - Any any; - any.PackFrom(foo); - ... - if (any.UnpackTo(&foo)) { - ... - } - - Example 2: Pack and unpack a message in Java. - - Foo foo = ...; - Any any = Any.pack(foo); - ... - if (any.is(Foo.class)) { - foo = any.unpack(Foo.class); - } - - Example 3: Pack and unpack a message in Python. - - foo = Foo(...) - any = Any() - any.Pack(foo) - ... - if any.Is(Foo.DESCRIPTOR): - any.Unpack(foo) - ... - - Example 4: Pack and unpack a message in Go - - foo := &pb.Foo{...} - any, err := ptypes.MarshalAny(foo) - ... - foo := &pb.Foo{} - if err := ptypes.UnmarshalAny(any, foo); err != nil { - ... - } - - The pack methods provided by protobuf library will by default - use - - 'type.googleapis.com/full.type.name' as the type URL and the - unpack - - methods only use the fully qualified type name after the last - '/' - - in the type URL, for example "foo.bar.com/x/y.z" will yield - type - - name "y.z". - - - - JSON - - ==== - - The JSON representation of an `Any` value uses the regular - - representation of the deserialized, embedded message, with an - - additional field `@type` which contains the type URL. Example: - - package google.profile; - message Person { - string first_name = 1; - string last_name = 2; - } - - { - "@type": "type.googleapis.com/google.profile.Person", - "firstName": , - "lastName": - } - - If the embedded message type is well-known and has a custom - JSON - - representation, that representation will be embedded adding a - field - - `value` which holds the custom JSON in addition to the `@type` - - field. Example (for message [google.protobuf.Duration][]): - - { - "@type": "type.googleapis.com/google.protobuf.Duration", - "value": "1.212s" - } - proof: - type: string - format: byte - title: merkle proof of existence - proof_height: - title: height at which the proof was retrieved - type: object - properties: - version_number: - type: string - format: uint64 - title: the version that the client is currently on - version_height: - type: string - format: uint64 - title: the height within the given version - description: >- - Normally the VersionHeight is incremented at each height while - keeping version - - number the same However some consensus algorithms may choose - to reset the - - height in certain conditions e.g. hard forks, state-machine - breaking changes - - In these cases, the version number is incremented so that - height continues to - - be monitonically increasing even as the VersionHeight gets - reset - description: >- - QueryClientStateResponse is the response type for the - Query/ClientState RPC - - method. Besides the client state, it includes a proof and the - height from - - which the proof was retrieved. - default: - description: An unexpected error response. - schema: - type: object - properties: - error: - type: string - code: - type: integer - format: int32 - message: - type: string - details: - type: array - items: - type: object - properties: - type_url: - type: string - description: >- - A URL/resource name that uniquely identifies the type of - the serialized - - protocol buffer message. This string must contain at - least - - one "/" character. The last segment of the URL's path - must represent - - the fully qualified name of the type (as in - - `path/google.protobuf.Duration`). The name should be in - a canonical form - - (e.g., leading "." is not accepted). - - - In practice, teams usually precompile into the binary - all types that they - - expect it to use in the context of Any. However, for - URLs which use the - - scheme `http`, `https`, or no scheme, one can optionally - set up a type - - server that maps type URLs to message definitions as - follows: - - - * If no scheme is provided, `https` is assumed. - - * An HTTP GET on the URL must yield a - [google.protobuf.Type][] - value in binary format, or produce an error. - * Applications are allowed to cache lookup results based - on the - URL, or have them precompiled into a binary to avoid any - lookup. Therefore, binary compatibility needs to be preserved - on changes to types. (Use versioned type names to manage - breaking changes.) - - Note: this functionality is not currently available in - the official - - protobuf release, and it is not used for type URLs - beginning with - - type.googleapis.com. - - - Schemes other than `http`, `https` (or the empty scheme) - might be - - used with implementation specific semantics. - value: - type: string - format: byte - description: >- - Must be a valid serialized protocol buffer of the above - specified type. - description: >- - `Any` contains an arbitrary serialized protocol buffer - message along with a - - URL that describes the type of the serialized message. - - - Protobuf library provides support to pack/unpack Any values - in the form - - of utility functions or additional generated methods of the - Any type. - - - Example 1: Pack and unpack a message in C++. - - Foo foo = ...; - Any any; - any.PackFrom(foo); - ... - if (any.UnpackTo(&foo)) { - ... - } - - Example 2: Pack and unpack a message in Java. - - Foo foo = ...; - Any any = Any.pack(foo); - ... - if (any.is(Foo.class)) { - foo = any.unpack(Foo.class); - } - - Example 3: Pack and unpack a message in Python. - - foo = Foo(...) - any = Any() - any.Pack(foo) - ... - if any.Is(Foo.DESCRIPTOR): - any.Unpack(foo) - ... - - Example 4: Pack and unpack a message in Go - - foo := &pb.Foo{...} - any, err := ptypes.MarshalAny(foo) - ... - foo := &pb.Foo{} - if err := ptypes.UnmarshalAny(any, foo); err != nil { - ... - } - - The pack methods provided by protobuf library will by - default use - - 'type.googleapis.com/full.type.name' as the type URL and the - unpack - - methods only use the fully qualified type name after the - last '/' - - in the type URL, for example "foo.bar.com/x/y.z" will yield - type - - name "y.z". - - - - JSON - - ==== - - The JSON representation of an `Any` value uses the regular - - representation of the deserialized, embedded message, with - an - - additional field `@type` which contains the type URL. - Example: - - package google.profile; - message Person { - string first_name = 1; - string last_name = 2; - } - - { - "@type": "type.googleapis.com/google.profile.Person", - "firstName": , - "lastName": - } - - If the embedded message type is well-known and has a custom - JSON - - representation, that representation will be embedded adding - a field - - `value` which holds the custom JSON in addition to the - `@type` - - field. Example (for message [google.protobuf.Duration][]): - - { - "@type": "type.googleapis.com/google.protobuf.Duration", - "value": "1.212s" - } - parameters: - - name: client_id - description: client state unique identifier - in: path - required: true - type: string - tags: - - Query - '/ibc/client/v1beta1/consensus_states/{client_id}': - get: - summary: |- - ConsensusStates queries all the consensus state associated with a given - client. - operationId: ConsensusStates - responses: - '200': - description: A successful response. - schema: - type: object - properties: - consensus_states: - type: array - items: - type: object - properties: - height: - title: consensus state height - type: object - properties: - version_number: - type: string - format: uint64 - title: the version that the client is currently on - version_height: - type: string - format: uint64 - title: the height within the given version - description: >- - Normally the VersionHeight is incremented at each height - while keeping version - - number the same However some consensus algorithms may - choose to reset the - - height in certain conditions e.g. hard forks, - state-machine breaking changes - - In these cases, the version number is incremented so - that height continues to - - be monitonically increasing even as the VersionHeight - gets reset - consensus_state: - title: consensus state - type: object - properties: - type_url: - type: string - description: >- - A URL/resource name that uniquely identifies the - type of the serialized - - protocol buffer message. This string must contain at - least - - one "/" character. The last segment of the URL's - path must represent - - the fully qualified name of the type (as in - - `path/google.protobuf.Duration`). The name should be - in a canonical form - - (e.g., leading "." is not accepted). - - - In practice, teams usually precompile into the - binary all types that they - - expect it to use in the context of Any. However, for - URLs which use the - - scheme `http`, `https`, or no scheme, one can - optionally set up a type - - server that maps type URLs to message definitions as - follows: - - - * If no scheme is provided, `https` is assumed. - - * An HTTP GET on the URL must yield a - [google.protobuf.Type][] - value in binary format, or produce an error. - * Applications are allowed to cache lookup results - based on the - URL, or have them precompiled into a binary to avoid any - lookup. Therefore, binary compatibility needs to be preserved - on changes to types. (Use versioned type names to manage - breaking changes.) - - Note: this functionality is not currently available - in the official - - protobuf release, and it is not used for type URLs - beginning with - - type.googleapis.com. - - - Schemes other than `http`, `https` (or the empty - scheme) might be - - used with implementation specific semantics. - value: - type: string - format: byte - description: >- - Must be a valid serialized protocol buffer of the - above specified type. - description: >- - `Any` contains an arbitrary serialized protocol buffer - message along with a - - URL that describes the type of the serialized message. - - - Protobuf library provides support to pack/unpack Any - values in the form - - of utility functions or additional generated methods of - the Any type. - - - Example 1: Pack and unpack a message in C++. - - Foo foo = ...; - Any any; - any.PackFrom(foo); - ... - if (any.UnpackTo(&foo)) { - ... - } - - Example 2: Pack and unpack a message in Java. - - Foo foo = ...; - Any any = Any.pack(foo); - ... - if (any.is(Foo.class)) { - foo = any.unpack(Foo.class); - } - - Example 3: Pack and unpack a message in Python. - - foo = Foo(...) - any = Any() - any.Pack(foo) - ... - if any.Is(Foo.DESCRIPTOR): - any.Unpack(foo) - ... - - Example 4: Pack and unpack a message in Go - - foo := &pb.Foo{...} - any, err := ptypes.MarshalAny(foo) - ... - foo := &pb.Foo{} - if err := ptypes.UnmarshalAny(any, foo); err != nil { - ... - } - - The pack methods provided by protobuf library will by - default use - - 'type.googleapis.com/full.type.name' as the type URL and - the unpack - - methods only use the fully qualified type name after the - last '/' - - in the type URL, for example "foo.bar.com/x/y.z" will - yield type - - name "y.z". - - - - JSON - - ==== - - The JSON representation of an `Any` value uses the - regular - - representation of the deserialized, embedded message, - with an - - additional field `@type` which contains the type URL. - Example: - - package google.profile; - message Person { - string first_name = 1; - string last_name = 2; - } - - { - "@type": "type.googleapis.com/google.profile.Person", - "firstName": , - "lastName": - } - - If the embedded message type is well-known and has a - custom JSON - - representation, that representation will be embedded - adding a field - - `value` which holds the custom JSON in addition to the - `@type` - - field. Example (for message - [google.protobuf.Duration][]): - - { - "@type": "type.googleapis.com/google.protobuf.Duration", - "value": "1.212s" - } - description: >- - ConsensusStateWithHeight defines a consensus state with an - additional height field. - title: consensus states associated with the identifier - pagination: - title: pagination response - type: object - properties: - next_key: - type: string - format: byte - title: |- - next_key is the key to be passed to PageRequest.key to - query the next page most efficiently - total: - type: string - format: uint64 - title: >- - total is total number of results available if - PageRequest.count_total - - was set, its value is undefined otherwise - description: >- - PageResponse is to be embedded in gRPC response messages where - the - - corresponding request message has used PageRequest. - - message SomeResponse { - repeated Bar results = 1; - PageResponse page = 2; - } - title: |- - QueryConsensusStatesResponse is the response type for the - Query/ConsensusStates RPC method - default: - description: An unexpected error response. - schema: - type: object - properties: - error: - type: string - code: - type: integer - format: int32 - message: - type: string - details: - type: array - items: - type: object - properties: - type_url: - type: string - description: >- - A URL/resource name that uniquely identifies the type of - the serialized - - protocol buffer message. This string must contain at - least - - one "/" character. The last segment of the URL's path - must represent - - the fully qualified name of the type (as in - - `path/google.protobuf.Duration`). The name should be in - a canonical form - - (e.g., leading "." is not accepted). - - - In practice, teams usually precompile into the binary - all types that they - - expect it to use in the context of Any. However, for - URLs which use the - - scheme `http`, `https`, or no scheme, one can optionally - set up a type - - server that maps type URLs to message definitions as - follows: - - - * If no scheme is provided, `https` is assumed. - - * An HTTP GET on the URL must yield a - [google.protobuf.Type][] - value in binary format, or produce an error. - * Applications are allowed to cache lookup results based - on the - URL, or have them precompiled into a binary to avoid any - lookup. Therefore, binary compatibility needs to be preserved - on changes to types. (Use versioned type names to manage - breaking changes.) - - Note: this functionality is not currently available in - the official - - protobuf release, and it is not used for type URLs - beginning with - - type.googleapis.com. - - - Schemes other than `http`, `https` (or the empty scheme) - might be - - used with implementation specific semantics. - value: - type: string - format: byte - description: >- - Must be a valid serialized protocol buffer of the above - specified type. - description: >- - `Any` contains an arbitrary serialized protocol buffer - message along with a - - URL that describes the type of the serialized message. - - - Protobuf library provides support to pack/unpack Any values - in the form - - of utility functions or additional generated methods of the - Any type. - - - Example 1: Pack and unpack a message in C++. - - Foo foo = ...; - Any any; - any.PackFrom(foo); - ... - if (any.UnpackTo(&foo)) { - ... - } - - Example 2: Pack and unpack a message in Java. - - Foo foo = ...; - Any any = Any.pack(foo); - ... - if (any.is(Foo.class)) { - foo = any.unpack(Foo.class); - } - - Example 3: Pack and unpack a message in Python. - - foo = Foo(...) - any = Any() - any.Pack(foo) - ... - if any.Is(Foo.DESCRIPTOR): - any.Unpack(foo) - ... - - Example 4: Pack and unpack a message in Go - - foo := &pb.Foo{...} - any, err := ptypes.MarshalAny(foo) - ... - foo := &pb.Foo{} - if err := ptypes.UnmarshalAny(any, foo); err != nil { - ... - } - - The pack methods provided by protobuf library will by - default use - - 'type.googleapis.com/full.type.name' as the type URL and the - unpack - - methods only use the fully qualified type name after the - last '/' - - in the type URL, for example "foo.bar.com/x/y.z" will yield - type - - name "y.z". - - - - JSON - - ==== - - The JSON representation of an `Any` value uses the regular - - representation of the deserialized, embedded message, with - an - - additional field `@type` which contains the type URL. - Example: - - package google.profile; - message Person { - string first_name = 1; - string last_name = 2; - } - - { - "@type": "type.googleapis.com/google.profile.Person", - "firstName": , - "lastName": - } - - If the embedded message type is well-known and has a custom - JSON - - representation, that representation will be embedded adding - a field - - `value` which holds the custom JSON in addition to the - `@type` - - field. Example (for message [google.protobuf.Duration][]): - - { - "@type": "type.googleapis.com/google.protobuf.Duration", - "value": "1.212s" - } - parameters: - - name: client_id - description: client identifier - in: path - required: true - type: string - - name: pagination.key - description: |- - key is a value returned in PageResponse.next_key to begin - querying the next page most efficiently. Only one of offset or key - should be set. - in: query - required: false - type: string - format: byte - - name: pagination.offset - description: >- - offset is a numeric offset that can be used when key is unavailable. - - It is less efficient than using key. Only one of offset or key - should - - be set. - in: query - required: false - type: string - format: uint64 - - name: pagination.limit - description: >- - limit is the total number of results to be returned in the result - page. - - If left empty it will default to a value to be set by each app. - in: query - required: false - type: string - format: uint64 - - name: pagination.count_total - description: >- - count_total is set to true to indicate that the result set should - include - - a count of the total number of items available for pagination in - UIs. - - count_total is only respected when offset is used. It is ignored - when key - - is set. - in: query - required: false - type: boolean - tags: - - Query - '/ibc/client/v1beta1/consensus_states/{client_id}/version/{version_number}/height/{version_height}': - get: - summary: >- - ConsensusState queries a consensus state associated with a client state - at - - a given height. - operationId: ConsensusState - responses: - '200': - description: A successful response. - schema: - type: object - properties: - consensus_state: - title: >- - consensus state associated with the client identifier at the - given height - type: object - properties: - type_url: - type: string - description: >- - A URL/resource name that uniquely identifies the type of - the serialized - - protocol buffer message. This string must contain at least - - one "/" character. The last segment of the URL's path must - represent - - the fully qualified name of the type (as in - - `path/google.protobuf.Duration`). The name should be in a - canonical form - - (e.g., leading "." is not accepted). - - - In practice, teams usually precompile into the binary all - types that they - - expect it to use in the context of Any. However, for URLs - which use the - - scheme `http`, `https`, or no scheme, one can optionally - set up a type - - server that maps type URLs to message definitions as - follows: - - - * If no scheme is provided, `https` is assumed. - - * An HTTP GET on the URL must yield a - [google.protobuf.Type][] - value in binary format, or produce an error. - * Applications are allowed to cache lookup results based - on the - URL, or have them precompiled into a binary to avoid any - lookup. Therefore, binary compatibility needs to be preserved - on changes to types. (Use versioned type names to manage - breaking changes.) - - Note: this functionality is not currently available in the - official - - protobuf release, and it is not used for type URLs - beginning with - - type.googleapis.com. - - - Schemes other than `http`, `https` (or the empty scheme) - might be - - used with implementation specific semantics. - value: - type: string - format: byte - description: >- - Must be a valid serialized protocol buffer of the above - specified type. - description: >- - `Any` contains an arbitrary serialized protocol buffer message - along with a - - URL that describes the type of the serialized message. - - - Protobuf library provides support to pack/unpack Any values in - the form - - of utility functions or additional generated methods of the - Any type. - - - Example 1: Pack and unpack a message in C++. - - Foo foo = ...; - Any any; - any.PackFrom(foo); - ... - if (any.UnpackTo(&foo)) { - ... - } - - Example 2: Pack and unpack a message in Java. - - Foo foo = ...; - Any any = Any.pack(foo); - ... - if (any.is(Foo.class)) { - foo = any.unpack(Foo.class); - } - - Example 3: Pack and unpack a message in Python. - - foo = Foo(...) - any = Any() - any.Pack(foo) - ... - if any.Is(Foo.DESCRIPTOR): - any.Unpack(foo) - ... - - Example 4: Pack and unpack a message in Go - - foo := &pb.Foo{...} - any, err := ptypes.MarshalAny(foo) - ... - foo := &pb.Foo{} - if err := ptypes.UnmarshalAny(any, foo); err != nil { - ... - } - - The pack methods provided by protobuf library will by default - use - - 'type.googleapis.com/full.type.name' as the type URL and the - unpack - - methods only use the fully qualified type name after the last - '/' - - in the type URL, for example "foo.bar.com/x/y.z" will yield - type - - name "y.z". - - - - JSON - - ==== - - The JSON representation of an `Any` value uses the regular - - representation of the deserialized, embedded message, with an - - additional field `@type` which contains the type URL. Example: - - package google.profile; - message Person { - string first_name = 1; - string last_name = 2; - } - - { - "@type": "type.googleapis.com/google.profile.Person", - "firstName": , - "lastName": - } - - If the embedded message type is well-known and has a custom - JSON - - representation, that representation will be embedded adding a - field - - `value` which holds the custom JSON in addition to the `@type` - - field. Example (for message [google.protobuf.Duration][]): - - { - "@type": "type.googleapis.com/google.protobuf.Duration", - "value": "1.212s" - } - proof: - type: string - format: byte - title: merkle proof of existence - proof_height: - title: height at which the proof was retrieved - type: object - properties: - version_number: - type: string - format: uint64 - title: the version that the client is currently on - version_height: - type: string - format: uint64 - title: the height within the given version - description: >- - Normally the VersionHeight is incremented at each height while - keeping version - - number the same However some consensus algorithms may choose - to reset the - - height in certain conditions e.g. hard forks, state-machine - breaking changes - - In these cases, the version number is incremented so that - height continues to - - be monitonically increasing even as the VersionHeight gets - reset - title: >- - QueryConsensusStateResponse is the response type for the - Query/ConsensusState - - RPC method - default: - description: An unexpected error response. - schema: - type: object - properties: - error: - type: string - code: - type: integer - format: int32 - message: - type: string - details: - type: array - items: - type: object - properties: - type_url: - type: string - description: >- - A URL/resource name that uniquely identifies the type of - the serialized - - protocol buffer message. This string must contain at - least - - one "/" character. The last segment of the URL's path - must represent - - the fully qualified name of the type (as in - - `path/google.protobuf.Duration`). The name should be in - a canonical form - - (e.g., leading "." is not accepted). - - - In practice, teams usually precompile into the binary - all types that they - - expect it to use in the context of Any. However, for - URLs which use the - - scheme `http`, `https`, or no scheme, one can optionally - set up a type - - server that maps type URLs to message definitions as - follows: - - - * If no scheme is provided, `https` is assumed. - - * An HTTP GET on the URL must yield a - [google.protobuf.Type][] - value in binary format, or produce an error. - * Applications are allowed to cache lookup results based - on the - URL, or have them precompiled into a binary to avoid any - lookup. Therefore, binary compatibility needs to be preserved - on changes to types. (Use versioned type names to manage - breaking changes.) - - Note: this functionality is not currently available in - the official - - protobuf release, and it is not used for type URLs - beginning with - - type.googleapis.com. - - - Schemes other than `http`, `https` (or the empty scheme) - might be - - used with implementation specific semantics. - value: - type: string - format: byte - description: >- - Must be a valid serialized protocol buffer of the above - specified type. - description: >- - `Any` contains an arbitrary serialized protocol buffer - message along with a - - URL that describes the type of the serialized message. - - - Protobuf library provides support to pack/unpack Any values - in the form - - of utility functions or additional generated methods of the - Any type. - - - Example 1: Pack and unpack a message in C++. - - Foo foo = ...; - Any any; - any.PackFrom(foo); - ... - if (any.UnpackTo(&foo)) { - ... - } - - Example 2: Pack and unpack a message in Java. - - Foo foo = ...; - Any any = Any.pack(foo); - ... - if (any.is(Foo.class)) { - foo = any.unpack(Foo.class); - } - - Example 3: Pack and unpack a message in Python. - - foo = Foo(...) - any = Any() - any.Pack(foo) - ... - if any.Is(Foo.DESCRIPTOR): - any.Unpack(foo) - ... - - Example 4: Pack and unpack a message in Go - - foo := &pb.Foo{...} - any, err := ptypes.MarshalAny(foo) - ... - foo := &pb.Foo{} - if err := ptypes.UnmarshalAny(any, foo); err != nil { - ... - } - - The pack methods provided by protobuf library will by - default use - - 'type.googleapis.com/full.type.name' as the type URL and the - unpack - - methods only use the fully qualified type name after the - last '/' - - in the type URL, for example "foo.bar.com/x/y.z" will yield - type - - name "y.z". - - - - JSON - - ==== - - The JSON representation of an `Any` value uses the regular - - representation of the deserialized, embedded message, with - an - - additional field `@type` which contains the type URL. - Example: - - package google.profile; - message Person { - string first_name = 1; - string last_name = 2; - } - - { - "@type": "type.googleapis.com/google.profile.Person", - "firstName": , - "lastName": - } - - If the embedded message type is well-known and has a custom - JSON - - representation, that representation will be embedded adding - a field - - `value` which holds the custom JSON in addition to the - `@type` - - field. Example (for message [google.protobuf.Duration][]): - - { - "@type": "type.googleapis.com/google.protobuf.Duration", - "value": "1.212s" - } - parameters: - - name: client_id - description: client identifier - in: path - required: true - type: string - - name: version_number - description: consensus state version number - in: path - required: true - type: string - format: uint64 - - name: version_height - description: consensus state version height - in: path - required: true - type: string - format: uint64 - - name: latest_height - description: >- - latest_height overrrides the height field and queries the latest - stored - - ConsensusState. - in: query - required: false - type: boolean + format: int64 tags: - Query - '/ibc/connection/v1beta1/client_connections/{client_id}': - get: - summary: |- - ClientConnections queries the connection paths associated with a client - state. - operationId: ClientConnections - responses: - '200': - description: A successful response. - schema: +definitions: + akash.base.v1beta1.Attribute: + type: object + properties: + key: + type: string + value: + type: string + title: Attribute represents key value pair + akash.base.v1beta1.CPU: + type: object + properties: + units: + type: object + properties: + val: + type: string + format: byte + title: 'Unit stores cpu, memory and storage metrics' + attributes: + type: array + items: + type: object + properties: + key: + type: string + value: + type: string + title: Attribute represents key value pair + title: CPU stores resource units and cpu config attributes + akash.base.v1beta1.Endpoint: + type: object + properties: + kind: + type: string + enum: + - SHARED_HTTP + - RANDOM_PORT + default: SHARED_HTTP + description: |- + - SHARED_HTTP: Describes an endpoint that becomes a Kubernetes Ingress + - RANDOM_PORT: Describes an endpoint that becomes a Kubernetes NodePort + title: >- + This describes how the endpoint is implemented when the lease is + deployed + title: Endpoint describes a publicly accessible IP service + akash.base.v1beta1.Endpoint.Kind: + type: string + enum: + - SHARED_HTTP + - RANDOM_PORT + default: SHARED_HTTP + description: |- + - SHARED_HTTP: Describes an endpoint that becomes a Kubernetes Ingress + - RANDOM_PORT: Describes an endpoint that becomes a Kubernetes NodePort + title: This describes how the endpoint is implemented when the lease is deployed + akash.base.v1beta1.Memory: + type: object + properties: + quantity: + type: object + properties: + val: + type: string + format: byte + title: 'Unit stores cpu, memory and storage metrics' + attributes: + type: array + items: + type: object + properties: + key: + type: string + value: + type: string + title: Attribute represents key value pair + title: Memory stores resource quantity and memory attributes + akash.base.v1beta1.PlacementRequirements: + type: object + properties: + signed_by: + title: SignedBy list of keys that tenants expect to have signatures from + type: object + properties: + all_of: + type: array + items: + type: string + title: all_of all keys in this list must have signed attributes + any_of: + type: array + items: + type: string + title: >- + any_of at least of of the keys from the list must have signed + attributes + attributes: + type: array + items: + type: object + properties: + key: + type: string + value: + type: string + title: Attribute represents key value pair + title: Attribute list of attributes tenant expects from the provider + title: PlacementRequirements + akash.base.v1beta1.ResourceUnits: + type: object + properties: + cpu: + type: object + properties: + units: type: object properties: - connection_paths: - type: array - items: + val: + type: string + format: byte + title: 'Unit stores cpu, memory and storage metrics' + attributes: + type: array + items: + type: object + properties: + key: + type: string + value: type: string - description: slice of all the connection paths associated with a client. - proof: + title: Attribute represents key value pair + title: CPU stores resource units and cpu config attributes + memory: + type: object + properties: + quantity: + type: object + properties: + val: type: string format: byte - title: merkle proof of existence - proof_height: - title: height at which the proof was generated - type: object - properties: - version_number: - type: string - format: uint64 - title: the version that the client is currently on - version_height: - type: string - format: uint64 - title: the height within the given version - description: >- - Normally the VersionHeight is incremented at each height while - keeping version + title: 'Unit stores cpu, memory and storage metrics' + attributes: + type: array + items: + type: object + properties: + key: + type: string + value: + type: string + title: Attribute represents key value pair + title: Memory stores resource quantity and memory attributes + storage: + type: object + properties: + quantity: + type: object + properties: + val: + type: string + format: byte + title: 'Unit stores cpu, memory and storage metrics' + attributes: + type: array + items: + type: object + properties: + key: + type: string + value: + type: string + title: Attribute represents key value pair + title: Storage stores resource quantity and storage attributes + endpoints: + type: array + items: + type: object + properties: + kind: + type: string + enum: + - SHARED_HTTP + - RANDOM_PORT + default: SHARED_HTTP + description: >- + - SHARED_HTTP: Describes an endpoint that becomes a Kubernetes + Ingress + - RANDOM_PORT: Describes an endpoint that becomes a Kubernetes NodePort + title: >- + This describes how the endpoint is implemented when the lease is + deployed + title: Endpoint describes a publicly accessible IP service + title: >- + ResourceUnits describes all available resources types for deployment/node + etc - number the same However some consensus algorithms may choose - to reset the + if field is nil resource is not present in the given data-structure + akash.base.v1beta1.ResourceValue: + type: object + properties: + val: + type: string + format: byte + title: 'Unit stores cpu, memory and storage metrics' + akash.base.v1beta1.SignedBy: + type: object + properties: + all_of: + type: array + items: + type: string + title: all_of all keys in this list must have signed attributes + any_of: + type: array + items: + type: string + title: >- + any_of at least of of the keys from the list must have signed + attributes + title: >- + SignedBy represents validation accounts that tenant expects signatures for + provider attributes - height in certain conditions e.g. hard forks, state-machine - breaking changes + AllOf has precedence i.e. if there is at least one entry AnyOf is ignored + regardless to how many - In these cases, the version number is incremented so that - height continues to + entries there - be monitonically increasing even as the VersionHeight gets - reset - title: |- - QueryClientConnectionsResponse is the response type for the - Query/ClientConnections RPC method - default: - description: An unexpected error response. - schema: + this behaviour to be discussed + akash.base.v1beta1.Storage: + type: object + properties: + quantity: + type: object + properties: + val: + type: string + format: byte + title: 'Unit stores cpu, memory and storage metrics' + attributes: + type: array + items: + type: object + properties: + key: + type: string + value: + type: string + title: Attribute represents key value pair + title: Storage stores resource quantity and storage attributes + akash.deployment.v1beta1.Deployment: + type: object + properties: + deployment_id: + type: object + properties: + owner: + type: string + dseq: + type: string + format: uint64 + title: DeploymentID stores owner and sequence number + state: + type: string + enum: + - invalid + - active + - closed + default: invalid + description: >- + - invalid: Prefix should start with 0 in enum. So declaring dummy + state + - active: DeploymentActive denotes state for deployment active + - closed: DeploymentClosed denotes state for deployment closed + title: State is an enum which refers to state of deployment + version: + type: string + format: byte + created_at: + type: string + format: int64 + title: 'Deployment stores deploymentID, state and version details' + akash.deployment.v1beta1.Deployment.State: + type: string + enum: + - invalid + - active + - closed + default: invalid + description: |- + - invalid: Prefix should start with 0 in enum. So declaring dummy state + - active: DeploymentActive denotes state for deployment active + - closed: DeploymentClosed denotes state for deployment closed + title: State is an enum which refers to state of deployment + akash.deployment.v1beta1.DeploymentFilters: + type: object + properties: + owner: + type: string + dseq: + type: string + format: uint64 + state: + type: string + title: DeploymentFilters defines filters used to filter deployments + akash.deployment.v1beta1.DeploymentID: + type: object + properties: + owner: + type: string + dseq: + type: string + format: uint64 + title: DeploymentID stores owner and sequence number + akash.deployment.v1beta1.Group: + type: object + properties: + group_id: + type: object + properties: + owner: + type: string + dseq: + type: string + format: uint64 + gseq: + type: integer + format: int64 + title: >- + GroupID stores owner, deployment sequence number and group sequence + number + state: + type: string + enum: + - invalid + - open + - paused + - insufficient_funds + - closed + default: invalid + description: >- + - invalid: Prefix should start with 0 in enum. So declaring dummy + state + - open: GroupOpen denotes state for group open + - paused: GroupOrdered denotes state for group ordered + - insufficient_funds: GroupInsufficientFunds denotes state for group insufficient_funds + - closed: GroupClosed denotes state for group closed + title: State is an enum which refers to state of group + group_spec: + type: object + properties: + name: + type: string + requirements: type: object properties: - error: - type: string - code: - type: integer - format: int32 - message: - type: string - details: + signed_by: + title: >- + SignedBy list of keys that tenants expect to have signatures + from + type: object + properties: + all_of: + type: array + items: + type: string + title: all_of all keys in this list must have signed attributes + any_of: + type: array + items: + type: string + title: >- + any_of at least of of the keys from the list must have + signed attributes + attributes: type: array items: type: object properties: - type_url: + key: type: string - description: >- - A URL/resource name that uniquely identifies the type of - the serialized - - protocol buffer message. This string must contain at - least - - one "/" character. The last segment of the URL's path - must represent - - the fully qualified name of the type (as in - - `path/google.protobuf.Duration`). The name should be in - a canonical form - - (e.g., leading "." is not accepted). - - - In practice, teams usually precompile into the binary - all types that they - - expect it to use in the context of Any. However, for - URLs which use the - - scheme `http`, `https`, or no scheme, one can optionally - set up a type - - server that maps type URLs to message definitions as - follows: - - - * If no scheme is provided, `https` is assumed. - - * An HTTP GET on the URL must yield a - [google.protobuf.Type][] - value in binary format, or produce an error. - * Applications are allowed to cache lookup results based - on the - URL, or have them precompiled into a binary to avoid any - lookup. Therefore, binary compatibility needs to be preserved - on changes to types. (Use versioned type names to manage - breaking changes.) - - Note: this functionality is not currently available in - the official - - protobuf release, and it is not used for type URLs - beginning with - - type.googleapis.com. - - - Schemes other than `http`, `https` (or the empty scheme) - might be + value: + type: string + title: Attribute represents key value pair + title: Attribute list of attributes tenant expects from the provider + title: PlacementRequirements + resources: + type: array + items: + type: object + properties: + resources: + type: object + properties: + cpu: + type: object + properties: + units: + type: object + properties: + val: + type: string + format: byte + title: 'Unit stores cpu, memory and storage metrics' + attributes: + type: array + items: + type: object + properties: + key: + type: string + value: + type: string + title: Attribute represents key value pair + title: CPU stores resource units and cpu config attributes + memory: + type: object + properties: + quantity: + type: object + properties: + val: + type: string + format: byte + title: 'Unit stores cpu, memory and storage metrics' + attributes: + type: array + items: + type: object + properties: + key: + type: string + value: + type: string + title: Attribute represents key value pair + title: Memory stores resource quantity and memory attributes + storage: + type: object + properties: + quantity: + type: object + properties: + val: + type: string + format: byte + title: 'Unit stores cpu, memory and storage metrics' + attributes: + type: array + items: + type: object + properties: + key: + type: string + value: + type: string + title: Attribute represents key value pair + title: Storage stores resource quantity and storage attributes + endpoints: + type: array + items: + type: object + properties: + kind: + type: string + enum: + - SHARED_HTTP + - RANDOM_PORT + default: SHARED_HTTP + description: >- + - SHARED_HTTP: Describes an endpoint that becomes + a Kubernetes Ingress + - RANDOM_PORT: Describes an endpoint that becomes a Kubernetes NodePort + title: >- + This describes how the endpoint is implemented + when the lease is deployed + title: Endpoint describes a publicly accessible IP service + title: >- + ResourceUnits describes all available resources types for + deployment/node etc - used with implementation specific semantics. - value: + if field is nil resource is not present in the given + data-structure + count: + type: integer + format: int64 + price: + type: object + properties: + denom: + type: string + amount: type: string - format: byte - description: >- - Must be a valid serialized protocol buffer of the above - specified type. description: >- - `Any` contains an arbitrary serialized protocol buffer - message along with a - - URL that describes the type of the serialized message. - - - Protobuf library provides support to pack/unpack Any values - in the form - - of utility functions or additional generated methods of the - Any type. - - - Example 1: Pack and unpack a message in C++. - - Foo foo = ...; - Any any; - any.PackFrom(foo); - ... - if (any.UnpackTo(&foo)) { - ... - } - - Example 2: Pack and unpack a message in Java. - - Foo foo = ...; - Any any = Any.pack(foo); - ... - if (any.is(Foo.class)) { - foo = any.unpack(Foo.class); - } - - Example 3: Pack and unpack a message in Python. - - foo = Foo(...) - any = Any() - any.Pack(foo) - ... - if any.Is(Foo.DESCRIPTOR): - any.Unpack(foo) - ... - - Example 4: Pack and unpack a message in Go - - foo := &pb.Foo{...} - any, err := ptypes.MarshalAny(foo) - ... - foo := &pb.Foo{} - if err := ptypes.UnmarshalAny(any, foo); err != nil { - ... - } - - The pack methods provided by protobuf library will by - default use - - 'type.googleapis.com/full.type.name' as the type URL and the - unpack - - methods only use the fully qualified type name after the - last '/' - - in the type URL, for example "foo.bar.com/x/y.z" will yield - type - - name "y.z". - - - - JSON - - ==== - - The JSON representation of an `Any` value uses the regular - - representation of the deserialized, embedded message, with - an - - additional field `@type` which contains the type URL. - Example: + Coin defines a token with a denomination and an amount. - package google.profile; - message Person { - string first_name = 1; - string last_name = 2; - } - { - "@type": "type.googleapis.com/google.profile.Person", - "firstName": , - "lastName": - } + NOTE: The amount field is an Int which implements the custom + method - If the embedded message type is well-known and has a custom - JSON + signatures required by gogoproto. + title: 'Resource stores unit, total count and price of resource' + title: GroupSpec stores group specifications + created_at: + type: string + format: int64 + title: 'Group stores group id, state and specifications of group' + akash.deployment.v1beta1.Group.State: + type: string + enum: + - invalid + - open + - paused + - insufficient_funds + - closed + default: invalid + description: |- + - invalid: Prefix should start with 0 in enum. So declaring dummy state + - open: GroupOpen denotes state for group open + - paused: GroupOrdered denotes state for group ordered + - insufficient_funds: GroupInsufficientFunds denotes state for group insufficient_funds + - closed: GroupClosed denotes state for group closed + title: State is an enum which refers to state of group + akash.deployment.v1beta1.GroupID: + type: object + properties: + owner: + type: string + dseq: + type: string + format: uint64 + gseq: + type: integer + format: int64 + title: 'GroupID stores owner, deployment sequence number and group sequence number' + akash.deployment.v1beta1.GroupSpec: + type: object + properties: + name: + type: string + requirements: + type: object + properties: + signed_by: + title: SignedBy list of keys that tenants expect to have signatures from + type: object + properties: + all_of: + type: array + items: + type: string + title: all_of all keys in this list must have signed attributes + any_of: + type: array + items: + type: string + title: >- + any_of at least of of the keys from the list must have signed + attributes + attributes: + type: array + items: + type: object + properties: + key: + type: string + value: + type: string + title: Attribute represents key value pair + title: Attribute list of attributes tenant expects from the provider + title: PlacementRequirements + resources: + type: array + items: + type: object + properties: + resources: + type: object + properties: + cpu: + type: object + properties: + units: + type: object + properties: + val: + type: string + format: byte + title: 'Unit stores cpu, memory and storage metrics' + attributes: + type: array + items: + type: object + properties: + key: + type: string + value: + type: string + title: Attribute represents key value pair + title: CPU stores resource units and cpu config attributes + memory: + type: object + properties: + quantity: + type: object + properties: + val: + type: string + format: byte + title: 'Unit stores cpu, memory and storage metrics' + attributes: + type: array + items: + type: object + properties: + key: + type: string + value: + type: string + title: Attribute represents key value pair + title: Memory stores resource quantity and memory attributes + storage: + type: object + properties: + quantity: + type: object + properties: + val: + type: string + format: byte + title: 'Unit stores cpu, memory and storage metrics' + attributes: + type: array + items: + type: object + properties: + key: + type: string + value: + type: string + title: Attribute represents key value pair + title: Storage stores resource quantity and storage attributes + endpoints: + type: array + items: + type: object + properties: + kind: + type: string + enum: + - SHARED_HTTP + - RANDOM_PORT + default: SHARED_HTTP + description: >- + - SHARED_HTTP: Describes an endpoint that becomes a + Kubernetes Ingress + - RANDOM_PORT: Describes an endpoint that becomes a Kubernetes NodePort + title: >- + This describes how the endpoint is implemented when + the lease is deployed + title: Endpoint describes a publicly accessible IP service + title: >- + ResourceUnits describes all available resources types for + deployment/node etc - representation, that representation will be embedded adding - a field + if field is nil resource is not present in the given + data-structure + count: + type: integer + format: int64 + price: + type: object + properties: + denom: + type: string + amount: + type: string + description: >- + Coin defines a token with a denomination and an amount. - `value` which holds the custom JSON in addition to the - `@type` - field. Example (for message [google.protobuf.Duration][]): + NOTE: The amount field is an Int which implements the custom + method - { - "@type": "type.googleapis.com/google.protobuf.Duration", - "value": "1.212s" - } - parameters: - - name: client_id - description: client identifier associated with a connection - in: path - required: true - type: string - tags: - - Query - /ibc/connection/v1beta1/connections: - get: - summary: Connections queries all the IBC connections of a chain. - operationId: Connections - responses: - '200': - description: A successful response. - schema: + signatures required by gogoproto. + title: 'Resource stores unit, total count and price of resource' + title: GroupSpec stores group specifications + akash.deployment.v1beta1.QueryDeploymentResponse: + type: object + properties: + deployment: + type: object + properties: + deployment_id: type: object properties: - connections: - type: array - items: + owner: + type: string + dseq: + type: string + format: uint64 + title: DeploymentID stores owner and sequence number + state: + type: string + enum: + - invalid + - active + - closed + default: invalid + description: >- + - invalid: Prefix should start with 0 in enum. So declaring dummy + state + - active: DeploymentActive denotes state for deployment active + - closed: DeploymentClosed denotes state for deployment closed + title: State is an enum which refers to state of deployment + version: + type: string + format: byte + created_at: + type: string + format: int64 + title: 'Deployment stores deploymentID, state and version details' + groups: + type: array + items: + type: object + properties: + group_id: + type: object + properties: + owner: + type: string + dseq: + type: string + format: uint64 + gseq: + type: integer + format: int64 + title: >- + GroupID stores owner, deployment sequence number and group + sequence number + state: + type: string + enum: + - invalid + - open + - paused + - insufficient_funds + - closed + default: invalid + description: >- + - invalid: Prefix should start with 0 in enum. So declaring + dummy state + - open: GroupOpen denotes state for group open + - paused: GroupOrdered denotes state for group ordered + - insufficient_funds: GroupInsufficientFunds denotes state for group insufficient_funds + - closed: GroupClosed denotes state for group closed + title: State is an enum which refers to state of group + group_spec: + type: object + properties: + name: + type: string + requirements: type: object properties: - id: - type: string - description: connection identifier. - client_id: - type: string - description: client associated with this connection. - versions: + signed_by: + title: >- + SignedBy list of keys that tenants expect to have + signatures from + type: object + properties: + all_of: + type: array + items: + type: string + title: >- + all_of all keys in this list must have signed + attributes + any_of: + type: array + items: + type: string + title: >- + any_of at least of of the keys from the list must + have signed attributes + attributes: type: array items: type: object properties: - identifier: + key: + type: string + value: + type: string + title: Attribute represents key value pair + title: >- + Attribute list of attributes tenant expects from the + provider + title: PlacementRequirements + resources: + type: array + items: + type: object + properties: + resources: + type: object + properties: + cpu: + type: object + properties: + units: + type: object + properties: + val: + type: string + format: byte + title: 'Unit stores cpu, memory and storage metrics' + attributes: + type: array + items: + type: object + properties: + key: + type: string + value: + type: string + title: Attribute represents key value pair + title: >- + CPU stores resource units and cpu config + attributes + memory: + type: object + properties: + quantity: + type: object + properties: + val: + type: string + format: byte + title: 'Unit stores cpu, memory and storage metrics' + attributes: + type: array + items: + type: object + properties: + key: + type: string + value: + type: string + title: Attribute represents key value pair + title: >- + Memory stores resource quantity and memory + attributes + storage: + type: object + properties: + quantity: + type: object + properties: + val: + type: string + format: byte + title: 'Unit stores cpu, memory and storage metrics' + attributes: + type: array + items: + type: object + properties: + key: + type: string + value: + type: string + title: Attribute represents key value pair + title: >- + Storage stores resource quantity and storage + attributes + endpoints: + type: array + items: + type: object + properties: + kind: + type: string + enum: + - SHARED_HTTP + - RANDOM_PORT + default: SHARED_HTTP + description: >- + - SHARED_HTTP: Describes an endpoint that + becomes a Kubernetes Ingress + - RANDOM_PORT: Describes an endpoint that becomes a Kubernetes NodePort + title: >- + This describes how the endpoint is + implemented when the lease is deployed + title: >- + Endpoint describes a publicly accessible IP + service + title: >- + ResourceUnits describes all available resources types + for deployment/node etc + + if field is nil resource is not present in the given + data-structure + count: + type: integer + format: int64 + price: + type: object + properties: + denom: + type: string + amount: type: string - title: unique version identifier - features: - type: array - items: - type: string - title: >- - list of features compatible with the specified - identifier description: >- - Version defines the versioning scheme used to - negotiate the IBC verison in - - the connection handshake. - title: >- - IBC version which can be utilised to determine encodings - or protocols for - - channels or packets utilising this connection - state: - description: current state of the connection end. - type: string - enum: - - STATE_UNINITIALIZED_UNSPECIFIED - - STATE_INIT - - STATE_TRYOPEN - - STATE_OPEN - default: STATE_UNINITIALIZED_UNSPECIFIED - counterparty: - description: counterparty chain associated with this connection. - type: object - properties: - client_id: - type: string - description: >- - identifies the client on the counterparty chain - associated with a given - - connection. - connection_id: - type: string - description: >- - identifies the connection end on the counterparty - chain associated with a - - given connection. - prefix: - title: commitment merkle prefix of the counterparty chain - type: object - properties: - key_prefix: - type: string - format: byte - description: >- - IdentifiedConnection defines a connection with additional - connection - - identifier field. - description: list of stored connections of the chain. - pagination: - title: pagination response - type: object - properties: - next_key: - type: string - format: byte - title: |- - next_key is the key to be passed to PageRequest.key to - query the next page most efficiently - total: - type: string - format: uint64 - title: >- - total is total number of results available if - PageRequest.count_total - - was set, its value is undefined otherwise - description: >- - PageResponse is to be embedded in gRPC response messages where - the - - corresponding request message has used PageRequest. - - message SomeResponse { - repeated Bar results = 1; - PageResponse page = 2; - } - height: - title: query block height - type: object - properties: - version_number: - type: string - format: uint64 - title: the version that the client is currently on - version_height: - type: string - format: uint64 - title: the height within the given version - description: >- - Normally the VersionHeight is incremented at each height while - keeping version - - number the same However some consensus algorithms may choose - to reset the - - height in certain conditions e.g. hard forks, state-machine - breaking changes + Coin defines a token with a denomination and an + amount. - In these cases, the version number is incremented so that - height continues to - be monitonically increasing even as the VersionHeight gets - reset - description: >- - QueryConnectionsResponse is the response type for the - Query/Connections RPC + NOTE: The amount field is an Int which implements the + custom method - method. - default: - description: An unexpected error response. - schema: + signatures required by gogoproto. + title: 'Resource stores unit, total count and price of resource' + title: GroupSpec stores group specifications + created_at: + type: string + format: int64 + title: 'Group stores group id, state and specifications of group' + escrow_account: + type: object + properties: + id: type: object properties: - error: + scope: type: string - code: - type: integer - format: int32 - message: + xid: type: string - details: - type: array - items: - type: object - properties: - type_url: - type: string - description: >- - A URL/resource name that uniquely identifies the type of - the serialized - - protocol buffer message. This string must contain at - least - - one "/" character. The last segment of the URL's path - must represent - - the fully qualified name of the type (as in - - `path/google.protobuf.Duration`). The name should be in - a canonical form - - (e.g., leading "." is not accepted). - - - In practice, teams usually precompile into the binary - all types that they - - expect it to use in the context of Any. However, for - URLs which use the - - scheme `http`, `https`, or no scheme, one can optionally - set up a type - - server that maps type URLs to message definitions as - follows: - - - * If no scheme is provided, `https` is assumed. - - * An HTTP GET on the URL must yield a - [google.protobuf.Type][] - value in binary format, or produce an error. - * Applications are allowed to cache lookup results based - on the - URL, or have them precompiled into a binary to avoid any - lookup. Therefore, binary compatibility needs to be preserved - on changes to types. (Use versioned type names to manage - breaking changes.) + title: AccountID is the account identifier + owner: + type: string + state: + type: string + enum: + - invalid + - open + - closed + - overdrawn + default: invalid + description: |- + - invalid: AccountStateInvalid is an invalid state + - open: AccountOpen is the state when an account is open + - closed: AccountClosed is the state when an account is closed + - overdrawn: AccountOverdrawn is the state when an account is overdrawn + title: State stores state for an escrow account + balance: + type: object + properties: + denom: + type: string + amount: + type: string + description: >- + Coin defines a token with a denomination and an amount. - Note: this functionality is not currently available in - the official - protobuf release, and it is not used for type URLs - beginning with + NOTE: The amount field is an Int which implements the custom + method - type.googleapis.com. + signatures required by gogoproto. + transferred: + type: object + properties: + denom: + type: string + amount: + type: string + description: >- + Coin defines a token with a denomination and an amount. - Schemes other than `http`, `https` (or the empty scheme) - might be + NOTE: The amount field is an Int which implements the custom + method - used with implementation specific semantics. - value: + signatures required by gogoproto. + settled_at: + type: string + format: int64 + title: Account stores state for an escrow account + title: >- + QueryDeploymentResponse is response type for the Query/Deployment RPC + method + akash.deployment.v1beta1.QueryDeploymentsResponse: + type: object + properties: + deployments: + type: array + items: + type: object + properties: + deployment: + type: object + properties: + deployment_id: + type: object + properties: + owner: type: string - format: byte - description: >- - Must be a valid serialized protocol buffer of the above - specified type. + dseq: + type: string + format: uint64 + title: DeploymentID stores owner and sequence number + state: + type: string + enum: + - invalid + - active + - closed + default: invalid description: >- - `Any` contains an arbitrary serialized protocol buffer - message along with a - - URL that describes the type of the serialized message. - - - Protobuf library provides support to pack/unpack Any values - in the form - - of utility functions or additional generated methods of the - Any type. - - - Example 1: Pack and unpack a message in C++. - - Foo foo = ...; - Any any; - any.PackFrom(foo); - ... - if (any.UnpackTo(&foo)) { - ... - } - - Example 2: Pack and unpack a message in Java. - - Foo foo = ...; - Any any = Any.pack(foo); - ... - if (any.is(Foo.class)) { - foo = any.unpack(Foo.class); - } - - Example 3: Pack and unpack a message in Python. - - foo = Foo(...) - any = Any() - any.Pack(foo) - ... - if any.Is(Foo.DESCRIPTOR): - any.Unpack(foo) - ... - - Example 4: Pack and unpack a message in Go - - foo := &pb.Foo{...} - any, err := ptypes.MarshalAny(foo) - ... - foo := &pb.Foo{} - if err := ptypes.UnmarshalAny(any, foo); err != nil { - ... - } - - The pack methods provided by protobuf library will by - default use - - 'type.googleapis.com/full.type.name' as the type URL and the - unpack - - methods only use the fully qualified type name after the - last '/' - - in the type URL, for example "foo.bar.com/x/y.z" will yield - type - - name "y.z". - - - - JSON - - ==== - - The JSON representation of an `Any` value uses the regular - - representation of the deserialized, embedded message, with - an - - additional field `@type` which contains the type URL. - Example: - - package google.profile; - message Person { - string first_name = 1; - string last_name = 2; - } + - invalid: Prefix should start with 0 in enum. So declaring + dummy state + - active: DeploymentActive denotes state for deployment active + - closed: DeploymentClosed denotes state for deployment closed + title: State is an enum which refers to state of deployment + version: + type: string + format: byte + created_at: + type: string + format: int64 + title: 'Deployment stores deploymentID, state and version details' + groups: + type: array + items: + type: object + properties: + group_id: + type: object + properties: + owner: + type: string + dseq: + type: string + format: uint64 + gseq: + type: integer + format: int64 + title: >- + GroupID stores owner, deployment sequence number and group + sequence number + state: + type: string + enum: + - invalid + - open + - paused + - insufficient_funds + - closed + default: invalid + description: >- + - invalid: Prefix should start with 0 in enum. So + declaring dummy state + - open: GroupOpen denotes state for group open + - paused: GroupOrdered denotes state for group ordered + - insufficient_funds: GroupInsufficientFunds denotes state for group insufficient_funds + - closed: GroupClosed denotes state for group closed + title: State is an enum which refers to state of group + group_spec: + type: object + properties: + name: + type: string + requirements: + type: object + properties: + signed_by: + title: >- + SignedBy list of keys that tenants expect to have + signatures from + type: object + properties: + all_of: + type: array + items: + type: string + title: >- + all_of all keys in this list must have signed + attributes + any_of: + type: array + items: + type: string + title: >- + any_of at least of of the keys from the list + must have signed attributes + attributes: + type: array + items: + type: object + properties: + key: + type: string + value: + type: string + title: Attribute represents key value pair + title: >- + Attribute list of attributes tenant expects from + the provider + title: PlacementRequirements + resources: + type: array + items: + type: object + properties: + resources: + type: object + properties: + cpu: + type: object + properties: + units: + type: object + properties: + val: + type: string + format: byte + title: >- + Unit stores cpu, memory and storage + metrics + attributes: + type: array + items: + type: object + properties: + key: + type: string + value: + type: string + title: Attribute represents key value pair + title: >- + CPU stores resource units and cpu config + attributes + memory: + type: object + properties: + quantity: + type: object + properties: + val: + type: string + format: byte + title: >- + Unit stores cpu, memory and storage + metrics + attributes: + type: array + items: + type: object + properties: + key: + type: string + value: + type: string + title: Attribute represents key value pair + title: >- + Memory stores resource quantity and memory + attributes + storage: + type: object + properties: + quantity: + type: object + properties: + val: + type: string + format: byte + title: >- + Unit stores cpu, memory and storage + metrics + attributes: + type: array + items: + type: object + properties: + key: + type: string + value: + type: string + title: Attribute represents key value pair + title: >- + Storage stores resource quantity and storage + attributes + endpoints: + type: array + items: + type: object + properties: + kind: + type: string + enum: + - SHARED_HTTP + - RANDOM_PORT + default: SHARED_HTTP + description: >- + - SHARED_HTTP: Describes an endpoint + that becomes a Kubernetes Ingress + - RANDOM_PORT: Describes an endpoint that becomes a Kubernetes NodePort + title: >- + This describes how the endpoint is + implemented when the lease is deployed + title: >- + Endpoint describes a publicly accessible + IP service + title: >- + ResourceUnits describes all available resources + types for deployment/node etc - { - "@type": "type.googleapis.com/google.profile.Person", - "firstName": , - "lastName": - } + if field is nil resource is not present in the + given data-structure + count: + type: integer + format: int64 + price: + type: object + properties: + denom: + type: string + amount: + type: string + description: >- + Coin defines a token with a denomination and an + amount. - If the embedded message type is well-known and has a custom - JSON - representation, that representation will be embedded adding - a field + NOTE: The amount field is an Int which + implements the custom method - `value` which holds the custom JSON in addition to the - `@type` + signatures required by gogoproto. + title: >- + Resource stores unit, total count and price of + resource + title: GroupSpec stores group specifications + created_at: + type: string + format: int64 + title: 'Group stores group id, state and specifications of group' + escrow_account: + type: object + properties: + id: + type: object + properties: + scope: + type: string + xid: + type: string + title: AccountID is the account identifier + owner: + type: string + state: + type: string + enum: + - invalid + - open + - closed + - overdrawn + default: invalid + description: |- + - invalid: AccountStateInvalid is an invalid state + - open: AccountOpen is the state when an account is open + - closed: AccountClosed is the state when an account is closed + - overdrawn: AccountOverdrawn is the state when an account is overdrawn + title: State stores state for an escrow account + balance: + type: object + properties: + denom: + type: string + amount: + type: string + description: >- + Coin defines a token with a denomination and an amount. - field. Example (for message [google.protobuf.Duration][]): - { - "@type": "type.googleapis.com/google.protobuf.Duration", - "value": "1.212s" - } - parameters: - - name: pagination.key - description: |- - key is a value returned in PageResponse.next_key to begin - querying the next page most efficiently. Only one of offset or key - should be set. - in: query - required: false - type: string - format: byte - - name: pagination.offset - description: >- - offset is a numeric offset that can be used when key is unavailable. + NOTE: The amount field is an Int which implements the custom + method - It is less efficient than using key. Only one of offset or key - should + signatures required by gogoproto. + transferred: + type: object + properties: + denom: + type: string + amount: + type: string + description: >- + Coin defines a token with a denomination and an amount. - be set. - in: query - required: false - type: string - format: uint64 - - name: pagination.limit - description: >- - limit is the total number of results to be returned in the result - page. - If left empty it will default to a value to be set by each app. - in: query - required: false - type: string - format: uint64 - - name: pagination.count_total - description: >- - count_total is set to true to indicate that the result set should - include + NOTE: The amount field is an Int which implements the custom + method - a count of the total number of items available for pagination in - UIs. + signatures required by gogoproto. + settled_at: + type: string + format: int64 + title: Account stores state for an escrow account + title: >- + QueryDeploymentResponse is response type for the Query/Deployment + RPC method + pagination: + type: object + properties: + next_key: + type: string + format: byte + title: |- + next_key is the key to be passed to PageRequest.key to + query the next page most efficiently + total: + type: string + format: uint64 + title: >- + total is total number of results available if + PageRequest.count_total - count_total is only respected when offset is used. It is ignored - when key + was set, its value is undefined otherwise + description: |- + PageResponse is to be embedded in gRPC response messages where the + corresponding request message has used PageRequest. - is set. - in: query - required: false - type: boolean - tags: - - Query - '/ibc/connection/v1beta1/connections/{connection_id}': - get: - summary: Connection queries an IBC connection end. - operationId: Connection - responses: - '200': - description: A successful response. - schema: + message SomeResponse { + repeated Bar results = 1; + PageResponse page = 2; + } + title: >- + QueryDeploymentsResponse is response type for the Query/Deployments RPC + method + akash.deployment.v1beta1.QueryGroupResponse: + type: object + properties: + group: + type: object + properties: + group_id: + type: object + properties: + owner: + type: string + dseq: + type: string + format: uint64 + gseq: + type: integer + format: int64 + title: >- + GroupID stores owner, deployment sequence number and group + sequence number + state: + type: string + enum: + - invalid + - open + - paused + - insufficient_funds + - closed + default: invalid + description: >- + - invalid: Prefix should start with 0 in enum. So declaring dummy + state + - open: GroupOpen denotes state for group open + - paused: GroupOrdered denotes state for group ordered + - insufficient_funds: GroupInsufficientFunds denotes state for group insufficient_funds + - closed: GroupClosed denotes state for group closed + title: State is an enum which refers to state of group + group_spec: type: object properties: - connection: - title: connection associated with the request identifier + name: + type: string + requirements: type: object properties: - client_id: - type: string - description: client associated with this connection. - versions: + signed_by: + title: >- + SignedBy list of keys that tenants expect to have + signatures from + type: object + properties: + all_of: + type: array + items: + type: string + title: >- + all_of all keys in this list must have signed + attributes + any_of: + type: array + items: + type: string + title: >- + any_of at least of of the keys from the list must have + signed attributes + attributes: type: array items: type: object properties: - identifier: + key: type: string - title: unique version identifier - features: - type: array - items: - type: string - title: >- - list of features compatible with the specified - identifier - description: >- - Version defines the versioning scheme used to negotiate - the IBC verison in - - the connection handshake. + value: + type: string + title: Attribute represents key value pair title: >- - IBC version which can be utilised to determine encodings - or protocols for - - channels or packets utilising this connection - state: - description: current state of the connection end. - type: string - enum: - - STATE_UNINITIALIZED_UNSPECIFIED - - STATE_INIT - - STATE_TRYOPEN - - STATE_OPEN - default: STATE_UNINITIALIZED_UNSPECIFIED - counterparty: - description: counterparty chain associated with this connection. - type: object - properties: - client_id: - type: string - description: >- - identifies the client on the counterparty chain - associated with a given - - connection. - connection_id: - type: string - description: >- - identifies the connection end on the counterparty - chain associated with a - - given connection. - prefix: - title: commitment merkle prefix of the counterparty chain - type: object - properties: - key_prefix: - type: string - format: byte - description: >- - ConnectionEnd defines a stateful object on a chain connected - to another - - separate one. NOTE: there must only be 2 defined - ConnectionEnds to establish - - a connection between two chains. - proof: - type: string - format: byte - title: merkle proof of existence - proof_height: - title: height at which the proof was retrieved - type: object - properties: - version_number: - type: string - format: uint64 - title: the version that the client is currently on - version_height: - type: string - format: uint64 - title: the height within the given version - description: >- - Normally the VersionHeight is incremented at each height while - keeping version - - number the same However some consensus algorithms may choose - to reset the - - height in certain conditions e.g. hard forks, state-machine - breaking changes - - In these cases, the version number is incremented so that - height continues to - - be monitonically increasing even as the VersionHeight gets - reset - description: >- - QueryConnectionResponse is the response type for the - Query/Connection RPC - - method. Besides the connection end, it includes a proof and the - height from - - which the proof was retrieved. - default: - description: An unexpected error response. - schema: - type: object - properties: - error: - type: string - code: - type: integer - format: int32 - message: - type: string - details: + Attribute list of attributes tenant expects from the + provider + title: PlacementRequirements + resources: type: array items: type: object properties: - type_url: - type: string - description: >- - A URL/resource name that uniquely identifies the type of - the serialized - - protocol buffer message. This string must contain at - least - - one "/" character. The last segment of the URL's path - must represent - - the fully qualified name of the type (as in - - `path/google.protobuf.Duration`). The name should be in - a canonical form - - (e.g., leading "." is not accepted). - - - In practice, teams usually precompile into the binary - all types that they - - expect it to use in the context of Any. However, for - URLs which use the - - scheme `http`, `https`, or no scheme, one can optionally - set up a type - - server that maps type URLs to message definitions as - follows: - - - * If no scheme is provided, `https` is assumed. - - * An HTTP GET on the URL must yield a - [google.protobuf.Type][] - value in binary format, or produce an error. - * Applications are allowed to cache lookup results based - on the - URL, or have them precompiled into a binary to avoid any - lookup. Therefore, binary compatibility needs to be preserved - on changes to types. (Use versioned type names to manage - breaking changes.) - - Note: this functionality is not currently available in - the official - - protobuf release, and it is not used for type URLs - beginning with - - type.googleapis.com. - - - Schemes other than `http`, `https` (or the empty scheme) - might be - - used with implementation specific semantics. - value: - type: string - format: byte - description: >- - Must be a valid serialized protocol buffer of the above - specified type. - description: >- - `Any` contains an arbitrary serialized protocol buffer - message along with a - - URL that describes the type of the serialized message. - - - Protobuf library provides support to pack/unpack Any values - in the form - - of utility functions or additional generated methods of the - Any type. - - - Example 1: Pack and unpack a message in C++. - - Foo foo = ...; - Any any; - any.PackFrom(foo); - ... - if (any.UnpackTo(&foo)) { - ... - } - - Example 2: Pack and unpack a message in Java. - - Foo foo = ...; - Any any = Any.pack(foo); - ... - if (any.is(Foo.class)) { - foo = any.unpack(Foo.class); - } - - Example 3: Pack and unpack a message in Python. - - foo = Foo(...) - any = Any() - any.Pack(foo) - ... - if any.Is(Foo.DESCRIPTOR): - any.Unpack(foo) - ... - - Example 4: Pack and unpack a message in Go - - foo := &pb.Foo{...} - any, err := ptypes.MarshalAny(foo) - ... - foo := &pb.Foo{} - if err := ptypes.UnmarshalAny(any, foo); err != nil { - ... - } - - The pack methods provided by protobuf library will by - default use - - 'type.googleapis.com/full.type.name' as the type URL and the - unpack - - methods only use the fully qualified type name after the - last '/' - - in the type URL, for example "foo.bar.com/x/y.z" will yield - type - - name "y.z". - - - - JSON - - ==== - - The JSON representation of an `Any` value uses the regular - - representation of the deserialized, embedded message, with - an - - additional field `@type` which contains the type URL. - Example: - - package google.profile; - message Person { - string first_name = 1; - string last_name = 2; - } - - { - "@type": "type.googleapis.com/google.profile.Person", - "firstName": , - "lastName": - } - - If the embedded message type is well-known and has a custom - JSON + resources: + type: object + properties: + cpu: + type: object + properties: + units: + type: object + properties: + val: + type: string + format: byte + title: 'Unit stores cpu, memory and storage metrics' + attributes: + type: array + items: + type: object + properties: + key: + type: string + value: + type: string + title: Attribute represents key value pair + title: CPU stores resource units and cpu config attributes + memory: + type: object + properties: + quantity: + type: object + properties: + val: + type: string + format: byte + title: 'Unit stores cpu, memory and storage metrics' + attributes: + type: array + items: + type: object + properties: + key: + type: string + value: + type: string + title: Attribute represents key value pair + title: >- + Memory stores resource quantity and memory + attributes + storage: + type: object + properties: + quantity: + type: object + properties: + val: + type: string + format: byte + title: 'Unit stores cpu, memory and storage metrics' + attributes: + type: array + items: + type: object + properties: + key: + type: string + value: + type: string + title: Attribute represents key value pair + title: >- + Storage stores resource quantity and storage + attributes + endpoints: + type: array + items: + type: object + properties: + kind: + type: string + enum: + - SHARED_HTTP + - RANDOM_PORT + default: SHARED_HTTP + description: >- + - SHARED_HTTP: Describes an endpoint that + becomes a Kubernetes Ingress + - RANDOM_PORT: Describes an endpoint that becomes a Kubernetes NodePort + title: >- + This describes how the endpoint is implemented + when the lease is deployed + title: >- + Endpoint describes a publicly accessible IP + service + title: >- + ResourceUnits describes all available resources types + for deployment/node etc - representation, that representation will be embedded adding - a field + if field is nil resource is not present in the given + data-structure + count: + type: integer + format: int64 + price: + type: object + properties: + denom: + type: string + amount: + type: string + description: >- + Coin defines a token with a denomination and an amount. - `value` which holds the custom JSON in addition to the - `@type` - field. Example (for message [google.protobuf.Duration][]): + NOTE: The amount field is an Int which implements the + custom method - { - "@type": "type.googleapis.com/google.protobuf.Duration", - "value": "1.212s" - } - parameters: - - name: connection_id - description: connection unique identifier - in: path - required: true - type: string - tags: - - Query - '/ibc/connection/v1beta1/connections/{connection_id}/client_state': - get: - summary: |- - ConnectionClientState queries the client state associated with the - connection. - operationId: ConnectionClientState - responses: - '200': - description: A successful response. - schema: + signatures required by gogoproto. + title: 'Resource stores unit, total count and price of resource' + title: GroupSpec stores group specifications + created_at: + type: string + format: int64 + title: 'Group stores group id, state and specifications of group' + title: QueryGroupResponse is response type for the Query/Group RPC method + akash.deployment.v1beta1.Resource: + type: object + properties: + resources: + type: object + properties: + cpu: type: object properties: - identified_client_state: - title: client state associated with the channel + units: type: object properties: - client_id: + val: type: string - title: client identifier - client_state: - title: client state - type: object - properties: - type_url: - type: string - description: >- - A URL/resource name that uniquely identifies the type - of the serialized - - protocol buffer message. This string must contain at - least - - one "/" character. The last segment of the URL's path - must represent - - the fully qualified name of the type (as in - - `path/google.protobuf.Duration`). The name should be - in a canonical form - - (e.g., leading "." is not accepted). - - - In practice, teams usually precompile into the binary - all types that they - - expect it to use in the context of Any. However, for - URLs which use the - - scheme `http`, `https`, or no scheme, one can - optionally set up a type - - server that maps type URLs to message definitions as - follows: - - - * If no scheme is provided, `https` is assumed. - - * An HTTP GET on the URL must yield a - [google.protobuf.Type][] - value in binary format, or produce an error. - * Applications are allowed to cache lookup results - based on the - URL, or have them precompiled into a binary to avoid any - lookup. Therefore, binary compatibility needs to be preserved - on changes to types. (Use versioned type names to manage - breaking changes.) - - Note: this functionality is not currently available in - the official - - protobuf release, and it is not used for type URLs - beginning with - - type.googleapis.com. - - - Schemes other than `http`, `https` (or the empty - scheme) might be - - used with implementation specific semantics. - value: - type: string - format: byte - description: >- - Must be a valid serialized protocol buffer of the - above specified type. - description: >- - `Any` contains an arbitrary serialized protocol buffer - message along with a - - URL that describes the type of the serialized message. - - - Protobuf library provides support to pack/unpack Any - values in the form - - of utility functions or additional generated methods of - the Any type. - - - Example 1: Pack and unpack a message in C++. - - Foo foo = ...; - Any any; - any.PackFrom(foo); - ... - if (any.UnpackTo(&foo)) { - ... - } - - Example 2: Pack and unpack a message in Java. - - Foo foo = ...; - Any any = Any.pack(foo); - ... - if (any.is(Foo.class)) { - foo = any.unpack(Foo.class); - } - - Example 3: Pack and unpack a message in Python. - - foo = Foo(...) - any = Any() - any.Pack(foo) - ... - if any.Is(Foo.DESCRIPTOR): - any.Unpack(foo) - ... - - Example 4: Pack and unpack a message in Go - - foo := &pb.Foo{...} - any, err := ptypes.MarshalAny(foo) - ... - foo := &pb.Foo{} - if err := ptypes.UnmarshalAny(any, foo); err != nil { - ... - } - - The pack methods provided by protobuf library will by - default use - - 'type.googleapis.com/full.type.name' as the type URL and - the unpack - - methods only use the fully qualified type name after the - last '/' - - in the type URL, for example "foo.bar.com/x/y.z" will - yield type - - name "y.z". - - - - JSON - - ==== - - The JSON representation of an `Any` value uses the regular - - representation of the deserialized, embedded message, with - an - - additional field `@type` which contains the type URL. - Example: - - package google.profile; - message Person { - string first_name = 1; - string last_name = 2; - } - - { - "@type": "type.googleapis.com/google.profile.Person", - "firstName": , - "lastName": - } - - If the embedded message type is well-known and has a - custom JSON - - representation, that representation will be embedded - adding a field - - `value` which holds the custom JSON in addition to the - `@type` - - field. Example (for message [google.protobuf.Duration][]): - - { - "@type": "type.googleapis.com/google.protobuf.Duration", - "value": "1.212s" - } - description: >- - IdentifiedClientState defines a client state with an - additional client - - identifier field. - proof: - type: string - format: byte - title: merkle proof of existence - proof_height: - title: height at which the proof was retrieved + format: byte + title: 'Unit stores cpu, memory and storage metrics' + attributes: + type: array + items: + type: object + properties: + key: + type: string + value: + type: string + title: Attribute represents key value pair + title: CPU stores resource units and cpu config attributes + memory: + type: object + properties: + quantity: type: object properties: - version_number: - type: string - format: uint64 - title: the version that the client is currently on - version_height: + val: type: string - format: uint64 - title: the height within the given version - description: >- - Normally the VersionHeight is incremented at each height while - keeping version - - number the same However some consensus algorithms may choose - to reset the - - height in certain conditions e.g. hard forks, state-machine - breaking changes - - In these cases, the version number is incremented so that - height continues to - - be monitonically increasing even as the VersionHeight gets - reset - title: |- - QueryConnectionClientStateResponse is the response type for the - Query/ConnectionClientState RPC method - default: - description: An unexpected error response. - schema: + format: byte + title: 'Unit stores cpu, memory and storage metrics' + attributes: + type: array + items: + type: object + properties: + key: + type: string + value: + type: string + title: Attribute represents key value pair + title: Memory stores resource quantity and memory attributes + storage: type: object properties: - error: - type: string - code: - type: integer - format: int32 - message: - type: string - details: + quantity: + type: object + properties: + val: + type: string + format: byte + title: 'Unit stores cpu, memory and storage metrics' + attributes: type: array items: type: object properties: - type_url: + key: type: string - description: >- - A URL/resource name that uniquely identifies the type of - the serialized - - protocol buffer message. This string must contain at - least - - one "/" character. The last segment of the URL's path - must represent - - the fully qualified name of the type (as in - - `path/google.protobuf.Duration`). The name should be in - a canonical form - - (e.g., leading "." is not accepted). - - - In practice, teams usually precompile into the binary - all types that they - - expect it to use in the context of Any. However, for - URLs which use the - - scheme `http`, `https`, or no scheme, one can optionally - set up a type - - server that maps type URLs to message definitions as - follows: - - - * If no scheme is provided, `https` is assumed. - - * An HTTP GET on the URL must yield a - [google.protobuf.Type][] - value in binary format, or produce an error. - * Applications are allowed to cache lookup results based - on the - URL, or have them precompiled into a binary to avoid any - lookup. Therefore, binary compatibility needs to be preserved - on changes to types. (Use versioned type names to manage - breaking changes.) - - Note: this functionality is not currently available in - the official - - protobuf release, and it is not used for type URLs - beginning with - - type.googleapis.com. - - - Schemes other than `http`, `https` (or the empty scheme) - might be - - used with implementation specific semantics. value: type: string - format: byte - description: >- - Must be a valid serialized protocol buffer of the above - specified type. + title: Attribute represents key value pair + title: Storage stores resource quantity and storage attributes + endpoints: + type: array + items: + type: object + properties: + kind: + type: string + enum: + - SHARED_HTTP + - RANDOM_PORT + default: SHARED_HTTP description: >- - `Any` contains an arbitrary serialized protocol buffer - message along with a - - URL that describes the type of the serialized message. - - - Protobuf library provides support to pack/unpack Any values - in the form - - of utility functions or additional generated methods of the - Any type. - - - Example 1: Pack and unpack a message in C++. - - Foo foo = ...; - Any any; - any.PackFrom(foo); - ... - if (any.UnpackTo(&foo)) { - ... - } - - Example 2: Pack and unpack a message in Java. - - Foo foo = ...; - Any any = Any.pack(foo); - ... - if (any.is(Foo.class)) { - foo = any.unpack(Foo.class); - } - - Example 3: Pack and unpack a message in Python. - - foo = Foo(...) - any = Any() - any.Pack(foo) - ... - if any.Is(Foo.DESCRIPTOR): - any.Unpack(foo) - ... - - Example 4: Pack and unpack a message in Go - - foo := &pb.Foo{...} - any, err := ptypes.MarshalAny(foo) - ... - foo := &pb.Foo{} - if err := ptypes.UnmarshalAny(any, foo); err != nil { - ... - } - - The pack methods provided by protobuf library will by - default use - - 'type.googleapis.com/full.type.name' as the type URL and the - unpack - - methods only use the fully qualified type name after the - last '/' - - in the type URL, for example "foo.bar.com/x/y.z" will yield - type - - name "y.z". - - - - JSON + - SHARED_HTTP: Describes an endpoint that becomes a + Kubernetes Ingress + - RANDOM_PORT: Describes an endpoint that becomes a Kubernetes NodePort + title: >- + This describes how the endpoint is implemented when the + lease is deployed + title: Endpoint describes a publicly accessible IP service + title: >- + ResourceUnits describes all available resources types for + deployment/node etc - ==== + if field is nil resource is not present in the given data-structure + count: + type: integer + format: int64 + price: + type: object + properties: + denom: + type: string + amount: + type: string + description: |- + Coin defines a token with a denomination and an amount. - The JSON representation of an `Any` value uses the regular + NOTE: The amount field is an Int which implements the custom method + signatures required by gogoproto. + title: 'Resource stores unit, total count and price of resource' + akash.escrow.v1beta1.Account: + type: object + properties: + id: + type: object + properties: + scope: + type: string + xid: + type: string + title: AccountID is the account identifier + owner: + type: string + state: + type: string + enum: + - invalid + - open + - closed + - overdrawn + default: invalid + description: |- + - invalid: AccountStateInvalid is an invalid state + - open: AccountOpen is the state when an account is open + - closed: AccountClosed is the state when an account is closed + - overdrawn: AccountOverdrawn is the state when an account is overdrawn + title: State stores state for an escrow account + balance: + type: object + properties: + denom: + type: string + amount: + type: string + description: |- + Coin defines a token with a denomination and an amount. - representation of the deserialized, embedded message, with - an + NOTE: The amount field is an Int which implements the custom method + signatures required by gogoproto. + transferred: + type: object + properties: + denom: + type: string + amount: + type: string + description: |- + Coin defines a token with a denomination and an amount. - additional field `@type` which contains the type URL. - Example: + NOTE: The amount field is an Int which implements the custom method + signatures required by gogoproto. + settled_at: + type: string + format: int64 + title: Account stores state for an escrow account + akash.escrow.v1beta1.Account.State: + type: string + enum: + - invalid + - open + - closed + - overdrawn + default: invalid + description: |- + - invalid: AccountStateInvalid is an invalid state + - open: AccountOpen is the state when an account is open + - closed: AccountClosed is the state when an account is closed + - overdrawn: AccountOverdrawn is the state when an account is overdrawn + title: State stores state for an escrow account + akash.escrow.v1beta1.AccountID: + type: object + properties: + scope: + type: string + xid: + type: string + title: AccountID is the account identifier + cosmos.base.query.v1beta1.PageRequest: + type: object + properties: + key: + type: string + format: byte + description: |- + key is a value returned in PageResponse.next_key to begin + querying the next page most efficiently. Only one of offset or key + should be set. + offset: + type: string + format: uint64 + description: |- + offset is a numeric offset that can be used when key is unavailable. + It is less efficient than using key. Only one of offset or key should + be set. + limit: + type: string + format: uint64 + description: >- + limit is the total number of results to be returned in the result + page. - package google.profile; - message Person { - string first_name = 1; - string last_name = 2; - } + If left empty it will default to a value to be set by each app. + count_total: + type: boolean + description: >- + count_total is set to true to indicate that the result set should + include - { - "@type": "type.googleapis.com/google.profile.Person", - "firstName": , - "lastName": - } + a count of the total number of items available for pagination in UIs. - If the embedded message type is well-known and has a custom - JSON + count_total is only respected when offset is used. It is ignored when + key - representation, that representation will be embedded adding - a field + is set. + format: boolean + reverse: + type: boolean + description: >- + reverse is set to true indicates that, results to be returned in the + descending order. + format: boolean + description: |- + message SomeRequest { + Foo some_parameter = 1; + PageRequest pagination = 2; + } + title: |- + PageRequest is to be embedded in gRPC request messages for efficient + pagination. Ex: + cosmos.base.query.v1beta1.PageResponse: + type: object + properties: + next_key: + type: string + format: byte + title: |- + next_key is the key to be passed to PageRequest.key to + query the next page most efficiently + total: + type: string + format: uint64 + title: |- + total is total number of results available if PageRequest.count_total + was set, its value is undefined otherwise + description: |- + PageResponse is to be embedded in gRPC response messages where the + corresponding request message has used PageRequest. - `value` which holds the custom JSON in addition to the - `@type` + message SomeResponse { + repeated Bar results = 1; + PageResponse page = 2; + } + cosmos.base.v1beta1.Coin: + type: object + properties: + denom: + type: string + amount: + type: string + description: |- + Coin defines a token with a denomination and an amount. - field. Example (for message [google.protobuf.Duration][]): + NOTE: The amount field is an Int which implements the custom method + signatures required by gogoproto. + google.protobuf.Any: + type: object + properties: + type_url: + type: string + description: >- + A URL/resource name that uniquely identifies the type of the + serialized - { - "@type": "type.googleapis.com/google.protobuf.Duration", - "value": "1.212s" - } - parameters: - - name: connection_id - description: connection identifier - in: path - required: true - type: string - tags: - - Query - '/ibc/connection/v1beta1/connections/{connection_id}/consensus_state/version/{version_number}/height/{version_height}': - get: - summary: |- - ConnectionConsensusState queries the consensus state associated with the - connection. - operationId: ConnectionConsensusState - responses: - '200': - description: A successful response. - schema: - type: object - properties: - consensus_state: - title: consensus state associated with the channel - type: object - properties: - type_url: - type: string - description: >- - A URL/resource name that uniquely identifies the type of - the serialized + protocol buffer message. This string must contain at least - protocol buffer message. This string must contain at least + one "/" character. The last segment of the URL's path must represent - one "/" character. The last segment of the URL's path must - represent + the fully qualified name of the type (as in - the fully qualified name of the type (as in + `path/google.protobuf.Duration`). The name should be in a canonical + form - `path/google.protobuf.Duration`). The name should be in a - canonical form + (e.g., leading "." is not accepted). - (e.g., leading "." is not accepted). + In practice, teams usually precompile into the binary all types that + they - In practice, teams usually precompile into the binary all - types that they + expect it to use in the context of Any. However, for URLs which use + the - expect it to use in the context of Any. However, for URLs - which use the + scheme `http`, `https`, or no scheme, one can optionally set up a type - scheme `http`, `https`, or no scheme, one can optionally - set up a type + server that maps type URLs to message definitions as follows: - server that maps type URLs to message definitions as - follows: + * If no scheme is provided, `https` is assumed. - * If no scheme is provided, `https` is assumed. + * An HTTP GET on the URL must yield a [google.protobuf.Type][] + value in binary format, or produce an error. + * Applications are allowed to cache lookup results based on the + URL, or have them precompiled into a binary to avoid any + lookup. Therefore, binary compatibility needs to be preserved + on changes to types. (Use versioned type names to manage + breaking changes.) - * An HTTP GET on the URL must yield a - [google.protobuf.Type][] - value in binary format, or produce an error. - * Applications are allowed to cache lookup results based - on the - URL, or have them precompiled into a binary to avoid any - lookup. Therefore, binary compatibility needs to be preserved - on changes to types. (Use versioned type names to manage - breaking changes.) + Note: this functionality is not currently available in the official - Note: this functionality is not currently available in the - official + protobuf release, and it is not used for type URLs beginning with - protobuf release, and it is not used for type URLs - beginning with + type.googleapis.com. - type.googleapis.com. + Schemes other than `http`, `https` (or the empty scheme) might be - Schemes other than `http`, `https` (or the empty scheme) - might be + used with implementation specific semantics. + value: + type: string + format: byte + description: >- + Must be a valid serialized protocol buffer of the above specified + type. + description: >- + `Any` contains an arbitrary serialized protocol buffer message along with + a - used with implementation specific semantics. - value: - type: string - format: byte - description: >- - Must be a valid serialized protocol buffer of the above - specified type. - description: >- - `Any` contains an arbitrary serialized protocol buffer message - along with a + URL that describes the type of the serialized message. - URL that describes the type of the serialized message. + Protobuf library provides support to pack/unpack Any values in the form - Protobuf library provides support to pack/unpack Any values in - the form + of utility functions or additional generated methods of the Any type. - of utility functions or additional generated methods of the - Any type. + Example 1: Pack and unpack a message in C++. - Example 1: Pack and unpack a message in C++. + Foo foo = ...; + Any any; + any.PackFrom(foo); + ... + if (any.UnpackTo(&foo)) { + ... + } - Foo foo = ...; - Any any; - any.PackFrom(foo); - ... - if (any.UnpackTo(&foo)) { - ... - } + Example 2: Pack and unpack a message in Java. - Example 2: Pack and unpack a message in Java. + Foo foo = ...; + Any any = Any.pack(foo); + ... + if (any.is(Foo.class)) { + foo = any.unpack(Foo.class); + } - Foo foo = ...; - Any any = Any.pack(foo); - ... - if (any.is(Foo.class)) { - foo = any.unpack(Foo.class); - } + Example 3: Pack and unpack a message in Python. - Example 3: Pack and unpack a message in Python. + foo = Foo(...) + any = Any() + any.Pack(foo) + ... + if any.Is(Foo.DESCRIPTOR): + any.Unpack(foo) + ... - foo = Foo(...) - any = Any() - any.Pack(foo) - ... - if any.Is(Foo.DESCRIPTOR): - any.Unpack(foo) - ... + Example 4: Pack and unpack a message in Go - Example 4: Pack and unpack a message in Go + foo := &pb.Foo{...} + any, err := ptypes.MarshalAny(foo) + ... + foo := &pb.Foo{} + if err := ptypes.UnmarshalAny(any, foo); err != nil { + ... + } - foo := &pb.Foo{...} - any, err := ptypes.MarshalAny(foo) - ... - foo := &pb.Foo{} - if err := ptypes.UnmarshalAny(any, foo); err != nil { - ... - } + The pack methods provided by protobuf library will by default use - The pack methods provided by protobuf library will by default - use + 'type.googleapis.com/full.type.name' as the type URL and the unpack - 'type.googleapis.com/full.type.name' as the type URL and the - unpack + methods only use the fully qualified type name after the last '/' - methods only use the fully qualified type name after the last - '/' + in the type URL, for example "foo.bar.com/x/y.z" will yield type - in the type URL, for example "foo.bar.com/x/y.z" will yield - type + name "y.z". - name "y.z". + JSON - JSON + ==== - ==== + The JSON representation of an `Any` value uses the regular - The JSON representation of an `Any` value uses the regular + representation of the deserialized, embedded message, with an - representation of the deserialized, embedded message, with an + additional field `@type` which contains the type URL. Example: - additional field `@type` which contains the type URL. Example: + package google.profile; + message Person { + string first_name = 1; + string last_name = 2; + } - package google.profile; - message Person { - string first_name = 1; - string last_name = 2; - } + { + "@type": "type.googleapis.com/google.profile.Person", + "firstName": , + "lastName": + } - { - "@type": "type.googleapis.com/google.profile.Person", - "firstName": , - "lastName": - } + If the embedded message type is well-known and has a custom JSON - If the embedded message type is well-known and has a custom - JSON + representation, that representation will be embedded adding a field - representation, that representation will be embedded adding a - field + `value` which holds the custom JSON in addition to the `@type` - `value` which holds the custom JSON in addition to the `@type` + field. Example (for message [google.protobuf.Duration][]): - field. Example (for message [google.protobuf.Duration][]): + { + "@type": "type.googleapis.com/google.protobuf.Duration", + "value": "1.212s" + } + grpc.gateway.runtime.Error: + type: object + properties: + error: + type: string + code: + type: integer + format: int32 + message: + type: string + details: + type: array + items: + type: object + properties: + type_url: + type: string + description: >- + A URL/resource name that uniquely identifies the type of the + serialized - { - "@type": "type.googleapis.com/google.protobuf.Duration", - "value": "1.212s" - } - client_id: - type: string - title: client ID associated with the consensus state - proof: - type: string - format: byte - title: merkle proof of existence - proof_height: - title: height at which the proof was retrieved - type: object - properties: - version_number: - type: string - format: uint64 - title: the version that the client is currently on - version_height: - type: string - format: uint64 - title: the height within the given version - description: >- - Normally the VersionHeight is incremented at each height while - keeping version + protocol buffer message. This string must contain at least - number the same However some consensus algorithms may choose - to reset the + one "/" character. The last segment of the URL's path must + represent - height in certain conditions e.g. hard forks, state-machine - breaking changes + the fully qualified name of the type (as in - In these cases, the version number is incremented so that - height continues to + `path/google.protobuf.Duration`). The name should be in a + canonical form - be monitonically increasing even as the VersionHeight gets - reset - title: |- - QueryConnectionConsensusStateResponse is the response type for the - Query/ConnectionConsensusState RPC method - default: - description: An unexpected error response. - schema: - type: object - properties: - error: - type: string - code: - type: integer - format: int32 - message: - type: string - details: - type: array - items: - type: object - properties: - type_url: - type: string - description: >- - A URL/resource name that uniquely identifies the type of - the serialized + (e.g., leading "." is not accepted). - protocol buffer message. This string must contain at - least - one "/" character. The last segment of the URL's path - must represent + In practice, teams usually precompile into the binary all types + that they - the fully qualified name of the type (as in + expect it to use in the context of Any. However, for URLs which + use the - `path/google.protobuf.Duration`). The name should be in - a canonical form + scheme `http`, `https`, or no scheme, one can optionally set up + a type - (e.g., leading "." is not accepted). + server that maps type URLs to message definitions as follows: - In practice, teams usually precompile into the binary - all types that they + * If no scheme is provided, `https` is assumed. - expect it to use in the context of Any. However, for - URLs which use the + * An HTTP GET on the URL must yield a [google.protobuf.Type][] + value in binary format, or produce an error. + * Applications are allowed to cache lookup results based on the + URL, or have them precompiled into a binary to avoid any + lookup. Therefore, binary compatibility needs to be preserved + on changes to types. (Use versioned type names to manage + breaking changes.) - scheme `http`, `https`, or no scheme, one can optionally - set up a type + Note: this functionality is not currently available in the + official - server that maps type URLs to message definitions as - follows: + protobuf release, and it is not used for type URLs beginning + with + type.googleapis.com. - * If no scheme is provided, `https` is assumed. - * An HTTP GET on the URL must yield a - [google.protobuf.Type][] - value in binary format, or produce an error. - * Applications are allowed to cache lookup results based - on the - URL, or have them precompiled into a binary to avoid any - lookup. Therefore, binary compatibility needs to be preserved - on changes to types. (Use versioned type names to manage - breaking changes.) + Schemes other than `http`, `https` (or the empty scheme) might + be - Note: this functionality is not currently available in - the official + used with implementation specific semantics. + value: + type: string + format: byte + description: >- + Must be a valid serialized protocol buffer of the above + specified type. + description: >- + `Any` contains an arbitrary serialized protocol buffer message along + with a - protobuf release, and it is not used for type URLs - beginning with + URL that describes the type of the serialized message. - type.googleapis.com. + Protobuf library provides support to pack/unpack Any values in the + form - Schemes other than `http`, `https` (or the empty scheme) - might be + of utility functions or additional generated methods of the Any + type. - used with implementation specific semantics. - value: - type: string - format: byte - description: >- - Must be a valid serialized protocol buffer of the above - specified type. - description: >- - `Any` contains an arbitrary serialized protocol buffer - message along with a - URL that describes the type of the serialized message. + Example 1: Pack and unpack a message in C++. + Foo foo = ...; + Any any; + any.PackFrom(foo); + ... + if (any.UnpackTo(&foo)) { + ... + } - Protobuf library provides support to pack/unpack Any values - in the form + Example 2: Pack and unpack a message in Java. - of utility functions or additional generated methods of the - Any type. + Foo foo = ...; + Any any = Any.pack(foo); + ... + if (any.is(Foo.class)) { + foo = any.unpack(Foo.class); + } + Example 3: Pack and unpack a message in Python. - Example 1: Pack and unpack a message in C++. + foo = Foo(...) + any = Any() + any.Pack(foo) + ... + if any.Is(Foo.DESCRIPTOR): + any.Unpack(foo) + ... - Foo foo = ...; - Any any; - any.PackFrom(foo); - ... - if (any.UnpackTo(&foo)) { - ... - } + Example 4: Pack and unpack a message in Go - Example 2: Pack and unpack a message in Java. + foo := &pb.Foo{...} + any, err := ptypes.MarshalAny(foo) + ... + foo := &pb.Foo{} + if err := ptypes.UnmarshalAny(any, foo); err != nil { + ... + } - Foo foo = ...; - Any any = Any.pack(foo); - ... - if (any.is(Foo.class)) { - foo = any.unpack(Foo.class); - } + The pack methods provided by protobuf library will by default use - Example 3: Pack and unpack a message in Python. + 'type.googleapis.com/full.type.name' as the type URL and the unpack - foo = Foo(...) - any = Any() - any.Pack(foo) - ... - if any.Is(Foo.DESCRIPTOR): - any.Unpack(foo) - ... + methods only use the fully qualified type name after the last '/' - Example 4: Pack and unpack a message in Go + in the type URL, for example "foo.bar.com/x/y.z" will yield type - foo := &pb.Foo{...} - any, err := ptypes.MarshalAny(foo) - ... - foo := &pb.Foo{} - if err := ptypes.UnmarshalAny(any, foo); err != nil { - ... - } + name "y.z". - The pack methods provided by protobuf library will by - default use - 'type.googleapis.com/full.type.name' as the type URL and the - unpack - methods only use the fully qualified type name after the - last '/' + JSON - in the type URL, for example "foo.bar.com/x/y.z" will yield - type + ==== - name "y.z". + The JSON representation of an `Any` value uses the regular + representation of the deserialized, embedded message, with an + additional field `@type` which contains the type URL. Example: - JSON + package google.profile; + message Person { + string first_name = 1; + string last_name = 2; + } - ==== + { + "@type": "type.googleapis.com/google.profile.Person", + "firstName": , + "lastName": + } - The JSON representation of an `Any` value uses the regular + If the embedded message type is well-known and has a custom JSON - representation of the deserialized, embedded message, with - an + representation, that representation will be embedded adding a field - additional field `@type` which contains the type URL. - Example: + `value` which holds the custom JSON in addition to the `@type` - package google.profile; - message Person { - string first_name = 1; - string last_name = 2; - } + field. Example (for message [google.protobuf.Duration][]): - { - "@type": "type.googleapis.com/google.profile.Person", - "firstName": , - "lastName": - } + { + "@type": "type.googleapis.com/google.protobuf.Duration", + "value": "1.212s" + } + akash.escrow.v1beta1.Payment: + type: object + properties: + account_id: + type: object + properties: + scope: + type: string + xid: + type: string + title: AccountID is the account identifier + payment_id: + type: string + owner: + type: string + state: + type: string + enum: + - invalid + - open + - closed + - overdrawn + default: invalid + description: >- + - invalid: PaymentStateInvalid is the state when the payment is + invalid + - open: PaymentStateOpen is the state when the payment is open + - closed: PaymentStateClosed is the state when the payment is closed + - overdrawn: PaymentStateOverdrawn is the state when the payment is overdrawn + title: Payment State + rate: + type: object + properties: + denom: + type: string + amount: + type: string + description: |- + Coin defines a token with a denomination and an amount. - If the embedded message type is well-known and has a custom - JSON + NOTE: The amount field is an Int which implements the custom method + signatures required by gogoproto. + balance: + type: object + properties: + denom: + type: string + amount: + type: string + description: |- + Coin defines a token with a denomination and an amount. - representation, that representation will be embedded adding - a field + NOTE: The amount field is an Int which implements the custom method + signatures required by gogoproto. + withdrawn: + type: object + properties: + denom: + type: string + amount: + type: string + description: |- + Coin defines a token with a denomination and an amount. - `value` which holds the custom JSON in addition to the - `@type` + NOTE: The amount field is an Int which implements the custom method + signatures required by gogoproto. + title: Payment stores state for a payment + akash.escrow.v1beta1.Payment.State: + type: string + enum: + - invalid + - open + - closed + - overdrawn + default: invalid + description: |- + - invalid: PaymentStateInvalid is the state when the payment is invalid + - open: PaymentStateOpen is the state when the payment is open + - closed: PaymentStateClosed is the state when the payment is closed + - overdrawn: PaymentStateOverdrawn is the state when the payment is overdrawn + title: Payment State + akash.market.v1beta1.Bid: + type: object + properties: + bid_id: + type: object + properties: + owner: + type: string + dseq: + type: string + format: uint64 + gseq: + type: integer + format: int64 + oseq: + type: integer + format: int64 + provider: + type: string + description: |- + BidID stores owner and all other seq numbers + A successful bid becomes a Lease(ID). + state: + type: string + enum: + - invalid + - open + - active + - lost + - closed + default: invalid + description: >- + - invalid: Prefix should start with 0 in enum. So declaring dummy + state + - open: BidOpen denotes state for bid open + - active: BidMatched denotes state for bid open + - lost: BidLost denotes state for bid lost + - closed: BidClosed denotes state for bid closed + title: State is an enum which refers to state of bid + price: + type: object + properties: + denom: + type: string + amount: + type: string + description: |- + Coin defines a token with a denomination and an amount. - field. Example (for message [google.protobuf.Duration][]): + NOTE: The amount field is an Int which implements the custom method + signatures required by gogoproto. + created_at: + type: string + format: int64 + title: 'Bid stores BidID, state of bid and price' + akash.market.v1beta1.Bid.State: + type: string + enum: + - invalid + - open + - active + - lost + - closed + default: invalid + description: |- + - invalid: Prefix should start with 0 in enum. So declaring dummy state + - open: BidOpen denotes state for bid open + - active: BidMatched denotes state for bid open + - lost: BidLost denotes state for bid lost + - closed: BidClosed denotes state for bid closed + title: State is an enum which refers to state of bid + akash.market.v1beta1.BidFilters: + type: object + properties: + owner: + type: string + dseq: + type: string + format: uint64 + gseq: + type: integer + format: int64 + oseq: + type: integer + format: int64 + provider: + type: string + state: + type: string + title: BidFilters defines flags for bid list filter + akash.market.v1beta1.BidID: + type: object + properties: + owner: + type: string + dseq: + type: string + format: uint64 + gseq: + type: integer + format: int64 + oseq: + type: integer + format: int64 + provider: + type: string + description: |- + BidID stores owner and all other seq numbers + A successful bid becomes a Lease(ID). + akash.market.v1beta1.Lease: + type: object + properties: + lease_id: + type: object + properties: + owner: + type: string + dseq: + type: string + format: uint64 + gseq: + type: integer + format: int64 + oseq: + type: integer + format: int64 + provider: + type: string + title: LeaseID stores bid details of lease + state: + type: string + enum: + - invalid + - active + - insufficient_funds + - closed + default: invalid + description: >- + - invalid: Prefix should start with 0 in enum. So declaring dummy + state + - active: LeaseActive denotes state for lease active + - insufficient_funds: LeaseInsufficientFunds denotes state for lease insufficient_funds + - closed: LeaseClosed denotes state for lease closed + title: State is an enum which refers to state of lease + price: + type: object + properties: + denom: + type: string + amount: + type: string + description: |- + Coin defines a token with a denomination and an amount. - { - "@type": "type.googleapis.com/google.protobuf.Duration", - "value": "1.212s" - } - parameters: - - name: connection_id - description: connection identifier - in: path - required: true - type: string - - name: version_number - in: path - required: true - type: string - format: uint64 - - name: version_height - in: path - required: true - type: string - format: uint64 - tags: - - Query - /ibc_transfer/v1beta1/denom_traces: - get: - summary: DenomTraces queries all denomination traces. - operationId: DenomTraces - responses: - '200': - description: A successful response. - schema: + NOTE: The amount field is an Int which implements the custom method + signatures required by gogoproto. + created_at: + type: string + format: int64 + title: 'Lease stores LeaseID, state of lease and price' + akash.market.v1beta1.Lease.State: + type: string + enum: + - invalid + - active + - insufficient_funds + - closed + default: invalid + description: |- + - invalid: Prefix should start with 0 in enum. So declaring dummy state + - active: LeaseActive denotes state for lease active + - insufficient_funds: LeaseInsufficientFunds denotes state for lease insufficient_funds + - closed: LeaseClosed denotes state for lease closed + title: State is an enum which refers to state of lease + akash.market.v1beta1.LeaseFilters: + type: object + properties: + owner: + type: string + dseq: + type: string + format: uint64 + gseq: + type: integer + format: int64 + oseq: + type: integer + format: int64 + provider: + type: string + state: + type: string + title: LeaseFilters defines flags for lease list filter + akash.market.v1beta1.LeaseID: + type: object + properties: + owner: + type: string + dseq: + type: string + format: uint64 + gseq: + type: integer + format: int64 + oseq: + type: integer + format: int64 + provider: + type: string + title: LeaseID stores bid details of lease + akash.market.v1beta1.Order: + type: object + properties: + order_id: + type: object + properties: + owner: + type: string + dseq: + type: string + format: uint64 + gseq: + type: integer + format: int64 + oseq: + type: integer + format: int64 + title: OrderID stores owner and all other seq numbers + state: + type: string + enum: + - invalid + - open + - active + - closed + default: invalid + description: >- + - invalid: Prefix should start with 0 in enum. So declaring dummy + state + - open: OrderOpen denotes state for order open + - active: OrderMatched denotes state for order matched + - closed: OrderClosed denotes state for order lost + title: State is an enum which refers to state of order + spec: + type: object + properties: + name: + type: string + requirements: type: object properties: - denom_traces: + signed_by: + title: >- + SignedBy list of keys that tenants expect to have signatures + from + type: object + properties: + all_of: + type: array + items: + type: string + title: all_of all keys in this list must have signed attributes + any_of: + type: array + items: + type: string + title: >- + any_of at least of of the keys from the list must have + signed attributes + attributes: type: array items: type: object properties: - path: + key: + type: string + value: + type: string + title: Attribute represents key value pair + title: Attribute list of attributes tenant expects from the provider + title: PlacementRequirements + resources: + type: array + items: + type: object + properties: + resources: + type: object + properties: + cpu: + type: object + properties: + units: + type: object + properties: + val: + type: string + format: byte + title: 'Unit stores cpu, memory and storage metrics' + attributes: + type: array + items: + type: object + properties: + key: + type: string + value: + type: string + title: Attribute represents key value pair + title: CPU stores resource units and cpu config attributes + memory: + type: object + properties: + quantity: + type: object + properties: + val: + type: string + format: byte + title: 'Unit stores cpu, memory and storage metrics' + attributes: + type: array + items: + type: object + properties: + key: + type: string + value: + type: string + title: Attribute represents key value pair + title: Memory stores resource quantity and memory attributes + storage: + type: object + properties: + quantity: + type: object + properties: + val: + type: string + format: byte + title: 'Unit stores cpu, memory and storage metrics' + attributes: + type: array + items: + type: object + properties: + key: + type: string + value: + type: string + title: Attribute represents key value pair + title: Storage stores resource quantity and storage attributes + endpoints: + type: array + items: + type: object + properties: + kind: + type: string + enum: + - SHARED_HTTP + - RANDOM_PORT + default: SHARED_HTTP + description: >- + - SHARED_HTTP: Describes an endpoint that becomes + a Kubernetes Ingress + - RANDOM_PORT: Describes an endpoint that becomes a Kubernetes NodePort + title: >- + This describes how the endpoint is implemented + when the lease is deployed + title: Endpoint describes a publicly accessible IP service + title: >- + ResourceUnits describes all available resources types for + deployment/node etc + + if field is nil resource is not present in the given + data-structure + count: + type: integer + format: int64 + price: + type: object + properties: + denom: type: string - description: >- - path defines the chain of port/channel identifiers used - for tracing the - - source of the fungible token. - base_denom: + amount: type: string - description: base denomination of the relayed fungible token. description: >- - DenomTrace contains the base denomination for ICS20 fungible - tokens and the + Coin defines a token with a denomination and an amount. - source tracing information path. - description: denom_traces returns all denominations trace information. - pagination: - description: pagination defines the pagination in the response. - type: object - properties: - next_key: - type: string - format: byte - title: |- - next_key is the key to be passed to PageRequest.key to - query the next page most efficiently - total: - type: string - format: uint64 - title: >- - total is total number of results available if - PageRequest.count_total - was set, its value is undefined otherwise - description: >- - QueryConnectionsResponse is the response type for the - Query/DenomTraces RPC + NOTE: The amount field is an Int which implements the custom + method - method. - default: - description: An unexpected error response. - schema: + signatures required by gogoproto. + title: 'Resource stores unit, total count and price of resource' + title: GroupSpec stores group specifications + created_at: + type: string + format: int64 + title: 'Order stores orderID, state of order and other details' + akash.market.v1beta1.Order.State: + type: string + enum: + - invalid + - open + - active + - closed + default: invalid + description: |- + - invalid: Prefix should start with 0 in enum. So declaring dummy state + - open: OrderOpen denotes state for order open + - active: OrderMatched denotes state for order matched + - closed: OrderClosed denotes state for order lost + title: State is an enum which refers to state of order + akash.market.v1beta1.OrderFilters: + type: object + properties: + owner: + type: string + dseq: + type: string + format: uint64 + gseq: + type: integer + format: int64 + oseq: + type: integer + format: int64 + state: + type: string + title: OrderFilters defines flags for order list filter + akash.market.v1beta1.OrderID: + type: object + properties: + owner: + type: string + dseq: + type: string + format: uint64 + gseq: + type: integer + format: int64 + oseq: + type: integer + format: int64 + title: OrderID stores owner and all other seq numbers + akash.market.v1beta1.QueryBidResponse: + type: object + properties: + bid: + type: object + properties: + bid_id: type: object properties: - error: + owner: type: string - code: + dseq: + type: string + format: uint64 + gseq: type: integer - format: int32 - message: + format: int64 + oseq: + type: integer + format: int64 + provider: type: string - details: - type: array - items: - type: object - properties: - type_url: - type: string - value: - type: string - format: byte - parameters: - - name: pagination.key - description: |- - key is a value returned in PageResponse.next_key to begin - querying the next page most efficiently. Only one of offset or key - should be set. - in: query - required: false - type: string - format: byte - - name: pagination.offset - description: >- - offset is a numeric offset that can be used when key is unavailable. - - It is less efficient than using key. Only one of offset or key - should - - be set. - in: query - required: false - type: string - format: uint64 - - name: pagination.limit - description: >- - limit is the total number of results to be returned in the result - page. - - If left empty it will default to a value to be set by each app. - in: query - required: false - type: string - format: uint64 - - name: pagination.count_total - description: >- - count_total is set to true to indicate that the result set should - include - - a count of the total number of items available for pagination in - UIs. - - count_total is only respected when offset is used. It is ignored - when key - - is set. - in: query - required: false - type: boolean - tags: - - Query - '/ibc_transfer/v1beta1/denom_traces/{hash}': - get: - summary: DenomTrace queries a denomination trace information. - operationId: DenomTrace - responses: - '200': - description: A successful response. - schema: + description: |- + BidID stores owner and all other seq numbers + A successful bid becomes a Lease(ID). + state: + type: string + enum: + - invalid + - open + - active + - lost + - closed + default: invalid + description: >- + - invalid: Prefix should start with 0 in enum. So declaring dummy + state + - open: BidOpen denotes state for bid open + - active: BidMatched denotes state for bid open + - lost: BidLost denotes state for bid lost + - closed: BidClosed denotes state for bid closed + title: State is an enum which refers to state of bid + price: type: object properties: - denom_trace: - description: >- - denom_trace returns the requested denomination trace - information. - type: object - properties: - path: - type: string - description: >- - path defines the chain of port/channel identifiers used - for tracing the - - source of the fungible token. - base_denom: - type: string - description: base denomination of the relayed fungible token. + denom: + type: string + amount: + type: string description: >- - QueryDenomTraceResponse is the response type for the - Query/DenomTrace RPC + Coin defines a token with a denomination and an amount. - method. - default: - description: An unexpected error response. - schema: + + NOTE: The amount field is an Int which implements the custom + method + + signatures required by gogoproto. + created_at: + type: string + format: int64 + title: 'Bid stores BidID, state of bid and price' + escrow_account: + type: object + properties: + id: type: object properties: - error: + scope: type: string - code: - type: integer - format: int32 - message: + xid: type: string - details: - type: array - items: - type: object - properties: - type_url: - type: string - value: - type: string - format: byte - parameters: - - name: hash - description: hash (in hex format) of the denomination trace information. - in: path - required: true - type: string - tags: - - Query - /ibc_transfer/v1beta1/params: - get: - summary: Params queries all parameters of the ibc-transfer module. - operationId: IBCTransferParams - responses: - '200': - description: A successful response. - schema: + title: AccountID is the account identifier + owner: + type: string + state: + type: string + enum: + - invalid + - open + - closed + - overdrawn + default: invalid + description: |- + - invalid: AccountStateInvalid is an invalid state + - open: AccountOpen is the state when an account is open + - closed: AccountClosed is the state when an account is closed + - overdrawn: AccountOverdrawn is the state when an account is overdrawn + title: State stores state for an escrow account + balance: type: object properties: - params: - description: params defines the parameters of the module. - type: object - properties: - send_enabled: - type: boolean - description: >- - send_enabled enables or disables all cross-chain token - transfers from this + denom: + type: string + amount: + type: string + description: >- + Coin defines a token with a denomination and an amount. - chain. - receive_enabled: - type: boolean - description: >- - receive_enabled enables or disables all cross-chain token - transfers to this - chain. - description: >- - QueryParamsResponse is the response type for the Query/Params RPC - method. - default: - description: An unexpected error response. - schema: + NOTE: The amount field is an Int which implements the custom + method + + signatures required by gogoproto. + transferred: type: object properties: - error: + denom: type: string - code: - type: integer - format: int32 - message: + amount: type: string - details: - type: array - items: - type: object - properties: - type_url: - type: string - value: - type: string - format: byte - tags: - - Query -definitions: - akash.base.v1beta1.Attribute: - type: object - properties: - key: - type: string - value: - type: string - title: Attribute represents key value pair - akash.base.v1beta1.CPU: + description: >- + Coin defines a token with a denomination and an amount. + + + NOTE: The amount field is an Int which implements the custom + method + + signatures required by gogoproto. + settled_at: + type: string + format: int64 + title: Account stores state for an escrow account + title: QueryBidResponse is response type for the Query/Bid RPC method + akash.market.v1beta1.QueryBidsResponse: type: object properties: - units: - type: object - properties: - val: - type: string - format: byte - title: 'Unit stores cpu, memory and storage metrics' - attributes: + bids: type: array items: type: object properties: - key: - type: string - value: - type: string - title: Attribute represents key value pair - title: CPU stores resource units and cpu config attributes - akash.base.v1beta1.Endpoint: - type: object - title: Endpoint describes a publicly accessible IP service - akash.base.v1beta1.Memory: - type: object - properties: - quantity: + bid: + type: object + properties: + bid_id: + type: object + properties: + owner: + type: string + dseq: + type: string + format: uint64 + gseq: + type: integer + format: int64 + oseq: + type: integer + format: int64 + provider: + type: string + description: |- + BidID stores owner and all other seq numbers + A successful bid becomes a Lease(ID). + state: + type: string + enum: + - invalid + - open + - active + - lost + - closed + default: invalid + description: >- + - invalid: Prefix should start with 0 in enum. So declaring + dummy state + - open: BidOpen denotes state for bid open + - active: BidMatched denotes state for bid open + - lost: BidLost denotes state for bid lost + - closed: BidClosed denotes state for bid closed + title: State is an enum which refers to state of bid + price: + type: object + properties: + denom: + type: string + amount: + type: string + description: >- + Coin defines a token with a denomination and an amount. + + + NOTE: The amount field is an Int which implements the custom + method + + signatures required by gogoproto. + created_at: + type: string + format: int64 + title: 'Bid stores BidID, state of bid and price' + escrow_account: + type: object + properties: + id: + type: object + properties: + scope: + type: string + xid: + type: string + title: AccountID is the account identifier + owner: + type: string + state: + type: string + enum: + - invalid + - open + - closed + - overdrawn + default: invalid + description: |- + - invalid: AccountStateInvalid is an invalid state + - open: AccountOpen is the state when an account is open + - closed: AccountClosed is the state when an account is closed + - overdrawn: AccountOverdrawn is the state when an account is overdrawn + title: State stores state for an escrow account + balance: + type: object + properties: + denom: + type: string + amount: + type: string + description: >- + Coin defines a token with a denomination and an amount. + + + NOTE: The amount field is an Int which implements the custom + method + + signatures required by gogoproto. + transferred: + type: object + properties: + denom: + type: string + amount: + type: string + description: >- + Coin defines a token with a denomination and an amount. + + + NOTE: The amount field is an Int which implements the custom + method + + signatures required by gogoproto. + settled_at: + type: string + format: int64 + title: Account stores state for an escrow account + title: QueryBidResponse is response type for the Query/Bid RPC method + pagination: type: object properties: - val: + next_key: type: string format: byte - title: 'Unit stores cpu, memory and storage metrics' - attributes: - type: array - items: - type: object - properties: - key: - type: string - value: - type: string - title: Attribute represents key value pair - title: Memory stores resource quantity and memory attributes - akash.base.v1beta1.PlacementRequirements: - type: object - properties: - signed_by: - title: SignedBy list of keys that tenants expect to have signatures from - type: object - properties: - all_of: - type: array - items: - type: string - title: all_of all keys in this list must have signed attributes - any_of: - type: array - items: - type: string + title: |- + next_key is the key to be passed to PageRequest.key to + query the next page most efficiently + total: + type: string + format: uint64 title: >- - any_of at least of of the keys from the list must have signed - attributes - attributes: - type: array - items: - type: object - properties: - key: - type: string - value: - type: string - title: Attribute represents key value pair - title: Attribute list of attributes tenant expects from the provider - title: PlacementRequirements - akash.base.v1beta1.ResourceUnits: + total is total number of results available if + PageRequest.count_total + + was set, its value is undefined otherwise + description: |- + PageResponse is to be embedded in gRPC response messages where the + corresponding request message has used PageRequest. + + message SomeResponse { + repeated Bar results = 1; + PageResponse page = 2; + } + title: QueryBidsResponse is response type for the Query/Bids RPC method + akash.market.v1beta1.QueryLeaseResponse: type: object properties: - cpu: + lease: type: object properties: - units: + lease_id: + type: object + properties: + owner: + type: string + dseq: + type: string + format: uint64 + gseq: + type: integer + format: int64 + oseq: + type: integer + format: int64 + provider: + type: string + title: LeaseID stores bid details of lease + state: + type: string + enum: + - invalid + - active + - insufficient_funds + - closed + default: invalid + description: >- + - invalid: Prefix should start with 0 in enum. So declaring dummy + state + - active: LeaseActive denotes state for lease active + - insufficient_funds: LeaseInsufficientFunds denotes state for lease insufficient_funds + - closed: LeaseClosed denotes state for lease closed + title: State is an enum which refers to state of lease + price: type: object properties: - val: + denom: type: string - format: byte - title: 'Unit stores cpu, memory and storage metrics' - attributes: - type: array - items: - type: object - properties: - key: - type: string - value: - type: string - title: Attribute represents key value pair - title: CPU stores resource units and cpu config attributes - memory: + amount: + type: string + description: >- + Coin defines a token with a denomination and an amount. + + + NOTE: The amount field is an Int which implements the custom + method + + signatures required by gogoproto. + created_at: + type: string + format: int64 + title: 'Lease stores LeaseID, state of lease and price' + escrow_payment: type: object properties: - quantity: + account_id: type: object properties: - val: + scope: type: string - format: byte - title: 'Unit stores cpu, memory and storage metrics' - attributes: - type: array - items: + xid: + type: string + title: AccountID is the account identifier + payment_id: + type: string + owner: + type: string + state: + type: string + enum: + - invalid + - open + - closed + - overdrawn + default: invalid + description: >- + - invalid: PaymentStateInvalid is the state when the payment is + invalid + - open: PaymentStateOpen is the state when the payment is open + - closed: PaymentStateClosed is the state when the payment is closed + - overdrawn: PaymentStateOverdrawn is the state when the payment is overdrawn + title: Payment State + rate: + type: object + properties: + denom: + type: string + amount: + type: string + description: >- + Coin defines a token with a denomination and an amount. + + + NOTE: The amount field is an Int which implements the custom + method + + signatures required by gogoproto. + balance: + type: object + properties: + denom: + type: string + amount: + type: string + description: >- + Coin defines a token with a denomination and an amount. + + + NOTE: The amount field is an Int which implements the custom + method + + signatures required by gogoproto. + withdrawn: + type: object + properties: + denom: + type: string + amount: + type: string + description: >- + Coin defines a token with a denomination and an amount. + + + NOTE: The amount field is an Int which implements the custom + method + + signatures required by gogoproto. + title: Payment stores state for a payment + title: QueryLeaseResponse is response type for the Query/Lease RPC method + akash.market.v1beta1.QueryLeasesResponse: + type: object + properties: + leases: + type: array + items: + type: object + properties: + lease: type: object properties: - key: + lease_id: + type: object + properties: + owner: + type: string + dseq: + type: string + format: uint64 + gseq: + type: integer + format: int64 + oseq: + type: integer + format: int64 + provider: + type: string + title: LeaseID stores bid details of lease + state: type: string - value: + enum: + - invalid + - active + - insufficient_funds + - closed + default: invalid + description: >- + - invalid: Prefix should start with 0 in enum. So declaring + dummy state + - active: LeaseActive denotes state for lease active + - insufficient_funds: LeaseInsufficientFunds denotes state for lease insufficient_funds + - closed: LeaseClosed denotes state for lease closed + title: State is an enum which refers to state of lease + price: + type: object + properties: + denom: + type: string + amount: + type: string + description: >- + Coin defines a token with a denomination and an amount. + + + NOTE: The amount field is an Int which implements the custom + method + + signatures required by gogoproto. + created_at: type: string - title: Attribute represents key value pair - title: Memory stores resource quantity and memory attributes - storage: - type: object - properties: - quantity: - type: object - properties: - val: - type: string - format: byte - title: 'Unit stores cpu, memory and storage metrics' - attributes: - type: array - items: + format: int64 + title: 'Lease stores LeaseID, state of lease and price' + escrow_payment: type: object properties: - key: + account_id: + type: object + properties: + scope: + type: string + xid: + type: string + title: AccountID is the account identifier + payment_id: type: string - value: + owner: type: string - title: Attribute represents key value pair - title: Storage stores resource quantity and storage attributes - endpoints: - type: array - items: - type: object - title: Endpoint describes a publicly accessible IP service - title: >- - ResourceUnits describes all available resources types for deployment/node - etc + state: + type: string + enum: + - invalid + - open + - closed + - overdrawn + default: invalid + description: >- + - invalid: PaymentStateInvalid is the state when the payment + is invalid + - open: PaymentStateOpen is the state when the payment is open + - closed: PaymentStateClosed is the state when the payment is closed + - overdrawn: PaymentStateOverdrawn is the state when the payment is overdrawn + title: Payment State + rate: + type: object + properties: + denom: + type: string + amount: + type: string + description: >- + Coin defines a token with a denomination and an amount. - if field is nil resource is not present in the given data-structure - akash.base.v1beta1.ResourceValue: - type: object - properties: - val: - type: string - format: byte - title: 'Unit stores cpu, memory and storage metrics' - akash.base.v1beta1.SignedBy: - type: object - properties: - all_of: - type: array - items: - type: string - title: all_of all keys in this list must have signed attributes - any_of: - type: array - items: - type: string - title: >- - any_of at least of of the keys from the list must have signed - attributes - title: >- - SignedBy represents validation accounts that tenant expects signatures for - provider attributes - AllOf has precedence i.e. if there is at least one entry AnyOf is ignored - regardless to how many + NOTE: The amount field is an Int which implements the custom + method - entries there + signatures required by gogoproto. + balance: + type: object + properties: + denom: + type: string + amount: + type: string + description: >- + Coin defines a token with a denomination and an amount. - this behaviour to be discussed - akash.base.v1beta1.Storage: - type: object - properties: - quantity: + + NOTE: The amount field is an Int which implements the custom + method + + signatures required by gogoproto. + withdrawn: + type: object + properties: + denom: + type: string + amount: + type: string + description: >- + Coin defines a token with a denomination and an amount. + + + NOTE: The amount field is an Int which implements the custom + method + + signatures required by gogoproto. + title: Payment stores state for a payment + title: QueryLeaseResponse is response type for the Query/Lease RPC method + pagination: type: object properties: - val: + next_key: type: string format: byte - title: 'Unit stores cpu, memory and storage metrics' - attributes: - type: array - items: - type: object - properties: - key: - type: string - value: - type: string - title: Attribute represents key value pair - title: Storage stores resource quantity and storage attributes - akash.deployment.v1beta1.Deployment: + title: |- + next_key is the key to be passed to PageRequest.key to + query the next page most efficiently + total: + type: string + format: uint64 + title: >- + total is total number of results available if + PageRequest.count_total + + was set, its value is undefined otherwise + description: |- + PageResponse is to be embedded in gRPC response messages where the + corresponding request message has used PageRequest. + + message SomeResponse { + repeated Bar results = 1; + PageResponse page = 2; + } + title: QueryLeasesResponse is response type for the Query/Leases RPC method + akash.market.v1beta1.QueryOrderResponse: type: object properties: - deployment_id: + order: type: object properties: - owner: - type: string - dseq: + order_id: + type: object + properties: + owner: + type: string + dseq: + type: string + format: uint64 + gseq: + type: integer + format: int64 + oseq: + type: integer + format: int64 + title: OrderID stores owner and all other seq numbers + state: type: string - format: uint64 - title: DeploymentID stores owner and sequence number - state: - type: string - enum: - - invalid - - active - - closed - default: invalid - description: >- - - invalid: Prefix should start with 0 in enum. So declaring dummy - state - - active: DeploymentActive denotes state for deployment active - - closed: DeploymentClosed denotes state for deployment closed - title: State is an enum which refers to state of deployment - version: - type: string - format: byte - title: 'Deployment stores deploymentID, state and version details' - akash.deployment.v1beta1.Deployment.State: - type: string - enum: - - invalid - - active - - closed - default: invalid - description: |- - - invalid: Prefix should start with 0 in enum. So declaring dummy state - - active: DeploymentActive denotes state for deployment active - - closed: DeploymentClosed denotes state for deployment closed - title: State is an enum which refers to state of deployment - akash.deployment.v1beta1.DeploymentFilters: - type: object - properties: - owner: - type: string - dseq: - type: string - format: uint64 - state: - type: string - title: DeploymentFilters defines filters used to filter deployments - akash.deployment.v1beta1.DeploymentID: - type: object - properties: - owner: - type: string - dseq: - type: string - format: uint64 - title: DeploymentID stores owner and sequence number - akash.deployment.v1beta1.DeploymentResponse: + enum: + - invalid + - open + - active + - closed + default: invalid + description: >- + - invalid: Prefix should start with 0 in enum. So declaring dummy + state + - open: OrderOpen denotes state for order open + - active: OrderMatched denotes state for order matched + - closed: OrderClosed denotes state for order lost + title: State is an enum which refers to state of order + spec: + type: object + properties: + name: + type: string + requirements: + type: object + properties: + signed_by: + title: >- + SignedBy list of keys that tenants expect to have + signatures from + type: object + properties: + all_of: + type: array + items: + type: string + title: >- + all_of all keys in this list must have signed + attributes + any_of: + type: array + items: + type: string + title: >- + any_of at least of of the keys from the list must have + signed attributes + attributes: + type: array + items: + type: object + properties: + key: + type: string + value: + type: string + title: Attribute represents key value pair + title: >- + Attribute list of attributes tenant expects from the + provider + title: PlacementRequirements + resources: + type: array + items: + type: object + properties: + resources: + type: object + properties: + cpu: + type: object + properties: + units: + type: object + properties: + val: + type: string + format: byte + title: 'Unit stores cpu, memory and storage metrics' + attributes: + type: array + items: + type: object + properties: + key: + type: string + value: + type: string + title: Attribute represents key value pair + title: CPU stores resource units and cpu config attributes + memory: + type: object + properties: + quantity: + type: object + properties: + val: + type: string + format: byte + title: 'Unit stores cpu, memory and storage metrics' + attributes: + type: array + items: + type: object + properties: + key: + type: string + value: + type: string + title: Attribute represents key value pair + title: >- + Memory stores resource quantity and memory + attributes + storage: + type: object + properties: + quantity: + type: object + properties: + val: + type: string + format: byte + title: 'Unit stores cpu, memory and storage metrics' + attributes: + type: array + items: + type: object + properties: + key: + type: string + value: + type: string + title: Attribute represents key value pair + title: >- + Storage stores resource quantity and storage + attributes + endpoints: + type: array + items: + type: object + properties: + kind: + type: string + enum: + - SHARED_HTTP + - RANDOM_PORT + default: SHARED_HTTP + description: >- + - SHARED_HTTP: Describes an endpoint that + becomes a Kubernetes Ingress + - RANDOM_PORT: Describes an endpoint that becomes a Kubernetes NodePort + title: >- + This describes how the endpoint is implemented + when the lease is deployed + title: >- + Endpoint describes a publicly accessible IP + service + title: >- + ResourceUnits describes all available resources types + for deployment/node etc + + if field is nil resource is not present in the given + data-structure + count: + type: integer + format: int64 + price: + type: object + properties: + denom: + type: string + amount: + type: string + description: >- + Coin defines a token with a denomination and an amount. + + + NOTE: The amount field is an Int which implements the + custom method + + signatures required by gogoproto. + title: 'Resource stores unit, total count and price of resource' + title: GroupSpec stores group specifications + created_at: + type: string + format: int64 + title: 'Order stores orderID, state of order and other details' + title: QueryOrderResponse is response type for the Query/Order RPC method + akash.market.v1beta1.QueryOrdersResponse: type: object properties: - deployment: - type: object - properties: - deployment_id: - type: object - properties: - owner: - type: string - dseq: - type: string - format: uint64 - title: DeploymentID stores owner and sequence number - state: - type: string - enum: - - invalid - - active - - closed - default: invalid - description: >- - - invalid: Prefix should start with 0 in enum. So declaring dummy - state - - active: DeploymentActive denotes state for deployment active - - closed: DeploymentClosed denotes state for deployment closed - title: State is an enum which refers to state of deployment - version: - type: string - format: byte - title: 'Deployment stores deploymentID, state and version details' - groups: + orders: type: array items: type: object properties: - group_id: + order_id: type: object properties: owner: @@ -26513,29 +27939,26 @@ definitions: gseq: type: integer format: int64 - title: >- - GroupID stores owner, deployment sequence number and group - sequence number + oseq: + type: integer + format: int64 + title: OrderID stores owner and all other seq numbers state: type: string enum: - invalid - open - - ordered - - matched - - insufficient_funds + - active - closed default: invalid description: >- - invalid: Prefix should start with 0 in enum. So declaring dummy state - - open: GroupOpen denotes state for group open - - ordered: GroupOrdered denotes state for group ordered - - matched: GroupMatched denotes state for group matched - - insufficient_funds: GroupInsufficientFunds denotes state for group insufficient_funds - - closed: GroupClosed denotes state for group closed - title: State is an enum which refers to state of group - group_spec: + - open: OrderOpen denotes state for order open + - active: OrderMatched denotes state for order matched + - closed: OrderClosed denotes state for order lost + title: State is an enum which refers to state of order + spec: type: object properties: name: @@ -26658,6 +28081,20 @@ definitions: type: array items: type: object + properties: + kind: + type: string + enum: + - SHARED_HTTP + - RANDOM_PORT + default: SHARED_HTTP + description: >- + - SHARED_HTTP: Describes an endpoint that + becomes a Kubernetes Ingress + - RANDOM_PORT: Describes an endpoint that becomes a Kubernetes NodePort + title: >- + This describes how the endpoint is + implemented when the lease is deployed title: >- Endpoint describes a publicly accessible IP service @@ -26687,252 +28124,399 @@ definitions: signatures required by gogoproto. title: 'Resource stores unit, total count and price of resource' - order_bid_duration: - type: string - format: int64 title: GroupSpec stores group specifications - title: 'Group stores group id, state and specifications of group' - version: - type: string - format: byte - title: >- - DeploymentResponse represents details of deployment along with group - details - akash.deployment.v1beta1.Group: + created_at: + type: string + format: int64 + title: 'Order stores orderID, state of order and other details' + pagination: + type: object + properties: + next_key: + type: string + format: byte + title: |- + next_key is the key to be passed to PageRequest.key to + query the next page most efficiently + total: + type: string + format: uint64 + title: >- + total is total number of results available if + PageRequest.count_total + + was set, its value is undefined otherwise + description: |- + PageResponse is to be embedded in gRPC response messages where the + corresponding request message has used PageRequest. + + message SomeResponse { + repeated Bar results = 1; + PageResponse page = 2; + } + title: QueryOrdersResponse is response type for the Query/Orders RPC method + akash.provider.v1beta1.Provider: type: object properties: - group_id: + owner: + type: string + host_uri: + type: string + attributes: + type: array + items: + type: object + properties: + key: + type: string + value: + type: string + title: Attribute represents key value pair + info: type: object properties: - owner: + email: type: string - dseq: + website: type: string - format: uint64 - gseq: - type: integer - format: int64 - title: >- - GroupID stores owner, deployment sequence number and group sequence - number - state: + title: ProviderInfo + title: Provider stores owner and host details + akash.provider.v1beta1.ProviderInfo: + type: object + properties: + email: type: string - enum: - - invalid - - open - - ordered - - matched - - insufficient_funds - - closed - default: invalid - description: >- - - invalid: Prefix should start with 0 in enum. So declaring dummy - state - - open: GroupOpen denotes state for group open - - ordered: GroupOrdered denotes state for group ordered - - matched: GroupMatched denotes state for group matched - - insufficient_funds: GroupInsufficientFunds denotes state for group insufficient_funds - - closed: GroupClosed denotes state for group closed - title: State is an enum which refers to state of group - group_spec: + website: + type: string + title: ProviderInfo + akash.provider.v1beta1.QueryProviderResponse: + type: object + properties: + provider: type: object properties: - name: + owner: type: string - requirements: + host_uri: + type: string + attributes: + type: array + items: + type: object + properties: + key: + type: string + value: + type: string + title: Attribute represents key value pair + info: type: object properties: - signed_by: - title: >- - SignedBy list of keys that tenants expect to have signatures - from + email: + type: string + website: + type: string + title: ProviderInfo + title: Provider stores owner and host details + title: QueryProviderResponse is response type for the Query/Provider RPC method + akash.provider.v1beta1.QueryProvidersResponse: + type: object + properties: + providers: + type: array + items: + type: object + properties: + owner: + type: string + host_uri: + type: string + attributes: + type: array + items: type: object properties: - all_of: - type: array - items: - type: string - title: all_of all keys in this list must have signed attributes - any_of: - type: array - items: - type: string - title: >- - any_of at least of of the keys from the list must have - signed attributes - attributes: - type: array - items: - type: object - properties: - key: - type: string - value: - type: string - title: Attribute represents key value pair - title: Attribute list of attributes tenant expects from the provider - title: PlacementRequirements - resources: - type: array - items: + key: + type: string + value: + type: string + title: Attribute represents key value pair + info: type: object properties: - resources: - type: object - properties: - cpu: - type: object - properties: - units: - type: object - properties: - val: - type: string - format: byte - title: 'Unit stores cpu, memory and storage metrics' - attributes: - type: array - items: - type: object - properties: - key: - type: string - value: - type: string - title: Attribute represents key value pair - title: CPU stores resource units and cpu config attributes - memory: - type: object - properties: - quantity: - type: object - properties: - val: - type: string - format: byte - title: 'Unit stores cpu, memory and storage metrics' - attributes: - type: array - items: - type: object - properties: - key: - type: string - value: - type: string - title: Attribute represents key value pair - title: Memory stores resource quantity and memory attributes - storage: - type: object - properties: - quantity: - type: object - properties: - val: - type: string - format: byte - title: 'Unit stores cpu, memory and storage metrics' - attributes: - type: array - items: - type: object - properties: - key: - type: string - value: - type: string - title: Attribute represents key value pair - title: Storage stores resource quantity and storage attributes - endpoints: - type: array - items: - type: object - title: Endpoint describes a publicly accessible IP service - title: >- - ResourceUnits describes all available resources types for - deployment/node etc - - if field is nil resource is not present in the given - data-structure - count: - type: integer - format: int64 - price: - type: object - properties: - denom: - type: string - amount: - type: string - description: >- - Coin defines a token with a denomination and an amount. - + email: + type: string + website: + type: string + title: ProviderInfo + title: Provider stores owner and host details + pagination: + type: object + properties: + next_key: + type: string + format: byte + title: |- + next_key is the key to be passed to PageRequest.key to + query the next page most efficiently + total: + type: string + format: uint64 + title: >- + total is total number of results available if + PageRequest.count_total - NOTE: The amount field is an Int which implements the custom - method + was set, its value is undefined otherwise + description: |- + PageResponse is to be embedded in gRPC response messages where the + corresponding request message has used PageRequest. - signatures required by gogoproto. - title: 'Resource stores unit, total count and price of resource' - order_bid_duration: + message SomeResponse { + repeated Bar results = 1; + PageResponse page = 2; + } + title: QueryProvidersResponse is response type for the Query/Providers RPC method + CheckTxResult: + type: object + properties: + code: + type: integer + data: + type: string + gas_used: + type: integer + gas_wanted: + type: integer + info: + type: string + log: + type: string + tags: + type: array + items: + type: object + properties: + key: + type: string + value: + type: string + example: + code: 0 + data: data + log: log + gas_used: 5000 + gas_wanted: 10000 + info: info + tags: + - '' + - '' + DeliverTxResult: + type: object + properties: + code: + type: integer + data: + type: string + gas_used: + type: integer + gas_wanted: + type: integer + info: + type: string + log: + type: string + tags: + type: array + items: + type: object + properties: + key: + type: string + value: + type: string + example: + code: 5 + data: data + log: log + gas_used: 5000 + gas_wanted: 10000 + info: info + tags: + - '' + - '' + BroadcastTxCommitResult: + type: object + properties: + check_tx: + type: object + properties: + code: + type: integer + data: type: string - format: int64 - title: GroupSpec stores group specifications - title: 'Group stores group id, state and specifications of group' - akash.deployment.v1beta1.Group.State: + gas_used: + type: integer + gas_wanted: + type: integer + info: + type: string + log: + type: string + tags: + type: array + items: + type: object + properties: + key: + type: string + value: + type: string + example: + code: 0 + data: data + log: log + gas_used: 5000 + gas_wanted: 10000 + info: info + tags: + - '' + - '' + deliver_tx: + type: object + properties: + code: + type: integer + data: + type: string + gas_used: + type: integer + gas_wanted: + type: integer + info: + type: string + log: + type: string + tags: + type: array + items: + type: object + properties: + key: + type: string + value: + type: string + example: + code: 5 + data: data + log: log + gas_used: 5000 + gas_wanted: 10000 + info: info + tags: + - '' + - '' + hash: + type: string + example: EE5F3404034C524501629B56E0DDC38FAD651F04 + height: + type: integer + KVPair: + type: object + properties: + key: + type: string + value: + type: string + Msg: type: string - enum: - - invalid - - open - - ordered - - matched - - insufficient_funds - - closed - default: invalid - description: |- - - invalid: Prefix should start with 0 in enum. So declaring dummy state - - open: GroupOpen denotes state for group open - - ordered: GroupOrdered denotes state for group ordered - - matched: GroupMatched denotes state for group matched - - insufficient_funds: GroupInsufficientFunds denotes state for group insufficient_funds - - closed: GroupClosed denotes state for group closed - title: State is an enum which refers to state of group - akash.deployment.v1beta1.GroupID: + Address: + type: string + description: bech32 encoded address + example: cosmos1depk54cuajgkzea6zpgkq36tnjwdzv4afc3d27 + ValidatorAddress: + type: string + description: bech32 encoded address + example: cosmosvaloper16xyempempp92x9hyzz9wrgf94r6j9h5f2w4n2l + Coin: type: object properties: - owner: + denom: type: string - dseq: + example: stake + amount: type: string - format: uint64 - gseq: - type: integer - format: int64 - title: 'GroupID stores owner, deployment sequence number and group sequence number' - akash.deployment.v1beta1.GroupSpec: + example: '50' + Hash: + type: string + example: EE5F3404034C524501629B56E0DDC38FAD651F04 + TxQuery: type: object properties: - name: + hash: type: string - requirements: + example: D085138D913993919295FF4B0A9107F1F2CDE0D37A87CE0644E217CBF3B49656 + height: + type: number + example: 368 + tx: type: object properties: - signed_by: - title: SignedBy list of keys that tenants expect to have signatures from + msg: + type: array + items: + type: string + fee: type: object properties: - all_of: - type: array - items: - type: string - title: all_of all keys in this list must have signed attributes - any_of: + gas: + type: string + amount: type: array items: - type: string - title: >- - any_of at least of of the keys from the list must have signed - attributes - attributes: + type: object + properties: + denom: + type: string + example: stake + amount: + type: string + example: '50' + memo: + type: string + signature: + type: object + properties: + signature: + type: string + example: >- + MEUCIQD02fsDPra8MtbRsyB1w7bqTM55Wu138zQbFcWx4+CFyAIge5WNPfKIuvzBZ69MyqHsqD8S1IwiEp+iUb6VSdtlpgY= + pub_key: + type: object + properties: + type: + type: string + example: tendermint/PubKeySecp256k1 + value: + type: string + example: Avz04VhtKJh8ACCVzlI8aTosGy0ikFXKIVHQ3jKMrosH + account_number: + type: string + example: '0' + sequence: + type: string + example: '0' + result: + type: object + properties: + log: + type: string + gas_wanted: + type: string + example: '200000' + gas_used: + type: string + example: '26354' + tags: type: array items: type: object @@ -26941,1171 +28525,1222 @@ definitions: type: string value: type: string - title: Attribute represents key value pair - title: Attribute list of attributes tenant expects from the provider - title: PlacementRequirements - resources: + PaginatedQueryTxs: + type: object + properties: + total_count: + type: number + example: 1 + count: + type: number + example: 1 + page_number: + type: number + example: 1 + page_total: + type: number + example: 1 + limit: + type: number + example: 30 + txs: type: array items: type: object properties: - resources: + hash: + type: string + example: D085138D913993919295FF4B0A9107F1F2CDE0D37A87CE0644E217CBF3B49656 + height: + type: number + example: 368 + tx: type: object properties: - cpu: + msg: + type: array + items: + type: string + fee: type: object properties: - units: - type: object - properties: - val: - type: string - format: byte - title: 'Unit stores cpu, memory and storage metrics' - attributes: + gas: + type: string + amount: type: array items: type: object properties: - key: + denom: type: string - value: + example: stake + amount: type: string - title: Attribute represents key value pair - title: CPU stores resource units and cpu config attributes - memory: + example: '50' + memo: + type: string + signature: type: object properties: - quantity: + signature: + type: string + example: >- + MEUCIQD02fsDPra8MtbRsyB1w7bqTM55Wu138zQbFcWx4+CFyAIge5WNPfKIuvzBZ69MyqHsqD8S1IwiEp+iUb6VSdtlpgY= + pub_key: type: object properties: - val: + type: type: string - format: byte - title: 'Unit stores cpu, memory and storage metrics' - attributes: - type: array - items: - type: object - properties: - key: - type: string - value: - type: string - title: Attribute represents key value pair - title: Memory stores resource quantity and memory attributes - storage: - type: object - properties: - quantity: - type: object - properties: - val: + example: tendermint/PubKeySecp256k1 + value: type: string - format: byte - title: 'Unit stores cpu, memory and storage metrics' - attributes: - type: array - items: - type: object - properties: - key: - type: string - value: - type: string - title: Attribute represents key value pair - title: Storage stores resource quantity and storage attributes - endpoints: + example: Avz04VhtKJh8ACCVzlI8aTosGy0ikFXKIVHQ3jKMrosH + account_number: + type: string + example: '0' + sequence: + type: string + example: '0' + result: + type: object + properties: + log: + type: string + gas_wanted: + type: string + example: '200000' + gas_used: + type: string + example: '26354' + tags: type: array items: type: object - title: Endpoint describes a publicly accessible IP service - title: >- - ResourceUnits describes all available resources types for - deployment/node etc - - if field is nil resource is not present in the given - data-structure - count: - type: integer - format: int64 - price: + properties: + key: + type: string + value: + type: string + StdTx: + type: object + properties: + msg: + type: array + items: + type: string + fee: + type: object + properties: + gas: + type: string + amount: + type: array + items: type: object properties: denom: type: string + example: stake amount: type: string - description: >- - Coin defines a token with a denomination and an amount. - - - NOTE: The amount field is an Int which implements the custom - method - - signatures required by gogoproto. - title: 'Resource stores unit, total count and price of resource' - order_bid_duration: + example: '50' + memo: type: string - format: int64 - title: GroupSpec stores group specifications - akash.deployment.v1beta1.QueryDeploymentResponse: + signature: + type: object + properties: + signature: + type: string + example: >- + MEUCIQD02fsDPra8MtbRsyB1w7bqTM55Wu138zQbFcWx4+CFyAIge5WNPfKIuvzBZ69MyqHsqD8S1IwiEp+iUb6VSdtlpgY= + pub_key: + type: object + properties: + type: + type: string + example: tendermint/PubKeySecp256k1 + value: + type: string + example: Avz04VhtKJh8ACCVzlI8aTosGy0ikFXKIVHQ3jKMrosH + account_number: + type: string + example: '0' + sequence: + type: string + example: '0' + BlockID: type: object properties: - deployment: + hash: + type: string + example: EE5F3404034C524501629B56E0DDC38FAD651F04 + parts: + type: object + properties: + total: + type: number + example: 0 + hash: + type: string + example: EE5F3404034C524501629B56E0DDC38FAD651F04 + BlockHeader: + type: object + properties: + chain_id: + type: string + example: cosmoshub-2 + height: + type: number + example: 1 + time: + type: string + example: '2017-12-30T05:53:09.287+01:00' + num_txs: + type: number + example: 0 + last_block_id: + type: object + properties: + hash: + type: string + example: EE5F3404034C524501629B56E0DDC38FAD651F04 + parts: + type: object + properties: + total: + type: number + example: 0 + hash: + type: string + example: EE5F3404034C524501629B56E0DDC38FAD651F04 + total_txs: + type: number + example: 35 + last_commit_hash: + type: string + example: EE5F3404034C524501629B56E0DDC38FAD651F04 + data_hash: + type: string + example: EE5F3404034C524501629B56E0DDC38FAD651F04 + validators_hash: + type: string + example: EE5F3404034C524501629B56E0DDC38FAD651F04 + next_validators_hash: + type: string + example: EE5F3404034C524501629B56E0DDC38FAD651F04 + consensus_hash: + type: string + example: EE5F3404034C524501629B56E0DDC38FAD651F04 + app_hash: + type: string + example: EE5F3404034C524501629B56E0DDC38FAD651F04 + last_results_hash: + type: string + example: EE5F3404034C524501629B56E0DDC38FAD651F04 + evidence_hash: + type: string + example: EE5F3404034C524501629B56E0DDC38FAD651F04 + proposer_address: + type: string + description: bech32 encoded address + example: cosmos1depk54cuajgkzea6zpgkq36tnjwdzv4afc3d27 + version: + type: object + properties: + block: + type: string + example: 10 + app: + type: string + example: 0 + Block: + type: object + properties: + header: type: object properties: - deployment: + chain_id: + type: string + example: cosmoshub-2 + height: + type: number + example: 1 + time: + type: string + example: '2017-12-30T05:53:09.287+01:00' + num_txs: + type: number + example: 0 + last_block_id: type: object properties: - deployment_id: + hash: + type: string + example: EE5F3404034C524501629B56E0DDC38FAD651F04 + parts: type: object properties: - owner: - type: string - dseq: + total: + type: number + example: 0 + hash: type: string - format: uint64 - title: DeploymentID stores owner and sequence number - state: + example: EE5F3404034C524501629B56E0DDC38FAD651F04 + total_txs: + type: number + example: 35 + last_commit_hash: + type: string + example: EE5F3404034C524501629B56E0DDC38FAD651F04 + data_hash: + type: string + example: EE5F3404034C524501629B56E0DDC38FAD651F04 + validators_hash: + type: string + example: EE5F3404034C524501629B56E0DDC38FAD651F04 + next_validators_hash: + type: string + example: EE5F3404034C524501629B56E0DDC38FAD651F04 + consensus_hash: + type: string + example: EE5F3404034C524501629B56E0DDC38FAD651F04 + app_hash: + type: string + example: EE5F3404034C524501629B56E0DDC38FAD651F04 + last_results_hash: + type: string + example: EE5F3404034C524501629B56E0DDC38FAD651F04 + evidence_hash: + type: string + example: EE5F3404034C524501629B56E0DDC38FAD651F04 + proposer_address: + type: string + description: bech32 encoded address + example: cosmos1depk54cuajgkzea6zpgkq36tnjwdzv4afc3d27 + version: + type: object + properties: + block: type: string - enum: - - invalid - - active - - closed - default: invalid - description: >- - - invalid: Prefix should start with 0 in enum. So declaring - dummy state - - active: DeploymentActive denotes state for deployment active - - closed: DeploymentClosed denotes state for deployment closed - title: State is an enum which refers to state of deployment - version: + example: 10 + app: type: string - format: byte - title: 'Deployment stores deploymentID, state and version details' - groups: + example: 0 + txs: + type: array + items: + type: string + evidence: + type: array + items: + type: string + last_commit: + type: object + properties: + block_id: + type: object + properties: + hash: + type: string + example: EE5F3404034C524501629B56E0DDC38FAD651F04 + parts: + type: object + properties: + total: + type: number + example: 0 + hash: + type: string + example: EE5F3404034C524501629B56E0DDC38FAD651F04 + precommits: type: array items: type: object properties: - group_id: - type: object - properties: - owner: - type: string - dseq: - type: string - format: uint64 - gseq: - type: integer - format: int64 - title: >- - GroupID stores owner, deployment sequence number and group - sequence number - state: + validator_address: type: string - enum: - - invalid - - open - - ordered - - matched - - insufficient_funds - - closed - default: invalid - description: >- - - invalid: Prefix should start with 0 in enum. So declaring - dummy state - - open: GroupOpen denotes state for group open - - ordered: GroupOrdered denotes state for group ordered - - matched: GroupMatched denotes state for group matched - - insufficient_funds: GroupInsufficientFunds denotes state for group insufficient_funds - - closed: GroupClosed denotes state for group closed - title: State is an enum which refers to state of group - group_spec: + validator_index: + type: string + example: '0' + height: + type: string + example: '0' + round: + type: string + example: '0' + timestamp: + type: string + example: '2017-12-30T05:53:09.287+01:00' + type: + type: number + example: 2 + block_id: type: object properties: - name: + hash: type: string - requirements: + example: EE5F3404034C524501629B56E0DDC38FAD651F04 + parts: type: object properties: - signed_by: - title: >- - SignedBy list of keys that tenants expect to have - signatures from - type: object - properties: - all_of: - type: array - items: - type: string - title: >- - all_of all keys in this list must have signed - attributes - any_of: - type: array - items: - type: string - title: >- - any_of at least of of the keys from the list - must have signed attributes - attributes: - type: array - items: - type: object - properties: - key: - type: string - value: - type: string - title: Attribute represents key value pair - title: >- - Attribute list of attributes tenant expects from the - provider - title: PlacementRequirements - resources: - type: array - items: - type: object - properties: - resources: - type: object - properties: - cpu: - type: object - properties: - units: - type: object - properties: - val: - type: string - format: byte - title: >- - Unit stores cpu, memory and storage - metrics - attributes: - type: array - items: - type: object - properties: - key: - type: string - value: - type: string - title: Attribute represents key value pair - title: >- - CPU stores resource units and cpu config - attributes - memory: - type: object - properties: - quantity: - type: object - properties: - val: - type: string - format: byte - title: >- - Unit stores cpu, memory and storage - metrics - attributes: - type: array - items: - type: object - properties: - key: - type: string - value: - type: string - title: Attribute represents key value pair - title: >- - Memory stores resource quantity and memory - attributes - storage: - type: object - properties: - quantity: - type: object - properties: - val: - type: string - format: byte - title: >- - Unit stores cpu, memory and storage - metrics - attributes: - type: array - items: - type: object - properties: - key: - type: string - value: - type: string - title: Attribute represents key value pair - title: >- - Storage stores resource quantity and storage - attributes - endpoints: - type: array - items: - type: object - title: >- - Endpoint describes a publicly accessible IP - service - title: >- - ResourceUnits describes all available resources - types for deployment/node etc - - if field is nil resource is not present in the - given data-structure - count: - type: integer - format: int64 - price: - type: object - properties: - denom: - type: string - amount: - type: string - description: >- - Coin defines a token with a denomination and an - amount. - - - NOTE: The amount field is an Int which implements - the custom method - - signatures required by gogoproto. - title: >- - Resource stores unit, total count and price of - resource - order_bid_duration: - type: string - format: int64 - title: GroupSpec stores group specifications - title: 'Group stores group id, state and specifications of group' - version: - type: string - format: byte - title: >- - DeploymentResponse represents details of deployment along with group - details - title: >- - QueryDeploymentResponse is response type for the Query/Deployment RPC - method - akash.deployment.v1beta1.QueryDeploymentsResponse: + total: + type: number + example: 0 + hash: + type: string + example: EE5F3404034C524501629B56E0DDC38FAD651F04 + signature: + type: string + example: >- + 7uTC74QlknqYWEwg7Vn6M8Om7FuZ0EO4bjvuj6rwH1mTUJrRuMMZvAAqT9VjNgP0RA/TDp6u/92AqrZfXJSpBQ== + BlockQuery: type: object properties: - deployments: - type: array - items: - type: object - properties: - deployment: - type: object - properties: - deployment_id: - type: object - properties: - owner: - type: string - dseq: - type: string - format: uint64 - title: DeploymentID stores owner and sequence number - state: - type: string - enum: - - invalid - - active - - closed - default: invalid - description: >- - - invalid: Prefix should start with 0 in enum. So declaring - dummy state - - active: DeploymentActive denotes state for deployment active - - closed: DeploymentClosed denotes state for deployment closed - title: State is an enum which refers to state of deployment - version: - type: string - format: byte - title: 'Deployment stores deploymentID, state and version details' - groups: - type: array - items: + block_meta: + type: object + properties: + header: + type: object + properties: + chain_id: + type: string + example: cosmoshub-2 + height: + type: number + example: 1 + time: + type: string + example: '2017-12-30T05:53:09.287+01:00' + num_txs: + type: number + example: 0 + last_block_id: type: object properties: - group_id: - type: object - properties: - owner: - type: string - dseq: - type: string - format: uint64 - gseq: - type: integer - format: int64 - title: >- - GroupID stores owner, deployment sequence number and group - sequence number - state: + hash: type: string - enum: - - invalid - - open - - ordered - - matched - - insufficient_funds - - closed - default: invalid - description: >- - - invalid: Prefix should start with 0 in enum. So - declaring dummy state - - open: GroupOpen denotes state for group open - - ordered: GroupOrdered denotes state for group ordered - - matched: GroupMatched denotes state for group matched - - insufficient_funds: GroupInsufficientFunds denotes state for group insufficient_funds - - closed: GroupClosed denotes state for group closed - title: State is an enum which refers to state of group - group_spec: + example: EE5F3404034C524501629B56E0DDC38FAD651F04 + parts: type: object properties: - name: - type: string - requirements: - type: object - properties: - signed_by: - title: >- - SignedBy list of keys that tenants expect to have - signatures from - type: object - properties: - all_of: - type: array - items: - type: string - title: >- - all_of all keys in this list must have signed - attributes - any_of: - type: array - items: - type: string - title: >- - any_of at least of of the keys from the list - must have signed attributes - attributes: - type: array - items: - type: object - properties: - key: - type: string - value: - type: string - title: Attribute represents key value pair - title: >- - Attribute list of attributes tenant expects from - the provider - title: PlacementRequirements - resources: - type: array - items: - type: object - properties: - resources: - type: object - properties: - cpu: - type: object - properties: - units: - type: object - properties: - val: - type: string - format: byte - title: >- - Unit stores cpu, memory and storage - metrics - attributes: - type: array - items: - type: object - properties: - key: - type: string - value: - type: string - title: Attribute represents key value pair - title: >- - CPU stores resource units and cpu config - attributes - memory: - type: object - properties: - quantity: - type: object - properties: - val: - type: string - format: byte - title: >- - Unit stores cpu, memory and storage - metrics - attributes: - type: array - items: - type: object - properties: - key: - type: string - value: - type: string - title: Attribute represents key value pair - title: >- - Memory stores resource quantity and memory - attributes - storage: - type: object - properties: - quantity: - type: object - properties: - val: - type: string - format: byte - title: >- - Unit stores cpu, memory and storage - metrics - attributes: - type: array - items: - type: object - properties: - key: - type: string - value: - type: string - title: Attribute represents key value pair - title: >- - Storage stores resource quantity and storage - attributes - endpoints: - type: array - items: - type: object - title: >- - Endpoint describes a publicly accessible - IP service - title: >- - ResourceUnits describes all available resources - types for deployment/node etc - - if field is nil resource is not present in the - given data-structure - count: - type: integer - format: int64 - price: - type: object - properties: - denom: - type: string - amount: - type: string - description: >- - Coin defines a token with a denomination and an - amount. - - - NOTE: The amount field is an Int which - implements the custom method - - signatures required by gogoproto. - title: >- - Resource stores unit, total count and price of - resource - order_bid_duration: + total: + type: number + example: 0 + hash: type: string - format: int64 - title: GroupSpec stores group specifications - title: 'Group stores group id, state and specifications of group' - version: - type: string - format: byte - title: >- - DeploymentResponse represents details of deployment along with group - details - pagination: - type: object - properties: - next_key: - type: string - format: byte - title: |- - next_key is the key to be passed to PageRequest.key to - query the next page most efficiently - total: - type: string - format: uint64 - title: >- - total is total number of results available if - PageRequest.count_total - - was set, its value is undefined otherwise - description: |- - PageResponse is to be embedded in gRPC response messages where the - corresponding request message has used PageRequest. - - message SomeResponse { - repeated Bar results = 1; - PageResponse page = 2; - } - title: >- - QueryDeploymentsResponse is response type for the Query/Deployments RPC - method - akash.deployment.v1beta1.QueryGroupResponse: - type: object - properties: - group: + example: EE5F3404034C524501629B56E0DDC38FAD651F04 + total_txs: + type: number + example: 35 + last_commit_hash: + type: string + example: EE5F3404034C524501629B56E0DDC38FAD651F04 + data_hash: + type: string + example: EE5F3404034C524501629B56E0DDC38FAD651F04 + validators_hash: + type: string + example: EE5F3404034C524501629B56E0DDC38FAD651F04 + next_validators_hash: + type: string + example: EE5F3404034C524501629B56E0DDC38FAD651F04 + consensus_hash: + type: string + example: EE5F3404034C524501629B56E0DDC38FAD651F04 + app_hash: + type: string + example: EE5F3404034C524501629B56E0DDC38FAD651F04 + last_results_hash: + type: string + example: EE5F3404034C524501629B56E0DDC38FAD651F04 + evidence_hash: + type: string + example: EE5F3404034C524501629B56E0DDC38FAD651F04 + proposer_address: + type: string + description: bech32 encoded address + example: cosmos1depk54cuajgkzea6zpgkq36tnjwdzv4afc3d27 + version: + type: object + properties: + block: + type: string + example: 10 + app: + type: string + example: 0 + block_id: + type: object + properties: + hash: + type: string + example: EE5F3404034C524501629B56E0DDC38FAD651F04 + parts: + type: object + properties: + total: + type: number + example: 0 + hash: + type: string + example: EE5F3404034C524501629B56E0DDC38FAD651F04 + block: type: object properties: - group_id: + header: type: object properties: - owner: + chain_id: type: string - dseq: + example: cosmoshub-2 + height: + type: number + example: 1 + time: type: string - format: uint64 - gseq: - type: integer - format: int64 - title: >- - GroupID stores owner, deployment sequence number and group - sequence number - state: - type: string - enum: - - invalid - - open - - ordered - - matched - - insufficient_funds - - closed - default: invalid - description: >- - - invalid: Prefix should start with 0 in enum. So declaring dummy - state - - open: GroupOpen denotes state for group open - - ordered: GroupOrdered denotes state for group ordered - - matched: GroupMatched denotes state for group matched - - insufficient_funds: GroupInsufficientFunds denotes state for group insufficient_funds - - closed: GroupClosed denotes state for group closed - title: State is an enum which refers to state of group - group_spec: + example: '2017-12-30T05:53:09.287+01:00' + num_txs: + type: number + example: 0 + last_block_id: + type: object + properties: + hash: + type: string + example: EE5F3404034C524501629B56E0DDC38FAD651F04 + parts: + type: object + properties: + total: + type: number + example: 0 + hash: + type: string + example: EE5F3404034C524501629B56E0DDC38FAD651F04 + total_txs: + type: number + example: 35 + last_commit_hash: + type: string + example: EE5F3404034C524501629B56E0DDC38FAD651F04 + data_hash: + type: string + example: EE5F3404034C524501629B56E0DDC38FAD651F04 + validators_hash: + type: string + example: EE5F3404034C524501629B56E0DDC38FAD651F04 + next_validators_hash: + type: string + example: EE5F3404034C524501629B56E0DDC38FAD651F04 + consensus_hash: + type: string + example: EE5F3404034C524501629B56E0DDC38FAD651F04 + app_hash: + type: string + example: EE5F3404034C524501629B56E0DDC38FAD651F04 + last_results_hash: + type: string + example: EE5F3404034C524501629B56E0DDC38FAD651F04 + evidence_hash: + type: string + example: EE5F3404034C524501629B56E0DDC38FAD651F04 + proposer_address: + type: string + description: bech32 encoded address + example: cosmos1depk54cuajgkzea6zpgkq36tnjwdzv4afc3d27 + version: + type: object + properties: + block: + type: string + example: 10 + app: + type: string + example: 0 + txs: + type: array + items: + type: string + evidence: + type: array + items: + type: string + last_commit: type: object properties: - name: - type: string - requirements: + block_id: type: object properties: - signed_by: - title: >- - SignedBy list of keys that tenants expect to have - signatures from + hash: + type: string + example: EE5F3404034C524501629B56E0DDC38FAD651F04 + parts: type: object properties: - all_of: - type: array - items: - type: string - title: >- - all_of all keys in this list must have signed - attributes - any_of: - type: array - items: - type: string - title: >- - any_of at least of of the keys from the list must have - signed attributes - attributes: - type: array - items: - type: object - properties: - key: - type: string - value: - type: string - title: Attribute represents key value pair - title: >- - Attribute list of attributes tenant expects from the - provider - title: PlacementRequirements - resources: + total: + type: number + example: 0 + hash: + type: string + example: EE5F3404034C524501629B56E0DDC38FAD651F04 + precommits: type: array items: type: object properties: - resources: + validator_address: + type: string + validator_index: + type: string + example: '0' + height: + type: string + example: '0' + round: + type: string + example: '0' + timestamp: + type: string + example: '2017-12-30T05:53:09.287+01:00' + type: + type: number + example: 2 + block_id: type: object properties: - cpu: - type: object - properties: - units: - type: object - properties: - val: - type: string - format: byte - title: 'Unit stores cpu, memory and storage metrics' - attributes: - type: array - items: - type: object - properties: - key: - type: string - value: - type: string - title: Attribute represents key value pair - title: CPU stores resource units and cpu config attributes - memory: - type: object - properties: - quantity: - type: object - properties: - val: - type: string - format: byte - title: 'Unit stores cpu, memory and storage metrics' - attributes: - type: array - items: - type: object - properties: - key: - type: string - value: - type: string - title: Attribute represents key value pair - title: >- - Memory stores resource quantity and memory - attributes - storage: + hash: + type: string + example: EE5F3404034C524501629B56E0DDC38FAD651F04 + parts: type: object properties: - quantity: - type: object - properties: - val: - type: string - format: byte - title: 'Unit stores cpu, memory and storage metrics' - attributes: - type: array - items: - type: object - properties: - key: - type: string - value: - type: string - title: Attribute represents key value pair - title: >- - Storage stores resource quantity and storage - attributes - endpoints: - type: array - items: - type: object - title: >- - Endpoint describes a publicly accessible IP - service - title: >- - ResourceUnits describes all available resources types - for deployment/node etc - - if field is nil resource is not present in the given - data-structure - count: - type: integer - format: int64 - price: - type: object - properties: - denom: - type: string - amount: - type: string - description: >- - Coin defines a token with a denomination and an amount. - - - NOTE: The amount field is an Int which implements the - custom method - - signatures required by gogoproto. - title: 'Resource stores unit, total count and price of resource' - order_bid_duration: - type: string - format: int64 - title: GroupSpec stores group specifications - title: 'Group stores group id, state and specifications of group' - title: QueryGroupResponse is response type for the Query/Group RPC method - akash.deployment.v1beta1.Resource: + total: + type: number + example: 0 + hash: + type: string + example: EE5F3404034C524501629B56E0DDC38FAD651F04 + signature: + type: string + example: >- + 7uTC74QlknqYWEwg7Vn6M8Om7FuZ0EO4bjvuj6rwH1mTUJrRuMMZvAAqT9VjNgP0RA/TDp6u/92AqrZfXJSpBQ== + DelegationDelegatorReward: type: object properties: - resources: + validator_address: + type: string + description: bech32 encoded address + example: cosmosvaloper16xyempempp92x9hyzz9wrgf94r6j9h5f2w4n2l + reward: + type: array + items: + type: object + properties: + denom: + type: string + example: stake + amount: + type: string + example: '50' + DelegatorTotalRewards: + type: object + properties: + rewards: + type: array + items: + type: object + properties: + validator_address: + type: string + description: bech32 encoded address + example: cosmosvaloper16xyempempp92x9hyzz9wrgf94r6j9h5f2w4n2l + reward: + type: array + items: + type: object + properties: + denom: + type: string + example: stake + amount: + type: string + example: '50' + total: + type: array + items: + type: object + properties: + denom: + type: string + example: stake + amount: + type: string + example: '50' + BaseReq: + type: object + properties: + from: + type: string + example: cosmos1g9ahr6xhht5rmqven628nklxluzyv8z9jqjcmc + description: Sender address or Keybase name to generate a transaction + memo: + type: string + example: "Sent via Cosmos Voyager \U0001F680" + chain_id: + type: string + example: Cosmos-Hub + account_number: + type: string + example: '0' + sequence: + type: string + example: '1' + gas: + type: string + example: '200000' + gas_adjustment: + type: string + example: '1.2' + fees: + type: array + items: + type: object + properties: + denom: + type: string + example: stake + amount: + type: string + example: '50' + simulate: + type: boolean + example: false + description: >- + Estimate gas for a transaction (cannot be used in conjunction with + generate_only) + TendermintValidator: + type: object + properties: + address: + type: string + description: bech32 encoded address + example: cosmosvaloper16xyempempp92x9hyzz9wrgf94r6j9h5f2w4n2l + pub_key: + type: string + example: >- + cosmosvalconspub1zcjduepq0vu2zgkgk49efa0nqwzndanq5m4c7pa3u4apz4g2r9gspqg6g9cs3k9cuf + voting_power: + type: string + example: '1000' + proposer_priority: + type: string + example: '1000' + TextProposal: + type: object + properties: + proposal_id: + type: integer + title: + type: string + description: + type: string + proposal_type: + type: string + proposal_status: + type: string + final_tally_result: + type: object + properties: + 'yes': + type: string + example: '0.0000000000' + abstain: + type: string + example: '0.0000000000' + 'no': + type: string + example: '0.0000000000' + no_with_veto: + type: string + example: '0.0000000000' + submit_time: + type: string + total_deposit: + type: array + items: + type: object + properties: + denom: + type: string + example: stake + amount: + type: string + example: '50' + voting_start_time: + type: string + Proposer: + type: object + properties: + proposal_id: + type: string + proposer: + type: string + Deposit: + type: object + properties: + amount: + type: array + items: + type: object + properties: + denom: + type: string + example: stake + amount: + type: string + example: '50' + proposal_id: + type: string + depositor: + type: string + description: bech32 encoded address + example: cosmos1depk54cuajgkzea6zpgkq36tnjwdzv4afc3d27 + TallyResult: + type: object + properties: + 'yes': + type: string + example: '0.0000000000' + abstain: + type: string + example: '0.0000000000' + 'no': + type: string + example: '0.0000000000' + no_with_veto: + type: string + example: '0.0000000000' + Vote: + type: object + properties: + voter: + type: string + proposal_id: + type: string + option: + type: string + Validator: + type: object + properties: + operator_address: + type: string + description: bech32 encoded address + example: cosmosvaloper16xyempempp92x9hyzz9wrgf94r6j9h5f2w4n2l + consensus_pubkey: + type: string + example: >- + cosmosvalconspub1zcjduepq0vu2zgkgk49efa0nqwzndanq5m4c7pa3u4apz4g2r9gspqg6g9cs3k9cuf + jailed: + type: boolean + status: + type: integer + tokens: + type: string + delegator_shares: + type: string + description: type: object properties: - cpu: - type: object - properties: - units: - type: object - properties: - val: - type: string - format: byte - title: 'Unit stores cpu, memory and storage metrics' - attributes: - type: array - items: - type: object - properties: - key: - type: string - value: - type: string - title: Attribute represents key value pair - title: CPU stores resource units and cpu config attributes - memory: - type: object - properties: - quantity: - type: object - properties: - val: - type: string - format: byte - title: 'Unit stores cpu, memory and storage metrics' - attributes: - type: array - items: - type: object - properties: - key: - type: string - value: - type: string - title: Attribute represents key value pair - title: Memory stores resource quantity and memory attributes - storage: - type: object - properties: - quantity: - type: object - properties: - val: - type: string - format: byte - title: 'Unit stores cpu, memory and storage metrics' - attributes: - type: array - items: - type: object - properties: - key: - type: string - value: - type: string - title: Attribute represents key value pair - title: Storage stores resource quantity and storage attributes - endpoints: - type: array - items: - type: object - title: Endpoint describes a publicly accessible IP service - title: >- - ResourceUnits describes all available resources types for - deployment/node etc - - if field is nil resource is not present in the given data-structure - count: + moniker: + type: string + identity: + type: string + website: + type: string + security_contact: + type: string + details: + type: string + bond_height: + type: string + example: '0' + bond_intra_tx_counter: type: integer - format: int64 - price: + example: 0 + unbonding_height: + type: string + example: '0' + unbonding_time: + type: string + example: '1970-01-01T00:00:00Z' + commission: + type: object + properties: + rate: + type: string + example: '0' + max_rate: + type: string + example: '0' + max_change_rate: + type: string + example: '0' + update_time: + type: string + example: '1970-01-01T00:00:00Z' + Delegation: + type: object + properties: + delegator_address: + type: string + validator_address: + type: string + shares: + type: string + balance: type: object properties: denom: type: string + example: stake amount: type: string - description: |- - Coin defines a token with a denomination and an amount. - - NOTE: The amount field is an Int which implements the custom method - signatures required by gogoproto. - title: 'Resource stores unit, total count and price of resource' - cosmos.base.query.v1beta1.PageRequest: + example: '50' + UnbondingDelegationPair: type: object properties: - key: + delegator_address: type: string - format: byte - description: |- - key is a value returned in PageResponse.next_key to begin - querying the next page most efficiently. Only one of offset or key - should be set. - offset: + validator_address: type: string - format: uint64 - description: |- - offset is a numeric offset that can be used when key is unavailable. - It is less efficient than using key. Only one of offset or key should - be set. - limit: + entries: + type: array + items: + type: object + properties: + initial_balance: + type: string + balance: + type: string + creation_height: + type: string + min_time: + type: string + UnbondingEntries: + type: object + properties: + initial_balance: type: string - format: uint64 - description: >- - limit is the total number of results to be returned in the result - page. - - If left empty it will default to a value to be set by each app. - count_total: - type: boolean - format: boolean - description: >- - count_total is set to true to indicate that the result set should - include - - a count of the total number of items available for pagination in UIs. - - count_total is only respected when offset is used. It is ignored when - key - - is set. - description: |- - message SomeRequest { - Foo some_parameter = 1; - PageRequest pagination = 2; - } - title: |- - PageRequest is to be embedded in gRPC request messages for efficient - pagination. Ex: - cosmos.base.query.v1beta1.PageResponse: + balance: + type: string + creation_height: + type: string + min_time: + type: string + UnbondingDelegation: type: object properties: - next_key: + delegator_address: type: string - format: byte - title: |- - next_key is the key to be passed to PageRequest.key to - query the next page most efficiently - total: + validator_address: type: string - format: uint64 - title: |- - total is total number of results available if PageRequest.count_total - was set, its value is undefined otherwise - description: |- - PageResponse is to be embedded in gRPC response messages where the - corresponding request message has used PageRequest. - - message SomeResponse { - repeated Bar results = 1; - PageResponse page = 2; - } - cosmos.base.v1beta1.Coin: + initial_balance: + type: string + balance: + type: string + creation_height: + type: integer + min_time: + type: integer + Redelegation: type: object properties: - denom: + delegator_address: type: string - amount: + validator_src_address: type: string - description: |- - Coin defines a token with a denomination and an amount. - - NOTE: The amount field is an Int which implements the custom method - signatures required by gogoproto. - google.protobuf.Any: + validator_dst_address: + type: string + entries: + type: array + items: + $ref: '#/definitions/Redelegation' + RedelegationEntry: type: object properties: - type_url: + creation_height: + type: integer + completion_time: + type: integer + initial_balance: type: string - description: >- - A URL/resource name that uniquely identifies the type of the - serialized + balance: + type: string + shares_dst: + type: string + ValidatorDistInfo: + type: object + properties: + operator_address: + type: string + description: bech32 encoded address + example: cosmosvaloper16xyempempp92x9hyzz9wrgf94r6j9h5f2w4n2l + self_bond_rewards: + type: array + items: + type: object + properties: + denom: + type: string + example: stake + amount: + type: string + example: '50' + val_commission: + type: array + items: + type: object + properties: + denom: + type: string + example: stake + amount: + type: string + example: '50' + PublicKey: + type: object + properties: + type: + type: string + value: + type: string + SigningInfo: + type: object + properties: + start_height: + type: string + index_offset: + type: string + jailed_until: + type: string + missed_blocks_counter: + type: string + ParamChange: + type: object + properties: + subspace: + type: string + example: staking + key: + type: string + example: MaxValidators + subkey: + type: string + example: '' + value: + type: object + Supply: + type: object + properties: + total: + type: array + items: + type: object + properties: + denom: + type: string + example: stake + amount: + type: string + example: '50' + cosmos.auth.v1beta1.Params: + type: object + properties: + max_memo_characters: + type: string + format: uint64 + tx_sig_limit: + type: string + format: uint64 + tx_size_cost_per_byte: + type: string + format: uint64 + sig_verify_cost_ed25519: + type: string + format: uint64 + sig_verify_cost_secp256k1: + type: string + format: uint64 + description: Params defines the parameters for the auth module. + cosmos.auth.v1beta1.QueryAccountResponse: + type: object + properties: + account: + type: object + properties: + type_url: + type: string + description: >- + A URL/resource name that uniquely identifies the type of the + serialized - protocol buffer message. This string must contain at least + protocol buffer message. This string must contain at least - one "/" character. The last segment of the URL's path must represent + one "/" character. The last segment of the URL's path must + represent - the fully qualified name of the type (as in + the fully qualified name of the type (as in - `path/google.protobuf.Duration`). The name should be in a canonical - form + `path/google.protobuf.Duration`). The name should be in a + canonical form - (e.g., leading "." is not accepted). + (e.g., leading "." is not accepted). - In practice, teams usually precompile into the binary all types that - they + In practice, teams usually precompile into the binary all types + that they - expect it to use in the context of Any. However, for URLs which use - the + expect it to use in the context of Any. However, for URLs which + use the - scheme `http`, `https`, or no scheme, one can optionally set up a type + scheme `http`, `https`, or no scheme, one can optionally set up a + type - server that maps type URLs to message definitions as follows: + server that maps type URLs to message definitions as follows: - * If no scheme is provided, `https` is assumed. + * If no scheme is provided, `https` is assumed. - * An HTTP GET on the URL must yield a [google.protobuf.Type][] - value in binary format, or produce an error. - * Applications are allowed to cache lookup results based on the - URL, or have them precompiled into a binary to avoid any - lookup. Therefore, binary compatibility needs to be preserved - on changes to types. (Use versioned type names to manage - breaking changes.) + * An HTTP GET on the URL must yield a [google.protobuf.Type][] + value in binary format, or produce an error. + * Applications are allowed to cache lookup results based on the + URL, or have them precompiled into a binary to avoid any + lookup. Therefore, binary compatibility needs to be preserved + on changes to types. (Use versioned type names to manage + breaking changes.) - Note: this functionality is not currently available in the official + Note: this functionality is not currently available in the + official - protobuf release, and it is not used for type URLs beginning with + protobuf release, and it is not used for type URLs beginning with - type.googleapis.com. + type.googleapis.com. - Schemes other than `http`, `https` (or the empty scheme) might be + Schemes other than `http`, `https` (or the empty scheme) might be - used with implementation specific semantics. - value: - type: string - format: byte + used with implementation specific semantics. + value: + type: string + format: byte + description: >- + Must be a valid serialized protocol buffer of the above specified + type. description: >- - Must be a valid serialized protocol buffer of the above specified - type. - description: >- - `Any` contains an arbitrary serialized protocol buffer message along with - a + `Any` contains an arbitrary serialized protocol buffer message along + with a - URL that describes the type of the serialized message. + URL that describes the type of the serialized message. - Protobuf library provides support to pack/unpack Any values in the form + Protobuf library provides support to pack/unpack Any values in the + form - of utility functions or additional generated methods of the Any type. + of utility functions or additional generated methods of the Any type. - Example 1: Pack and unpack a message in C++. + Example 1: Pack and unpack a message in C++. - Foo foo = ...; - Any any; - any.PackFrom(foo); - ... - if (any.UnpackTo(&foo)) { - ... - } + Foo foo = ...; + Any any; + any.PackFrom(foo); + ... + if (any.UnpackTo(&foo)) { + ... + } - Example 2: Pack and unpack a message in Java. + Example 2: Pack and unpack a message in Java. - Foo foo = ...; - Any any = Any.pack(foo); - ... - if (any.is(Foo.class)) { - foo = any.unpack(Foo.class); - } + Foo foo = ...; + Any any = Any.pack(foo); + ... + if (any.is(Foo.class)) { + foo = any.unpack(Foo.class); + } - Example 3: Pack and unpack a message in Python. + Example 3: Pack and unpack a message in Python. - foo = Foo(...) - any = Any() - any.Pack(foo) - ... - if any.Is(Foo.DESCRIPTOR): - any.Unpack(foo) - ... + foo = Foo(...) + any = Any() + any.Pack(foo) + ... + if any.Is(Foo.DESCRIPTOR): + any.Unpack(foo) + ... - Example 4: Pack and unpack a message in Go + Example 4: Pack and unpack a message in Go - foo := &pb.Foo{...} - any, err := ptypes.MarshalAny(foo) - ... - foo := &pb.Foo{} - if err := ptypes.UnmarshalAny(any, foo); err != nil { - ... - } + foo := &pb.Foo{...} + any, err := ptypes.MarshalAny(foo) + ... + foo := &pb.Foo{} + if err := ptypes.UnmarshalAny(any, foo); err != nil { + ... + } - The pack methods provided by protobuf library will by default use + The pack methods provided by protobuf library will by default use - 'type.googleapis.com/full.type.name' as the type URL and the unpack + 'type.googleapis.com/full.type.name' as the type URL and the unpack - methods only use the fully qualified type name after the last '/' + methods only use the fully qualified type name after the last '/' - in the type URL, for example "foo.bar.com/x/y.z" will yield type + in the type URL, for example "foo.bar.com/x/y.z" will yield type - name "y.z". + name "y.z". - JSON + JSON - ==== + ==== - The JSON representation of an `Any` value uses the regular + The JSON representation of an `Any` value uses the regular - representation of the deserialized, embedded message, with an + representation of the deserialized, embedded message, with an - additional field `@type` which contains the type URL. Example: + additional field `@type` which contains the type URL. Example: - package google.profile; - message Person { - string first_name = 1; - string last_name = 2; - } + package google.profile; + message Person { + string first_name = 1; + string last_name = 2; + } - { - "@type": "type.googleapis.com/google.profile.Person", - "firstName": , - "lastName": - } + { + "@type": "type.googleapis.com/google.profile.Person", + "firstName": , + "lastName": + } - If the embedded message type is well-known and has a custom JSON + If the embedded message type is well-known and has a custom JSON - representation, that representation will be embedded adding a field + representation, that representation will be embedded adding a field - `value` which holds the custom JSON in addition to the `@type` + `value` which holds the custom JSON in addition to the `@type` - field. Example (for message [google.protobuf.Duration][]): + field. Example (for message [google.protobuf.Duration][]): - { - "@type": "type.googleapis.com/google.protobuf.Duration", - "value": "1.212s" - } - grpc.gateway.runtime.Error: + { + "@type": "type.googleapis.com/google.protobuf.Duration", + "value": "1.212s" + } + description: >- + QueryAccountResponse is the response type for the Query/Account RPC + method. + cosmos.auth.v1beta1.QueryAccountsResponse: type: object properties: - error: - type: string - code: - type: integer - format: int32 - message: - type: string - details: + accounts: type: array items: type: object @@ -28269,46 +29904,208 @@ definitions: "@type": "type.googleapis.com/google.protobuf.Duration", "value": "1.212s" } - akash.market.v1beta1.Bid: + title: accounts are the existing accounts + pagination: + description: pagination defines the pagination in the response. + type: object + properties: + next_key: + type: string + format: byte + title: |- + next_key is the key to be passed to PageRequest.key to + query the next page most efficiently + total: + type: string + format: uint64 + title: >- + total is total number of results available if + PageRequest.count_total + + was set, its value is undefined otherwise + description: >- + QueryAccountsResponse is the response type for the Query/Accounts RPC + method. + cosmos.auth.v1beta1.QueryParamsResponse: type: object properties: - bid_id: + params: + description: params defines the parameters of the module. type: object properties: - owner: + max_memo_characters: type: string - dseq: + format: uint64 + tx_sig_limit: type: string format: uint64 - gseq: - type: integer - format: int64 - oseq: - type: integer - format: int64 - provider: + tx_size_cost_per_byte: + type: string + format: uint64 + sig_verify_cost_ed25519: type: string + format: uint64 + sig_verify_cost_secp256k1: + type: string + format: uint64 + description: QueryParamsResponse is the response type for the Query/Params RPC method. + cosmos.bank.v1beta1.DenomUnit: + type: object + properties: + denom: + type: string + description: denom represents the string name of the given denom unit (e.g uatom). + exponent: + type: integer + format: int64 + description: >- + exponent represents power of 10 exponent that one must + + raise the base_denom to in order to equal the given DenomUnit's denom + + 1 denom = 1^exponent base_denom + + (e.g. with a base_denom of uatom, one can create a DenomUnit of 'atom' + with + + exponent = 6, thus: 1 atom = 10^6 uatom). + aliases: + type: array + items: + type: string + title: aliases is a list of string aliases for the given denom + description: |- + DenomUnit represents a struct that describes a given + denomination unit of the basic token. + cosmos.bank.v1beta1.Metadata: + type: object + properties: + description: + type: string + denom_units: + type: array + items: + type: object + properties: + denom: + type: string + description: >- + denom represents the string name of the given denom unit (e.g + uatom). + exponent: + type: integer + format: int64 + description: >- + exponent represents power of 10 exponent that one must + + raise the base_denom to in order to equal the given DenomUnit's + denom + + 1 denom = 1^exponent base_denom + + (e.g. with a base_denom of uatom, one can create a DenomUnit of + 'atom' with + + exponent = 6, thus: 1 atom = 10^6 uatom). + aliases: + type: array + items: + type: string + title: aliases is a list of string aliases for the given denom + description: |- + DenomUnit represents a struct that describes a given + denomination unit of the basic token. + title: denom_units represents the list of DenomUnit's for a given coin + base: + type: string + description: >- + base represents the base denom (should be the DenomUnit with exponent + = 0). + display: + type: string description: |- - BidID stores owner and all other seq numbers - A successful bid becomes a Lease(ID). - state: + display indicates the suggested denom that should be + displayed in clients. + name: + type: string + title: 'name defines the name of the token (eg: Cosmos Atom)' + symbol: type: string - enum: - - invalid - - open - - matched - - lost - - closed - default: invalid description: >- - - invalid: Prefix should start with 0 in enum. So declaring dummy - state - - open: BidOpen denotes state for bid open - - matched: BidMatched denotes state for bid open - - lost: BidLost denotes state for bid lost - - closed: BidClosed denotes state for bid closed - title: State is an enum which refers to state of bid - price: + symbol is the token symbol usually shown on exchanges (eg: ATOM). This + can + + be the same as the display. + description: |- + Metadata represents a struct that describes + a basic token. + cosmos.bank.v1beta1.Params: + type: object + properties: + send_enabled: + type: array + items: + type: object + properties: + denom: + type: string + enabled: + type: boolean + format: boolean + description: >- + SendEnabled maps coin denom to a send_enabled status (whether a + denom is + + sendable). + default_send_enabled: + type: boolean + format: boolean + description: Params defines the parameters for the bank module. + cosmos.bank.v1beta1.QueryAllBalancesResponse: + type: object + properties: + balances: + type: array + items: + type: object + properties: + denom: + type: string + amount: + type: string + description: |- + Coin defines a token with a denomination and an amount. + + NOTE: The amount field is an Int which implements the custom method + signatures required by gogoproto. + description: balances is the balances of all the coins. + pagination: + description: pagination defines the pagination in the response. + type: object + properties: + next_key: + type: string + format: byte + title: |- + next_key is the key to be passed to PageRequest.key to + query the next page most efficiently + total: + type: string + format: uint64 + title: >- + total is total number of results available if + PageRequest.count_total + + was set, its value is undefined otherwise + description: >- + QueryAllBalancesResponse is the response type for the Query/AllBalances + RPC + + method. + cosmos.bank.v1beta1.QueryBalanceResponse: + type: object + properties: + balance: type: object properties: denom: @@ -28320,97 +30117,204 @@ definitions: NOTE: The amount field is an Int which implements the custom method signatures required by gogoproto. - title: 'Bid stores BidID, state of bid and price' - akash.market.v1beta1.Bid.State: - type: string - enum: - - invalid - - open - - matched - - lost - - closed - default: invalid - description: |- - - invalid: Prefix should start with 0 in enum. So declaring dummy state - - open: BidOpen denotes state for bid open - - matched: BidMatched denotes state for bid open - - lost: BidLost denotes state for bid lost - - closed: BidClosed denotes state for bid closed - title: State is an enum which refers to state of bid - akash.market.v1beta1.BidFilters: - type: object - properties: - owner: - type: string - dseq: - type: string - format: uint64 - gseq: - type: integer - format: int64 - oseq: - type: integer - format: int64 - provider: - type: string - state: - type: string - title: BidFilters defines flags for bid list filter - akash.market.v1beta1.BidID: + description: >- + QueryBalanceResponse is the response type for the Query/Balance RPC + method. + cosmos.bank.v1beta1.QueryDenomMetadataResponse: type: object properties: - owner: - type: string - dseq: - type: string - format: uint64 - gseq: - type: integer - format: int64 - oseq: - type: integer - format: int64 - provider: - type: string - description: |- - BidID stores owner and all other seq numbers - A successful bid becomes a Lease(ID). - akash.market.v1beta1.Lease: + metadata: + type: object + properties: + description: + type: string + denom_units: + type: array + items: + type: object + properties: + denom: + type: string + description: >- + denom represents the string name of the given denom unit + (e.g uatom). + exponent: + type: integer + format: int64 + description: >- + exponent represents power of 10 exponent that one must + + raise the base_denom to in order to equal the given + DenomUnit's denom + + 1 denom = 1^exponent base_denom + + (e.g. with a base_denom of uatom, one can create a DenomUnit + of 'atom' with + + exponent = 6, thus: 1 atom = 10^6 uatom). + aliases: + type: array + items: + type: string + title: aliases is a list of string aliases for the given denom + description: |- + DenomUnit represents a struct that describes a given + denomination unit of the basic token. + title: denom_units represents the list of DenomUnit's for a given coin + base: + type: string + description: >- + base represents the base denom (should be the DenomUnit with + exponent = 0). + display: + type: string + description: |- + display indicates the suggested denom that should be + displayed in clients. + name: + type: string + title: 'name defines the name of the token (eg: Cosmos Atom)' + symbol: + type: string + description: >- + symbol is the token symbol usually shown on exchanges (eg: ATOM). + This can + + be the same as the display. + description: |- + Metadata represents a struct that describes + a basic token. + description: >- + QueryDenomMetadataResponse is the response type for the + Query/DenomMetadata RPC + + method. + cosmos.bank.v1beta1.QueryDenomsMetadataResponse: type: object properties: - lease_id: + metadatas: + type: array + items: + type: object + properties: + description: + type: string + denom_units: + type: array + items: + type: object + properties: + denom: + type: string + description: >- + denom represents the string name of the given denom unit + (e.g uatom). + exponent: + type: integer + format: int64 + description: >- + exponent represents power of 10 exponent that one must + + raise the base_denom to in order to equal the given + DenomUnit's denom + + 1 denom = 1^exponent base_denom + + (e.g. with a base_denom of uatom, one can create a + DenomUnit of 'atom' with + + exponent = 6, thus: 1 atom = 10^6 uatom). + aliases: + type: array + items: + type: string + title: aliases is a list of string aliases for the given denom + description: |- + DenomUnit represents a struct that describes a given + denomination unit of the basic token. + title: denom_units represents the list of DenomUnit's for a given coin + base: + type: string + description: >- + base represents the base denom (should be the DenomUnit with + exponent = 0). + display: + type: string + description: |- + display indicates the suggested denom that should be + displayed in clients. + name: + type: string + title: 'name defines the name of the token (eg: Cosmos Atom)' + symbol: + type: string + description: >- + symbol is the token symbol usually shown on exchanges (eg: + ATOM). This can + + be the same as the display. + description: |- + Metadata represents a struct that describes + a basic token. + description: >- + metadata provides the client information for all the registered + tokens. + pagination: + description: pagination defines the pagination in the response. type: object properties: - owner: + next_key: type: string - dseq: + format: byte + title: |- + next_key is the key to be passed to PageRequest.key to + query the next page most efficiently + total: type: string format: uint64 - gseq: - type: integer - format: int64 - oseq: - type: integer - format: int64 - provider: - type: string - title: LeaseID stores bid details of lease - state: - type: string - enum: - - invalid - - active - - insufficient_funds - - closed - default: invalid - description: >- - - invalid: Prefix should start with 0 in enum. So declaring dummy - state - - active: LeaseActive denotes state for lease active - - insufficient_funds: LeaseInsufficientFunds denotes state for lease insufficient_funds - - closed: LeaseClosed denotes state for lease closed - title: State is an enum which refers to state of lease - price: + title: >- + total is total number of results available if + PageRequest.count_total + + was set, its value is undefined otherwise + description: >- + QueryDenomsMetadataResponse is the response type for the + Query/DenomsMetadata RPC + + method. + cosmos.bank.v1beta1.QueryParamsResponse: + type: object + properties: + params: + type: object + properties: + send_enabled: + type: array + items: + type: object + properties: + denom: + type: string + enabled: + type: boolean + format: boolean + description: >- + SendEnabled maps coin denom to a send_enabled status (whether a + denom is + + sendable). + default_send_enabled: + type: boolean + format: boolean + description: Params defines the parameters for the bank module. + description: >- + QueryParamsResponse defines the response type for querying x/bank + parameters. + cosmos.bank.v1beta1.QuerySupplyOfResponse: + type: object + properties: + amount: type: object properties: denom: @@ -28422,406 +30326,1645 @@ definitions: NOTE: The amount field is an Int which implements the custom method signatures required by gogoproto. - title: 'Lease stores LeaseID, state of lease and price' - akash.market.v1beta1.Lease.State: - type: string - enum: - - invalid - - active - - insufficient_funds - - closed - default: invalid - description: |- - - invalid: Prefix should start with 0 in enum. So declaring dummy state - - active: LeaseActive denotes state for lease active - - insufficient_funds: LeaseInsufficientFunds denotes state for lease insufficient_funds - - closed: LeaseClosed denotes state for lease closed - title: State is an enum which refers to state of lease - akash.market.v1beta1.LeaseFilters: - type: object - properties: - owner: - type: string - dseq: - type: string - format: uint64 - gseq: - type: integer - format: int64 - oseq: - type: integer - format: int64 - provider: - type: string - state: - type: string - title: LeaseFilters defines flags for lease list filter - akash.market.v1beta1.LeaseID: + description: >- + QuerySupplyOfResponse is the response type for the Query/SupplyOf RPC + method. + cosmos.bank.v1beta1.QueryTotalSupplyResponse: type: object properties: - owner: - type: string - dseq: - type: string - format: uint64 - gseq: - type: integer - format: int64 - oseq: - type: integer - format: int64 - provider: + supply: + type: array + items: + type: object + properties: + denom: + type: string + amount: + type: string + description: |- + Coin defines a token with a denomination and an amount. + + NOTE: The amount field is an Int which implements the custom method + signatures required by gogoproto. + title: supply is the supply of the coins + pagination: + description: pagination defines the pagination in the response. + type: object + properties: + next_key: + type: string + format: byte + title: |- + next_key is the key to be passed to PageRequest.key to + query the next page most efficiently + total: + type: string + format: uint64 + title: >- + total is total number of results available if + PageRequest.count_total + + was set, its value is undefined otherwise + title: >- + QueryTotalSupplyResponse is the response type for the Query/TotalSupply + RPC + + method + cosmos.bank.v1beta1.SendEnabled: + type: object + properties: + denom: type: string - title: LeaseID stores bid details of lease - akash.market.v1beta1.Order: + enabled: + type: boolean + format: boolean + description: |- + SendEnabled maps coin denom to a send_enabled status (whether a denom is + sendable). + cosmos.base.tendermint.v1beta1.GetBlockByHeightResponse: type: object properties: - order_id: + block_id: type: object properties: - owner: - type: string - dseq: + hash: type: string - format: uint64 - gseq: - type: integer - format: int64 - oseq: - type: integer - format: int64 - title: OrderID stores owner and all other seq numbers - state: - type: string - enum: - - invalid - - open - - matched - - closed - default: invalid - description: >- - - invalid: Prefix should start with 0 in enum. So declaring dummy - state - - open: OrderOpen denotes state for order open - - matched: OrderMatched denotes state for order matched - - closed: OrderClosed denotes state for order lost - title: State is an enum which refers to state of order - start_at: - type: string - format: int64 - spec: + format: byte + part_set_header: + type: object + properties: + total: + type: integer + format: int64 + hash: + type: string + format: byte + title: PartsetHeader + title: BlockID + block: type: object properties: - name: - type: string - requirements: + header: type: object properties: - signed_by: - title: >- - SignedBy list of keys that tenants expect to have signatures - from + version: + title: basic block info type: object properties: - all_of: - type: array - items: - type: string - title: all_of all keys in this list must have signed attributes - any_of: - type: array - items: - type: string - title: >- - any_of at least of of the keys from the list must have - signed attributes - attributes: + block: + type: string + format: uint64 + app: + type: string + format: uint64 + description: >- + Consensus captures the consensus rules for processing a block + in the blockchain, + + including all blockchain data structures and the rules of the + application's + + state transition machine. + chain_id: + type: string + height: + type: string + format: int64 + time: + type: string + format: date-time + last_block_id: + type: object + properties: + hash: + type: string + format: byte + part_set_header: + type: object + properties: + total: + type: integer + format: int64 + hash: + type: string + format: byte + title: PartsetHeader + title: BlockID + last_commit_hash: + type: string + format: byte + title: hashes of block data + data_hash: + type: string + format: byte + validators_hash: + type: string + format: byte + title: hashes from the app output from the prev block + next_validators_hash: + type: string + format: byte + consensus_hash: + type: string + format: byte + app_hash: + type: string + format: byte + last_results_hash: + type: string + format: byte + evidence_hash: + type: string + format: byte + title: consensus info + proposer_address: + type: string + format: byte + description: Header defines the structure of a Tendermint block header. + data: + type: object + properties: + txs: + type: array + items: + type: string + format: byte + description: >- + Txs that will be applied by state @ block.Height+1. + + NOTE: not all txs here are valid. We're just agreeing on the + order first. + + This means that block.AppHash does not include these txs. + title: Data contains the set of transactions included in the block + evidence: + type: object + properties: + evidence: type: array items: type: object properties: - key: + duplicate_vote_evidence: + type: object + properties: + vote_a: + type: object + properties: + type: + type: string + enum: + - SIGNED_MSG_TYPE_UNKNOWN + - SIGNED_MSG_TYPE_PREVOTE + - SIGNED_MSG_TYPE_PRECOMMIT + - SIGNED_MSG_TYPE_PROPOSAL + default: SIGNED_MSG_TYPE_UNKNOWN + description: >- + SignedMsgType is a type of signed message in the + consensus. + + - SIGNED_MSG_TYPE_PREVOTE: Votes + - SIGNED_MSG_TYPE_PROPOSAL: Proposals + height: + type: string + format: int64 + round: + type: integer + format: int32 + block_id: + type: object + properties: + hash: + type: string + format: byte + part_set_header: + type: object + properties: + total: + type: integer + format: int64 + hash: + type: string + format: byte + title: PartsetHeader + title: BlockID + timestamp: + type: string + format: date-time + validator_address: + type: string + format: byte + validator_index: + type: integer + format: int32 + signature: + type: string + format: byte + description: >- + Vote represents a prevote, precommit, or commit vote + from validators for + + consensus. + vote_b: + type: object + properties: + type: + type: string + enum: + - SIGNED_MSG_TYPE_UNKNOWN + - SIGNED_MSG_TYPE_PREVOTE + - SIGNED_MSG_TYPE_PRECOMMIT + - SIGNED_MSG_TYPE_PROPOSAL + default: SIGNED_MSG_TYPE_UNKNOWN + description: >- + SignedMsgType is a type of signed message in the + consensus. + + - SIGNED_MSG_TYPE_PREVOTE: Votes + - SIGNED_MSG_TYPE_PROPOSAL: Proposals + height: + type: string + format: int64 + round: + type: integer + format: int32 + block_id: + type: object + properties: + hash: + type: string + format: byte + part_set_header: + type: object + properties: + total: + type: integer + format: int64 + hash: + type: string + format: byte + title: PartsetHeader + title: BlockID + timestamp: + type: string + format: date-time + validator_address: + type: string + format: byte + validator_index: + type: integer + format: int32 + signature: + type: string + format: byte + description: >- + Vote represents a prevote, precommit, or commit vote + from validators for + + consensus. + total_voting_power: + type: string + format: int64 + validator_power: + type: string + format: int64 + timestamp: + type: string + format: date-time + description: >- + DuplicateVoteEvidence contains evidence of a validator + signed two conflicting votes. + light_client_attack_evidence: + type: object + properties: + conflicting_block: + type: object + properties: + signed_header: + type: object + properties: + header: + type: object + properties: + version: + title: basic block info + type: object + properties: + block: + type: string + format: uint64 + app: + type: string + format: uint64 + description: >- + Consensus captures the consensus rules + for processing a block in the + blockchain, + + including all blockchain data structures + and the rules of the application's + + state transition machine. + chain_id: + type: string + height: + type: string + format: int64 + time: + type: string + format: date-time + last_block_id: + type: object + properties: + hash: + type: string + format: byte + part_set_header: + type: object + properties: + total: + type: integer + format: int64 + hash: + type: string + format: byte + title: PartsetHeader + title: BlockID + last_commit_hash: + type: string + format: byte + title: hashes of block data + data_hash: + type: string + format: byte + validators_hash: + type: string + format: byte + title: >- + hashes from the app output from the prev + block + next_validators_hash: + type: string + format: byte + consensus_hash: + type: string + format: byte + app_hash: + type: string + format: byte + last_results_hash: + type: string + format: byte + evidence_hash: + type: string + format: byte + title: consensus info + proposer_address: + type: string + format: byte + description: >- + Header defines the structure of a Tendermint + block header. + commit: + type: object + properties: + height: + type: string + format: int64 + round: + type: integer + format: int32 + block_id: + type: object + properties: + hash: + type: string + format: byte + part_set_header: + type: object + properties: + total: + type: integer + format: int64 + hash: + type: string + format: byte + title: PartsetHeader + title: BlockID + signatures: + type: array + items: + type: object + properties: + block_id_flag: + type: string + enum: + - BLOCK_ID_FLAG_UNKNOWN + - BLOCK_ID_FLAG_ABSENT + - BLOCK_ID_FLAG_COMMIT + - BLOCK_ID_FLAG_NIL + default: BLOCK_ID_FLAG_UNKNOWN + title: >- + BlockIdFlag indicates which BlcokID the + signature is for + validator_address: + type: string + format: byte + timestamp: + type: string + format: date-time + signature: + type: string + format: byte + description: >- + CommitSig is a part of the Vote included + in a Commit. + description: >- + Commit contains the evidence that a block + was committed by a set of validators. + validator_set: + type: object + properties: + validators: + type: array + items: + type: object + properties: + address: + type: string + format: byte + pub_key: + type: object + properties: + ed25519: + type: string + format: byte + secp256k1: + type: string + format: byte + title: >- + PublicKey defines the keys available for + use with Tendermint Validators + voting_power: + type: string + format: int64 + proposer_priority: + type: string + format: int64 + proposer: + type: object + properties: + address: + type: string + format: byte + pub_key: + type: object + properties: + ed25519: + type: string + format: byte + secp256k1: + type: string + format: byte + title: >- + PublicKey defines the keys available for + use with Tendermint Validators + voting_power: + type: string + format: int64 + proposer_priority: + type: string + format: int64 + total_voting_power: + type: string + format: int64 + common_height: + type: string + format: int64 + byzantine_validators: + type: array + items: + type: object + properties: + address: + type: string + format: byte + pub_key: + type: object + properties: + ed25519: + type: string + format: byte + secp256k1: + type: string + format: byte + title: >- + PublicKey defines the keys available for use + with Tendermint Validators + voting_power: + type: string + format: int64 + proposer_priority: + type: string + format: int64 + total_voting_power: + type: string + format: int64 + timestamp: + type: string + format: date-time + description: >- + LightClientAttackEvidence contains evidence of a set of + validators attempting to mislead a light client. + last_commit: + type: object + properties: + height: + type: string + format: int64 + round: + type: integer + format: int32 + block_id: + type: object + properties: + hash: + type: string + format: byte + part_set_header: + type: object + properties: + total: + type: integer + format: int64 + hash: + type: string + format: byte + title: PartsetHeader + title: BlockID + signatures: + type: array + items: + type: object + properties: + block_id_flag: type: string - value: + enum: + - BLOCK_ID_FLAG_UNKNOWN + - BLOCK_ID_FLAG_ABSENT + - BLOCK_ID_FLAG_COMMIT + - BLOCK_ID_FLAG_NIL + default: BLOCK_ID_FLAG_UNKNOWN + title: BlockIdFlag indicates which BlcokID the signature is for + validator_address: type: string - title: Attribute represents key value pair - title: Attribute list of attributes tenant expects from the provider - title: PlacementRequirements - resources: - type: array - items: - type: object - properties: - resources: + format: byte + timestamp: + type: string + format: date-time + signature: + type: string + format: byte + description: CommitSig is a part of the Vote included in a Commit. + description: >- + Commit contains the evidence that a block was committed by a set + of validators. + description: >- + GetBlockByHeightResponse is the response type for the + Query/GetBlockByHeight RPC method. + cosmos.base.tendermint.v1beta1.GetLatestBlockResponse: + type: object + properties: + block_id: + type: object + properties: + hash: + type: string + format: byte + part_set_header: + type: object + properties: + total: + type: integer + format: int64 + hash: + type: string + format: byte + title: PartsetHeader + title: BlockID + block: + type: object + properties: + header: + type: object + properties: + version: + title: basic block info + type: object + properties: + block: + type: string + format: uint64 + app: + type: string + format: uint64 + description: >- + Consensus captures the consensus rules for processing a block + in the blockchain, + + including all blockchain data structures and the rules of the + application's + + state transition machine. + chain_id: + type: string + height: + type: string + format: int64 + time: + type: string + format: date-time + last_block_id: + type: object + properties: + hash: + type: string + format: byte + part_set_header: + type: object + properties: + total: + type: integer + format: int64 + hash: + type: string + format: byte + title: PartsetHeader + title: BlockID + last_commit_hash: + type: string + format: byte + title: hashes of block data + data_hash: + type: string + format: byte + validators_hash: + type: string + format: byte + title: hashes from the app output from the prev block + next_validators_hash: + type: string + format: byte + consensus_hash: + type: string + format: byte + app_hash: + type: string + format: byte + last_results_hash: + type: string + format: byte + evidence_hash: + type: string + format: byte + title: consensus info + proposer_address: + type: string + format: byte + description: Header defines the structure of a Tendermint block header. + data: + type: object + properties: + txs: + type: array + items: + type: string + format: byte + description: >- + Txs that will be applied by state @ block.Height+1. + + NOTE: not all txs here are valid. We're just agreeing on the + order first. + + This means that block.AppHash does not include these txs. + title: Data contains the set of transactions included in the block + evidence: + type: object + properties: + evidence: + type: array + items: type: object properties: - cpu: + duplicate_vote_evidence: type: object properties: - units: + vote_a: type: object properties: - val: + type: + type: string + enum: + - SIGNED_MSG_TYPE_UNKNOWN + - SIGNED_MSG_TYPE_PREVOTE + - SIGNED_MSG_TYPE_PRECOMMIT + - SIGNED_MSG_TYPE_PROPOSAL + default: SIGNED_MSG_TYPE_UNKNOWN + description: >- + SignedMsgType is a type of signed message in the + consensus. + + - SIGNED_MSG_TYPE_PREVOTE: Votes + - SIGNED_MSG_TYPE_PROPOSAL: Proposals + height: + type: string + format: int64 + round: + type: integer + format: int32 + block_id: + type: object + properties: + hash: + type: string + format: byte + part_set_header: + type: object + properties: + total: + type: integer + format: int64 + hash: + type: string + format: byte + title: PartsetHeader + title: BlockID + timestamp: + type: string + format: date-time + validator_address: type: string format: byte - title: 'Unit stores cpu, memory and storage metrics' - attributes: - type: array - items: - type: object - properties: - key: - type: string - value: - type: string - title: Attribute represents key value pair - title: CPU stores resource units and cpu config attributes - memory: - type: object - properties: - quantity: + validator_index: + type: integer + format: int32 + signature: + type: string + format: byte + description: >- + Vote represents a prevote, precommit, or commit vote + from validators for + + consensus. + vote_b: type: object properties: - val: + type: + type: string + enum: + - SIGNED_MSG_TYPE_UNKNOWN + - SIGNED_MSG_TYPE_PREVOTE + - SIGNED_MSG_TYPE_PRECOMMIT + - SIGNED_MSG_TYPE_PROPOSAL + default: SIGNED_MSG_TYPE_UNKNOWN + description: >- + SignedMsgType is a type of signed message in the + consensus. + + - SIGNED_MSG_TYPE_PREVOTE: Votes + - SIGNED_MSG_TYPE_PROPOSAL: Proposals + height: + type: string + format: int64 + round: + type: integer + format: int32 + block_id: + type: object + properties: + hash: + type: string + format: byte + part_set_header: + type: object + properties: + total: + type: integer + format: int64 + hash: + type: string + format: byte + title: PartsetHeader + title: BlockID + timestamp: + type: string + format: date-time + validator_address: type: string format: byte - title: 'Unit stores cpu, memory and storage metrics' - attributes: - type: array - items: - type: object - properties: - key: - type: string - value: - type: string - title: Attribute represents key value pair - title: Memory stores resource quantity and memory attributes - storage: + validator_index: + type: integer + format: int32 + signature: + type: string + format: byte + description: >- + Vote represents a prevote, precommit, or commit vote + from validators for + + consensus. + total_voting_power: + type: string + format: int64 + validator_power: + type: string + format: int64 + timestamp: + type: string + format: date-time + description: >- + DuplicateVoteEvidence contains evidence of a validator + signed two conflicting votes. + light_client_attack_evidence: type: object properties: - quantity: + conflicting_block: type: object properties: - val: - type: string - format: byte - title: 'Unit stores cpu, memory and storage metrics' - attributes: + signed_header: + type: object + properties: + header: + type: object + properties: + version: + title: basic block info + type: object + properties: + block: + type: string + format: uint64 + app: + type: string + format: uint64 + description: >- + Consensus captures the consensus rules + for processing a block in the + blockchain, + + including all blockchain data structures + and the rules of the application's + + state transition machine. + chain_id: + type: string + height: + type: string + format: int64 + time: + type: string + format: date-time + last_block_id: + type: object + properties: + hash: + type: string + format: byte + part_set_header: + type: object + properties: + total: + type: integer + format: int64 + hash: + type: string + format: byte + title: PartsetHeader + title: BlockID + last_commit_hash: + type: string + format: byte + title: hashes of block data + data_hash: + type: string + format: byte + validators_hash: + type: string + format: byte + title: >- + hashes from the app output from the prev + block + next_validators_hash: + type: string + format: byte + consensus_hash: + type: string + format: byte + app_hash: + type: string + format: byte + last_results_hash: + type: string + format: byte + evidence_hash: + type: string + format: byte + title: consensus info + proposer_address: + type: string + format: byte + description: >- + Header defines the structure of a Tendermint + block header. + commit: + type: object + properties: + height: + type: string + format: int64 + round: + type: integer + format: int32 + block_id: + type: object + properties: + hash: + type: string + format: byte + part_set_header: + type: object + properties: + total: + type: integer + format: int64 + hash: + type: string + format: byte + title: PartsetHeader + title: BlockID + signatures: + type: array + items: + type: object + properties: + block_id_flag: + type: string + enum: + - BLOCK_ID_FLAG_UNKNOWN + - BLOCK_ID_FLAG_ABSENT + - BLOCK_ID_FLAG_COMMIT + - BLOCK_ID_FLAG_NIL + default: BLOCK_ID_FLAG_UNKNOWN + title: >- + BlockIdFlag indicates which BlcokID the + signature is for + validator_address: + type: string + format: byte + timestamp: + type: string + format: date-time + signature: + type: string + format: byte + description: >- + CommitSig is a part of the Vote included + in a Commit. + description: >- + Commit contains the evidence that a block + was committed by a set of validators. + validator_set: + type: object + properties: + validators: + type: array + items: + type: object + properties: + address: + type: string + format: byte + pub_key: + type: object + properties: + ed25519: + type: string + format: byte + secp256k1: + type: string + format: byte + title: >- + PublicKey defines the keys available for + use with Tendermint Validators + voting_power: + type: string + format: int64 + proposer_priority: + type: string + format: int64 + proposer: + type: object + properties: + address: + type: string + format: byte + pub_key: + type: object + properties: + ed25519: + type: string + format: byte + secp256k1: + type: string + format: byte + title: >- + PublicKey defines the keys available for + use with Tendermint Validators + voting_power: + type: string + format: int64 + proposer_priority: + type: string + format: int64 + total_voting_power: + type: string + format: int64 + common_height: + type: string + format: int64 + byzantine_validators: type: array items: type: object properties: - key: + address: type: string - value: + format: byte + pub_key: + type: object + properties: + ed25519: + type: string + format: byte + secp256k1: + type: string + format: byte + title: >- + PublicKey defines the keys available for use + with Tendermint Validators + voting_power: type: string - title: Attribute represents key value pair - title: Storage stores resource quantity and storage attributes - endpoints: - type: array - items: - type: object - title: Endpoint describes a publicly accessible IP service - title: >- - ResourceUnits describes all available resources types for - deployment/node etc - - if field is nil resource is not present in the given - data-structure - count: - type: integer - format: int64 - price: + format: int64 + proposer_priority: + type: string + format: int64 + total_voting_power: + type: string + format: int64 + timestamp: + type: string + format: date-time + description: >- + LightClientAttackEvidence contains evidence of a set of + validators attempting to mislead a light client. + last_commit: + type: object + properties: + height: + type: string + format: int64 + round: + type: integer + format: int32 + block_id: + type: object + properties: + hash: + type: string + format: byte + part_set_header: + type: object + properties: + total: + type: integer + format: int64 + hash: + type: string + format: byte + title: PartsetHeader + title: BlockID + signatures: + type: array + items: type: object properties: - denom: + block_id_flag: type: string - amount: + enum: + - BLOCK_ID_FLAG_UNKNOWN + - BLOCK_ID_FLAG_ABSENT + - BLOCK_ID_FLAG_COMMIT + - BLOCK_ID_FLAG_NIL + default: BLOCK_ID_FLAG_UNKNOWN + title: BlockIdFlag indicates which BlcokID the signature is for + validator_address: type: string - description: >- - Coin defines a token with a denomination and an amount. - - - NOTE: The amount field is an Int which implements the custom - method - - signatures required by gogoproto. - title: 'Resource stores unit, total count and price of resource' - order_bid_duration: - type: string - format: int64 - title: GroupSpec stores group specifications - close_at: - type: string - format: int64 - title: 'Order stores orderID, state of order and other details' - akash.market.v1beta1.Order.State: - type: string - enum: - - invalid - - open - - matched - - closed - default: invalid - description: |- - - invalid: Prefix should start with 0 in enum. So declaring dummy state - - open: OrderOpen denotes state for order open - - matched: OrderMatched denotes state for order matched - - closed: OrderClosed denotes state for order lost - title: State is an enum which refers to state of order - akash.market.v1beta1.OrderFilters: - type: object - properties: - owner: - type: string - dseq: - type: string - format: uint64 - gseq: - type: integer - format: int64 - oseq: - type: integer - format: int64 - state: - type: string - title: OrderFilters defines flags for order list filter - akash.market.v1beta1.OrderID: + format: byte + timestamp: + type: string + format: date-time + signature: + type: string + format: byte + description: CommitSig is a part of the Vote included in a Commit. + description: >- + Commit contains the evidence that a block was committed by a set + of validators. + description: >- + GetLatestBlockResponse is the response type for the Query/GetLatestBlock + RPC method. + cosmos.base.tendermint.v1beta1.GetLatestValidatorSetResponse: type: object properties: - owner: + block_height: type: string - dseq: - type: string - format: uint64 - gseq: - type: integer - format: int64 - oseq: - type: integer format: int64 - title: OrderID stores owner and all other seq numbers - akash.market.v1beta1.QueryBidResponse: + validators: + type: array + items: + type: object + properties: + address: + type: string + pub_key: + type: object + properties: + type_url: + type: string + description: >- + A URL/resource name that uniquely identifies the type of the + serialized + + protocol buffer message. This string must contain at least + + one "/" character. The last segment of the URL's path must + represent + + the fully qualified name of the type (as in + + `path/google.protobuf.Duration`). The name should be in a + canonical form + + (e.g., leading "." is not accepted). + + + In practice, teams usually precompile into the binary all + types that they + + expect it to use in the context of Any. However, for URLs + which use the + + scheme `http`, `https`, or no scheme, one can optionally set + up a type + + server that maps type URLs to message definitions as + follows: + + + * If no scheme is provided, `https` is assumed. + + * An HTTP GET on the URL must yield a + [google.protobuf.Type][] + value in binary format, or produce an error. + * Applications are allowed to cache lookup results based on + the + URL, or have them precompiled into a binary to avoid any + lookup. Therefore, binary compatibility needs to be preserved + on changes to types. (Use versioned type names to manage + breaking changes.) + + Note: this functionality is not currently available in the + official + + protobuf release, and it is not used for type URLs beginning + with + + type.googleapis.com. + + + Schemes other than `http`, `https` (or the empty scheme) + might be + + used with implementation specific semantics. + value: + type: string + format: byte + description: >- + Must be a valid serialized protocol buffer of the above + specified type. + description: >- + `Any` contains an arbitrary serialized protocol buffer message + along with a + + URL that describes the type of the serialized message. + + + Protobuf library provides support to pack/unpack Any values in + the form + + of utility functions or additional generated methods of the Any + type. + + + Example 1: Pack and unpack a message in C++. + + Foo foo = ...; + Any any; + any.PackFrom(foo); + ... + if (any.UnpackTo(&foo)) { + ... + } + + Example 2: Pack and unpack a message in Java. + + Foo foo = ...; + Any any = Any.pack(foo); + ... + if (any.is(Foo.class)) { + foo = any.unpack(Foo.class); + } + + Example 3: Pack and unpack a message in Python. + + foo = Foo(...) + any = Any() + any.Pack(foo) + ... + if any.Is(Foo.DESCRIPTOR): + any.Unpack(foo) + ... + + Example 4: Pack and unpack a message in Go + + foo := &pb.Foo{...} + any, err := ptypes.MarshalAny(foo) + ... + foo := &pb.Foo{} + if err := ptypes.UnmarshalAny(any, foo); err != nil { + ... + } + + The pack methods provided by protobuf library will by default + use + + 'type.googleapis.com/full.type.name' as the type URL and the + unpack + + methods only use the fully qualified type name after the last + '/' + + in the type URL, for example "foo.bar.com/x/y.z" will yield type + + name "y.z". + + + + JSON + + ==== + + The JSON representation of an `Any` value uses the regular + + representation of the deserialized, embedded message, with an + + additional field `@type` which contains the type URL. Example: + + package google.profile; + message Person { + string first_name = 1; + string last_name = 2; + } + + { + "@type": "type.googleapis.com/google.profile.Person", + "firstName": , + "lastName": + } + + If the embedded message type is well-known and has a custom JSON + + representation, that representation will be embedded adding a + field + + `value` which holds the custom JSON in addition to the `@type` + + field. Example (for message [google.protobuf.Duration][]): + + { + "@type": "type.googleapis.com/google.protobuf.Duration", + "value": "1.212s" + } + voting_power: + type: string + format: int64 + proposer_priority: + type: string + format: int64 + description: Validator is the type for the validator-set. + pagination: + description: pagination defines an pagination for the response. + type: object + properties: + next_key: + type: string + format: byte + title: |- + next_key is the key to be passed to PageRequest.key to + query the next page most efficiently + total: + type: string + format: uint64 + title: >- + total is total number of results available if + PageRequest.count_total + + was set, its value is undefined otherwise + description: >- + GetLatestValidatorSetResponse is the response type for the + Query/GetValidatorSetByHeight RPC method. + cosmos.base.tendermint.v1beta1.GetNodeInfoResponse: type: object properties: - bid: + default_node_info: type: object properties: - bid_id: + protocol_version: type: object properties: - owner: + p2p: type: string - dseq: + format: uint64 + block: type: string format: uint64 - gseq: - type: integer - format: int64 - oseq: - type: integer - format: int64 - provider: + app: type: string - description: |- - BidID stores owner and all other seq numbers - A successful bid becomes a Lease(ID). - state: + format: uint64 + default_node_id: type: string - enum: - - invalid - - open - - matched - - lost - - closed - default: invalid - description: >- - - invalid: Prefix should start with 0 in enum. So declaring dummy - state - - open: BidOpen denotes state for bid open - - matched: BidMatched denotes state for bid open - - lost: BidLost denotes state for bid lost - - closed: BidClosed denotes state for bid closed - title: State is an enum which refers to state of bid - price: + listen_addr: + type: string + network: + type: string + version: + type: string + channels: + type: string + format: byte + moniker: + type: string + other: type: object properties: - denom: + tx_index: type: string - amount: + rpc_address: type: string - description: >- - Coin defines a token with a denomination and an amount. - - - NOTE: The amount field is an Int which implements the custom - method - - signatures required by gogoproto. - title: 'Bid stores BidID, state of bid and price' - title: QueryBidResponse is response type for the Query/Bid RPC method - akash.market.v1beta1.QueryBidsResponse: + application_version: + type: object + properties: + name: + type: string + app_name: + type: string + version: + type: string + git_commit: + type: string + build_tags: + type: string + go_version: + type: string + build_deps: + type: array + items: + type: object + properties: + path: + type: string + title: module path + version: + type: string + title: module version + sum: + type: string + title: checksum + title: Module is the type for VersionInfo + description: VersionInfo is the type for the GetNodeInfoResponse message. + description: >- + GetNodeInfoResponse is the request type for the Query/GetNodeInfo RPC + method. + cosmos.base.tendermint.v1beta1.GetSyncingResponse: type: object properties: - bids: + syncing: + type: boolean + format: boolean + description: >- + GetSyncingResponse is the response type for the Query/GetSyncing RPC + method. + cosmos.base.tendermint.v1beta1.GetValidatorSetByHeightResponse: + type: object + properties: + block_height: + type: string + format: int64 + validators: type: array items: type: object properties: - bid_id: - type: object - properties: - owner: - type: string - dseq: - type: string - format: uint64 - gseq: - type: integer - format: int64 - oseq: - type: integer - format: int64 - provider: - type: string - description: |- - BidID stores owner and all other seq numbers - A successful bid becomes a Lease(ID). - state: + address: type: string - enum: - - invalid - - open - - matched - - lost - - closed - default: invalid - description: >- - - invalid: Prefix should start with 0 in enum. So declaring - dummy state - - open: BidOpen denotes state for bid open - - matched: BidMatched denotes state for bid open - - lost: BidLost denotes state for bid lost - - closed: BidClosed denotes state for bid closed - title: State is an enum which refers to state of bid - price: + pub_key: type: object properties: - denom: + type_url: type: string - amount: + description: >- + A URL/resource name that uniquely identifies the type of the + serialized + + protocol buffer message. This string must contain at least + + one "/" character. The last segment of the URL's path must + represent + + the fully qualified name of the type (as in + + `path/google.protobuf.Duration`). The name should be in a + canonical form + + (e.g., leading "." is not accepted). + + + In practice, teams usually precompile into the binary all + types that they + + expect it to use in the context of Any. However, for URLs + which use the + + scheme `http`, `https`, or no scheme, one can optionally set + up a type + + server that maps type URLs to message definitions as + follows: + + + * If no scheme is provided, `https` is assumed. + + * An HTTP GET on the URL must yield a + [google.protobuf.Type][] + value in binary format, or produce an error. + * Applications are allowed to cache lookup results based on + the + URL, or have them precompiled into a binary to avoid any + lookup. Therefore, binary compatibility needs to be preserved + on changes to types. (Use versioned type names to manage + breaking changes.) + + Note: this functionality is not currently available in the + official + + protobuf release, and it is not used for type URLs beginning + with + + type.googleapis.com. + + + Schemes other than `http`, `https` (or the empty scheme) + might be + + used with implementation specific semantics. + value: type: string + format: byte + description: >- + Must be a valid serialized protocol buffer of the above + specified type. description: >- - Coin defines a token with a denomination and an amount. + `Any` contains an arbitrary serialized protocol buffer message + along with a + + URL that describes the type of the serialized message. - NOTE: The amount field is an Int which implements the custom - method + Protobuf library provides support to pack/unpack Any values in + the form - signatures required by gogoproto. - title: 'Bid stores BidID, state of bid and price' + of utility functions or additional generated methods of the Any + type. + + + Example 1: Pack and unpack a message in C++. + + Foo foo = ...; + Any any; + any.PackFrom(foo); + ... + if (any.UnpackTo(&foo)) { + ... + } + + Example 2: Pack and unpack a message in Java. + + Foo foo = ...; + Any any = Any.pack(foo); + ... + if (any.is(Foo.class)) { + foo = any.unpack(Foo.class); + } + + Example 3: Pack and unpack a message in Python. + + foo = Foo(...) + any = Any() + any.Pack(foo) + ... + if any.Is(Foo.DESCRIPTOR): + any.Unpack(foo) + ... + + Example 4: Pack and unpack a message in Go + + foo := &pb.Foo{...} + any, err := ptypes.MarshalAny(foo) + ... + foo := &pb.Foo{} + if err := ptypes.UnmarshalAny(any, foo); err != nil { + ... + } + + The pack methods provided by protobuf library will by default + use + + 'type.googleapis.com/full.type.name' as the type URL and the + unpack + + methods only use the fully qualified type name after the last + '/' + + in the type URL, for example "foo.bar.com/x/y.z" will yield type + + name "y.z". + + + + JSON + + ==== + + The JSON representation of an `Any` value uses the regular + + representation of the deserialized, embedded message, with an + + additional field `@type` which contains the type URL. Example: + + package google.profile; + message Person { + string first_name = 1; + string last_name = 2; + } + + { + "@type": "type.googleapis.com/google.profile.Person", + "firstName": , + "lastName": + } + + If the embedded message type is well-known and has a custom JSON + + representation, that representation will be embedded adding a + field + + `value` which holds the custom JSON in addition to the `@type` + + field. Example (for message [google.protobuf.Duration][]): + + { + "@type": "type.googleapis.com/google.protobuf.Duration", + "value": "1.212s" + } + voting_power: + type: string + format: int64 + proposer_priority: + type: string + format: int64 + description: Validator is the type for the validator-set. pagination: + description: pagination defines an pagination for the response. type: object properties: next_key: @@ -28838,2200 +31981,2613 @@ definitions: PageRequest.count_total was set, its value is undefined otherwise - description: |- - PageResponse is to be embedded in gRPC response messages where the - corresponding request message has used PageRequest. - - message SomeResponse { - repeated Bar results = 1; - PageResponse page = 2; - } - title: QueryBidsResponse is response type for the Query/Bids RPC method - akash.market.v1beta1.QueryLeaseResponse: + description: >- + GetValidatorSetByHeightResponse is the response type for the + Query/GetValidatorSetByHeight RPC method. + cosmos.base.tendermint.v1beta1.Module: type: object properties: - lease: + path: + type: string + title: module path + version: + type: string + title: module version + sum: + type: string + title: checksum + title: Module is the type for VersionInfo + cosmos.base.tendermint.v1beta1.Validator: + type: object + properties: + address: + type: string + pub_key: type: object properties: - lease_id: - type: object - properties: - owner: - type: string - dseq: - type: string - format: uint64 - gseq: - type: integer - format: int64 - oseq: - type: integer - format: int64 - provider: - type: string - title: LeaseID stores bid details of lease - state: + type_url: type: string - enum: - - invalid - - active - - insufficient_funds - - closed - default: invalid description: >- - - invalid: Prefix should start with 0 in enum. So declaring dummy - state - - active: LeaseActive denotes state for lease active - - insufficient_funds: LeaseInsufficientFunds denotes state for lease insufficient_funds - - closed: LeaseClosed denotes state for lease closed - title: State is an enum which refers to state of lease - price: - type: object - properties: - denom: - type: string - amount: - type: string + A URL/resource name that uniquely identifies the type of the + serialized + + protocol buffer message. This string must contain at least + + one "/" character. The last segment of the URL's path must + represent + + the fully qualified name of the type (as in + + `path/google.protobuf.Duration`). The name should be in a + canonical form + + (e.g., leading "." is not accepted). + + + In practice, teams usually precompile into the binary all types + that they + + expect it to use in the context of Any. However, for URLs which + use the + + scheme `http`, `https`, or no scheme, one can optionally set up a + type + + server that maps type URLs to message definitions as follows: + + + * If no scheme is provided, `https` is assumed. + + * An HTTP GET on the URL must yield a [google.protobuf.Type][] + value in binary format, or produce an error. + * Applications are allowed to cache lookup results based on the + URL, or have them precompiled into a binary to avoid any + lookup. Therefore, binary compatibility needs to be preserved + on changes to types. (Use versioned type names to manage + breaking changes.) + + Note: this functionality is not currently available in the + official + + protobuf release, and it is not used for type URLs beginning with + + type.googleapis.com. + + + Schemes other than `http`, `https` (or the empty scheme) might be + + used with implementation specific semantics. + value: + type: string + format: byte description: >- - Coin defines a token with a denomination and an amount. + Must be a valid serialized protocol buffer of the above specified + type. + description: >- + `Any` contains an arbitrary serialized protocol buffer message along + with a + + URL that describes the type of the serialized message. + + + Protobuf library provides support to pack/unpack Any values in the + form + + of utility functions or additional generated methods of the Any type. + + + Example 1: Pack and unpack a message in C++. + + Foo foo = ...; + Any any; + any.PackFrom(foo); + ... + if (any.UnpackTo(&foo)) { + ... + } + + Example 2: Pack and unpack a message in Java. + + Foo foo = ...; + Any any = Any.pack(foo); + ... + if (any.is(Foo.class)) { + foo = any.unpack(Foo.class); + } + + Example 3: Pack and unpack a message in Python. + + foo = Foo(...) + any = Any() + any.Pack(foo) + ... + if any.Is(Foo.DESCRIPTOR): + any.Unpack(foo) + ... + + Example 4: Pack and unpack a message in Go + + foo := &pb.Foo{...} + any, err := ptypes.MarshalAny(foo) + ... + foo := &pb.Foo{} + if err := ptypes.UnmarshalAny(any, foo); err != nil { + ... + } + + The pack methods provided by protobuf library will by default use + + 'type.googleapis.com/full.type.name' as the type URL and the unpack + + methods only use the fully qualified type name after the last '/' + + in the type URL, for example "foo.bar.com/x/y.z" will yield type + + name "y.z". + + + + JSON + + ==== + + The JSON representation of an `Any` value uses the regular + + representation of the deserialized, embedded message, with an + + additional field `@type` which contains the type URL. Example: + + package google.profile; + message Person { + string first_name = 1; + string last_name = 2; + } + + { + "@type": "type.googleapis.com/google.profile.Person", + "firstName": , + "lastName": + } + + If the embedded message type is well-known and has a custom JSON + representation, that representation will be embedded adding a field - NOTE: The amount field is an Int which implements the custom - method + `value` which holds the custom JSON in addition to the `@type` - signatures required by gogoproto. - title: 'Lease stores LeaseID, state of lease and price' - title: QueryLeaseResponse is response type for the Query/Lease RPC method - akash.market.v1beta1.QueryLeasesResponse: + field. Example (for message [google.protobuf.Duration][]): + + { + "@type": "type.googleapis.com/google.protobuf.Duration", + "value": "1.212s" + } + voting_power: + type: string + format: int64 + proposer_priority: + type: string + format: int64 + description: Validator is the type for the validator-set. + cosmos.base.tendermint.v1beta1.VersionInfo: type: object properties: - leases: + name: + type: string + app_name: + type: string + version: + type: string + git_commit: + type: string + build_tags: + type: string + go_version: + type: string + build_deps: type: array items: type: object properties: - lease_id: - type: object - properties: - owner: - type: string - dseq: - type: string - format: uint64 - gseq: - type: integer - format: int64 - oseq: - type: integer - format: int64 - provider: - type: string - title: LeaseID stores bid details of lease - state: + path: type: string - enum: - - invalid - - active - - insufficient_funds - - closed - default: invalid - description: >- - - invalid: Prefix should start with 0 in enum. So declaring - dummy state - - active: LeaseActive denotes state for lease active - - insufficient_funds: LeaseInsufficientFunds denotes state for lease insufficient_funds - - closed: LeaseClosed denotes state for lease closed - title: State is an enum which refers to state of lease - price: - type: object - properties: - denom: - type: string - amount: - type: string - description: >- - Coin defines a token with a denomination and an amount. - - - NOTE: The amount field is an Int which implements the custom - method - - signatures required by gogoproto. - title: 'Lease stores LeaseID, state of lease and price' - pagination: + title: module path + version: + type: string + title: module version + sum: + type: string + title: checksum + title: Module is the type for VersionInfo + description: VersionInfo is the type for the GetNodeInfoResponse message. + tendermint.crypto.PublicKey: + type: object + properties: + ed25519: + type: string + format: byte + secp256k1: + type: string + format: byte + title: PublicKey defines the keys available for use with Tendermint Validators + tendermint.p2p.DefaultNodeInfo: + type: object + properties: + protocol_version: type: object properties: - next_key: + p2p: type: string - format: byte - title: |- - next_key is the key to be passed to PageRequest.key to - query the next page most efficiently - total: + format: uint64 + block: type: string format: uint64 - title: >- - total is total number of results available if - PageRequest.count_total - - was set, its value is undefined otherwise - description: |- - PageResponse is to be embedded in gRPC response messages where the - corresponding request message has used PageRequest. - - message SomeResponse { - repeated Bar results = 1; - PageResponse page = 2; - } - title: QueryLeasesResponse is response type for the Query/Leases RPC method - akash.market.v1beta1.QueryOrderResponse: + app: + type: string + format: uint64 + default_node_id: + type: string + listen_addr: + type: string + network: + type: string + version: + type: string + channels: + type: string + format: byte + moniker: + type: string + other: + type: object + properties: + tx_index: + type: string + rpc_address: + type: string + tendermint.p2p.DefaultNodeInfoOther: type: object properties: - order: + tx_index: + type: string + rpc_address: + type: string + tendermint.p2p.ProtocolVersion: + type: object + properties: + p2p: + type: string + format: uint64 + block: + type: string + format: uint64 + app: + type: string + format: uint64 + tendermint.types.Block: + type: object + properties: + header: type: object properties: - order_id: + version: + title: basic block info type: object properties: - owner: + block: type: string - dseq: + format: uint64 + app: type: string format: uint64 - gseq: - type: integer - format: int64 - oseq: - type: integer - format: int64 - title: OrderID stores owner and all other seq numbers - state: - type: string - enum: - - invalid - - open - - matched - - closed - default: invalid description: >- - - invalid: Prefix should start with 0 in enum. So declaring dummy - state - - open: OrderOpen denotes state for order open - - matched: OrderMatched denotes state for order matched - - closed: OrderClosed denotes state for order lost - title: State is an enum which refers to state of order - start_at: + Consensus captures the consensus rules for processing a block in + the blockchain, + + including all blockchain data structures and the rules of the + application's + + state transition machine. + chain_id: + type: string + height: type: string format: int64 - spec: + time: + type: string + format: date-time + last_block_id: type: object properties: - name: + hash: type: string - requirements: + format: byte + part_set_header: type: object properties: - signed_by: - title: >- - SignedBy list of keys that tenants expect to have - signatures from - type: object - properties: - all_of: - type: array - items: - type: string - title: >- - all_of all keys in this list must have signed - attributes - any_of: - type: array - items: - type: string - title: >- - any_of at least of of the keys from the list must have - signed attributes - attributes: - type: array - items: - type: object - properties: - key: - type: string - value: - type: string - title: Attribute represents key value pair - title: >- - Attribute list of attributes tenant expects from the - provider - title: PlacementRequirements - resources: - type: array - items: + total: + type: integer + format: int64 + hash: + type: string + format: byte + title: PartsetHeader + title: BlockID + last_commit_hash: + type: string + format: byte + title: hashes of block data + data_hash: + type: string + format: byte + validators_hash: + type: string + format: byte + title: hashes from the app output from the prev block + next_validators_hash: + type: string + format: byte + consensus_hash: + type: string + format: byte + app_hash: + type: string + format: byte + last_results_hash: + type: string + format: byte + evidence_hash: + type: string + format: byte + title: consensus info + proposer_address: + type: string + format: byte + description: Header defines the structure of a Tendermint block header. + data: + type: object + properties: + txs: + type: array + items: + type: string + format: byte + description: >- + Txs that will be applied by state @ block.Height+1. + + NOTE: not all txs here are valid. We're just agreeing on the + order first. + + This means that block.AppHash does not include these txs. + title: Data contains the set of transactions included in the block + evidence: + type: object + properties: + evidence: + type: array + items: + type: object + properties: + duplicate_vote_evidence: type: object properties: - resources: + vote_a: type: object properties: - cpu: - type: object - properties: - units: - type: object - properties: - val: - type: string - format: byte - title: 'Unit stores cpu, memory and storage metrics' - attributes: - type: array - items: - type: object - properties: - key: - type: string - value: - type: string - title: Attribute represents key value pair - title: CPU stores resource units and cpu config attributes - memory: + type: + type: string + enum: + - SIGNED_MSG_TYPE_UNKNOWN + - SIGNED_MSG_TYPE_PREVOTE + - SIGNED_MSG_TYPE_PRECOMMIT + - SIGNED_MSG_TYPE_PROPOSAL + default: SIGNED_MSG_TYPE_UNKNOWN + description: >- + SignedMsgType is a type of signed message in the + consensus. + + - SIGNED_MSG_TYPE_PREVOTE: Votes + - SIGNED_MSG_TYPE_PROPOSAL: Proposals + height: + type: string + format: int64 + round: + type: integer + format: int32 + block_id: type: object properties: - quantity: + hash: + type: string + format: byte + part_set_header: type: object properties: - val: + total: + type: integer + format: int64 + hash: type: string format: byte - title: 'Unit stores cpu, memory and storage metrics' - attributes: - type: array - items: - type: object - properties: - key: - type: string - value: - type: string - title: Attribute represents key value pair - title: >- - Memory stores resource quantity and memory - attributes - storage: + title: PartsetHeader + title: BlockID + timestamp: + type: string + format: date-time + validator_address: + type: string + format: byte + validator_index: + type: integer + format: int32 + signature: + type: string + format: byte + description: >- + Vote represents a prevote, precommit, or commit vote + from validators for + + consensus. + vote_b: + type: object + properties: + type: + type: string + enum: + - SIGNED_MSG_TYPE_UNKNOWN + - SIGNED_MSG_TYPE_PREVOTE + - SIGNED_MSG_TYPE_PRECOMMIT + - SIGNED_MSG_TYPE_PROPOSAL + default: SIGNED_MSG_TYPE_UNKNOWN + description: >- + SignedMsgType is a type of signed message in the + consensus. + + - SIGNED_MSG_TYPE_PREVOTE: Votes + - SIGNED_MSG_TYPE_PROPOSAL: Proposals + height: + type: string + format: int64 + round: + type: integer + format: int32 + block_id: type: object properties: - quantity: + hash: + type: string + format: byte + part_set_header: type: object properties: - val: + total: + type: integer + format: int64 + hash: type: string format: byte - title: 'Unit stores cpu, memory and storage metrics' - attributes: - type: array - items: - type: object - properties: - key: - type: string - value: - type: string - title: Attribute represents key value pair - title: >- - Storage stores resource quantity and storage - attributes - endpoints: - type: array - items: - type: object - title: >- - Endpoint describes a publicly accessible IP - service - title: >- - ResourceUnits describes all available resources types - for deployment/node etc - - if field is nil resource is not present in the given - data-structure - count: - type: integer - format: int64 - price: - type: object - properties: - denom: + title: PartsetHeader + title: BlockID + timestamp: type: string - amount: - type: string - description: >- - Coin defines a token with a denomination and an amount. - - - NOTE: The amount field is an Int which implements the - custom method - - signatures required by gogoproto. - title: 'Resource stores unit, total count and price of resource' - order_bid_duration: - type: string - format: int64 - title: GroupSpec stores group specifications - close_at: - type: string - format: int64 - title: 'Order stores orderID, state of order and other details' - title: QueryOrderResponse is response type for the Query/Order RPC method - akash.market.v1beta1.QueryOrdersResponse: - type: object - properties: - orders: - type: array - items: - type: object - properties: - order_id: - type: object - properties: - owner: - type: string - dseq: - type: string - format: uint64 - gseq: - type: integer - format: int64 - oseq: - type: integer - format: int64 - title: OrderID stores owner and all other seq numbers - state: - type: string - enum: - - invalid - - open - - matched - - closed - default: invalid - description: >- - - invalid: Prefix should start with 0 in enum. So declaring - dummy state - - open: OrderOpen denotes state for order open - - matched: OrderMatched denotes state for order matched - - closed: OrderClosed denotes state for order lost - title: State is an enum which refers to state of order - start_at: - type: string - format: int64 - spec: - type: object - properties: - name: - type: string - requirements: - type: object - properties: - signed_by: - title: >- - SignedBy list of keys that tenants expect to have - signatures from - type: object - properties: - all_of: - type: array - items: - type: string - title: >- - all_of all keys in this list must have signed - attributes - any_of: - type: array - items: - type: string - title: >- - any_of at least of of the keys from the list must - have signed attributes - attributes: - type: array - items: - type: object - properties: - key: - type: string - value: - type: string - title: Attribute represents key value pair - title: >- - Attribute list of attributes tenant expects from the - provider - title: PlacementRequirements - resources: - type: array - items: - type: object - properties: - resources: - type: object - properties: - cpu: - type: object - properties: - units: - type: object - properties: - val: - type: string - format: byte - title: 'Unit stores cpu, memory and storage metrics' - attributes: - type: array - items: + format: date-time + validator_address: + type: string + format: byte + validator_index: + type: integer + format: int32 + signature: + type: string + format: byte + description: >- + Vote represents a prevote, precommit, or commit vote + from validators for + + consensus. + total_voting_power: + type: string + format: int64 + validator_power: + type: string + format: int64 + timestamp: + type: string + format: date-time + description: >- + DuplicateVoteEvidence contains evidence of a validator + signed two conflicting votes. + light_client_attack_evidence: + type: object + properties: + conflicting_block: + type: object + properties: + signed_header: + type: object + properties: + header: + type: object + properties: + version: + title: basic block info type: object properties: - key: + block: type: string - value: + format: uint64 + app: type: string - title: Attribute represents key value pair - title: >- - CPU stores resource units and cpu config - attributes - memory: - type: object - properties: - quantity: - type: object - properties: - val: - type: string - format: byte - title: 'Unit stores cpu, memory and storage metrics' - attributes: - type: array - items: + format: uint64 + description: >- + Consensus captures the consensus rules for + processing a block in the blockchain, + + including all blockchain data structures and + the rules of the application's + + state transition machine. + chain_id: + type: string + height: + type: string + format: int64 + time: + type: string + format: date-time + last_block_id: type: object properties: - key: + hash: type: string - value: + format: byte + part_set_header: + type: object + properties: + total: + type: integer + format: int64 + hash: + type: string + format: byte + title: PartsetHeader + title: BlockID + last_commit_hash: + type: string + format: byte + title: hashes of block data + data_hash: + type: string + format: byte + validators_hash: + type: string + format: byte + title: >- + hashes from the app output from the prev + block + next_validators_hash: + type: string + format: byte + consensus_hash: + type: string + format: byte + app_hash: + type: string + format: byte + last_results_hash: + type: string + format: byte + evidence_hash: + type: string + format: byte + title: consensus info + proposer_address: + type: string + format: byte + description: >- + Header defines the structure of a Tendermint + block header. + commit: + type: object + properties: + height: + type: string + format: int64 + round: + type: integer + format: int32 + block_id: + type: object + properties: + hash: type: string - title: Attribute represents key value pair - title: >- - Memory stores resource quantity and memory - attributes - storage: - type: object - properties: - quantity: + format: byte + part_set_header: + type: object + properties: + total: + type: integer + format: int64 + hash: + type: string + format: byte + title: PartsetHeader + title: BlockID + signatures: + type: array + items: + type: object + properties: + block_id_flag: + type: string + enum: + - BLOCK_ID_FLAG_UNKNOWN + - BLOCK_ID_FLAG_ABSENT + - BLOCK_ID_FLAG_COMMIT + - BLOCK_ID_FLAG_NIL + default: BLOCK_ID_FLAG_UNKNOWN + title: >- + BlockIdFlag indicates which BlcokID the + signature is for + validator_address: + type: string + format: byte + timestamp: + type: string + format: date-time + signature: + type: string + format: byte + description: >- + CommitSig is a part of the Vote included + in a Commit. + description: >- + Commit contains the evidence that a block was + committed by a set of validators. + validator_set: + type: object + properties: + validators: + type: array + items: type: object properties: - val: + address: type: string format: byte - title: 'Unit stores cpu, memory and storage metrics' - attributes: - type: array - items: + pub_key: + type: object + properties: + ed25519: + type: string + format: byte + secp256k1: + type: string + format: byte + title: >- + PublicKey defines the keys available for + use with Tendermint Validators + voting_power: + type: string + format: int64 + proposer_priority: + type: string + format: int64 + proposer: + type: object + properties: + address: + type: string + format: byte + pub_key: type: object properties: - key: + ed25519: type: string - value: + format: byte + secp256k1: type: string - title: Attribute represents key value pair - title: >- - Storage stores resource quantity and storage - attributes - endpoints: - type: array - items: - type: object - title: >- - Endpoint describes a publicly accessible IP - service - title: >- - ResourceUnits describes all available resources types - for deployment/node etc - - if field is nil resource is not present in the given - data-structure - count: - type: integer - format: int64 - price: + format: byte + title: >- + PublicKey defines the keys available for use + with Tendermint Validators + voting_power: + type: string + format: int64 + proposer_priority: + type: string + format: int64 + total_voting_power: + type: string + format: int64 + common_height: + type: string + format: int64 + byzantine_validators: + type: array + items: type: object properties: - denom: + address: type: string - amount: + format: byte + pub_key: + type: object + properties: + ed25519: + type: string + format: byte + secp256k1: + type: string + format: byte + title: >- + PublicKey defines the keys available for use with + Tendermint Validators + voting_power: type: string - description: >- - Coin defines a token with a denomination and an - amount. - - - NOTE: The amount field is an Int which implements the - custom method - - signatures required by gogoproto. - title: 'Resource stores unit, total count and price of resource' - order_bid_duration: - type: string - format: int64 - title: GroupSpec stores group specifications - close_at: - type: string - format: int64 - title: 'Order stores orderID, state of order and other details' - pagination: - type: object - properties: - next_key: - type: string - format: byte - title: |- - next_key is the key to be passed to PageRequest.key to - query the next page most efficiently - total: - type: string - format: uint64 - title: >- - total is total number of results available if - PageRequest.count_total - - was set, its value is undefined otherwise - description: |- - PageResponse is to be embedded in gRPC response messages where the - corresponding request message has used PageRequest. - - message SomeResponse { - repeated Bar results = 1; - PageResponse page = 2; - } - title: QueryOrdersResponse is response type for the Query/Orders RPC method - akash.provider.v1beta1.Provider: - type: object - properties: - owner: - type: string - host_uri: - type: string - attributes: - type: array - items: - type: object - properties: - key: - type: string - value: - type: string - title: Attribute represents key value pair - title: Provider stores owner and host details - akash.provider.v1beta1.QueryProviderResponse: - type: object - properties: - provider: + format: int64 + proposer_priority: + type: string + format: int64 + total_voting_power: + type: string + format: int64 + timestamp: + type: string + format: date-time + description: >- + LightClientAttackEvidence contains evidence of a set of + validators attempting to mislead a light client. + last_commit: type: object properties: - owner: - type: string - host_uri: + height: type: string - attributes: + format: int64 + round: + type: integer + format: int32 + block_id: + type: object + properties: + hash: + type: string + format: byte + part_set_header: + type: object + properties: + total: + type: integer + format: int64 + hash: + type: string + format: byte + title: PartsetHeader + title: BlockID + signatures: type: array items: type: object properties: - key: + block_id_flag: type: string - value: + enum: + - BLOCK_ID_FLAG_UNKNOWN + - BLOCK_ID_FLAG_ABSENT + - BLOCK_ID_FLAG_COMMIT + - BLOCK_ID_FLAG_NIL + default: BLOCK_ID_FLAG_UNKNOWN + title: BlockIdFlag indicates which BlcokID the signature is for + validator_address: type: string - title: Attribute represents key value pair - title: Provider stores owner and host details - title: QueryProviderResponse is response type for the Query/Provider RPC method - akash.provider.v1beta1.QueryProvidersResponse: + format: byte + timestamp: + type: string + format: date-time + signature: + type: string + format: byte + description: CommitSig is a part of the Vote included in a Commit. + description: >- + Commit contains the evidence that a block was committed by a set of + validators. + tendermint.types.BlockID: type: object properties: - providers: - type: array - items: - type: object - properties: - owner: - type: string - host_uri: - type: string - attributes: - type: array - items: - type: object - properties: - key: - type: string - value: - type: string - title: Attribute represents key value pair - title: Provider stores owner and host details - pagination: + hash: + type: string + format: byte + part_set_header: type: object properties: - next_key: - type: string - format: byte - title: |- - next_key is the key to be passed to PageRequest.key to - query the next page most efficiently total: + type: integer + format: int64 + hash: type: string - format: uint64 - title: >- - total is total number of results available if - PageRequest.count_total - - was set, its value is undefined otherwise - description: |- - PageResponse is to be embedded in gRPC response messages where the - corresponding request message has used PageRequest. - - message SomeResponse { - repeated Bar results = 1; - PageResponse page = 2; - } - title: QueryProvidersResponse is response type for the Query/Providers RPC method - CheckTxResult: + format: byte + title: PartsetHeader + title: BlockID + tendermint.types.BlockIDFlag: + type: string + enum: + - BLOCK_ID_FLAG_UNKNOWN + - BLOCK_ID_FLAG_ABSENT + - BLOCK_ID_FLAG_COMMIT + - BLOCK_ID_FLAG_NIL + default: BLOCK_ID_FLAG_UNKNOWN + title: BlockIdFlag indicates which BlcokID the signature is for + tendermint.types.Commit: type: object properties: - code: - type: integer - data: + height: type: string - gas_used: - type: integer - gas_wanted: + format: int64 + round: type: integer - info: - type: string - log: - type: string - tags: + format: int32 + block_id: + type: object + properties: + hash: + type: string + format: byte + part_set_header: + type: object + properties: + total: + type: integer + format: int64 + hash: + type: string + format: byte + title: PartsetHeader + title: BlockID + signatures: type: array items: type: object properties: - key: + block_id_flag: type: string - value: + enum: + - BLOCK_ID_FLAG_UNKNOWN + - BLOCK_ID_FLAG_ABSENT + - BLOCK_ID_FLAG_COMMIT + - BLOCK_ID_FLAG_NIL + default: BLOCK_ID_FLAG_UNKNOWN + title: BlockIdFlag indicates which BlcokID the signature is for + validator_address: type: string - example: - code: 0 - data: data - log: log - gas_used: 5000 - gas_wanted: 10000 - info: info - tags: - - '' - - '' - DeliverTxResult: + format: byte + timestamp: + type: string + format: date-time + signature: + type: string + format: byte + description: CommitSig is a part of the Vote included in a Commit. + description: >- + Commit contains the evidence that a block was committed by a set of + validators. + tendermint.types.CommitSig: type: object properties: - code: - type: integer - data: + block_id_flag: type: string - gas_used: - type: integer - gas_wanted: - type: integer - info: + enum: + - BLOCK_ID_FLAG_UNKNOWN + - BLOCK_ID_FLAG_ABSENT + - BLOCK_ID_FLAG_COMMIT + - BLOCK_ID_FLAG_NIL + default: BLOCK_ID_FLAG_UNKNOWN + title: BlockIdFlag indicates which BlcokID the signature is for + validator_address: type: string - log: + format: byte + timestamp: type: string - tags: + format: date-time + signature: + type: string + format: byte + description: CommitSig is a part of the Vote included in a Commit. + tendermint.types.Data: + type: object + properties: + txs: type: array items: - type: object - properties: - key: - type: string - value: - type: string - example: - code: 5 - data: data - log: log - gas_used: 5000 - gas_wanted: 10000 - info: info - tags: - - '' - - '' - BroadcastTxCommitResult: + type: string + format: byte + description: >- + Txs that will be applied by state @ block.Height+1. + + NOTE: not all txs here are valid. We're just agreeing on the order + first. + + This means that block.AppHash does not include these txs. + title: Data contains the set of transactions included in the block + tendermint.types.DuplicateVoteEvidence: type: object properties: - check_tx: + vote_a: type: object properties: - code: - type: integer - data: + type: type: string - gas_used: - type: integer - gas_wanted: + enum: + - SIGNED_MSG_TYPE_UNKNOWN + - SIGNED_MSG_TYPE_PREVOTE + - SIGNED_MSG_TYPE_PRECOMMIT + - SIGNED_MSG_TYPE_PROPOSAL + default: SIGNED_MSG_TYPE_UNKNOWN + description: |- + SignedMsgType is a type of signed message in the consensus. + + - SIGNED_MSG_TYPE_PREVOTE: Votes + - SIGNED_MSG_TYPE_PROPOSAL: Proposals + height: + type: string + format: int64 + round: type: integer - info: + format: int32 + block_id: + type: object + properties: + hash: + type: string + format: byte + part_set_header: + type: object + properties: + total: + type: integer + format: int64 + hash: + type: string + format: byte + title: PartsetHeader + title: BlockID + timestamp: type: string - log: + format: date-time + validator_address: type: string - tags: - type: array - items: - type: object - properties: - key: - type: string - value: - type: string - example: - code: 0 - data: data - log: log - gas_used: 5000 - gas_wanted: 10000 - info: info - tags: - - '' - - '' - deliver_tx: + format: byte + validator_index: + type: integer + format: int32 + signature: + type: string + format: byte + description: >- + Vote represents a prevote, precommit, or commit vote from validators + for + + consensus. + vote_b: type: object properties: - code: + type: + type: string + enum: + - SIGNED_MSG_TYPE_UNKNOWN + - SIGNED_MSG_TYPE_PREVOTE + - SIGNED_MSG_TYPE_PRECOMMIT + - SIGNED_MSG_TYPE_PROPOSAL + default: SIGNED_MSG_TYPE_UNKNOWN + description: |- + SignedMsgType is a type of signed message in the consensus. + + - SIGNED_MSG_TYPE_PREVOTE: Votes + - SIGNED_MSG_TYPE_PROPOSAL: Proposals + height: + type: string + format: int64 + round: type: integer - data: + format: int32 + block_id: + type: object + properties: + hash: + type: string + format: byte + part_set_header: + type: object + properties: + total: + type: integer + format: int64 + hash: + type: string + format: byte + title: PartsetHeader + title: BlockID + timestamp: type: string - gas_used: - type: integer - gas_wanted: - type: integer - info: + format: date-time + validator_address: type: string - log: + format: byte + validator_index: + type: integer + format: int32 + signature: type: string - tags: - type: array - items: - type: object - properties: - key: - type: string - value: - type: string - example: - code: 5 - data: data - log: log - gas_used: 5000 - gas_wanted: 10000 - info: info - tags: - - '' - - '' - hash: - type: string - example: EE5F3404034C524501629B56E0DDC38FAD651F04 - height: - type: integer - KVPair: - type: object - properties: - key: - type: string - value: + format: byte + description: >- + Vote represents a prevote, precommit, or commit vote from validators + for + + consensus. + total_voting_power: type: string - Msg: - type: string - Address: - type: string - description: bech32 encoded address - example: cosmos1depk54cuajgkzea6zpgkq36tnjwdzv4afc3d27 - ValidatorAddress: - type: string - description: bech32 encoded address - example: cosmosvaloper16xyempempp92x9hyzz9wrgf94r6j9h5f2w4n2l - Coin: - type: object - properties: - denom: + format: int64 + validator_power: type: string - example: stake - amount: + format: int64 + timestamp: type: string - example: '50' - Hash: - type: string - example: EE5F3404034C524501629B56E0DDC38FAD651F04 - TxQuery: + format: date-time + description: >- + DuplicateVoteEvidence contains evidence of a validator signed two + conflicting votes. + tendermint.types.Evidence: type: object properties: - hash: - type: string - example: D085138D913993919295FF4B0A9107F1F2CDE0D37A87CE0644E217CBF3B49656 - height: - type: number - example: 368 - tx: + duplicate_vote_evidence: type: object properties: - msg: - type: array - items: - type: string - fee: + vote_a: type: object properties: - gas: + type: type: string - amount: - type: array - items: - type: object - properties: - denom: - type: string - example: stake - amount: - type: string - example: '50' - memo: - type: string - signature: + enum: + - SIGNED_MSG_TYPE_UNKNOWN + - SIGNED_MSG_TYPE_PREVOTE + - SIGNED_MSG_TYPE_PRECOMMIT + - SIGNED_MSG_TYPE_PROPOSAL + default: SIGNED_MSG_TYPE_UNKNOWN + description: |- + SignedMsgType is a type of signed message in the consensus. + + - SIGNED_MSG_TYPE_PREVOTE: Votes + - SIGNED_MSG_TYPE_PROPOSAL: Proposals + height: + type: string + format: int64 + round: + type: integer + format: int32 + block_id: + type: object + properties: + hash: + type: string + format: byte + part_set_header: + type: object + properties: + total: + type: integer + format: int64 + hash: + type: string + format: byte + title: PartsetHeader + title: BlockID + timestamp: + type: string + format: date-time + validator_address: + type: string + format: byte + validator_index: + type: integer + format: int32 + signature: + type: string + format: byte + description: >- + Vote represents a prevote, precommit, or commit vote from + validators for + + consensus. + vote_b: type: object properties: - signature: + type: type: string - example: >- - MEUCIQD02fsDPra8MtbRsyB1w7bqTM55Wu138zQbFcWx4+CFyAIge5WNPfKIuvzBZ69MyqHsqD8S1IwiEp+iUb6VSdtlpgY= - pub_key: + enum: + - SIGNED_MSG_TYPE_UNKNOWN + - SIGNED_MSG_TYPE_PREVOTE + - SIGNED_MSG_TYPE_PRECOMMIT + - SIGNED_MSG_TYPE_PROPOSAL + default: SIGNED_MSG_TYPE_UNKNOWN + description: |- + SignedMsgType is a type of signed message in the consensus. + + - SIGNED_MSG_TYPE_PREVOTE: Votes + - SIGNED_MSG_TYPE_PROPOSAL: Proposals + height: + type: string + format: int64 + round: + type: integer + format: int32 + block_id: type: object properties: - type: - type: string - example: tendermint/PubKeySecp256k1 - value: + hash: type: string - example: Avz04VhtKJh8ACCVzlI8aTosGy0ikFXKIVHQ3jKMrosH - account_number: + format: byte + part_set_header: + type: object + properties: + total: + type: integer + format: int64 + hash: + type: string + format: byte + title: PartsetHeader + title: BlockID + timestamp: type: string - example: '0' - sequence: + format: date-time + validator_address: type: string - example: '0' - result: - type: object - properties: - log: + format: byte + validator_index: + type: integer + format: int32 + signature: + type: string + format: byte + description: >- + Vote represents a prevote, precommit, or commit vote from + validators for + + consensus. + total_voting_power: type: string - gas_wanted: + format: int64 + validator_power: type: string - example: '200000' - gas_used: + format: int64 + timestamp: type: string - example: '26354' - tags: + format: date-time + description: >- + DuplicateVoteEvidence contains evidence of a validator signed two + conflicting votes. + light_client_attack_evidence: + type: object + properties: + conflicting_block: + type: object + properties: + signed_header: + type: object + properties: + header: + type: object + properties: + version: + title: basic block info + type: object + properties: + block: + type: string + format: uint64 + app: + type: string + format: uint64 + description: >- + Consensus captures the consensus rules for processing + a block in the blockchain, + + including all blockchain data structures and the rules + of the application's + + state transition machine. + chain_id: + type: string + height: + type: string + format: int64 + time: + type: string + format: date-time + last_block_id: + type: object + properties: + hash: + type: string + format: byte + part_set_header: + type: object + properties: + total: + type: integer + format: int64 + hash: + type: string + format: byte + title: PartsetHeader + title: BlockID + last_commit_hash: + type: string + format: byte + title: hashes of block data + data_hash: + type: string + format: byte + validators_hash: + type: string + format: byte + title: hashes from the app output from the prev block + next_validators_hash: + type: string + format: byte + consensus_hash: + type: string + format: byte + app_hash: + type: string + format: byte + last_results_hash: + type: string + format: byte + evidence_hash: + type: string + format: byte + title: consensus info + proposer_address: + type: string + format: byte + description: Header defines the structure of a Tendermint block header. + commit: + type: object + properties: + height: + type: string + format: int64 + round: + type: integer + format: int32 + block_id: + type: object + properties: + hash: + type: string + format: byte + part_set_header: + type: object + properties: + total: + type: integer + format: int64 + hash: + type: string + format: byte + title: PartsetHeader + title: BlockID + signatures: + type: array + items: + type: object + properties: + block_id_flag: + type: string + enum: + - BLOCK_ID_FLAG_UNKNOWN + - BLOCK_ID_FLAG_ABSENT + - BLOCK_ID_FLAG_COMMIT + - BLOCK_ID_FLAG_NIL + default: BLOCK_ID_FLAG_UNKNOWN + title: >- + BlockIdFlag indicates which BlcokID the + signature is for + validator_address: + type: string + format: byte + timestamp: + type: string + format: date-time + signature: + type: string + format: byte + description: >- + CommitSig is a part of the Vote included in a + Commit. + description: >- + Commit contains the evidence that a block was committed by + a set of validators. + validator_set: + type: object + properties: + validators: + type: array + items: + type: object + properties: + address: + type: string + format: byte + pub_key: + type: object + properties: + ed25519: + type: string + format: byte + secp256k1: + type: string + format: byte + title: >- + PublicKey defines the keys available for use with + Tendermint Validators + voting_power: + type: string + format: int64 + proposer_priority: + type: string + format: int64 + proposer: + type: object + properties: + address: + type: string + format: byte + pub_key: + type: object + properties: + ed25519: + type: string + format: byte + secp256k1: + type: string + format: byte + title: >- + PublicKey defines the keys available for use with + Tendermint Validators + voting_power: + type: string + format: int64 + proposer_priority: + type: string + format: int64 + total_voting_power: + type: string + format: int64 + common_height: + type: string + format: int64 + byzantine_validators: type: array items: type: object properties: - key: + address: type: string - value: + format: byte + pub_key: + type: object + properties: + ed25519: + type: string + format: byte + secp256k1: + type: string + format: byte + title: >- + PublicKey defines the keys available for use with Tendermint + Validators + voting_power: type: string - PaginatedQueryTxs: + format: int64 + proposer_priority: + type: string + format: int64 + total_voting_power: + type: string + format: int64 + timestamp: + type: string + format: date-time + description: >- + LightClientAttackEvidence contains evidence of a set of validators + attempting to mislead a light client. + tendermint.types.EvidenceList: type: object properties: - total_count: - type: number - example: 1 - count: - type: number - example: 1 - page_number: - type: number - example: 1 - page_total: - type: number - example: 1 - limit: - type: number - example: 30 - txs: + evidence: type: array items: type: object properties: - hash: - type: string - example: D085138D913993919295FF4B0A9107F1F2CDE0D37A87CE0644E217CBF3B49656 - height: - type: number - example: 368 - tx: + duplicate_vote_evidence: type: object properties: - msg: - type: array - items: - type: string - fee: + vote_a: type: object properties: - gas: + type: type: string - amount: - type: array - items: - type: object - properties: - denom: - type: string - example: stake - amount: - type: string - example: '50' - memo: - type: string - signature: + enum: + - SIGNED_MSG_TYPE_UNKNOWN + - SIGNED_MSG_TYPE_PREVOTE + - SIGNED_MSG_TYPE_PRECOMMIT + - SIGNED_MSG_TYPE_PROPOSAL + default: SIGNED_MSG_TYPE_UNKNOWN + description: >- + SignedMsgType is a type of signed message in the + consensus. + + - SIGNED_MSG_TYPE_PREVOTE: Votes + - SIGNED_MSG_TYPE_PROPOSAL: Proposals + height: + type: string + format: int64 + round: + type: integer + format: int32 + block_id: + type: object + properties: + hash: + type: string + format: byte + part_set_header: + type: object + properties: + total: + type: integer + format: int64 + hash: + type: string + format: byte + title: PartsetHeader + title: BlockID + timestamp: + type: string + format: date-time + validator_address: + type: string + format: byte + validator_index: + type: integer + format: int32 + signature: + type: string + format: byte + description: >- + Vote represents a prevote, precommit, or commit vote from + validators for + + consensus. + vote_b: type: object properties: + type: + type: string + enum: + - SIGNED_MSG_TYPE_UNKNOWN + - SIGNED_MSG_TYPE_PREVOTE + - SIGNED_MSG_TYPE_PRECOMMIT + - SIGNED_MSG_TYPE_PROPOSAL + default: SIGNED_MSG_TYPE_UNKNOWN + description: >- + SignedMsgType is a type of signed message in the + consensus. + + - SIGNED_MSG_TYPE_PREVOTE: Votes + - SIGNED_MSG_TYPE_PROPOSAL: Proposals + height: + type: string + format: int64 + round: + type: integer + format: int32 + block_id: + type: object + properties: + hash: + type: string + format: byte + part_set_header: + type: object + properties: + total: + type: integer + format: int64 + hash: + type: string + format: byte + title: PartsetHeader + title: BlockID + timestamp: + type: string + format: date-time + validator_address: + type: string + format: byte + validator_index: + type: integer + format: int32 signature: type: string - example: >- - MEUCIQD02fsDPra8MtbRsyB1w7bqTM55Wu138zQbFcWx4+CFyAIge5WNPfKIuvzBZ69MyqHsqD8S1IwiEp+iUb6VSdtlpgY= - pub_key: + format: byte + description: >- + Vote represents a prevote, precommit, or commit vote from + validators for + + consensus. + total_voting_power: + type: string + format: int64 + validator_power: + type: string + format: int64 + timestamp: + type: string + format: date-time + description: >- + DuplicateVoteEvidence contains evidence of a validator signed + two conflicting votes. + light_client_attack_evidence: + type: object + properties: + conflicting_block: + type: object + properties: + signed_header: + type: object + properties: + header: + type: object + properties: + version: + title: basic block info + type: object + properties: + block: + type: string + format: uint64 + app: + type: string + format: uint64 + description: >- + Consensus captures the consensus rules for + processing a block in the blockchain, + + including all blockchain data structures and the + rules of the application's + + state transition machine. + chain_id: + type: string + height: + type: string + format: int64 + time: + type: string + format: date-time + last_block_id: + type: object + properties: + hash: + type: string + format: byte + part_set_header: + type: object + properties: + total: + type: integer + format: int64 + hash: + type: string + format: byte + title: PartsetHeader + title: BlockID + last_commit_hash: + type: string + format: byte + title: hashes of block data + data_hash: + type: string + format: byte + validators_hash: + type: string + format: byte + title: hashes from the app output from the prev block + next_validators_hash: + type: string + format: byte + consensus_hash: + type: string + format: byte + app_hash: + type: string + format: byte + last_results_hash: + type: string + format: byte + evidence_hash: + type: string + format: byte + title: consensus info + proposer_address: + type: string + format: byte + description: >- + Header defines the structure of a Tendermint block + header. + commit: + type: object + properties: + height: + type: string + format: int64 + round: + type: integer + format: int32 + block_id: + type: object + properties: + hash: + type: string + format: byte + part_set_header: + type: object + properties: + total: + type: integer + format: int64 + hash: + type: string + format: byte + title: PartsetHeader + title: BlockID + signatures: + type: array + items: + type: object + properties: + block_id_flag: + type: string + enum: + - BLOCK_ID_FLAG_UNKNOWN + - BLOCK_ID_FLAG_ABSENT + - BLOCK_ID_FLAG_COMMIT + - BLOCK_ID_FLAG_NIL + default: BLOCK_ID_FLAG_UNKNOWN + title: >- + BlockIdFlag indicates which BlcokID the + signature is for + validator_address: + type: string + format: byte + timestamp: + type: string + format: date-time + signature: + type: string + format: byte + description: >- + CommitSig is a part of the Vote included in a + Commit. + description: >- + Commit contains the evidence that a block was + committed by a set of validators. + validator_set: type: object properties: - type: - type: string - example: tendermint/PubKeySecp256k1 - value: + validators: + type: array + items: + type: object + properties: + address: + type: string + format: byte + pub_key: + type: object + properties: + ed25519: + type: string + format: byte + secp256k1: + type: string + format: byte + title: >- + PublicKey defines the keys available for use + with Tendermint Validators + voting_power: + type: string + format: int64 + proposer_priority: + type: string + format: int64 + proposer: + type: object + properties: + address: + type: string + format: byte + pub_key: + type: object + properties: + ed25519: + type: string + format: byte + secp256k1: + type: string + format: byte + title: >- + PublicKey defines the keys available for use + with Tendermint Validators + voting_power: + type: string + format: int64 + proposer_priority: + type: string + format: int64 + total_voting_power: type: string - example: Avz04VhtKJh8ACCVzlI8aTosGy0ikFXKIVHQ3jKMrosH - account_number: - type: string - example: '0' - sequence: - type: string - example: '0' - result: - type: object - properties: - log: - type: string - gas_wanted: - type: string - example: '200000' - gas_used: + format: int64 + common_height: type: string - example: '26354' - tags: + format: int64 + byzantine_validators: type: array items: type: object properties: - key: + address: type: string - value: + format: byte + pub_key: + type: object + properties: + ed25519: + type: string + format: byte + secp256k1: + type: string + format: byte + title: >- + PublicKey defines the keys available for use with + Tendermint Validators + voting_power: type: string - StdTx: - type: object - properties: - msg: - type: array - items: - type: string - fee: - type: object - properties: - gas: - type: string - amount: - type: array - items: - type: object - properties: - denom: + format: int64 + proposer_priority: + type: string + format: int64 + total_voting_power: type: string - example: stake - amount: + format: int64 + timestamp: type: string - example: '50' - memo: - type: string - signature: - type: object - properties: - signature: - type: string - example: >- - MEUCIQD02fsDPra8MtbRsyB1w7bqTM55Wu138zQbFcWx4+CFyAIge5WNPfKIuvzBZ69MyqHsqD8S1IwiEp+iUb6VSdtlpgY= - pub_key: - type: object - properties: - type: - type: string - example: tendermint/PubKeySecp256k1 - value: - type: string - example: Avz04VhtKJh8ACCVzlI8aTosGy0ikFXKIVHQ3jKMrosH - account_number: - type: string - example: '0' - sequence: - type: string - example: '0' - BlockID: + format: date-time + description: >- + LightClientAttackEvidence contains evidence of a set of + validators attempting to mislead a light client. + tendermint.types.Header: type: object properties: - hash: - type: string - example: EE5F3404034C524501629B56E0DDC38FAD651F04 - parts: + version: + title: basic block info type: object properties: - total: - type: number - example: 0 - hash: + block: type: string - example: EE5F3404034C524501629B56E0DDC38FAD651F04 - BlockHeader: - type: object - properties: + format: uint64 + app: + type: string + format: uint64 + description: >- + Consensus captures the consensus rules for processing a block in the + blockchain, + + including all blockchain data structures and the rules of the + application's + + state transition machine. chain_id: type: string - example: cosmoshub-2 height: - type: number - example: 1 + type: string + format: int64 time: type: string - example: '2017-12-30T05:53:09.287+01:00' - num_txs: - type: number - example: 0 + format: date-time last_block_id: type: object properties: hash: type: string - example: EE5F3404034C524501629B56E0DDC38FAD651F04 - parts: + format: byte + part_set_header: type: object properties: total: - type: number - example: 0 + type: integer + format: int64 hash: type: string - example: EE5F3404034C524501629B56E0DDC38FAD651F04 - total_txs: - type: number - example: 35 + format: byte + title: PartsetHeader + title: BlockID last_commit_hash: type: string - example: EE5F3404034C524501629B56E0DDC38FAD651F04 + format: byte + title: hashes of block data data_hash: type: string - example: EE5F3404034C524501629B56E0DDC38FAD651F04 + format: byte validators_hash: type: string - example: EE5F3404034C524501629B56E0DDC38FAD651F04 + format: byte + title: hashes from the app output from the prev block next_validators_hash: type: string - example: EE5F3404034C524501629B56E0DDC38FAD651F04 + format: byte consensus_hash: type: string - example: EE5F3404034C524501629B56E0DDC38FAD651F04 + format: byte app_hash: type: string - example: EE5F3404034C524501629B56E0DDC38FAD651F04 - last_results_hash: - type: string - example: EE5F3404034C524501629B56E0DDC38FAD651F04 - evidence_hash: - type: string - example: EE5F3404034C524501629B56E0DDC38FAD651F04 - proposer_address: - type: string - description: bech32 encoded address - example: cosmos1depk54cuajgkzea6zpgkq36tnjwdzv4afc3d27 - version: - type: object - properties: - block: - type: string - example: 10 - app: - type: string - example: 0 - Block: - type: object - properties: - header: - type: object - properties: - chain_id: - type: string - example: cosmoshub-2 - height: - type: number - example: 1 - time: - type: string - example: '2017-12-30T05:53:09.287+01:00' - num_txs: - type: number - example: 0 - last_block_id: - type: object - properties: - hash: - type: string - example: EE5F3404034C524501629B56E0DDC38FAD651F04 - parts: - type: object - properties: - total: - type: number - example: 0 - hash: - type: string - example: EE5F3404034C524501629B56E0DDC38FAD651F04 - total_txs: - type: number - example: 35 - last_commit_hash: - type: string - example: EE5F3404034C524501629B56E0DDC38FAD651F04 - data_hash: - type: string - example: EE5F3404034C524501629B56E0DDC38FAD651F04 - validators_hash: - type: string - example: EE5F3404034C524501629B56E0DDC38FAD651F04 - next_validators_hash: - type: string - example: EE5F3404034C524501629B56E0DDC38FAD651F04 - consensus_hash: - type: string - example: EE5F3404034C524501629B56E0DDC38FAD651F04 - app_hash: - type: string - example: EE5F3404034C524501629B56E0DDC38FAD651F04 - last_results_hash: - type: string - example: EE5F3404034C524501629B56E0DDC38FAD651F04 - evidence_hash: - type: string - example: EE5F3404034C524501629B56E0DDC38FAD651F04 - proposer_address: - type: string - description: bech32 encoded address - example: cosmos1depk54cuajgkzea6zpgkq36tnjwdzv4afc3d27 - version: - type: object - properties: - block: - type: string - example: 10 - app: - type: string - example: 0 - txs: - type: array - items: - type: string - evidence: - type: array - items: - type: string - last_commit: - type: object - properties: - block_id: - type: object - properties: - hash: - type: string - example: EE5F3404034C524501629B56E0DDC38FAD651F04 - parts: - type: object - properties: - total: - type: number - example: 0 - hash: - type: string - example: EE5F3404034C524501629B56E0DDC38FAD651F04 - precommits: - type: array - items: - type: object - properties: - validator_address: - type: string - validator_index: - type: string - example: '0' - height: - type: string - example: '0' - round: - type: string - example: '0' - timestamp: - type: string - example: '2017-12-30T05:53:09.287+01:00' - type: - type: number - example: 2 - block_id: - type: object - properties: - hash: - type: string - example: EE5F3404034C524501629B56E0DDC38FAD651F04 - parts: - type: object - properties: - total: - type: number - example: 0 - hash: - type: string - example: EE5F3404034C524501629B56E0DDC38FAD651F04 - signature: - type: string - example: >- - 7uTC74QlknqYWEwg7Vn6M8Om7FuZ0EO4bjvuj6rwH1mTUJrRuMMZvAAqT9VjNgP0RA/TDp6u/92AqrZfXJSpBQ== - BlockQuery: - type: object - properties: - block_meta: - type: object - properties: - header: - type: object - properties: - chain_id: - type: string - example: cosmoshub-2 - height: - type: number - example: 1 - time: - type: string - example: '2017-12-30T05:53:09.287+01:00' - num_txs: - type: number - example: 0 - last_block_id: - type: object - properties: - hash: - type: string - example: EE5F3404034C524501629B56E0DDC38FAD651F04 - parts: - type: object - properties: - total: - type: number - example: 0 - hash: - type: string - example: EE5F3404034C524501629B56E0DDC38FAD651F04 - total_txs: - type: number - example: 35 - last_commit_hash: - type: string - example: EE5F3404034C524501629B56E0DDC38FAD651F04 - data_hash: - type: string - example: EE5F3404034C524501629B56E0DDC38FAD651F04 - validators_hash: - type: string - example: EE5F3404034C524501629B56E0DDC38FAD651F04 - next_validators_hash: - type: string - example: EE5F3404034C524501629B56E0DDC38FAD651F04 - consensus_hash: - type: string - example: EE5F3404034C524501629B56E0DDC38FAD651F04 - app_hash: - type: string - example: EE5F3404034C524501629B56E0DDC38FAD651F04 - last_results_hash: - type: string - example: EE5F3404034C524501629B56E0DDC38FAD651F04 - evidence_hash: - type: string - example: EE5F3404034C524501629B56E0DDC38FAD651F04 - proposer_address: - type: string - description: bech32 encoded address - example: cosmos1depk54cuajgkzea6zpgkq36tnjwdzv4afc3d27 - version: - type: object - properties: - block: - type: string - example: 10 - app: - type: string - example: 0 - block_id: - type: object - properties: - hash: - type: string - example: EE5F3404034C524501629B56E0DDC38FAD651F04 - parts: - type: object - properties: - total: - type: number - example: 0 - hash: - type: string - example: EE5F3404034C524501629B56E0DDC38FAD651F04 - block: + format: byte + last_results_hash: + type: string + format: byte + evidence_hash: + type: string + format: byte + title: consensus info + proposer_address: + type: string + format: byte + description: Header defines the structure of a Tendermint block header. + tendermint.types.LightBlock: + type: object + properties: + signed_header: type: object properties: header: type: object properties: + version: + title: basic block info + type: object + properties: + block: + type: string + format: uint64 + app: + type: string + format: uint64 + description: >- + Consensus captures the consensus rules for processing a block + in the blockchain, + + including all blockchain data structures and the rules of the + application's + + state transition machine. chain_id: type: string - example: cosmoshub-2 height: - type: number - example: 1 + type: string + format: int64 time: type: string - example: '2017-12-30T05:53:09.287+01:00' - num_txs: - type: number - example: 0 + format: date-time last_block_id: type: object properties: hash: type: string - example: EE5F3404034C524501629B56E0DDC38FAD651F04 - parts: + format: byte + part_set_header: type: object properties: total: - type: number - example: 0 + type: integer + format: int64 hash: type: string - example: EE5F3404034C524501629B56E0DDC38FAD651F04 - total_txs: - type: number - example: 35 + format: byte + title: PartsetHeader + title: BlockID last_commit_hash: type: string - example: EE5F3404034C524501629B56E0DDC38FAD651F04 + format: byte + title: hashes of block data data_hash: type: string - example: EE5F3404034C524501629B56E0DDC38FAD651F04 + format: byte validators_hash: type: string - example: EE5F3404034C524501629B56E0DDC38FAD651F04 + format: byte + title: hashes from the app output from the prev block next_validators_hash: type: string - example: EE5F3404034C524501629B56E0DDC38FAD651F04 + format: byte consensus_hash: type: string - example: EE5F3404034C524501629B56E0DDC38FAD651F04 + format: byte app_hash: type: string - example: EE5F3404034C524501629B56E0DDC38FAD651F04 + format: byte last_results_hash: type: string - example: EE5F3404034C524501629B56E0DDC38FAD651F04 + format: byte evidence_hash: type: string - example: EE5F3404034C524501629B56E0DDC38FAD651F04 + format: byte + title: consensus info proposer_address: type: string - description: bech32 encoded address - example: cosmos1depk54cuajgkzea6zpgkq36tnjwdzv4afc3d27 - version: - type: object - properties: - block: - type: string - example: 10 - app: - type: string - example: 0 - txs: - type: array - items: - type: string - evidence: - type: array - items: - type: string - last_commit: + format: byte + description: Header defines the structure of a Tendermint block header. + commit: type: object properties: - block_id: - type: object - properties: - hash: - type: string - example: EE5F3404034C524501629B56E0DDC38FAD651F04 - parts: - type: object - properties: - total: - type: number - example: 0 - hash: - type: string - example: EE5F3404034C524501629B56E0DDC38FAD651F04 - precommits: - type: array - items: - type: object - properties: - validator_address: - type: string - validator_index: - type: string - example: '0' - height: - type: string - example: '0' - round: - type: string - example: '0' - timestamp: - type: string - example: '2017-12-30T05:53:09.287+01:00' - type: - type: number - example: 2 - block_id: - type: object - properties: - hash: - type: string - example: EE5F3404034C524501629B56E0DDC38FAD651F04 - parts: - type: object - properties: - total: - type: number - example: 0 - hash: - type: string - example: EE5F3404034C524501629B56E0DDC38FAD651F04 - signature: - type: string - example: >- - 7uTC74QlknqYWEwg7Vn6M8Om7FuZ0EO4bjvuj6rwH1mTUJrRuMMZvAAqT9VjNgP0RA/TDp6u/92AqrZfXJSpBQ== - DelegationDelegatorReward: - type: object - properties: - validator_address: - type: string - description: bech32 encoded address - example: cosmosvaloper16xyempempp92x9hyzz9wrgf94r6j9h5f2w4n2l - reward: - type: array - items: - type: object - properties: - denom: - type: string - example: stake - amount: - type: string - example: '50' - DelegatorTotalRewards: - type: object - properties: - rewards: - type: array - items: - type: object - properties: - validator_address: - type: string - description: bech32 encoded address - example: cosmosvaloper16xyempempp92x9hyzz9wrgf94r6j9h5f2w4n2l - reward: - type: array - items: - type: object - properties: - denom: - type: string - example: stake - amount: - type: string - example: '50' - total: - type: array - items: - type: object - properties: - denom: - type: string - example: stake - amount: - type: string - example: '50' - BaseReq: - type: object - properties: - from: - type: string - example: cosmos1g9ahr6xhht5rmqven628nklxluzyv8z9jqjcmc - description: Sender address or Keybase name to generate a transaction - memo: - type: string - example: "Sent via Cosmos Voyager \U0001F680" - chain_id: - type: string - example: Cosmos-Hub - account_number: - type: string - example: '0' - sequence: - type: string - example: '1' - gas: - type: string - example: '200000' - gas_adjustment: - type: string - example: '1.2' - fees: - type: array - items: - type: object - properties: - denom: - type: string - example: stake - amount: - type: string - example: '50' - simulate: - type: boolean - example: false - description: >- - Estimate gas for a transaction (cannot be used in conjunction with - generate_only) - TendermintValidator: - type: object - properties: - address: - type: string - description: bech32 encoded address - example: cosmosvaloper16xyempempp92x9hyzz9wrgf94r6j9h5f2w4n2l - pub_key: - type: string - example: >- - cosmosvalconspub1zcjduepq0vu2zgkgk49efa0nqwzndanq5m4c7pa3u4apz4g2r9gspqg6g9cs3k9cuf - voting_power: - type: string - example: '1000' - proposer_priority: - type: string - example: '1000' - TextProposal: - type: object - properties: - proposal_id: - type: integer - title: - type: string - description: - type: string - proposal_type: - type: string - proposal_status: - type: string - final_tally_result: - type: object - properties: - 'yes': - type: string - example: '0.0000000000' - abstain: - type: string - example: '0.0000000000' - 'no': - type: string - example: '0.0000000000' - no_with_veto: - type: string - example: '0.0000000000' - submit_time: - type: string - total_deposit: - type: array - items: - type: object - properties: - denom: - type: string - example: stake - amount: - type: string - example: '50' - voting_start_time: - type: string - Proposer: - type: object - properties: - proposal_id: - type: string - proposer: - type: string - Deposit: - type: object - properties: - amount: - type: array - items: - type: object - properties: - denom: - type: string - example: stake - amount: - type: string - example: '50' - proposal_id: - type: string - depositor: - type: string - description: bech32 encoded address - example: cosmos1depk54cuajgkzea6zpgkq36tnjwdzv4afc3d27 - TallyResult: - type: object - properties: - 'yes': - type: string - example: '0.0000000000' - abstain: - type: string - example: '0.0000000000' - 'no': - type: string - example: '0.0000000000' - no_with_veto: - type: string - example: '0.0000000000' - Vote: - type: object - properties: - voter: - type: string - proposal_id: - type: string - option: - type: string - Validator: - type: object - properties: - operator_address: - type: string - description: bech32 encoded address - example: cosmosvaloper16xyempempp92x9hyzz9wrgf94r6j9h5f2w4n2l - consensus_pubkey: - type: string - example: >- - cosmosvalconspub1zcjduepq0vu2zgkgk49efa0nqwzndanq5m4c7pa3u4apz4g2r9gspqg6g9cs3k9cuf - jailed: - type: boolean - status: - type: integer - tokens: - type: string - delegator_shares: - type: string - description: - type: object - properties: - moniker: - type: string - identity: - type: string - website: - type: string - security_contact: - type: string - details: - type: string - bond_height: - type: string - example: '0' - bond_intra_tx_counter: - type: integer - example: 0 - unbonding_height: - type: string - example: '0' - unbonding_time: - type: string - example: '1970-01-01T00:00:00Z' - commission: - type: object - properties: - rate: - type: string - example: '0' - max_rate: - type: string - example: '0' - max_change_rate: - type: string - example: '0' - update_time: - type: string - example: '1970-01-01T00:00:00Z' - Delegation: - type: object - properties: - delegator_address: - type: string - validator_address: - type: string - shares: - type: string - balance: - type: object - properties: - denom: - type: string - example: stake - amount: - type: string - example: '50' - UnbondingDelegationPair: - type: object - properties: - delegator_address: - type: string - validator_address: - type: string - entries: - type: array - items: - type: object - properties: - initial_balance: - type: string - balance: - type: string - creation_height: - type: string - min_time: - type: string - UnbondingEntries: - type: object - properties: - initial_balance: - type: string - balance: - type: string - creation_height: - type: string - min_time: - type: string - UnbondingDelegation: - type: object - properties: - delegator_address: - type: string - validator_address: - type: string - initial_balance: - type: string - balance: - type: string - creation_height: - type: integer - min_time: - type: integer - Redelegation: - type: object - properties: - delegator_address: - type: string - validator_src_address: - type: string - validator_dst_address: - type: string - entries: - type: array - items: - $ref: '#/definitions/Redelegation' - RedelegationEntry: - type: object - properties: - creation_height: - type: integer - completion_time: - type: integer - initial_balance: - type: string - balance: - type: string - shares_dst: - type: string - ValidatorDistInfo: + height: + type: string + format: int64 + round: + type: integer + format: int32 + block_id: + type: object + properties: + hash: + type: string + format: byte + part_set_header: + type: object + properties: + total: + type: integer + format: int64 + hash: + type: string + format: byte + title: PartsetHeader + title: BlockID + signatures: + type: array + items: + type: object + properties: + block_id_flag: + type: string + enum: + - BLOCK_ID_FLAG_UNKNOWN + - BLOCK_ID_FLAG_ABSENT + - BLOCK_ID_FLAG_COMMIT + - BLOCK_ID_FLAG_NIL + default: BLOCK_ID_FLAG_UNKNOWN + title: BlockIdFlag indicates which BlcokID the signature is for + validator_address: + type: string + format: byte + timestamp: + type: string + format: date-time + signature: + type: string + format: byte + description: CommitSig is a part of the Vote included in a Commit. + description: >- + Commit contains the evidence that a block was committed by a set + of validators. + validator_set: + type: object + properties: + validators: + type: array + items: + type: object + properties: + address: + type: string + format: byte + pub_key: + type: object + properties: + ed25519: + type: string + format: byte + secp256k1: + type: string + format: byte + title: >- + PublicKey defines the keys available for use with Tendermint + Validators + voting_power: + type: string + format: int64 + proposer_priority: + type: string + format: int64 + proposer: + type: object + properties: + address: + type: string + format: byte + pub_key: + type: object + properties: + ed25519: + type: string + format: byte + secp256k1: + type: string + format: byte + title: >- + PublicKey defines the keys available for use with Tendermint + Validators + voting_power: + type: string + format: int64 + proposer_priority: + type: string + format: int64 + total_voting_power: + type: string + format: int64 + tendermint.types.LightClientAttackEvidence: type: object properties: - operator_address: + conflicting_block: + type: object + properties: + signed_header: + type: object + properties: + header: + type: object + properties: + version: + title: basic block info + type: object + properties: + block: + type: string + format: uint64 + app: + type: string + format: uint64 + description: >- + Consensus captures the consensus rules for processing a + block in the blockchain, + + including all blockchain data structures and the rules of + the application's + + state transition machine. + chain_id: + type: string + height: + type: string + format: int64 + time: + type: string + format: date-time + last_block_id: + type: object + properties: + hash: + type: string + format: byte + part_set_header: + type: object + properties: + total: + type: integer + format: int64 + hash: + type: string + format: byte + title: PartsetHeader + title: BlockID + last_commit_hash: + type: string + format: byte + title: hashes of block data + data_hash: + type: string + format: byte + validators_hash: + type: string + format: byte + title: hashes from the app output from the prev block + next_validators_hash: + type: string + format: byte + consensus_hash: + type: string + format: byte + app_hash: + type: string + format: byte + last_results_hash: + type: string + format: byte + evidence_hash: + type: string + format: byte + title: consensus info + proposer_address: + type: string + format: byte + description: Header defines the structure of a Tendermint block header. + commit: + type: object + properties: + height: + type: string + format: int64 + round: + type: integer + format: int32 + block_id: + type: object + properties: + hash: + type: string + format: byte + part_set_header: + type: object + properties: + total: + type: integer + format: int64 + hash: + type: string + format: byte + title: PartsetHeader + title: BlockID + signatures: + type: array + items: + type: object + properties: + block_id_flag: + type: string + enum: + - BLOCK_ID_FLAG_UNKNOWN + - BLOCK_ID_FLAG_ABSENT + - BLOCK_ID_FLAG_COMMIT + - BLOCK_ID_FLAG_NIL + default: BLOCK_ID_FLAG_UNKNOWN + title: >- + BlockIdFlag indicates which BlcokID the signature is + for + validator_address: + type: string + format: byte + timestamp: + type: string + format: date-time + signature: + type: string + format: byte + description: CommitSig is a part of the Vote included in a Commit. + description: >- + Commit contains the evidence that a block was committed by a + set of validators. + validator_set: + type: object + properties: + validators: + type: array + items: + type: object + properties: + address: + type: string + format: byte + pub_key: + type: object + properties: + ed25519: + type: string + format: byte + secp256k1: + type: string + format: byte + title: >- + PublicKey defines the keys available for use with + Tendermint Validators + voting_power: + type: string + format: int64 + proposer_priority: + type: string + format: int64 + proposer: + type: object + properties: + address: + type: string + format: byte + pub_key: + type: object + properties: + ed25519: + type: string + format: byte + secp256k1: + type: string + format: byte + title: >- + PublicKey defines the keys available for use with + Tendermint Validators + voting_power: + type: string + format: int64 + proposer_priority: + type: string + format: int64 + total_voting_power: + type: string + format: int64 + common_height: type: string - description: bech32 encoded address - example: cosmosvaloper16xyempempp92x9hyzz9wrgf94r6j9h5f2w4n2l - self_bond_rewards: + format: int64 + byzantine_validators: type: array items: type: object properties: - denom: - type: string - example: stake - amount: + address: type: string - example: '50' - val_commission: - type: array - items: - type: object - properties: - denom: + format: byte + pub_key: + type: object + properties: + ed25519: + type: string + format: byte + secp256k1: + type: string + format: byte + title: >- + PublicKey defines the keys available for use with Tendermint + Validators + voting_power: type: string - example: stake - amount: + format: int64 + proposer_priority: type: string - example: '50' - PublicKey: - type: object - properties: - type: - type: string - value: - type: string - SigningInfo: - type: object - properties: - start_height: - type: string - index_offset: - type: string - jailed_until: - type: string - missed_blocks_counter: - type: string - ParamChange: - type: object - properties: - subspace: - type: string - example: staking - key: + format: int64 + total_voting_power: type: string - example: MaxValidators - subkey: + format: int64 + timestamp: type: string - example: '' - value: - type: object - Supply: + format: date-time + description: >- + LightClientAttackEvidence contains evidence of a set of validators + attempting to mislead a light client. + tendermint.types.PartSetHeader: type: object properties: total: - type: array - items: - type: object - properties: - denom: - type: string - example: stake - amount: - type: string - example: '50' - cosmos.auth.v1beta1.Params: - type: object - properties: - max_memo_characters: - type: string - format: uint64 - tx_sig_limit: - type: string - format: uint64 - tx_size_cost_per_byte: - type: string - format: uint64 - sig_verify_cost_ed25519: - type: string - format: uint64 - sig_verify_cost_secp256k1: + type: integer + format: int64 + hash: type: string - format: uint64 - description: Params defines the parameters for the auth module. - cosmos.auth.v1beta1.QueryAccountResponse: + format: byte + title: PartsetHeader + tendermint.types.SignedHeader: type: object properties: - account: - description: account defines the account of the corresponding address. + header: type: object properties: - type_url: - type: string + version: + title: basic block info + type: object + properties: + block: + type: string + format: uint64 + app: + type: string + format: uint64 description: >- - A URL/resource name that uniquely identifies the type of the - serialized - - protocol buffer message. This string must contain at least - - one "/" character. The last segment of the URL's path must - represent - - the fully qualified name of the type (as in - - `path/google.protobuf.Duration`). The name should be in a - canonical form - - (e.g., leading "." is not accepted). - - - In practice, teams usually precompile into the binary all types - that they - - expect it to use in the context of Any. However, for URLs which - use the - - scheme `http`, `https`, or no scheme, one can optionally set up a - type - - server that maps type URLs to message definitions as follows: - - - * If no scheme is provided, `https` is assumed. - - * An HTTP GET on the URL must yield a [google.protobuf.Type][] - value in binary format, or produce an error. - * Applications are allowed to cache lookup results based on the - URL, or have them precompiled into a binary to avoid any - lookup. Therefore, binary compatibility needs to be preserved - on changes to types. (Use versioned type names to manage - breaking changes.) - - Note: this functionality is not currently available in the - official - - protobuf release, and it is not used for type URLs beginning with - - type.googleapis.com. - + Consensus captures the consensus rules for processing a block in + the blockchain, - Schemes other than `http`, `https` (or the empty scheme) might be + including all blockchain data structures and the rules of the + application's - used with implementation specific semantics. - value: + state transition machine. + chain_id: type: string - format: byte - description: >- - Must be a valid serialized protocol buffer of the above specified - type. - description: >- - QueryAccountResponse is the response type for the Query/Account RPC - method. - cosmos.auth.v1beta1.QueryParamsResponse: - type: object - properties: - params: - description: params defines the parameters of the module. - type: object - properties: - max_memo_characters: + height: type: string - format: uint64 - tx_sig_limit: + format: int64 + time: type: string - format: uint64 - tx_size_cost_per_byte: + format: date-time + last_block_id: + type: object + properties: + hash: + type: string + format: byte + part_set_header: + type: object + properties: + total: + type: integer + format: int64 + hash: + type: string + format: byte + title: PartsetHeader + title: BlockID + last_commit_hash: type: string - format: uint64 - sig_verify_cost_ed25519: + format: byte + title: hashes of block data + data_hash: type: string - format: uint64 - sig_verify_cost_secp256k1: + format: byte + validators_hash: type: string - format: uint64 - description: QueryParamsResponse is the response type for the Query/Params RPC method. - cosmos.bank.v1beta1.Params: - type: object - properties: - send_enabled: - type: array - items: - type: object - properties: - denom: - type: string - enabled: - type: boolean - description: >- - SendEnabled maps coin denom to a send_enabled status (whether a - denom is - - sendable). - default_send_enabled: - type: boolean - description: Params defines the parameters for the bank module. - cosmos.bank.v1beta1.QueryAllBalancesResponse: - type: object - properties: - balances: - type: array - items: - type: object - properties: - denom: - type: string - amount: - type: string - description: |- - Coin defines a token with a denomination and an amount. - - NOTE: The amount field is an Int which implements the custom method - signatures required by gogoproto. - description: balances is the balances of all the coins. - pagination: - description: pagination defines the pagination in the response. - type: object - properties: - next_key: + format: byte + title: hashes from the app output from the prev block + next_validators_hash: type: string format: byte - title: |- - next_key is the key to be passed to PageRequest.key to - query the next page most efficiently - total: + consensus_hash: type: string - format: uint64 - title: >- - total is total number of results available if - PageRequest.count_total - - was set, its value is undefined otherwise - description: >- - QueryAllBalancesResponse is the response type for the Query/AllBalances - RPC - - method. - cosmos.bank.v1beta1.QueryBalanceResponse: - type: object - properties: - balance: - description: balance is the balance of the coin. - type: object - properties: - denom: + format: byte + app_hash: type: string - amount: + format: byte + last_results_hash: type: string - description: >- - QueryBalanceResponse is the response type for the Query/Balance RPC - method. - cosmos.bank.v1beta1.QueryParamsResponse: - type: object - properties: - params: + format: byte + evidence_hash: + type: string + format: byte + title: consensus info + proposer_address: + type: string + format: byte + description: Header defines the structure of a Tendermint block header. + commit: type: object properties: - send_enabled: + height: + type: string + format: int64 + round: + type: integer + format: int32 + block_id: + type: object + properties: + hash: + type: string + format: byte + part_set_header: + type: object + properties: + total: + type: integer + format: int64 + hash: + type: string + format: byte + title: PartsetHeader + title: BlockID + signatures: type: array items: type: object properties: - denom: + block_id_flag: type: string - enabled: - type: boolean - description: >- - SendEnabled maps coin denom to a send_enabled status (whether a - denom is + enum: + - BLOCK_ID_FLAG_UNKNOWN + - BLOCK_ID_FLAG_ABSENT + - BLOCK_ID_FLAG_COMMIT + - BLOCK_ID_FLAG_NIL + default: BLOCK_ID_FLAG_UNKNOWN + title: BlockIdFlag indicates which BlcokID the signature is for + validator_address: + type: string + format: byte + timestamp: + type: string + format: date-time + signature: + type: string + format: byte + description: CommitSig is a part of the Vote included in a Commit. + description: >- + Commit contains the evidence that a block was committed by a set of + validators. + tendermint.types.SignedMsgType: + type: string + enum: + - SIGNED_MSG_TYPE_UNKNOWN + - SIGNED_MSG_TYPE_PREVOTE + - SIGNED_MSG_TYPE_PRECOMMIT + - SIGNED_MSG_TYPE_PROPOSAL + default: SIGNED_MSG_TYPE_UNKNOWN + description: |- + SignedMsgType is a type of signed message in the consensus. - sendable). - default_send_enabled: - type: boolean - description: Params defines the parameters for the bank module. - description: >- - QueryParamsResponse defines the response type for querying x/bank - parameters. - cosmos.bank.v1beta1.QuerySupplyOfResponse: + - SIGNED_MSG_TYPE_PREVOTE: Votes + - SIGNED_MSG_TYPE_PROPOSAL: Proposals + tendermint.types.Validator: type: object properties: - amount: - description: amount is the supply of the coin. + address: + type: string + format: byte + pub_key: type: object properties: - denom: + ed25519: type: string - amount: + format: byte + secp256k1: type: string - description: >- - QuerySupplyOfResponse is the response type for the Query/SupplyOf RPC - method. - cosmos.bank.v1beta1.QueryTotalSupplyResponse: + format: byte + title: >- + PublicKey defines the keys available for use with Tendermint + Validators + voting_power: + type: string + format: int64 + proposer_priority: + type: string + format: int64 + tendermint.types.ValidatorSet: type: object properties: - supply: + validators: type: array items: type: object properties: - denom: + address: type: string - amount: + format: byte + pub_key: + type: object + properties: + ed25519: + type: string + format: byte + secp256k1: + type: string + format: byte + title: >- + PublicKey defines the keys available for use with Tendermint + Validators + voting_power: type: string - description: |- - Coin defines a token with a denomination and an amount. - - NOTE: The amount field is an Int which implements the custom method - signatures required by gogoproto. - title: supply is the supply of the coins - title: >- - QueryTotalSupplyResponse is the response type for the Query/TotalSupply - RPC - - method - cosmos.bank.v1beta1.SendEnabled: + format: int64 + proposer_priority: + type: string + format: int64 + proposer: + type: object + properties: + address: + type: string + format: byte + pub_key: + type: object + properties: + ed25519: + type: string + format: byte + secp256k1: + type: string + format: byte + title: >- + PublicKey defines the keys available for use with Tendermint + Validators + voting_power: + type: string + format: int64 + proposer_priority: + type: string + format: int64 + total_voting_power: + type: string + format: int64 + tendermint.types.Vote: type: object properties: - denom: + type: type: string - enabled: - type: boolean + enum: + - SIGNED_MSG_TYPE_UNKNOWN + - SIGNED_MSG_TYPE_PREVOTE + - SIGNED_MSG_TYPE_PRECOMMIT + - SIGNED_MSG_TYPE_PROPOSAL + default: SIGNED_MSG_TYPE_UNKNOWN + description: |- + SignedMsgType is a type of signed message in the consensus. + + - SIGNED_MSG_TYPE_PREVOTE: Votes + - SIGNED_MSG_TYPE_PROPOSAL: Proposals + height: + type: string + format: int64 + round: + type: integer + format: int32 + block_id: + type: object + properties: + hash: + type: string + format: byte + part_set_header: + type: object + properties: + total: + type: integer + format: int64 + hash: + type: string + format: byte + title: PartsetHeader + title: BlockID + timestamp: + type: string + format: date-time + validator_address: + type: string + format: byte + validator_index: + type: integer + format: int32 + signature: + type: string + format: byte description: |- - SendEnabled maps coin denom to a send_enabled status (whether a denom is - sendable). + Vote represents a prevote, precommit, or commit vote from validators for + consensus. + tendermint.version.Consensus: + type: object + properties: + block: + type: string + format: uint64 + app: + type: string + format: uint64 + description: >- + Consensus captures the consensus rules for processing a block in the + blockchain, + + including all blockchain data structures and the rules of the + application's + + state transition machine. cosmos.base.v1beta1.DecCoin: type: object properties: @@ -31077,6 +34633,7 @@ definitions: type: string withdraw_addr_enabled: type: boolean + format: boolean description: Params defines the set of params for the distribution module. cosmos.distribution.v1beta1.QueryCommunityPoolResponse: type: object @@ -31207,6 +34764,7 @@ definitions: type: string withdraw_addr_enabled: type: boolean + format: boolean description: QueryParamsResponse is the response type for the Query/Params RPC method. cosmos.distribution.v1beta1.QueryValidatorCommissionResponse: type: object @@ -31276,359 +34834,42 @@ definitions: items: type: object properties: - validator_period: - type: string - format: uint64 - fraction: - type: string - description: |- - ValidatorSlashEvent represents a validator slash event. - Height is implicit within the store key. - This is needed to calculate appropriate amount of staking tokens - for delegations which are withdrawn after a slash has occurred. - description: slashes defines the slashes the validator received. - pagination: - description: pagination defines the pagination in the response. - type: object - properties: - next_key: - type: string - format: byte - title: |- - next_key is the key to be passed to PageRequest.key to - query the next page most efficiently - total: - type: string - format: uint64 - title: >- - total is total number of results available if - PageRequest.count_total - - was set, its value is undefined otherwise - description: |- - QueryValidatorSlashesResponse is the response type for the - Query/ValidatorSlashes RPC method. - cosmos.distribution.v1beta1.ValidatorAccumulatedCommission: - type: object - properties: - commission: - type: array - items: - type: object - properties: - denom: - type: string - amount: - type: string - description: |- - DecCoin defines a token with a denomination and a decimal amount. - - NOTE: The amount field is an Dec which implements the custom method - signatures required by gogoproto. - description: |- - ValidatorAccumulatedCommission represents accumulated commission - for a validator kept as a running counter, can be withdrawn at any time. - cosmos.distribution.v1beta1.ValidatorOutstandingRewards: - type: object - properties: - rewards: - type: array - items: - type: object - properties: - denom: - type: string - amount: - type: string - description: |- - DecCoin defines a token with a denomination and a decimal amount. - - NOTE: The amount field is an Dec which implements the custom method - signatures required by gogoproto. - description: |- - ValidatorOutstandingRewards represents outstanding (un-withdrawn) rewards - for a validator inexpensive to track, allows simple sanity checks. - cosmos.distribution.v1beta1.ValidatorSlashEvent: - type: object - properties: - validator_period: - type: string - format: uint64 - fraction: - type: string - description: |- - ValidatorSlashEvent represents a validator slash event. - Height is implicit within the store key. - This is needed to calculate appropriate amount of staking tokens - for delegations which are withdrawn after a slash has occurred. - cosmos.evidence.v1beta1.QueryAllEvidenceResponse: - type: object - properties: - evidence: - type: array - items: - type: object - properties: - type_url: - type: string - description: >- - A URL/resource name that uniquely identifies the type of the - serialized - - protocol buffer message. This string must contain at least - - one "/" character. The last segment of the URL's path must - represent - - the fully qualified name of the type (as in - - `path/google.protobuf.Duration`). The name should be in a - canonical form - - (e.g., leading "." is not accepted). - - - In practice, teams usually precompile into the binary all types - that they - - expect it to use in the context of Any. However, for URLs which - use the - - scheme `http`, `https`, or no scheme, one can optionally set up - a type - - server that maps type URLs to message definitions as follows: - - - * If no scheme is provided, `https` is assumed. - - * An HTTP GET on the URL must yield a [google.protobuf.Type][] - value in binary format, or produce an error. - * Applications are allowed to cache lookup results based on the - URL, or have them precompiled into a binary to avoid any - lookup. Therefore, binary compatibility needs to be preserved - on changes to types. (Use versioned type names to manage - breaking changes.) - - Note: this functionality is not currently available in the - official - - protobuf release, and it is not used for type URLs beginning - with - - type.googleapis.com. - - - Schemes other than `http`, `https` (or the empty scheme) might - be - - used with implementation specific semantics. - value: - type: string - format: byte - description: >- - Must be a valid serialized protocol buffer of the above - specified type. - description: >- - `Any` contains an arbitrary serialized protocol buffer message along - with a - - URL that describes the type of the serialized message. - - - Protobuf library provides support to pack/unpack Any values in the - form - - of utility functions or additional generated methods of the Any - type. - - - Example 1: Pack and unpack a message in C++. - - Foo foo = ...; - Any any; - any.PackFrom(foo); - ... - if (any.UnpackTo(&foo)) { - ... - } - - Example 2: Pack and unpack a message in Java. - - Foo foo = ...; - Any any = Any.pack(foo); - ... - if (any.is(Foo.class)) { - foo = any.unpack(Foo.class); - } - - Example 3: Pack and unpack a message in Python. - - foo = Foo(...) - any = Any() - any.Pack(foo) - ... - if any.Is(Foo.DESCRIPTOR): - any.Unpack(foo) - ... - - Example 4: Pack and unpack a message in Go - - foo := &pb.Foo{...} - any, err := ptypes.MarshalAny(foo) - ... - foo := &pb.Foo{} - if err := ptypes.UnmarshalAny(any, foo); err != nil { - ... - } - - The pack methods provided by protobuf library will by default use - - 'type.googleapis.com/full.type.name' as the type URL and the unpack - - methods only use the fully qualified type name after the last '/' - - in the type URL, for example "foo.bar.com/x/y.z" will yield type - - name "y.z". - - - - JSON - - ==== - - The JSON representation of an `Any` value uses the regular - - representation of the deserialized, embedded message, with an - - additional field `@type` which contains the type URL. Example: - - package google.profile; - message Person { - string first_name = 1; - string last_name = 2; - } - - { - "@type": "type.googleapis.com/google.profile.Person", - "firstName": , - "lastName": - } - - If the embedded message type is well-known and has a custom JSON - - representation, that representation will be embedded adding a field - - `value` which holds the custom JSON in addition to the `@type` - - field. Example (for message [google.protobuf.Duration][]): - - { - "@type": "type.googleapis.com/google.protobuf.Duration", - "value": "1.212s" - } - description: evidence returns all evidences. - pagination: - description: pagination defines the pagination in the response. - type: object - properties: - next_key: - type: string - format: byte - title: |- - next_key is the key to be passed to PageRequest.key to - query the next page most efficiently - total: - type: string - format: uint64 - title: >- - total is total number of results available if - PageRequest.count_total - - was set, its value is undefined otherwise - description: >- - QueryAllEvidenceResponse is the response type for the Query/AllEvidence - RPC - - method. - cosmos.evidence.v1beta1.QueryEvidenceResponse: - type: object - properties: - evidence: - description: evidence returns the requested evidence. - type: object - properties: - type_url: - type: string - description: >- - A URL/resource name that uniquely identifies the type of the - serialized - - protocol buffer message. This string must contain at least - - one "/" character. The last segment of the URL's path must - represent - - the fully qualified name of the type (as in - - `path/google.protobuf.Duration`). The name should be in a - canonical form - - (e.g., leading "." is not accepted). - - - In practice, teams usually precompile into the binary all types - that they - - expect it to use in the context of Any. However, for URLs which - use the - - scheme `http`, `https`, or no scheme, one can optionally set up a - type - - server that maps type URLs to message definitions as follows: - - - * If no scheme is provided, `https` is assumed. - - * An HTTP GET on the URL must yield a [google.protobuf.Type][] - value in binary format, or produce an error. - * Applications are allowed to cache lookup results based on the - URL, or have them precompiled into a binary to avoid any - lookup. Therefore, binary compatibility needs to be preserved - on changes to types. (Use versioned type names to manage - breaking changes.) - - Note: this functionality is not currently available in the - official - - protobuf release, and it is not used for type URLs beginning with - - type.googleapis.com. - - - Schemes other than `http`, `https` (or the empty scheme) might be - - used with implementation specific semantics. - value: + validator_period: + type: string + format: uint64 + fraction: + type: string + description: |- + ValidatorSlashEvent represents a validator slash event. + Height is implicit within the store key. + This is needed to calculate appropriate amount of staking tokens + for delegations which are withdrawn after a slash has occurred. + description: slashes defines the slashes the validator received. + pagination: + description: pagination defines the pagination in the response. + type: object + properties: + next_key: type: string format: byte - description: >- - Must be a valid serialized protocol buffer of the above specified - type. - description: >- - QueryEvidenceResponse is the response type for the Query/Evidence RPC - method. - cosmos.gov.v1beta1.Deposit: + title: |- + next_key is the key to be passed to PageRequest.key to + query the next page most efficiently + total: + type: string + format: uint64 + title: >- + total is total number of results available if + PageRequest.count_total + + was set, its value is undefined otherwise + description: |- + QueryValidatorSlashesResponse is the response type for the + Query/ValidatorSlashes RPC method. + cosmos.distribution.v1beta1.ValidatorAccumulatedCommission: type: object properties: - proposal_id: - type: string - format: uint64 - depositor: - type: string - amount: + commission: type: array items: type: object @@ -31638,17 +34879,17 @@ definitions: amount: type: string description: |- - Coin defines a token with a denomination and an amount. + DecCoin defines a token with a denomination and a decimal amount. - NOTE: The amount field is an Int which implements the custom method + NOTE: The amount field is an Dec which implements the custom method signatures required by gogoproto. description: |- - Deposit defines an amount deposited by an account address to an active - proposal. - cosmos.gov.v1beta1.DepositParams: + ValidatorAccumulatedCommission represents accumulated commission + for a validator kept as a running counter, can be withdrawn at any time. + cosmos.distribution.v1beta1.ValidatorOutstandingRewards: type: object properties: - min_deposit: + rewards: type: array items: type: object @@ -31658,936 +34899,622 @@ definitions: amount: type: string description: |- - Coin defines a token with a denomination and an amount. + DecCoin defines a token with a denomination and a decimal amount. - NOTE: The amount field is an Int which implements the custom method + NOTE: The amount field is an Dec which implements the custom method signatures required by gogoproto. - description: Minimum deposit for a proposal to enter voting period. - max_deposit_period: - type: string - description: >- - Maximum period for Atom holders to deposit on a proposal. Initial - value: 2 - months. - description: DepositParams defines the params for deposits on governance proposals. - cosmos.gov.v1beta1.Proposal: + description: |- + ValidatorOutstandingRewards represents outstanding (un-withdrawn) rewards + for a validator inexpensive to track, allows simple sanity checks. + cosmos.distribution.v1beta1.ValidatorSlashEvent: type: object properties: - proposal_id: + validator_period: type: string format: uint64 - content: - type: object - properties: - type_url: - type: string - description: >- - A URL/resource name that uniquely identifies the type of the - serialized + fraction: + type: string + description: |- + ValidatorSlashEvent represents a validator slash event. + Height is implicit within the store key. + This is needed to calculate appropriate amount of staking tokens + for delegations which are withdrawn after a slash has occurred. + cosmos.evidence.v1beta1.QueryAllEvidenceResponse: + type: object + properties: + evidence: + type: array + items: + type: object + properties: + type_url: + type: string + description: >- + A URL/resource name that uniquely identifies the type of the + serialized - protocol buffer message. This string must contain at least + protocol buffer message. This string must contain at least - one "/" character. The last segment of the URL's path must - represent + one "/" character. The last segment of the URL's path must + represent - the fully qualified name of the type (as in + the fully qualified name of the type (as in - `path/google.protobuf.Duration`). The name should be in a - canonical form + `path/google.protobuf.Duration`). The name should be in a + canonical form - (e.g., leading "." is not accepted). + (e.g., leading "." is not accepted). - In practice, teams usually precompile into the binary all types - that they + In practice, teams usually precompile into the binary all types + that they - expect it to use in the context of Any. However, for URLs which - use the + expect it to use in the context of Any. However, for URLs which + use the - scheme `http`, `https`, or no scheme, one can optionally set up a - type + scheme `http`, `https`, or no scheme, one can optionally set up + a type - server that maps type URLs to message definitions as follows: + server that maps type URLs to message definitions as follows: - * If no scheme is provided, `https` is assumed. + * If no scheme is provided, `https` is assumed. - * An HTTP GET on the URL must yield a [google.protobuf.Type][] - value in binary format, or produce an error. - * Applications are allowed to cache lookup results based on the - URL, or have them precompiled into a binary to avoid any - lookup. Therefore, binary compatibility needs to be preserved - on changes to types. (Use versioned type names to manage - breaking changes.) + * An HTTP GET on the URL must yield a [google.protobuf.Type][] + value in binary format, or produce an error. + * Applications are allowed to cache lookup results based on the + URL, or have them precompiled into a binary to avoid any + lookup. Therefore, binary compatibility needs to be preserved + on changes to types. (Use versioned type names to manage + breaking changes.) - Note: this functionality is not currently available in the - official + Note: this functionality is not currently available in the + official - protobuf release, and it is not used for type URLs beginning with + protobuf release, and it is not used for type URLs beginning + with - type.googleapis.com. + type.googleapis.com. - Schemes other than `http`, `https` (or the empty scheme) might be + Schemes other than `http`, `https` (or the empty scheme) might + be - used with implementation specific semantics. - value: - type: string - format: byte - description: >- - Must be a valid serialized protocol buffer of the above specified - type. - description: >- - `Any` contains an arbitrary serialized protocol buffer message along - with a + used with implementation specific semantics. + value: + type: string + format: byte + description: >- + Must be a valid serialized protocol buffer of the above + specified type. + description: >- + `Any` contains an arbitrary serialized protocol buffer message along + with a - URL that describes the type of the serialized message. + URL that describes the type of the serialized message. - Protobuf library provides support to pack/unpack Any values in the - form + Protobuf library provides support to pack/unpack Any values in the + form - of utility functions or additional generated methods of the Any type. + of utility functions or additional generated methods of the Any + type. - Example 1: Pack and unpack a message in C++. + Example 1: Pack and unpack a message in C++. - Foo foo = ...; - Any any; - any.PackFrom(foo); - ... - if (any.UnpackTo(&foo)) { + Foo foo = ...; + Any any; + any.PackFrom(foo); ... - } + if (any.UnpackTo(&foo)) { + ... + } - Example 2: Pack and unpack a message in Java. + Example 2: Pack and unpack a message in Java. - Foo foo = ...; - Any any = Any.pack(foo); - ... - if (any.is(Foo.class)) { - foo = any.unpack(Foo.class); - } + Foo foo = ...; + Any any = Any.pack(foo); + ... + if (any.is(Foo.class)) { + foo = any.unpack(Foo.class); + } - Example 3: Pack and unpack a message in Python. + Example 3: Pack and unpack a message in Python. - foo = Foo(...) - any = Any() - any.Pack(foo) - ... - if any.Is(Foo.DESCRIPTOR): - any.Unpack(foo) + foo = Foo(...) + any = Any() + any.Pack(foo) ... + if any.Is(Foo.DESCRIPTOR): + any.Unpack(foo) + ... - Example 4: Pack and unpack a message in Go + Example 4: Pack and unpack a message in Go - foo := &pb.Foo{...} - any, err := ptypes.MarshalAny(foo) - ... - foo := &pb.Foo{} - if err := ptypes.UnmarshalAny(any, foo); err != nil { + foo := &pb.Foo{...} + any, err := ptypes.MarshalAny(foo) ... - } - - The pack methods provided by protobuf library will by default use - - 'type.googleapis.com/full.type.name' as the type URL and the unpack - - methods only use the fully qualified type name after the last '/' - - in the type URL, for example "foo.bar.com/x/y.z" will yield type - - name "y.z". - - - - JSON - - ==== - - The JSON representation of an `Any` value uses the regular - - representation of the deserialized, embedded message, with an - - additional field `@type` which contains the type URL. Example: - - package google.profile; - message Person { - string first_name = 1; - string last_name = 2; - } - - { - "@type": "type.googleapis.com/google.profile.Person", - "firstName": , - "lastName": - } - - If the embedded message type is well-known and has a custom JSON + foo := &pb.Foo{} + if err := ptypes.UnmarshalAny(any, foo); err != nil { + ... + } - representation, that representation will be embedded adding a field + The pack methods provided by protobuf library will by default use - `value` which holds the custom JSON in addition to the `@type` + 'type.googleapis.com/full.type.name' as the type URL and the unpack - field. Example (for message [google.protobuf.Duration][]): + methods only use the fully qualified type name after the last '/' - { - "@type": "type.googleapis.com/google.protobuf.Duration", - "value": "1.212s" - } - status: - type: string - enum: - - PROPOSAL_STATUS_UNSPECIFIED - - PROPOSAL_STATUS_DEPOSIT_PERIOD - - PROPOSAL_STATUS_VOTING_PERIOD - - PROPOSAL_STATUS_PASSED - - PROPOSAL_STATUS_REJECTED - - PROPOSAL_STATUS_FAILED - default: PROPOSAL_STATUS_UNSPECIFIED - description: |- - ProposalStatus enumerates the valid statuses of a proposal. + in the type URL, for example "foo.bar.com/x/y.z" will yield type - - PROPOSAL_STATUS_UNSPECIFIED: PROPOSAL_STATUS_UNSPECIFIED defines the default propopsal status. - - PROPOSAL_STATUS_DEPOSIT_PERIOD: PROPOSAL_STATUS_DEPOSIT_PERIOD defines a proposal status during the deposit - period. - - PROPOSAL_STATUS_VOTING_PERIOD: PROPOSAL_STATUS_VOTING_PERIOD defines a proposal status during the voting - period. - - PROPOSAL_STATUS_PASSED: PROPOSAL_STATUS_PASSED defines a proposal status of a proposal that has - passed. - - PROPOSAL_STATUS_REJECTED: PROPOSAL_STATUS_REJECTED defines a proposal status of a proposal that has - been rejected. - - PROPOSAL_STATUS_FAILED: PROPOSAL_STATUS_FAILED defines a proposal status of a proposal that has - failed. - final_tally_result: - type: object - properties: - 'yes': - type: string - abstain: - type: string - 'no': - type: string - no_with_veto: - type: string - description: TallyResult defines a standard tally for a governance proposal. - submit_time: - type: string - format: date-time - deposit_end_time: - type: string - format: date-time - total_deposit: - type: array - items: - type: object - properties: - denom: - type: string - amount: - type: string - description: |- - Coin defines a token with a denomination and an amount. + name "y.z". - NOTE: The amount field is an Int which implements the custom method - signatures required by gogoproto. - voting_start_time: - type: string - format: date-time - voting_end_time: - type: string - format: date-time - description: Proposal defines the core field members of a governance proposal. - cosmos.gov.v1beta1.ProposalStatus: - type: string - enum: - - PROPOSAL_STATUS_UNSPECIFIED - - PROPOSAL_STATUS_DEPOSIT_PERIOD - - PROPOSAL_STATUS_VOTING_PERIOD - - PROPOSAL_STATUS_PASSED - - PROPOSAL_STATUS_REJECTED - - PROPOSAL_STATUS_FAILED - default: PROPOSAL_STATUS_UNSPECIFIED - description: |- - ProposalStatus enumerates the valid statuses of a proposal. - - PROPOSAL_STATUS_UNSPECIFIED: PROPOSAL_STATUS_UNSPECIFIED defines the default propopsal status. - - PROPOSAL_STATUS_DEPOSIT_PERIOD: PROPOSAL_STATUS_DEPOSIT_PERIOD defines a proposal status during the deposit - period. - - PROPOSAL_STATUS_VOTING_PERIOD: PROPOSAL_STATUS_VOTING_PERIOD defines a proposal status during the voting - period. - - PROPOSAL_STATUS_PASSED: PROPOSAL_STATUS_PASSED defines a proposal status of a proposal that has - passed. - - PROPOSAL_STATUS_REJECTED: PROPOSAL_STATUS_REJECTED defines a proposal status of a proposal that has - been rejected. - - PROPOSAL_STATUS_FAILED: PROPOSAL_STATUS_FAILED defines a proposal status of a proposal that has - failed. - cosmos.gov.v1beta1.QueryDepositResponse: - type: object - properties: - deposit: - description: deposit defines the requested deposit. - type: object - properties: - proposal_id: - type: string - format: uint64 - depositor: - type: string - amount: - type: array - items: - type: object - properties: - denom: - type: string - amount: - type: string - description: >- - Coin defines a token with a denomination and an amount. + JSON - NOTE: The amount field is an Int which implements the custom - method + ==== - signatures required by gogoproto. - description: >- - QueryDepositResponse is the response type for the Query/Deposit RPC - method. - cosmos.gov.v1beta1.QueryDepositsResponse: - type: object - properties: - deposits: - type: array - items: - type: object - properties: - proposal_id: - type: string - format: uint64 - depositor: - type: string - amount: - type: array - items: - type: object - properties: - denom: - type: string - amount: - type: string - description: >- - Coin defines a token with a denomination and an amount. + The JSON representation of an `Any` value uses the regular + representation of the deserialized, embedded message, with an - NOTE: The amount field is an Int which implements the custom - method + additional field `@type` which contains the type URL. Example: - signatures required by gogoproto. - description: >- - Deposit defines an amount deposited by an account address to an - active + package google.profile; + message Person { + string first_name = 1; + string last_name = 2; + } - proposal. - pagination: - description: pagination defines the pagination in the response. - type: object - properties: - next_key: - type: string - format: byte - title: |- - next_key is the key to be passed to PageRequest.key to - query the next page most efficiently - total: - type: string - format: uint64 - title: >- - total is total number of results available if - PageRequest.count_total + { + "@type": "type.googleapis.com/google.profile.Person", + "firstName": , + "lastName": + } - was set, its value is undefined otherwise - description: >- - QueryDepositsResponse is the response type for the Query/Deposits RPC - method. - cosmos.gov.v1beta1.QueryParamsResponse: - type: object - properties: - voting_params: - description: voting_params defines the parameters related to voting. - type: object - properties: - voting_period: - type: string - description: Length of the voting period. - deposit_params: - description: deposit_params defines the parameters related to deposit. - type: object - properties: - min_deposit: - type: array - items: - type: object - properties: - denom: - type: string - amount: - type: string - description: >- - Coin defines a token with a denomination and an amount. + If the embedded message type is well-known and has a custom JSON + representation, that representation will be embedded adding a field - NOTE: The amount field is an Int which implements the custom - method + `value` which holds the custom JSON in addition to the `@type` - signatures required by gogoproto. - description: Minimum deposit for a proposal to enter voting period. - max_deposit_period: - type: string - description: >- - Maximum period for Atom holders to deposit on a proposal. Initial - value: 2 - months. - tally_params: - description: tally_params defines the parameters related to tally. + field. Example (for message [google.protobuf.Duration][]): + + { + "@type": "type.googleapis.com/google.protobuf.Duration", + "value": "1.212s" + } + description: evidence returns all evidences. + pagination: + description: pagination defines the pagination in the response. type: object properties: - quorum: - type: string - format: byte - description: >- - Minimum percentage of total stake needed to vote for a result to - be - considered valid. - threshold: + next_key: type: string format: byte - description: >- - Minimum proportion of Yes votes for proposal to pass. Default - value: 0.5. - veto_threshold: + title: |- + next_key is the key to be passed to PageRequest.key to + query the next page most efficiently + total: type: string - format: byte - description: >- - Minimum value of Veto votes to Total votes ratio for proposal to - be - vetoed. Default value: 1/3. - description: QueryParamsResponse is the response type for the Query/Params RPC method. - cosmos.gov.v1beta1.QueryProposalResponse: + format: uint64 + title: >- + total is total number of results available if + PageRequest.count_total + + was set, its value is undefined otherwise + description: >- + QueryAllEvidenceResponse is the response type for the Query/AllEvidence + RPC + + method. + cosmos.evidence.v1beta1.QueryEvidenceResponse: type: object properties: - proposal: + evidence: type: object properties: - proposal_id: + type_url: type: string - format: uint64 - content: - type: object - properties: - type_url: - type: string - description: >- - A URL/resource name that uniquely identifies the type of the - serialized + description: >- + A URL/resource name that uniquely identifies the type of the + serialized - protocol buffer message. This string must contain at least + protocol buffer message. This string must contain at least - one "/" character. The last segment of the URL's path must - represent + one "/" character. The last segment of the URL's path must + represent - the fully qualified name of the type (as in + the fully qualified name of the type (as in - `path/google.protobuf.Duration`). The name should be in a - canonical form + `path/google.protobuf.Duration`). The name should be in a + canonical form - (e.g., leading "." is not accepted). + (e.g., leading "." is not accepted). - In practice, teams usually precompile into the binary all - types that they + In practice, teams usually precompile into the binary all types + that they - expect it to use in the context of Any. However, for URLs - which use the + expect it to use in the context of Any. However, for URLs which + use the - scheme `http`, `https`, or no scheme, one can optionally set - up a type + scheme `http`, `https`, or no scheme, one can optionally set up a + type - server that maps type URLs to message definitions as follows: + server that maps type URLs to message definitions as follows: - * If no scheme is provided, `https` is assumed. + * If no scheme is provided, `https` is assumed. - * An HTTP GET on the URL must yield a [google.protobuf.Type][] - value in binary format, or produce an error. - * Applications are allowed to cache lookup results based on - the - URL, or have them precompiled into a binary to avoid any - lookup. Therefore, binary compatibility needs to be preserved - on changes to types. (Use versioned type names to manage - breaking changes.) + * An HTTP GET on the URL must yield a [google.protobuf.Type][] + value in binary format, or produce an error. + * Applications are allowed to cache lookup results based on the + URL, or have them precompiled into a binary to avoid any + lookup. Therefore, binary compatibility needs to be preserved + on changes to types. (Use versioned type names to manage + breaking changes.) - Note: this functionality is not currently available in the - official + Note: this functionality is not currently available in the + official - protobuf release, and it is not used for type URLs beginning - with + protobuf release, and it is not used for type URLs beginning with - type.googleapis.com. + type.googleapis.com. - Schemes other than `http`, `https` (or the empty scheme) might - be + Schemes other than `http`, `https` (or the empty scheme) might be - used with implementation specific semantics. - value: - type: string - format: byte - description: >- - Must be a valid serialized protocol buffer of the above - specified type. + used with implementation specific semantics. + value: + type: string + format: byte description: >- - `Any` contains an arbitrary serialized protocol buffer message - along with a - - URL that describes the type of the serialized message. - - - Protobuf library provides support to pack/unpack Any values in the - form - - of utility functions or additional generated methods of the Any + Must be a valid serialized protocol buffer of the above specified type. + description: >- + `Any` contains an arbitrary serialized protocol buffer message along + with a + URL that describes the type of the serialized message. - Example 1: Pack and unpack a message in C++. - Foo foo = ...; - Any any; - any.PackFrom(foo); - ... - if (any.UnpackTo(&foo)) { - ... - } + Protobuf library provides support to pack/unpack Any values in the + form - Example 2: Pack and unpack a message in Java. + of utility functions or additional generated methods of the Any type. - Foo foo = ...; - Any any = Any.pack(foo); - ... - if (any.is(Foo.class)) { - foo = any.unpack(Foo.class); - } - Example 3: Pack and unpack a message in Python. + Example 1: Pack and unpack a message in C++. - foo = Foo(...) - any = Any() - any.Pack(foo) - ... - if any.Is(Foo.DESCRIPTOR): - any.Unpack(foo) - ... + Foo foo = ...; + Any any; + any.PackFrom(foo); + ... + if (any.UnpackTo(&foo)) { + ... + } - Example 4: Pack and unpack a message in Go + Example 2: Pack and unpack a message in Java. - foo := &pb.Foo{...} - any, err := ptypes.MarshalAny(foo) - ... - foo := &pb.Foo{} - if err := ptypes.UnmarshalAny(any, foo); err != nil { - ... - } + Foo foo = ...; + Any any = Any.pack(foo); + ... + if (any.is(Foo.class)) { + foo = any.unpack(Foo.class); + } - The pack methods provided by protobuf library will by default use + Example 3: Pack and unpack a message in Python. - 'type.googleapis.com/full.type.name' as the type URL and the - unpack + foo = Foo(...) + any = Any() + any.Pack(foo) + ... + if any.Is(Foo.DESCRIPTOR): + any.Unpack(foo) + ... - methods only use the fully qualified type name after the last '/' + Example 4: Pack and unpack a message in Go - in the type URL, for example "foo.bar.com/x/y.z" will yield type + foo := &pb.Foo{...} + any, err := ptypes.MarshalAny(foo) + ... + foo := &pb.Foo{} + if err := ptypes.UnmarshalAny(any, foo); err != nil { + ... + } - name "y.z". + The pack methods provided by protobuf library will by default use + 'type.googleapis.com/full.type.name' as the type URL and the unpack + methods only use the fully qualified type name after the last '/' - JSON + in the type URL, for example "foo.bar.com/x/y.z" will yield type - ==== + name "y.z". - The JSON representation of an `Any` value uses the regular - representation of the deserialized, embedded message, with an - additional field `@type` which contains the type URL. Example: + JSON - package google.profile; - message Person { - string first_name = 1; - string last_name = 2; - } + ==== - { - "@type": "type.googleapis.com/google.profile.Person", - "firstName": , - "lastName": - } + The JSON representation of an `Any` value uses the regular - If the embedded message type is well-known and has a custom JSON + representation of the deserialized, embedded message, with an - representation, that representation will be embedded adding a - field + additional field `@type` which contains the type URL. Example: - `value` which holds the custom JSON in addition to the `@type` + package google.profile; + message Person { + string first_name = 1; + string last_name = 2; + } - field. Example (for message [google.protobuf.Duration][]): + { + "@type": "type.googleapis.com/google.profile.Person", + "firstName": , + "lastName": + } - { - "@type": "type.googleapis.com/google.protobuf.Duration", - "value": "1.212s" - } - status: - type: string - enum: - - PROPOSAL_STATUS_UNSPECIFIED - - PROPOSAL_STATUS_DEPOSIT_PERIOD - - PROPOSAL_STATUS_VOTING_PERIOD - - PROPOSAL_STATUS_PASSED - - PROPOSAL_STATUS_REJECTED - - PROPOSAL_STATUS_FAILED - default: PROPOSAL_STATUS_UNSPECIFIED - description: |- - ProposalStatus enumerates the valid statuses of a proposal. + If the embedded message type is well-known and has a custom JSON - - PROPOSAL_STATUS_UNSPECIFIED: PROPOSAL_STATUS_UNSPECIFIED defines the default propopsal status. - - PROPOSAL_STATUS_DEPOSIT_PERIOD: PROPOSAL_STATUS_DEPOSIT_PERIOD defines a proposal status during the deposit - period. - - PROPOSAL_STATUS_VOTING_PERIOD: PROPOSAL_STATUS_VOTING_PERIOD defines a proposal status during the voting - period. - - PROPOSAL_STATUS_PASSED: PROPOSAL_STATUS_PASSED defines a proposal status of a proposal that has - passed. - - PROPOSAL_STATUS_REJECTED: PROPOSAL_STATUS_REJECTED defines a proposal status of a proposal that has - been rejected. - - PROPOSAL_STATUS_FAILED: PROPOSAL_STATUS_FAILED defines a proposal status of a proposal that has - failed. - final_tally_result: - type: object - properties: - 'yes': - type: string - abstain: - type: string - 'no': - type: string - no_with_veto: - type: string - description: TallyResult defines a standard tally for a governance proposal. - submit_time: - type: string - format: date-time - deposit_end_time: - type: string - format: date-time - total_deposit: - type: array - items: - type: object - properties: - denom: - type: string - amount: - type: string - description: >- - Coin defines a token with a denomination and an amount. + representation, that representation will be embedded adding a field + `value` which holds the custom JSON in addition to the `@type` - NOTE: The amount field is an Int which implements the custom - method + field. Example (for message [google.protobuf.Duration][]): - signatures required by gogoproto. - voting_start_time: - type: string - format: date-time - voting_end_time: - type: string - format: date-time - description: Proposal defines the core field members of a governance proposal. + { + "@type": "type.googleapis.com/google.protobuf.Duration", + "value": "1.212s" + } description: >- - QueryProposalResponse is the response type for the Query/Proposal RPC + QueryEvidenceResponse is the response type for the Query/Evidence RPC method. - cosmos.gov.v1beta1.QueryProposalsResponse: + cosmos.gov.v1beta1.Deposit: type: object properties: - proposals: + proposal_id: + type: string + format: uint64 + depositor: + type: string + amount: type: array items: type: object properties: - proposal_id: + denom: type: string - format: uint64 - content: - type: object - properties: - type_url: - type: string - description: >- - A URL/resource name that uniquely identifies the type of the - serialized - - protocol buffer message. This string must contain at least - - one "/" character. The last segment of the URL's path must - represent - - the fully qualified name of the type (as in - - `path/google.protobuf.Duration`). The name should be in a - canonical form + amount: + type: string + description: |- + Coin defines a token with a denomination and an amount. - (e.g., leading "." is not accepted). + NOTE: The amount field is an Int which implements the custom method + signatures required by gogoproto. + description: |- + Deposit defines an amount deposited by an account address to an active + proposal. + cosmos.gov.v1beta1.DepositParams: + type: object + properties: + min_deposit: + type: array + items: + type: object + properties: + denom: + type: string + amount: + type: string + description: |- + Coin defines a token with a denomination and an amount. + NOTE: The amount field is an Int which implements the custom method + signatures required by gogoproto. + description: Minimum deposit for a proposal to enter voting period. + max_deposit_period: + type: string + description: >- + Maximum period for Atom holders to deposit on a proposal. Initial + value: 2 + months. + description: DepositParams defines the params for deposits on governance proposals. + cosmos.gov.v1beta1.Proposal: + type: object + properties: + proposal_id: + type: string + format: uint64 + content: + type: object + properties: + type_url: + type: string + description: >- + A URL/resource name that uniquely identifies the type of the + serialized - In practice, teams usually precompile into the binary all - types that they + protocol buffer message. This string must contain at least - expect it to use in the context of Any. However, for URLs - which use the + one "/" character. The last segment of the URL's path must + represent - scheme `http`, `https`, or no scheme, one can optionally set - up a type + the fully qualified name of the type (as in - server that maps type URLs to message definitions as - follows: + `path/google.protobuf.Duration`). The name should be in a + canonical form + (e.g., leading "." is not accepted). - * If no scheme is provided, `https` is assumed. - * An HTTP GET on the URL must yield a - [google.protobuf.Type][] - value in binary format, or produce an error. - * Applications are allowed to cache lookup results based on - the - URL, or have them precompiled into a binary to avoid any - lookup. Therefore, binary compatibility needs to be preserved - on changes to types. (Use versioned type names to manage - breaking changes.) + In practice, teams usually precompile into the binary all types + that they - Note: this functionality is not currently available in the - official + expect it to use in the context of Any. However, for URLs which + use the - protobuf release, and it is not used for type URLs beginning - with + scheme `http`, `https`, or no scheme, one can optionally set up a + type - type.googleapis.com. + server that maps type URLs to message definitions as follows: - Schemes other than `http`, `https` (or the empty scheme) - might be + * If no scheme is provided, `https` is assumed. - used with implementation specific semantics. - value: - type: string - format: byte - description: >- - Must be a valid serialized protocol buffer of the above - specified type. - description: >- - `Any` contains an arbitrary serialized protocol buffer message - along with a + * An HTTP GET on the URL must yield a [google.protobuf.Type][] + value in binary format, or produce an error. + * Applications are allowed to cache lookup results based on the + URL, or have them precompiled into a binary to avoid any + lookup. Therefore, binary compatibility needs to be preserved + on changes to types. (Use versioned type names to manage + breaking changes.) - URL that describes the type of the serialized message. + Note: this functionality is not currently available in the + official + protobuf release, and it is not used for type URLs beginning with - Protobuf library provides support to pack/unpack Any values in - the form + type.googleapis.com. - of utility functions or additional generated methods of the Any - type. + Schemes other than `http`, `https` (or the empty scheme) might be - Example 1: Pack and unpack a message in C++. + used with implementation specific semantics. + value: + type: string + format: byte + description: >- + Must be a valid serialized protocol buffer of the above specified + type. + description: >- + `Any` contains an arbitrary serialized protocol buffer message along + with a - Foo foo = ...; - Any any; - any.PackFrom(foo); - ... - if (any.UnpackTo(&foo)) { - ... - } + URL that describes the type of the serialized message. - Example 2: Pack and unpack a message in Java. - Foo foo = ...; - Any any = Any.pack(foo); - ... - if (any.is(Foo.class)) { - foo = any.unpack(Foo.class); - } + Protobuf library provides support to pack/unpack Any values in the + form - Example 3: Pack and unpack a message in Python. + of utility functions or additional generated methods of the Any type. - foo = Foo(...) - any = Any() - any.Pack(foo) - ... - if any.Is(Foo.DESCRIPTOR): - any.Unpack(foo) - ... - Example 4: Pack and unpack a message in Go + Example 1: Pack and unpack a message in C++. - foo := &pb.Foo{...} - any, err := ptypes.MarshalAny(foo) - ... - foo := &pb.Foo{} - if err := ptypes.UnmarshalAny(any, foo); err != nil { - ... - } + Foo foo = ...; + Any any; + any.PackFrom(foo); + ... + if (any.UnpackTo(&foo)) { + ... + } - The pack methods provided by protobuf library will by default - use + Example 2: Pack and unpack a message in Java. - 'type.googleapis.com/full.type.name' as the type URL and the - unpack + Foo foo = ...; + Any any = Any.pack(foo); + ... + if (any.is(Foo.class)) { + foo = any.unpack(Foo.class); + } - methods only use the fully qualified type name after the last - '/' + Example 3: Pack and unpack a message in Python. - in the type URL, for example "foo.bar.com/x/y.z" will yield type + foo = Foo(...) + any = Any() + any.Pack(foo) + ... + if any.Is(Foo.DESCRIPTOR): + any.Unpack(foo) + ... - name "y.z". + Example 4: Pack and unpack a message in Go + foo := &pb.Foo{...} + any, err := ptypes.MarshalAny(foo) + ... + foo := &pb.Foo{} + if err := ptypes.UnmarshalAny(any, foo); err != nil { + ... + } + The pack methods provided by protobuf library will by default use - JSON + 'type.googleapis.com/full.type.name' as the type URL and the unpack - ==== + methods only use the fully qualified type name after the last '/' - The JSON representation of an `Any` value uses the regular + in the type URL, for example "foo.bar.com/x/y.z" will yield type - representation of the deserialized, embedded message, with an + name "y.z". - additional field `@type` which contains the type URL. Example: - package google.profile; - message Person { - string first_name = 1; - string last_name = 2; - } - { - "@type": "type.googleapis.com/google.profile.Person", - "firstName": , - "lastName": - } + JSON - If the embedded message type is well-known and has a custom JSON + ==== - representation, that representation will be embedded adding a - field + The JSON representation of an `Any` value uses the regular - `value` which holds the custom JSON in addition to the `@type` + representation of the deserialized, embedded message, with an - field. Example (for message [google.protobuf.Duration][]): + additional field `@type` which contains the type URL. Example: - { - "@type": "type.googleapis.com/google.protobuf.Duration", - "value": "1.212s" - } - status: - type: string - enum: - - PROPOSAL_STATUS_UNSPECIFIED - - PROPOSAL_STATUS_DEPOSIT_PERIOD - - PROPOSAL_STATUS_VOTING_PERIOD - - PROPOSAL_STATUS_PASSED - - PROPOSAL_STATUS_REJECTED - - PROPOSAL_STATUS_FAILED - default: PROPOSAL_STATUS_UNSPECIFIED - description: |- - ProposalStatus enumerates the valid statuses of a proposal. + package google.profile; + message Person { + string first_name = 1; + string last_name = 2; + } - - PROPOSAL_STATUS_UNSPECIFIED: PROPOSAL_STATUS_UNSPECIFIED defines the default propopsal status. - - PROPOSAL_STATUS_DEPOSIT_PERIOD: PROPOSAL_STATUS_DEPOSIT_PERIOD defines a proposal status during the deposit - period. - - PROPOSAL_STATUS_VOTING_PERIOD: PROPOSAL_STATUS_VOTING_PERIOD defines a proposal status during the voting - period. - - PROPOSAL_STATUS_PASSED: PROPOSAL_STATUS_PASSED defines a proposal status of a proposal that has - passed. - - PROPOSAL_STATUS_REJECTED: PROPOSAL_STATUS_REJECTED defines a proposal status of a proposal that has - been rejected. - - PROPOSAL_STATUS_FAILED: PROPOSAL_STATUS_FAILED defines a proposal status of a proposal that has - failed. - final_tally_result: - type: object - properties: - 'yes': - type: string - abstain: - type: string - 'no': - type: string - no_with_veto: - type: string - description: TallyResult defines a standard tally for a governance proposal. - submit_time: - type: string - format: date-time - deposit_end_time: - type: string - format: date-time - total_deposit: - type: array - items: - type: object - properties: - denom: - type: string - amount: - type: string - description: >- - Coin defines a token with a denomination and an amount. + { + "@type": "type.googleapis.com/google.profile.Person", + "firstName": , + "lastName": + } + If the embedded message type is well-known and has a custom JSON - NOTE: The amount field is an Int which implements the custom - method + representation, that representation will be embedded adding a field - signatures required by gogoproto. - voting_start_time: - type: string - format: date-time - voting_end_time: - type: string - format: date-time - description: Proposal defines the core field members of a governance proposal. - pagination: - description: pagination defines the pagination in the response. - type: object - properties: - next_key: - type: string - format: byte - title: |- - next_key is the key to be passed to PageRequest.key to - query the next page most efficiently - total: - type: string - format: uint64 - title: >- - total is total number of results available if - PageRequest.count_total + `value` which holds the custom JSON in addition to the `@type` - was set, its value is undefined otherwise - description: |- - QueryProposalsResponse is the response type for the Query/Proposals RPC - method. - cosmos.gov.v1beta1.QueryTallyResultResponse: - type: object - properties: - tally: - description: tally defines the requested tally. + field. Example (for message [google.protobuf.Duration][]): + + { + "@type": "type.googleapis.com/google.protobuf.Duration", + "value": "1.212s" + } + status: + type: string + enum: + - PROPOSAL_STATUS_UNSPECIFIED + - PROPOSAL_STATUS_DEPOSIT_PERIOD + - PROPOSAL_STATUS_VOTING_PERIOD + - PROPOSAL_STATUS_PASSED + - PROPOSAL_STATUS_REJECTED + - PROPOSAL_STATUS_FAILED + default: PROPOSAL_STATUS_UNSPECIFIED + description: |- + ProposalStatus enumerates the valid statuses of a proposal. + + - PROPOSAL_STATUS_UNSPECIFIED: PROPOSAL_STATUS_UNSPECIFIED defines the default propopsal status. + - PROPOSAL_STATUS_DEPOSIT_PERIOD: PROPOSAL_STATUS_DEPOSIT_PERIOD defines a proposal status during the deposit + period. + - PROPOSAL_STATUS_VOTING_PERIOD: PROPOSAL_STATUS_VOTING_PERIOD defines a proposal status during the voting + period. + - PROPOSAL_STATUS_PASSED: PROPOSAL_STATUS_PASSED defines a proposal status of a proposal that has + passed. + - PROPOSAL_STATUS_REJECTED: PROPOSAL_STATUS_REJECTED defines a proposal status of a proposal that has + been rejected. + - PROPOSAL_STATUS_FAILED: PROPOSAL_STATUS_FAILED defines a proposal status of a proposal that has + failed. + final_tally_result: type: object properties: 'yes': @@ -32598,400 +35525,129 @@ definitions: type: string no_with_veto: type: string - description: >- - QueryTallyResultResponse is the response type for the Query/Tally RPC - method. - cosmos.gov.v1beta1.QueryVoteResponse: - type: object - properties: - vote: - description: vote defined the queried vote. - type: object - properties: - proposal_id: - type: string - format: uint64 - voter: - type: string - option: - type: string - enum: - - VOTE_OPTION_UNSPECIFIED - - VOTE_OPTION_YES - - VOTE_OPTION_ABSTAIN - - VOTE_OPTION_NO - - VOTE_OPTION_NO_WITH_VETO - default: VOTE_OPTION_UNSPECIFIED - description: >- - VoteOption enumerates the valid vote options for a given - governance proposal. - - - VOTE_OPTION_UNSPECIFIED: VOTE_OPTION_UNSPECIFIED defines a no-op vote option. - - VOTE_OPTION_YES: VOTE_OPTION_YES defines a yes vote option. - - VOTE_OPTION_ABSTAIN: VOTE_OPTION_ABSTAIN defines an abstain vote option. - - VOTE_OPTION_NO: VOTE_OPTION_NO defines a no vote option. - - VOTE_OPTION_NO_WITH_VETO: VOTE_OPTION_NO_WITH_VETO defines a no with veto vote option. - description: QueryVoteResponse is the response type for the Query/Vote RPC method. - cosmos.gov.v1beta1.QueryVotesResponse: - type: object - properties: - votes: + description: TallyResult defines a standard tally for a governance proposal. + submit_time: + type: string + format: date-time + deposit_end_time: + type: string + format: date-time + total_deposit: type: array items: type: object properties: - proposal_id: - type: string - format: uint64 - voter: - type: string - option: + denom: type: string - enum: - - VOTE_OPTION_UNSPECIFIED - - VOTE_OPTION_YES - - VOTE_OPTION_ABSTAIN - - VOTE_OPTION_NO - - VOTE_OPTION_NO_WITH_VETO - default: VOTE_OPTION_UNSPECIFIED - description: >- - VoteOption enumerates the valid vote options for a given - governance proposal. - - - VOTE_OPTION_UNSPECIFIED: VOTE_OPTION_UNSPECIFIED defines a no-op vote option. - - VOTE_OPTION_YES: VOTE_OPTION_YES defines a yes vote option. - - VOTE_OPTION_ABSTAIN: VOTE_OPTION_ABSTAIN defines an abstain vote option. - - VOTE_OPTION_NO: VOTE_OPTION_NO defines a no vote option. - - VOTE_OPTION_NO_WITH_VETO: VOTE_OPTION_NO_WITH_VETO defines a no with veto vote option. - description: |- - Vote defines a vote on a governance proposal. - A Vote consists of a proposal ID, the voter, and the vote option. - description: votes defined the queried votes. - pagination: - description: pagination defines the pagination in the response. - type: object - properties: - next_key: - type: string - format: byte - title: |- - next_key is the key to be passed to PageRequest.key to - query the next page most efficiently - total: - type: string - format: uint64 - title: >- - total is total number of results available if - PageRequest.count_total - - was set, its value is undefined otherwise - description: QueryVotesResponse is the response type for the Query/Votes RPC method. - cosmos.gov.v1beta1.TallyParams: - type: object - properties: - quorum: - type: string - format: byte - description: |- - Minimum percentage of total stake needed to vote for a result to be - considered valid. - threshold: - type: string - format: byte - description: >- - Minimum proportion of Yes votes for proposal to pass. Default value: - 0.5. - veto_threshold: - type: string - format: byte - description: |- - Minimum value of Veto votes to Total votes ratio for proposal to be - vetoed. Default value: 1/3. - description: TallyParams defines the params for tallying votes on governance proposals. - cosmos.gov.v1beta1.TallyResult: - type: object - properties: - 'yes': - type: string - abstain: - type: string - 'no': - type: string - no_with_veto: - type: string - description: TallyResult defines a standard tally for a governance proposal. - cosmos.gov.v1beta1.Vote: - type: object - properties: - proposal_id: - type: string - format: uint64 - voter: - type: string - option: - type: string - enum: - - VOTE_OPTION_UNSPECIFIED - - VOTE_OPTION_YES - - VOTE_OPTION_ABSTAIN - - VOTE_OPTION_NO - - VOTE_OPTION_NO_WITH_VETO - default: VOTE_OPTION_UNSPECIFIED - description: >- - VoteOption enumerates the valid vote options for a given governance - proposal. - - - VOTE_OPTION_UNSPECIFIED: VOTE_OPTION_UNSPECIFIED defines a no-op vote option. - - VOTE_OPTION_YES: VOTE_OPTION_YES defines a yes vote option. - - VOTE_OPTION_ABSTAIN: VOTE_OPTION_ABSTAIN defines an abstain vote option. - - VOTE_OPTION_NO: VOTE_OPTION_NO defines a no vote option. - - VOTE_OPTION_NO_WITH_VETO: VOTE_OPTION_NO_WITH_VETO defines a no with veto vote option. - description: |- - Vote defines a vote on a governance proposal. - A Vote consists of a proposal ID, the voter, and the vote option. - cosmos.gov.v1beta1.VoteOption: - type: string - enum: - - VOTE_OPTION_UNSPECIFIED - - VOTE_OPTION_YES - - VOTE_OPTION_ABSTAIN - - VOTE_OPTION_NO - - VOTE_OPTION_NO_WITH_VETO - default: VOTE_OPTION_UNSPECIFIED - description: >- - VoteOption enumerates the valid vote options for a given governance - proposal. - - - VOTE_OPTION_UNSPECIFIED: VOTE_OPTION_UNSPECIFIED defines a no-op vote option. - - VOTE_OPTION_YES: VOTE_OPTION_YES defines a yes vote option. - - VOTE_OPTION_ABSTAIN: VOTE_OPTION_ABSTAIN defines an abstain vote option. - - VOTE_OPTION_NO: VOTE_OPTION_NO defines a no vote option. - - VOTE_OPTION_NO_WITH_VETO: VOTE_OPTION_NO_WITH_VETO defines a no with veto vote option. - cosmos.gov.v1beta1.VotingParams: - type: object - properties: - voting_period: - type: string - description: Length of the voting period. - description: VotingParams defines the params for voting on governance proposals. - cosmos.mint.v1beta1.Params: - type: object - properties: - mint_denom: - type: string - title: type of coin to mint - inflation_rate_change: - type: string - title: maximum annual change in inflation rate - inflation_max: - type: string - title: maximum inflation rate - inflation_min: - type: string - title: minimum inflation rate - goal_bonded: - type: string - title: goal of percent bonded atoms - blocks_per_year: - type: string - format: uint64 - title: expected blocks per year - description: Params holds parameters for the mint module. - cosmos.mint.v1beta1.QueryAnnualProvisionsResponse: - type: object - properties: - annual_provisions: - type: string - format: byte - description: annual_provisions is the current minting annual provisions value. - description: |- - QueryAnnualProvisionsResponse is the response type for the - Query/AnnualProvisions RPC method. - cosmos.mint.v1beta1.QueryInflationResponse: - type: object - properties: - inflation: - type: string - format: byte - description: inflation is the current minting inflation value. - description: |- - QueryInflationResponse is the response type for the Query/Inflation RPC - method. - cosmos.mint.v1beta1.QueryParamsResponse: - type: object - properties: - params: - description: params defines the parameters of the module. - type: object - properties: - mint_denom: - type: string - title: type of coin to mint - inflation_rate_change: - type: string - title: maximum annual change in inflation rate - inflation_max: - type: string - title: maximum inflation rate - inflation_min: - type: string - title: minimum inflation rate - goal_bonded: - type: string - title: goal of percent bonded atoms - blocks_per_year: - type: string - format: uint64 - title: expected blocks per year - description: QueryParamsResponse is the response type for the Query/Params RPC method. - cosmos.params.v1beta1.ParamChange: - type: object - properties: - subspace: - type: string - key: - type: string - value: - type: string - description: |- - ParamChange defines an individual parameter change, for use in - ParameterChangeProposal. - cosmos.params.v1beta1.QueryParamsResponse: - type: object - properties: - param: - description: param defines the queried parameter. - type: object - properties: - subspace: - type: string - key: - type: string - value: - type: string - description: QueryParamsResponse is response type for the Query/Params RPC method. - cosmos.slashing.v1beta1.Params: - type: object - properties: - signed_blocks_window: - type: string - format: int64 - min_signed_per_window: - type: string - format: byte - downtime_jail_duration: - type: string - slash_fraction_double_sign: - type: string - format: byte - slash_fraction_downtime: - type: string - format: byte - description: Params represents the parameters used for by the slashing module. - cosmos.slashing.v1beta1.QueryParamsResponse: - type: object - properties: - params: - type: object - properties: - signed_blocks_window: - type: string - format: int64 - min_signed_per_window: - type: string - format: byte - downtime_jail_duration: - type: string - slash_fraction_double_sign: - type: string - format: byte - slash_fraction_downtime: - type: string - format: byte - description: Params represents the parameters used for by the slashing module. - title: QueryParamsResponse is the response type for the Query/Params RPC method - cosmos.slashing.v1beta1.QuerySigningInfoResponse: + amount: + type: string + description: |- + Coin defines a token with a denomination and an amount. + + NOTE: The amount field is an Int which implements the custom method + signatures required by gogoproto. + voting_start_time: + type: string + format: date-time + voting_end_time: + type: string + format: date-time + description: Proposal defines the core field members of a governance proposal. + cosmos.gov.v1beta1.ProposalStatus: + type: string + enum: + - PROPOSAL_STATUS_UNSPECIFIED + - PROPOSAL_STATUS_DEPOSIT_PERIOD + - PROPOSAL_STATUS_VOTING_PERIOD + - PROPOSAL_STATUS_PASSED + - PROPOSAL_STATUS_REJECTED + - PROPOSAL_STATUS_FAILED + default: PROPOSAL_STATUS_UNSPECIFIED + description: |- + ProposalStatus enumerates the valid statuses of a proposal. + + - PROPOSAL_STATUS_UNSPECIFIED: PROPOSAL_STATUS_UNSPECIFIED defines the default propopsal status. + - PROPOSAL_STATUS_DEPOSIT_PERIOD: PROPOSAL_STATUS_DEPOSIT_PERIOD defines a proposal status during the deposit + period. + - PROPOSAL_STATUS_VOTING_PERIOD: PROPOSAL_STATUS_VOTING_PERIOD defines a proposal status during the voting + period. + - PROPOSAL_STATUS_PASSED: PROPOSAL_STATUS_PASSED defines a proposal status of a proposal that has + passed. + - PROPOSAL_STATUS_REJECTED: PROPOSAL_STATUS_REJECTED defines a proposal status of a proposal that has + been rejected. + - PROPOSAL_STATUS_FAILED: PROPOSAL_STATUS_FAILED defines a proposal status of a proposal that has + failed. + cosmos.gov.v1beta1.QueryDepositResponse: type: object properties: - val_signing_info: - title: val_signing_info is the signing info of requested val cons address + deposit: type: object properties: - address: - type: string - start_height: - type: string - format: int64 - title: height at which validator was first a candidate OR was unjailed - index_offset: + proposal_id: type: string - format: int64 - title: index offset into signed block bit array - jailed_until: + format: uint64 + depositor: type: string - format: date-time - title: timestamp validator cannot be unjailed until - tombstoned: - type: boolean - title: >- - whether or not a validator has been tombstoned (killed out of - validator + amount: + type: array + items: + type: object + properties: + denom: + type: string + amount: + type: string + description: >- + Coin defines a token with a denomination and an amount. - set) - missed_blocks_counter: - type: string - format: int64 - title: missed blocks counter (to avoid scanning the array every time) - description: >- - ValidatorSigningInfo defines a validator's signing info for monitoring - their - liveness activity. - title: >- - QuerySigningInfoResponse is the response type for the Query/SigningInfo - RPC + NOTE: The amount field is an Int which implements the custom + method - method - cosmos.slashing.v1beta1.QuerySigningInfosResponse: + signatures required by gogoproto. + description: |- + Deposit defines an amount deposited by an account address to an active + proposal. + description: >- + QueryDepositResponse is the response type for the Query/Deposit RPC + method. + cosmos.gov.v1beta1.QueryDepositsResponse: type: object properties: - info: + deposits: type: array items: type: object properties: - address: - type: string - start_height: - type: string - format: int64 - title: height at which validator was first a candidate OR was unjailed - index_offset: + proposal_id: type: string - format: int64 - title: index offset into signed block bit array - jailed_until: + format: uint64 + depositor: type: string - format: date-time - title: timestamp validator cannot be unjailed until - tombstoned: - type: boolean - title: >- - whether or not a validator has been tombstoned (killed out of - validator + amount: + type: array + items: + type: object + properties: + denom: + type: string + amount: + type: string + description: >- + Coin defines a token with a denomination and an amount. - set) - missed_blocks_counter: - type: string - format: int64 - title: missed blocks counter (to avoid scanning the array every time) + + NOTE: The amount field is an Int which implements the custom + method + + signatures required by gogoproto. description: >- - ValidatorSigningInfo defines a validator's signing info for - monitoring their + Deposit defines an amount deposited by an account address to an + active - liveness activity. - title: info is the signing info of all validators + proposal. pagination: + description: pagination defines the pagination in the response. type: object properties: next_key: @@ -33008,248 +35664,327 @@ definitions: PageRequest.count_total was set, its value is undefined otherwise - description: |- - PageResponse is to be embedded in gRPC response messages where the - corresponding request message has used PageRequest. - - message SomeResponse { - repeated Bar results = 1; - PageResponse page = 2; - } - title: >- - QuerySigningInfosResponse is the response type for the Query/SigningInfos - RPC - - method - cosmos.slashing.v1beta1.ValidatorSigningInfo: - type: object - properties: - address: - type: string - start_height: - type: string - format: int64 - title: height at which validator was first a candidate OR was unjailed - index_offset: - type: string - format: int64 - title: index offset into signed block bit array - jailed_until: - type: string - format: date-time - title: timestamp validator cannot be unjailed until - tombstoned: - type: boolean - title: >- - whether or not a validator has been tombstoned (killed out of - validator - - set) - missed_blocks_counter: - type: string - format: int64 - title: missed blocks counter (to avoid scanning the array every time) description: >- - ValidatorSigningInfo defines a validator's signing info for monitoring - their - - liveness activity. - cosmos.staking.v1beta1.BondStatus: - type: string - enum: - - BOND_STATUS_UNSPECIFIED - - BOND_STATUS_UNBONDED - - BOND_STATUS_UNBONDING - - BOND_STATUS_BONDED - default: BOND_STATUS_UNSPECIFIED - description: |- - BondStatus is the status of a validator. - - - BOND_STATUS_UNSPECIFIED: UNSPECIFIED defines an invalid validator status. - - BOND_STATUS_UNBONDED: UNBONDED defines a validator that is not bonded. - - BOND_STATUS_UNBONDING: UNBONDING defines a validator that is unbonding. - - BOND_STATUS_BONDED: BONDED defines a validator that is bonded. - cosmos.staking.v1beta1.Commission: + QueryDepositsResponse is the response type for the Query/Deposits RPC + method. + cosmos.gov.v1beta1.QueryParamsResponse: type: object properties: - commission_rates: + voting_params: + description: voting_params defines the parameters related to voting. type: object properties: - rate: - type: string - max_rate: - type: string - max_change_rate: + voting_period: type: string - description: >- - CommissionRates defines the initial commission rates to be used for - creating - - a validator. - update_time: - type: string - format: date-time - description: Commission defines commission parameters for a given validator. - cosmos.staking.v1beta1.CommissionRates: - type: object - properties: - rate: - type: string - max_rate: - type: string - max_change_rate: - type: string - description: >- - CommissionRates defines the initial commission rates to be used for - creating - - a validator. - cosmos.staking.v1beta1.Delegation: - type: object - properties: - delegator_address: - type: string - validator_address: - type: string - shares: - type: string - description: |- - Delegation represents the bond with tokens held by an account. It is - owned by one delegator, and is associated with the voting power of one - validator. - cosmos.staking.v1beta1.DelegationResponse: - type: object - properties: - delegation: + description: Length of the voting period. + deposit_params: + description: deposit_params defines the parameters related to deposit. type: object properties: - delegator_address: - type: string - validator_address: - type: string - shares: + min_deposit: + type: array + items: + type: object + properties: + denom: + type: string + amount: + type: string + description: >- + Coin defines a token with a denomination and an amount. + + + NOTE: The amount field is an Int which implements the custom + method + + signatures required by gogoproto. + description: Minimum deposit for a proposal to enter voting period. + max_deposit_period: type: string - description: |- - Delegation represents the bond with tokens held by an account. It is - owned by one delegator, and is associated with the voting power of one - validator. - balance: + description: >- + Maximum period for Atom holders to deposit on a proposal. Initial + value: 2 + months. + tally_params: + description: tally_params defines the parameters related to tally. type: object properties: - denom: + quorum: type: string - amount: + format: byte + description: >- + Minimum percentage of total stake needed to vote for a result to + be + considered valid. + threshold: type: string - description: |- - Coin defines a token with a denomination and an amount. - - NOTE: The amount field is an Int which implements the custom method - signatures required by gogoproto. - description: |- - DelegationResponse is equivalent to Delegation except that it contains a - balance in addition to shares which is more suitable for client responses. - cosmos.staking.v1beta1.Description: - type: object - properties: - moniker: - type: string - identity: - type: string - website: - type: string - security_contact: - type: string - details: - type: string - description: Description defines a validator description. - cosmos.staking.v1beta1.HistoricalInfo: + format: byte + description: >- + Minimum proportion of Yes votes for proposal to pass. Default + value: 0.5. + veto_threshold: + type: string + format: byte + description: >- + Minimum value of Veto votes to Total votes ratio for proposal to + be + vetoed. Default value: 1/3. + description: QueryParamsResponse is the response type for the Query/Params RPC method. + cosmos.gov.v1beta1.QueryProposalResponse: type: object properties: - header: + proposal: type: object properties: - version: - title: basic block info + proposal_id: + type: string + format: uint64 + content: type: object properties: - block: + type_url: type: string - format: uint64 - app: + description: >- + A URL/resource name that uniquely identifies the type of the + serialized + + protocol buffer message. This string must contain at least + + one "/" character. The last segment of the URL's path must + represent + + the fully qualified name of the type (as in + + `path/google.protobuf.Duration`). The name should be in a + canonical form + + (e.g., leading "." is not accepted). + + + In practice, teams usually precompile into the binary all + types that they + + expect it to use in the context of Any. However, for URLs + which use the + + scheme `http`, `https`, or no scheme, one can optionally set + up a type + + server that maps type URLs to message definitions as follows: + + + * If no scheme is provided, `https` is assumed. + + * An HTTP GET on the URL must yield a [google.protobuf.Type][] + value in binary format, or produce an error. + * Applications are allowed to cache lookup results based on + the + URL, or have them precompiled into a binary to avoid any + lookup. Therefore, binary compatibility needs to be preserved + on changes to types. (Use versioned type names to manage + breaking changes.) + + Note: this functionality is not currently available in the + official + + protobuf release, and it is not used for type URLs beginning + with + + type.googleapis.com. + + + Schemes other than `http`, `https` (or the empty scheme) might + be + + used with implementation specific semantics. + value: type: string - format: uint64 + format: byte + description: >- + Must be a valid serialized protocol buffer of the above + specified type. description: >- - Consensus captures the consensus rules for processing a block in - the blockchain, + `Any` contains an arbitrary serialized protocol buffer message + along with a - including all blockchain data structures and the rules of the - application's + URL that describes the type of the serialized message. - state transition machine. - chain_id: - type: string - height: - type: string - format: int64 - time: + + Protobuf library provides support to pack/unpack Any values in the + form + + of utility functions or additional generated methods of the Any + type. + + + Example 1: Pack and unpack a message in C++. + + Foo foo = ...; + Any any; + any.PackFrom(foo); + ... + if (any.UnpackTo(&foo)) { + ... + } + + Example 2: Pack and unpack a message in Java. + + Foo foo = ...; + Any any = Any.pack(foo); + ... + if (any.is(Foo.class)) { + foo = any.unpack(Foo.class); + } + + Example 3: Pack and unpack a message in Python. + + foo = Foo(...) + any = Any() + any.Pack(foo) + ... + if any.Is(Foo.DESCRIPTOR): + any.Unpack(foo) + ... + + Example 4: Pack and unpack a message in Go + + foo := &pb.Foo{...} + any, err := ptypes.MarshalAny(foo) + ... + foo := &pb.Foo{} + if err := ptypes.UnmarshalAny(any, foo); err != nil { + ... + } + + The pack methods provided by protobuf library will by default use + + 'type.googleapis.com/full.type.name' as the type URL and the + unpack + + methods only use the fully qualified type name after the last '/' + + in the type URL, for example "foo.bar.com/x/y.z" will yield type + + name "y.z". + + + + JSON + + ==== + + The JSON representation of an `Any` value uses the regular + + representation of the deserialized, embedded message, with an + + additional field `@type` which contains the type URL. Example: + + package google.profile; + message Person { + string first_name = 1; + string last_name = 2; + } + + { + "@type": "type.googleapis.com/google.profile.Person", + "firstName": , + "lastName": + } + + If the embedded message type is well-known and has a custom JSON + + representation, that representation will be embedded adding a + field + + `value` which holds the custom JSON in addition to the `@type` + + field. Example (for message [google.protobuf.Duration][]): + + { + "@type": "type.googleapis.com/google.protobuf.Duration", + "value": "1.212s" + } + status: type: string - format: date-time - last_block_id: - title: prev block info + enum: + - PROPOSAL_STATUS_UNSPECIFIED + - PROPOSAL_STATUS_DEPOSIT_PERIOD + - PROPOSAL_STATUS_VOTING_PERIOD + - PROPOSAL_STATUS_PASSED + - PROPOSAL_STATUS_REJECTED + - PROPOSAL_STATUS_FAILED + default: PROPOSAL_STATUS_UNSPECIFIED + description: |- + ProposalStatus enumerates the valid statuses of a proposal. + + - PROPOSAL_STATUS_UNSPECIFIED: PROPOSAL_STATUS_UNSPECIFIED defines the default propopsal status. + - PROPOSAL_STATUS_DEPOSIT_PERIOD: PROPOSAL_STATUS_DEPOSIT_PERIOD defines a proposal status during the deposit + period. + - PROPOSAL_STATUS_VOTING_PERIOD: PROPOSAL_STATUS_VOTING_PERIOD defines a proposal status during the voting + period. + - PROPOSAL_STATUS_PASSED: PROPOSAL_STATUS_PASSED defines a proposal status of a proposal that has + passed. + - PROPOSAL_STATUS_REJECTED: PROPOSAL_STATUS_REJECTED defines a proposal status of a proposal that has + been rejected. + - PROPOSAL_STATUS_FAILED: PROPOSAL_STATUS_FAILED defines a proposal status of a proposal that has + failed. + final_tally_result: type: object properties: - hash: + 'yes': type: string - format: byte - part_set_header: - type: object - properties: - total: - type: integer - format: int64 - hash: - type: string - format: byte - title: PartsetHeader - last_commit_hash: - type: string - format: byte - title: hashes of block data - data_hash: - type: string - format: byte - validators_hash: - type: string - format: byte - title: hashes from the app output from the prev block - next_validators_hash: - type: string - format: byte - consensus_hash: - type: string - format: byte - app_hash: + abstain: + type: string + 'no': + type: string + no_with_veto: + type: string + description: TallyResult defines a standard tally for a governance proposal. + submit_time: type: string - format: byte - last_results_hash: + format: date-time + deposit_end_time: type: string - format: byte - evidence_hash: + format: date-time + total_deposit: + type: array + items: + type: object + properties: + denom: + type: string + amount: + type: string + description: >- + Coin defines a token with a denomination and an amount. + + + NOTE: The amount field is an Int which implements the custom + method + + signatures required by gogoproto. + voting_start_time: type: string - format: byte - title: consensus info - proposer_address: + format: date-time + voting_end_time: type: string - format: byte - description: Header defines the structure of a Tendermint block header. - valset: + format: date-time + description: Proposal defines the core field members of a governance proposal. + description: >- + QueryProposalResponse is the response type for the Query/Proposal RPC + method. + cosmos.gov.v1beta1.QueryProposalsResponse: + type: object + properties: + proposals: type: array items: type: object properties: - operator_address: + proposal_id: type: string - consensus_pubkey: + format: uint64 + content: type: object properties: type_url: @@ -33418,219 +36153,582 @@ definitions: "@type": "type.googleapis.com/google.protobuf.Duration", "value": "1.212s" } - jailed: - type: boolean status: type: string enum: - - BOND_STATUS_UNSPECIFIED - - BOND_STATUS_UNBONDED - - BOND_STATUS_UNBONDING - - BOND_STATUS_BONDED - default: BOND_STATUS_UNSPECIFIED + - PROPOSAL_STATUS_UNSPECIFIED + - PROPOSAL_STATUS_DEPOSIT_PERIOD + - PROPOSAL_STATUS_VOTING_PERIOD + - PROPOSAL_STATUS_PASSED + - PROPOSAL_STATUS_REJECTED + - PROPOSAL_STATUS_FAILED + default: PROPOSAL_STATUS_UNSPECIFIED description: |- - BondStatus is the status of a validator. + ProposalStatus enumerates the valid statuses of a proposal. - - BOND_STATUS_UNSPECIFIED: UNSPECIFIED defines an invalid validator status. - - BOND_STATUS_UNBONDED: UNBONDED defines a validator that is not bonded. - - BOND_STATUS_UNBONDING: UNBONDING defines a validator that is unbonding. - - BOND_STATUS_BONDED: BONDED defines a validator that is bonded. - tokens: - type: string - delegator_shares: - type: string - description: + - PROPOSAL_STATUS_UNSPECIFIED: PROPOSAL_STATUS_UNSPECIFIED defines the default propopsal status. + - PROPOSAL_STATUS_DEPOSIT_PERIOD: PROPOSAL_STATUS_DEPOSIT_PERIOD defines a proposal status during the deposit + period. + - PROPOSAL_STATUS_VOTING_PERIOD: PROPOSAL_STATUS_VOTING_PERIOD defines a proposal status during the voting + period. + - PROPOSAL_STATUS_PASSED: PROPOSAL_STATUS_PASSED defines a proposal status of a proposal that has + passed. + - PROPOSAL_STATUS_REJECTED: PROPOSAL_STATUS_REJECTED defines a proposal status of a proposal that has + been rejected. + - PROPOSAL_STATUS_FAILED: PROPOSAL_STATUS_FAILED defines a proposal status of a proposal that has + failed. + final_tally_result: type: object properties: - moniker: - type: string - identity: + 'yes': type: string - website: + abstain: type: string - security_contact: + 'no': type: string - details: + no_with_veto: type: string - description: Description defines a validator description. - unbonding_height: + description: TallyResult defines a standard tally for a governance proposal. + submit_time: type: string - format: int64 - unbonding_time: + format: date-time + deposit_end_time: type: string format: date-time - commission: + total_deposit: + type: array + items: + type: object + properties: + denom: + type: string + amount: + type: string + description: >- + Coin defines a token with a denomination and an amount. + + + NOTE: The amount field is an Int which implements the custom + method + + signatures required by gogoproto. + voting_start_time: + type: string + format: date-time + voting_end_time: + type: string + format: date-time + description: Proposal defines the core field members of a governance proposal. + pagination: + description: pagination defines the pagination in the response. + type: object + properties: + next_key: + type: string + format: byte + title: |- + next_key is the key to be passed to PageRequest.key to + query the next page most efficiently + total: + type: string + format: uint64 + title: >- + total is total number of results available if + PageRequest.count_total + + was set, its value is undefined otherwise + description: |- + QueryProposalsResponse is the response type for the Query/Proposals RPC + method. + cosmos.gov.v1beta1.QueryTallyResultResponse: + type: object + properties: + tally: + type: object + properties: + 'yes': + type: string + abstain: + type: string + 'no': + type: string + no_with_veto: + type: string + description: TallyResult defines a standard tally for a governance proposal. + description: >- + QueryTallyResultResponse is the response type for the Query/Tally RPC + method. + cosmos.gov.v1beta1.QueryVoteResponse: + type: object + properties: + vote: + type: object + properties: + proposal_id: + type: string + format: uint64 + voter: + type: string + options: + type: array + items: type: object properties: - commission_rates: - type: object - properties: - rate: - type: string - max_rate: - type: string - max_change_rate: - type: string + option: + type: string + enum: + - VOTE_OPTION_UNSPECIFIED + - VOTE_OPTION_YES + - VOTE_OPTION_ABSTAIN + - VOTE_OPTION_NO + - VOTE_OPTION_NO_WITH_VETO + default: VOTE_OPTION_UNSPECIFIED description: >- - CommissionRates defines the initial commission rates to be - used for creating - - a validator. - update_time: + VoteOption enumerates the valid vote options for a given + governance proposal. + + - VOTE_OPTION_UNSPECIFIED: VOTE_OPTION_UNSPECIFIED defines a no-op vote option. + - VOTE_OPTION_YES: VOTE_OPTION_YES defines a yes vote option. + - VOTE_OPTION_ABSTAIN: VOTE_OPTION_ABSTAIN defines an abstain vote option. + - VOTE_OPTION_NO: VOTE_OPTION_NO defines a no vote option. + - VOTE_OPTION_NO_WITH_VETO: VOTE_OPTION_NO_WITH_VETO defines a no with veto vote option. + weight: type: string - format: date-time - description: Commission defines commission parameters for a given validator. - min_self_delegation: + description: WeightedVoteOption defines a unit of vote for vote split. + description: |- + Vote defines a vote on a governance proposal. + A Vote consists of a proposal ID, the voter, and the vote option. + description: QueryVoteResponse is the response type for the Query/Vote RPC method. + cosmos.gov.v1beta1.QueryVotesResponse: + type: object + properties: + votes: + type: array + items: + type: object + properties: + proposal_id: type: string - description: >- - Validator defines a validator, together with the total amount of the - - Validator's bond shares and their exchange rate to coins. Slashing - results in - - a decrease in the exchange rate, allowing correct calculation of - future - - undelegations without iterating over delegators. When coins are - delegated to - - this validator, the validator is credited with a delegation whose - number of + format: uint64 + voter: + type: string + options: + type: array + items: + type: object + properties: + option: + type: string + enum: + - VOTE_OPTION_UNSPECIFIED + - VOTE_OPTION_YES + - VOTE_OPTION_ABSTAIN + - VOTE_OPTION_NO + - VOTE_OPTION_NO_WITH_VETO + default: VOTE_OPTION_UNSPECIFIED + description: >- + VoteOption enumerates the valid vote options for a given + governance proposal. - bond shares is based on the amount of coins delegated divided by the - current + - VOTE_OPTION_UNSPECIFIED: VOTE_OPTION_UNSPECIFIED defines a no-op vote option. + - VOTE_OPTION_YES: VOTE_OPTION_YES defines a yes vote option. + - VOTE_OPTION_ABSTAIN: VOTE_OPTION_ABSTAIN defines an abstain vote option. + - VOTE_OPTION_NO: VOTE_OPTION_NO defines a no vote option. + - VOTE_OPTION_NO_WITH_VETO: VOTE_OPTION_NO_WITH_VETO defines a no with veto vote option. + weight: + type: string + description: WeightedVoteOption defines a unit of vote for vote split. + description: |- + Vote defines a vote on a governance proposal. + A Vote consists of a proposal ID, the voter, and the vote option. + description: votes defined the queried votes. + pagination: + description: pagination defines the pagination in the response. + type: object + properties: + next_key: + type: string + format: byte + title: |- + next_key is the key to be passed to PageRequest.key to + query the next page most efficiently + total: + type: string + format: uint64 + title: >- + total is total number of results available if + PageRequest.count_total - exchange rate. Voting power can be calculated as total bonded shares + was set, its value is undefined otherwise + description: QueryVotesResponse is the response type for the Query/Votes RPC method. + cosmos.gov.v1beta1.TallyParams: + type: object + properties: + quorum: + type: string + format: byte + description: |- + Minimum percentage of total stake needed to vote for a result to be + considered valid. + threshold: + type: string + format: byte + description: >- + Minimum proportion of Yes votes for proposal to pass. Default value: + 0.5. + veto_threshold: + type: string + format: byte + description: |- + Minimum value of Veto votes to Total votes ratio for proposal to be + vetoed. Default value: 1/3. + description: TallyParams defines the params for tallying votes on governance proposals. + cosmos.gov.v1beta1.TallyResult: + type: object + properties: + 'yes': + type: string + abstain: + type: string + 'no': + type: string + no_with_veto: + type: string + description: TallyResult defines a standard tally for a governance proposal. + cosmos.gov.v1beta1.Vote: + type: object + properties: + proposal_id: + type: string + format: uint64 + voter: + type: string + options: + type: array + items: + type: object + properties: + option: + type: string + enum: + - VOTE_OPTION_UNSPECIFIED + - VOTE_OPTION_YES + - VOTE_OPTION_ABSTAIN + - VOTE_OPTION_NO + - VOTE_OPTION_NO_WITH_VETO + default: VOTE_OPTION_UNSPECIFIED + description: >- + VoteOption enumerates the valid vote options for a given + governance proposal. - multiplied by exchange rate. + - VOTE_OPTION_UNSPECIFIED: VOTE_OPTION_UNSPECIFIED defines a no-op vote option. + - VOTE_OPTION_YES: VOTE_OPTION_YES defines a yes vote option. + - VOTE_OPTION_ABSTAIN: VOTE_OPTION_ABSTAIN defines an abstain vote option. + - VOTE_OPTION_NO: VOTE_OPTION_NO defines a no vote option. + - VOTE_OPTION_NO_WITH_VETO: VOTE_OPTION_NO_WITH_VETO defines a no with veto vote option. + weight: + type: string + description: WeightedVoteOption defines a unit of vote for vote split. + description: |- + Vote defines a vote on a governance proposal. + A Vote consists of a proposal ID, the voter, and the vote option. + cosmos.gov.v1beta1.VoteOption: + type: string + enum: + - VOTE_OPTION_UNSPECIFIED + - VOTE_OPTION_YES + - VOTE_OPTION_ABSTAIN + - VOTE_OPTION_NO + - VOTE_OPTION_NO_WITH_VETO + default: VOTE_OPTION_UNSPECIFIED description: >- - HistoricalInfo contains header and validator information for a given - block. - - It is stored as part of staking module's state, which persists the `n` - most + VoteOption enumerates the valid vote options for a given governance + proposal. - recent HistoricalInfo + - VOTE_OPTION_UNSPECIFIED: VOTE_OPTION_UNSPECIFIED defines a no-op vote option. + - VOTE_OPTION_YES: VOTE_OPTION_YES defines a yes vote option. + - VOTE_OPTION_ABSTAIN: VOTE_OPTION_ABSTAIN defines an abstain vote option. + - VOTE_OPTION_NO: VOTE_OPTION_NO defines a no vote option. + - VOTE_OPTION_NO_WITH_VETO: VOTE_OPTION_NO_WITH_VETO defines a no with veto vote option. + cosmos.gov.v1beta1.VotingParams: + type: object + properties: + voting_period: + type: string + description: Length of the voting period. + description: VotingParams defines the params for voting on governance proposals. + cosmos.gov.v1beta1.WeightedVoteOption: + type: object + properties: + option: + type: string + enum: + - VOTE_OPTION_UNSPECIFIED + - VOTE_OPTION_YES + - VOTE_OPTION_ABSTAIN + - VOTE_OPTION_NO + - VOTE_OPTION_NO_WITH_VETO + default: VOTE_OPTION_UNSPECIFIED + description: >- + VoteOption enumerates the valid vote options for a given governance + proposal. - (`n` is set by the staking module's `historical_entries` parameter). - cosmos.staking.v1beta1.Params: + - VOTE_OPTION_UNSPECIFIED: VOTE_OPTION_UNSPECIFIED defines a no-op vote option. + - VOTE_OPTION_YES: VOTE_OPTION_YES defines a yes vote option. + - VOTE_OPTION_ABSTAIN: VOTE_OPTION_ABSTAIN defines an abstain vote option. + - VOTE_OPTION_NO: VOTE_OPTION_NO defines a no vote option. + - VOTE_OPTION_NO_WITH_VETO: VOTE_OPTION_NO_WITH_VETO defines a no with veto vote option. + weight: + type: string + description: WeightedVoteOption defines a unit of vote for vote split. + cosmos.mint.v1beta1.Params: + type: object + properties: + mint_denom: + type: string + title: type of coin to mint + inflation_rate_change: + type: string + title: maximum annual change in inflation rate + inflation_max: + type: string + title: maximum inflation rate + inflation_min: + type: string + title: minimum inflation rate + goal_bonded: + type: string + title: goal of percent bonded atoms + blocks_per_year: + type: string + format: uint64 + title: expected blocks per year + description: Params holds parameters for the mint module. + cosmos.mint.v1beta1.QueryAnnualProvisionsResponse: + type: object + properties: + annual_provisions: + type: string + format: byte + description: annual_provisions is the current minting annual provisions value. + description: |- + QueryAnnualProvisionsResponse is the response type for the + Query/AnnualProvisions RPC method. + cosmos.mint.v1beta1.QueryInflationResponse: + type: object + properties: + inflation: + type: string + format: byte + description: inflation is the current minting inflation value. + description: |- + QueryInflationResponse is the response type for the Query/Inflation RPC + method. + cosmos.mint.v1beta1.QueryParamsResponse: + type: object + properties: + params: + description: params defines the parameters of the module. + type: object + properties: + mint_denom: + type: string + title: type of coin to mint + inflation_rate_change: + type: string + title: maximum annual change in inflation rate + inflation_max: + type: string + title: maximum inflation rate + inflation_min: + type: string + title: minimum inflation rate + goal_bonded: + type: string + title: goal of percent bonded atoms + blocks_per_year: + type: string + format: uint64 + title: expected blocks per year + description: QueryParamsResponse is the response type for the Query/Params RPC method. + cosmos.params.v1beta1.ParamChange: + type: object + properties: + subspace: + type: string + key: + type: string + value: + type: string + description: |- + ParamChange defines an individual parameter change, for use in + ParameterChangeProposal. + cosmos.params.v1beta1.QueryParamsResponse: type: object properties: - unbonding_time: + param: + description: param defines the queried parameter. + type: object + properties: + subspace: + type: string + key: + type: string + value: + type: string + description: QueryParamsResponse is response type for the Query/Params RPC method. + cosmos.slashing.v1beta1.Params: + type: object + properties: + signed_blocks_window: type: string - max_validators: - type: integer - format: int64 - max_entries: - type: integer format: int64 - historical_entries: - type: integer - format: int64 - bond_denom: + min_signed_per_window: type: string - description: Params defines the parameters for the staking module. - cosmos.staking.v1beta1.Pool: - type: object - properties: - not_bonded_tokens: + format: byte + downtime_jail_duration: type: string - bonded_tokens: + slash_fraction_double_sign: type: string - description: |- - Pool is used for tracking bonded and not-bonded token supply of the bond - denomination. - cosmos.staking.v1beta1.QueryDelegationResponse: + format: byte + slash_fraction_downtime: + type: string + format: byte + description: Params represents the parameters used for by the slashing module. + cosmos.slashing.v1beta1.QueryParamsResponse: type: object properties: - delegation_response: - description: delegation_responses defines the delegation info of a delegation. + params: type: object properties: - delegation: - type: object - properties: - delegator_address: - type: string - validator_address: - type: string - shares: - type: string + signed_blocks_window: + type: string + format: int64 + min_signed_per_window: + type: string + format: byte + downtime_jail_duration: + type: string + slash_fraction_double_sign: + type: string + format: byte + slash_fraction_downtime: + type: string + format: byte + description: Params represents the parameters used for by the slashing module. + title: QueryParamsResponse is the response type for the Query/Params RPC method + cosmos.slashing.v1beta1.QuerySigningInfoResponse: + type: object + properties: + val_signing_info: + type: object + properties: + address: + type: string + start_height: + type: string + format: int64 + title: Height at which validator was first a candidate OR was unjailed + index_offset: + type: string + format: int64 description: >- - Delegation represents the bond with tokens held by an account. It - is + Index which is incremented each time the validator was a bonded - owned by one delegator, and is associated with the voting power of - one + in a block and may have signed a precommit or not. This in + conjunction with the - validator. - balance: - type: object - properties: - denom: - type: string - amount: - type: string + `SignedBlocksWindow` param determines the index in the + `MissedBlocksBitArray`. + jailed_until: + type: string + format: date-time description: >- - Coin defines a token with a denomination and an amount. + Timestamp until which the validator is jailed due to liveness + downtime. + tombstoned: + type: boolean + format: boolean + description: >- + Whether or not a validator has been tombstoned (killed out of + validator set). It is set + once the validator commits an equivocation or for any other + configured misbehiavor. + missed_blocks_counter: + type: string + format: int64 + description: >- + A counter kept to avoid unnecessary array reads. - NOTE: The amount field is an Int which implements the custom - method + Note that `Sum(MissedBlocksBitArray)` always equals + `MissedBlocksCounter`. + description: >- + ValidatorSigningInfo defines a validator's signing info for monitoring + their - signatures required by gogoproto. - description: >- - QueryDelegationResponse is response type for the Query/Delegation RPC - method. - cosmos.staking.v1beta1.QueryDelegatorDelegationsResponse: + liveness activity. + title: val_signing_info is the signing info of requested val cons address + title: >- + QuerySigningInfoResponse is the response type for the Query/SigningInfo + RPC + + method + cosmos.slashing.v1beta1.QuerySigningInfosResponse: type: object properties: - delegation_responses: + info: type: array items: type: object properties: - delegation: - type: object - properties: - delegator_address: - type: string - validator_address: - type: string - shares: - type: string + address: + type: string + start_height: + type: string + format: int64 + title: Height at which validator was first a candidate OR was unjailed + index_offset: + type: string + format: int64 description: >- - Delegation represents the bond with tokens held by an account. - It is + Index which is incremented each time the validator was a bonded - owned by one delegator, and is associated with the voting power - of one + in a block and may have signed a precommit or not. This in + conjunction with the - validator. - balance: - type: object - properties: - denom: - type: string - amount: - type: string + `SignedBlocksWindow` param determines the index in the + `MissedBlocksBitArray`. + jailed_until: + type: string + format: date-time description: >- - Coin defines a token with a denomination and an amount. - + Timestamp until which the validator is jailed due to liveness + downtime. + tombstoned: + type: boolean + format: boolean + description: >- + Whether or not a validator has been tombstoned (killed out of + validator set). It is set - NOTE: The amount field is an Int which implements the custom - method + once the validator commits an equivocation or for any other + configured misbehiavor. + missed_blocks_counter: + type: string + format: int64 + description: >- + A counter kept to avoid unnecessary array reads. - signatures required by gogoproto. + Note that `Sum(MissedBlocksBitArray)` always equals + `MissedBlocksCounter`. description: >- - DelegationResponse is equivalent to Delegation except that it - contains a + ValidatorSigningInfo defines a validator's signing info for + monitoring their - balance in addition to shares which is more suitable for client - responses. - description: delegation_responses defines all the delegations' info of a delegator. + liveness activity. + title: info is the signing info of all validators pagination: - description: pagination defines the pagination in the response. type: object properties: next_key: @@ -33647,316 +36745,291 @@ definitions: PageRequest.count_total was set, its value is undefined otherwise - description: |- - QueryDelegatorDelegationsResponse is response type for the - Query/DelegatorDelegations RPC method. - cosmos.staking.v1beta1.QueryDelegatorUnbondingDelegationsResponse: - type: object - properties: - unbonding_responses: - type: array - items: - type: object - properties: - delegator_address: - type: string - validator_address: - type: string - entries: - type: array - items: - type: object - properties: - creation_height: - type: string - format: int64 - completion_time: - type: string - format: date-time - initial_balance: - type: string - balance: - type: string - description: >- - UnbondingDelegationEntry defines an unbonding object with - relevant metadata. - description: >- - UnbondingDelegation stores all of a single delegator's unbonding - bonds + description: |- + PageResponse is to be embedded in gRPC response messages where the + corresponding request message has used PageRequest. - for a single validator in an time-ordered list. - pagination: - description: pagination defines the pagination in the response. - type: object - properties: - next_key: - type: string - format: byte - title: |- - next_key is the key to be passed to PageRequest.key to - query the next page most efficiently - total: - type: string - format: uint64 - title: >- - total is total number of results available if - PageRequest.count_total + message SomeResponse { + repeated Bar results = 1; + PageResponse page = 2; + } + title: >- + QuerySigningInfosResponse is the response type for the Query/SigningInfos + RPC - was set, its value is undefined otherwise - description: |- - QueryUnbondingDelegatorDelegationsResponse is response type for the - Query/UnbondingDelegatorDelegations RPC method. - cosmos.staking.v1beta1.QueryDelegatorValidatorResponse: + method + cosmos.slashing.v1beta1.ValidatorSigningInfo: type: object properties: - validator: - description: validator defines the the validator info. - type: object - properties: - operator_address: - type: string - consensus_pubkey: - type: object - properties: - type_url: - type: string - description: >- - A URL/resource name that uniquely identifies the type of the - serialized - - protocol buffer message. This string must contain at least - - one "/" character. The last segment of the URL's path must - represent - - the fully qualified name of the type (as in - - `path/google.protobuf.Duration`). The name should be in a - canonical form - - (e.g., leading "." is not accepted). - - - In practice, teams usually precompile into the binary all - types that they - - expect it to use in the context of Any. However, for URLs - which use the - - scheme `http`, `https`, or no scheme, one can optionally set - up a type - - server that maps type URLs to message definitions as follows: - - - * If no scheme is provided, `https` is assumed. - - * An HTTP GET on the URL must yield a [google.protobuf.Type][] - value in binary format, or produce an error. - * Applications are allowed to cache lookup results based on - the - URL, or have them precompiled into a binary to avoid any - lookup. Therefore, binary compatibility needs to be preserved - on changes to types. (Use versioned type names to manage - breaking changes.) + address: + type: string + start_height: + type: string + format: int64 + title: Height at which validator was first a candidate OR was unjailed + index_offset: + type: string + format: int64 + description: >- + Index which is incremented each time the validator was a bonded - Note: this functionality is not currently available in the - official + in a block and may have signed a precommit or not. This in conjunction + with the - protobuf release, and it is not used for type URLs beginning - with + `SignedBlocksWindow` param determines the index in the + `MissedBlocksBitArray`. + jailed_until: + type: string + format: date-time + description: >- + Timestamp until which the validator is jailed due to liveness + downtime. + tombstoned: + type: boolean + format: boolean + description: >- + Whether or not a validator has been tombstoned (killed out of + validator set). It is set - type.googleapis.com. + once the validator commits an equivocation or for any other configured + misbehiavor. + missed_blocks_counter: + type: string + format: int64 + description: >- + A counter kept to avoid unnecessary array reads. + Note that `Sum(MissedBlocksBitArray)` always equals + `MissedBlocksCounter`. + description: >- + ValidatorSigningInfo defines a validator's signing info for monitoring + their - Schemes other than `http`, `https` (or the empty scheme) might - be + liveness activity. + cosmos.staking.v1beta1.BondStatus: + type: string + enum: + - BOND_STATUS_UNSPECIFIED + - BOND_STATUS_UNBONDED + - BOND_STATUS_UNBONDING + - BOND_STATUS_BONDED + default: BOND_STATUS_UNSPECIFIED + description: |- + BondStatus is the status of a validator. - used with implementation specific semantics. - value: - type: string - format: byte - description: >- - Must be a valid serialized protocol buffer of the above - specified type. + - BOND_STATUS_UNSPECIFIED: UNSPECIFIED defines an invalid validator status. + - BOND_STATUS_UNBONDED: UNBONDED defines a validator that is not bonded. + - BOND_STATUS_UNBONDING: UNBONDING defines a validator that is unbonding. + - BOND_STATUS_BONDED: BONDED defines a validator that is bonded. + cosmos.staking.v1beta1.Commission: + type: object + properties: + commission_rates: + description: >- + commission_rates defines the initial commission rates to be used for + creating a validator. + type: object + properties: + rate: + type: string + description: 'rate is the commission rate charged to delegators, as a fraction.' + max_rate: + type: string description: >- - `Any` contains an arbitrary serialized protocol buffer message - along with a - - URL that describes the type of the serialized message. - - - Protobuf library provides support to pack/unpack Any values in the - form - - of utility functions or additional generated methods of the Any - type. - - - Example 1: Pack and unpack a message in C++. - - Foo foo = ...; - Any any; - any.PackFrom(foo); - ... - if (any.UnpackTo(&foo)) { - ... - } - - Example 2: Pack and unpack a message in Java. - - Foo foo = ...; - Any any = Any.pack(foo); - ... - if (any.is(Foo.class)) { - foo = any.unpack(Foo.class); - } - - Example 3: Pack and unpack a message in Python. - - foo = Foo(...) - any = Any() - any.Pack(foo) - ... - if any.Is(Foo.DESCRIPTOR): - any.Unpack(foo) - ... - - Example 4: Pack and unpack a message in Go - - foo := &pb.Foo{...} - any, err := ptypes.MarshalAny(foo) - ... - foo := &pb.Foo{} - if err := ptypes.UnmarshalAny(any, foo); err != nil { - ... - } - - The pack methods provided by protobuf library will by default use - - 'type.googleapis.com/full.type.name' as the type URL and the - unpack - - methods only use the fully qualified type name after the last '/' - - in the type URL, for example "foo.bar.com/x/y.z" will yield type - - name "y.z". - - - - JSON - - ==== - - The JSON representation of an `Any` value uses the regular - - representation of the deserialized, embedded message, with an - - additional field `@type` which contains the type URL. Example: - - package google.profile; - message Person { - string first_name = 1; - string last_name = 2; - } - - { - "@type": "type.googleapis.com/google.profile.Person", - "firstName": , - "lastName": - } - - If the embedded message type is well-known and has a custom JSON - - representation, that representation will be embedded adding a - field - - `value` which holds the custom JSON in addition to the `@type` - - field. Example (for message [google.protobuf.Duration][]): + max_rate defines the maximum commission rate which validator can + ever charge, as a fraction. + max_change_rate: + type: string + description: >- + max_change_rate defines the maximum daily increase of the + validator commission, as a fraction. + update_time: + type: string + format: date-time + description: update_time is the last time the commission rate was changed. + description: Commission defines commission parameters for a given validator. + cosmos.staking.v1beta1.CommissionRates: + type: object + properties: + rate: + type: string + description: 'rate is the commission rate charged to delegators, as a fraction.' + max_rate: + type: string + description: >- + max_rate defines the maximum commission rate which validator can ever + charge, as a fraction. + max_change_rate: + type: string + description: >- + max_change_rate defines the maximum daily increase of the validator + commission, as a fraction. + description: >- + CommissionRates defines the initial commission rates to be used for + creating - { - "@type": "type.googleapis.com/google.protobuf.Duration", - "value": "1.212s" - } - jailed: - type: boolean - status: + a validator. + cosmos.staking.v1beta1.Delegation: + type: object + properties: + delegator_address: + type: string + description: delegator_address is the bech32-encoded address of the delegator. + validator_address: + type: string + description: validator_address is the bech32-encoded address of the validator. + shares: + type: string + description: shares define the delegation shares received. + description: |- + Delegation represents the bond with tokens held by an account. It is + owned by one delegator, and is associated with the voting power of one + validator. + cosmos.staking.v1beta1.DelegationResponse: + type: object + properties: + delegation: + type: object + properties: + delegator_address: type: string - enum: - - BOND_STATUS_UNSPECIFIED - - BOND_STATUS_UNBONDED - - BOND_STATUS_UNBONDING - - BOND_STATUS_BONDED - default: BOND_STATUS_UNSPECIFIED - description: |- - BondStatus is the status of a validator. - - - BOND_STATUS_UNSPECIFIED: UNSPECIFIED defines an invalid validator status. - - BOND_STATUS_UNBONDED: UNBONDED defines a validator that is not bonded. - - BOND_STATUS_UNBONDING: UNBONDING defines a validator that is unbonding. - - BOND_STATUS_BONDED: BONDED defines a validator that is bonded. - tokens: + description: delegator_address is the bech32-encoded address of the delegator. + validator_address: type: string - delegator_shares: + description: validator_address is the bech32-encoded address of the validator. + shares: type: string - description: + description: shares define the delegation shares received. + description: |- + Delegation represents the bond with tokens held by an account. It is + owned by one delegator, and is associated with the voting power of one + validator. + balance: + type: object + properties: + denom: + type: string + amount: + type: string + description: |- + Coin defines a token with a denomination and an amount. + + NOTE: The amount field is an Int which implements the custom method + signatures required by gogoproto. + description: |- + DelegationResponse is equivalent to Delegation except that it contains a + balance in addition to shares which is more suitable for client responses. + cosmos.staking.v1beta1.Description: + type: object + properties: + moniker: + type: string + description: moniker defines a human-readable name for the validator. + identity: + type: string + description: >- + identity defines an optional identity signature (ex. UPort or + Keybase). + website: + type: string + description: website defines an optional website link. + security_contact: + type: string + description: security_contact defines an optional email for security contact. + details: + type: string + description: details define other optional details. + description: Description defines a validator description. + cosmos.staking.v1beta1.HistoricalInfo: + type: object + properties: + header: + type: object + properties: + version: + title: basic block info type: object properties: - moniker: - type: string - identity: - type: string - website: - type: string - security_contact: + block: type: string - details: + format: uint64 + app: type: string - description: Description defines a validator description. - unbonding_height: + format: uint64 + description: >- + Consensus captures the consensus rules for processing a block in + the blockchain, + + including all blockchain data structures and the rules of the + application's + + state transition machine. + chain_id: + type: string + height: type: string format: int64 - unbonding_time: + time: type: string format: date-time - commission: + last_block_id: + title: prev block info type: object properties: - commission_rates: + hash: + type: string + format: byte + part_set_header: type: object properties: - rate: - type: string - max_rate: - type: string - max_change_rate: + total: + type: integer + format: int64 + hash: type: string - description: >- - CommissionRates defines the initial commission rates to be - used for creating - - a validator. - update_time: - type: string - format: date-time - description: Commission defines commission parameters for a given validator. - min_self_delegation: + format: byte + title: PartsetHeader + last_commit_hash: type: string - description: |- - QueryDelegatorValidatorResponse response type for the - Query/DelegatorValidator RPC method. - cosmos.staking.v1beta1.QueryDelegatorValidatorsResponse: - type: object - properties: - validators: + format: byte + title: hashes of block data + data_hash: + type: string + format: byte + validators_hash: + type: string + format: byte + title: hashes from the app output from the prev block + next_validators_hash: + type: string + format: byte + consensus_hash: + type: string + format: byte + app_hash: + type: string + format: byte + last_results_hash: + type: string + format: byte + evidence_hash: + type: string + format: byte + title: consensus info + proposer_address: + type: string + format: byte + description: Header defines the structure of a Tendermint block header. + valset: type: array items: type: object properties: operator_address: type: string + description: >- + operator_address defines the address of the validator's + operator; bech encoded in JSON. consensus_pubkey: type: object properties: @@ -34111,657 +37184,240 @@ definitions: "@type": "type.googleapis.com/google.profile.Person", "firstName": , "lastName": - } - - If the embedded message type is well-known and has a custom JSON - - representation, that representation will be embedded adding a - field - - `value` which holds the custom JSON in addition to the `@type` - - field. Example (for message [google.protobuf.Duration][]): - - { - "@type": "type.googleapis.com/google.protobuf.Duration", - "value": "1.212s" - } - jailed: - type: boolean - status: - type: string - enum: - - BOND_STATUS_UNSPECIFIED - - BOND_STATUS_UNBONDED - - BOND_STATUS_UNBONDING - - BOND_STATUS_BONDED - default: BOND_STATUS_UNSPECIFIED - description: |- - BondStatus is the status of a validator. - - - BOND_STATUS_UNSPECIFIED: UNSPECIFIED defines an invalid validator status. - - BOND_STATUS_UNBONDED: UNBONDED defines a validator that is not bonded. - - BOND_STATUS_UNBONDING: UNBONDING defines a validator that is unbonding. - - BOND_STATUS_BONDED: BONDED defines a validator that is bonded. - tokens: - type: string - delegator_shares: - type: string - description: - type: object - properties: - moniker: - type: string - identity: - type: string - website: - type: string - security_contact: - type: string - details: - type: string - description: Description defines a validator description. - unbonding_height: - type: string - format: int64 - unbonding_time: - type: string - format: date-time - commission: - type: object - properties: - commission_rates: - type: object - properties: - rate: - type: string - max_rate: - type: string - max_change_rate: - type: string - description: >- - CommissionRates defines the initial commission rates to be - used for creating - - a validator. - update_time: - type: string - format: date-time - description: Commission defines commission parameters for a given validator. - min_self_delegation: - type: string - description: >- - Validator defines a validator, together with the total amount of the - - Validator's bond shares and their exchange rate to coins. Slashing - results in - - a decrease in the exchange rate, allowing correct calculation of - future - - undelegations without iterating over delegators. When coins are - delegated to - - this validator, the validator is credited with a delegation whose - number of - - bond shares is based on the amount of coins delegated divided by the - current - - exchange rate. Voting power can be calculated as total bonded shares - - multiplied by exchange rate. - description: validators defines the the validators' info of a delegator. - pagination: - description: pagination defines the pagination in the response. - type: object - properties: - next_key: - type: string - format: byte - title: |- - next_key is the key to be passed to PageRequest.key to - query the next page most efficiently - total: - type: string - format: uint64 - title: >- - total is total number of results available if - PageRequest.count_total - - was set, its value is undefined otherwise - description: |- - QueryDelegatorValidatorsResponse is response type for the - Query/DelegatorValidators RPC method. - cosmos.staking.v1beta1.QueryHistoricalInfoResponse: - type: object - properties: - hist: - description: hist defines the historical info at the given height. - type: object - properties: - header: - type: object - properties: - version: - title: basic block info - type: object - properties: - block: - type: string - format: uint64 - app: - type: string - format: uint64 - description: >- - Consensus captures the consensus rules for processing a block - in the blockchain, - - including all blockchain data structures and the rules of the - application's - - state transition machine. - chain_id: - type: string - height: - type: string - format: int64 - time: - type: string - format: date-time - last_block_id: - title: prev block info - type: object - properties: - hash: - type: string - format: byte - part_set_header: - type: object - properties: - total: - type: integer - format: int64 - hash: - type: string - format: byte - title: PartsetHeader - last_commit_hash: - type: string - format: byte - title: hashes of block data - data_hash: - type: string - format: byte - validators_hash: - type: string - format: byte - title: hashes from the app output from the prev block - next_validators_hash: - type: string - format: byte - consensus_hash: - type: string - format: byte - app_hash: - type: string - format: byte - last_results_hash: - type: string - format: byte - evidence_hash: - type: string - format: byte - title: consensus info - proposer_address: - type: string - format: byte - description: Header defines the structure of a Tendermint block header. - valset: - type: array - items: - type: object - properties: - operator_address: - type: string - consensus_pubkey: - type: object - properties: - type_url: - type: string - description: >- - A URL/resource name that uniquely identifies the type of - the serialized - - protocol buffer message. This string must contain at - least - - one "/" character. The last segment of the URL's path - must represent - - the fully qualified name of the type (as in - - `path/google.protobuf.Duration`). The name should be in - a canonical form - - (e.g., leading "." is not accepted). - - - In practice, teams usually precompile into the binary - all types that they - - expect it to use in the context of Any. However, for - URLs which use the - - scheme `http`, `https`, or no scheme, one can optionally - set up a type - - server that maps type URLs to message definitions as - follows: - - - * If no scheme is provided, `https` is assumed. - - * An HTTP GET on the URL must yield a - [google.protobuf.Type][] - value in binary format, or produce an error. - * Applications are allowed to cache lookup results based - on the - URL, or have them precompiled into a binary to avoid any - lookup. Therefore, binary compatibility needs to be preserved - on changes to types. (Use versioned type names to manage - breaking changes.) - - Note: this functionality is not currently available in - the official - - protobuf release, and it is not used for type URLs - beginning with - - type.googleapis.com. - - - Schemes other than `http`, `https` (or the empty scheme) - might be - - used with implementation specific semantics. - value: - type: string - format: byte - description: >- - Must be a valid serialized protocol buffer of the above - specified type. - description: >- - `Any` contains an arbitrary serialized protocol buffer - message along with a - - URL that describes the type of the serialized message. - - - Protobuf library provides support to pack/unpack Any values - in the form - - of utility functions or additional generated methods of the - Any type. - - - Example 1: Pack and unpack a message in C++. - - Foo foo = ...; - Any any; - any.PackFrom(foo); - ... - if (any.UnpackTo(&foo)) { - ... - } - - Example 2: Pack and unpack a message in Java. - - Foo foo = ...; - Any any = Any.pack(foo); - ... - if (any.is(Foo.class)) { - foo = any.unpack(Foo.class); - } - - Example 3: Pack and unpack a message in Python. - - foo = Foo(...) - any = Any() - any.Pack(foo) - ... - if any.Is(Foo.DESCRIPTOR): - any.Unpack(foo) - ... - - Example 4: Pack and unpack a message in Go - - foo := &pb.Foo{...} - any, err := ptypes.MarshalAny(foo) - ... - foo := &pb.Foo{} - if err := ptypes.UnmarshalAny(any, foo); err != nil { - ... - } - - The pack methods provided by protobuf library will by - default use - - 'type.googleapis.com/full.type.name' as the type URL and the - unpack - - methods only use the fully qualified type name after the - last '/' - - in the type URL, for example "foo.bar.com/x/y.z" will yield - type - - name "y.z". - - - - JSON - - ==== - - The JSON representation of an `Any` value uses the regular - - representation of the deserialized, embedded message, with - an - - additional field `@type` which contains the type URL. - Example: - - package google.profile; - message Person { - string first_name = 1; - string last_name = 2; - } - - { - "@type": "type.googleapis.com/google.profile.Person", - "firstName": , - "lastName": - } + } - If the embedded message type is well-known and has a custom - JSON + If the embedded message type is well-known and has a custom JSON - representation, that representation will be embedded adding - a field + representation, that representation will be embedded adding a + field - `value` which holds the custom JSON in addition to the - `@type` + `value` which holds the custom JSON in addition to the `@type` - field. Example (for message [google.protobuf.Duration][]): + field. Example (for message [google.protobuf.Duration][]): - { - "@type": "type.googleapis.com/google.protobuf.Duration", - "value": "1.212s" - } - jailed: - type: boolean - status: + { + "@type": "type.googleapis.com/google.protobuf.Duration", + "value": "1.212s" + } + jailed: + type: boolean + format: boolean + description: >- + jailed defined whether the validator has been jailed from bonded + status or not. + status: + description: status is the validator status (bonded/unbonding/unbonded). + type: string + enum: + - BOND_STATUS_UNSPECIFIED + - BOND_STATUS_UNBONDED + - BOND_STATUS_UNBONDING + - BOND_STATUS_BONDED + default: BOND_STATUS_UNSPECIFIED + tokens: + type: string + description: tokens define the delegated tokens (incl. self-delegation). + delegator_shares: + type: string + description: >- + delegator_shares defines total shares issued to a validator's + delegators. + description: + description: description defines the description terms for the validator. + type: object + properties: + moniker: type: string - enum: - - BOND_STATUS_UNSPECIFIED - - BOND_STATUS_UNBONDED - - BOND_STATUS_UNBONDING - - BOND_STATUS_BONDED - default: BOND_STATUS_UNSPECIFIED - description: |- - BondStatus is the status of a validator. - - - BOND_STATUS_UNSPECIFIED: UNSPECIFIED defines an invalid validator status. - - BOND_STATUS_UNBONDED: UNBONDED defines a validator that is not bonded. - - BOND_STATUS_UNBONDING: UNBONDING defines a validator that is unbonding. - - BOND_STATUS_BONDED: BONDED defines a validator that is bonded. - tokens: + description: moniker defines a human-readable name for the validator. + identity: type: string - delegator_shares: + description: >- + identity defines an optional identity signature (ex. UPort + or Keybase). + website: type: string - description: + description: website defines an optional website link. + security_contact: + type: string + description: >- + security_contact defines an optional email for security + contact. + details: + type: string + description: details define other optional details. + unbonding_height: + type: string + format: int64 + description: >- + unbonding_height defines, if unbonding, the height at which this + validator has begun unbonding. + unbonding_time: + type: string + format: date-time + description: >- + unbonding_time defines, if unbonding, the min time for the + validator to complete unbonding. + commission: + description: commission defines the commission parameters. + type: object + properties: + commission_rates: + description: >- + commission_rates defines the initial commission rates to be + used for creating a validator. type: object properties: - moniker: - type: string - identity: - type: string - website: + rate: type: string - security_contact: + description: >- + rate is the commission rate charged to delegators, as a + fraction. + max_rate: type: string - details: + description: >- + max_rate defines the maximum commission rate which + validator can ever charge, as a fraction. + max_change_rate: type: string - description: Description defines a validator description. - unbonding_height: - type: string - format: int64 - unbonding_time: + description: >- + max_change_rate defines the maximum daily increase of + the validator commission, as a fraction. + update_time: type: string format: date-time - commission: - type: object - properties: - commission_rates: - type: object - properties: - rate: - type: string - max_rate: - type: string - max_change_rate: - type: string - description: >- - CommissionRates defines the initial commission rates to - be used for creating - - a validator. - update_time: - type: string - format: date-time description: >- - Commission defines commission parameters for a given - validator. - min_self_delegation: - type: string + update_time is the last time the commission rate was + changed. + min_self_delegation: + type: string description: >- - Validator defines a validator, together with the total amount of - the + min_self_delegation is the validator's self declared minimum + self delegation. + description: >- + Validator defines a validator, together with the total amount of the - Validator's bond shares and their exchange rate to coins. - Slashing results in + Validator's bond shares and their exchange rate to coins. Slashing + results in - a decrease in the exchange rate, allowing correct calculation of - future + a decrease in the exchange rate, allowing correct calculation of + future - undelegations without iterating over delegators. When coins are - delegated to + undelegations without iterating over delegators. When coins are + delegated to - this validator, the validator is credited with a delegation - whose number of + this validator, the validator is credited with a delegation whose + number of - bond shares is based on the amount of coins delegated divided by - the current + bond shares is based on the amount of coins delegated divided by the + current - exchange rate. Voting power can be calculated as total bonded - shares + exchange rate. Voting power can be calculated as total bonded shares - multiplied by exchange rate. + multiplied by exchange rate. description: >- - QueryHistoricalInfoResponse is response type for the Query/HistoricalInfo - RPC + HistoricalInfo contains header and validator information for a given + block. - method. - cosmos.staking.v1beta1.QueryParamsResponse: + It is stored as part of staking module's state, which persists the `n` + most + + recent HistoricalInfo + + (`n` is set by the staking module's `historical_entries` parameter). + cosmos.staking.v1beta1.Params: type: object properties: - params: - description: params holds all the parameters of this module. - type: object - properties: - unbonding_time: - type: string - max_validators: - type: integer - format: int64 - max_entries: - type: integer - format: int64 - historical_entries: - type: integer - format: int64 - bond_denom: - type: string - description: QueryParamsResponse is response type for the Query/Params RPC method. - cosmos.staking.v1beta1.QueryPoolResponse: + unbonding_time: + type: string + description: unbonding_time is the time duration of unbonding. + max_validators: + type: integer + format: int64 + description: max_validators is the maximum number of validators. + max_entries: + type: integer + format: int64 + description: >- + max_entries is the max entries for either unbonding delegation or + redelegation (per pair/trio). + historical_entries: + type: integer + format: int64 + description: historical_entries is the number of historical entries to persist. + bond_denom: + type: string + description: bond_denom defines the bondable coin denomination. + power_reduction: + type: string + title: >- + power_reduction is the amount of staking tokens required for 1 unit of + consensus-engine power + description: Params defines the parameters for the staking module. + cosmos.staking.v1beta1.Pool: type: object properties: - pool: - description: pool defines the pool info. - type: object - properties: - not_bonded_tokens: - type: string - bonded_tokens: - type: string - description: QueryPoolResponse is response type for the Query/Pool RPC method. - cosmos.staking.v1beta1.QueryRedelegationsResponse: + not_bonded_tokens: + type: string + bonded_tokens: + type: string + description: |- + Pool is used for tracking bonded and not-bonded token supply of the bond + denomination. + cosmos.staking.v1beta1.QueryDelegationResponse: type: object properties: - redelegation_responses: - type: array - items: - type: object - properties: - redelegation: - type: object - properties: - delegator_address: - type: string - validator_src_address: - type: string - validator_dst_address: - type: string - entries: - type: array - items: - type: object - properties: - creation_height: - type: string - format: int64 - completion_time: - type: string - format: date-time - initial_balance: - type: string - shares_dst: - type: string - description: >- - RedelegationEntry defines a redelegation object with - relevant metadata. - description: >- - Redelegation contains the list of a particular delegator's - redelegating bonds - - from a particular source validator to a particular destination - validator. - entries: - type: array - items: - type: object - properties: - redelegation_entry: - type: object - properties: - creation_height: - type: string - format: int64 - completion_time: - type: string - format: date-time - initial_balance: - type: string - shares_dst: - type: string - description: >- - RedelegationEntry defines a redelegation object with - relevant metadata. - balance: - type: string + delegation_response: + type: object + properties: + delegation: + type: object + properties: + delegator_address: + type: string description: >- - RedelegationEntryResponse is equivalent to a RedelegationEntry - except that it + delegator_address is the bech32-encoded address of the + delegator. + validator_address: + type: string + description: >- + validator_address is the bech32-encoded address of the + validator. + shares: + type: string + description: shares define the delegation shares received. + description: >- + Delegation represents the bond with tokens held by an account. It + is - contains a balance in addition to shares which is more - suitable for client + owned by one delegator, and is associated with the voting power of + one - responses. - description: >- - RedelegationResponse is equivalent to a Redelegation except that its - entries + validator. + balance: + type: object + properties: + denom: + type: string + amount: + type: string + description: >- + Coin defines a token with a denomination and an amount. - contain a balance in addition to shares which is more suitable for - client - responses. - pagination: - description: pagination defines the pagination in the response. - type: object - properties: - next_key: - type: string - format: byte - title: |- - next_key is the key to be passed to PageRequest.key to - query the next page most efficiently - total: - type: string - format: uint64 - title: >- - total is total number of results available if - PageRequest.count_total + NOTE: The amount field is an Int which implements the custom + method - was set, its value is undefined otherwise - description: >- - QueryRedelegationsResponse is response type for the Query/Redelegations - RPC + signatures required by gogoproto. + description: >- + DelegationResponse is equivalent to Delegation except that it contains + a + balance in addition to shares which is more suitable for client + responses. + description: >- + QueryDelegationResponse is response type for the Query/Delegation RPC method. - cosmos.staking.v1beta1.QueryUnbondingDelegationResponse: - type: object - properties: - unbond: - description: unbond defines the unbonding information of a delegation. - type: object - properties: - delegator_address: - type: string - validator_address: - type: string - entries: - type: array - items: - type: object - properties: - creation_height: - type: string - format: int64 - completion_time: - type: string - format: date-time - initial_balance: - type: string - balance: - type: string - description: >- - UnbondingDelegationEntry defines an unbonding object with - relevant metadata. - description: |- - QueryDelegationResponse is response type for the Query/UnbondingDelegation - RPC method. - cosmos.staking.v1beta1.QueryValidatorDelegationsResponse: + cosmos.staking.v1beta1.QueryDelegatorDelegationsResponse: type: object properties: delegation_responses: @@ -34774,10 +37430,17 @@ definitions: properties: delegator_address: type: string + description: >- + delegator_address is the bech32-encoded address of the + delegator. validator_address: type: string + description: >- + validator_address is the bech32-encoded address of the + validator. shares: type: string + description: shares define the delegation shares received. description: >- Delegation represents the bond with tokens held by an account. It is @@ -34807,6 +37470,7 @@ definitions: balance in addition to shares which is more suitable for client responses. + description: delegation_responses defines all the delegations' info of a delegator. pagination: description: pagination defines the pagination in the response. type: object @@ -34825,18 +37489,91 @@ definitions: PageRequest.count_total was set, its value is undefined otherwise - title: |- - QueryValidatorDelegationsResponse is response type for the - Query/ValidatorDelegations RPC method - cosmos.staking.v1beta1.QueryValidatorResponse: + description: |- + QueryDelegatorDelegationsResponse is response type for the + Query/DelegatorDelegations RPC method. + cosmos.staking.v1beta1.QueryDelegatorUnbondingDelegationsResponse: + type: object + properties: + unbonding_responses: + type: array + items: + type: object + properties: + delegator_address: + type: string + description: >- + delegator_address is the bech32-encoded address of the + delegator. + validator_address: + type: string + description: >- + validator_address is the bech32-encoded address of the + validator. + entries: + type: array + items: + type: object + properties: + creation_height: + type: string + format: int64 + description: >- + creation_height is the height which the unbonding took + place. + completion_time: + type: string + format: date-time + description: completion_time is the unix time for unbonding completion. + initial_balance: + type: string + description: >- + initial_balance defines the tokens initially scheduled to + receive at completion. + balance: + type: string + description: balance defines the tokens to receive at completion. + description: >- + UnbondingDelegationEntry defines an unbonding object with + relevant metadata. + description: entries are the unbonding delegation entries. + description: >- + UnbondingDelegation stores all of a single delegator's unbonding + bonds + + for a single validator in an time-ordered list. + pagination: + description: pagination defines the pagination in the response. + type: object + properties: + next_key: + type: string + format: byte + title: |- + next_key is the key to be passed to PageRequest.key to + query the next page most efficiently + total: + type: string + format: uint64 + title: >- + total is total number of results available if + PageRequest.count_total + + was set, its value is undefined otherwise + description: |- + QueryUnbondingDelegatorDelegationsResponse is response type for the + Query/UnbondingDelegatorDelegations RPC method. + cosmos.staking.v1beta1.QueryDelegatorValidatorResponse: type: object properties: validator: - description: validator defines the the validator info. type: object properties: operator_address: type: string + description: >- + operator_address defines the address of the validator's operator; + bech encoded in JSON. consensus_pubkey: type: object properties: @@ -35004,7 +37741,12 @@ definitions: } jailed: type: boolean + format: boolean + description: >- + jailed defined whether the validator has been jailed from bonded + status or not. status: + description: status is the validator status (bonded/unbonding/unbonded). type: string enum: - BOND_STATUS_UNSPECIFIED @@ -35012,118 +37754,108 @@ definitions: - BOND_STATUS_UNBONDING - BOND_STATUS_BONDED default: BOND_STATUS_UNSPECIFIED - description: |- - BondStatus is the status of a validator. - - - BOND_STATUS_UNSPECIFIED: UNSPECIFIED defines an invalid validator status. - - BOND_STATUS_UNBONDED: UNBONDED defines a validator that is not bonded. - - BOND_STATUS_UNBONDING: UNBONDING defines a validator that is unbonding. - - BOND_STATUS_BONDED: BONDED defines a validator that is bonded. tokens: type: string + description: tokens define the delegated tokens (incl. self-delegation). delegator_shares: type: string + description: >- + delegator_shares defines total shares issued to a validator's + delegators. description: + description: description defines the description terms for the validator. type: object properties: moniker: type: string + description: moniker defines a human-readable name for the validator. identity: type: string + description: >- + identity defines an optional identity signature (ex. UPort or + Keybase). website: type: string + description: website defines an optional website link. security_contact: type: string + description: >- + security_contact defines an optional email for security + contact. details: type: string - description: Description defines a validator description. + description: details define other optional details. unbonding_height: type: string format: int64 + description: >- + unbonding_height defines, if unbonding, the height at which this + validator has begun unbonding. unbonding_time: type: string format: date-time + description: >- + unbonding_time defines, if unbonding, the min time for the + validator to complete unbonding. commission: + description: commission defines the commission parameters. type: object properties: commission_rates: + description: >- + commission_rates defines the initial commission rates to be + used for creating a validator. type: object properties: rate: type: string + description: >- + rate is the commission rate charged to delegators, as a + fraction. max_rate: type: string + description: >- + max_rate defines the maximum commission rate which + validator can ever charge, as a fraction. max_change_rate: type: string - description: >- - CommissionRates defines the initial commission rates to be - used for creating - - a validator. + description: >- + max_change_rate defines the maximum daily increase of the + validator commission, as a fraction. update_time: - type: string - format: date-time - description: Commission defines commission parameters for a given validator. - min_self_delegation: - type: string - title: QueryValidatorResponse is response type for the Query/Validator RPC method - cosmos.staking.v1beta1.QueryValidatorUnbondingDelegationsResponse: - type: object - properties: - unbonding_responses: - type: array - items: - type: object - properties: - delegator_address: - type: string - validator_address: - type: string - entries: - type: array - items: - type: object - properties: - creation_height: - type: string - format: int64 - completion_time: - type: string - format: date-time - initial_balance: - type: string - balance: - type: string - description: >- - UnbondingDelegationEntry defines an unbonding object with - relevant metadata. - description: >- - UnbondingDelegation stores all of a single delegator's unbonding - bonds - - for a single validator in an time-ordered list. - pagination: - description: pagination defines the pagination in the response. - type: object - properties: - next_key: - type: string - format: byte - title: |- - next_key is the key to be passed to PageRequest.key to - query the next page most efficiently - total: + type: string + format: date-time + description: update_time is the last time the commission rate was changed. + min_self_delegation: type: string - format: uint64 - title: >- - total is total number of results available if - PageRequest.count_total + description: >- + min_self_delegation is the validator's self declared minimum self + delegation. + description: >- + Validator defines a validator, together with the total amount of the - was set, its value is undefined otherwise + Validator's bond shares and their exchange rate to coins. Slashing + results in + + a decrease in the exchange rate, allowing correct calculation of + future + + undelegations without iterating over delegators. When coins are + delegated to + + this validator, the validator is credited with a delegation whose + number of + + bond shares is based on the amount of coins delegated divided by the + current + + exchange rate. Voting power can be calculated as total bonded shares + + multiplied by exchange rate. description: |- - QueryValidatorUnbondingDelegationsResponse is response type for the - Query/ValidatorUnbondingDelegations RPC method. - cosmos.staking.v1beta1.QueryValidatorsResponse: + QueryDelegatorValidatorResponse response type for the + Query/DelegatorValidator RPC method. + cosmos.staking.v1beta1.QueryDelegatorValidatorsResponse: type: object properties: validators: @@ -35133,6 +37865,9 @@ definitions: properties: operator_address: type: string + description: >- + operator_address defines the address of the validator's + operator; bech encoded in JSON. consensus_pubkey: type: object properties: @@ -35304,7 +38039,12 @@ definitions: } jailed: type: boolean + format: boolean + description: >- + jailed defined whether the validator has been jailed from bonded + status or not. status: + description: status is the validator status (bonded/unbonding/unbonded). type: string enum: - BOND_STATUS_UNSPECIFIED @@ -35312,60 +38052,85 @@ definitions: - BOND_STATUS_UNBONDING - BOND_STATUS_BONDED default: BOND_STATUS_UNSPECIFIED - description: |- - BondStatus is the status of a validator. - - - BOND_STATUS_UNSPECIFIED: UNSPECIFIED defines an invalid validator status. - - BOND_STATUS_UNBONDED: UNBONDED defines a validator that is not bonded. - - BOND_STATUS_UNBONDING: UNBONDING defines a validator that is unbonding. - - BOND_STATUS_BONDED: BONDED defines a validator that is bonded. tokens: type: string + description: tokens define the delegated tokens (incl. self-delegation). delegator_shares: type: string + description: >- + delegator_shares defines total shares issued to a validator's + delegators. description: + description: description defines the description terms for the validator. type: object properties: moniker: type: string + description: moniker defines a human-readable name for the validator. identity: type: string + description: >- + identity defines an optional identity signature (ex. UPort + or Keybase). website: type: string + description: website defines an optional website link. security_contact: type: string + description: >- + security_contact defines an optional email for security + contact. details: type: string - description: Description defines a validator description. + description: details define other optional details. unbonding_height: type: string format: int64 + description: >- + unbonding_height defines, if unbonding, the height at which this + validator has begun unbonding. unbonding_time: type: string format: date-time + description: >- + unbonding_time defines, if unbonding, the min time for the + validator to complete unbonding. commission: + description: commission defines the commission parameters. type: object properties: commission_rates: + description: >- + commission_rates defines the initial commission rates to be + used for creating a validator. type: object properties: rate: type: string + description: >- + rate is the commission rate charged to delegators, as a + fraction. max_rate: type: string + description: >- + max_rate defines the maximum commission rate which + validator can ever charge, as a fraction. max_change_rate: type: string - description: >- - CommissionRates defines the initial commission rates to be - used for creating - - a validator. + description: >- + max_change_rate defines the maximum daily increase of + the validator commission, as a fraction. update_time: type: string format: date-time - description: Commission defines commission parameters for a given validator. + description: >- + update_time is the last time the commission rate was + changed. min_self_delegation: type: string + description: >- + min_self_delegation is the validator's self declared minimum + self delegation. description: >- Validator defines a validator, together with the total amount of the @@ -35375,19 +38140,590 @@ definitions: a decrease in the exchange rate, allowing correct calculation of future - undelegations without iterating over delegators. When coins are - delegated to + undelegations without iterating over delegators. When coins are + delegated to + + this validator, the validator is credited with a delegation whose + number of + + bond shares is based on the amount of coins delegated divided by the + current + + exchange rate. Voting power can be calculated as total bonded shares + + multiplied by exchange rate. + description: validators defines the the validators' info of a delegator. + pagination: + description: pagination defines the pagination in the response. + type: object + properties: + next_key: + type: string + format: byte + title: |- + next_key is the key to be passed to PageRequest.key to + query the next page most efficiently + total: + type: string + format: uint64 + title: >- + total is total number of results available if + PageRequest.count_total + + was set, its value is undefined otherwise + description: |- + QueryDelegatorValidatorsResponse is response type for the + Query/DelegatorValidators RPC method. + cosmos.staking.v1beta1.QueryHistoricalInfoResponse: + type: object + properties: + hist: + description: hist defines the historical info at the given height. + type: object + properties: + header: + type: object + properties: + version: + title: basic block info + type: object + properties: + block: + type: string + format: uint64 + app: + type: string + format: uint64 + description: >- + Consensus captures the consensus rules for processing a block + in the blockchain, + + including all blockchain data structures and the rules of the + application's + + state transition machine. + chain_id: + type: string + height: + type: string + format: int64 + time: + type: string + format: date-time + last_block_id: + title: prev block info + type: object + properties: + hash: + type: string + format: byte + part_set_header: + type: object + properties: + total: + type: integer + format: int64 + hash: + type: string + format: byte + title: PartsetHeader + last_commit_hash: + type: string + format: byte + title: hashes of block data + data_hash: + type: string + format: byte + validators_hash: + type: string + format: byte + title: hashes from the app output from the prev block + next_validators_hash: + type: string + format: byte + consensus_hash: + type: string + format: byte + app_hash: + type: string + format: byte + last_results_hash: + type: string + format: byte + evidence_hash: + type: string + format: byte + title: consensus info + proposer_address: + type: string + format: byte + description: Header defines the structure of a Tendermint block header. + valset: + type: array + items: + type: object + properties: + operator_address: + type: string + description: >- + operator_address defines the address of the validator's + operator; bech encoded in JSON. + consensus_pubkey: + type: object + properties: + type_url: + type: string + description: >- + A URL/resource name that uniquely identifies the type of + the serialized + + protocol buffer message. This string must contain at + least + + one "/" character. The last segment of the URL's path + must represent + + the fully qualified name of the type (as in + + `path/google.protobuf.Duration`). The name should be in + a canonical form + + (e.g., leading "." is not accepted). + + + In practice, teams usually precompile into the binary + all types that they + + expect it to use in the context of Any. However, for + URLs which use the + + scheme `http`, `https`, or no scheme, one can optionally + set up a type + + server that maps type URLs to message definitions as + follows: + + + * If no scheme is provided, `https` is assumed. + + * An HTTP GET on the URL must yield a + [google.protobuf.Type][] + value in binary format, or produce an error. + * Applications are allowed to cache lookup results based + on the + URL, or have them precompiled into a binary to avoid any + lookup. Therefore, binary compatibility needs to be preserved + on changes to types. (Use versioned type names to manage + breaking changes.) + + Note: this functionality is not currently available in + the official + + protobuf release, and it is not used for type URLs + beginning with + + type.googleapis.com. + + + Schemes other than `http`, `https` (or the empty scheme) + might be + + used with implementation specific semantics. + value: + type: string + format: byte + description: >- + Must be a valid serialized protocol buffer of the above + specified type. + description: >- + `Any` contains an arbitrary serialized protocol buffer + message along with a + + URL that describes the type of the serialized message. + + + Protobuf library provides support to pack/unpack Any values + in the form + + of utility functions or additional generated methods of the + Any type. + + + Example 1: Pack and unpack a message in C++. + + Foo foo = ...; + Any any; + any.PackFrom(foo); + ... + if (any.UnpackTo(&foo)) { + ... + } + + Example 2: Pack and unpack a message in Java. + + Foo foo = ...; + Any any = Any.pack(foo); + ... + if (any.is(Foo.class)) { + foo = any.unpack(Foo.class); + } + + Example 3: Pack and unpack a message in Python. + + foo = Foo(...) + any = Any() + any.Pack(foo) + ... + if any.Is(Foo.DESCRIPTOR): + any.Unpack(foo) + ... + + Example 4: Pack and unpack a message in Go + + foo := &pb.Foo{...} + any, err := ptypes.MarshalAny(foo) + ... + foo := &pb.Foo{} + if err := ptypes.UnmarshalAny(any, foo); err != nil { + ... + } + + The pack methods provided by protobuf library will by + default use + + 'type.googleapis.com/full.type.name' as the type URL and the + unpack + + methods only use the fully qualified type name after the + last '/' + + in the type URL, for example "foo.bar.com/x/y.z" will yield + type + + name "y.z". + + + + JSON + + ==== + + The JSON representation of an `Any` value uses the regular + + representation of the deserialized, embedded message, with + an + + additional field `@type` which contains the type URL. + Example: + + package google.profile; + message Person { + string first_name = 1; + string last_name = 2; + } + + { + "@type": "type.googleapis.com/google.profile.Person", + "firstName": , + "lastName": + } + + If the embedded message type is well-known and has a custom + JSON + + representation, that representation will be embedded adding + a field + + `value` which holds the custom JSON in addition to the + `@type` + + field. Example (for message [google.protobuf.Duration][]): + + { + "@type": "type.googleapis.com/google.protobuf.Duration", + "value": "1.212s" + } + jailed: + type: boolean + format: boolean + description: >- + jailed defined whether the validator has been jailed from + bonded status or not. + status: + description: status is the validator status (bonded/unbonding/unbonded). + type: string + enum: + - BOND_STATUS_UNSPECIFIED + - BOND_STATUS_UNBONDED + - BOND_STATUS_UNBONDING + - BOND_STATUS_BONDED + default: BOND_STATUS_UNSPECIFIED + tokens: + type: string + description: tokens define the delegated tokens (incl. self-delegation). + delegator_shares: + type: string + description: >- + delegator_shares defines total shares issued to a + validator's delegators. + description: + description: description defines the description terms for the validator. + type: object + properties: + moniker: + type: string + description: moniker defines a human-readable name for the validator. + identity: + type: string + description: >- + identity defines an optional identity signature (ex. + UPort or Keybase). + website: + type: string + description: website defines an optional website link. + security_contact: + type: string + description: >- + security_contact defines an optional email for security + contact. + details: + type: string + description: details define other optional details. + unbonding_height: + type: string + format: int64 + description: >- + unbonding_height defines, if unbonding, the height at which + this validator has begun unbonding. + unbonding_time: + type: string + format: date-time + description: >- + unbonding_time defines, if unbonding, the min time for the + validator to complete unbonding. + commission: + description: commission defines the commission parameters. + type: object + properties: + commission_rates: + description: >- + commission_rates defines the initial commission rates to + be used for creating a validator. + type: object + properties: + rate: + type: string + description: >- + rate is the commission rate charged to delegators, + as a fraction. + max_rate: + type: string + description: >- + max_rate defines the maximum commission rate which + validator can ever charge, as a fraction. + max_change_rate: + type: string + description: >- + max_change_rate defines the maximum daily increase + of the validator commission, as a fraction. + update_time: + type: string + format: date-time + description: >- + update_time is the last time the commission rate was + changed. + min_self_delegation: + type: string + description: >- + min_self_delegation is the validator's self declared minimum + self delegation. + description: >- + Validator defines a validator, together with the total amount of + the + + Validator's bond shares and their exchange rate to coins. + Slashing results in + + a decrease in the exchange rate, allowing correct calculation of + future + + undelegations without iterating over delegators. When coins are + delegated to + + this validator, the validator is credited with a delegation + whose number of + + bond shares is based on the amount of coins delegated divided by + the current + + exchange rate. Voting power can be calculated as total bonded + shares + + multiplied by exchange rate. + description: >- + QueryHistoricalInfoResponse is response type for the Query/HistoricalInfo + RPC + + method. + cosmos.staking.v1beta1.QueryParamsResponse: + type: object + properties: + params: + description: params holds all the parameters of this module. + type: object + properties: + unbonding_time: + type: string + description: unbonding_time is the time duration of unbonding. + max_validators: + type: integer + format: int64 + description: max_validators is the maximum number of validators. + max_entries: + type: integer + format: int64 + description: >- + max_entries is the max entries for either unbonding delegation or + redelegation (per pair/trio). + historical_entries: + type: integer + format: int64 + description: historical_entries is the number of historical entries to persist. + bond_denom: + type: string + description: bond_denom defines the bondable coin denomination. + power_reduction: + type: string + title: >- + power_reduction is the amount of staking tokens required for 1 + unit of consensus-engine power + description: QueryParamsResponse is response type for the Query/Params RPC method. + cosmos.staking.v1beta1.QueryPoolResponse: + type: object + properties: + pool: + description: pool defines the pool info. + type: object + properties: + not_bonded_tokens: + type: string + bonded_tokens: + type: string + description: QueryPoolResponse is response type for the Query/Pool RPC method. + cosmos.staking.v1beta1.QueryRedelegationsResponse: + type: object + properties: + redelegation_responses: + type: array + items: + type: object + properties: + redelegation: + type: object + properties: + delegator_address: + type: string + description: >- + delegator_address is the bech32-encoded address of the + delegator. + validator_src_address: + type: string + description: >- + validator_src_address is the validator redelegation source + operator address. + validator_dst_address: + type: string + description: >- + validator_dst_address is the validator redelegation + destination operator address. + entries: + type: array + items: + type: object + properties: + creation_height: + type: string + format: int64 + description: >- + creation_height defines the height which the + redelegation took place. + completion_time: + type: string + format: date-time + description: >- + completion_time defines the unix time for redelegation + completion. + initial_balance: + type: string + description: >- + initial_balance defines the initial balance when + redelegation started. + shares_dst: + type: string + description: >- + shares_dst is the amount of destination-validator + shares created by redelegation. + description: >- + RedelegationEntry defines a redelegation object with + relevant metadata. + description: entries are the redelegation entries. + description: >- + Redelegation contains the list of a particular delegator's + redelegating bonds + + from a particular source validator to a particular destination + validator. + entries: + type: array + items: + type: object + properties: + redelegation_entry: + type: object + properties: + creation_height: + type: string + format: int64 + description: >- + creation_height defines the height which the + redelegation took place. + completion_time: + type: string + format: date-time + description: >- + completion_time defines the unix time for redelegation + completion. + initial_balance: + type: string + description: >- + initial_balance defines the initial balance when + redelegation started. + shares_dst: + type: string + description: >- + shares_dst is the amount of destination-validator + shares created by redelegation. + description: >- + RedelegationEntry defines a redelegation object with + relevant metadata. + balance: + type: string + description: >- + RedelegationEntryResponse is equivalent to a RedelegationEntry + except that it - this validator, the validator is credited with a delegation whose - number of + contains a balance in addition to shares which is more + suitable for client - bond shares is based on the amount of coins delegated divided by the - current + responses. + description: >- + RedelegationResponse is equivalent to a Redelegation except that its + entries - exchange rate. Voting power can be calculated as total bonded shares + contain a balance in addition to shares which is more suitable for + client - multiplied by exchange rate. - description: validators contains all the queried validators. + responses. pagination: description: pagination defines the pagination in the response. type: object @@ -35406,95 +38742,23 @@ definitions: PageRequest.count_total was set, its value is undefined otherwise - title: >- - QueryValidatorsResponse is response type for the Query/Validators RPC - method - cosmos.staking.v1beta1.Redelegation: - type: object - properties: - delegator_address: - type: string - validator_src_address: - type: string - validator_dst_address: - type: string - entries: - type: array - items: - type: object - properties: - creation_height: - type: string - format: int64 - completion_time: - type: string - format: date-time - initial_balance: - type: string - shares_dst: - type: string - description: >- - RedelegationEntry defines a redelegation object with relevant - metadata. - description: >- - Redelegation contains the list of a particular delegator's redelegating - bonds - - from a particular source validator to a particular destination validator. - cosmos.staking.v1beta1.RedelegationEntry: - type: object - properties: - creation_height: - type: string - format: int64 - completion_time: - type: string - format: date-time - initial_balance: - type: string - shares_dst: - type: string - description: RedelegationEntry defines a redelegation object with relevant metadata. - cosmos.staking.v1beta1.RedelegationEntryResponse: - type: object - properties: - redelegation_entry: - type: object - properties: - creation_height: - type: string - format: int64 - completion_time: - type: string - format: date-time - initial_balance: - type: string - shares_dst: - type: string - description: >- - RedelegationEntry defines a redelegation object with relevant - metadata. - balance: - type: string description: >- - RedelegationEntryResponse is equivalent to a RedelegationEntry except that - it - - contains a balance in addition to shares which is more suitable for client + QueryRedelegationsResponse is response type for the Query/Redelegations + RPC - responses. - cosmos.staking.v1beta1.RedelegationResponse: + method. + cosmos.staking.v1beta1.QueryUnbondingDelegationResponse: type: object properties: - redelegation: + unbond: type: object properties: delegator_address: type: string - validator_src_address: - type: string - validator_dst_address: + description: delegator_address is the bech32-encoded address of the delegator. + validator_address: type: string + description: validator_address is the bech32-encoded address of the validator. entries: type: array items: @@ -35503,1328 +38767,1554 @@ definitions: creation_height: type: string format: int64 + description: >- + creation_height is the height which the unbonding took + place. completion_time: type: string format: date-time + description: completion_time is the unix time for unbonding completion. initial_balance: type: string - shares_dst: + description: >- + initial_balance defines the tokens initially scheduled to + receive at completion. + balance: type: string + description: balance defines the tokens to receive at completion. description: >- - RedelegationEntry defines a redelegation object with relevant - metadata. - description: >- - Redelegation contains the list of a particular delegator's - redelegating bonds - - from a particular source validator to a particular destination - validator. - entries: + UnbondingDelegationEntry defines an unbonding object with + relevant metadata. + description: entries are the unbonding delegation entries. + description: |- + UnbondingDelegation stores all of a single delegator's unbonding bonds + for a single validator in an time-ordered list. + description: |- + QueryDelegationResponse is response type for the Query/UnbondingDelegation + RPC method. + cosmos.staking.v1beta1.QueryValidatorDelegationsResponse: + type: object + properties: + delegation_responses: type: array items: type: object properties: - redelegation_entry: + delegation: type: object properties: - creation_height: - type: string - format: int64 - completion_time: + delegator_address: type: string - format: date-time - initial_balance: + description: >- + delegator_address is the bech32-encoded address of the + delegator. + validator_address: type: string - shares_dst: + description: >- + validator_address is the bech32-encoded address of the + validator. + shares: type: string + description: shares define the delegation shares received. description: >- - RedelegationEntry defines a redelegation object with relevant - metadata. - balance: - type: string - description: >- - RedelegationEntryResponse is equivalent to a RedelegationEntry - except that it - - contains a balance in addition to shares which is more suitable for - client - - responses. - description: >- - RedelegationResponse is equivalent to a Redelegation except that its - entries + Delegation represents the bond with tokens held by an account. + It is - contain a balance in addition to shares which is more suitable for client + owned by one delegator, and is associated with the voting power + of one - responses. - cosmos.staking.v1beta1.UnbondingDelegation: - type: object - properties: - delegator_address: - type: string - validator_address: - type: string - entries: - type: array - items: - type: object - properties: - creation_height: - type: string - format: int64 - completion_time: - type: string - format: date-time - initial_balance: - type: string + validator. balance: - type: string - description: >- - UnbondingDelegationEntry defines an unbonding object with relevant - metadata. - description: |- - UnbondingDelegation stores all of a single delegator's unbonding bonds - for a single validator in an time-ordered list. - cosmos.staking.v1beta1.UnbondingDelegationEntry: - type: object - properties: - creation_height: - type: string - format: int64 - completion_time: - type: string - format: date-time - initial_balance: - type: string - balance: - type: string - description: >- - UnbondingDelegationEntry defines an unbonding object with relevant - metadata. - cosmos.staking.v1beta1.Validator: - type: object - properties: - operator_address: - type: string - consensus_pubkey: - type: object - properties: - type_url: - type: string - description: >- - A URL/resource name that uniquely identifies the type of the - serialized - - protocol buffer message. This string must contain at least - - one "/" character. The last segment of the URL's path must - represent - - the fully qualified name of the type (as in - - `path/google.protobuf.Duration`). The name should be in a - canonical form - - (e.g., leading "." is not accepted). - - - In practice, teams usually precompile into the binary all types - that they - - expect it to use in the context of Any. However, for URLs which - use the - - scheme `http`, `https`, or no scheme, one can optionally set up a - type - - server that maps type URLs to message definitions as follows: - - - * If no scheme is provided, `https` is assumed. - - * An HTTP GET on the URL must yield a [google.protobuf.Type][] - value in binary format, or produce an error. - * Applications are allowed to cache lookup results based on the - URL, or have them precompiled into a binary to avoid any - lookup. Therefore, binary compatibility needs to be preserved - on changes to types. (Use versioned type names to manage - breaking changes.) - - Note: this functionality is not currently available in the - official - - protobuf release, and it is not used for type URLs beginning with - - type.googleapis.com. - - - Schemes other than `http`, `https` (or the empty scheme) might be - - used with implementation specific semantics. - value: - type: string - format: byte - description: >- - Must be a valid serialized protocol buffer of the above specified - type. - description: >- - `Any` contains an arbitrary serialized protocol buffer message along - with a - - URL that describes the type of the serialized message. - - - Protobuf library provides support to pack/unpack Any values in the - form - - of utility functions or additional generated methods of the Any type. - - - Example 1: Pack and unpack a message in C++. - - Foo foo = ...; - Any any; - any.PackFrom(foo); - ... - if (any.UnpackTo(&foo)) { - ... - } - - Example 2: Pack and unpack a message in Java. - - Foo foo = ...; - Any any = Any.pack(foo); - ... - if (any.is(Foo.class)) { - foo = any.unpack(Foo.class); - } - - Example 3: Pack and unpack a message in Python. - - foo = Foo(...) - any = Any() - any.Pack(foo) - ... - if any.Is(Foo.DESCRIPTOR): - any.Unpack(foo) - ... - - Example 4: Pack and unpack a message in Go - - foo := &pb.Foo{...} - any, err := ptypes.MarshalAny(foo) - ... - foo := &pb.Foo{} - if err := ptypes.UnmarshalAny(any, foo); err != nil { - ... - } - - The pack methods provided by protobuf library will by default use - - 'type.googleapis.com/full.type.name' as the type URL and the unpack - - methods only use the fully qualified type name after the last '/' - - in the type URL, for example "foo.bar.com/x/y.z" will yield type - - name "y.z". - - - - JSON - - ==== - - The JSON representation of an `Any` value uses the regular - - representation of the deserialized, embedded message, with an - - additional field `@type` which contains the type URL. Example: - - package google.profile; - message Person { - string first_name = 1; - string last_name = 2; - } - - { - "@type": "type.googleapis.com/google.profile.Person", - "firstName": , - "lastName": - } - - If the embedded message type is well-known and has a custom JSON - - representation, that representation will be embedded adding a field - - `value` which holds the custom JSON in addition to the `@type` - - field. Example (for message [google.protobuf.Duration][]): - - { - "@type": "type.googleapis.com/google.protobuf.Duration", - "value": "1.212s" - } - jailed: - type: boolean - status: - type: string - enum: - - BOND_STATUS_UNSPECIFIED - - BOND_STATUS_UNBONDED - - BOND_STATUS_UNBONDING - - BOND_STATUS_BONDED - default: BOND_STATUS_UNSPECIFIED - description: |- - BondStatus is the status of a validator. - - - BOND_STATUS_UNSPECIFIED: UNSPECIFIED defines an invalid validator status. - - BOND_STATUS_UNBONDED: UNBONDED defines a validator that is not bonded. - - BOND_STATUS_UNBONDING: UNBONDING defines a validator that is unbonding. - - BOND_STATUS_BONDED: BONDED defines a validator that is bonded. - tokens: - type: string - delegator_shares: - type: string - description: - type: object - properties: - moniker: - type: string - identity: - type: string - website: - type: string - security_contact: - type: string - details: - type: string - description: Description defines a validator description. - unbonding_height: - type: string - format: int64 - unbonding_time: - type: string - format: date-time - commission: - type: object - properties: - commission_rates: - type: object - properties: - rate: - type: string - max_rate: - type: string - max_change_rate: - type: string - description: >- - CommissionRates defines the initial commission rates to be used - for creating - - a validator. - update_time: - type: string - format: date-time - description: Commission defines commission parameters for a given validator. - min_self_delegation: - type: string - description: >- - Validator defines a validator, together with the total amount of the - - Validator's bond shares and their exchange rate to coins. Slashing results - in - - a decrease in the exchange rate, allowing correct calculation of future - - undelegations without iterating over delegators. When coins are delegated - to + type: object + properties: + denom: + type: string + amount: + type: string + description: >- + Coin defines a token with a denomination and an amount. - this validator, the validator is credited with a delegation whose number - of - bond shares is based on the amount of coins delegated divided by the - current + NOTE: The amount field is an Int which implements the custom + method - exchange rate. Voting power can be calculated as total bonded shares + signatures required by gogoproto. + description: >- + DelegationResponse is equivalent to Delegation except that it + contains a - multiplied by exchange rate. - tendermint.types.BlockID: - type: object - properties: - hash: - type: string - format: byte - part_set_header: - type: object - properties: - total: - type: integer - format: int64 - hash: - type: string - format: byte - title: PartsetHeader - title: BlockID - tendermint.types.Header: - type: object - properties: - version: - title: basic block info + balance in addition to shares which is more suitable for client + responses. + pagination: + description: pagination defines the pagination in the response. type: object properties: - block: + next_key: type: string - format: uint64 - app: + format: byte + title: |- + next_key is the key to be passed to PageRequest.key to + query the next page most efficiently + total: type: string format: uint64 - description: >- - Consensus captures the consensus rules for processing a block in the - blockchain, - - including all blockchain data structures and the rules of the - application's + title: >- + total is total number of results available if + PageRequest.count_total - state transition machine. - chain_id: - type: string - height: - type: string - format: int64 - time: - type: string - format: date-time - last_block_id: - title: prev block info + was set, its value is undefined otherwise + title: |- + QueryValidatorDelegationsResponse is response type for the + Query/ValidatorDelegations RPC method + cosmos.staking.v1beta1.QueryValidatorResponse: + type: object + properties: + validator: type: object properties: - hash: + operator_address: type: string - format: byte - part_set_header: + description: >- + operator_address defines the address of the validator's operator; + bech encoded in JSON. + consensus_pubkey: type: object properties: - total: - type: integer - format: int64 - hash: + type_url: type: string - format: byte - title: PartsetHeader - last_commit_hash: - type: string - format: byte - title: hashes of block data - data_hash: - type: string - format: byte - validators_hash: - type: string - format: byte - title: hashes from the app output from the prev block - next_validators_hash: - type: string - format: byte - consensus_hash: - type: string - format: byte - app_hash: - type: string - format: byte - last_results_hash: - type: string - format: byte - evidence_hash: - type: string - format: byte - title: consensus info - proposer_address: - type: string - format: byte - description: Header defines the structure of a Tendermint block header. - tendermint.types.PartSetHeader: - type: object - properties: - total: - type: integer - format: int64 - hash: - type: string - format: byte - title: PartsetHeader - tendermint.version.Consensus: - type: object - properties: - block: - type: string - format: uint64 - app: - type: string - format: uint64 - description: >- - Consensus captures the consensus rules for processing a block in the - blockchain, - - including all blockchain data structures and the rules of the - application's - - state transition machine. - cosmos.upgrade.v1beta1.Plan: - type: object - properties: - name: - type: string - description: >- - Sets the name for the upgrade. This name will be used by the upgraded - - version of the software to apply any special "on-upgrade" commands - during - - the first BeginBlock method after the upgrade is applied. It is also - used - - to detect whether a software version can handle a given upgrade. If no + description: >- + A URL/resource name that uniquely identifies the type of the + serialized - upgrade handler with this name has been set in the software, it will - be + protocol buffer message. This string must contain at least - assumed that the software is out-of-date when the upgrade Time or - Height is + one "/" character. The last segment of the URL's path must + represent - reached and the software will exit. - time: - type: string - format: date-time - description: |- - The time after which the upgrade must be performed. - Leave set to its zero value to use a pre-defined Height instead. - height: - type: string - format: int64 - description: |- - The height at which the upgrade must be performed. - Only used if Time is not set. - info: - type: string - title: |- - Any application specific upgrade info to be included on-chain - such as a git commit that validators could automatically upgrade to - upgraded_client_state: - title: >- - IBC-enabled chains can opt-in to including the upgraded client state - in its upgrade plan + the fully qualified name of the type (as in - This will make the chain commit to the correct upgraded (self) client - state before the upgrade occurs, + `path/google.protobuf.Duration`). The name should be in a + canonical form - so that connecting chains can verify that the new upgraded client is - valid by verifying a proof on the + (e.g., leading "." is not accepted). - previous version of the chain. - This will allow IBC connections to persist smoothly across planned - chain upgrades - type: object - properties: - type_url: - type: string - description: >- - A URL/resource name that uniquely identifies the type of the - serialized + In practice, teams usually precompile into the binary all + types that they - protocol buffer message. This string must contain at least + expect it to use in the context of Any. However, for URLs + which use the - one "/" character. The last segment of the URL's path must - represent + scheme `http`, `https`, or no scheme, one can optionally set + up a type - the fully qualified name of the type (as in + server that maps type URLs to message definitions as follows: - `path/google.protobuf.Duration`). The name should be in a - canonical form - (e.g., leading "." is not accepted). + * If no scheme is provided, `https` is assumed. + * An HTTP GET on the URL must yield a [google.protobuf.Type][] + value in binary format, or produce an error. + * Applications are allowed to cache lookup results based on + the + URL, or have them precompiled into a binary to avoid any + lookup. Therefore, binary compatibility needs to be preserved + on changes to types. (Use versioned type names to manage + breaking changes.) - In practice, teams usually precompile into the binary all types - that they + Note: this functionality is not currently available in the + official - expect it to use in the context of Any. However, for URLs which - use the + protobuf release, and it is not used for type URLs beginning + with - scheme `http`, `https`, or no scheme, one can optionally set up a - type + type.googleapis.com. - server that maps type URLs to message definitions as follows: + Schemes other than `http`, `https` (or the empty scheme) might + be - * If no scheme is provided, `https` is assumed. + used with implementation specific semantics. + value: + type: string + format: byte + description: >- + Must be a valid serialized protocol buffer of the above + specified type. + description: >- + `Any` contains an arbitrary serialized protocol buffer message + along with a - * An HTTP GET on the URL must yield a [google.protobuf.Type][] - value in binary format, or produce an error. - * Applications are allowed to cache lookup results based on the - URL, or have them precompiled into a binary to avoid any - lookup. Therefore, binary compatibility needs to be preserved - on changes to types. (Use versioned type names to manage - breaking changes.) + URL that describes the type of the serialized message. - Note: this functionality is not currently available in the - official - protobuf release, and it is not used for type URLs beginning with + Protobuf library provides support to pack/unpack Any values in the + form - type.googleapis.com. + of utility functions or additional generated methods of the Any + type. - Schemes other than `http`, `https` (or the empty scheme) might be + Example 1: Pack and unpack a message in C++. - used with implementation specific semantics. - value: - type: string - format: byte - description: >- - Must be a valid serialized protocol buffer of the above specified - type. - description: >- - `Any` contains an arbitrary serialized protocol buffer message along - with a + Foo foo = ...; + Any any; + any.PackFrom(foo); + ... + if (any.UnpackTo(&foo)) { + ... + } - URL that describes the type of the serialized message. + Example 2: Pack and unpack a message in Java. + Foo foo = ...; + Any any = Any.pack(foo); + ... + if (any.is(Foo.class)) { + foo = any.unpack(Foo.class); + } - Protobuf library provides support to pack/unpack Any values in the - form + Example 3: Pack and unpack a message in Python. - of utility functions or additional generated methods of the Any type. + foo = Foo(...) + any = Any() + any.Pack(foo) + ... + if any.Is(Foo.DESCRIPTOR): + any.Unpack(foo) + ... + Example 4: Pack and unpack a message in Go - Example 1: Pack and unpack a message in C++. + foo := &pb.Foo{...} + any, err := ptypes.MarshalAny(foo) + ... + foo := &pb.Foo{} + if err := ptypes.UnmarshalAny(any, foo); err != nil { + ... + } - Foo foo = ...; - Any any; - any.PackFrom(foo); - ... - if (any.UnpackTo(&foo)) { - ... - } + The pack methods provided by protobuf library will by default use - Example 2: Pack and unpack a message in Java. + 'type.googleapis.com/full.type.name' as the type URL and the + unpack - Foo foo = ...; - Any any = Any.pack(foo); - ... - if (any.is(Foo.class)) { - foo = any.unpack(Foo.class); - } + methods only use the fully qualified type name after the last '/' - Example 3: Pack and unpack a message in Python. + in the type URL, for example "foo.bar.com/x/y.z" will yield type - foo = Foo(...) - any = Any() - any.Pack(foo) - ... - if any.Is(Foo.DESCRIPTOR): - any.Unpack(foo) - ... + name "y.z". - Example 4: Pack and unpack a message in Go - foo := &pb.Foo{...} - any, err := ptypes.MarshalAny(foo) - ... - foo := &pb.Foo{} - if err := ptypes.UnmarshalAny(any, foo); err != nil { - ... - } - The pack methods provided by protobuf library will by default use + JSON - 'type.googleapis.com/full.type.name' as the type URL and the unpack + ==== - methods only use the fully qualified type name after the last '/' + The JSON representation of an `Any` value uses the regular - in the type URL, for example "foo.bar.com/x/y.z" will yield type + representation of the deserialized, embedded message, with an - name "y.z". + additional field `@type` which contains the type URL. Example: + package google.profile; + message Person { + string first_name = 1; + string last_name = 2; + } + { + "@type": "type.googleapis.com/google.profile.Person", + "firstName": , + "lastName": + } - JSON + If the embedded message type is well-known and has a custom JSON - ==== + representation, that representation will be embedded adding a + field - The JSON representation of an `Any` value uses the regular + `value` which holds the custom JSON in addition to the `@type` - representation of the deserialized, embedded message, with an + field. Example (for message [google.protobuf.Duration][]): - additional field `@type` which contains the type URL. Example: + { + "@type": "type.googleapis.com/google.protobuf.Duration", + "value": "1.212s" + } + jailed: + type: boolean + format: boolean + description: >- + jailed defined whether the validator has been jailed from bonded + status or not. + status: + description: status is the validator status (bonded/unbonding/unbonded). + type: string + enum: + - BOND_STATUS_UNSPECIFIED + - BOND_STATUS_UNBONDED + - BOND_STATUS_UNBONDING + - BOND_STATUS_BONDED + default: BOND_STATUS_UNSPECIFIED + tokens: + type: string + description: tokens define the delegated tokens (incl. self-delegation). + delegator_shares: + type: string + description: >- + delegator_shares defines total shares issued to a validator's + delegators. + description: + description: description defines the description terms for the validator. + type: object + properties: + moniker: + type: string + description: moniker defines a human-readable name for the validator. + identity: + type: string + description: >- + identity defines an optional identity signature (ex. UPort or + Keybase). + website: + type: string + description: website defines an optional website link. + security_contact: + type: string + description: >- + security_contact defines an optional email for security + contact. + details: + type: string + description: details define other optional details. + unbonding_height: + type: string + format: int64 + description: >- + unbonding_height defines, if unbonding, the height at which this + validator has begun unbonding. + unbonding_time: + type: string + format: date-time + description: >- + unbonding_time defines, if unbonding, the min time for the + validator to complete unbonding. + commission: + description: commission defines the commission parameters. + type: object + properties: + commission_rates: + description: >- + commission_rates defines the initial commission rates to be + used for creating a validator. + type: object + properties: + rate: + type: string + description: >- + rate is the commission rate charged to delegators, as a + fraction. + max_rate: + type: string + description: >- + max_rate defines the maximum commission rate which + validator can ever charge, as a fraction. + max_change_rate: + type: string + description: >- + max_change_rate defines the maximum daily increase of the + validator commission, as a fraction. + update_time: + type: string + format: date-time + description: update_time is the last time the commission rate was changed. + min_self_delegation: + type: string + description: >- + min_self_delegation is the validator's self declared minimum self + delegation. + description: >- + Validator defines a validator, together with the total amount of the - package google.profile; - message Person { - string first_name = 1; - string last_name = 2; - } + Validator's bond shares and their exchange rate to coins. Slashing + results in - { - "@type": "type.googleapis.com/google.profile.Person", - "firstName": , - "lastName": - } + a decrease in the exchange rate, allowing correct calculation of + future - If the embedded message type is well-known and has a custom JSON + undelegations without iterating over delegators. When coins are + delegated to - representation, that representation will be embedded adding a field + this validator, the validator is credited with a delegation whose + number of - `value` which holds the custom JSON in addition to the `@type` + bond shares is based on the amount of coins delegated divided by the + current - field. Example (for message [google.protobuf.Duration][]): + exchange rate. Voting power can be calculated as total bonded shares - { - "@type": "type.googleapis.com/google.protobuf.Duration", - "value": "1.212s" - } - description: >- - Plan specifies information about a planned upgrade and when it should - occur. - cosmos.upgrade.v1beta1.QueryAppliedPlanResponse: + multiplied by exchange rate. + title: QueryValidatorResponse is response type for the Query/Validator RPC method + cosmos.staking.v1beta1.QueryValidatorUnbondingDelegationsResponse: type: object properties: - height: - type: string - format: int64 - description: height is the block height at which the plan was applied. - description: >- - QueryAppliedPlanResponse is the response type for the Query/AppliedPlan - RPC + unbonding_responses: + type: array + items: + type: object + properties: + delegator_address: + type: string + description: >- + delegator_address is the bech32-encoded address of the + delegator. + validator_address: + type: string + description: >- + validator_address is the bech32-encoded address of the + validator. + entries: + type: array + items: + type: object + properties: + creation_height: + type: string + format: int64 + description: >- + creation_height is the height which the unbonding took + place. + completion_time: + type: string + format: date-time + description: completion_time is the unix time for unbonding completion. + initial_balance: + type: string + description: >- + initial_balance defines the tokens initially scheduled to + receive at completion. + balance: + type: string + description: balance defines the tokens to receive at completion. + description: >- + UnbondingDelegationEntry defines an unbonding object with + relevant metadata. + description: entries are the unbonding delegation entries. + description: >- + UnbondingDelegation stores all of a single delegator's unbonding + bonds - method. - cosmos.upgrade.v1beta1.QueryCurrentPlanResponse: - type: object - properties: - plan: - description: plan is the current upgrade plan. + for a single validator in an time-ordered list. + pagination: + description: pagination defines the pagination in the response. type: object properties: - name: + next_key: type: string - description: >- - Sets the name for the upgrade. This name will be used by the - upgraded + format: byte + title: |- + next_key is the key to be passed to PageRequest.key to + query the next page most efficiently + total: + type: string + format: uint64 + title: >- + total is total number of results available if + PageRequest.count_total + + was set, its value is undefined otherwise + description: |- + QueryValidatorUnbondingDelegationsResponse is response type for the + Query/ValidatorUnbondingDelegations RPC method. + cosmos.staking.v1beta1.QueryValidatorsResponse: + type: object + properties: + validators: + type: array + items: + type: object + properties: + operator_address: + type: string + description: >- + operator_address defines the address of the validator's + operator; bech encoded in JSON. + consensus_pubkey: + type: object + properties: + type_url: + type: string + description: >- + A URL/resource name that uniquely identifies the type of the + serialized - version of the software to apply any special "on-upgrade" commands - during + protocol buffer message. This string must contain at least - the first BeginBlock method after the upgrade is applied. It is - also used + one "/" character. The last segment of the URL's path must + represent - to detect whether a software version can handle a given upgrade. - If no + the fully qualified name of the type (as in - upgrade handler with this name has been set in the software, it - will be + `path/google.protobuf.Duration`). The name should be in a + canonical form - assumed that the software is out-of-date when the upgrade Time or - Height is + (e.g., leading "." is not accepted). - reached and the software will exit. - time: - type: string - format: date-time - description: |- - The time after which the upgrade must be performed. - Leave set to its zero value to use a pre-defined Height instead. - height: - type: string - format: int64 - description: |- - The height at which the upgrade must be performed. - Only used if Time is not set. - info: - type: string - title: >- - Any application specific upgrade info to be included on-chain - such as a git commit that validators could automatically upgrade - to - upgraded_client_state: - title: >- - IBC-enabled chains can opt-in to including the upgraded client - state in its upgrade plan + In practice, teams usually precompile into the binary all + types that they - This will make the chain commit to the correct upgraded (self) - client state before the upgrade occurs, + expect it to use in the context of Any. However, for URLs + which use the - so that connecting chains can verify that the new upgraded client - is valid by verifying a proof on the + scheme `http`, `https`, or no scheme, one can optionally set + up a type - previous version of the chain. + server that maps type URLs to message definitions as + follows: - This will allow IBC connections to persist smoothly across planned - chain upgrades - type: object - properties: - type_url: - type: string - description: >- - A URL/resource name that uniquely identifies the type of the - serialized - protocol buffer message. This string must contain at least + * If no scheme is provided, `https` is assumed. - one "/" character. The last segment of the URL's path must - represent + * An HTTP GET on the URL must yield a + [google.protobuf.Type][] + value in binary format, or produce an error. + * Applications are allowed to cache lookup results based on + the + URL, or have them precompiled into a binary to avoid any + lookup. Therefore, binary compatibility needs to be preserved + on changes to types. (Use versioned type names to manage + breaking changes.) - the fully qualified name of the type (as in + Note: this functionality is not currently available in the + official - `path/google.protobuf.Duration`). The name should be in a - canonical form + protobuf release, and it is not used for type URLs beginning + with - (e.g., leading "." is not accepted). + type.googleapis.com. - In practice, teams usually precompile into the binary all - types that they + Schemes other than `http`, `https` (or the empty scheme) + might be - expect it to use in the context of Any. However, for URLs - which use the + used with implementation specific semantics. + value: + type: string + format: byte + description: >- + Must be a valid serialized protocol buffer of the above + specified type. + description: >- + `Any` contains an arbitrary serialized protocol buffer message + along with a - scheme `http`, `https`, or no scheme, one can optionally set - up a type + URL that describes the type of the serialized message. - server that maps type URLs to message definitions as follows: + Protobuf library provides support to pack/unpack Any values in + the form - * If no scheme is provided, `https` is assumed. + of utility functions or additional generated methods of the Any + type. - * An HTTP GET on the URL must yield a [google.protobuf.Type][] - value in binary format, or produce an error. - * Applications are allowed to cache lookup results based on - the - URL, or have them precompiled into a binary to avoid any - lookup. Therefore, binary compatibility needs to be preserved - on changes to types. (Use versioned type names to manage - breaking changes.) - Note: this functionality is not currently available in the - official + Example 1: Pack and unpack a message in C++. - protobuf release, and it is not used for type URLs beginning - with + Foo foo = ...; + Any any; + any.PackFrom(foo); + ... + if (any.UnpackTo(&foo)) { + ... + } - type.googleapis.com. + Example 2: Pack and unpack a message in Java. + Foo foo = ...; + Any any = Any.pack(foo); + ... + if (any.is(Foo.class)) { + foo = any.unpack(Foo.class); + } - Schemes other than `http`, `https` (or the empty scheme) might - be + Example 3: Pack and unpack a message in Python. - used with implementation specific semantics. - value: - type: string - format: byte - description: >- - Must be a valid serialized protocol buffer of the above - specified type. - description: >- - `Any` contains an arbitrary serialized protocol buffer message - along with a + foo = Foo(...) + any = Any() + any.Pack(foo) + ... + if any.Is(Foo.DESCRIPTOR): + any.Unpack(foo) + ... - URL that describes the type of the serialized message. + Example 4: Pack and unpack a message in Go + foo := &pb.Foo{...} + any, err := ptypes.MarshalAny(foo) + ... + foo := &pb.Foo{} + if err := ptypes.UnmarshalAny(any, foo); err != nil { + ... + } - Protobuf library provides support to pack/unpack Any values in the - form + The pack methods provided by protobuf library will by default + use - of utility functions or additional generated methods of the Any - type. + 'type.googleapis.com/full.type.name' as the type URL and the + unpack + methods only use the fully qualified type name after the last + '/' - Example 1: Pack and unpack a message in C++. + in the type URL, for example "foo.bar.com/x/y.z" will yield type - Foo foo = ...; - Any any; - any.PackFrom(foo); - ... - if (any.UnpackTo(&foo)) { - ... - } + name "y.z". - Example 2: Pack and unpack a message in Java. - Foo foo = ...; - Any any = Any.pack(foo); - ... - if (any.is(Foo.class)) { - foo = any.unpack(Foo.class); - } - Example 3: Pack and unpack a message in Python. + JSON - foo = Foo(...) - any = Any() - any.Pack(foo) - ... - if any.Is(Foo.DESCRIPTOR): - any.Unpack(foo) - ... + ==== - Example 4: Pack and unpack a message in Go + The JSON representation of an `Any` value uses the regular - foo := &pb.Foo{...} - any, err := ptypes.MarshalAny(foo) - ... - foo := &pb.Foo{} - if err := ptypes.UnmarshalAny(any, foo); err != nil { - ... - } + representation of the deserialized, embedded message, with an - The pack methods provided by protobuf library will by default use + additional field `@type` which contains the type URL. Example: - 'type.googleapis.com/full.type.name' as the type URL and the - unpack + package google.profile; + message Person { + string first_name = 1; + string last_name = 2; + } - methods only use the fully qualified type name after the last '/' + { + "@type": "type.googleapis.com/google.profile.Person", + "firstName": , + "lastName": + } - in the type URL, for example "foo.bar.com/x/y.z" will yield type + If the embedded message type is well-known and has a custom JSON - name "y.z". + representation, that representation will be embedded adding a + field + `value` which holds the custom JSON in addition to the `@type` + field. Example (for message [google.protobuf.Duration][]): - JSON + { + "@type": "type.googleapis.com/google.protobuf.Duration", + "value": "1.212s" + } + jailed: + type: boolean + format: boolean + description: >- + jailed defined whether the validator has been jailed from bonded + status or not. + status: + description: status is the validator status (bonded/unbonding/unbonded). + type: string + enum: + - BOND_STATUS_UNSPECIFIED + - BOND_STATUS_UNBONDED + - BOND_STATUS_UNBONDING + - BOND_STATUS_BONDED + default: BOND_STATUS_UNSPECIFIED + tokens: + type: string + description: tokens define the delegated tokens (incl. self-delegation). + delegator_shares: + type: string + description: >- + delegator_shares defines total shares issued to a validator's + delegators. + description: + description: description defines the description terms for the validator. + type: object + properties: + moniker: + type: string + description: moniker defines a human-readable name for the validator. + identity: + type: string + description: >- + identity defines an optional identity signature (ex. UPort + or Keybase). + website: + type: string + description: website defines an optional website link. + security_contact: + type: string + description: >- + security_contact defines an optional email for security + contact. + details: + type: string + description: details define other optional details. + unbonding_height: + type: string + format: int64 + description: >- + unbonding_height defines, if unbonding, the height at which this + validator has begun unbonding. + unbonding_time: + type: string + format: date-time + description: >- + unbonding_time defines, if unbonding, the min time for the + validator to complete unbonding. + commission: + description: commission defines the commission parameters. + type: object + properties: + commission_rates: + description: >- + commission_rates defines the initial commission rates to be + used for creating a validator. + type: object + properties: + rate: + type: string + description: >- + rate is the commission rate charged to delegators, as a + fraction. + max_rate: + type: string + description: >- + max_rate defines the maximum commission rate which + validator can ever charge, as a fraction. + max_change_rate: + type: string + description: >- + max_change_rate defines the maximum daily increase of + the validator commission, as a fraction. + update_time: + type: string + format: date-time + description: >- + update_time is the last time the commission rate was + changed. + min_self_delegation: + type: string + description: >- + min_self_delegation is the validator's self declared minimum + self delegation. + description: >- + Validator defines a validator, together with the total amount of the - ==== + Validator's bond shares and their exchange rate to coins. Slashing + results in - The JSON representation of an `Any` value uses the regular + a decrease in the exchange rate, allowing correct calculation of + future - representation of the deserialized, embedded message, with an + undelegations without iterating over delegators. When coins are + delegated to - additional field `@type` which contains the type URL. Example: + this validator, the validator is credited with a delegation whose + number of - package google.profile; - message Person { - string first_name = 1; - string last_name = 2; - } + bond shares is based on the amount of coins delegated divided by the + current - { - "@type": "type.googleapis.com/google.profile.Person", - "firstName": , - "lastName": - } + exchange rate. Voting power can be calculated as total bonded shares - If the embedded message type is well-known and has a custom JSON + multiplied by exchange rate. + description: validators contains all the queried validators. + pagination: + description: pagination defines the pagination in the response. + type: object + properties: + next_key: + type: string + format: byte + title: |- + next_key is the key to be passed to PageRequest.key to + query the next page most efficiently + total: + type: string + format: uint64 + title: >- + total is total number of results available if + PageRequest.count_total - representation, that representation will be embedded adding a - field + was set, its value is undefined otherwise + title: >- + QueryValidatorsResponse is response type for the Query/Validators RPC + method + cosmos.staking.v1beta1.Redelegation: + type: object + properties: + delegator_address: + type: string + description: delegator_address is the bech32-encoded address of the delegator. + validator_src_address: + type: string + description: >- + validator_src_address is the validator redelegation source operator + address. + validator_dst_address: + type: string + description: >- + validator_dst_address is the validator redelegation destination + operator address. + entries: + type: array + items: + type: object + properties: + creation_height: + type: string + format: int64 + description: >- + creation_height defines the height which the redelegation took + place. + completion_time: + type: string + format: date-time + description: >- + completion_time defines the unix time for redelegation + completion. + initial_balance: + type: string + description: >- + initial_balance defines the initial balance when redelegation + started. + shares_dst: + type: string + description: >- + shares_dst is the amount of destination-validator shares created + by redelegation. + description: >- + RedelegationEntry defines a redelegation object with relevant + metadata. + description: entries are the redelegation entries. + description: >- + Redelegation contains the list of a particular delegator's redelegating + bonds - `value` which holds the custom JSON in addition to the `@type` + from a particular source validator to a particular destination validator. + cosmos.staking.v1beta1.RedelegationEntry: + type: object + properties: + creation_height: + type: string + format: int64 + description: creation_height defines the height which the redelegation took place. + completion_time: + type: string + format: date-time + description: completion_time defines the unix time for redelegation completion. + initial_balance: + type: string + description: initial_balance defines the initial balance when redelegation started. + shares_dst: + type: string + description: >- + shares_dst is the amount of destination-validator shares created by + redelegation. + description: RedelegationEntry defines a redelegation object with relevant metadata. + cosmos.staking.v1beta1.RedelegationEntryResponse: + type: object + properties: + redelegation_entry: + type: object + properties: + creation_height: + type: string + format: int64 + description: >- + creation_height defines the height which the redelegation took + place. + completion_time: + type: string + format: date-time + description: completion_time defines the unix time for redelegation completion. + initial_balance: + type: string + description: >- + initial_balance defines the initial balance when redelegation + started. + shares_dst: + type: string + description: >- + shares_dst is the amount of destination-validator shares created + by redelegation. + description: >- + RedelegationEntry defines a redelegation object with relevant + metadata. + balance: + type: string + description: >- + RedelegationEntryResponse is equivalent to a RedelegationEntry except that + it - field. Example (for message [google.protobuf.Duration][]): + contains a balance in addition to shares which is more suitable for client - { - "@type": "type.googleapis.com/google.protobuf.Duration", - "value": "1.212s" - } + responses. + cosmos.staking.v1beta1.RedelegationResponse: + type: object + properties: + redelegation: + type: object + properties: + delegator_address: + type: string + description: delegator_address is the bech32-encoded address of the delegator. + validator_src_address: + type: string + description: >- + validator_src_address is the validator redelegation source + operator address. + validator_dst_address: + type: string + description: >- + validator_dst_address is the validator redelegation destination + operator address. + entries: + type: array + items: + type: object + properties: + creation_height: + type: string + format: int64 + description: >- + creation_height defines the height which the redelegation + took place. + completion_time: + type: string + format: date-time + description: >- + completion_time defines the unix time for redelegation + completion. + initial_balance: + type: string + description: >- + initial_balance defines the initial balance when + redelegation started. + shares_dst: + type: string + description: >- + shares_dst is the amount of destination-validator shares + created by redelegation. + description: >- + RedelegationEntry defines a redelegation object with relevant + metadata. + description: entries are the redelegation entries. + description: >- + Redelegation contains the list of a particular delegator's + redelegating bonds + + from a particular source validator to a particular destination + validator. + entries: + type: array + items: + type: object + properties: + redelegation_entry: + type: object + properties: + creation_height: + type: string + format: int64 + description: >- + creation_height defines the height which the redelegation + took place. + completion_time: + type: string + format: date-time + description: >- + completion_time defines the unix time for redelegation + completion. + initial_balance: + type: string + description: >- + initial_balance defines the initial balance when + redelegation started. + shares_dst: + type: string + description: >- + shares_dst is the amount of destination-validator shares + created by redelegation. + description: >- + RedelegationEntry defines a redelegation object with relevant + metadata. + balance: + type: string + description: >- + RedelegationEntryResponse is equivalent to a RedelegationEntry + except that it + + contains a balance in addition to shares which is more suitable for + client + + responses. description: >- - QueryCurrentPlanResponse is the response type for the Query/CurrentPlan - RPC + RedelegationResponse is equivalent to a Redelegation except that its + entries - method. - ibc.core.channel.v1.Channel: + contain a balance in addition to shares which is more suitable for client + + responses. + cosmos.staking.v1beta1.UnbondingDelegation: type: object properties: - state: - title: current state of the channel end + delegator_address: type: string - enum: - - STATE_UNINITIALIZED_UNSPECIFIED - - STATE_INIT - - STATE_TRYOPEN - - STATE_OPEN - - STATE_CLOSED - default: STATE_UNINITIALIZED_UNSPECIFIED - description: |- - State defines if a channel is in one of the following states: - CLOSED, INIT, TRYOPEN, OPEN or UNINITIALIZED. - - - STATE_UNINITIALIZED_UNSPECIFIED: Default State - - STATE_INIT: A channel has just started the opening handshake. - - STATE_TRYOPEN: A channel has acknowledged the handshake step on the counterparty chain. - - STATE_OPEN: A channel has completed the handshake. Open channels are - ready to send and receive packets. - - STATE_CLOSED: A channel has been closed and can no longer be used to send or receive - packets. - ordering: - title: whether the channel is ordered or unordered + description: delegator_address is the bech32-encoded address of the delegator. + validator_address: type: string - enum: - - ORDER_NONE_UNSPECIFIED - - ORDER_UNORDERED - - ORDER_ORDERED - default: ORDER_NONE_UNSPECIFIED - description: |- - - ORDER_NONE_UNSPECIFIED: zero-value for channel ordering - - ORDER_UNORDERED: packets can be delivered in any order, which may differ from the order in - which they were sent. - - ORDER_ORDERED: packets are delivered exactly in the order which they were sent - counterparty: - title: counterparty channel end - type: object - properties: - port_id: - type: string - description: >- - port on the counterparty chain which owns the other end of the - channel. - channel_id: - type: string - title: channel end on the counterparty chain - connection_hops: + description: validator_address is the bech32-encoded address of the validator. + entries: type: array items: - type: string - title: |- - list of connection identifiers, in order, along which packets sent on - this channel will travel - version: - type: string - title: 'opaque channel version, which is agreed upon during the handshake' + type: object + properties: + creation_height: + type: string + format: int64 + description: creation_height is the height which the unbonding took place. + completion_time: + type: string + format: date-time + description: completion_time is the unix time for unbonding completion. + initial_balance: + type: string + description: >- + initial_balance defines the tokens initially scheduled to + receive at completion. + balance: + type: string + description: balance defines the tokens to receive at completion. + description: >- + UnbondingDelegationEntry defines an unbonding object with relevant + metadata. + description: entries are the unbonding delegation entries. description: |- - Channel defines pipeline for exactly-once packet delivery between specific - modules on separate blockchains, which has at least one end capable of - sending packets and one end capable of receiving packets. - ibc.core.channel.v1.Counterparty: - type: object - properties: - port_id: - type: string - description: >- - port on the counterparty chain which owns the other end of the - channel. - channel_id: - type: string - title: channel end on the counterparty chain - title: Counterparty defines a channel end counterparty - ibc.core.channel.v1.IdentifiedChannel: + UnbondingDelegation stores all of a single delegator's unbonding bonds + for a single validator in an time-ordered list. + cosmos.staking.v1beta1.UnbondingDelegationEntry: type: object properties: - state: - title: current state of the channel end - type: string - enum: - - STATE_UNINITIALIZED_UNSPECIFIED - - STATE_INIT - - STATE_TRYOPEN - - STATE_OPEN - - STATE_CLOSED - default: STATE_UNINITIALIZED_UNSPECIFIED - description: |- - State defines if a channel is in one of the following states: - CLOSED, INIT, TRYOPEN, OPEN or UNINITIALIZED. - - - STATE_UNINITIALIZED_UNSPECIFIED: Default State - - STATE_INIT: A channel has just started the opening handshake. - - STATE_TRYOPEN: A channel has acknowledged the handshake step on the counterparty chain. - - STATE_OPEN: A channel has completed the handshake. Open channels are - ready to send and receive packets. - - STATE_CLOSED: A channel has been closed and can no longer be used to send or receive - packets. - ordering: - title: whether the channel is ordered or unordered + creation_height: type: string - enum: - - ORDER_NONE_UNSPECIFIED - - ORDER_UNORDERED - - ORDER_ORDERED - default: ORDER_NONE_UNSPECIFIED - description: |- - - ORDER_NONE_UNSPECIFIED: zero-value for channel ordering - - ORDER_UNORDERED: packets can be delivered in any order, which may differ from the order in - which they were sent. - - ORDER_ORDERED: packets are delivered exactly in the order which they were sent - counterparty: - title: counterparty channel end - type: object - properties: - port_id: - type: string - description: >- - port on the counterparty chain which owns the other end of the - channel. - channel_id: - type: string - title: channel end on the counterparty chain - connection_hops: - type: array - items: - type: string - title: |- - list of connection identifiers, in order, along which packets sent on - this channel will travel - version: + format: int64 + description: creation_height is the height which the unbonding took place. + completion_time: type: string - title: 'opaque channel version, which is agreed upon during the handshake' - port_id: + format: date-time + description: completion_time is the unix time for unbonding completion. + initial_balance: type: string - title: port identifier - channel_id: + description: >- + initial_balance defines the tokens initially scheduled to receive at + completion. + balance: type: string - title: channel identifier - description: |- - IdentifiedChannel defines a channel with additional port and channel - identifier fields. - ibc.core.channel.v1.Order: - type: string - enum: - - ORDER_NONE_UNSPECIFIED - - ORDER_UNORDERED - - ORDER_ORDERED - default: ORDER_NONE_UNSPECIFIED - description: |- - - ORDER_NONE_UNSPECIFIED: zero-value for channel ordering - - ORDER_UNORDERED: packets can be delivered in any order, which may differ from the order in - which they were sent. - - ORDER_ORDERED: packets are delivered exactly in the order which they were sent - title: Order defines if a channel is ORDERED or UNORDERED - ibc.core.channel.v1.PacketState: + description: balance defines the tokens to receive at completion. + description: >- + UnbondingDelegationEntry defines an unbonding object with relevant + metadata. + cosmos.staking.v1beta1.Validator: type: object properties: - port_id: - type: string - description: channel port identifier. - channel_id: - type: string - description: channel unique identifier. - sequence: - type: string - format: uint64 - description: packet sequence. - data: + operator_address: type: string - format: byte - description: embedded data that represents packet state. - description: |- - PacketState defines the generic type necessary to retrieve and store - packet commitments, acknowledgements, and receipts. - Caller is responsible for knowing the context necessary to interpret this - state as a commitment, acknowledgement, or a receipt. - ibc.core.channel.v1.QueryChannelClientStateResponse: - type: object - properties: - identified_client_state: - title: client state associated with the channel + description: >- + operator_address defines the address of the validator's operator; bech + encoded in JSON. + consensus_pubkey: type: object properties: - client_id: + type_url: type: string - title: client identifier - client_state: - title: client state - type: object - properties: - type_url: - type: string - description: >- - A URL/resource name that uniquely identifies the type of the - serialized + description: >- + A URL/resource name that uniquely identifies the type of the + serialized - protocol buffer message. This string must contain at least + protocol buffer message. This string must contain at least - one "/" character. The last segment of the URL's path must - represent + one "/" character. The last segment of the URL's path must + represent - the fully qualified name of the type (as in + the fully qualified name of the type (as in - `path/google.protobuf.Duration`). The name should be in a - canonical form + `path/google.protobuf.Duration`). The name should be in a + canonical form - (e.g., leading "." is not accepted). + (e.g., leading "." is not accepted). - In practice, teams usually precompile into the binary all - types that they + In practice, teams usually precompile into the binary all types + that they - expect it to use in the context of Any. However, for URLs - which use the + expect it to use in the context of Any. However, for URLs which + use the - scheme `http`, `https`, or no scheme, one can optionally set - up a type + scheme `http`, `https`, or no scheme, one can optionally set up a + type - server that maps type URLs to message definitions as follows: + server that maps type URLs to message definitions as follows: - * If no scheme is provided, `https` is assumed. + * If no scheme is provided, `https` is assumed. - * An HTTP GET on the URL must yield a [google.protobuf.Type][] - value in binary format, or produce an error. - * Applications are allowed to cache lookup results based on - the - URL, or have them precompiled into a binary to avoid any - lookup. Therefore, binary compatibility needs to be preserved - on changes to types. (Use versioned type names to manage - breaking changes.) + * An HTTP GET on the URL must yield a [google.protobuf.Type][] + value in binary format, or produce an error. + * Applications are allowed to cache lookup results based on the + URL, or have them precompiled into a binary to avoid any + lookup. Therefore, binary compatibility needs to be preserved + on changes to types. (Use versioned type names to manage + breaking changes.) - Note: this functionality is not currently available in the - official + Note: this functionality is not currently available in the + official - protobuf release, and it is not used for type URLs beginning - with + protobuf release, and it is not used for type URLs beginning with - type.googleapis.com. + type.googleapis.com. - Schemes other than `http`, `https` (or the empty scheme) might - be + Schemes other than `http`, `https` (or the empty scheme) might be - used with implementation specific semantics. - value: - type: string - format: byte - description: >- - Must be a valid serialized protocol buffer of the above - specified type. + used with implementation specific semantics. + value: + type: string + format: byte description: >- - `Any` contains an arbitrary serialized protocol buffer message - along with a + Must be a valid serialized protocol buffer of the above specified + type. + description: >- + `Any` contains an arbitrary serialized protocol buffer message along + with a - URL that describes the type of the serialized message. + URL that describes the type of the serialized message. - Protobuf library provides support to pack/unpack Any values in the - form + Protobuf library provides support to pack/unpack Any values in the + form - of utility functions or additional generated methods of the Any - type. + of utility functions or additional generated methods of the Any type. - Example 1: Pack and unpack a message in C++. + Example 1: Pack and unpack a message in C++. - Foo foo = ...; - Any any; - any.PackFrom(foo); - ... - if (any.UnpackTo(&foo)) { - ... - } + Foo foo = ...; + Any any; + any.PackFrom(foo); + ... + if (any.UnpackTo(&foo)) { + ... + } - Example 2: Pack and unpack a message in Java. + Example 2: Pack and unpack a message in Java. - Foo foo = ...; - Any any = Any.pack(foo); - ... - if (any.is(Foo.class)) { - foo = any.unpack(Foo.class); - } + Foo foo = ...; + Any any = Any.pack(foo); + ... + if (any.is(Foo.class)) { + foo = any.unpack(Foo.class); + } - Example 3: Pack and unpack a message in Python. + Example 3: Pack and unpack a message in Python. - foo = Foo(...) - any = Any() - any.Pack(foo) - ... - if any.Is(Foo.DESCRIPTOR): - any.Unpack(foo) - ... + foo = Foo(...) + any = Any() + any.Pack(foo) + ... + if any.Is(Foo.DESCRIPTOR): + any.Unpack(foo) + ... - Example 4: Pack and unpack a message in Go + Example 4: Pack and unpack a message in Go - foo := &pb.Foo{...} - any, err := ptypes.MarshalAny(foo) - ... - foo := &pb.Foo{} - if err := ptypes.UnmarshalAny(any, foo); err != nil { - ... - } + foo := &pb.Foo{...} + any, err := ptypes.MarshalAny(foo) + ... + foo := &pb.Foo{} + if err := ptypes.UnmarshalAny(any, foo); err != nil { + ... + } - The pack methods provided by protobuf library will by default use + The pack methods provided by protobuf library will by default use - 'type.googleapis.com/full.type.name' as the type URL and the - unpack + 'type.googleapis.com/full.type.name' as the type URL and the unpack - methods only use the fully qualified type name after the last '/' + methods only use the fully qualified type name after the last '/' - in the type URL, for example "foo.bar.com/x/y.z" will yield type + in the type URL, for example "foo.bar.com/x/y.z" will yield type - name "y.z". + name "y.z". - JSON + JSON - ==== + ==== - The JSON representation of an `Any` value uses the regular + The JSON representation of an `Any` value uses the regular - representation of the deserialized, embedded message, with an + representation of the deserialized, embedded message, with an - additional field `@type` which contains the type URL. Example: + additional field `@type` which contains the type URL. Example: - package google.profile; - message Person { - string first_name = 1; - string last_name = 2; - } + package google.profile; + message Person { + string first_name = 1; + string last_name = 2; + } - { - "@type": "type.googleapis.com/google.profile.Person", - "firstName": , - "lastName": - } + { + "@type": "type.googleapis.com/google.profile.Person", + "firstName": , + "lastName": + } - If the embedded message type is well-known and has a custom JSON + If the embedded message type is well-known and has a custom JSON - representation, that representation will be embedded adding a - field + representation, that representation will be embedded adding a field + + `value` which holds the custom JSON in addition to the `@type` + + field. Example (for message [google.protobuf.Duration][]): + + { + "@type": "type.googleapis.com/google.protobuf.Duration", + "value": "1.212s" + } + jailed: + type: boolean + format: boolean + description: >- + jailed defined whether the validator has been jailed from bonded + status or not. + status: + description: status is the validator status (bonded/unbonding/unbonded). + type: string + enum: + - BOND_STATUS_UNSPECIFIED + - BOND_STATUS_UNBONDED + - BOND_STATUS_UNBONDING + - BOND_STATUS_BONDED + default: BOND_STATUS_UNSPECIFIED + tokens: + type: string + description: tokens define the delegated tokens (incl. self-delegation). + delegator_shares: + type: string + description: >- + delegator_shares defines total shares issued to a validator's + delegators. + description: + description: description defines the description terms for the validator. + type: object + properties: + moniker: + type: string + description: moniker defines a human-readable name for the validator. + identity: + type: string + description: >- + identity defines an optional identity signature (ex. UPort or + Keybase). + website: + type: string + description: website defines an optional website link. + security_contact: + type: string + description: security_contact defines an optional email for security contact. + details: + type: string + description: details define other optional details. + unbonding_height: + type: string + format: int64 + description: >- + unbonding_height defines, if unbonding, the height at which this + validator has begun unbonding. + unbonding_time: + type: string + format: date-time + description: >- + unbonding_time defines, if unbonding, the min time for the validator + to complete unbonding. + commission: + description: commission defines the commission parameters. + type: object + properties: + commission_rates: + description: >- + commission_rates defines the initial commission rates to be used + for creating a validator. + type: object + properties: + rate: + type: string + description: >- + rate is the commission rate charged to delegators, as a + fraction. + max_rate: + type: string + description: >- + max_rate defines the maximum commission rate which validator + can ever charge, as a fraction. + max_change_rate: + type: string + description: >- + max_change_rate defines the maximum daily increase of the + validator commission, as a fraction. + update_time: + type: string + format: date-time + description: update_time is the last time the commission rate was changed. + min_self_delegation: + type: string + description: >- + min_self_delegation is the validator's self declared minimum self + delegation. + description: >- + Validator defines a validator, together with the total amount of the + + Validator's bond shares and their exchange rate to coins. Slashing results + in + + a decrease in the exchange rate, allowing correct calculation of future + + undelegations without iterating over delegators. When coins are delegated + to + + this validator, the validator is credited with a delegation whose number + of + + bond shares is based on the amount of coins delegated divided by the + current + + exchange rate. Voting power can be calculated as total bonded shares + + multiplied by exchange rate. + cosmos.base.abci.v1beta1.ABCIMessageLog: + type: object + properties: + msg_index: + type: integer + format: int64 + log: + type: string + events: + type: array + items: + type: object + properties: + type: + type: string + attributes: + type: array + items: + type: object + properties: + key: + type: string + value: + type: string + description: >- + Attribute defines an attribute wrapper where the key and value + are + + strings instead of raw bytes. + description: |- + StringEvent defines en Event object wrapper where all the attributes + contain key/value pairs that are strings instead of raw bytes. + description: |- + Events contains a slice of Event objects that were emitted during some + execution. + description: >- + ABCIMessageLog defines a structure containing an indexed tx ABCI message + log. + cosmos.base.abci.v1beta1.Attribute: + type: object + properties: + key: + type: string + value: + type: string + description: |- + Attribute defines an attribute wrapper where the key and value are + strings instead of raw bytes. + cosmos.base.abci.v1beta1.GasInfo: + type: object + properties: + gas_wanted: + type: string + format: uint64 + description: GasWanted is the maximum units of work we allow this tx to perform. + gas_used: + type: string + format: uint64 + description: GasUsed is the amount of gas actually consumed. + description: GasInfo defines tx execution gas context. + cosmos.base.abci.v1beta1.Result: + type: object + properties: + data: + type: string + format: byte + description: >- + Data is any data returned from message or handler execution. It MUST + be + + length prefixed in order to separate data from multiple message + executions. + log: + type: string + description: Log contains the log information from message or handler execution. + events: + type: array + items: + type: object + properties: + type: + type: string + attributes: + type: array + items: + type: object + properties: + key: + type: string + format: byte + value: + type: string + format: byte + index: + type: boolean + format: boolean + description: >- + EventAttribute is a single key-value pair, associated with an + event. + description: >- + Event allows application developers to attach additional information + to + + ResponseBeginBlock, ResponseEndBlock, ResponseCheckTx and + ResponseDeliverTx. + + Later, transactions may be queried using these events. + description: >- + Events contains a slice of Event objects that were emitted during + message + + or handler execution. + description: Result is the union of ResponseFormat and ResponseCheckTx. + cosmos.base.abci.v1beta1.StringEvent: + type: object + properties: + type: + type: string + attributes: + type: array + items: + type: object + properties: + key: + type: string + value: + type: string + description: |- + Attribute defines an attribute wrapper where the key and value are + strings instead of raw bytes. + description: |- + StringEvent defines en Event object wrapper where all the attributes + contain key/value pairs that are strings instead of raw bytes. + cosmos.base.abci.v1beta1.TxResponse: + type: object + properties: + height: + type: string + format: int64 + title: The block height + txhash: + type: string + description: The transaction hash. + codespace: + type: string + title: Namespace for the Code + code: + type: integer + format: int64 + description: Response code. + data: + type: string + description: 'Result bytes, if any.' + raw_log: + type: string + description: |- + The output of the application's logger (raw string). May be + non-deterministic. + logs: + type: array + items: + type: object + properties: + msg_index: + type: integer + format: int64 + log: + type: string + events: + type: array + items: + type: object + properties: + type: + type: string + attributes: + type: array + items: + type: object + properties: + key: + type: string + value: + type: string + description: >- + Attribute defines an attribute wrapper where the key and + value are - `value` which holds the custom JSON in addition to the `@type` + strings instead of raw bytes. + description: >- + StringEvent defines en Event object wrapper where all the + attributes - field. Example (for message [google.protobuf.Duration][]): + contain key/value pairs that are strings instead of raw bytes. + description: >- + Events contains a slice of Event objects that were emitted + during some - { - "@type": "type.googleapis.com/google.protobuf.Duration", - "value": "1.212s" - } - description: |- - IdentifiedClientState defines a client state with an additional client - identifier field. - proof: - type: string - format: byte - title: merkle proof of existence - proof_height: - title: height at which the proof was retrieved - type: object - properties: - version_number: - type: string - format: uint64 - title: the version that the client is currently on - version_height: - type: string - format: uint64 - title: the height within the given version + execution. + description: >- + ABCIMessageLog defines a structure containing an indexed tx ABCI + message log. description: >- - Normally the VersionHeight is incremented at each height while keeping - version - - number the same However some consensus algorithms may choose to reset - the - - height in certain conditions e.g. hard forks, state-machine breaking - changes - - In these cases, the version number is incremented so that height - continues to - - be monitonically increasing even as the VersionHeight gets reset - title: |- - QueryChannelClientStateResponse is the Response type for the - Query/QueryChannelClientState RPC method - ibc.core.channel.v1.QueryChannelConsensusStateResponse: - type: object - properties: - consensus_state: - title: consensus state associated with the channel + The output of the application's logger (typed). May be + non-deterministic. + info: + type: string + description: Additional information. May be non-deterministic. + gas_wanted: + type: string + format: int64 + description: Amount of gas requested for transaction. + gas_used: + type: string + format: int64 + description: Amount of gas consumed by transaction. + tx: type: object properties: type_url: @@ -36983,1250 +40473,1191 @@ definitions: "@type": "type.googleapis.com/google.protobuf.Duration", "value": "1.212s" } - client_id: + timestamp: type: string - title: client ID associated with the consensus state - proof: + description: >- + Time of the previous block. For heights > 1, it's the weighted median + of + + the timestamps of the valid votes in the block.LastCommit. For height + == 1, + + it's genesis time. + description: >- + TxResponse defines a structure containing relevant tx data and metadata. + The + + tags are stringified and the log is JSON decoded. + cosmos.crypto.multisig.v1beta1.CompactBitArray: + type: object + properties: + extra_bits_stored: + type: integer + format: int64 + elems: type: string format: byte - title: merkle proof of existence - proof_height: - title: height at which the proof was retrieved - type: object - properties: - version_number: - type: string - format: uint64 - title: the version that the client is currently on - version_height: - type: string - format: uint64 - title: the height within the given version + description: |- + CompactBitArray is an implementation of a space efficient bit array. + This is used to ensure that the encoded data takes up a minimal amount of + space after proto encoding. + This is not thread safe, and is not intended for concurrent usage. + cosmos.tx.signing.v1beta1.SignMode: + type: string + enum: + - SIGN_MODE_UNSPECIFIED + - SIGN_MODE_DIRECT + - SIGN_MODE_TEXTUAL + - SIGN_MODE_LEGACY_AMINO_JSON + default: SIGN_MODE_UNSPECIFIED + description: |- + SignMode represents a signing mode with its own security guarantees. + + - SIGN_MODE_UNSPECIFIED: SIGN_MODE_UNSPECIFIED specifies an unknown signing mode and will be + rejected + - SIGN_MODE_DIRECT: SIGN_MODE_DIRECT specifies a signing mode which uses SignDoc and is + verified with raw bytes from Tx + - SIGN_MODE_TEXTUAL: SIGN_MODE_TEXTUAL is a future signing mode that will verify some + human-readable textual representation on top of the binary representation + from SIGN_MODE_DIRECT + - SIGN_MODE_LEGACY_AMINO_JSON: SIGN_MODE_LEGACY_AMINO_JSON is a backwards compatibility mode which uses + Amino JSON and will be removed in the future + cosmos.tx.v1beta1.AuthInfo: + type: object + properties: + signer_infos: + type: array + items: + $ref: '#/definitions/cosmos.tx.v1beta1.SignerInfo' description: >- - Normally the VersionHeight is incremented at each height while keeping - version + signer_infos defines the signing modes for the required signers. The + number - number the same However some consensus algorithms may choose to reset + and order of elements must match the required signers from TxBody's + + messages. The first element is the primary signer and the one which + pays + + the fee. + fee: + description: >- + Fee is the fee and gas limit for the transaction. The first signer is the - height in certain conditions e.g. hard forks, state-machine breaking - changes + primary signer and the one which pays the fee. The fee can be + calculated - In these cases, the version number is incremented so that height - continues to + based on the cost of evaluating the body and doing signature + verification - be monitonically increasing even as the VersionHeight gets reset - title: |- - QueryChannelClientStateResponse is the Response type for the - Query/QueryChannelClientState RPC method - ibc.core.channel.v1.QueryChannelResponse: - type: object - properties: - channel: - title: channel associated with the request identifiers + of the signers. This can be estimated via simulation. type: object properties: - state: - title: current state of the channel end - type: string - enum: - - STATE_UNINITIALIZED_UNSPECIFIED - - STATE_INIT - - STATE_TRYOPEN - - STATE_OPEN - - STATE_CLOSED - default: STATE_UNINITIALIZED_UNSPECIFIED - description: |- - State defines if a channel is in one of the following states: - CLOSED, INIT, TRYOPEN, OPEN or UNINITIALIZED. - - - STATE_UNINITIALIZED_UNSPECIFIED: Default State - - STATE_INIT: A channel has just started the opening handshake. - - STATE_TRYOPEN: A channel has acknowledged the handshake step on the counterparty chain. - - STATE_OPEN: A channel has completed the handshake. Open channels are - ready to send and receive packets. - - STATE_CLOSED: A channel has been closed and can no longer be used to send or receive - packets. - ordering: - title: whether the channel is ordered or unordered - type: string - enum: - - ORDER_NONE_UNSPECIFIED - - ORDER_UNORDERED - - ORDER_ORDERED - default: ORDER_NONE_UNSPECIFIED - description: |- - - ORDER_NONE_UNSPECIFIED: zero-value for channel ordering - - ORDER_UNORDERED: packets can be delivered in any order, which may differ from the order in - which they were sent. - - ORDER_ORDERED: packets are delivered exactly in the order which they were sent - counterparty: - title: counterparty channel end - type: object - properties: - port_id: - type: string - description: >- - port on the counterparty chain which owns the other end of the - channel. - channel_id: - type: string - title: channel end on the counterparty chain - connection_hops: + amount: type: array items: - type: string - title: >- - list of connection identifiers, in order, along which packets sent - on + type: object + properties: + denom: + type: string + amount: + type: string + description: >- + Coin defines a token with a denomination and an amount. - this channel will travel - version: - type: string - title: 'opaque channel version, which is agreed upon during the handshake' - description: >- - Channel defines pipeline for exactly-once packet delivery between - specific - modules on separate blockchains, which has at least one end capable of + NOTE: The amount field is an Int which implements the custom + method - sending packets and one end capable of receiving packets. - proof: - type: string - format: byte - title: merkle proof of existence - proof_height: - title: height at which the proof was retrieved - type: object - properties: - version_number: + signatures required by gogoproto. + title: amount is the amount of coins to be paid as a fee + gas_limit: type: string format: uint64 - title: the version that the client is currently on - version_height: + title: >- + gas_limit is the maximum gas that can be used in transaction + processing + + before an out of gas error occurs + payer: type: string - format: uint64 - title: the height within the given version - description: >- - Normally the VersionHeight is incremented at each height while keeping - version + description: >- + if unset, the first signer is responsible for paying the fees. If + set, the specified account must pay the fees. - number the same However some consensus algorithms may choose to reset - the + the payer must be a tx signer (and thus have signed this field in + AuthInfo). - height in certain conditions e.g. hard forks, state-machine breaking - changes + setting this field does *not* change the ordering of required + signers for the transaction. + granter: + type: string + title: >- + if set, the fee payer (either the first signer or the value of the + payer field) requests that a fee grant be used - In these cases, the version number is incremented so that height - continues to + to pay fees instead of the fee payer's own balance. If an + appropriate fee grant does not exist or the chain does - be monitonically increasing even as the VersionHeight gets reset + not support fee grants, this will fail + description: |- + AuthInfo describes the fee and signer modes that are used to sign a + transaction. + cosmos.tx.v1beta1.BroadcastMode: + type: string + enum: + - BROADCAST_MODE_UNSPECIFIED + - BROADCAST_MODE_BLOCK + - BROADCAST_MODE_SYNC + - BROADCAST_MODE_ASYNC + default: BROADCAST_MODE_UNSPECIFIED description: >- - QueryChannelResponse is the response type for the Query/Channel RPC + BroadcastMode specifies the broadcast mode for the TxService.Broadcast RPC method. - Besides the Channel end, it includes a proof and the height from which the - - proof was retrieved. - ibc.core.channel.v1.QueryChannelsResponse: + - BROADCAST_MODE_UNSPECIFIED: zero-value for mode ordering + - BROADCAST_MODE_BLOCK: BROADCAST_MODE_BLOCK defines a tx broadcasting mode where the client waits for + the tx to be committed in a block. + - BROADCAST_MODE_SYNC: BROADCAST_MODE_SYNC defines a tx broadcasting mode where the client waits for + a CheckTx execution response only. + - BROADCAST_MODE_ASYNC: BROADCAST_MODE_ASYNC defines a tx broadcasting mode where the client returns + immediately. + cosmos.tx.v1beta1.BroadcastTxRequest: type: object properties: - channels: - type: array - items: - type: object - properties: - state: - title: current state of the channel end - type: string - enum: - - STATE_UNINITIALIZED_UNSPECIFIED - - STATE_INIT - - STATE_TRYOPEN - - STATE_OPEN - - STATE_CLOSED - default: STATE_UNINITIALIZED_UNSPECIFIED - description: |- - State defines if a channel is in one of the following states: - CLOSED, INIT, TRYOPEN, OPEN or UNINITIALIZED. - - - STATE_UNINITIALIZED_UNSPECIFIED: Default State - - STATE_INIT: A channel has just started the opening handshake. - - STATE_TRYOPEN: A channel has acknowledged the handshake step on the counterparty chain. - - STATE_OPEN: A channel has completed the handshake. Open channels are - ready to send and receive packets. - - STATE_CLOSED: A channel has been closed and can no longer be used to send or receive - packets. - ordering: - title: whether the channel is ordered or unordered - type: string - enum: - - ORDER_NONE_UNSPECIFIED - - ORDER_UNORDERED - - ORDER_ORDERED - default: ORDER_NONE_UNSPECIFIED - description: |- - - ORDER_NONE_UNSPECIFIED: zero-value for channel ordering - - ORDER_UNORDERED: packets can be delivered in any order, which may differ from the order in - which they were sent. - - ORDER_ORDERED: packets are delivered exactly in the order which they were sent - counterparty: - title: counterparty channel end + tx_bytes: + type: string + format: byte + description: tx_bytes is the raw transaction. + mode: + type: string + enum: + - BROADCAST_MODE_UNSPECIFIED + - BROADCAST_MODE_BLOCK + - BROADCAST_MODE_SYNC + - BROADCAST_MODE_ASYNC + default: BROADCAST_MODE_UNSPECIFIED + description: >- + BroadcastMode specifies the broadcast mode for the TxService.Broadcast + RPC method. + + - BROADCAST_MODE_UNSPECIFIED: zero-value for mode ordering + - BROADCAST_MODE_BLOCK: BROADCAST_MODE_BLOCK defines a tx broadcasting mode where the client waits for + the tx to be committed in a block. + - BROADCAST_MODE_SYNC: BROADCAST_MODE_SYNC defines a tx broadcasting mode where the client waits for + a CheckTx execution response only. + - BROADCAST_MODE_ASYNC: BROADCAST_MODE_ASYNC defines a tx broadcasting mode where the client returns + immediately. + description: |- + BroadcastTxRequest is the request type for the Service.BroadcastTxRequest + RPC method. + cosmos.tx.v1beta1.BroadcastTxResponse: + type: object + properties: + tx_response: + type: object + properties: + height: + type: string + format: int64 + title: The block height + txhash: + type: string + description: The transaction hash. + codespace: + type: string + title: Namespace for the Code + code: + type: integer + format: int64 + description: Response code. + data: + type: string + description: 'Result bytes, if any.' + raw_log: + type: string + description: |- + The output of the application's logger (raw string). May be + non-deterministic. + logs: + type: array + items: type: object properties: - port_id: + msg_index: + type: integer + format: int64 + log: type: string + events: + type: array + items: + type: object + properties: + type: + type: string + attributes: + type: array + items: + type: object + properties: + key: + type: string + value: + type: string + description: >- + Attribute defines an attribute wrapper where the key + and value are + + strings instead of raw bytes. + description: >- + StringEvent defines en Event object wrapper where all the + attributes + + contain key/value pairs that are strings instead of raw + bytes. description: >- - port on the counterparty chain which owns the other end of - the channel. - channel_id: - type: string - title: channel end on the counterparty chain - connection_hops: - type: array - items: - type: string - title: >- - list of connection identifiers, in order, along which packets - sent on + Events contains a slice of Event objects that were emitted + during some - this channel will travel - version: - type: string - title: >- - opaque channel version, which is agreed upon during the - handshake - port_id: - type: string - title: port identifier - channel_id: - type: string - title: channel identifier - description: |- - IdentifiedChannel defines a channel with additional port and channel - identifier fields. - description: list of stored channels of the chain. - pagination: - title: pagination response - type: object - properties: - next_key: + execution. + description: >- + ABCIMessageLog defines a structure containing an indexed tx ABCI + message log. + description: >- + The output of the application's logger (typed). May be + non-deterministic. + info: type: string - format: byte - title: |- - next_key is the key to be passed to PageRequest.key to - query the next page most efficiently - total: + description: Additional information. May be non-deterministic. + gas_wanted: type: string - format: uint64 - title: >- - total is total number of results available if - PageRequest.count_total + format: int64 + description: Amount of gas requested for transaction. + gas_used: + type: string + format: int64 + description: Amount of gas consumed by transaction. + tx: + type: object + properties: + type_url: + type: string + description: >- + A URL/resource name that uniquely identifies the type of the + serialized - was set, its value is undefined otherwise - description: |- - PageResponse is to be embedded in gRPC response messages where the - corresponding request message has used PageRequest. + protocol buffer message. This string must contain at least - message SomeResponse { - repeated Bar results = 1; - PageResponse page = 2; - } - height: - title: query block height - type: object - properties: - version_number: - type: string - format: uint64 - title: the version that the client is currently on - version_height: - type: string - format: uint64 - title: the height within the given version - description: >- - Normally the VersionHeight is incremented at each height while keeping - version + one "/" character. The last segment of the URL's path must + represent - number the same However some consensus algorithms may choose to reset - the + the fully qualified name of the type (as in - height in certain conditions e.g. hard forks, state-machine breaking - changes + `path/google.protobuf.Duration`). The name should be in a + canonical form - In these cases, the version number is incremented so that height - continues to + (e.g., leading "." is not accepted). - be monitonically increasing even as the VersionHeight gets reset - description: >- - QueryChannelsResponse is the response type for the Query/Channels RPC - method. - ibc.core.channel.v1.QueryConnectionChannelsResponse: - type: object - properties: - channels: - type: array - items: - type: object - properties: - state: - title: current state of the channel end - type: string - enum: - - STATE_UNINITIALIZED_UNSPECIFIED - - STATE_INIT - - STATE_TRYOPEN - - STATE_OPEN - - STATE_CLOSED - default: STATE_UNINITIALIZED_UNSPECIFIED - description: |- - State defines if a channel is in one of the following states: - CLOSED, INIT, TRYOPEN, OPEN or UNINITIALIZED. - - - STATE_UNINITIALIZED_UNSPECIFIED: Default State - - STATE_INIT: A channel has just started the opening handshake. - - STATE_TRYOPEN: A channel has acknowledged the handshake step on the counterparty chain. - - STATE_OPEN: A channel has completed the handshake. Open channels are - ready to send and receive packets. - - STATE_CLOSED: A channel has been closed and can no longer be used to send or receive - packets. - ordering: - title: whether the channel is ordered or unordered - type: string - enum: - - ORDER_NONE_UNSPECIFIED - - ORDER_UNORDERED - - ORDER_ORDERED - default: ORDER_NONE_UNSPECIFIED - description: |- - - ORDER_NONE_UNSPECIFIED: zero-value for channel ordering - - ORDER_UNORDERED: packets can be delivered in any order, which may differ from the order in - which they were sent. - - ORDER_ORDERED: packets are delivered exactly in the order which they were sent - counterparty: - title: counterparty channel end - type: object - properties: - port_id: - type: string - description: >- - port on the counterparty chain which owns the other end of - the channel. - channel_id: - type: string - title: channel end on the counterparty chain - connection_hops: - type: array - items: - type: string - title: >- - list of connection identifiers, in order, along which packets - sent on - this channel will travel - version: - type: string - title: >- - opaque channel version, which is agreed upon during the - handshake - port_id: - type: string - title: port identifier - channel_id: - type: string - title: channel identifier - description: |- - IdentifiedChannel defines a channel with additional port and channel - identifier fields. - description: list of channels associated with a connection. - pagination: - title: pagination response - type: object - properties: - next_key: - type: string - format: byte - title: |- - next_key is the key to be passed to PageRequest.key to - query the next page most efficiently - total: - type: string - format: uint64 - title: >- - total is total number of results available if - PageRequest.count_total + In practice, teams usually precompile into the binary all + types that they - was set, its value is undefined otherwise - description: |- - PageResponse is to be embedded in gRPC response messages where the - corresponding request message has used PageRequest. + expect it to use in the context of Any. However, for URLs + which use the - message SomeResponse { - repeated Bar results = 1; - PageResponse page = 2; - } - height: - title: query block height - type: object - properties: - version_number: - type: string - format: uint64 - title: the version that the client is currently on - version_height: - type: string - format: uint64 - title: the height within the given version - description: >- - Normally the VersionHeight is incremented at each height while keeping - version + scheme `http`, `https`, or no scheme, one can optionally set + up a type - number the same However some consensus algorithms may choose to reset - the + server that maps type URLs to message definitions as follows: - height in certain conditions e.g. hard forks, state-machine breaking - changes - In these cases, the version number is incremented so that height - continues to + * If no scheme is provided, `https` is assumed. - be monitonically increasing even as the VersionHeight gets reset - title: |- - QueryConnectionChannelsResponse is the Response type for the - Query/QueryConnectionChannels RPC method - ibc.core.channel.v1.QueryNextSequenceReceiveResponse: - type: object - properties: - next_sequence_receive: - type: string - format: uint64 - title: next sequence receive number - proof: - type: string - format: byte - title: merkle proof of existence - proof_height: - title: height at which the proof was retrieved - type: object - properties: - version_number: - type: string - format: uint64 - title: the version that the client is currently on - version_height: - type: string - format: uint64 - title: the height within the given version - description: >- - Normally the VersionHeight is incremented at each height while keeping - version + * An HTTP GET on the URL must yield a [google.protobuf.Type][] + value in binary format, or produce an error. + * Applications are allowed to cache lookup results based on + the + URL, or have them precompiled into a binary to avoid any + lookup. Therefore, binary compatibility needs to be preserved + on changes to types. (Use versioned type names to manage + breaking changes.) - number the same However some consensus algorithms may choose to reset - the + Note: this functionality is not currently available in the + official - height in certain conditions e.g. hard forks, state-machine breaking - changes + protobuf release, and it is not used for type URLs beginning + with - In these cases, the version number is incremented so that height - continues to + type.googleapis.com. - be monitonically increasing even as the VersionHeight gets reset - title: |- - QuerySequenceResponse is the request type for the - Query/QueryNextSequenceReceiveResponse RPC method - ibc.core.channel.v1.QueryPacketAcknowledgementResponse: - type: object - properties: - acknowledgement: - type: string - format: byte - title: packet associated with the request fields - proof: - type: string - format: byte - title: merkle proof of existence - proof_height: - title: height at which the proof was retrieved - type: object - properties: - version_number: - type: string - format: uint64 - title: the version that the client is currently on - version_height: - type: string - format: uint64 - title: the height within the given version - description: >- - Normally the VersionHeight is incremented at each height while keeping - version - number the same However some consensus algorithms may choose to reset - the + Schemes other than `http`, `https` (or the empty scheme) might + be - height in certain conditions e.g. hard forks, state-machine breaking - changes + used with implementation specific semantics. + value: + type: string + format: byte + description: >- + Must be a valid serialized protocol buffer of the above + specified type. + description: >- + `Any` contains an arbitrary serialized protocol buffer message + along with a - In these cases, the version number is incremented so that height - continues to + URL that describes the type of the serialized message. - be monitonically increasing even as the VersionHeight gets reset - title: |- - QueryPacketAcknowledgementResponse defines the client query response for a - packet which also includes a proof and the height from which the - proof was retrieved - ibc.core.channel.v1.QueryPacketAcknowledgementsResponse: - type: object - properties: - acknowledgements: - type: array - items: - type: object - properties: - port_id: - type: string - description: channel port identifier. - channel_id: - type: string - description: channel unique identifier. - sequence: - type: string - format: uint64 - description: packet sequence. - data: - type: string - format: byte - description: embedded data that represents packet state. - description: >- - PacketState defines the generic type necessary to retrieve and store - packet commitments, acknowledgements, and receipts. + Protobuf library provides support to pack/unpack Any values in the + form - Caller is responsible for knowing the context necessary to interpret - this + of utility functions or additional generated methods of the Any + type. - state as a commitment, acknowledgement, or a receipt. - pagination: - title: pagination response - type: object - properties: - next_key: - type: string - format: byte - title: |- - next_key is the key to be passed to PageRequest.key to - query the next page most efficiently - total: - type: string - format: uint64 - title: >- - total is total number of results available if - PageRequest.count_total - was set, its value is undefined otherwise - description: |- - PageResponse is to be embedded in gRPC response messages where the - corresponding request message has used PageRequest. + Example 1: Pack and unpack a message in C++. - message SomeResponse { - repeated Bar results = 1; - PageResponse page = 2; - } - height: - title: query block height - type: object - properties: - version_number: - type: string - format: uint64 - title: the version that the client is currently on - version_height: - type: string - format: uint64 - title: the height within the given version - description: >- - Normally the VersionHeight is incremented at each height while keeping - version + Foo foo = ...; + Any any; + any.PackFrom(foo); + ... + if (any.UnpackTo(&foo)) { + ... + } - number the same However some consensus algorithms may choose to reset - the + Example 2: Pack and unpack a message in Java. - height in certain conditions e.g. hard forks, state-machine breaking - changes + Foo foo = ...; + Any any = Any.pack(foo); + ... + if (any.is(Foo.class)) { + foo = any.unpack(Foo.class); + } - In these cases, the version number is incremented so that height - continues to + Example 3: Pack and unpack a message in Python. - be monitonically increasing even as the VersionHeight gets reset - title: |- - QueryPacketAcknowledgemetsResponse is the request type for the - Query/QueryPacketAcknowledgements RPC method - ibc.core.channel.v1.QueryPacketCommitmentResponse: - type: object - properties: - commitment: - type: string - format: byte - title: packet associated with the request fields - proof: - type: string - format: byte - title: merkle proof of existence - proof_height: - title: height at which the proof was retrieved - type: object - properties: - version_number: - type: string - format: uint64 - title: the version that the client is currently on - version_height: - type: string - format: uint64 - title: the height within the given version - description: >- - Normally the VersionHeight is incremented at each height while keeping - version + foo = Foo(...) + any = Any() + any.Pack(foo) + ... + if any.Is(Foo.DESCRIPTOR): + any.Unpack(foo) + ... - number the same However some consensus algorithms may choose to reset - the + Example 4: Pack and unpack a message in Go - height in certain conditions e.g. hard forks, state-machine breaking - changes + foo := &pb.Foo{...} + any, err := ptypes.MarshalAny(foo) + ... + foo := &pb.Foo{} + if err := ptypes.UnmarshalAny(any, foo); err != nil { + ... + } - In these cases, the version number is incremented so that height - continues to + The pack methods provided by protobuf library will by default use - be monitonically increasing even as the VersionHeight gets reset - title: >- - QueryPacketCommitmentResponse defines the client query response for a - packet + 'type.googleapis.com/full.type.name' as the type URL and the + unpack - which also includes a proof and the height from which the proof was + methods only use the fully qualified type name after the last '/' - retrieved - ibc.core.channel.v1.QueryPacketCommitmentsResponse: - type: object - properties: - commitments: - type: array - items: - type: object - properties: - port_id: - type: string - description: channel port identifier. - channel_id: - type: string - description: channel unique identifier. - sequence: - type: string - format: uint64 - description: packet sequence. - data: - type: string - format: byte - description: embedded data that represents packet state. - description: >- - PacketState defines the generic type necessary to retrieve and store + in the type URL, for example "foo.bar.com/x/y.z" will yield type - packet commitments, acknowledgements, and receipts. + name "y.z". - Caller is responsible for knowing the context necessary to interpret - this - state as a commitment, acknowledgement, or a receipt. - pagination: - title: pagination response - type: object - properties: - next_key: - type: string - format: byte - title: |- - next_key is the key to be passed to PageRequest.key to - query the next page most efficiently - total: - type: string - format: uint64 - title: >- - total is total number of results available if - PageRequest.count_total - was set, its value is undefined otherwise - description: |- - PageResponse is to be embedded in gRPC response messages where the - corresponding request message has used PageRequest. + JSON - message SomeResponse { - repeated Bar results = 1; - PageResponse page = 2; - } - height: - title: query block height - type: object - properties: - version_number: - type: string - format: uint64 - title: the version that the client is currently on - version_height: - type: string - format: uint64 - title: the height within the given version - description: >- - Normally the VersionHeight is incremented at each height while keeping - version + ==== - number the same However some consensus algorithms may choose to reset - the + The JSON representation of an `Any` value uses the regular - height in certain conditions e.g. hard forks, state-machine breaking - changes + representation of the deserialized, embedded message, with an - In these cases, the version number is incremented so that height - continues to + additional field `@type` which contains the type URL. Example: - be monitonically increasing even as the VersionHeight gets reset - title: |- - QueryPacketCommitmentsResponse is the request type for the - Query/QueryPacketCommitments RPC method - ibc.core.channel.v1.QueryPacketReceiptResponse: - type: object - properties: - received: - type: boolean - title: success flag for if receipt exists - proof: - type: string - format: byte - title: merkle proof of existence - proof_height: - title: height at which the proof was retrieved - type: object - properties: - version_number: - type: string - format: uint64 - title: the version that the client is currently on - version_height: - type: string - format: uint64 - title: the height within the given version - description: >- - Normally the VersionHeight is incremented at each height while keeping - version + package google.profile; + message Person { + string first_name = 1; + string last_name = 2; + } - number the same However some consensus algorithms may choose to reset - the + { + "@type": "type.googleapis.com/google.profile.Person", + "firstName": , + "lastName": + } - height in certain conditions e.g. hard forks, state-machine breaking - changes + If the embedded message type is well-known and has a custom JSON - In these cases, the version number is incremented so that height - continues to + representation, that representation will be embedded adding a + field - be monitonically increasing even as the VersionHeight gets reset - title: >- - QueryPacketReceiptResponse defines the client query response for a packet - receipt + `value` which holds the custom JSON in addition to the `@type` - which also includes a proof, and the height from which the proof was + field. Example (for message [google.protobuf.Duration][]): - retrieved - ibc.core.channel.v1.QueryUnreceivedAcksResponse: - type: object - properties: - sequences: - type: array - items: - type: string - format: uint64 - title: list of unreceived acknowledgement sequences - height: - title: query block height - type: object - properties: - version_number: - type: string - format: uint64 - title: the version that the client is currently on - version_height: + { + "@type": "type.googleapis.com/google.protobuf.Duration", + "value": "1.212s" + } + timestamp: type: string - format: uint64 - title: the height within the given version - description: >- - Normally the VersionHeight is incremented at each height while keeping - version - - number the same However some consensus algorithms may choose to reset - the + description: >- + Time of the previous block. For heights > 1, it's the weighted + median of - height in certain conditions e.g. hard forks, state-machine breaking - changes + the timestamps of the valid votes in the block.LastCommit. For + height == 1, - In these cases, the version number is incremented so that height - continues to + it's genesis time. + description: >- + TxResponse defines a structure containing relevant tx data and + metadata. The - be monitonically increasing even as the VersionHeight gets reset - title: |- - QueryUnreceivedAcksResponse is the response type for the - Query/UnreceivedAcks RPC method - ibc.core.channel.v1.QueryUnreceivedPacketsResponse: + tags are stringified and the log is JSON decoded. + description: |- + BroadcastTxResponse is the response type for the + Service.BroadcastTx method. + cosmos.tx.v1beta1.Fee: type: object properties: - sequences: + amount: type: array items: - type: string - format: uint64 - title: list of unreceived packet sequences - height: - title: query block height - type: object - properties: - version_number: - type: string - format: uint64 - title: the version that the client is currently on - version_height: - type: string - format: uint64 - title: the height within the given version - description: >- - Normally the VersionHeight is incremented at each height while keeping - version - - number the same However some consensus algorithms may choose to reset - the - - height in certain conditions e.g. hard forks, state-machine breaking - changes - - In these cases, the version number is incremented so that height - continues to + type: object + properties: + denom: + type: string + amount: + type: string + description: |- + Coin defines a token with a denomination and an amount. - be monitonically increasing even as the VersionHeight gets reset - title: |- - QueryUnreceivedPacketsResponse is the response type for the - Query/UnreceivedPacketCommitments RPC method - ibc.core.channel.v1.State: - type: string - enum: - - STATE_UNINITIALIZED_UNSPECIFIED - - STATE_INIT - - STATE_TRYOPEN - - STATE_OPEN - - STATE_CLOSED - default: STATE_UNINITIALIZED_UNSPECIFIED - description: |- - State defines if a channel is in one of the following states: - CLOSED, INIT, TRYOPEN, OPEN or UNINITIALIZED. - - - STATE_UNINITIALIZED_UNSPECIFIED: Default State - - STATE_INIT: A channel has just started the opening handshake. - - STATE_TRYOPEN: A channel has acknowledged the handshake step on the counterparty chain. - - STATE_OPEN: A channel has completed the handshake. Open channels are - ready to send and receive packets. - - STATE_CLOSED: A channel has been closed and can no longer be used to send or receive - packets. - ibc.core.client.v1.Height: - type: object - properties: - version_number: + NOTE: The amount field is an Int which implements the custom method + signatures required by gogoproto. + title: amount is the amount of coins to be paid as a fee + gas_limit: type: string format: uint64 - title: the version that the client is currently on - version_height: + title: >- + gas_limit is the maximum gas that can be used in transaction + processing + + before an out of gas error occurs + payer: type: string - format: uint64 - title: the height within the given version - description: >- - Normally the VersionHeight is incremented at each height while keeping - version + description: >- + if unset, the first signer is responsible for paying the fees. If set, + the specified account must pay the fees. - number the same However some consensus algorithms may choose to reset the + the payer must be a tx signer (and thus have signed this field in + AuthInfo). - height in certain conditions e.g. hard forks, state-machine breaking - changes + setting this field does *not* change the ordering of required signers + for the transaction. + granter: + type: string + title: >- + if set, the fee payer (either the first signer or the value of the + payer field) requests that a fee grant be used - In these cases, the version number is incremented so that height continues - to + to pay fees instead of the fee payer's own balance. If an appropriate + fee grant does not exist or the chain does - be monitonically increasing even as the VersionHeight gets reset - title: >- - Height is a monotonically increasing data type + not support fee grants, this will fail + description: >- + Fee includes the amount of coins paid in fees and the maximum - that can be compared against another Height for the purposes of updating - and + gas to be used by the transaction. The ratio yields an effective + "gasprice", - freezing clients - ibc.core.client.v1.IdentifiedClientState: + which must be above some miminum to be accepted into the mempool. + cosmos.tx.v1beta1.GetTxResponse: type: object properties: - client_id: - type: string - title: client identifier - client_state: - title: client state + tx: + $ref: '#/definitions/cosmos.tx.v1beta1.Tx' + description: tx is the queried transaction. + tx_response: type: object properties: - type_url: + height: + type: string + format: int64 + title: The block height + txhash: + type: string + description: The transaction hash. + codespace: + type: string + title: Namespace for the Code + code: + type: integer + format: int64 + description: Response code. + data: type: string + description: 'Result bytes, if any.' + raw_log: + type: string + description: |- + The output of the application's logger (raw string). May be + non-deterministic. + logs: + type: array + items: + type: object + properties: + msg_index: + type: integer + format: int64 + log: + type: string + events: + type: array + items: + type: object + properties: + type: + type: string + attributes: + type: array + items: + type: object + properties: + key: + type: string + value: + type: string + description: >- + Attribute defines an attribute wrapper where the key + and value are + + strings instead of raw bytes. + description: >- + StringEvent defines en Event object wrapper where all the + attributes + + contain key/value pairs that are strings instead of raw + bytes. + description: >- + Events contains a slice of Event objects that were emitted + during some + + execution. + description: >- + ABCIMessageLog defines a structure containing an indexed tx ABCI + message log. description: >- - A URL/resource name that uniquely identifies the type of the - serialized + The output of the application's logger (typed). May be + non-deterministic. + info: + type: string + description: Additional information. May be non-deterministic. + gas_wanted: + type: string + format: int64 + description: Amount of gas requested for transaction. + gas_used: + type: string + format: int64 + description: Amount of gas consumed by transaction. + tx: + type: object + properties: + type_url: + type: string + description: >- + A URL/resource name that uniquely identifies the type of the + serialized - protocol buffer message. This string must contain at least + protocol buffer message. This string must contain at least - one "/" character. The last segment of the URL's path must - represent + one "/" character. The last segment of the URL's path must + represent - the fully qualified name of the type (as in + the fully qualified name of the type (as in - `path/google.protobuf.Duration`). The name should be in a - canonical form + `path/google.protobuf.Duration`). The name should be in a + canonical form - (e.g., leading "." is not accepted). + (e.g., leading "." is not accepted). - In practice, teams usually precompile into the binary all types - that they + In practice, teams usually precompile into the binary all + types that they - expect it to use in the context of Any. However, for URLs which - use the + expect it to use in the context of Any. However, for URLs + which use the - scheme `http`, `https`, or no scheme, one can optionally set up a - type + scheme `http`, `https`, or no scheme, one can optionally set + up a type - server that maps type URLs to message definitions as follows: + server that maps type URLs to message definitions as follows: - * If no scheme is provided, `https` is assumed. + * If no scheme is provided, `https` is assumed. - * An HTTP GET on the URL must yield a [google.protobuf.Type][] - value in binary format, or produce an error. - * Applications are allowed to cache lookup results based on the - URL, or have them precompiled into a binary to avoid any - lookup. Therefore, binary compatibility needs to be preserved - on changes to types. (Use versioned type names to manage - breaking changes.) + * An HTTP GET on the URL must yield a [google.protobuf.Type][] + value in binary format, or produce an error. + * Applications are allowed to cache lookup results based on + the + URL, or have them precompiled into a binary to avoid any + lookup. Therefore, binary compatibility needs to be preserved + on changes to types. (Use versioned type names to manage + breaking changes.) - Note: this functionality is not currently available in the - official + Note: this functionality is not currently available in the + official - protobuf release, and it is not used for type URLs beginning with + protobuf release, and it is not used for type URLs beginning + with - type.googleapis.com. + type.googleapis.com. - Schemes other than `http`, `https` (or the empty scheme) might be + Schemes other than `http`, `https` (or the empty scheme) might + be - used with implementation specific semantics. - value: - type: string - format: byte + used with implementation specific semantics. + value: + type: string + format: byte + description: >- + Must be a valid serialized protocol buffer of the above + specified type. description: >- - Must be a valid serialized protocol buffer of the above specified - type. - description: >- - `Any` contains an arbitrary serialized protocol buffer message along - with a + `Any` contains an arbitrary serialized protocol buffer message + along with a - URL that describes the type of the serialized message. + URL that describes the type of the serialized message. - Protobuf library provides support to pack/unpack Any values in the - form + Protobuf library provides support to pack/unpack Any values in the + form - of utility functions or additional generated methods of the Any type. + of utility functions or additional generated methods of the Any + type. - Example 1: Pack and unpack a message in C++. + Example 1: Pack and unpack a message in C++. - Foo foo = ...; - Any any; - any.PackFrom(foo); - ... - if (any.UnpackTo(&foo)) { - ... - } + Foo foo = ...; + Any any; + any.PackFrom(foo); + ... + if (any.UnpackTo(&foo)) { + ... + } - Example 2: Pack and unpack a message in Java. + Example 2: Pack and unpack a message in Java. - Foo foo = ...; - Any any = Any.pack(foo); - ... - if (any.is(Foo.class)) { - foo = any.unpack(Foo.class); - } + Foo foo = ...; + Any any = Any.pack(foo); + ... + if (any.is(Foo.class)) { + foo = any.unpack(Foo.class); + } - Example 3: Pack and unpack a message in Python. + Example 3: Pack and unpack a message in Python. - foo = Foo(...) - any = Any() - any.Pack(foo) - ... - if any.Is(Foo.DESCRIPTOR): - any.Unpack(foo) - ... + foo = Foo(...) + any = Any() + any.Pack(foo) + ... + if any.Is(Foo.DESCRIPTOR): + any.Unpack(foo) + ... - Example 4: Pack and unpack a message in Go + Example 4: Pack and unpack a message in Go - foo := &pb.Foo{...} - any, err := ptypes.MarshalAny(foo) - ... - foo := &pb.Foo{} - if err := ptypes.UnmarshalAny(any, foo); err != nil { - ... - } + foo := &pb.Foo{...} + any, err := ptypes.MarshalAny(foo) + ... + foo := &pb.Foo{} + if err := ptypes.UnmarshalAny(any, foo); err != nil { + ... + } - The pack methods provided by protobuf library will by default use + The pack methods provided by protobuf library will by default use - 'type.googleapis.com/full.type.name' as the type URL and the unpack + 'type.googleapis.com/full.type.name' as the type URL and the + unpack - methods only use the fully qualified type name after the last '/' + methods only use the fully qualified type name after the last '/' - in the type URL, for example "foo.bar.com/x/y.z" will yield type + in the type URL, for example "foo.bar.com/x/y.z" will yield type - name "y.z". + name "y.z". - JSON + JSON - ==== + ==== - The JSON representation of an `Any` value uses the regular + The JSON representation of an `Any` value uses the regular - representation of the deserialized, embedded message, with an + representation of the deserialized, embedded message, with an - additional field `@type` which contains the type URL. Example: + additional field `@type` which contains the type URL. Example: - package google.profile; - message Person { - string first_name = 1; - string last_name = 2; - } + package google.profile; + message Person { + string first_name = 1; + string last_name = 2; + } - { - "@type": "type.googleapis.com/google.profile.Person", - "firstName": , - "lastName": - } + { + "@type": "type.googleapis.com/google.profile.Person", + "firstName": , + "lastName": + } - If the embedded message type is well-known and has a custom JSON + If the embedded message type is well-known and has a custom JSON - representation, that representation will be embedded adding a field + representation, that representation will be embedded adding a + field - `value` which holds the custom JSON in addition to the `@type` + `value` which holds the custom JSON in addition to the `@type` - field. Example (for message [google.protobuf.Duration][]): + field. Example (for message [google.protobuf.Duration][]): - { - "@type": "type.googleapis.com/google.protobuf.Duration", - "value": "1.212s" - } - description: |- - IdentifiedClientState defines a client state with an additional client - identifier field. - ibc.core.client.v1.ConsensusStateWithHeight: - type: object - properties: - height: - title: consensus state height - type: object - properties: - version_number: - type: string - format: uint64 - title: the version that the client is currently on - version_height: + { + "@type": "type.googleapis.com/google.protobuf.Duration", + "value": "1.212s" + } + timestamp: type: string - format: uint64 - title: the height within the given version + description: >- + Time of the previous block. For heights > 1, it's the weighted + median of + + the timestamps of the valid votes in the block.LastCommit. For + height == 1, + + it's genesis time. description: >- - Normally the VersionHeight is incremented at each height while keeping - version + TxResponse defines a structure containing relevant tx data and + metadata. The - number the same However some consensus algorithms may choose to reset - the + tags are stringified and the log is JSON decoded. + description: GetTxResponse is the response type for the Service.GetTx method. + cosmos.tx.v1beta1.GetTxsEventResponse: + type: object + properties: + txs: + type: array + items: + $ref: '#/definitions/cosmos.tx.v1beta1.Tx' + description: txs is the list of queried transactions. + tx_responses: + type: array + items: + type: object + properties: + height: + type: string + format: int64 + title: The block height + txhash: + type: string + description: The transaction hash. + codespace: + type: string + title: Namespace for the Code + code: + type: integer + format: int64 + description: Response code. + data: + type: string + description: 'Result bytes, if any.' + raw_log: + type: string + description: |- + The output of the application's logger (raw string). May be + non-deterministic. + logs: + type: array + items: + type: object + properties: + msg_index: + type: integer + format: int64 + log: + type: string + events: + type: array + items: + type: object + properties: + type: + type: string + attributes: + type: array + items: + type: object + properties: + key: + type: string + value: + type: string + description: >- + Attribute defines an attribute wrapper where the + key and value are - height in certain conditions e.g. hard forks, state-machine breaking - changes + strings instead of raw bytes. + description: >- + StringEvent defines en Event object wrapper where all + the attributes - In these cases, the version number is incremented so that height - continues to + contain key/value pairs that are strings instead of raw + bytes. + description: >- + Events contains a slice of Event objects that were emitted + during some - be monitonically increasing even as the VersionHeight gets reset - consensus_state: - title: consensus state - type: object - properties: - type_url: - type: string - description: >- - A URL/resource name that uniquely identifies the type of the - serialized + execution. + description: >- + ABCIMessageLog defines a structure containing an indexed tx + ABCI message log. + description: >- + The output of the application's logger (typed). May be + non-deterministic. + info: + type: string + description: Additional information. May be non-deterministic. + gas_wanted: + type: string + format: int64 + description: Amount of gas requested for transaction. + gas_used: + type: string + format: int64 + description: Amount of gas consumed by transaction. + tx: + type: object + properties: + type_url: + type: string + description: >- + A URL/resource name that uniquely identifies the type of the + serialized - protocol buffer message. This string must contain at least + protocol buffer message. This string must contain at least - one "/" character. The last segment of the URL's path must - represent + one "/" character. The last segment of the URL's path must + represent - the fully qualified name of the type (as in + the fully qualified name of the type (as in - `path/google.protobuf.Duration`). The name should be in a - canonical form + `path/google.protobuf.Duration`). The name should be in a + canonical form - (e.g., leading "." is not accepted). + (e.g., leading "." is not accepted). - In practice, teams usually precompile into the binary all types - that they + In practice, teams usually precompile into the binary all + types that they - expect it to use in the context of Any. However, for URLs which - use the + expect it to use in the context of Any. However, for URLs + which use the - scheme `http`, `https`, or no scheme, one can optionally set up a - type + scheme `http`, `https`, or no scheme, one can optionally set + up a type - server that maps type URLs to message definitions as follows: + server that maps type URLs to message definitions as + follows: - * If no scheme is provided, `https` is assumed. + * If no scheme is provided, `https` is assumed. - * An HTTP GET on the URL must yield a [google.protobuf.Type][] - value in binary format, or produce an error. - * Applications are allowed to cache lookup results based on the - URL, or have them precompiled into a binary to avoid any - lookup. Therefore, binary compatibility needs to be preserved - on changes to types. (Use versioned type names to manage - breaking changes.) + * An HTTP GET on the URL must yield a + [google.protobuf.Type][] + value in binary format, or produce an error. + * Applications are allowed to cache lookup results based on + the + URL, or have them precompiled into a binary to avoid any + lookup. Therefore, binary compatibility needs to be preserved + on changes to types. (Use versioned type names to manage + breaking changes.) + + Note: this functionality is not currently available in the + official + + protobuf release, and it is not used for type URLs beginning + with + + type.googleapis.com. + + + Schemes other than `http`, `https` (or the empty scheme) + might be + + used with implementation specific semantics. + value: + type: string + format: byte + description: >- + Must be a valid serialized protocol buffer of the above + specified type. + description: >- + `Any` contains an arbitrary serialized protocol buffer message + along with a + + URL that describes the type of the serialized message. - Note: this functionality is not currently available in the - official - protobuf release, and it is not used for type URLs beginning with + Protobuf library provides support to pack/unpack Any values in + the form - type.googleapis.com. + of utility functions or additional generated methods of the Any + type. - Schemes other than `http`, `https` (or the empty scheme) might be + Example 1: Pack and unpack a message in C++. - used with implementation specific semantics. - value: - type: string - format: byte - description: >- - Must be a valid serialized protocol buffer of the above specified - type. - description: >- - `Any` contains an arbitrary serialized protocol buffer message along - with a + Foo foo = ...; + Any any; + any.PackFrom(foo); + ... + if (any.UnpackTo(&foo)) { + ... + } - URL that describes the type of the serialized message. + Example 2: Pack and unpack a message in Java. + Foo foo = ...; + Any any = Any.pack(foo); + ... + if (any.is(Foo.class)) { + foo = any.unpack(Foo.class); + } - Protobuf library provides support to pack/unpack Any values in the - form + Example 3: Pack and unpack a message in Python. - of utility functions or additional generated methods of the Any type. + foo = Foo(...) + any = Any() + any.Pack(foo) + ... + if any.Is(Foo.DESCRIPTOR): + any.Unpack(foo) + ... + Example 4: Pack and unpack a message in Go - Example 1: Pack and unpack a message in C++. + foo := &pb.Foo{...} + any, err := ptypes.MarshalAny(foo) + ... + foo := &pb.Foo{} + if err := ptypes.UnmarshalAny(any, foo); err != nil { + ... + } - Foo foo = ...; - Any any; - any.PackFrom(foo); - ... - if (any.UnpackTo(&foo)) { - ... - } + The pack methods provided by protobuf library will by default + use - Example 2: Pack and unpack a message in Java. + 'type.googleapis.com/full.type.name' as the type URL and the + unpack - Foo foo = ...; - Any any = Any.pack(foo); - ... - if (any.is(Foo.class)) { - foo = any.unpack(Foo.class); - } + methods only use the fully qualified type name after the last + '/' - Example 3: Pack and unpack a message in Python. + in the type URL, for example "foo.bar.com/x/y.z" will yield type - foo = Foo(...) - any = Any() - any.Pack(foo) - ... - if any.Is(Foo.DESCRIPTOR): - any.Unpack(foo) - ... + name "y.z". - Example 4: Pack and unpack a message in Go - foo := &pb.Foo{...} - any, err := ptypes.MarshalAny(foo) - ... - foo := &pb.Foo{} - if err := ptypes.UnmarshalAny(any, foo); err != nil { - ... - } - The pack methods provided by protobuf library will by default use + JSON - 'type.googleapis.com/full.type.name' as the type URL and the unpack + ==== - methods only use the fully qualified type name after the last '/' + The JSON representation of an `Any` value uses the regular - in the type URL, for example "foo.bar.com/x/y.z" will yield type + representation of the deserialized, embedded message, with an - name "y.z". + additional field `@type` which contains the type URL. Example: + package google.profile; + message Person { + string first_name = 1; + string last_name = 2; + } + { + "@type": "type.googleapis.com/google.profile.Person", + "firstName": , + "lastName": + } - JSON + If the embedded message type is well-known and has a custom JSON - ==== + representation, that representation will be embedded adding a + field - The JSON representation of an `Any` value uses the regular + `value` which holds the custom JSON in addition to the `@type` - representation of the deserialized, embedded message, with an + field. Example (for message [google.protobuf.Duration][]): - additional field `@type` which contains the type URL. Example: + { + "@type": "type.googleapis.com/google.protobuf.Duration", + "value": "1.212s" + } + timestamp: + type: string + description: >- + Time of the previous block. For heights > 1, it's the weighted + median of - package google.profile; - message Person { - string first_name = 1; - string last_name = 2; - } + the timestamps of the valid votes in the block.LastCommit. For + height == 1, - { - "@type": "type.googleapis.com/google.profile.Person", - "firstName": , - "lastName": - } + it's genesis time. + description: >- + TxResponse defines a structure containing relevant tx data and + metadata. The - If the embedded message type is well-known and has a custom JSON + tags are stringified and the log is JSON decoded. + description: tx_responses is the list of queried TxResponses. + pagination: + description: pagination defines an pagination for the response. + type: object + properties: + next_key: + type: string + format: byte + title: |- + next_key is the key to be passed to PageRequest.key to + query the next page most efficiently + total: + type: string + format: uint64 + title: >- + total is total number of results available if + PageRequest.count_total - representation, that representation will be embedded adding a field + was set, its value is undefined otherwise + description: |- + GetTxsEventResponse is the response type for the Service.TxsByEvents + RPC method. + cosmos.tx.v1beta1.ModeInfo: + type: object + properties: + single: + title: single represents a single signer + type: object + properties: + mode: + title: mode is the signing mode of the single signer + type: string + enum: + - SIGN_MODE_UNSPECIFIED + - SIGN_MODE_DIRECT + - SIGN_MODE_TEXTUAL + - SIGN_MODE_LEGACY_AMINO_JSON + default: SIGN_MODE_UNSPECIFIED + description: >- + SignMode represents a signing mode with its own security + guarantees. + + - SIGN_MODE_UNSPECIFIED: SIGN_MODE_UNSPECIFIED specifies an unknown signing mode and will be + rejected + - SIGN_MODE_DIRECT: SIGN_MODE_DIRECT specifies a signing mode which uses SignDoc and is + verified with raw bytes from Tx + - SIGN_MODE_TEXTUAL: SIGN_MODE_TEXTUAL is a future signing mode that will verify some + human-readable textual representation on top of the binary + representation + + from SIGN_MODE_DIRECT + - SIGN_MODE_LEGACY_AMINO_JSON: SIGN_MODE_LEGACY_AMINO_JSON is a backwards compatibility mode which uses + Amino JSON and will be removed in the future + multi: + $ref: '#/definitions/cosmos.tx.v1beta1.ModeInfo.Multi' + title: multi represents a nested multisig signer + description: ModeInfo describes the signing mode of a single or nested multisig signer. + cosmos.tx.v1beta1.ModeInfo.Multi: + type: object + properties: + bitarray: + title: bitarray specifies which keys within the multisig are signing + type: object + properties: + extra_bits_stored: + type: integer + format: int64 + elems: + type: string + format: byte + description: >- + CompactBitArray is an implementation of a space efficient bit array. - `value` which holds the custom JSON in addition to the `@type` + This is used to ensure that the encoded data takes up a minimal amount + of - field. Example (for message [google.protobuf.Duration][]): + space after proto encoding. - { - "@type": "type.googleapis.com/google.protobuf.Duration", - "value": "1.212s" - } + This is not thread safe, and is not intended for concurrent usage. + mode_infos: + type: array + items: + $ref: '#/definitions/cosmos.tx.v1beta1.ModeInfo' + title: |- + mode_infos is the corresponding modes of the signers of the multisig + which could include nested multisig public keys + title: Multi is the mode info for a multisig public key + cosmos.tx.v1beta1.ModeInfo.Single: + type: object + properties: + mode: + title: mode is the signing mode of the single signer + type: string + enum: + - SIGN_MODE_UNSPECIFIED + - SIGN_MODE_DIRECT + - SIGN_MODE_TEXTUAL + - SIGN_MODE_LEGACY_AMINO_JSON + default: SIGN_MODE_UNSPECIFIED + description: >- + SignMode represents a signing mode with its own security guarantees. + + - SIGN_MODE_UNSPECIFIED: SIGN_MODE_UNSPECIFIED specifies an unknown signing mode and will be + rejected + - SIGN_MODE_DIRECT: SIGN_MODE_DIRECT specifies a signing mode which uses SignDoc and is + verified with raw bytes from Tx + - SIGN_MODE_TEXTUAL: SIGN_MODE_TEXTUAL is a future signing mode that will verify some + human-readable textual representation on top of the binary + representation + + from SIGN_MODE_DIRECT + - SIGN_MODE_LEGACY_AMINO_JSON: SIGN_MODE_LEGACY_AMINO_JSON is a backwards compatibility mode which uses + Amino JSON and will be removed in the future + title: |- + Single is the mode info for a single signer. It is structured as a message + to allow for additional fields such as locale for SIGN_MODE_TEXTUAL in the + future + cosmos.tx.v1beta1.OrderBy: + type: string + enum: + - ORDER_BY_UNSPECIFIED + - ORDER_BY_ASC + - ORDER_BY_DESC + default: ORDER_BY_UNSPECIFIED description: >- - ConsensusStateWithHeight defines a consensus state with an additional - height field. - ibc.core.client.v1.QueryClientStateResponse: + - ORDER_BY_UNSPECIFIED: ORDER_BY_UNSPECIFIED specifies an unknown sorting + order. OrderBy defaults to ASC in this case. + - ORDER_BY_ASC: ORDER_BY_ASC defines ascending order + - ORDER_BY_DESC: ORDER_BY_DESC defines descending order + title: OrderBy defines the sorting order + cosmos.tx.v1beta1.SignerInfo: type: object properties: - client_state: - title: client state associated with the request identifier + public_key: type: object properties: type_url: @@ -38385,56 +41816,124 @@ definitions: "@type": "type.googleapis.com/google.protobuf.Duration", "value": "1.212s" } - proof: + mode_info: + $ref: '#/definitions/cosmos.tx.v1beta1.ModeInfo' + title: |- + mode_info describes the signing mode of the signer and is a nested + structure to support nested multisig pubkey's + sequence: + type: string + format: uint64 + description: >- + sequence is the sequence of the account, which describes the + + number of committed transactions signed by a given address. It is used + to + + prevent replay attacks. + description: |- + SignerInfo describes the public key and signing mode of a single top-level + signer. + cosmos.tx.v1beta1.SimulateRequest: + type: object + properties: + tx: + $ref: '#/definitions/cosmos.tx.v1beta1.Tx' + description: |- + tx is the transaction to simulate. + Deprecated. Send raw tx bytes instead. + tx_bytes: type: string format: byte - title: merkle proof of existence - proof_height: - title: height at which the proof was retrieved + description: tx_bytes is the raw transaction. + description: |- + SimulateRequest is the request type for the Service.Simulate + RPC method. + cosmos.tx.v1beta1.SimulateResponse: + type: object + properties: + gas_info: + description: gas_info is the information about gas used in the simulation. type: object properties: - version_number: + gas_wanted: type: string format: uint64 - title: the version that the client is currently on - version_height: + description: >- + GasWanted is the maximum units of work we allow this tx to + perform. + gas_used: type: string format: uint64 - title: the height within the given version - description: >- - Normally the VersionHeight is incremented at each height while keeping - version - - number the same However some consensus algorithms may choose to reset - the - - height in certain conditions e.g. hard forks, state-machine breaking - changes + description: GasUsed is the amount of gas actually consumed. + result: + description: result is the result of the simulation. + type: object + properties: + data: + type: string + format: byte + description: >- + Data is any data returned from message or handler execution. It + MUST be - In these cases, the version number is incremented so that height - continues to + length prefixed in order to separate data from multiple message + executions. + log: + type: string + description: >- + Log contains the log information from message or handler + execution. + events: + type: array + items: + type: object + properties: + type: + type: string + attributes: + type: array + items: + type: object + properties: + key: + type: string + format: byte + value: + type: string + format: byte + index: + type: boolean + format: boolean + description: >- + EventAttribute is a single key-value pair, associated with + an event. + description: >- + Event allows application developers to attach additional + information to - be monitonically increasing even as the VersionHeight gets reset - description: >- - QueryClientStateResponse is the response type for the Query/ClientState - RPC + ResponseBeginBlock, ResponseEndBlock, ResponseCheckTx and + ResponseDeliverTx. - method. Besides the client state, it includes a proof and the height from + Later, transactions may be queried using these events. + description: >- + Events contains a slice of Event objects that were emitted during + message - which the proof was retrieved. - ibc.core.client.v1.QueryClientStatesResponse: + or handler execution. + description: |- + SimulateResponse is the response type for the + Service.SimulateRPC method. + cosmos.tx.v1beta1.Tx: type: object properties: - client_states: - type: array - items: - type: object - properties: - client_id: - type: string - title: client identifier - client_state: - title: client state + body: + title: body is the processable content of the transaction + type: object + properties: + messages: + type: array + items: type: object properties: type_url: @@ -38603,279 +42102,223 @@ definitions: "@type": "type.googleapis.com/google.protobuf.Duration", "value": "1.212s" } - description: >- - IdentifiedClientState defines a client state with an additional - client - - identifier field. - description: list of stored ClientStates of the chain. - pagination: - title: pagination response - type: object - properties: - next_key: - type: string - format: byte - title: |- - next_key is the key to be passed to PageRequest.key to - query the next page most efficiently - total: - type: string - format: uint64 - title: >- - total is total number of results available if - PageRequest.count_total - - was set, its value is undefined otherwise - description: |- - PageResponse is to be embedded in gRPC response messages where the - corresponding request message has used PageRequest. - - message SomeResponse { - repeated Bar results = 1; - PageResponse page = 2; - } - description: >- - QueryClientStatesResponse is the response type for the Query/ClientStates - RPC - - method. - ibc.core.client.v1.QueryConsensusStateResponse: - type: object - properties: - consensus_state: - title: >- - consensus state associated with the client identifier at the given - height - type: object - properties: - type_url: - type: string description: >- - A URL/resource name that uniquely identifies the type of the - serialized - - protocol buffer message. This string must contain at least - - one "/" character. The last segment of the URL's path must - represent - - the fully qualified name of the type (as in - - `path/google.protobuf.Duration`). The name should be in a - canonical form + messages is a list of messages to be executed. The required + signers of - (e.g., leading "." is not accepted). + those messages define the number and order of elements in + AuthInfo's + signer_infos and Tx's signatures. Each required signer address is + added to - In practice, teams usually precompile into the binary all types - that they + the list only the first time it occurs. - expect it to use in the context of Any. However, for URLs which - use the + By convention, the first required signer (usually from the first + message) - scheme `http`, `https`, or no scheme, one can optionally set up a - type + is referred to as the primary signer and pays the fee for the + whole - server that maps type URLs to message definitions as follows: + transaction. + memo: + type: string + description: >- + memo is any arbitrary note/comment to be added to the transaction. + WARNING: in clients, any publicly exposed text should not be + called memo, - * If no scheme is provided, `https` is assumed. + but should be called `note` instead (see + https://github.com/cosmos/cosmos-sdk/issues/9122). + timeout_height: + type: string + format: uint64 + title: |- + timeout is the block height after which this transaction will not + be processed by the chain + extension_options: + type: array + items: + type: object + properties: + type_url: + type: string + description: >- + A URL/resource name that uniquely identifies the type of the + serialized - * An HTTP GET on the URL must yield a [google.protobuf.Type][] - value in binary format, or produce an error. - * Applications are allowed to cache lookup results based on the - URL, or have them precompiled into a binary to avoid any - lookup. Therefore, binary compatibility needs to be preserved - on changes to types. (Use versioned type names to manage - breaking changes.) + protocol buffer message. This string must contain at least - Note: this functionality is not currently available in the - official + one "/" character. The last segment of the URL's path must + represent - protobuf release, and it is not used for type URLs beginning with + the fully qualified name of the type (as in - type.googleapis.com. + `path/google.protobuf.Duration`). The name should be in a + canonical form + (e.g., leading "." is not accepted). - Schemes other than `http`, `https` (or the empty scheme) might be - used with implementation specific semantics. - value: - type: string - format: byte - description: >- - Must be a valid serialized protocol buffer of the above specified - type. - description: >- - `Any` contains an arbitrary serialized protocol buffer message along - with a + In practice, teams usually precompile into the binary all + types that they - URL that describes the type of the serialized message. + expect it to use in the context of Any. However, for URLs + which use the + scheme `http`, `https`, or no scheme, one can optionally set + up a type - Protobuf library provides support to pack/unpack Any values in the - form + server that maps type URLs to message definitions as + follows: - of utility functions or additional generated methods of the Any type. + * If no scheme is provided, `https` is assumed. - Example 1: Pack and unpack a message in C++. + * An HTTP GET on the URL must yield a + [google.protobuf.Type][] + value in binary format, or produce an error. + * Applications are allowed to cache lookup results based on + the + URL, or have them precompiled into a binary to avoid any + lookup. Therefore, binary compatibility needs to be preserved + on changes to types. (Use versioned type names to manage + breaking changes.) - Foo foo = ...; - Any any; - any.PackFrom(foo); - ... - if (any.UnpackTo(&foo)) { - ... - } + Note: this functionality is not currently available in the + official - Example 2: Pack and unpack a message in Java. + protobuf release, and it is not used for type URLs beginning + with - Foo foo = ...; - Any any = Any.pack(foo); - ... - if (any.is(Foo.class)) { - foo = any.unpack(Foo.class); - } + type.googleapis.com. - Example 3: Pack and unpack a message in Python. - foo = Foo(...) - any = Any() - any.Pack(foo) - ... - if any.Is(Foo.DESCRIPTOR): - any.Unpack(foo) - ... + Schemes other than `http`, `https` (or the empty scheme) + might be - Example 4: Pack and unpack a message in Go + used with implementation specific semantics. + value: + type: string + format: byte + description: >- + Must be a valid serialized protocol buffer of the above + specified type. + description: >- + `Any` contains an arbitrary serialized protocol buffer message + along with a - foo := &pb.Foo{...} - any, err := ptypes.MarshalAny(foo) - ... - foo := &pb.Foo{} - if err := ptypes.UnmarshalAny(any, foo); err != nil { - ... - } + URL that describes the type of the serialized message. - The pack methods provided by protobuf library will by default use - 'type.googleapis.com/full.type.name' as the type URL and the unpack + Protobuf library provides support to pack/unpack Any values in + the form - methods only use the fully qualified type name after the last '/' + of utility functions or additional generated methods of the Any + type. - in the type URL, for example "foo.bar.com/x/y.z" will yield type - name "y.z". + Example 1: Pack and unpack a message in C++. + Foo foo = ...; + Any any; + any.PackFrom(foo); + ... + if (any.UnpackTo(&foo)) { + ... + } + Example 2: Pack and unpack a message in Java. - JSON + Foo foo = ...; + Any any = Any.pack(foo); + ... + if (any.is(Foo.class)) { + foo = any.unpack(Foo.class); + } - ==== + Example 3: Pack and unpack a message in Python. - The JSON representation of an `Any` value uses the regular + foo = Foo(...) + any = Any() + any.Pack(foo) + ... + if any.Is(Foo.DESCRIPTOR): + any.Unpack(foo) + ... - representation of the deserialized, embedded message, with an + Example 4: Pack and unpack a message in Go - additional field `@type` which contains the type URL. Example: + foo := &pb.Foo{...} + any, err := ptypes.MarshalAny(foo) + ... + foo := &pb.Foo{} + if err := ptypes.UnmarshalAny(any, foo); err != nil { + ... + } - package google.profile; - message Person { - string first_name = 1; - string last_name = 2; - } + The pack methods provided by protobuf library will by default + use - { - "@type": "type.googleapis.com/google.profile.Person", - "firstName": , - "lastName": - } + 'type.googleapis.com/full.type.name' as the type URL and the + unpack - If the embedded message type is well-known and has a custom JSON + methods only use the fully qualified type name after the last + '/' - representation, that representation will be embedded adding a field + in the type URL, for example "foo.bar.com/x/y.z" will yield type - `value` which holds the custom JSON in addition to the `@type` + name "y.z". - field. Example (for message [google.protobuf.Duration][]): - { - "@type": "type.googleapis.com/google.protobuf.Duration", - "value": "1.212s" - } - proof: - type: string - format: byte - title: merkle proof of existence - proof_height: - title: height at which the proof was retrieved - type: object - properties: - version_number: - type: string - format: uint64 - title: the version that the client is currently on - version_height: - type: string - format: uint64 - title: the height within the given version - description: >- - Normally the VersionHeight is incremented at each height while keeping - version - number the same However some consensus algorithms may choose to reset - the + JSON - height in certain conditions e.g. hard forks, state-machine breaking - changes + ==== - In these cases, the version number is incremented so that height - continues to + The JSON representation of an `Any` value uses the regular - be monitonically increasing even as the VersionHeight gets reset - title: >- - QueryConsensusStateResponse is the response type for the - Query/ConsensusState + representation of the deserialized, embedded message, with an - RPC method - ibc.core.client.v1.QueryConsensusStatesResponse: - type: object - properties: - consensus_states: - type: array - items: - type: object - properties: - height: - title: consensus state height - type: object - properties: - version_number: - type: string - format: uint64 - title: the version that the client is currently on - version_height: - type: string - format: uint64 - title: the height within the given version - description: >- - Normally the VersionHeight is incremented at each height while - keeping version + additional field `@type` which contains the type URL. Example: + + package google.profile; + message Person { + string first_name = 1; + string last_name = 2; + } + + { + "@type": "type.googleapis.com/google.profile.Person", + "firstName": , + "lastName": + } + + If the embedded message type is well-known and has a custom JSON + + representation, that representation will be embedded adding a + field + + `value` which holds the custom JSON in addition to the `@type` - number the same However some consensus algorithms may choose to - reset the + field. Example (for message [google.protobuf.Duration][]): - height in certain conditions e.g. hard forks, state-machine - breaking changes + { + "@type": "type.googleapis.com/google.protobuf.Duration", + "value": "1.212s" + } + title: >- + extension_options are arbitrary options that can be added by + chains - In these cases, the version number is incremented so that height - continues to + when the default options are not sufficient. If any of these are + present - be monitonically increasing even as the VersionHeight gets reset - consensus_state: - title: consensus state + and can't be handled, the transaction will be rejected + non_critical_extension_options: + type: array + items: type: object properties: type_url: @@ -39044,1075 +42487,723 @@ definitions: "@type": "type.googleapis.com/google.protobuf.Duration", "value": "1.212s" } - description: >- - ConsensusStateWithHeight defines a consensus state with an - additional height field. - title: consensus states associated with the identifier - pagination: - title: pagination response - type: object - properties: - next_key: - type: string - format: byte - title: |- - next_key is the key to be passed to PageRequest.key to - query the next page most efficiently - total: - type: string - format: uint64 title: >- - total is total number of results available if - PageRequest.count_total + extension_options are arbitrary options that can be added by + chains - was set, its value is undefined otherwise - description: |- - PageResponse is to be embedded in gRPC response messages where the - corresponding request message has used PageRequest. + when the default options are not sufficient. If any of these are + present - message SomeResponse { - repeated Bar results = 1; - PageResponse page = 2; - } - title: |- - QueryConsensusStatesResponse is the response type for the - Query/ConsensusStates RPC method - ibc.core.commitment.v1.MerklePrefix: - type: object - properties: - key_prefix: - type: string - format: byte - title: |- - MerklePrefix is merkle path prefixed to the key. - The constructed key from the Path and the key will be append(Path.KeyPath, - append(Path.KeyPrefix, key...)) - ibc.core.connection.v1.ConnectionEnd: + and can't be handled, they will be ignored + description: TxBody is the body of a transaction that all signers sign over. + auth_info: + $ref: '#/definitions/cosmos.tx.v1beta1.AuthInfo' + title: |- + auth_info is the authorization related content of the transaction, + specifically signers, signer modes and fee + signatures: + type: array + items: + type: string + format: byte + description: >- + signatures is a list of signatures that matches the length and order + of + + AuthInfo's signer_infos to allow connecting signature meta information + like + + public key and signing mode by position. + description: Tx is the standard type used for broadcasting transactions. + cosmos.tx.v1beta1.TxBody: type: object properties: - client_id: - type: string - description: client associated with this connection. - versions: + messages: type: array items: type: object properties: - identifier: + type_url: type: string - title: unique version identifier - features: - type: array - items: - type: string - title: list of features compatible with the specified identifier - description: >- - Version defines the versioning scheme used to negotiate the IBC - verison in + description: >- + A URL/resource name that uniquely identifies the type of the + serialized - the connection handshake. - title: >- - IBC version which can be utilised to determine encodings or protocols - for + protocol buffer message. This string must contain at least - channels or packets utilising this connection - state: - description: current state of the connection end. - type: string - enum: - - STATE_UNINITIALIZED_UNSPECIFIED - - STATE_INIT - - STATE_TRYOPEN - - STATE_OPEN - default: STATE_UNINITIALIZED_UNSPECIFIED - counterparty: - description: counterparty chain associated with this connection. - type: object - properties: - client_id: - type: string - description: >- - identifies the client on the counterparty chain associated with a - given + one "/" character. The last segment of the URL's path must + represent - connection. - connection_id: - type: string - description: >- - identifies the connection end on the counterparty chain associated - with a + the fully qualified name of the type (as in - given connection. - prefix: - title: commitment merkle prefix of the counterparty chain - type: object - properties: - key_prefix: - type: string - format: byte - description: >- - ConnectionEnd defines a stateful object on a chain connected to another + `path/google.protobuf.Duration`). The name should be in a + canonical form - separate one. NOTE: there must only be 2 defined ConnectionEnds to - establish + (e.g., leading "." is not accepted). - a connection between two chains. - ibc.core.connection.v1.Counterparty: - type: object - properties: - client_id: - type: string - description: >- - identifies the client on the counterparty chain associated with a - given - connection. - connection_id: - type: string - description: >- - identifies the connection end on the counterparty chain associated - with a + In practice, teams usually precompile into the binary all types + that they - given connection. - prefix: - title: commitment merkle prefix of the counterparty chain - type: object - properties: - key_prefix: - type: string - format: byte - description: >- - Counterparty defines the counterparty chain associated with a connection - end. - ibc.core.connection.v1.IdentifiedConnection: - type: object - properties: - id: - type: string - description: connection identifier. - client_id: - type: string - description: client associated with this connection. - versions: - type: array - items: - type: object - properties: - identifier: + expect it to use in the context of Any. However, for URLs which + use the + + scheme `http`, `https`, or no scheme, one can optionally set up + a type + + server that maps type URLs to message definitions as follows: + + + * If no scheme is provided, `https` is assumed. + + * An HTTP GET on the URL must yield a [google.protobuf.Type][] + value in binary format, or produce an error. + * Applications are allowed to cache lookup results based on the + URL, or have them precompiled into a binary to avoid any + lookup. Therefore, binary compatibility needs to be preserved + on changes to types. (Use versioned type names to manage + breaking changes.) + + Note: this functionality is not currently available in the + official + + protobuf release, and it is not used for type URLs beginning + with + + type.googleapis.com. + + + Schemes other than `http`, `https` (or the empty scheme) might + be + + used with implementation specific semantics. + value: type: string - title: unique version identifier - features: - type: array - items: - type: string - title: list of features compatible with the specified identifier + format: byte + description: >- + Must be a valid serialized protocol buffer of the above + specified type. description: >- - Version defines the versioning scheme used to negotiate the IBC - verison in + `Any` contains an arbitrary serialized protocol buffer message along + with a - the connection handshake. - title: >- - IBC version which can be utilised to determine encodings or protocols - for + URL that describes the type of the serialized message. - channels or packets utilising this connection - state: - description: current state of the connection end. - type: string - enum: - - STATE_UNINITIALIZED_UNSPECIFIED - - STATE_INIT - - STATE_TRYOPEN - - STATE_OPEN - default: STATE_UNINITIALIZED_UNSPECIFIED - counterparty: - description: counterparty chain associated with this connection. - type: object - properties: - client_id: - type: string - description: >- - identifies the client on the counterparty chain associated with a - given - connection. - connection_id: - type: string - description: >- - identifies the connection end on the counterparty chain associated - with a + Protobuf library provides support to pack/unpack Any values in the + form - given connection. - prefix: - title: commitment merkle prefix of the counterparty chain - type: object - properties: - key_prefix: - type: string - format: byte - description: |- - IdentifiedConnection defines a connection with additional connection - identifier field. - ibc.core.connection.v1.QueryClientConnectionsResponse: - type: object - properties: - connection_paths: - type: array - items: - type: string - description: slice of all the connection paths associated with a client. - proof: - type: string - format: byte - title: merkle proof of existence - proof_height: - title: height at which the proof was generated - type: object - properties: - version_number: - type: string - format: uint64 - title: the version that the client is currently on - version_height: - type: string - format: uint64 - title: the height within the given version - description: >- - Normally the VersionHeight is incremented at each height while keeping - version + of utility functions or additional generated methods of the Any + type. - number the same However some consensus algorithms may choose to reset - the - height in certain conditions e.g. hard forks, state-machine breaking - changes + Example 1: Pack and unpack a message in C++. - In these cases, the version number is incremented so that height - continues to + Foo foo = ...; + Any any; + any.PackFrom(foo); + ... + if (any.UnpackTo(&foo)) { + ... + } - be monitonically increasing even as the VersionHeight gets reset - title: |- - QueryClientConnectionsResponse is the response type for the - Query/ClientConnections RPC method - ibc.core.connection.v1.QueryConnectionClientStateResponse: - type: object - properties: - identified_client_state: - title: client state associated with the channel - type: object - properties: - client_id: - type: string - title: client identifier - client_state: - title: client state - type: object - properties: - type_url: - type: string - description: >- - A URL/resource name that uniquely identifies the type of the - serialized + Example 2: Pack and unpack a message in Java. - protocol buffer message. This string must contain at least + Foo foo = ...; + Any any = Any.pack(foo); + ... + if (any.is(Foo.class)) { + foo = any.unpack(Foo.class); + } - one "/" character. The last segment of the URL's path must - represent + Example 3: Pack and unpack a message in Python. - the fully qualified name of the type (as in + foo = Foo(...) + any = Any() + any.Pack(foo) + ... + if any.Is(Foo.DESCRIPTOR): + any.Unpack(foo) + ... - `path/google.protobuf.Duration`). The name should be in a - canonical form + Example 4: Pack and unpack a message in Go - (e.g., leading "." is not accepted). + foo := &pb.Foo{...} + any, err := ptypes.MarshalAny(foo) + ... + foo := &pb.Foo{} + if err := ptypes.UnmarshalAny(any, foo); err != nil { + ... + } + The pack methods provided by protobuf library will by default use - In practice, teams usually precompile into the binary all - types that they + 'type.googleapis.com/full.type.name' as the type URL and the unpack - expect it to use in the context of Any. However, for URLs - which use the + methods only use the fully qualified type name after the last '/' - scheme `http`, `https`, or no scheme, one can optionally set - up a type + in the type URL, for example "foo.bar.com/x/y.z" will yield type - server that maps type URLs to message definitions as follows: + name "y.z". - * If no scheme is provided, `https` is assumed. - * An HTTP GET on the URL must yield a [google.protobuf.Type][] - value in binary format, or produce an error. - * Applications are allowed to cache lookup results based on - the - URL, or have them precompiled into a binary to avoid any - lookup. Therefore, binary compatibility needs to be preserved - on changes to types. (Use versioned type names to manage - breaking changes.) + JSON - Note: this functionality is not currently available in the - official + ==== - protobuf release, and it is not used for type URLs beginning - with + The JSON representation of an `Any` value uses the regular - type.googleapis.com. + representation of the deserialized, embedded message, with an + additional field `@type` which contains the type URL. Example: - Schemes other than `http`, `https` (or the empty scheme) might - be + package google.profile; + message Person { + string first_name = 1; + string last_name = 2; + } - used with implementation specific semantics. - value: - type: string - format: byte - description: >- - Must be a valid serialized protocol buffer of the above - specified type. - description: >- - `Any` contains an arbitrary serialized protocol buffer message - along with a + { + "@type": "type.googleapis.com/google.profile.Person", + "firstName": , + "lastName": + } - URL that describes the type of the serialized message. + If the embedded message type is well-known and has a custom JSON + representation, that representation will be embedded adding a field - Protobuf library provides support to pack/unpack Any values in the - form + `value` which holds the custom JSON in addition to the `@type` - of utility functions or additional generated methods of the Any - type. + field. Example (for message [google.protobuf.Duration][]): + { + "@type": "type.googleapis.com/google.protobuf.Duration", + "value": "1.212s" + } + description: >- + messages is a list of messages to be executed. The required signers of - Example 1: Pack and unpack a message in C++. + those messages define the number and order of elements in AuthInfo's - Foo foo = ...; - Any any; - any.PackFrom(foo); - ... - if (any.UnpackTo(&foo)) { - ... - } + signer_infos and Tx's signatures. Each required signer address is + added to - Example 2: Pack and unpack a message in Java. + the list only the first time it occurs. - Foo foo = ...; - Any any = Any.pack(foo); - ... - if (any.is(Foo.class)) { - foo = any.unpack(Foo.class); - } + By convention, the first required signer (usually from the first + message) - Example 3: Pack and unpack a message in Python. + is referred to as the primary signer and pays the fee for the whole - foo = Foo(...) - any = Any() - any.Pack(foo) - ... - if any.Is(Foo.DESCRIPTOR): - any.Unpack(foo) - ... + transaction. + memo: + type: string + description: >- + memo is any arbitrary note/comment to be added to the transaction. - Example 4: Pack and unpack a message in Go + WARNING: in clients, any publicly exposed text should not be called + memo, - foo := &pb.Foo{...} - any, err := ptypes.MarshalAny(foo) - ... - foo := &pb.Foo{} - if err := ptypes.UnmarshalAny(any, foo); err != nil { - ... - } + but should be called `note` instead (see + https://github.com/cosmos/cosmos-sdk/issues/9122). + timeout_height: + type: string + format: uint64 + title: |- + timeout is the block height after which this transaction will not + be processed by the chain + extension_options: + type: array + items: + type: object + properties: + type_url: + type: string + description: >- + A URL/resource name that uniquely identifies the type of the + serialized - The pack methods provided by protobuf library will by default use + protocol buffer message. This string must contain at least - 'type.googleapis.com/full.type.name' as the type URL and the - unpack + one "/" character. The last segment of the URL's path must + represent - methods only use the fully qualified type name after the last '/' + the fully qualified name of the type (as in - in the type URL, for example "foo.bar.com/x/y.z" will yield type + `path/google.protobuf.Duration`). The name should be in a + canonical form - name "y.z". + (e.g., leading "." is not accepted). + In practice, teams usually precompile into the binary all types + that they - JSON + expect it to use in the context of Any. However, for URLs which + use the - ==== + scheme `http`, `https`, or no scheme, one can optionally set up + a type - The JSON representation of an `Any` value uses the regular + server that maps type URLs to message definitions as follows: - representation of the deserialized, embedded message, with an - additional field `@type` which contains the type URL. Example: + * If no scheme is provided, `https` is assumed. - package google.profile; - message Person { - string first_name = 1; - string last_name = 2; - } + * An HTTP GET on the URL must yield a [google.protobuf.Type][] + value in binary format, or produce an error. + * Applications are allowed to cache lookup results based on the + URL, or have them precompiled into a binary to avoid any + lookup. Therefore, binary compatibility needs to be preserved + on changes to types. (Use versioned type names to manage + breaking changes.) - { - "@type": "type.googleapis.com/google.profile.Person", - "firstName": , - "lastName": - } + Note: this functionality is not currently available in the + official - If the embedded message type is well-known and has a custom JSON + protobuf release, and it is not used for type URLs beginning + with - representation, that representation will be embedded adding a - field + type.googleapis.com. - `value` which holds the custom JSON in addition to the `@type` - field. Example (for message [google.protobuf.Duration][]): + Schemes other than `http`, `https` (or the empty scheme) might + be - { - "@type": "type.googleapis.com/google.protobuf.Duration", - "value": "1.212s" - } - description: |- - IdentifiedClientState defines a client state with an additional client - identifier field. - proof: - type: string - format: byte - title: merkle proof of existence - proof_height: - title: height at which the proof was retrieved - type: object - properties: - version_number: - type: string - format: uint64 - title: the version that the client is currently on - version_height: - type: string - format: uint64 - title: the height within the given version - description: >- - Normally the VersionHeight is incremented at each height while keeping - version + used with implementation specific semantics. + value: + type: string + format: byte + description: >- + Must be a valid serialized protocol buffer of the above + specified type. + description: >- + `Any` contains an arbitrary serialized protocol buffer message along + with a - number the same However some consensus algorithms may choose to reset - the + URL that describes the type of the serialized message. - height in certain conditions e.g. hard forks, state-machine breaking - changes - In these cases, the version number is incremented so that height - continues to + Protobuf library provides support to pack/unpack Any values in the + form - be monitonically increasing even as the VersionHeight gets reset - title: |- - QueryConnectionClientStateResponse is the response type for the - Query/ConnectionClientState RPC method - ibc.core.connection.v1.QueryConnectionConsensusStateResponse: - type: object - properties: - consensus_state: - title: consensus state associated with the channel - type: object - properties: - type_url: - type: string - description: >- - A URL/resource name that uniquely identifies the type of the - serialized + of utility functions or additional generated methods of the Any + type. - protocol buffer message. This string must contain at least - one "/" character. The last segment of the URL's path must - represent + Example 1: Pack and unpack a message in C++. - the fully qualified name of the type (as in + Foo foo = ...; + Any any; + any.PackFrom(foo); + ... + if (any.UnpackTo(&foo)) { + ... + } - `path/google.protobuf.Duration`). The name should be in a - canonical form + Example 2: Pack and unpack a message in Java. + + Foo foo = ...; + Any any = Any.pack(foo); + ... + if (any.is(Foo.class)) { + foo = any.unpack(Foo.class); + } + + Example 3: Pack and unpack a message in Python. + + foo = Foo(...) + any = Any() + any.Pack(foo) + ... + if any.Is(Foo.DESCRIPTOR): + any.Unpack(foo) + ... + + Example 4: Pack and unpack a message in Go + + foo := &pb.Foo{...} + any, err := ptypes.MarshalAny(foo) + ... + foo := &pb.Foo{} + if err := ptypes.UnmarshalAny(any, foo); err != nil { + ... + } - (e.g., leading "." is not accepted). + The pack methods provided by protobuf library will by default use + 'type.googleapis.com/full.type.name' as the type URL and the unpack - In practice, teams usually precompile into the binary all types - that they + methods only use the fully qualified type name after the last '/' - expect it to use in the context of Any. However, for URLs which - use the + in the type URL, for example "foo.bar.com/x/y.z" will yield type - scheme `http`, `https`, or no scheme, one can optionally set up a - type + name "y.z". - server that maps type URLs to message definitions as follows: - * If no scheme is provided, `https` is assumed. + JSON - * An HTTP GET on the URL must yield a [google.protobuf.Type][] - value in binary format, or produce an error. - * Applications are allowed to cache lookup results based on the - URL, or have them precompiled into a binary to avoid any - lookup. Therefore, binary compatibility needs to be preserved - on changes to types. (Use versioned type names to manage - breaking changes.) + ==== - Note: this functionality is not currently available in the - official + The JSON representation of an `Any` value uses the regular - protobuf release, and it is not used for type URLs beginning with + representation of the deserialized, embedded message, with an - type.googleapis.com. + additional field `@type` which contains the type URL. Example: + package google.profile; + message Person { + string first_name = 1; + string last_name = 2; + } - Schemes other than `http`, `https` (or the empty scheme) might be + { + "@type": "type.googleapis.com/google.profile.Person", + "firstName": , + "lastName": + } - used with implementation specific semantics. - value: - type: string - format: byte - description: >- - Must be a valid serialized protocol buffer of the above specified - type. - description: >- - `Any` contains an arbitrary serialized protocol buffer message along - with a + If the embedded message type is well-known and has a custom JSON - URL that describes the type of the serialized message. + representation, that representation will be embedded adding a field + `value` which holds the custom JSON in addition to the `@type` - Protobuf library provides support to pack/unpack Any values in the - form + field. Example (for message [google.protobuf.Duration][]): - of utility functions or additional generated methods of the Any type. + { + "@type": "type.googleapis.com/google.protobuf.Duration", + "value": "1.212s" + } + title: >- + extension_options are arbitrary options that can be added by chains + when the default options are not sufficient. If any of these are + present - Example 1: Pack and unpack a message in C++. + and can't be handled, the transaction will be rejected + non_critical_extension_options: + type: array + items: + type: object + properties: + type_url: + type: string + description: >- + A URL/resource name that uniquely identifies the type of the + serialized - Foo foo = ...; - Any any; - any.PackFrom(foo); - ... - if (any.UnpackTo(&foo)) { - ... - } + protocol buffer message. This string must contain at least - Example 2: Pack and unpack a message in Java. + one "/" character. The last segment of the URL's path must + represent - Foo foo = ...; - Any any = Any.pack(foo); - ... - if (any.is(Foo.class)) { - foo = any.unpack(Foo.class); - } + the fully qualified name of the type (as in - Example 3: Pack and unpack a message in Python. + `path/google.protobuf.Duration`). The name should be in a + canonical form - foo = Foo(...) - any = Any() - any.Pack(foo) - ... - if any.Is(Foo.DESCRIPTOR): - any.Unpack(foo) - ... + (e.g., leading "." is not accepted). - Example 4: Pack and unpack a message in Go - foo := &pb.Foo{...} - any, err := ptypes.MarshalAny(foo) - ... - foo := &pb.Foo{} - if err := ptypes.UnmarshalAny(any, foo); err != nil { - ... - } + In practice, teams usually precompile into the binary all types + that they - The pack methods provided by protobuf library will by default use + expect it to use in the context of Any. However, for URLs which + use the - 'type.googleapis.com/full.type.name' as the type URL and the unpack + scheme `http`, `https`, or no scheme, one can optionally set up + a type - methods only use the fully qualified type name after the last '/' + server that maps type URLs to message definitions as follows: - in the type URL, for example "foo.bar.com/x/y.z" will yield type - name "y.z". + * If no scheme is provided, `https` is assumed. + * An HTTP GET on the URL must yield a [google.protobuf.Type][] + value in binary format, or produce an error. + * Applications are allowed to cache lookup results based on the + URL, or have them precompiled into a binary to avoid any + lookup. Therefore, binary compatibility needs to be preserved + on changes to types. (Use versioned type names to manage + breaking changes.) + Note: this functionality is not currently available in the + official - JSON + protobuf release, and it is not used for type URLs beginning + with - ==== + type.googleapis.com. - The JSON representation of an `Any` value uses the regular - representation of the deserialized, embedded message, with an + Schemes other than `http`, `https` (or the empty scheme) might + be - additional field `@type` which contains the type URL. Example: + used with implementation specific semantics. + value: + type: string + format: byte + description: >- + Must be a valid serialized protocol buffer of the above + specified type. + description: >- + `Any` contains an arbitrary serialized protocol buffer message along + with a - package google.profile; - message Person { - string first_name = 1; - string last_name = 2; - } + URL that describes the type of the serialized message. - { - "@type": "type.googleapis.com/google.profile.Person", - "firstName": , - "lastName": - } - If the embedded message type is well-known and has a custom JSON + Protobuf library provides support to pack/unpack Any values in the + form - representation, that representation will be embedded adding a field + of utility functions or additional generated methods of the Any + type. - `value` which holds the custom JSON in addition to the `@type` - field. Example (for message [google.protobuf.Duration][]): + Example 1: Pack and unpack a message in C++. - { - "@type": "type.googleapis.com/google.protobuf.Duration", - "value": "1.212s" - } - client_id: - type: string - title: client ID associated with the consensus state - proof: - type: string - format: byte - title: merkle proof of existence - proof_height: - title: height at which the proof was retrieved - type: object - properties: - version_number: - type: string - format: uint64 - title: the version that the client is currently on - version_height: - type: string - format: uint64 - title: the height within the given version - description: >- - Normally the VersionHeight is incremented at each height while keeping - version + Foo foo = ...; + Any any; + any.PackFrom(foo); + ... + if (any.UnpackTo(&foo)) { + ... + } - number the same However some consensus algorithms may choose to reset - the + Example 2: Pack and unpack a message in Java. - height in certain conditions e.g. hard forks, state-machine breaking - changes + Foo foo = ...; + Any any = Any.pack(foo); + ... + if (any.is(Foo.class)) { + foo = any.unpack(Foo.class); + } - In these cases, the version number is incremented so that height - continues to + Example 3: Pack and unpack a message in Python. - be monitonically increasing even as the VersionHeight gets reset - title: |- - QueryConnectionConsensusStateResponse is the response type for the - Query/ConnectionConsensusState RPC method - ibc.core.connection.v1.QueryConnectionResponse: - type: object - properties: - connection: - title: connection associated with the request identifier - type: object - properties: - client_id: - type: string - description: client associated with this connection. - versions: - type: array - items: - type: object - properties: - identifier: - type: string - title: unique version identifier - features: - type: array - items: - type: string - title: list of features compatible with the specified identifier - description: >- - Version defines the versioning scheme used to negotiate the IBC - verison in + foo = Foo(...) + any = Any() + any.Pack(foo) + ... + if any.Is(Foo.DESCRIPTOR): + any.Unpack(foo) + ... - the connection handshake. - title: >- - IBC version which can be utilised to determine encodings or - protocols for + Example 4: Pack and unpack a message in Go - channels or packets utilising this connection - state: - description: current state of the connection end. - type: string - enum: - - STATE_UNINITIALIZED_UNSPECIFIED - - STATE_INIT - - STATE_TRYOPEN - - STATE_OPEN - default: STATE_UNINITIALIZED_UNSPECIFIED - counterparty: - description: counterparty chain associated with this connection. - type: object - properties: - client_id: - type: string - description: >- - identifies the client on the counterparty chain associated - with a given + foo := &pb.Foo{...} + any, err := ptypes.MarshalAny(foo) + ... + foo := &pb.Foo{} + if err := ptypes.UnmarshalAny(any, foo); err != nil { + ... + } - connection. - connection_id: - type: string - description: >- - identifies the connection end on the counterparty chain - associated with a + The pack methods provided by protobuf library will by default use - given connection. - prefix: - title: commitment merkle prefix of the counterparty chain - type: object - properties: - key_prefix: - type: string - format: byte - description: >- - ConnectionEnd defines a stateful object on a chain connected to - another + 'type.googleapis.com/full.type.name' as the type URL and the unpack - separate one. NOTE: there must only be 2 defined ConnectionEnds to - establish + methods only use the fully qualified type name after the last '/' - a connection between two chains. - proof: - type: string - format: byte - title: merkle proof of existence - proof_height: - title: height at which the proof was retrieved - type: object - properties: - version_number: - type: string - format: uint64 - title: the version that the client is currently on - version_height: - type: string - format: uint64 - title: the height within the given version - description: >- - Normally the VersionHeight is incremented at each height while keeping - version + in the type URL, for example "foo.bar.com/x/y.z" will yield type - number the same However some consensus algorithms may choose to reset - the + name "y.z". - height in certain conditions e.g. hard forks, state-machine breaking - changes - In these cases, the version number is incremented so that height - continues to - be monitonically increasing even as the VersionHeight gets reset - description: >- - QueryConnectionResponse is the response type for the Query/Connection RPC + JSON - method. Besides the connection end, it includes a proof and the height - from + ==== - which the proof was retrieved. - ibc.core.connection.v1.QueryConnectionsResponse: - type: object - properties: - connections: - type: array - items: - type: object - properties: - id: - type: string - description: connection identifier. - client_id: - type: string - description: client associated with this connection. - versions: - type: array - items: - type: object - properties: - identifier: - type: string - title: unique version identifier - features: - type: array - items: - type: string - title: list of features compatible with the specified identifier - description: >- - Version defines the versioning scheme used to negotiate the - IBC verison in + The JSON representation of an `Any` value uses the regular - the connection handshake. - title: >- - IBC version which can be utilised to determine encodings or - protocols for + representation of the deserialized, embedded message, with an - channels or packets utilising this connection - state: - description: current state of the connection end. - type: string - enum: - - STATE_UNINITIALIZED_UNSPECIFIED - - STATE_INIT - - STATE_TRYOPEN - - STATE_OPEN - default: STATE_UNINITIALIZED_UNSPECIFIED - counterparty: - description: counterparty chain associated with this connection. - type: object - properties: - client_id: - type: string - description: >- - identifies the client on the counterparty chain associated - with a given + additional field `@type` which contains the type URL. Example: - connection. - connection_id: - type: string - description: >- - identifies the connection end on the counterparty chain - associated with a + package google.profile; + message Person { + string first_name = 1; + string last_name = 2; + } - given connection. - prefix: - title: commitment merkle prefix of the counterparty chain - type: object - properties: - key_prefix: - type: string - format: byte - description: |- - IdentifiedConnection defines a connection with additional connection - identifier field. - description: list of stored connections of the chain. - pagination: - title: pagination response - type: object - properties: - next_key: - type: string - format: byte - title: |- - next_key is the key to be passed to PageRequest.key to - query the next page most efficiently - total: - type: string - format: uint64 - title: >- - total is total number of results available if - PageRequest.count_total + { + "@type": "type.googleapis.com/google.profile.Person", + "firstName": , + "lastName": + } - was set, its value is undefined otherwise - description: |- - PageResponse is to be embedded in gRPC response messages where the - corresponding request message has used PageRequest. + If the embedded message type is well-known and has a custom JSON - message SomeResponse { - repeated Bar results = 1; - PageResponse page = 2; - } - height: - title: query block height - type: object - properties: - version_number: - type: string - format: uint64 - title: the version that the client is currently on - version_height: - type: string - format: uint64 - title: the height within the given version - description: >- - Normally the VersionHeight is incremented at each height while keeping - version + representation, that representation will be embedded adding a field - number the same However some consensus algorithms may choose to reset - the + `value` which holds the custom JSON in addition to the `@type` - height in certain conditions e.g. hard forks, state-machine breaking - changes + field. Example (for message [google.protobuf.Duration][]): - In these cases, the version number is incremented so that height - continues to + { + "@type": "type.googleapis.com/google.protobuf.Duration", + "value": "1.212s" + } + title: >- + extension_options are arbitrary options that can be added by chains - be monitonically increasing even as the VersionHeight gets reset - description: >- - QueryConnectionsResponse is the response type for the Query/Connections - RPC + when the default options are not sufficient. If any of these are + present - method. - ibc.core.connection.v1.State: - type: string - enum: - - STATE_UNINITIALIZED_UNSPECIFIED - - STATE_INIT - - STATE_TRYOPEN - - STATE_OPEN - default: STATE_UNINITIALIZED_UNSPECIFIED - description: |- - State defines if a connection is in one of the following states: - INIT, TRYOPEN, OPEN or UNINITIALIZED. - - - STATE_UNINITIALIZED_UNSPECIFIED: Default State - - STATE_INIT: A connection end has just started the opening handshake. - - STATE_TRYOPEN: A connection end has acknowledged the handshake step on the counterparty - chain. - - STATE_OPEN: A connection end has completed the handshake. - ibc.core.connection.v1.Version: + and can't be handled, they will be ignored + description: TxBody is the body of a transaction that all signers sign over. + tendermint.abci.Event: type: object properties: - identifier: + type: type: string - title: unique version identifier - features: + attributes: type: array items: - type: string - title: list of features compatible with the specified identifier - description: |- - Version defines the versioning scheme used to negotiate the IBC verison in - the connection handshake. - ibc.applications.transfer.v1.DenomTrace: + type: object + properties: + key: + type: string + format: byte + value: + type: string + format: byte + index: + type: boolean + format: boolean + description: 'EventAttribute is a single key-value pair, associated with an event.' + description: >- + Event allows application developers to attach additional information to + + ResponseBeginBlock, ResponseEndBlock, ResponseCheckTx and + ResponseDeliverTx. + + Later, transactions may be queried using these events. + tendermint.abci.EventAttribute: type: object properties: - path: + key: type: string - description: >- - path defines the chain of port/channel identifiers used for tracing - the - - source of the fungible token. - base_denom: + format: byte + value: type: string - description: base denomination of the relayed fungible token. - description: >- - DenomTrace contains the base denomination for ICS20 fungible tokens and - the - - source tracing information path. - ibc.applications.transfer.v1.Params: + format: byte + index: + type: boolean + format: boolean + description: 'EventAttribute is a single key-value pair, associated with an event.' + cosmos.upgrade.v1beta1.Plan: type: object properties: - send_enabled: - type: boolean + name: + type: string description: >- - send_enabled enables or disables all cross-chain token transfers from - this + Sets the name for the upgrade. This name will be used by the upgraded - chain. - receive_enabled: - type: boolean - description: >- - receive_enabled enables or disables all cross-chain token transfers to - this + version of the software to apply any special "on-upgrade" commands + during - chain. - description: >- - Params defines the set of IBC transfer parameters. + the first BeginBlock method after the upgrade is applied. It is also + used + + to detect whether a software version can handle a given upgrade. If no - NOTE: To prevent a single token from being transferred, set the + upgrade handler with this name has been set in the software, it will + be + + assumed that the software is out-of-date when the upgrade Time or + Height is - TransfersEnabled parameter to true and then set the bank module's - SendEnabled + reached and the software will exit. + height: + type: string + format: int64 + description: |- + The height at which the upgrade must be performed. + Only used if Time is not set. + info: + type: string + title: |- + Any application specific upgrade info to be included on-chain + such as a git commit that validators could automatically upgrade to + description: >- + Plan specifies information about a planned upgrade and when it should + occur. + cosmos.upgrade.v1beta1.QueryAppliedPlanResponse: + type: object + properties: + height: + type: string + format: int64 + description: height is the block height at which the plan was applied. + description: >- + QueryAppliedPlanResponse is the response type for the Query/AppliedPlan + RPC - parameter for the denomination to false. - ibc.applications.transfer.v1.QueryDenomTraceResponse: + method. + cosmos.upgrade.v1beta1.QueryCurrentPlanResponse: type: object properties: - denom_trace: - description: denom_trace returns the requested denomination trace information. + plan: + description: plan is the current upgrade plan. type: object properties: - path: + name: type: string description: >- - path defines the chain of port/channel identifiers used for - tracing the + Sets the name for the upgrade. This name will be used by the + upgraded - source of the fungible token. - base_denom: - type: string - description: base denomination of the relayed fungible token. - description: |- - QueryDenomTraceResponse is the response type for the Query/DenomTrace RPC - method. - ibc.applications.transfer.v1.QueryDenomTracesResponse: - type: object - properties: - denom_traces: - type: array - items: - type: object - properties: - path: - type: string - description: >- - path defines the chain of port/channel identifiers used for - tracing the + version of the software to apply any special "on-upgrade" commands + during - source of the fungible token. - base_denom: - type: string - description: base denomination of the relayed fungible token. - description: >- - DenomTrace contains the base denomination for ICS20 fungible tokens - and the + the first BeginBlock method after the upgrade is applied. It is + also used - source tracing information path. - description: denom_traces returns all denominations trace information. - pagination: - description: pagination defines the pagination in the response. - type: object - properties: - next_key: + to detect whether a software version can handle a given upgrade. + If no + + upgrade handler with this name has been set in the software, it + will be + + assumed that the software is out-of-date when the upgrade Time or + Height is + + reached and the software will exit. + height: type: string - format: byte - title: |- - next_key is the key to be passed to PageRequest.key to - query the next page most efficiently - total: + format: int64 + description: |- + The height at which the upgrade must be performed. + Only used if Time is not set. + info: type: string - format: uint64 title: >- - total is total number of results available if - PageRequest.count_total + Any application specific upgrade info to be included on-chain - was set, its value is undefined otherwise + such as a git commit that validators could automatically upgrade + to description: >- - QueryConnectionsResponse is the response type for the Query/DenomTraces + QueryCurrentPlanResponse is the response type for the Query/CurrentPlan RPC method. - ibc.applications.transfer.v1.QueryParamsResponse: + cosmos.upgrade.v1beta1.QueryUpgradedConsensusStateResponse: type: object properties: - params: - description: params defines the parameters of the module. - type: object - properties: - send_enabled: - type: boolean - description: >- - send_enabled enables or disables all cross-chain token transfers - from this - - chain. - receive_enabled: - type: boolean - description: >- - receive_enabled enables or disables all cross-chain token - transfers to this + upgraded_consensus_state: + type: string + format: byte + description: >- + QueryUpgradedConsensusStateResponse is the response type for the + Query/UpgradedConsensusState - chain. - description: QueryParamsResponse is the response type for the Query/Params RPC method. + RPC method. securityDefinitions: kms: type: basic diff --git a/deploy/cmd/utils.go b/deploy/cmd/utils.go index e8c7218252..1cc59487a6 100644 --- a/deploy/cmd/utils.go +++ b/deploy/cmd/utils.go @@ -4,6 +4,7 @@ import ( "github.com/cosmos/cosmos-sdk/client" "github.com/cosmos/cosmos-sdk/client/tx" sdk "github.com/cosmos/cosmos-sdk/types" + "github.com/ovrclk/akash/client/broadcaster" "github.com/spf13/pflag" ) @@ -31,13 +32,13 @@ func BuildAndBroadcastTx(clientCtx client.Context, flags *pflag.FlagSet, msgs [] return nil, err } - txf, err = tx.PrepareFactory(clientCtx, txf) + txf, err = broadcaster.PrepareFactory(clientCtx, txf) if err != nil { return nil, err } // If users pass gas adjustment, then calculate gas - _, adjusted, err := tx.CalculateGas(clientCtx.QueryWithData, txf, msgs...) + _, adjusted, err := broadcaster.CalculateGas(clientCtx.QueryWithData, txf, msgs...) if err != nil { return nil, err } diff --git a/go.mod b/go.mod index a4d2abdfd6..3fbb279341 100644 --- a/go.mod +++ b/go.mod @@ -11,6 +11,7 @@ require ( github.com/davecgh/go-spew v1.1.2-0.20180830191138-d8f796af33cc // indirect github.com/go-kit/kit v0.10.0 github.com/gogo/protobuf v1.3.3 + github.com/golang/mock v1.4.4 github.com/golang/protobuf v1.5.2 github.com/gorilla/context v1.1.1 github.com/gorilla/mux v1.8.0 diff --git a/go.sum b/go.sum index 081a4de266..afbd14f184 100644 --- a/go.sum +++ b/go.sum @@ -76,8 +76,6 @@ github.com/aristanetworks/goarista v0.0.0-20170210015632-ea17b1a17847/go.mod h1: github.com/armon/circbuf v0.0.0-20150827004946-bbbad097214e/go.mod h1:3U/XgcO3hCbHZ8TKRvWD2dDTCfh9M9ya+I9JpbB7O8o= github.com/armon/consul-api v0.0.0-20180202201655-eb2c6b5be1b6/go.mod h1:grANhF5doyWs3UAsr3K4I6qtAmlQcZDesFNEHPZAzj8= github.com/armon/go-metrics v0.0.0-20180917152333-f0300d1749da/go.mod h1:Q73ZrmVTwzkszR9V5SSuryQ31EELlFMUz1kKyl939pY= -github.com/armon/go-metrics v0.3.6 h1:x/tmtOF9cDBoXH7XoAGOz2qqm1DknFD1590XmD/DUJ8= -github.com/armon/go-metrics v0.3.6/go.mod h1:4O98XIr/9W0sxpJ8UaYkvjk10Iff7SnFrb4QAOwNTFc= github.com/armon/go-metrics v0.3.8 h1:oOxq3KPj0WhCuy50EhzwiyMyG2ovRQZpZLXQuOh2a/M= github.com/armon/go-metrics v0.3.8/go.mod h1:4O98XIr/9W0sxpJ8UaYkvjk10Iff7SnFrb4QAOwNTFc= github.com/armon/go-radix v0.0.0-20180808171621-7fddfc383310/go.mod h1:ufUuZ+zHj4x4TnLV4JWEpy2hxWSpsRywHrMgIH9cCH8= @@ -137,7 +135,7 @@ github.com/codahale/hdrhistogram v0.0.0-20161010025455-3a0bb77429bd/go.mod h1:sE github.com/coinbase/rosetta-sdk-go v0.5.8/go.mod h1:xd4wYUhV3LkY78SPH8BUhc88rXfn2jYgN9BfiSjbcvM= github.com/coinbase/rosetta-sdk-go v0.5.9 h1:CuGQE3HFmYwdEACJnuOtVI9cofqPsGvq6FdFIzaOPKI= github.com/coinbase/rosetta-sdk-go v0.5.9/go.mod h1:xd4wYUhV3LkY78SPH8BUhc88rXfn2jYgN9BfiSjbcvM= -github.com/confio/ics23/go v0.6.3 h1:PuGK2V1NJWZ8sSkNDq91jgT/cahFEW9RGp4Y5jxulf0= +github.com/confio/ics23/go v0.0.0-20200817220745-f173e6211efb/go.mod h1:E45NqnlpxGnpfTWL/xauN7MRwEE28T4Dd4uraToOaKg= github.com/confio/ics23/go v0.6.3/go.mod h1:E45NqnlpxGnpfTWL/xauN7MRwEE28T4Dd4uraToOaKg= github.com/confio/ics23/go v0.6.6 h1:pkOy18YxxJ/r0XFDCnrl4Bjv6h4LkBSpLS6F38mrKL8= github.com/confio/ics23/go v0.6.6/go.mod h1:E45NqnlpxGnpfTWL/xauN7MRwEE28T4Dd4uraToOaKg= @@ -151,14 +149,13 @@ github.com/coreos/go-systemd v0.0.0-20180511133405-39ca1b05acc7/go.mod h1:F5haX7 github.com/coreos/go-systemd v0.0.0-20190321100706-95778dfbb74e/go.mod h1:F5haX7vjVVG0kc13fIWeqUViNPyEJxv/OmvnBo0Yme4= github.com/coreos/pkg v0.0.0-20160727233714-3ac0863d7acf/go.mod h1:E3G3o1h8I7cfcXa63jLwjI0eiQQMgzzUDFVpN/nH/eA= github.com/coreos/pkg v0.0.0-20180928190104-399ea9e2e55f/go.mod h1:E3G3o1h8I7cfcXa63jLwjI0eiQQMgzzUDFVpN/nH/eA= -github.com/cosmos/cosmos-sdk v0.42.4 h1:yaD4PyOx0LnyfiWasC5egg1U76lT83GRxjJjupPo7Gk= -github.com/cosmos/cosmos-sdk v0.42.4/go.mod h1:I1Zw1zmU4rA/NITaakTb71pXQnQrWyFBhqo3WSeg0vA= github.com/cosmos/cosmos-sdk v0.43.0-beta1 h1:cfRZY+opamo+zF+MuEbvriZwoSzfCuEh1fqUM8fFHbg= github.com/cosmos/cosmos-sdk v0.43.0-beta1/go.mod h1:rpCPaC3MnityU4Io4CDZqZB4GMtPqNeYXxPk8iRqmYM= github.com/cosmos/go-bip39 v0.0.0-20180819234021-555e2067c45d/go.mod h1:tSxLoYXyBmiFeKpvmq4dzayMdCjCnu8uqmCysIGBT2Y= github.com/cosmos/go-bip39 v1.0.0 h1:pcomnQdrdH22njcAatO0yWojsUnCO3y2tNoV1cb6hHY= github.com/cosmos/go-bip39 v1.0.0/go.mod h1:RNJv0H/pOIVgxw6KS7QeX2a0Uo0aKUlfhZ4xuwvCdJw= -github.com/cosmos/iavl v0.15.3 h1:xE9r6HW8GeKeoYJN4zefpljZ1oukVScP/7M8oj6SUts= +github.com/cosmos/iavl v0.15.0-rc3.0.20201009144442-230e9bdf52cd/go.mod h1:3xOIaNNX19p0QrX0VqWa6voPRoJRGGYtny+DH8NEPvE= +github.com/cosmos/iavl v0.15.0-rc5/go.mod h1:WqoPL9yPTQ85QBMT45OOUzPxG/U/JcJoN7uMjgxke/I= github.com/cosmos/iavl v0.15.3/go.mod h1:OLjQiAQ4fGD2KDZooyJG9yz+p2ao2IAYSbke8mVvSA4= github.com/cosmos/iavl v0.16.0 h1:ICIOB8xysirTX27GmVAaoeSpeozzgSu9d49w36xkVJA= github.com/cosmos/iavl v0.16.0/go.mod h1:2A8O/Jz9YwtjqXMO0CjnnbTYEEaovE8jWcwrakH3PoE= @@ -181,6 +178,7 @@ github.com/deckarep/golang-set v0.0.0-20180603214616-504e848d77ea/go.mod h1:93vs github.com/decred/dcrd/lru v1.0.0/go.mod h1:mxKOwFd7lFjN2GZYsiz/ecgqR6kkYAl+0pz0tEMk218= github.com/desertbit/timer v0.0.0-20180107155436-c41aec40b27f h1:U5y3Y5UE0w7amNe7Z5G/twsBW0KEalRQXZzf8ufSh9I= github.com/desertbit/timer v0.0.0-20180107155436-c41aec40b27f/go.mod h1:xH/i4TFMt8koVQZ6WFms69WAsDWr2XsYL3Hkl7jkoLE= +github.com/dgraph-io/badger/v2 v2.2007.1/go.mod h1:26P/7fbL4kUZVEVKLAKXkBXKOydDmM2p1e+NhhnBCAE= github.com/dgraph-io/badger/v2 v2.2007.2 h1:EjjK0KqwaFMlPin1ajhP943VPENHJdEz1KLIegjaI3k= github.com/dgraph-io/badger/v2 v2.2007.2/go.mod h1:26P/7fbL4kUZVEVKLAKXkBXKOydDmM2p1e+NhhnBCAE= github.com/dgraph-io/ristretto v0.0.3-0.20200630154024-f66de99634de/go.mod h1:KPxhHT9ZxKefz+PCeOGsrHpl1qZ7i70dGTu2u+Ahh6E= @@ -242,7 +240,9 @@ github.com/fsnotify/fsnotify v1.4.9/go.mod h1:znqG4EE+3YCdAaPaxE2ZRY/06pZUdp0tY4 github.com/gballet/go-libpcsclite v0.0.0-20190607065134-2772fd86a8ff/go.mod h1:x7DCsMOv1taUwEWCzT4cmDeAkigA5/QCwUodaVOe8Ww= github.com/ghodss/yaml v0.0.0-20150909031657-73d445a93680/go.mod h1:4dBDuWmgqj2HViK6kFavaiC9ZROes6MMH2rRYeMEF04= github.com/ghodss/yaml v1.0.0/go.mod h1:4dBDuWmgqj2HViK6kFavaiC9ZROes6MMH2rRYeMEF04= +github.com/gin-contrib/sse v0.1.0 h1:Y/yl/+YNO8GZSjAhjMsSuLt29uWRFHdHYUb5lYOV9qE= github.com/gin-contrib/sse v0.1.0/go.mod h1:RHrZQHXnP2xjPF+u1gW/2HnVO7nvIa9PG3Gm+fLHvGI= +github.com/gin-gonic/gin v1.6.3 h1:ahKqKTFpO5KTPHxWZjEdPScmYaGtLo8Y4DMHoEsnp14= github.com/gin-gonic/gin v1.6.3/go.mod h1:75u5sXoLsGZoRN5Sgbi1eraJ4GU3++wFwWzhwvtwp4M= github.com/go-gl/glfw v0.0.0-20190409004039-e6da0acd62b1/go.mod h1:vR7hzQXu2zJy9AVAgeJqvqgH9Q5CA+iKCZ2gyEVpxRU= github.com/go-gl/glfw/v3.3/glfw v0.0.0-20191125211704-12ad95a8df72/go.mod h1:tQ2UAYgL5IevRw8kRxooKSPJfGvJ9fJQFa0TUsXzTg8= @@ -275,15 +275,21 @@ github.com/go-openapi/swag v0.19.2/go.mod h1:POnQmlKehdgb5mhVOsnJFsivZCEZ/vjK9gh github.com/go-openapi/swag v0.19.5 h1:lTz6Ys4CmqqCQmZPBlbQENR1/GucA2bzYTE12Pw4tFY= github.com/go-openapi/swag v0.19.5/go.mod h1:POnQmlKehdgb5mhVOsnJFsivZCEZ/vjK9gh66Z9tfKk= github.com/go-playground/assert/v2 v2.0.1/go.mod h1:VDjEfimB/XKnb+ZQfWdccd7VUvScMdVu0Titje2rxJ4= +github.com/go-playground/locales v0.13.0 h1:HyWk6mgj5qFqCT5fjGBuRArbVDfE4hi8+e8ceBS/t7Q= github.com/go-playground/locales v0.13.0/go.mod h1:taPMhCMXrRLJO55olJkUXHZBHCxTMfnGwq/HNwmWNS8= +github.com/go-playground/universal-translator v0.17.0 h1:icxd5fm+REJzpZx7ZfpaD876Lmtgy7VtROAbHHXk8no= github.com/go-playground/universal-translator v0.17.0/go.mod h1:UkSxE5sNxxRwHyU+Scu5vgOQjsIJAF8j9muTVoKLVtA= +github.com/go-playground/validator/v10 v10.2.0 h1:KgJ0snyC2R9VXYN2rneOtQcw5aHQB1Vv0sFl1UcHBOY= github.com/go-playground/validator/v10 v10.2.0/go.mod h1:uOYAAleCW8F/7oMFd6aG0GOhaH6EGOAJShg8Id5JGkI= github.com/go-sourcemap/sourcemap v2.1.2+incompatible/go.mod h1:F8jJfvm2KbVjc5NqelyYJmf/v5J0dwNLS2mL4sNA1Jg= github.com/go-sql-driver/mysql v1.4.0/go.mod h1:zAC/RDZ24gD3HViQzih4MyKcchzm+sOG5ZlKdlhCg5w= github.com/go-stack/stack v1.8.0 h1:5SgMzNM5HxrEjV0ww2lTmX6E2Izsfxas4+YHWRs3Lsk= github.com/go-stack/stack v1.8.0/go.mod h1:v0f6uXyyMGvRgIKkXu+yp6POWl0qKG85gN/melR3HDY= +github.com/gobwas/httphead v0.0.0-20180130184737-2c6c146eadee h1:s+21KNqlpePfkah2I+gwHF8xmJWRjooY+5248k6m4A0= github.com/gobwas/httphead v0.0.0-20180130184737-2c6c146eadee/go.mod h1:L0fX3K22YWvt/FAX9NnzrNzcI4wNYi9Yku4O0LKYflo= +github.com/gobwas/pool v0.2.0 h1:QEmUOlnSjWtnpRGHF3SauEiOsy82Cup83Vf2LcMlnc8= github.com/gobwas/pool v0.2.0/go.mod h1:q8bcK0KcYlCgd9e7WYLm9LpyS+YeLd8JVDW6WezmKEw= +github.com/gobwas/ws v1.0.2 h1:CoAavW/wd/kulfZmSIBt6p24n4j7tHgNVCjsfHVNUbo= github.com/gobwas/ws v1.0.2/go.mod h1:szmBTxLgaFppYjEmNtny/v3w89xOydFnnZMcgRRu/EM= github.com/godbus/dbus v0.0.0-20190726142602-4481cbc300e2 h1:ZpnhV/YsD2/4cESfV5+Hoeu/iUR3ruzNvZ+yQfO03a0= github.com/godbus/dbus v0.0.0-20190726142602-4481cbc300e2/go.mod h1:bBOAhwG1umN6/6ZUMtDFBMQR8jRg9O75tm9K00oMsK4= @@ -312,7 +318,6 @@ github.com/golang/protobuf v1.4.0-rc.4.0.20200313231945-b860323f09d0/go.mod h1:W github.com/golang/protobuf v1.4.0/go.mod h1:jodUvKwWbYaEsadDk5Fwe5c77LiNKVO9IDvqG2KuDX0= github.com/golang/protobuf v1.4.1/go.mod h1:U8fpvMrcmy5pZrNK1lt4xCsGvpyWQ/VVv6QDs8UjoX8= github.com/golang/protobuf v1.4.2/go.mod h1:oDoupMAO8OvCJWAcko0GGGIgR6R6ocIYbsSw735rRwI= -github.com/golang/protobuf v1.4.3 h1:JjCZWpVbqXDqFVmTfYWEVTMIYrL/NPdPSCHPJ0T/raM= github.com/golang/protobuf v1.4.3/go.mod h1:oDoupMAO8OvCJWAcko0GGGIgR6R6ocIYbsSw735rRwI= github.com/golang/protobuf v1.5.0/go.mod h1:FsONVRAS9T7sI+LIUmWTfcYkHO4aIWwzhcaSAoJOfIk= github.com/golang/protobuf v1.5.2 h1:ROPKBNFfQgOUMifHyP+KYbvpjbdoFNs+aK7DXlji0Tw= @@ -329,7 +334,6 @@ github.com/google/go-cmp v0.2.0/go.mod h1:oXzfMopK8JAjlY9xF4vHSVASa0yLyX7SntLO5a github.com/google/go-cmp v0.3.0/go.mod h1:8QqcDgzrUqlUb/G2PQTWiueGozuR1884gddMywk6iLU= github.com/google/go-cmp v0.3.1/go.mod h1:8QqcDgzrUqlUb/G2PQTWiueGozuR1884gddMywk6iLU= github.com/google/go-cmp v0.4.0/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/gNBxE= -github.com/google/go-cmp v0.5.0 h1:/QaMHBdZ26BB3SSst0Iwl10Epc+xhTquomWX0oZEB6w= github.com/google/go-cmp v0.5.0/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/gNBxE= github.com/google/go-cmp v0.5.2/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/gNBxE= github.com/google/go-cmp v0.5.4/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/gNBxE= @@ -337,7 +341,6 @@ github.com/google/go-cmp v0.5.5 h1:Khx7svrCpmxxtHBq5j2mp/xVjsi8hQMfNLvJFAlrGgU= github.com/google/go-cmp v0.5.5/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/gNBxE= github.com/google/gofuzz v0.0.0-20170612174753-24818f796faf/go.mod h1:HP5RmnzzSNb993RKQDq4+1A4ia9nllfqcQFTQJedwGI= github.com/google/gofuzz v1.0.0/go.mod h1:dBl0BpW6vV/+mYPU4Po3pmUjxk6FQPldtuIdl/M65Eg= -github.com/google/gofuzz v1.1.0 h1:Hsa8mG0dQ46ij8Sl2AYJDUv1oA9/d6Vk+3LG99Oe02g= github.com/google/gofuzz v1.1.0/go.mod h1:dBl0BpW6vV/+mYPU4Po3pmUjxk6FQPldtuIdl/M65Eg= github.com/google/gofuzz v1.1.1-0.20200604201612-c04b05f3adfa h1:Q75Upo5UN4JbPFURXZ8nLKYUvF85dyFRop/vQ0Rv+64= github.com/google/gofuzz v1.1.1-0.20200604201612-c04b05f3adfa/go.mod h1:dBl0BpW6vV/+mYPU4Po3pmUjxk6FQPldtuIdl/M65Eg= @@ -377,7 +380,7 @@ github.com/graph-gophers/graphql-go v0.0.0-20191115155744-f33e81362277/go.mod h1 github.com/gregjones/httpcache v0.0.0-20180305231024-9cad4c3443a7/go.mod h1:FecbI9+v66THATjSRHfNgh1IVFe/9kFxbXtjV0ctIMA= github.com/grpc-ecosystem/go-grpc-middleware v1.0.0/go.mod h1:FiyG127CGDf3tlThmgyCl78X/SZQqEOJBCDaAfeWzPs= github.com/grpc-ecosystem/go-grpc-middleware v1.0.1-0.20190118093823-f849b5445de4/go.mod h1:FiyG127CGDf3tlThmgyCl78X/SZQqEOJBCDaAfeWzPs= -github.com/grpc-ecosystem/go-grpc-middleware v1.2.2 h1:FlFbCRLd5Jr4iYXZufAvgWN6Ao0JrI5chLINnUXDDr0= +github.com/grpc-ecosystem/go-grpc-middleware v1.2.1/go.mod h1:EaizFBKfUKtMIF5iaDEhniwNedqGo9FuLFzppDr3uwI= github.com/grpc-ecosystem/go-grpc-middleware v1.2.2/go.mod h1:EaizFBKfUKtMIF5iaDEhniwNedqGo9FuLFzppDr3uwI= github.com/grpc-ecosystem/go-grpc-middleware v1.3.0 h1:+9834+KizmvFV7pXQGSXQTsaWhq2GjuNUt0aUU0YBYw= github.com/grpc-ecosystem/go-grpc-middleware v1.3.0/go.mod h1:z0ButlSOZa5vEBq9m2m2hlwIgKw+rp3sdCBRoJY+30Y= @@ -441,6 +444,7 @@ github.com/influxdata/influxdb1-client v0.0.0-20191209144304-8bf82d3c094d/go.mod github.com/jackpal/go-nat-pmp v1.0.2-0.20160603034137-1fa385a6f458/go.mod h1:QPH045xvCAeXUZOxsnwmrtiCoxIr9eob+4orBN1SBKc= github.com/jessevdk/go-flags v0.0.0-20141203071132-1679536dcc89/go.mod h1:4FA24M0QyGHXBuZZK/XkWh8h0e1EYbRYJSGM75WSRxI= github.com/jessevdk/go-flags v1.4.0/go.mod h1:4FA24M0QyGHXBuZZK/XkWh8h0e1EYbRYJSGM75WSRxI= +github.com/jhump/protoreflect v1.8.2 h1:k2xE7wcUomeqwY0LDCYA16y4WWfyTcMx5mKhk0d4ua0= github.com/jhump/protoreflect v1.8.2/go.mod h1:7GcYQDdMU/O/BBrl/cX6PNHpXh6cenjd8pneu5yW7Tg= github.com/jmespath/go-jmespath v0.0.0-20180206201540-c2b33e8439af/go.mod h1:Nht3zPeWKUH0NzdCt2Blrr5ys8VGpn0CEB0cQHVjt7k= github.com/jmhodges/levigo v1.0.0/go.mod h1:Q6Qx+uH3RAqyK4rFQroq9RL7mdkABMcfhEI+nNuzMJQ= @@ -474,13 +478,13 @@ github.com/konsorten/go-windows-terminal-sequences v1.0.3/go.mod h1:T0+1ngSBFLxv github.com/kr/fs v0.1.0/go.mod h1:FFnZGqtBN9Gxj7eW1uZ42v5BccTP0vu6NEaFoC2HwRg= github.com/kr/logfmt v0.0.0-20140226030751-b84e30acd515/go.mod h1:+0opPa2QZZtGFBFZlji/RkVcI2GknAs/DXo4wKdlNEc= github.com/kr/pretty v0.1.0/go.mod h1:dAy3ld7l9f0ibDNOQOHHMYYIIbhfbHSm3C4ZsoJORNo= -github.com/kr/pretty v0.2.0 h1:s5hAObm+yFO5uHYt5dYjxi2rXrsnmRpJx4OYvIWUaQs= github.com/kr/pretty v0.2.0/go.mod h1:ipq/a2n7PKx3OHsz4KJII5eveXtPO4qwEXGdVfWzfnI= github.com/kr/pty v1.1.1/go.mod h1:pFQYn66WHrOpPYNljwOMqo10TkYh1fy3cYio2l3bCsQ= github.com/kr/pty v1.1.5/go.mod h1:9r2w37qlBe7rQ6e1fg1S/9xpWHSnaqNdHD3WcMdbPDA= github.com/kr/text v0.1.0 h1:45sCR5RtlFHMR4UwH9sdQ5TC8v0qDQCHnXt+kaKSTVE= github.com/kr/text v0.1.0/go.mod h1:4Jbv+DJW3UT/LiOwJeYQe1efqtUx/iVham/4vfdArNI= github.com/kylelemons/godebug v1.1.0/go.mod h1:9/0rRGxNHcop5bhtWyNeEfOS8JIWk580+fNqagV/RAw= +github.com/leodido/go-urn v1.2.0 h1:hpXL4XnriNwQ/ABnpepYM/1vCLWNDfUNts8dX3xTG6Y= github.com/leodido/go-urn v1.2.0/go.mod h1:+8+nEpDfqqsY+g338gtMEUOtuK+4dEMhiQEgxpxOKII= github.com/libp2p/go-buffer-pool v0.0.2/go.mod h1:MvaB6xw5vOrDl8rYZGLFdKAuk/hRoRZd1Vi32+RXyFM= github.com/libp2p/go-buffer-pool v0.0.3-0.20190619091711-d94255cb3dfc h1:0hdbTX4400jUo9y5f7n+O1s15cAcyrL0O+K+2B2iD3I= @@ -490,8 +494,6 @@ github.com/lightstep/lightstep-tracer-go v0.18.1/go.mod h1:jlF1pusYV4pidLvZ+XD0U github.com/lucasjones/reggen v0.0.0-20180717132126-cdb49ff09d77/go.mod h1:5ELEyG+X8f+meRWHuqUOewBOhvHkl7M76pdGEansxW4= github.com/magiconair/properties v1.8.0/go.mod h1:PppfXfuXeibc/6YijjN8zIbojt8czPbwD3XqdrwzmxQ= github.com/magiconair/properties v1.8.1/go.mod h1:PppfXfuXeibc/6YijjN8zIbojt8czPbwD3XqdrwzmxQ= -github.com/magiconair/properties v1.8.4 h1:8KGKTcQQGm0Kv7vEbKFErAoAOFyyacLStRtQSeYtvkY= -github.com/magiconair/properties v1.8.4/go.mod h1:y3VJvCyxH9uVvJTWEGAELF3aiYNyPKd5NZ3oSwXrF60= github.com/magiconair/properties v1.8.5 h1:b6kJs+EmPFMYGkow9GiUyCyOvIwYetYJ3fSaWak/Gls= github.com/magiconair/properties v1.8.5/go.mod h1:y3VJvCyxH9uVvJTWEGAELF3aiYNyPKd5NZ3oSwXrF60= github.com/mailru/easyjson v0.0.0-20160728113105-d5b7844b561a/go.mod h1:C1wdFJiN94OJF2b5HbByQZoLdCWB1Yqtg26g4irojpc= @@ -530,7 +532,6 @@ github.com/mitchellh/go-testing-interface v1.0.0/go.mod h1:kRemZodwjscx+RGhAo8eI github.com/mitchellh/gox v0.4.0/go.mod h1:Sd9lOJ0+aimLBi73mGofS1ycjY8lL3uZM3JPS42BGNg= github.com/mitchellh/iochan v1.0.0/go.mod h1:JwYml1nuB7xOzsp52dPpHFffvOCDupsG0QubkSMEySY= github.com/mitchellh/mapstructure v0.0.0-20160808181253-ca63d7c062ee/go.mod h1:FVVH3fgwuzCH5S8UJGiWEs2h04kUh9fWfEaFds41c1Y= -github.com/mitchellh/mapstructure v1.1.2 h1:fmNYVwqnSfB9mZU6OS2O6GsXM+wcskZDuKQzvN1EDeE= github.com/mitchellh/mapstructure v1.1.2/go.mod h1:FVVH3fgwuzCH5S8UJGiWEs2h04kUh9fWfEaFds41c1Y= github.com/mitchellh/mapstructure v1.3.3 h1:SzB1nHZ2Xi+17FP0zVQBHIZqvwRN9408fJO8h+eeNA8= github.com/mitchellh/mapstructure v1.3.3/go.mod h1:bFUtVrKA4DC2yAKiSyO/QUcy7e+RRV2QTWOzhPopBRo= @@ -544,6 +545,7 @@ github.com/mtibben/percent v0.2.1 h1:5gssi8Nqo8QU/r2pynCm+hBQHpkB/uNK7BJCFogWdzs github.com/mtibben/percent v0.2.1/go.mod h1:KG9uO+SZkUp+VkRHsCdYQV3XSZrrSpR3O9ibNBTZrns= github.com/munnerz/goautoneg v0.0.0-20120707110453-a547fc61f48d/go.mod h1:+n7T8mK8HuQTcFwEeznm/DIxMOiR9yIdICNftLE1DvQ= github.com/mwitkow/go-conntrack v0.0.0-20161129095857-cc309e4a2223/go.mod h1:qRWi+5nqEBWmkhHvq77mSJWrCKwh8bxhgT7d/eI7P4U= +github.com/mwitkow/go-conntrack v0.0.0-20190716064945-2f068394615f h1:KUppIJq7/+SVif2QVs3tOP0zanoHgBEVAwHxUSIzRqU= github.com/mwitkow/go-conntrack v0.0.0-20190716064945-2f068394615f/go.mod h1:qRWi+5nqEBWmkhHvq77mSJWrCKwh8bxhgT7d/eI7P4U= github.com/mxk/go-flowrate v0.0.0-20140419014527-cca7078d478f/go.mod h1:ZdcZmHo+o7JKHSa8/e818NopupXU1YMK5fe1lsApnBw= github.com/naoina/go-stringutil v0.1.0/go.mod h1:XJ2SJL9jCtBh+P9q5btrd/Ylo8XwT/h1USek5+NqSA0= @@ -555,6 +557,8 @@ github.com/nats-io/nats.go v1.9.1/go.mod h1:ZjDU1L/7fJ09jvUSRVBR2e7+RnLiiIQyqyzE github.com/nats-io/nkeys v0.1.0/go.mod h1:xpnFELMwJABBLVhffcfd1MZx6VsNRFpEugbxziKVo7w= github.com/nats-io/nkeys v0.1.3/go.mod h1:xpnFELMwJABBLVhffcfd1MZx6VsNRFpEugbxziKVo7w= github.com/nats-io/nuid v1.0.1/go.mod h1:19wcPz3Ph3q0Jbyiqsd0kePYG7A95tJPxeL+1OSON2c= +github.com/niemeyer/pretty v0.0.0-20200227124842-a10e7caefd8e h1:fD57ERR4JtEqsWbfPhv4DMiApHyliiK5xCTNVSPiaAs= +github.com/niemeyer/pretty v0.0.0-20200227124842-a10e7caefd8e/go.mod h1:zD1mROLANZcx1PVRCS0qkT7pwLkGfwJo4zjcN/Tysno= github.com/nishanths/predeclared v0.0.0-20200524104333-86fad755b4d3/go.mod h1:nt3d53pc1VYcphSCIaYAJtnPYnr3Zyn8fMq2wvPGPso= github.com/nxadm/tail v1.4.4 h1:DQuhQpB1tVlglWS2hLQ5OV6B5r8aGxSrPc5Qo6uTN78= github.com/nxadm/tail v1.4.4/go.mod h1:kenIhsEOeOJmVchQTgglprH7qJGnHDVpk1VPCcaMI8A= @@ -587,21 +591,16 @@ github.com/openzipkin-contrib/zipkin-go-opentracing v0.4.5/go.mod h1:/wsWhb9smxS github.com/openzipkin/zipkin-go v0.1.6/go.mod h1:QgAqvLzwWbR/WpD4A3cGpPtJrZXNIiJc5AZX7/PBEpw= github.com/openzipkin/zipkin-go v0.2.1/go.mod h1:NaW6tEwdmWMaCDZzg8sh+IBNOxHMPnhQw8ySjnjRyN4= github.com/openzipkin/zipkin-go v0.2.2/go.mod h1:NaW6tEwdmWMaCDZzg8sh+IBNOxHMPnhQw8ySjnjRyN4= -github.com/otiai10/copy v1.4.2 h1:RTiz2sol3eoXPLF4o+YWqEybwfUa/Q2Nkc4ZIUs3fwI= -github.com/otiai10/copy v1.4.2/go.mod h1:XWfuS3CrI0R6IE0FbgHsEazaXO8G0LpMp9o8tos0x4E= +github.com/otiai10/copy v1.6.0 h1:IinKAryFFuPONZ7cm6T6E2QX/vcJwSnlaA5lfoaXIiQ= github.com/otiai10/copy v1.6.0/go.mod h1:XWfuS3CrI0R6IE0FbgHsEazaXO8G0LpMp9o8tos0x4E= github.com/otiai10/curr v0.0.0-20150429015615-9b4961190c95/go.mod h1:9qAhocn7zKJG+0mI8eUu6xqkFDYS2kb2saOteoSB3cE= github.com/otiai10/curr v1.0.0/go.mod h1:LskTG5wDwr8Rs+nNQ+1LlxRjAtTZZjtJW4rMXl6j4vs= github.com/otiai10/mint v1.3.0/go.mod h1:F5AjcsTsWUqX+Na9fpHb52P8pcRX2CI6A3ctIT91xUo= github.com/otiai10/mint v1.3.2/go.mod h1:/yxELlJQ0ufhjUwhshSj+wFjZ78CnZ48/1wtmBH1OTc= -github.com/ovrclk/cosmos-sdk v0.41.4-akash-4 h1:0Iw/WWpWXnUSyLgW+K3dvNgH6PKxQCoJKIuGwWqWZ0I= -github.com/ovrclk/cosmos-sdk v0.41.4-akash-4/go.mod h1:iLH8pH47p0ilfI1cJVPT628FyVdvcoDMxXg1lrl/1MA= github.com/ovrclk/ledger-cosmos-go v0.13.2 h1:MwjDy5tw1olqUHaVIGrPexvdkAl/5wMQubnfjgvT8M4= github.com/ovrclk/ledger-cosmos-go v0.13.2/go.mod h1:yFLa7PuoNE5B4kcZhurZbVXMae2jJeaijmh91+RiSto= github.com/ovrclk/ledger-go v0.13.4 h1:etwWczrjFota24DRSFctc0kA3MkabLfsExWxdXqvWuk= github.com/ovrclk/ledger-go v0.13.4/go.mod h1:ePOnJDViaVfCnOfW5A4SjvgyqWupEEdsbvUEAqwliwA= -github.com/ovrclk/tendermint v0.34.9-akash-1 h1:uQl6MuQjvptQedjLItCds5foqmWpCPaiNd1iKiTM418= -github.com/ovrclk/tendermint v0.34.9-akash-1/go.mod h1:kl4Z1JwGx1I+u1SXIzMDy7Z3T8LiMeCAOnzNn6AIMT4= github.com/pact-foundation/pact-go v1.0.4/go.mod h1:uExwJY4kCzNPcHRj+hCR/HBbOOIwwtUjcrb0b5/5kLM= github.com/pascaldekloe/goe v0.0.0-20180627143212-57f6aae5913c/go.mod h1:lzWF7FIEvWOWxwDKqyGYQf6ZUaNfKdP144TG7ZOy1lc= github.com/pascaldekloe/goe v0.1.0 h1:cBOtyMzM9HTpWjXfbbunk26uA6nG3a8n06Wieeh0MwY= @@ -609,7 +608,6 @@ github.com/pascaldekloe/goe v0.1.0/go.mod h1:lzWF7FIEvWOWxwDKqyGYQf6ZUaNfKdP144T github.com/pborman/uuid v0.0.0-20170112150404-1b00554d8222/go.mod h1:VyrYX9gd7irzKovcSS6BIIEwPRkP2Wm2m9ufcdFSJ34= github.com/pborman/uuid v1.2.0/go.mod h1:X/NO0urCmaxf9VXbdlT7C2Yzkj2IKimNn4k+gtPdI/k= github.com/pelletier/go-toml v1.2.0/go.mod h1:5z9KED0ma1S8pY6P1sdut58dfprrGBbd/94hg7ilaic= -github.com/pelletier/go-toml v1.8.0/go.mod h1:D6yutnOGMveHEPV7VQOuvI/gXY61bv+9bAOTRnLElKs= github.com/pelletier/go-toml v1.8.1 h1:1Nf83orprkJyknT6h7zbuEGUEjcyVlCxSUGTENmNCRM= github.com/pelletier/go-toml v1.8.1/go.mod h1:T2/BmBdy8dvIRq1a/8aqjN41wvWlN4lrapLU/GW4pbc= github.com/performancecopilot/speed v3.0.0+incompatible/go.mod h1:/CLtqpZ5gBg1M9iaPbIdPPGyKcA8hKdoy6hAWba7Yac= @@ -636,7 +634,6 @@ github.com/prometheus/client_golang v1.0.0/go.mod h1:db9x61etRT2tGnBNRi70OPL5Fsn github.com/prometheus/client_golang v1.3.0/go.mod h1:hJaj2vgQTGQmVCsAACORcieXFeDPbaTKGT+JTgUa3og= github.com/prometheus/client_golang v1.4.0/go.mod h1:e9GMxYsXl05ICDXkRhurwBS4Q3OK1iX/F2sw+iXX5zU= github.com/prometheus/client_golang v1.7.1/go.mod h1:PY5Wy2awLA44sXw4AOSfFBetzPP4j5+D6mVACh+pe2M= -github.com/prometheus/client_golang v1.8.0 h1:zvJNkoCFAnYFNC24FV8nW4JdRJ3GIFcLbg65lL/JDcw= github.com/prometheus/client_golang v1.8.0/go.mod h1:O9VU6huf47PktckDQfMTX0Y8tY0/7TSWwj+ITvv0TnM= github.com/prometheus/client_golang v1.10.0 h1:/o0BDeWzLWXNZ+4q5gXltUvaMpJqckTa+jTNoB+z4cg= github.com/prometheus/client_golang v1.10.0/go.mod h1:WJM3cc3yu7XKBKa/I8WeZm+V3eltZnBwfENSU7mdogU= @@ -655,8 +652,6 @@ github.com/prometheus/common v0.7.0/go.mod h1:DjGbpBbp5NYNiECxcL/VnbXCCaQpKd3tt2 github.com/prometheus/common v0.9.1/go.mod h1:yhUN8i9wzaXS3w1O07YhxHEBxD+W35wd8bs7vj7HSQ4= github.com/prometheus/common v0.10.0/go.mod h1:Tlit/dnDKsSWFlCLTWaA1cyBgKHSMdTB80sz/V91rCo= github.com/prometheus/common v0.14.0/go.mod h1:U+gB1OBLb1lF3O42bTCL+FK18tX9Oar16Clt/msog/s= -github.com/prometheus/common v0.15.0 h1:4fgOnadei3EZvgRwxJ7RMpG1k1pOZth5Pc13tyspaKM= -github.com/prometheus/common v0.15.0/go.mod h1:U+gB1OBLb1lF3O42bTCL+FK18tX9Oar16Clt/msog/s= github.com/prometheus/common v0.18.0/go.mod h1:U+gB1OBLb1lF3O42bTCL+FK18tX9Oar16Clt/msog/s= github.com/prometheus/common v0.23.0 h1:GXWvPYuTUenIa+BhOq/x+L/QZzCqASkVRny5KTlPDGM= github.com/prometheus/common v0.23.0/go.mod h1:H6QK/N6XVT42whUeIdI3dp36w49c+/iMDk7UAI2qm7Q= @@ -666,7 +661,6 @@ github.com/prometheus/procfs v0.0.0-20190507164030-5867b95ac084/go.mod h1:TjEm7z github.com/prometheus/procfs v0.0.2/go.mod h1:TjEm7ze935MbeOT/UhFTIMYKhuLP4wbCsTZCD3I8kEA= github.com/prometheus/procfs v0.0.8/go.mod h1:7Qr8sr6344vo1JqZ6HhLceV9o3AJ1Ff+GxbHq6oeK9A= github.com/prometheus/procfs v0.1.3/go.mod h1:lV6e/gmhEcM9IjHGsFOCxxuZ+z1YqCvr4OA4YeYWdaU= -github.com/prometheus/procfs v0.2.0 h1:wH4vA7pcjKuZzjF7lM8awk4fnuJO6idemZXoKnULUx4= github.com/prometheus/procfs v0.2.0/go.mod h1:lV6e/gmhEcM9IjHGsFOCxxuZ+z1YqCvr4OA4YeYWdaU= github.com/prometheus/procfs v0.6.0 h1:mxy4L2jP6qMonqmq+aTtOx1ifVWUgG/TAmntgbh3xv4= github.com/prometheus/procfs v0.6.0/go.mod h1:cz+aTbrPOrUb4q7XlbU9ygM+/jj0fzG6c1xBZuNvfVA= @@ -690,8 +684,6 @@ github.com/rs/cors v1.7.1-0.20191011001009-dcbccb712443 h1:UnXq+ihqH+nJzMBSIiuRt github.com/rs/cors v1.7.1-0.20191011001009-dcbccb712443/go.mod h1:gFx+x8UowdsKA9AchylcLynDq+nNFfI8FkUZdN/jGCU= github.com/rs/xhandler v0.0.0-20160618193221-ed27b6fd6521/go.mod h1:RvLn4FgxWubrpZHtQLnOf6EwhN2hEMusxZOhcW9H3UQ= github.com/rs/xid v1.2.1/go.mod h1:+uKXf+4Djp6Md1KODXJxgGQPKngRmWyn10oCKFzNHOQ= -github.com/rs/zerolog v1.20.0 h1:38k9hgtUBdxFwE34yS8rTHmHBa4eN16E4DJlv177LNs= -github.com/rs/zerolog v1.20.0/go.mod h1:IzD0RJ65iWH0w97OQQebJEvTZYvsCUm9WVLWBQrJRjo= github.com/rs/zerolog v1.21.0 h1:Q3vdXlfLNT+OftyBHsU0Y445MD+8m8axjKgf2si0QcM= github.com/rs/zerolog v1.21.0/go.mod h1:ZPhntP/xmq1nnND05hhpAh2QMhSsA4UN3MGZ6O2J3hM= github.com/russross/blackfriday v1.5.2 h1:HyvC0ARfnZBqnXwABFeSZHpKvJHJJfPz81GNueLj0oo= @@ -700,6 +692,7 @@ github.com/russross/blackfriday/v2 v2.0.1 h1:lPqVAte+HuHNfhJ/0LC98ESWRz8afy9tM/0 github.com/russross/blackfriday/v2 v2.0.1/go.mod h1:+Rmxgy9KzJVeS9/2gXHxylqXiyQDYRxCVz55jmeOWTM= github.com/ryanuber/columnize v0.0.0-20160712163229-9b3edd62028f/go.mod h1:sm1tb6uqfes/u+d4ooFouqFdy9/2g9QGwK3SQygK0Ts= github.com/samuel/go-zookeeper v0.0.0-20190923202752-2cc03de413da/go.mod h1:gi+0XIa01GRL2eRQVjQkKGqKF3SF9vZR/HnPullcV2E= +github.com/sasha-s/go-deadlock v0.2.0/go.mod h1:StQn567HiB1fF2yJ44N9au7wOhrPS3iZqiDbRupzT10= github.com/sasha-s/go-deadlock v0.2.1-0.20190427202633-1595213edefa h1:0U2s5loxrTy6/VgfVoLuVLFJcURKLH49ie0zSch7gh4= github.com/sasha-s/go-deadlock v0.2.1-0.20190427202633-1595213edefa/go.mod h1:F73l+cr82YSh10GxyRI6qZiCgK64VaZjwesgfQ1/iLM= github.com/satori/go.uuid v1.2.0 h1:0uYX9dsZ2yD7q2RtLRtPSdGDWzjeM3TbMJP9utgA0ww= @@ -733,7 +726,6 @@ github.com/spf13/cast v1.3.1/go.mod h1:Qx5cxh0v+4UWYiBimWS+eyWzqEqokIECu5etghLkU github.com/spf13/cobra v0.0.3/go.mod h1:1l0Ry5zgKvJasoi3XT1TypsSe7PqH0Sj9dhYf7v3XqQ= github.com/spf13/cobra v0.0.5/go.mod h1:3K3wKZymM7VvHMDS9+Akkh4K60UwM26emMESw8tLCHU= github.com/spf13/cobra v1.0.0/go.mod h1:/6GTrnGXV9HjY+aR4k0oJ5tcvakLuG6EuKReYlHNrgE= -github.com/spf13/cobra v1.1.1 h1:KfztREH0tPxJJ+geloSLaAkaPkr4ki2Er5quFV1TDo4= github.com/spf13/cobra v1.1.1/go.mod h1:WnodtKOvamDL/PwE2M4iKs8aMDBZ5Q5klgD3qfVJQMI= github.com/spf13/cobra v1.1.3 h1:xghbfqPkxzxP3C/f3n5DdpAbdKLj4ZE4BWQI362l53M= github.com/spf13/cobra v1.1.3/go.mod h1:pGADOWyqRD/YMrPZigI/zbliZ2wVD/23d+is3pSWzOo= @@ -782,6 +774,12 @@ github.com/tendermint/crypto v0.0.0-20191022145703-50d29ede1e15 h1:hqAk8riJvK4RM github.com/tendermint/crypto v0.0.0-20191022145703-50d29ede1e15/go.mod h1:z4YtwM70uOnk8h0pjJYlj3zdYwi9l03By6iAIF5j/Pk= github.com/tendermint/go-amino v0.16.0 h1:GyhmgQKvqF82e2oZeuMSp9JTN0N09emoSZlb2lyGa2E= github.com/tendermint/go-amino v0.16.0/go.mod h1:TQU0M1i/ImAo+tYpZi73AU3V/dKeCoMC9Sphe2ZwGME= +github.com/tendermint/tendermint v0.34.0-rc4/go.mod h1:yotsojf2C1QBOw4dZrTcxbyxmPUrT4hNuOQWX9XUwB4= +github.com/tendermint/tendermint v0.34.0-rc6/go.mod h1:ugzyZO5foutZImv0Iyx/gOFCX6mjJTgbLHTwi17VDVg= +github.com/tendermint/tendermint v0.34.0/go.mod h1:Aj3PIipBFSNO21r+Lq3TtzQ+uKESxkbA3yo/INM4QwQ= +github.com/tendermint/tendermint v0.34.10 h1:wBOc/It8sh/pVH9np2V5fBvRmIyFN/bUrGPx+eAHexs= +github.com/tendermint/tendermint v0.34.10/go.mod h1:aeHL7alPh4uTBIJQ8mgFEE8VwJLXI1VD3rVOmH2Mcy0= +github.com/tendermint/tm-db v0.6.2/go.mod h1:GYtQ67SUvATOcoY8/+x6ylk8Qo02BQyLrAs+yAcLvGI= github.com/tendermint/tm-db v0.6.3/go.mod h1:lfA1dL9/Y/Y8wwyPp2NMLyn5P5Ptr/gvDFNWtrCWSf8= github.com/tendermint/tm-db v0.6.4 h1:3N2jlnYQkXNQclQwd/eKV/NzlqPlfK21cpRRIx80XXQ= github.com/tendermint/tm-db v0.6.4/go.mod h1:dptYhIpJ2M5kUuenLr+Yyf3zQOv1SgBZcl8/BmWlMBw= @@ -796,8 +794,10 @@ github.com/troian/hid v0.9.9/go.mod h1:n6adloQ1876oEXZr6fFsthy4FDHxwJhh7QYQspm30 github.com/tv42/httpunix v0.0.0-20150427012821-b75d8614f926/go.mod h1:9ESjWnEqriFuLhtthL60Sar/7RFoluCcXsuvEwTV5KM= github.com/tyler-smith/go-bip39 v1.0.1-0.20181017060643-dbb3b84ba2ef/go.mod h1:sJ5fKU0s6JVwZjjcUEX2zFOnvq0ASQ2K9Zr6cf67kNs= github.com/ugorji/go v1.1.4/go.mod h1:uQMGLiO92mf5W77hV/PUCpI3pbzQx3CRekS0kk+RGrc= +github.com/ugorji/go v1.1.7 h1:/68gy2h+1mWMrwZFeD1kQialdSzAb432dtpeJ42ovdo= github.com/ugorji/go v1.1.7/go.mod h1:kZn38zHttfInRq0xu/PH0az30d+z6vm202qpg1oXVMw= github.com/ugorji/go/codec v0.0.0-20181204163529-d75b2dcb6bc8/go.mod h1:VFNgLljTbGfSG7qAOspJ7OScBnGdDN/yBr0sguwnwf0= +github.com/ugorji/go/codec v1.1.7 h1:2SvQaVZ1ouYrrKKwoSk2pzd4A9evlKJb9oTL+OaLUSs= github.com/ugorji/go/codec v1.1.7/go.mod h1:Ax+UKWsSmolVDwsd+7N3ZtXu+yMGCf907BLYF3GoBXY= github.com/urfave/cli v1.20.0/go.mod h1:70zkFmudgCuE/ngEzBv17Jvp/497gISqfk5gWijbERA= github.com/urfave/cli v1.22.1/go.mod h1:Gos4lmkARVdJ6EkW0WaNv/tZAAMe9V7XWyB60NtXRu0= @@ -845,6 +845,7 @@ golang.org/x/crypto v0.0.0-20200622213623-75b288015ac9/go.mod h1:LzIPMQfyMNhhGPh golang.org/x/crypto v0.0.0-20200709230013-948cd5f35899/go.mod h1:LzIPMQfyMNhhGPhUkYOs5KpL4U8rLKemX1yGLhDgUto= golang.org/x/crypto v0.0.0-20200728195943-123391ffb6de/go.mod h1:LzIPMQfyMNhhGPhUkYOs5KpL4U8rLKemX1yGLhDgUto= golang.org/x/crypto v0.0.0-20200820211705-5c72a883971a/go.mod h1:LzIPMQfyMNhhGPhUkYOs5KpL4U8rLKemX1yGLhDgUto= +golang.org/x/crypto v0.0.0-20201016220609-9e8e0b390897/go.mod h1:LzIPMQfyMNhhGPhUkYOs5KpL4U8rLKemX1yGLhDgUto= golang.org/x/crypto v0.0.0-20201117144127-c1f2f97bffc9/go.mod h1:jdWPYTVW3xRLrWPugEBEK3UY2ZEsg3UU495nc5E+M+I= golang.org/x/crypto v0.0.0-20201221181555-eec23a3978ad h1:DN0cp81fZ3njFcrLCytUHRSUkqBjfTo4Tx9RJTWs0EY= golang.org/x/crypto v0.0.0-20201221181555-eec23a3978ad/go.mod h1:jdWPYTVW3xRLrWPugEBEK3UY2ZEsg3UU495nc5E+M+I= @@ -922,7 +923,6 @@ golang.org/x/sync v0.0.0-20190227155943-e225da77a7e6/go.mod h1:RxMgew5VJxzue5/jJ golang.org/x/sync v0.0.0-20190423024810-112230192c58/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= golang.org/x/sync v0.0.0-20190911185100-cd5d95a43a6e/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= golang.org/x/sync v0.0.0-20200625203802-6e8e738ad208/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= -golang.org/x/sync v0.0.0-20201020160332-67f06af15bc9 h1:SQFwaSi55rU7vdNs9Yr0Z324VNlrF+0wMqRXT4St8ck= golang.org/x/sync v0.0.0-20201020160332-67f06af15bc9/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= golang.org/x/sync v0.0.0-20201207232520-09787c993a3a h1:DcqTD9SDLc+1P/r1EmRBwnVsrOwW+kk2vWf9n+1sGhs= golang.org/x/sync v0.0.0-20201207232520-09787c993a3a/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= @@ -975,8 +975,6 @@ golang.org/x/sys v0.0.0-20200922070232-aee5d888a860/go.mod h1:h1NjWce9XRLGQEsW7w golang.org/x/sys v0.0.0-20200928205150-006507a75852/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20200930185726-fdedc70b468f/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20201015000850-e3ed0017c211/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20210113181707-4bcb84eeeb78 h1:nVuTkr9L6Bq62qpUqKo/RnZCFfzDBL0bYo6w9OJUqZY= -golang.org/x/sys v0.0.0-20210113181707-4bcb84eeeb78/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20210119212857-b64e53b001e4/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20210124154548-22da62e12c0c/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20210309074719-68d13333faf2 h1:46ULzRKLh1CwgRq2dC5SlBzEqqNCi8rreOZnNrbqcIY= @@ -1008,7 +1006,6 @@ golang.org/x/tools v0.0.0-20190614205625-5aca471b1d59/go.mod h1:/rFqwRUd4F7ZHNgw golang.org/x/tools v0.0.0-20190621195816-6e04913cbbac/go.mod h1:/rFqwRUd4F7ZHNgwSSTFct+R/Kf4OFW1sUzUTQQTgfc= golang.org/x/tools v0.0.0-20190628153133-6cdbf07be9d0/go.mod h1:/rFqwRUd4F7ZHNgwSSTFct+R/Kf4OFW1sUzUTQQTgfc= golang.org/x/tools v0.0.0-20190816200558-6889da9d5479/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo= -golang.org/x/tools v0.0.0-20190828213141-aed303cbaa74/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo= golang.org/x/tools v0.0.0-20190911174233-4f2ddba30aff/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo= golang.org/x/tools v0.0.0-20191012152004-8de300cfc20a/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo= golang.org/x/tools v0.0.0-20191029041327-9cc4af7d6b2c/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo= @@ -1025,8 +1022,8 @@ golang.org/x/tools v0.0.0-20200522201501-cb1345f3a375/go.mod h1:EkVYQZoAsY45+roY golang.org/x/tools v0.0.0-20200616133436-c1934b75d054/go.mod h1:EkVYQZoAsY45+roYkvgYkIh4xh/qjgUK9TdY2XT94GE= golang.org/x/tools v0.0.0-20200619180055-7c47624df98f/go.mod h1:EkVYQZoAsY45+roYkvgYkIh4xh/qjgUK9TdY2XT94GE= golang.org/x/tools v0.0.0-20200717024301-6ddee64345a6/go.mod h1:njjCfa9FT2d7l9Bc6FUM5FLjQPp3cFF28FI3qnDFljA= -golang.org/x/tools v0.0.0-20210106214847-113979e3529a h1:CB3a9Nez8M13wwlr/E2YtwoU+qYHKfC+JrDa45RXXoQ= golang.org/x/tools v0.0.0-20210106214847-113979e3529a/go.mod h1:emZCQorbCU4vsT4fOWvOPXz4eW1wZW4PmDk9uLelYpA= +golang.org/x/tools v0.1.0 h1:po9/4sTYwZU9lPhi1tOrb4hCv3qrhiQ77LZfGa2OjwY= golang.org/x/tools v0.1.0/go.mod h1:xkSsbof2nBLbhDlRMhhhyNLN/zl3eTqcnHD5viDpcZ0= golang.org/x/xerrors v0.0.0-20190717185122-a985d3407aa7/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= golang.org/x/xerrors v0.0.0-20191011141410-1b5146add898/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= @@ -1062,6 +1059,8 @@ google.golang.org/genproto v0.0.0-20200324203455-a04cca1dde73/go.mod h1:55QSHmfG google.golang.org/genproto v0.0.0-20200423170343-7949de9c1215/go.mod h1:55QSHmfGQM9UVYDPBsyGGes0y52j32PQ3BqQfXhyH3c= google.golang.org/genproto v0.0.0-20200513103714-09dca8ec2884/go.mod h1:55QSHmfGQM9UVYDPBsyGGes0y52j32PQ3BqQfXhyH3c= google.golang.org/genproto v0.0.0-20200526211855-cb27e3aa2013/go.mod h1:NbSheEEYHJ7i3ixzK3sjbqSGDJWnxyFXZblF3eUsNvo= +google.golang.org/genproto v0.0.0-20200825200019-8632dd797987/go.mod h1:FWY/as6DDZQgahTzZj3fqbO1CbirC29ZNUFHwi0/+no= +google.golang.org/genproto v0.0.0-20201111145450-ac7456db90a6/go.mod h1:FWY/as6DDZQgahTzZj3fqbO1CbirC29ZNUFHwi0/+no= google.golang.org/genproto v0.0.0-20201119123407-9b1e624d6bc4/go.mod h1:FWY/as6DDZQgahTzZj3fqbO1CbirC29ZNUFHwi0/+no= google.golang.org/genproto v0.0.0-20210114201628-6edceaf6022f h1:izedQ6yVIc5mZsRuXzmSreCOlzI0lCU1HpG8yEdMiKw= google.golang.org/genproto v0.0.0-20210114201628-6edceaf6022f/go.mod h1:FWY/as6DDZQgahTzZj3fqbO1CbirC29ZNUFHwi0/+no= @@ -1076,7 +1075,6 @@ google.golang.org/protobuf v1.22.0/go.mod h1:EGpADcykh3NcUnDUJcl1+ZksZNG86OlYog2 google.golang.org/protobuf v1.23.0/go.mod h1:EGpADcykh3NcUnDUJcl1+ZksZNG86OlYog2l/sGQquU= google.golang.org/protobuf v1.23.1-0.20200526195155-81db48ad09cc/go.mod h1:EGpADcykh3NcUnDUJcl1+ZksZNG86OlYog2l/sGQquU= google.golang.org/protobuf v1.24.0/go.mod h1:r/3tXBNzIEhYS9I1OUVjXDlt8tc493IdKGjtUeSXeh4= -google.golang.org/protobuf v1.25.0 h1:Ejskq+SyPohKW+1uil0JJMtmHCgJPJ/qWTxr8qp+R4c= google.golang.org/protobuf v1.25.0/go.mod h1:9JNX74DMeImyA3h4bdi1ymwjUzf21/xIlbajtzgsN7c= google.golang.org/protobuf v1.25.1-0.20200805231151-a709e31e5d12/go.mod h1:9JNX74DMeImyA3h4bdi1ymwjUzf21/xIlbajtzgsN7c= google.golang.org/protobuf v1.26.0-rc.1/go.mod h1:jlhhOSvTdKEhbULTjvd4ARK9grFBp09yW+WbY/TyQbw= @@ -1085,15 +1083,16 @@ google.golang.org/protobuf v1.26.0/go.mod h1:9q0QmTI4eRPtz6boOQmLYwt+qCgq0jsYwAQ gopkg.in/alecthomas/kingpin.v2 v2.2.6/go.mod h1:FMv+mEhP44yOT+4EoQTLFTRgOQ1FBLkstjWtayDeSgw= gopkg.in/check.v1 v0.0.0-20161208181325-20d25e280405/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0= gopkg.in/check.v1 v1.0.0-20180628173108-788fd7840127/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0= -gopkg.in/check.v1 v1.0.0-20190902080502-41f04d3bba15 h1:YR8cESwS4TdDjEe65xsg0ogRM/Nc3DYOhEAlW+xobZo= gopkg.in/check.v1 v1.0.0-20190902080502-41f04d3bba15/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0= +gopkg.in/check.v1 v1.0.0-20200227125254-8fa46927fb4f/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0= +gopkg.in/check.v1 v1.0.0-20200902074654-038fdea0a05b h1:QRR6H1YWRnHb4Y/HeNFCTJLFVxaq6wH4YuVdsUOr75U= +gopkg.in/check.v1 v1.0.0-20200902074654-038fdea0a05b/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0= gopkg.in/cheggaaa/pb.v1 v1.0.25/go.mod h1:V/YB90LKu/1FcN3WVnfiiE5oMCibMjukxqG/qStrOgw= gopkg.in/errgo.v2 v2.1.0/go.mod h1:hNsd1EY+bozCKY1Ytp96fpM3vjJbqLJn88ws8XvfDNI= gopkg.in/fsnotify.v1 v1.4.7/go.mod h1:Tz8NjZHkW78fSQdbUxIjBTcgA1z1m8ZHf0WmKUhAMys= gopkg.in/gcfg.v1 v1.2.3/go.mod h1:yesOnuUOFQAhST5vPY4nbZsb/huCgGGXlipJsBn0b3o= gopkg.in/inf.v0 v0.9.1 h1:73M5CoZyi3ZLMOyDlQh031Cx6N9NDJ2Vvfl76EDAgDc= gopkg.in/inf.v0 v0.9.1/go.mod h1:cWUDdTG/fYaXco+Dcufb5Vnc6Gp2YChqWtbxRZE0mXw= -gopkg.in/ini.v1 v1.51.0 h1:AQvPpx3LzTDM0AjnIRlVFwFFGC+npRopjZxLJj6gdno= gopkg.in/ini.v1 v1.51.0/go.mod h1:pNLf8WUiyNEtQjuu5G5vTm06TEv9tsIgeAvK8hOrP4k= gopkg.in/ini.v1 v1.61.0 h1:LBCdW4FmFYL4s/vDZD1RQYX7oAR6IjujCYgMdbHBR10= gopkg.in/ini.v1 v1.61.0/go.mod h1:pNLf8WUiyNEtQjuu5G5vTm06TEv9tsIgeAvK8hOrP4k= diff --git a/integration/e2e_test.go b/integration/e2e_test.go index ea69f9a0ef..190df03456 100644 --- a/integration/e2e_test.go +++ b/integration/e2e_test.go @@ -83,9 +83,9 @@ func (s *IntegrationTestSuite) SetupSuite() { s.network = network.New(s.T(), cfg) kb := s.network.Validators[0].ClientCtx.Keyring - _, _, err := kb.NewMnemonic("keyBar", keyring.English, sdk.FullFundraiserPath, hd.Secp256k1) + _, _, err := kb.NewMnemonic("keyBar", keyring.English, sdk.FullFundraiserPath, keyring.DefaultBIP39Passphrase, hd.Secp256k1) s.Require().NoError(err) - _, _, err = kb.NewMnemonic("keyFoo", keyring.English, sdk.FullFundraiserPath, hd.Secp256k1) + _, _, err = kb.NewMnemonic("keyFoo", keyring.English, sdk.FullFundraiserPath, keyring.DefaultBIP39Passphrase, hd.Secp256k1) s.Require().NoError(err) // Wait for the network to start diff --git a/integration/test_helpers.go b/integration/test_helpers.go index ab0ed2c4cf..3aef32f1cf 100644 --- a/integration/test_helpers.go +++ b/integration/test_helpers.go @@ -11,7 +11,7 @@ import ( "github.com/cosmos/cosmos-sdk/client" sdk "github.com/cosmos/cosmos-sdk/types" - authclient "github.com/cosmos/cosmos-sdk/x/auth/client" + authtx "github.com/cosmos/cosmos-sdk/x/auth/tx" "github.com/gogo/protobuf/jsonpb" "github.com/stretchr/testify/assert" "github.com/stretchr/testify/require" @@ -141,7 +141,7 @@ func validateTxSuccessful(t testing.TB, cctx client.Context, data []byte) { err := jsonpb.Unmarshal(bytes.NewBuffer(data), &resp) require.NoError(t, err) - res, err := authclient.QueryTx(cctx, resp.TxHash) + res, err := authtx.QueryTx(cctx, resp.TxHash) require.NoError(t, err) require.Zero(t, res.Code, res) diff --git a/sdkutil/broadcast.go b/sdkutil/broadcast.go index 7c618b1b5c..7af33b1ad3 100644 --- a/sdkutil/broadcast.go +++ b/sdkutil/broadcast.go @@ -13,7 +13,8 @@ import ( "github.com/cosmos/cosmos-sdk/client/input" "github.com/cosmos/cosmos-sdk/client/tx" sdk "github.com/cosmos/cosmos-sdk/types" - authclient "github.com/cosmos/cosmos-sdk/x/auth/client" + authtx "github.com/cosmos/cosmos-sdk/x/auth/tx" + "github.com/ovrclk/akash/client/broadcaster" "github.com/spf13/pflag" ttypes "github.com/tendermint/tendermint/types" ) @@ -44,7 +45,7 @@ func BroadcastTX(ctx client.Context, flags *pflag.FlagSet, msgs ...sdk.Msg) erro return tx.GenerateTx(ctx, txf, msgs...) } - txf, err := tx.PrepareFactory(ctx, txf) + txf, err := broadcaster.PrepareFactory(ctx, txf) if err != nil { return err } @@ -124,7 +125,7 @@ func doBroadcast(ctx client.Context, timeout time.Duration, txb ttypes.Tx) (*sdk } // check transaction - res, err := authclient.QueryTx(ctx, cres.TxHash) + res, err := authtx.QueryTx(ctx, cres.TxHash) if err == nil { return res, nil } @@ -165,7 +166,7 @@ func adjustGas(ctx client.Context, txf tx.Factory, msgs ...sdk.Msg) (tx.Factory, if !ctx.Simulate && !txf.SimulateAndExecute() { return txf, nil } - _, adjusted, err := tx.CalculateGas(ctx.QueryWithData, txf, msgs...) + _, adjusted, err := broadcaster.CalculateGas(ctx.QueryWithData, txf, msgs...) if err != nil { return txf, err } diff --git a/testutil/types.go b/testutil/types.go index da4ef56728..0163819e4f 100644 --- a/testutil/types.go +++ b/testutil/types.go @@ -117,9 +117,9 @@ func DefaultConfig() network.Config { NumValidators: 4, BondDenom: CoinDenom, MinGasPrices: fmt.Sprintf("0.000006%s", CoinDenom), - AccountTokens: sdk.TokensFromConsensusPower(1000000000000), - StakingTokens: sdk.TokensFromConsensusPower(100000), - BondedTokens: sdk.TokensFromConsensusPower(100), + AccountTokens: sdk.TokensFromConsensusPower(1000000000000, sdk.DefaultPowerReduction), + StakingTokens: sdk.TokensFromConsensusPower(100000, sdk.DefaultPowerReduction), + BondedTokens: sdk.TokensFromConsensusPower(100, sdk.DefaultPowerReduction), PruningStrategy: storetypes.PruningOptionNothing, CleanupDir: true, SigningAlgo: string(hd.Secp256k1Type), diff --git a/x/audit/client/cli/query.go b/x/audit/client/cli/query.go index dbdef0ea68..4e0eca5071 100644 --- a/x/audit/client/cli/query.go +++ b/x/audit/client/cli/query.go @@ -1,8 +1,6 @@ package cli import ( - "context" - "github.com/cosmos/cosmos-sdk/client" "github.com/cosmos/cosmos-sdk/client/flags" sdk "github.com/cosmos/cosmos-sdk/types" @@ -48,7 +46,7 @@ func cmdGetProviders() *cobra.Command { Pagination: pageReq, } - res, err := queryClient.AllProvidersAttributes(context.Background(), params) + res, err := queryClient.AllProvidersAttributes(cmd.Context(), params) if err != nil { return err } @@ -83,7 +81,7 @@ func cmdGetProvider() *cobra.Command { var res *types.QueryProvidersResponse if len(args) == 1 { - res, err = queryClient.ProviderAttributes(context.Background(), + res, err = queryClient.ProviderAttributes(cmd.Context(), &types.QueryProviderAttributesRequest{ Owner: owner.String(), }, @@ -94,7 +92,7 @@ func cmdGetProvider() *cobra.Command { return err } - res, err = queryClient.ProviderAuditorAttributes(context.Background(), + res, err = queryClient.ProviderAuditorAttributes(cmd.Context(), &types.QueryProviderAuditorRequest{ Auditor: auditor.String(), Owner: owner.String(), diff --git a/x/audit/keeper/grpc_query.go b/x/audit/keeper/grpc_query.go index 35e26aac5c..15a45e4ce8 100644 --- a/x/audit/keeper/grpc_query.go +++ b/x/audit/keeper/grpc_query.go @@ -34,7 +34,7 @@ func (q Querier) AllProvidersAttributes( pageRes, err := sdkquery.Paginate(store, req.Pagination, func(key []byte, value []byte) error { var provider types.Provider - err := q.cdc.UnmarshalBinaryBare(value, &provider) + err := q.cdc.Unmarshal(value, &provider) if err != nil { return err } @@ -128,7 +128,7 @@ func (q Querier) AuditorAttributes( pageRes, err := sdkquery.Paginate(store, req.Pagination, func(key []byte, value []byte) error { var provider types.Provider - err := q.cdc.UnmarshalBinaryBare(value, &provider) + err := q.cdc.Unmarshal(value, &provider) if err != nil { return err } diff --git a/x/audit/keeper/keeper.go b/x/audit/keeper/keeper.go index 366331b2e1..7dd0605b76 100644 --- a/x/audit/keeper/keeper.go +++ b/x/audit/keeper/keeper.go @@ -24,16 +24,16 @@ type IKeeper interface { // Keeper of the provider store type Keeper struct { skey sdk.StoreKey - cdc codec.BinaryMarshaler + cdc codec.BinaryCodec } // NewKeeper creates and returns an instance for Market keeper -func NewKeeper(cdc codec.BinaryMarshaler, skey sdk.StoreKey) Keeper { +func NewKeeper(cdc codec.BinaryCodec, skey sdk.StoreKey) Keeper { return Keeper{cdc: cdc, skey: skey} } // Codec returns keeper codec -func (k Keeper) Codec() codec.BinaryMarshaler { +func (k Keeper) Codec() codec.BinaryCodec { return k.cdc } @@ -47,7 +47,7 @@ func (k Keeper) GetProviderByAuditor(ctx sdk.Context, id types.ProviderID) (type } var val types.Provider - k.cdc.MustUnmarshalBinaryBare(buf, &val) + k.cdc.MustUnmarshal(buf, &val) return val, true } @@ -65,7 +65,7 @@ func (k Keeper) GetProviderAttributes(ctx sdk.Context, id sdk.Address) (types.Pr for ; iter.Valid(); iter.Next() { var val types.Provider - k.cdc.MustUnmarshalBinaryBare(iter.Value(), &val) + k.cdc.MustUnmarshal(iter.Value(), &val) attr = append(attr, val) } @@ -92,7 +92,7 @@ func (k Keeper) CreateOrUpdateProviderAttributes(ctx sdk.Context, id types.Provi buf := store.Get(key) if buf != nil { tmp := types.Provider{} - k.cdc.MustUnmarshalBinaryBare(buf, &tmp) + k.cdc.MustUnmarshal(buf, &tmp) kv := make(map[string]string) @@ -120,7 +120,7 @@ func (k Keeper) CreateOrUpdateProviderAttributes(ctx sdk.Context, id types.Provi return prov.Attributes[i].Key < prov.Attributes[j].Key }) - store.Set(key, k.cdc.MustMarshalBinaryBare(&prov)) + store.Set(key, k.cdc.MustMarshal(&prov)) ctx.EventManager().EmitEvent( types.NewEventTrustedAuditorCreated(id.Owner, id.Auditor).ToSDKEvent(), @@ -147,7 +147,7 @@ func (k Keeper) DeleteProviderAttributes(ctx sdk.Context, id types.ProviderID, k } tmp := types.Provider{} - k.cdc.MustUnmarshalBinaryBare(buf, &tmp) + k.cdc.MustUnmarshal(buf, &tmp) kv := make(map[string]string) @@ -184,7 +184,7 @@ func (k Keeper) DeleteProviderAttributes(ctx sdk.Context, id types.ProviderID, k prov.Attributes = attr - store.Set(key, k.cdc.MustMarshalBinaryBare(&prov)) + store.Set(key, k.cdc.MustMarshal(&prov)) } } @@ -206,7 +206,7 @@ func (k Keeper) WithProviders(ctx sdk.Context, fn func(types.Provider) bool) { for ; iter.Valid(); iter.Next() { var val types.Provider - k.cdc.MustUnmarshalBinaryBare(iter.Value(), &val) + k.cdc.MustUnmarshal(iter.Value(), &val) if stop := fn(val); stop { break } @@ -223,7 +223,7 @@ func (k Keeper) WithProvider(ctx sdk.Context, id sdk.Address, fn func(types.Prov for ; iter.Valid(); iter.Next() { var val types.Provider - k.cdc.MustUnmarshalBinaryBare(iter.Value(), &val) + k.cdc.MustUnmarshal(iter.Value(), &val) if stop := fn(val); stop { break } diff --git a/x/audit/module.go b/x/audit/module.go index 312a2bc93b..2b9314bc6c 100644 --- a/x/audit/module.go +++ b/x/audit/module.go @@ -37,7 +37,7 @@ var ( // AppModuleBasic defines the basic application module used by the provider module. type AppModuleBasic struct { - cdc codec.Marshaler + cdc codec.Codec } // Name returns provider module's name @@ -122,7 +122,7 @@ type AppModule struct { } // NewAppModule creates a new AppModule object -func NewAppModule(cdc codec.Marshaler, k keeper.Keeper) AppModule { +func NewAppModule(cdc codec.Codec, k keeper.Keeper) AppModule { return AppModule{ AppModuleBasic: AppModuleBasic{cdc: cdc}, keeper: k, @@ -190,6 +190,9 @@ func (am AppModule) ExportGenesis(ctx sdk.Context, cdc codec.JSONCodec) json.Raw return cdc.MustMarshalJSON(gs) } +// ConsensusVersion implements AppModule/ConsensusVersion. +func (AppModule) ConsensusVersion() uint64 { return 1 } + // ____________________________________________________________________________ // AppModuleSimulation implements an application simulation module for the audit module. diff --git a/x/cert/client/cli/query.go b/x/cert/client/cli/query.go index fa13975877..59e22d6a18 100644 --- a/x/cert/client/cli/query.go +++ b/x/cert/client/cli/query.go @@ -1,7 +1,6 @@ package cli import ( - "context" "math/big" "github.com/cosmos/cosmos-sdk/client" @@ -79,7 +78,7 @@ func cmdGetCertificates() *cobra.Command { params.Filter.State = value } - res, err := queryClient.Certificates(context.Background(), params) + res, err := queryClient.Certificates(cmd.Context(), params) if err != nil { return err } diff --git a/x/cert/client/cli/tx.go b/x/cert/client/cli/tx.go index 85294ca6bf..c116630ba1 100644 --- a/x/cert/client/cli/tx.go +++ b/x/cert/client/cli/tx.go @@ -303,7 +303,7 @@ func addCertToGenesis(cmd *cobra.Command, cert types.GenesisCertificate) error { return err } - cdc := cctx.JSONMarshaler.(codec.Marshaler) + cdc := cctx.JSONCodec.(codec.Codec) serverCtx := server.GetServerContextFromCmd(cmd) config := serverCtx.Config diff --git a/x/cert/genesis.go b/x/cert/genesis.go index 4a6d6275c0..e66d9eda36 100644 --- a/x/cert/genesis.go +++ b/x/cert/genesis.go @@ -53,7 +53,7 @@ func DefaultGenesisState() *types.GenesisState { // GetGenesisStateFromAppState returns x/cert GenesisState given raw application // genesis state. -func GetGenesisStateFromAppState(cdc codec.JSONMarshaler, appState map[string]json.RawMessage) *types.GenesisState { +func GetGenesisStateFromAppState(cdc codec.JSONCodec, appState map[string]json.RawMessage) *types.GenesisState { var genesisState types.GenesisState if appState[ModuleName] != nil { diff --git a/x/cert/keeper/keeper.go b/x/cert/keeper/keeper.go index 79472f4d1b..1e086d2c72 100644 --- a/x/cert/keeper/keeper.go +++ b/x/cert/keeper/keeper.go @@ -10,7 +10,7 @@ import ( // Keeper of the provider store type Keeper interface { Querier() types.QueryServer - Codec() codec.BinaryMarshaler + Codec() codec.BinaryCodec CreateCertificate(sdk.Context, sdk.Address, []byte, []byte) error RevokeCertificate(sdk.Context, types.CertID) error GetCertificateByID(ctx sdk.Context, id types.CertID) (types.CertificateResponse, bool) @@ -22,13 +22,13 @@ type Keeper interface { type keeper struct { skey sdk.StoreKey - cdc codec.BinaryMarshaler + cdc codec.BinaryCodec } var _ Keeper = (*keeper)(nil) // NewKeeper creates and returns an instance for Market keeper -func NewKeeper(cdc codec.BinaryMarshaler, skey sdk.StoreKey) Keeper { +func NewKeeper(cdc codec.BinaryCodec, skey sdk.StoreKey) Keeper { return &keeper{cdc: cdc, skey: skey} } @@ -38,7 +38,7 @@ func (k keeper) Querier() types.QueryServer { } // Codec returns keeper codec -func (k keeper) Codec() codec.BinaryMarshaler { +func (k keeper) Codec() codec.BinaryCodec { return k.cdc } @@ -70,7 +70,7 @@ func (k keeper) CreateCertificate(ctx sdk.Context, owner sdk.Address, crt []byte Pubkey: pubkey, } - store.Set(key, k.cdc.MustMarshalBinaryBare(&val)) + store.Set(key, k.cdc.MustMarshal(&val)) return nil } @@ -85,7 +85,7 @@ func (k keeper) RevokeCertificate(ctx sdk.Context, id types.CertID) error { } var cert types.Certificate - k.cdc.MustUnmarshalBinaryBare(buf, &cert) + k.cdc.MustUnmarshal(buf, &cert) if cert.State == types.CertificateRevoked { return types.ErrCertificateAlreadyRevoked @@ -93,7 +93,7 @@ func (k keeper) RevokeCertificate(ctx sdk.Context, id types.CertID) error { cert.State = types.CertificateRevoked - store.Set(key, k.cdc.MustMarshalBinaryBare(&cert)) + store.Set(key, k.cdc.MustMarshal(&cert)) return nil } @@ -108,7 +108,7 @@ func (k keeper) GetCertificateByID(ctx sdk.Context, id types.CertID) (types.Cert } var val types.Certificate - k.cdc.MustUnmarshalBinaryBare(buf, &val) + k.cdc.MustUnmarshal(buf, &val) return types.CertificateResponse{ Certificate: val, @@ -191,7 +191,7 @@ func (k keeper) mustUnmarshal(key, val []byte) types.CertificateResponse { item := types.CertificateResponse{ Serial: serial.String(), } - k.cdc.MustUnmarshalBinaryBare(val, &item.Certificate) + k.cdc.MustUnmarshal(val, &item.Certificate) return item } @@ -202,7 +202,7 @@ func (k keeper) unmarshalIterator(key, val []byte) (types.CertificateResponse, e Serial: serial.String(), } - if err := k.cdc.UnmarshalBinaryBare(val, &item.Certificate); err != nil { + if err := k.cdc.Unmarshal(val, &item.Certificate); err != nil { return types.CertificateResponse{}, err } diff --git a/x/cert/keeper/key.go b/x/cert/keeper/key.go index 6d80f01ca1..14de73b429 100644 --- a/x/cert/keeper/key.go +++ b/x/cert/keeper/key.go @@ -5,12 +5,12 @@ import ( "math/big" sdk "github.com/cosmos/cosmos-sdk/types" - + sdkAddress "github.com/cosmos/cosmos-sdk/types/address" "github.com/ovrclk/akash/x/cert/types" ) const ( - keyAddrPrefixLen = 1 + sdk.AddrLen + keyAddrPrefixLen = 1 + sdkAddress.MaxAddrLen ) var ( diff --git a/x/cert/module.go b/x/cert/module.go index 5ceae67b44..0333549434 100644 --- a/x/cert/module.go +++ b/x/cert/module.go @@ -35,7 +35,7 @@ var ( // AppModuleBasic defines the basic application module used by the provider module. type AppModuleBasic struct { - cdc codec.Marshaler + cdc codec.Codec } // Name returns provider module's name @@ -55,12 +55,12 @@ func (b AppModuleBasic) RegisterInterfaces(registry cdctypes.InterfaceRegistry) // DefaultGenesis returns default genesis state as raw bytes for the provider // module. -func (AppModuleBasic) DefaultGenesis(cdc codec.JSONMarshaler) json.RawMessage { +func (AppModuleBasic) DefaultGenesis(cdc codec.JSONCodec) json.RawMessage { return cdc.MustMarshalJSON(DefaultGenesisState()) } // ValidateGenesis validation check of the Genesis -func (AppModuleBasic) ValidateGenesis(cdc codec.JSONMarshaler, _ client.TxEncodingConfig, bz json.RawMessage) error { +func (AppModuleBasic) ValidateGenesis(cdc codec.JSONCodec, _ client.TxEncodingConfig, bz json.RawMessage) error { if bz == nil { return nil } @@ -110,7 +110,7 @@ type AppModule struct { } // NewAppModule creates a new AppModule object -func NewAppModule(cdc codec.Marshaler, k keeper.Keeper) AppModule { +func NewAppModule(cdc codec.Codec, k keeper.Keeper) AppModule { return AppModule{ AppModuleBasic: AppModuleBasic{cdc: cdc}, keeper: k, @@ -157,7 +157,7 @@ func (am AppModule) EndBlock(_ sdk.Context, _ abci.RequestEndBlock) []abci.Valid // InitGenesis performs genesis initialization for the audit module. It returns // no validator updates. -func (am AppModule) InitGenesis(ctx sdk.Context, cdc codec.JSONMarshaler, data json.RawMessage) []abci.ValidatorUpdate { +func (am AppModule) InitGenesis(ctx sdk.Context, cdc codec.JSONCodec, data json.RawMessage) []abci.ValidatorUpdate { var genesisState types.GenesisState cdc.MustUnmarshalJSON(data, &genesisState) return InitGenesis(ctx, am.keeper, &genesisState) @@ -165,11 +165,14 @@ func (am AppModule) InitGenesis(ctx sdk.Context, cdc codec.JSONMarshaler, data j // ExportGenesis returns the exported genesis state as raw bytes for the audit // module. -func (am AppModule) ExportGenesis(ctx sdk.Context, cdc codec.JSONMarshaler) json.RawMessage { +func (am AppModule) ExportGenesis(ctx sdk.Context, cdc codec.JSONCodec) json.RawMessage { gs := ExportGenesis(ctx, am.keeper) return cdc.MustMarshalJSON(gs) } +// ConsensusVersion implements AppModule/ConsensusVersion. +func (AppModule) ConsensusVersion() uint64 { return 1 } + // ____________________________________________________________________________ // AppModuleSimulation implements an application simulation module for the audit module. diff --git a/x/cert/types/genesis.go b/x/cert/types/genesis.go index dc6b580932..b39dd3013a 100644 --- a/x/cert/types/genesis.go +++ b/x/cert/types/genesis.go @@ -47,7 +47,7 @@ func (m *GenesisState) Validate() error { // GetGenesisStateFromAppState returns x/cert GenesisState given raw application // genesis state. -func GetGenesisStateFromAppState(cdc codec.JSONMarshaler, appState map[string]json.RawMessage) *GenesisState { +func GetGenesisStateFromAppState(cdc codec.JSONCodec, appState map[string]json.RawMessage) *GenesisState { var genesisState GenesisState if appState[ModuleName] != nil { diff --git a/x/deployment/client/cli/cli_test.go b/x/deployment/client/cli/cli_test.go index 68a578a312..9ec46e5a88 100644 --- a/x/deployment/client/cli/cli_test.go +++ b/x/deployment/client/cli/cli_test.go @@ -85,7 +85,7 @@ func (s *IntegrationTestSuite) TestDeployment() { s.Require().NoError(err) out := &types.QueryDeploymentsResponse{} - err = val.ClientCtx.JSONMarshaler.UnmarshalJSON(resp.Bytes(), out) + err = val.ClientCtx.JSONCodec.UnmarshalJSON(resp.Bytes(), out) s.Require().NoError(err) s.Require().Len(out.Deployments, 1, "Deployment Create Failed") deployments := out.Deployments @@ -98,7 +98,7 @@ func (s *IntegrationTestSuite) TestDeployment() { var deployment types.QueryDeploymentResponse fmt.Println(string(resp.Bytes())) - err = val.ClientCtx.JSONMarshaler.UnmarshalJSON(resp.Bytes(), &deployment) + err = val.ClientCtx.JSONCodec.UnmarshalJSON(resp.Bytes(), &deployment) s.Require().NoError(err) s.Require().Equal(createdDep, deployment) @@ -111,7 +111,7 @@ func (s *IntegrationTestSuite) TestDeployment() { s.Require().NoError(err, "Error when fetching deployments with owner filter") out = &types.QueryDeploymentsResponse{} - err = val.ClientCtx.JSONMarshaler.UnmarshalJSON(resp.Bytes(), out) + err = val.ClientCtx.JSONCodec.UnmarshalJSON(resp.Bytes(), out) s.Require().NoError(err) s.Require().Len(out.Deployments, 1) @@ -134,7 +134,7 @@ func (s *IntegrationTestSuite) TestDeployment() { s.Require().NoError(err) var deploymentV2 types.QueryDeploymentResponse - err = val.ClientCtx.JSONMarshaler.UnmarshalJSON(resp.Bytes(), &deploymentV2) + err = val.ClientCtx.JSONCodec.UnmarshalJSON(resp.Bytes(), &deploymentV2) s.Require().NoError(err) s.Require().NotEqual(deployment.Deployment.Version, deploymentV2.Deployment.Version) @@ -174,7 +174,7 @@ func (s *IntegrationTestSuite) TestDeployment() { s.Require().NoError(err) out = &types.QueryDeploymentsResponse{} - err = val.ClientCtx.JSONMarshaler.UnmarshalJSON(resp.Bytes(), out) + err = val.ClientCtx.JSONCodec.UnmarshalJSON(resp.Bytes(), out) s.Require().NoError(err) s.Require().Len(out.Deployments, 1, "Deployment Close Failed") } @@ -207,7 +207,7 @@ func (s *IntegrationTestSuite) TestGroup() { s.Require().NoError(err) out := &types.QueryDeploymentsResponse{} - err = val.ClientCtx.JSONMarshaler.UnmarshalJSON(resp.Bytes(), out) + err = val.ClientCtx.JSONCodec.UnmarshalJSON(resp.Bytes(), out) s.Require().NoError(err) s.Require().Len(out.Deployments, 1, "Deployment Create Failed") deployments := out.Deployments @@ -235,7 +235,7 @@ func (s *IntegrationTestSuite) TestGroup() { s.Require().NoError(err) var group types.Group - err = val.ClientCtx.JSONMarshaler.UnmarshalJSON(resp.Bytes(), &group) + err = val.ClientCtx.JSONCodec.UnmarshalJSON(resp.Bytes(), &group) s.Require().NoError(err) s.Require().Equal(types.GroupClosed, group.State) } diff --git a/x/deployment/client/cli/grpc_rest_test.go b/x/deployment/client/cli/grpc_rest_test.go index a5a84ba1e1..461ca77063 100644 --- a/x/deployment/client/cli/grpc_rest_test.go +++ b/x/deployment/client/cli/grpc_rest_test.go @@ -74,7 +74,7 @@ func (s *GRPCRestTestSuite) SetupSuite() { s.Require().NoError(err) out := &types.QueryDeploymentsResponse{} - err = val.ClientCtx.JSONMarshaler.UnmarshalJSON(resp.Bytes(), out) + err = val.ClientCtx.JSONCodec.UnmarshalJSON(resp.Bytes(), out) s.Require().NoError(err) s.Require().Len(out.Deployments, 1, "Deployment Create Failed") deployments := out.Deployments @@ -134,7 +134,7 @@ func (s *GRPCRestTestSuite) TestGetDeployments() { s.Require().NoError(err) var deployments types.QueryDeploymentsResponse - err = val.ClientCtx.JSONMarshaler.UnmarshalJSON(resp, &deployments) + err = val.ClientCtx.JSONCodec.UnmarshalJSON(resp, &deployments) if tc.expErr { s.Require().NotNil(err) @@ -194,7 +194,7 @@ func (s *GRPCRestTestSuite) TestGetDeployment() { s.Require().NoError(err) var out types.QueryDeploymentResponse - err = val.ClientCtx.JSONMarshaler.UnmarshalJSON(resp, &out) + err = val.ClientCtx.JSONCodec.UnmarshalJSON(resp, &out) if tc.expErr { s.Require().Error(err) @@ -254,7 +254,7 @@ func (s *GRPCRestTestSuite) TestGetGroup() { s.Require().NoError(err) var out types.QueryGroupResponse - err = val.ClientCtx.JSONMarshaler.UnmarshalJSON(resp, &out) + err = val.ClientCtx.JSONCodec.UnmarshalJSON(resp, &out) if tc.expErr { s.Require().Error(err) diff --git a/x/deployment/client/cli/query.go b/x/deployment/client/cli/query.go index 6154604848..488e913bbe 100644 --- a/x/deployment/client/cli/query.go +++ b/x/deployment/client/cli/query.go @@ -1,8 +1,6 @@ package cli import ( - "context" - "github.com/cosmos/cosmos-sdk/client" "github.com/cosmos/cosmos-sdk/client/flags" "github.com/ovrclk/akash/x/deployment/types" @@ -56,7 +54,7 @@ func cmdDeployments() *cobra.Command { Pagination: pageReq, } - res, err := queryClient.Deployments(context.Background(), params) + res, err := queryClient.Deployments(cmd.Context(), params) if err != nil { return err } @@ -90,7 +88,7 @@ func cmdDeployment() *cobra.Command { return err } - res, err := queryClient.Deployment(context.Background(), &types.QueryDeploymentRequest{ID: id}) + res, err := queryClient.Deployment(cmd.Context(), &types.QueryDeploymentRequest{ID: id}) if err != nil { return err } @@ -139,7 +137,7 @@ func cmdGetGroup() *cobra.Command { return err } - res, err := queryClient.Group(context.Background(), &types.QueryGroupRequest{ID: id}) + res, err := queryClient.Group(cmd.Context(), &types.QueryGroupRequest{ID: id}) if err != nil { return err } diff --git a/x/deployment/keeper/grpc_query.go b/x/deployment/keeper/grpc_query.go index a79002a626..ac0240607d 100644 --- a/x/deployment/keeper/grpc_query.go +++ b/x/deployment/keeper/grpc_query.go @@ -40,7 +40,7 @@ func (k Querier) Deployments(c context.Context, req *types.QueryDeploymentsReque pageRes, err := sdkquery.FilteredPaginate(depStore, req.Pagination, func(key []byte, value []byte, accumulate bool) (bool, error) { var deployment types.Deployment - err := k.cdc.UnmarshalBinaryBare(value, &deployment) + err := k.cdc.Unmarshal(value, &deployment) if err != nil { return false, err } diff --git a/x/deployment/keeper/keeper.go b/x/deployment/keeper/keeper.go index b8db520d9f..2b95e1cc19 100644 --- a/x/deployment/keeper/keeper.go +++ b/x/deployment/keeper/keeper.go @@ -10,7 +10,7 @@ import ( ) type IKeeper interface { - Codec() codec.BinaryMarshaler + Codec() codec.BinaryCodec GetDeployment(ctx sdk.Context, id types.DeploymentID) (types.Deployment, bool) GetGroup(ctx sdk.Context, id types.GroupID) (types.Group, bool) GetGroups(ctx sdk.Context, id types.DeploymentID) []types.Group @@ -33,13 +33,13 @@ type IKeeper interface { // Keeper of the deployment store type Keeper struct { skey sdk.StoreKey - cdc codec.BinaryMarshaler + cdc codec.BinaryCodec pspace paramtypes.Subspace ekeeper EscrowKeeper } // NewKeeper creates and returns an instance for deployment keeper -func NewKeeper(cdc codec.BinaryMarshaler, skey sdk.StoreKey, pspace paramtypes.Subspace, ekeeper EscrowKeeper) IKeeper { +func NewKeeper(cdc codec.BinaryCodec, skey sdk.StoreKey, pspace paramtypes.Subspace, ekeeper EscrowKeeper) IKeeper { if !pspace.HasKeyTable() { pspace = pspace.WithKeyTable(types.ParamKeyTable()) @@ -58,7 +58,7 @@ func (k Keeper) NewQuerier() Querier { } // Codec returns keeper codec -func (k Keeper) Codec() codec.BinaryMarshaler { +func (k Keeper) Codec() codec.BinaryCodec { return k.cdc } @@ -76,7 +76,7 @@ func (k Keeper) GetDeployment(ctx sdk.Context, id types.DeploymentID) (types.Dep var val types.Deployment - k.cdc.MustUnmarshalBinaryBare(buf, &val) + k.cdc.MustUnmarshal(buf, &val) return val, true } @@ -95,7 +95,7 @@ func (k Keeper) GetGroup(ctx sdk.Context, id types.GroupID) (types.Group, bool) var val types.Group - k.cdc.MustUnmarshalBinaryBare(buf, &val) + k.cdc.MustUnmarshal(buf, &val) return val, true } @@ -111,7 +111,7 @@ func (k Keeper) GetGroups(ctx sdk.Context, id types.DeploymentID) []types.Group for ; iter.Valid(); iter.Next() { var val types.Group - k.cdc.MustUnmarshalBinaryBare(iter.Value(), &val) + k.cdc.MustUnmarshal(iter.Value(), &val) vals = append(vals, val) } @@ -129,7 +129,7 @@ func (k Keeper) Create(ctx sdk.Context, deployment types.Deployment, groups []ty return types.ErrDeploymentExists } - store.Set(key, k.cdc.MustMarshalBinaryBare(&deployment)) + store.Set(key, k.cdc.MustMarshal(&deployment)) for idx := range groups { group := groups[idx] @@ -138,7 +138,7 @@ func (k Keeper) Create(ctx sdk.Context, deployment types.Deployment, groups []ty return types.ErrInvalidGroupID } gkey := groupKey(group.ID()) - store.Set(gkey, k.cdc.MustMarshalBinaryBare(&group)) + store.Set(gkey, k.cdc.MustMarshal(&group)) } ctx.EventManager().EmitEvent( @@ -165,7 +165,7 @@ func (k Keeper) UpdateDeployment(ctx sdk.Context, deployment types.Deployment) e ToSDKEvent(), ) - store.Set(key, k.cdc.MustMarshalBinaryBare(&deployment)) + store.Set(key, k.cdc.MustMarshal(&deployment)) return nil } @@ -188,7 +188,7 @@ func (k Keeper) CloseDeployment(ctx sdk.Context, deployment types.Deployment) { ToSDKEvent(), ) - store.Set(key, k.cdc.MustMarshalBinaryBare(&deployment)) + store.Set(key, k.cdc.MustMarshal(&deployment)) } // OnCloseGroup provides shutdown API for a Group @@ -206,7 +206,7 @@ func (k Keeper) OnCloseGroup(ctx sdk.Context, group types.Group, state types.Gro ToSDKEvent(), ) - store.Set(key, k.cdc.MustMarshalBinaryBare(&group)) + store.Set(key, k.cdc.MustMarshal(&group)) return nil } @@ -225,7 +225,7 @@ func (k Keeper) OnPauseGroup(ctx sdk.Context, group types.Group) error { ToSDKEvent(), ) - store.Set(key, k.cdc.MustMarshalBinaryBare(&group)) + store.Set(key, k.cdc.MustMarshal(&group)) return nil } @@ -244,7 +244,7 @@ func (k Keeper) OnStartGroup(ctx sdk.Context, group types.Group) error { ToSDKEvent(), ) - store.Set(key, k.cdc.MustMarshalBinaryBare(&group)) + store.Set(key, k.cdc.MustMarshal(&group)) return nil } @@ -255,7 +255,7 @@ func (k Keeper) WithDeployments(ctx sdk.Context, fn func(types.Deployment) bool) defer iter.Close() for ; iter.Valid(); iter.Next() { var val types.Deployment - k.cdc.MustUnmarshalBinaryBare(iter.Value(), &val) + k.cdc.MustUnmarshal(iter.Value(), &val) if stop := fn(val); stop { break } @@ -294,7 +294,7 @@ func (k Keeper) SetParams(ctx sdk.Context, params types.Params) { func (k Keeper) updateDeployment(ctx sdk.Context, obj types.Deployment) { store := ctx.KVStore(k.skey) key := deploymentKey(obj.ID()) - store.Set(key, k.cdc.MustMarshalBinaryBare(&obj)) + store.Set(key, k.cdc.MustMarshal(&obj)) } // nolint: unused @@ -302,5 +302,5 @@ func (k Keeper) updateGroup(ctx sdk.Context, group types.Group) { store := ctx.KVStore(k.skey) key := groupKey(group.ID()) - store.Set(key, k.cdc.MustMarshalBinaryBare(&group)) + store.Set(key, k.cdc.MustMarshal(&group)) } diff --git a/x/deployment/module.go b/x/deployment/module.go index 976ae0054c..b28b50c937 100644 --- a/x/deployment/module.go +++ b/x/deployment/module.go @@ -39,7 +39,7 @@ var ( // AppModuleBasic defines the basic application module used by the deployment module. type AppModuleBasic struct { - cdc codec.Marshaler + cdc codec.Codec } // Name returns deployment module's name @@ -59,12 +59,12 @@ func (b AppModuleBasic) RegisterInterfaces(registry cdctypes.InterfaceRegistry) // DefaultGenesis returns default genesis state as raw bytes for the deployment // module. -func (AppModuleBasic) DefaultGenesis(cdc codec.JSONMarshaler) json.RawMessage { +func (AppModuleBasic) DefaultGenesis(cdc codec.JSONCodec) json.RawMessage { return cdc.MustMarshalJSON(DefaultGenesisState()) } // ValidateGenesis does validation check of the Genesis and returns error incase of failure -func (AppModuleBasic) ValidateGenesis(cdc codec.JSONMarshaler, config client.TxEncodingConfig, bz json.RawMessage) error { +func (AppModuleBasic) ValidateGenesis(cdc codec.JSONCodec, config client.TxEncodingConfig, bz json.RawMessage) error { var data types.GenesisState err := cdc.UnmarshalJSON(bz, &data) if err != nil { @@ -111,7 +111,7 @@ type AppModule struct { } // NewAppModule creates a new AppModule Object -func NewAppModule(cdc codec.Marshaler, k keeper.IKeeper, mkeeper handler.MarketKeeper, ekeeper handler.EscrowKeeper, bankKeeper bankkeeper.Keeper) AppModule { +func NewAppModule(cdc codec.Codec, k keeper.IKeeper, mkeeper handler.MarketKeeper, ekeeper handler.EscrowKeeper, bankKeeper bankkeeper.Keeper) AppModule { return AppModule{ AppModuleBasic: AppModuleBasic{cdc: cdc}, keeper: k, @@ -162,7 +162,7 @@ func (am AppModule) EndBlock(ctx sdk.Context, _ abci.RequestEndBlock) []abci.Val // InitGenesis performs genesis initialization for the deployment module. It returns // no validator updates. -func (am AppModule) InitGenesis(ctx sdk.Context, cdc codec.JSONMarshaler, data json.RawMessage) []abci.ValidatorUpdate { +func (am AppModule) InitGenesis(ctx sdk.Context, cdc codec.JSONCodec, data json.RawMessage) []abci.ValidatorUpdate { var genesisState types.GenesisState cdc.MustUnmarshalJSON(data, &genesisState) return InitGenesis(ctx, am.keeper, &genesisState) @@ -170,11 +170,14 @@ func (am AppModule) InitGenesis(ctx sdk.Context, cdc codec.JSONMarshaler, data j // ExportGenesis returns the exported genesis state as raw bytes for the deployment // module. -func (am AppModule) ExportGenesis(ctx sdk.Context, cdc codec.JSONMarshaler) json.RawMessage { +func (am AppModule) ExportGenesis(ctx sdk.Context, cdc codec.JSONCodec) json.RawMessage { gs := ExportGenesis(ctx, am.keeper) return cdc.MustMarshalJSON(gs) } +// ConsensusVersion implements AppModule/ConsensusVersion. +func (AppModule) ConsensusVersion() uint64 { return 1 } + // AppModuleSimulation implements an application simulation module for the deployment module. type AppModuleSimulation struct { keeper keeper.IKeeper diff --git a/x/deployment/simulation/operations.go b/x/deployment/simulation/operations.go index 9ba567517a..ef9f5e7eca 100644 --- a/x/deployment/simulation/operations.go +++ b/x/deployment/simulation/operations.go @@ -31,7 +31,7 @@ const ( // WeightedOperations returns all the operations from the module with their respective weights func WeightedOperations( - appParams simtypes.AppParams, cdc codec.JSONMarshaler, ak govtypes.AccountKeeper, + appParams simtypes.AppParams, cdc codec.JSONCodec, ak govtypes.AccountKeeper, bk bankkeeper.Keeper, k keeper.IKeeper) simulation.WeightedOperations { var ( weightMsgCreateDeployment int @@ -156,7 +156,7 @@ func SimulateMsgCreateDeployment(ak govtypes.AccountKeeper, bk bankkeeper.Keeper return simtypes.NoOpMsg(types.ModuleName, msg.Type(), "create deployment - unable to deliver mock tx"), nil, err } - return simtypes.NewOperationMsg(msg, true, ""), nil, nil + return simtypes.NewOperationMsg(msg, true, "", nil), nil, nil } } @@ -245,7 +245,7 @@ func SimulateMsgUpdateDeployment(ak govtypes.AccountKeeper, bk bankkeeper.Keeper return simtypes.NoOpMsg(types.ModuleName, msg.Type(), "update deployment - unable to deliver mock tx"), nil, err } - return simtypes.NewOperationMsg(msg, true, ""), nil, nil + return simtypes.NewOperationMsg(msg, true, "", nil), nil, nil } } @@ -312,7 +312,7 @@ func SimulateMsgCloseDeployment(ak govtypes.AccountKeeper, bk bankkeeper.Keeper, return simtypes.NoOpMsg(types.ModuleName, msg.Type(), "close deployment - unable to deliver mock tx"), nil, err } - return simtypes.NewOperationMsg(msg, true, ""), nil, nil + return simtypes.NewOperationMsg(msg, true, "", nil), nil, nil } } @@ -397,6 +397,6 @@ func SimulateMsgCloseGroup(ak govtypes.AccountKeeper, bk bankkeeper.Keeper, k ke err = errors.Wrapf(err, "%s: msg delivery error closing group: %v", types.ModuleName, group.ID()) return simtypes.NoOpMsg(types.ModuleName, msg.Type(), err.Error()), nil, err } - return simtypes.NewOperationMsg(msg, true, "submitting MsgCloseGroup"), nil, nil + return simtypes.NewOperationMsg(msg, true, "submitting MsgCloseGroup", nil), nil, nil } } diff --git a/x/escrow/keeper/keeper.go b/x/escrow/keeper/keeper.go index 5872468b63..3f36c1d15a 100644 --- a/x/escrow/keeper/keeper.go +++ b/x/escrow/keeper/keeper.go @@ -30,7 +30,7 @@ type Keeper interface { SavePayment(sdk.Context, types.Payment) } -func NewKeeper(cdc codec.BinaryMarshaler, skey sdk.StoreKey, bkeeper BankKeeper) Keeper { +func NewKeeper(cdc codec.BinaryCodec, skey sdk.StoreKey, bkeeper BankKeeper) Keeper { return &keeper{ cdc: cdc, skey: skey, @@ -39,7 +39,7 @@ func NewKeeper(cdc codec.BinaryMarshaler, skey sdk.StoreKey, bkeeper BankKeeper) } type keeper struct { - cdc codec.BinaryMarshaler + cdc codec.BinaryCodec skey sdk.StoreKey bkeeper BankKeeper @@ -74,7 +74,7 @@ func (k *keeper) AccountCreate(ctx sdk.Context, id types.AccountID, owner sdk.Ac return err } - store.Set(key, k.cdc.MustMarshalBinaryBare(obj)) + store.Set(key, k.cdc.MustMarshal(obj)) return nil } @@ -103,7 +103,7 @@ func (k *keeper) AccountDeposit(ctx sdk.Context, id types.AccountID, amount sdk. obj.Balance = obj.Balance.Add(amount) - store.Set(key, k.cdc.MustMarshalBinaryBare(&obj)) + store.Set(key, k.cdc.MustMarshal(&obj)) return nil } @@ -190,7 +190,7 @@ func (k *keeper) PaymentCreate(ctx sdk.Context, id types.AccountID, pid string, Withdrawn: sdk.NewCoin(rate.Denom, sdk.ZeroInt()), } - store.Set(key, k.cdc.MustMarshalBinaryBare(obj)) + store.Set(key, k.cdc.MustMarshal(obj)) return nil } @@ -280,7 +280,7 @@ func (k *keeper) GetAccount(ctx sdk.Context, id types.AccountID) (types.Account, var obj types.Account - k.cdc.MustUnmarshalBinaryBare(buf, &obj) + k.cdc.MustUnmarshal(buf, &obj) return obj, nil } @@ -297,7 +297,7 @@ func (k *keeper) GetPayment(ctx sdk.Context, id types.AccountID, pid string) (ty var obj types.Payment - k.cdc.MustUnmarshalBinaryBare(buf, &obj) + k.cdc.MustUnmarshal(buf, &obj) return obj, nil } @@ -316,7 +316,7 @@ func (k *keeper) WithAccounts(ctx sdk.Context, fn func(types.Account) bool) { defer iter.Close() for ; iter.Valid(); iter.Next() { var val types.Account - k.cdc.MustUnmarshalBinaryBare(iter.Value(), &val) + k.cdc.MustUnmarshal(iter.Value(), &val) if stop := fn(val); stop { break } @@ -329,7 +329,7 @@ func (k *keeper) WithPayments(ctx sdk.Context, fn func(types.Payment) bool) { defer iter.Close() for ; iter.Valid(); iter.Next() { var val types.Payment - k.cdc.MustUnmarshalBinaryBare(iter.Value(), &val) + k.cdc.MustUnmarshal(iter.Value(), &val) if stop := fn(val); stop { break } @@ -428,13 +428,13 @@ func (k *keeper) doAccountSettle(ctx sdk.Context, id types.AccountID) (types.Acc func (k *keeper) saveAccount(ctx sdk.Context, obj *types.Account) { store := ctx.KVStore(k.skey) key := accountKey(obj.ID) - store.Set(key, k.cdc.MustMarshalBinaryBare(obj)) + store.Set(key, k.cdc.MustMarshal(obj)) } func (k *keeper) savePayment(ctx sdk.Context, obj *types.Payment) { store := ctx.KVStore(k.skey) key := paymentKey(obj.AccountID, obj.PaymentID) - store.Set(key, k.cdc.MustMarshalBinaryBare(obj)) + store.Set(key, k.cdc.MustMarshal(obj)) } func (k *keeper) accountPayments(ctx sdk.Context, id types.AccountID) []types.Payment { @@ -446,7 +446,7 @@ func (k *keeper) accountPayments(ctx sdk.Context, id types.AccountID) []types.Pa defer iter.Close() for ; iter.Valid(); iter.Next() { var val types.Payment - k.cdc.MustUnmarshalBinaryBare(iter.Value(), &val) + k.cdc.MustUnmarshal(iter.Value(), &val) payments = append(payments, val) } diff --git a/x/escrow/module.go b/x/escrow/module.go index fa50fb8d1d..a224a28ddc 100644 --- a/x/escrow/module.go +++ b/x/escrow/module.go @@ -36,7 +36,7 @@ var ( // AppModuleBasic defines the basic application module used by the provider module. type AppModuleBasic struct { - cdc codec.Marshaler + cdc codec.Codec } // Name returns provider module's name @@ -56,12 +56,12 @@ func (b AppModuleBasic) RegisterInterfaces(registry cdctypes.InterfaceRegistry) // DefaultGenesis returns default genesis state as raw bytes for the provider // module. -func (AppModuleBasic) DefaultGenesis(cdc codec.JSONMarshaler) json.RawMessage { +func (AppModuleBasic) DefaultGenesis(cdc codec.JSONCodec) json.RawMessage { return cdc.MustMarshalJSON(DefaultGenesisState()) } // ValidateGenesis validation check of the Genesis -func (AppModuleBasic) ValidateGenesis(cdc codec.JSONMarshaler, _ client.TxEncodingConfig, bz json.RawMessage) error { +func (AppModuleBasic) ValidateGenesis(cdc codec.JSONCodec, _ client.TxEncodingConfig, bz json.RawMessage) error { if bz == nil { return nil } @@ -119,7 +119,7 @@ type AppModule struct { } // NewAppModule creates a new AppModule object -func NewAppModule(cdc codec.Marshaler, k keeper.Keeper) AppModule { +func NewAppModule(cdc codec.Codec, k keeper.Keeper) AppModule { return AppModule{ AppModuleBasic: AppModuleBasic{cdc: cdc}, keeper: k, @@ -173,7 +173,7 @@ func (am AppModule) EndBlock(ctx sdk.Context, _ abci.RequestEndBlock) []abci.Val // InitGenesis performs genesis initialization for the audit module. It returns // no validator updates. -func (am AppModule) InitGenesis(ctx sdk.Context, cdc codec.JSONMarshaler, data json.RawMessage) []abci.ValidatorUpdate { +func (am AppModule) InitGenesis(ctx sdk.Context, cdc codec.JSONCodec, data json.RawMessage) []abci.ValidatorUpdate { var genesisState types.GenesisState cdc.MustUnmarshalJSON(data, &genesisState) return InitGenesis(ctx, am.keeper, &genesisState) @@ -181,11 +181,14 @@ func (am AppModule) InitGenesis(ctx sdk.Context, cdc codec.JSONMarshaler, data j // ExportGenesis returns the exported genesis state as raw bytes for the audit // module. -func (am AppModule) ExportGenesis(ctx sdk.Context, cdc codec.JSONMarshaler) json.RawMessage { +func (am AppModule) ExportGenesis(ctx sdk.Context, cdc codec.JSONCodec) json.RawMessage { gs := ExportGenesis(ctx, am.keeper) return cdc.MustMarshalJSON(gs) } +// ConsensusVersion implements AppModule/ConsensusVersion. +func (AppModule) ConsensusVersion() uint64 { return 1 } + // ____________________________________________________________________________ // AppModuleSimulation implements an application simulation module for the audit module. diff --git a/x/market/client/cli/bid.go b/x/market/client/cli/bid.go index 6ffa93fa47..03b86c8224 100644 --- a/x/market/client/cli/bid.go +++ b/x/market/client/cli/bid.go @@ -1,8 +1,6 @@ package cli import ( - "context" - "github.com/cosmos/cosmos-sdk/client" "github.com/cosmos/cosmos-sdk/client/flags" "github.com/ovrclk/akash/x/market/types" @@ -36,7 +34,7 @@ func cmdGetBids() *cobra.Command { Pagination: pageReq, } - res, err := queryClient.Bids(context.Background(), params) + res, err := queryClient.Bids(cmd.Context(), params) if err != nil { return err } @@ -69,7 +67,7 @@ func cmdGetBid() *cobra.Command { return err } - res, err := queryClient.Bid(context.Background(), &types.QueryBidRequest{ID: bidID}) + res, err := queryClient.Bid(cmd.Context(), &types.QueryBidRequest{ID: bidID}) if err != nil { return err } diff --git a/x/market/client/cli/cli_test.go b/x/market/client/cli/cli_test.go index 2374305dfe..1c1f878ca7 100644 --- a/x/market/client/cli/cli_test.go +++ b/x/market/client/cli/cli_test.go @@ -43,7 +43,7 @@ func (s *IntegrationTestSuite) SetupSuite() { s.network = network.New(s.T(), cfg) kb := s.network.Validators[0].ClientCtx.Keyring - _, _, err := kb.NewMnemonic("keyBar", keyring.English, sdk.FullFundraiserPath, hd.Secp256k1) + _, _, err := kb.NewMnemonic("keyBar", keyring.English, sdk.FullFundraiserPath, keyring.DefaultBIP39Passphrase, hd.Secp256k1) s.Require().NoError(err) _, err = s.network.WaitForHeight(1) @@ -96,7 +96,7 @@ func (s *IntegrationTestSuite) Test1QueryOrders() { s.Require().NoError(err) out := &dtypes.QueryDeploymentsResponse{} - err = val.ClientCtx.JSONMarshaler.UnmarshalJSON(resp.Bytes(), out) + err = val.ClientCtx.JSONCodec.UnmarshalJSON(resp.Bytes(), out) s.Require().NoError(err) s.Require().Len(out.Deployments, 1) s.Require().Equal(val.Address.String(), out.Deployments[0].Deployment.DeploymentID.Owner) @@ -106,7 +106,7 @@ func (s *IntegrationTestSuite) Test1QueryOrders() { s.Require().NoError(err) result := &types.QueryOrdersResponse{} - err = val.ClientCtx.JSONMarshaler.UnmarshalJSON(resp.Bytes(), result) + err = val.ClientCtx.JSONCodec.UnmarshalJSON(resp.Bytes(), result) s.Require().NoError(err) s.Require().Len(result.Orders, 1) orders := result.Orders @@ -118,7 +118,7 @@ func (s *IntegrationTestSuite) Test1QueryOrders() { s.Require().NoError(err) var order types.Order - err = val.ClientCtx.JSONMarshaler.UnmarshalJSON(resp.Bytes(), &order) + err = val.ClientCtx.JSONCodec.UnmarshalJSON(resp.Bytes(), &order) s.Require().NoError(err) s.Require().Equal(createdOrder, order) @@ -131,7 +131,7 @@ func (s *IntegrationTestSuite) Test1QueryOrders() { s.Require().NoError(err) result = &types.QueryOrdersResponse{} - err = val.ClientCtx.JSONMarshaler.UnmarshalJSON(resp.Bytes(), result) + err = val.ClientCtx.JSONCodec.UnmarshalJSON(resp.Bytes(), result) s.Require().NoError(err) s.Require().Len(result.Orders, 1) s.Require().Equal(createdOrder, result.Orders[0]) @@ -181,7 +181,7 @@ func (s *IntegrationTestSuite) Test2CreateBid() { s.Require().NoError(err) var balRes banktypes.QueryAllBalancesResponse - err = val.ClientCtx.JSONMarshaler.UnmarshalJSON(resp.Bytes(), &balRes) + err = val.ClientCtx.JSONCodec.UnmarshalJSON(resp.Bytes(), &balRes) s.Require().NoError(err) s.Require().Equal(sendTokens.Amount, balRes.Balances.AmountOf(s.cfg.BondDenom)) @@ -204,7 +204,7 @@ func (s *IntegrationTestSuite) Test2CreateBid() { s.Require().NoError(err) out := &ptypes.QueryProvidersResponse{} - err = val.ClientCtx.JSONMarshaler.UnmarshalJSON(resp.Bytes(), out) + err = val.ClientCtx.JSONCodec.UnmarshalJSON(resp.Bytes(), out) s.Require().NoError(err) s.Require().Len(out.Providers, 1, "Provider Creation Failed in TestCreateBid") s.Require().Equal(keyBar.GetAddress().String(), out.Providers[0].Owner) @@ -214,7 +214,7 @@ func (s *IntegrationTestSuite) Test2CreateBid() { s.Require().NoError(err) result := &types.QueryOrdersResponse{} - err = val.ClientCtx.JSONMarshaler.UnmarshalJSON(resp.Bytes(), result) + err = val.ClientCtx.JSONCodec.UnmarshalJSON(resp.Bytes(), result) s.Require().NoError(err) s.Require().Len(result.Orders, 1) @@ -242,7 +242,7 @@ func (s *IntegrationTestSuite) Test2CreateBid() { s.Require().NoError(err) bidRes := &types.QueryBidsResponse{} - err = val.ClientCtx.JSONMarshaler.UnmarshalJSON(resp.Bytes(), bidRes) + err = val.ClientCtx.JSONCodec.UnmarshalJSON(resp.Bytes(), bidRes) s.Require().NoError(err) s.Require().Len(bidRes.Bids, 1) bids := bidRes.Bids @@ -255,7 +255,7 @@ func (s *IntegrationTestSuite) Test2CreateBid() { var bid types.QueryBidResponse fmt.Println(string(resp.Bytes())) - err = val.ClientCtx.JSONMarshaler.UnmarshalJSON(resp.Bytes(), &bid) + err = val.ClientCtx.JSONCodec.UnmarshalJSON(resp.Bytes(), &bid) s.Require().NoError(err) s.Require().Equal(createdBid, bid.Bid) @@ -268,7 +268,7 @@ func (s *IntegrationTestSuite) Test2CreateBid() { s.Require().NoError(err) bidRes = &types.QueryBidsResponse{} - err = val.ClientCtx.JSONMarshaler.UnmarshalJSON(resp.Bytes(), bidRes) + err = val.ClientCtx.JSONCodec.UnmarshalJSON(resp.Bytes(), bidRes) s.Require().NoError(err) s.Require().Len(bidRes.Bids, 1) s.Require().Equal(createdBid, bidRes.Bids[0].Bid) @@ -314,7 +314,7 @@ func (s *IntegrationTestSuite) Test3QueryLeasesAndCloseBid() { s.Require().NoError(err) leaseRes := &types.QueryLeasesResponse{} - err = val.ClientCtx.JSONMarshaler.UnmarshalJSON(resp.Bytes(), leaseRes) + err = val.ClientCtx.JSONCodec.UnmarshalJSON(resp.Bytes(), leaseRes) s.Require().NoError(err) s.Require().Len(leaseRes.Leases, 1) leases := leaseRes.Leases @@ -326,7 +326,7 @@ func (s *IntegrationTestSuite) Test3QueryLeasesAndCloseBid() { s.Require().NoError(err) var lease types.QueryLeaseResponse - err = val.ClientCtx.JSONMarshaler.UnmarshalJSON(resp.Bytes(), &lease) + err = val.ClientCtx.JSONCodec.UnmarshalJSON(resp.Bytes(), &lease) s.Require().NoError(err) s.Require().Equal(createdLease, lease.Lease) @@ -349,7 +349,7 @@ func (s *IntegrationTestSuite) Test3QueryLeasesAndCloseBid() { s.Require().NoError(err) bidRes := &types.QueryBidsResponse{} - err = val.ClientCtx.JSONMarshaler.UnmarshalJSON(resp.Bytes(), bidRes) + err = val.ClientCtx.JSONCodec.UnmarshalJSON(resp.Bytes(), bidRes) s.Require().NoError(err) s.Require().Len(bidRes.Bids, 1) s.Require().Equal(keyBar.GetAddress().String(), bidRes.Bids[0].Bid.BidID.Provider) @@ -359,7 +359,7 @@ func (s *IntegrationTestSuite) Test3QueryLeasesAndCloseBid() { s.Require().NoError(err) leaseRes = &types.QueryLeasesResponse{} - err = val.ClientCtx.JSONMarshaler.UnmarshalJSON(resp.Bytes(), leaseRes) + err = val.ClientCtx.JSONCodec.UnmarshalJSON(resp.Bytes(), leaseRes) s.Require().NoError(err) s.Require().Len(leaseRes.Leases, 1) @@ -390,7 +390,7 @@ func (s *IntegrationTestSuite) Test4CloseOrder() { s.Require().NoError(err) result := &types.QueryOrdersResponse{} - err = val.ClientCtx.JSONMarshaler.UnmarshalJSON(resp.Bytes(), result) + err = val.ClientCtx.JSONCodec.UnmarshalJSON(resp.Bytes(), result) s.Require().NoError(err) openedOrders := result.Orders s.Require().Len(openedOrders, 0) diff --git a/x/market/client/cli/grpc_rest_test.go b/x/market/client/cli/grpc_rest_test.go index 690e6b2610..bae35eb1db 100644 --- a/x/market/client/cli/grpc_rest_test.go +++ b/x/market/client/cli/grpc_rest_test.go @@ -43,7 +43,7 @@ func (s *GRPCRestTestSuite) SetupSuite() { s.network = network.New(s.T(), cfg) kb := s.network.Validators[0].ClientCtx.Keyring - keyBar, _, err := kb.NewMnemonic("keyBar", keyring.English, sdk.FullFundraiserPath, hd.Secp256k1) + keyBar, _, err := kb.NewMnemonic("keyBar", keyring.English, sdk.FullFundraiserPath, keyring.DefaultBIP39Passphrase, hd.Secp256k1) s.Require().NoError(err) _, err = s.network.WaitForHeight(1) @@ -89,7 +89,7 @@ func (s *GRPCRestTestSuite) SetupSuite() { s.Require().NoError(err) result := &types.QueryOrdersResponse{} - err = val.ClientCtx.JSONMarshaler.UnmarshalJSON(resp.Bytes(), result) + err = val.ClientCtx.JSONCodec.UnmarshalJSON(resp.Bytes(), result) s.Require().NoError(err) s.Require().Len(result.Orders, 1) orders := result.Orders @@ -149,7 +149,7 @@ func (s *GRPCRestTestSuite) SetupSuite() { s.Require().NoError(err) bidRes := &types.QueryBidsResponse{} - err = val.ClientCtx.JSONMarshaler.UnmarshalJSON(resp.Bytes(), bidRes) + err = val.ClientCtx.JSONCodec.UnmarshalJSON(resp.Bytes(), bidRes) s.Require().NoError(err) s.Require().Len(bidRes.Bids, 1) bids := bidRes.Bids @@ -176,7 +176,7 @@ func (s *GRPCRestTestSuite) SetupSuite() { s.Require().NoError(err) leaseRes := &types.QueryLeasesResponse{} - err = val.ClientCtx.JSONMarshaler.UnmarshalJSON(resp.Bytes(), leaseRes) + err = val.ClientCtx.JSONCodec.UnmarshalJSON(resp.Bytes(), leaseRes) s.Require().NoError(err) s.Require().Len(leaseRes.Leases, 1) leases := leaseRes.Leases @@ -240,7 +240,7 @@ func (s *GRPCRestTestSuite) TestGetOrders() { s.Require().NoError(err) var orders types.QueryOrdersResponse - err = val.ClientCtx.JSONMarshaler.UnmarshalJSON(resp, &orders) + err = val.ClientCtx.JSONCodec.UnmarshalJSON(resp, &orders) if tc.expErr { s.Require().NotNil(err) @@ -300,7 +300,7 @@ func (s *GRPCRestTestSuite) TestGetOrder() { s.Require().NoError(err) var out types.QueryOrderResponse - err = val.ClientCtx.JSONMarshaler.UnmarshalJSON(resp, &out) + err = val.ClientCtx.JSONCodec.UnmarshalJSON(resp, &out) if tc.expErr { s.Require().Error(err) @@ -363,7 +363,7 @@ func (s *GRPCRestTestSuite) TestGetBids() { s.Require().NoError(err) var bids types.QueryBidsResponse - err = val.ClientCtx.JSONMarshaler.UnmarshalJSON(resp, &bids) + err = val.ClientCtx.JSONCodec.UnmarshalJSON(resp, &bids) if tc.expErr { s.Require().NotNil(err) @@ -423,7 +423,7 @@ func (s *GRPCRestTestSuite) TestGetBid() { s.Require().NoError(err) var out types.QueryBidResponse - err = val.ClientCtx.JSONMarshaler.UnmarshalJSON(resp, &out) + err = val.ClientCtx.JSONCodec.UnmarshalJSON(resp, &out) if tc.expErr { s.Require().Error(err) @@ -486,7 +486,7 @@ func (s *GRPCRestTestSuite) TestGetLeases() { s.Require().NoError(err) var leases types.QueryLeasesResponse - err = val.ClientCtx.JSONMarshaler.UnmarshalJSON(resp, &leases) + err = val.ClientCtx.JSONCodec.UnmarshalJSON(resp, &leases) if tc.expErr { s.Require().NotNil(err) @@ -547,7 +547,7 @@ func (s *GRPCRestTestSuite) TestGetLease() { s.Require().NoError(err) var out types.QueryLeaseResponse - err = val.ClientCtx.JSONMarshaler.UnmarshalJSON(resp, &out) + err = val.ClientCtx.JSONCodec.UnmarshalJSON(resp, &out) if tc.expErr { s.Require().Error(err) diff --git a/x/market/client/cli/lease.go b/x/market/client/cli/lease.go index c293e46b3e..ddbbed024a 100644 --- a/x/market/client/cli/lease.go +++ b/x/market/client/cli/lease.go @@ -1,8 +1,6 @@ package cli import ( - "context" - "github.com/cosmos/cosmos-sdk/client" "github.com/cosmos/cosmos-sdk/client/flags" "github.com/ovrclk/akash/x/market/types" @@ -36,7 +34,7 @@ func cmdGetLeases() *cobra.Command { Pagination: pageReq, } - res, err := queryClient.Leases(context.Background(), params) + res, err := queryClient.Leases(cmd.Context(), params) if err != nil { return err } @@ -70,7 +68,7 @@ func cmdGetLease() *cobra.Command { return err } - res, err := queryClient.Lease(context.Background(), &types.QueryLeaseRequest{ID: types.MakeLeaseID(bidID)}) + res, err := queryClient.Lease(cmd.Context(), &types.QueryLeaseRequest{ID: types.MakeLeaseID(bidID)}) if err != nil { return err } diff --git a/x/market/client/cli/order.go b/x/market/client/cli/order.go index 74110953f7..7fcb3b9cb9 100644 --- a/x/market/client/cli/order.go +++ b/x/market/client/cli/order.go @@ -1,8 +1,6 @@ package cli import ( - "context" - "github.com/cosmos/cosmos-sdk/client" "github.com/cosmos/cosmos-sdk/client/flags" "github.com/ovrclk/akash/x/market/types" @@ -36,7 +34,7 @@ func cmdGetOrders() *cobra.Command { Pagination: pageReq, } - res, err := queryClient.Orders(context.Background(), params) + res, err := queryClient.Orders(cmd.Context(), params) if err != nil { return err } @@ -69,7 +67,7 @@ func cmdGetOrder() *cobra.Command { return err } - res, err := queryClient.Order(context.Background(), &types.QueryOrderRequest{ID: id}) + res, err := queryClient.Order(cmd.Context(), &types.QueryOrderRequest{ID: id}) if err != nil { return err } diff --git a/x/market/keeper/grpc_query.go b/x/market/keeper/grpc_query.go index 1f679bdb4a..4eb09da5a4 100644 --- a/x/market/keeper/grpc_query.go +++ b/x/market/keeper/grpc_query.go @@ -41,7 +41,7 @@ func (k Querier) Orders(c context.Context, req *types.QueryOrdersRequest) (*type pageRes, err := sdkquery.FilteredPaginate(orderStore, req.Pagination, func(key []byte, value []byte, accumulate bool) (bool, error) { var order types.Order - err := k.cdc.UnmarshalBinaryBare(value, &order) + err := k.cdc.Unmarshal(value, &order) if err != nil { return false, err } @@ -108,7 +108,7 @@ func (k Querier) Bids(c context.Context, req *types.QueryBidsRequest) (*types.Qu pageRes, err := sdkquery.FilteredPaginate(bidStore, req.Pagination, func(key []byte, value []byte, accumulate bool) (bool, error) { var bid types.Bid - err := k.cdc.UnmarshalBinaryBare(value, &bid) + err := k.cdc.Unmarshal(value, &bid) if err != nil { return false, err } @@ -195,7 +195,7 @@ func (k Querier) Leases(c context.Context, req *types.QueryLeasesRequest) (*type pageRes, err := sdkquery.FilteredPaginate(leaseStore, req.Pagination, func(key []byte, value []byte, accumulate bool) (bool, error) { var lease types.Lease - err := k.cdc.UnmarshalBinaryBare(value, &lease) + err := k.cdc.Unmarshal(value, &lease) if err != nil { return false, err } diff --git a/x/market/keeper/keeper.go b/x/market/keeper/keeper.go index 3a128b1244..4821279b80 100644 --- a/x/market/keeper/keeper.go +++ b/x/market/keeper/keeper.go @@ -12,7 +12,7 @@ import ( // TODO: use interface for all keepers, queriers type IKeeper interface { NewQuerier() Querier - Codec() codec.BinaryMarshaler + Codec() codec.BinaryCodec CreateOrder(ctx sdk.Context, gid dtypes.GroupID, spec dtypes.GroupSpec) (types.Order, error) CreateBid(ctx sdk.Context, oid types.OrderID, provider sdk.AccAddress, price sdk.Coin) (types.Bid, error) CreateLease(ctx sdk.Context, bid types.Bid) @@ -39,14 +39,14 @@ type IKeeper interface { // Keeper of the market store type Keeper struct { - cdc codec.BinaryMarshaler + cdc codec.BinaryCodec skey sdk.StoreKey pspace paramtypes.Subspace ekeeper EscrowKeeper } // NewKeeper creates and returns an instance for Market keeper -func NewKeeper(cdc codec.BinaryMarshaler, skey sdk.StoreKey, pspace paramtypes.Subspace, ekeeper EscrowKeeper) IKeeper { +func NewKeeper(cdc codec.BinaryCodec, skey sdk.StoreKey, pspace paramtypes.Subspace, ekeeper EscrowKeeper) IKeeper { if !pspace.HasKeyTable() { pspace = pspace.WithKeyTable(types.ParamKeyTable()) @@ -65,7 +65,7 @@ func (k Keeper) NewQuerier() Querier { } // Codec returns keeper codec -func (k Keeper) Codec() codec.BinaryMarshaler { +func (k Keeper) Codec() codec.BinaryCodec { return k.cdc } @@ -101,7 +101,7 @@ func (k Keeper) CreateOrder(ctx sdk.Context, gid dtypes.GroupID, spec dtypes.Gro return types.Order{}, types.ErrOrderExists } - store.Set(key, k.cdc.MustMarshalBinaryBare(&order)) + store.Set(key, k.cdc.MustMarshal(&order)) ctx.Logger().Info("created order", "order", order.ID()) ctx.EventManager().EmitEvent( @@ -128,7 +128,7 @@ func (k Keeper) CreateBid(ctx sdk.Context, oid types.OrderID, provider sdk.AccAd return types.Bid{}, types.ErrBidExists } - store.Set(key, k.cdc.MustMarshalBinaryBare(&bid)) + store.Set(key, k.cdc.MustMarshal(&bid)) ctx.EventManager().EmitEvent( types.NewEventBidCreated(bid.ID(), price). @@ -152,7 +152,7 @@ func (k Keeper) CreateLease(ctx sdk.Context, bid types.Bid) { // create (active) lease in store key := leaseKey(lease.ID()) - store.Set(key, k.cdc.MustMarshalBinaryBare(&lease)) + store.Set(key, k.cdc.MustMarshal(&lease)) ctx.Logger().Info("created lease", "lease", lease.ID()) ctx.EventManager().EmitEvent( @@ -258,7 +258,7 @@ func (k Keeper) GetOrder(ctx sdk.Context, id types.OrderID) (types.Order, bool) buf := store.Get(key) var val types.Order - k.cdc.MustUnmarshalBinaryBare(buf, &val) + k.cdc.MustUnmarshal(buf, &val) return val, true } @@ -273,7 +273,7 @@ func (k Keeper) GetBid(ctx sdk.Context, id types.BidID) (types.Bid, bool) { buf := store.Get(key) var val types.Bid - k.cdc.MustUnmarshalBinaryBare(buf, &val) + k.cdc.MustUnmarshal(buf, &val) return val, true } @@ -288,7 +288,7 @@ func (k Keeper) GetLease(ctx sdk.Context, id types.LeaseID) (types.Lease, bool) buf := store.Get(key) var val types.Lease - k.cdc.MustUnmarshalBinaryBare(buf, &val) + k.cdc.MustUnmarshal(buf, &val) return val, true } @@ -320,7 +320,7 @@ func (k Keeper) WithOrders(ctx sdk.Context, fn func(types.Order) bool) { defer iter.Close() for ; iter.Valid(); iter.Next() { var val types.Order - k.cdc.MustUnmarshalBinaryBare(iter.Value(), &val) + k.cdc.MustUnmarshal(iter.Value(), &val) if stop := fn(val); stop { break } @@ -334,7 +334,7 @@ func (k Keeper) WithBids(ctx sdk.Context, fn func(types.Bid) bool) { defer iter.Close() for ; iter.Valid(); iter.Next() { var val types.Bid - k.cdc.MustUnmarshalBinaryBare(iter.Value(), &val) + k.cdc.MustUnmarshal(iter.Value(), &val) if stop := fn(val); stop { break } @@ -348,7 +348,7 @@ func (k Keeper) WithLeases(ctx sdk.Context, fn func(types.Lease) bool) { defer iter.Close() for ; iter.Valid(); iter.Next() { var val types.Lease - k.cdc.MustUnmarshalBinaryBare(iter.Value(), &val) + k.cdc.MustUnmarshal(iter.Value(), &val) if stop := fn(val); stop { break } @@ -362,7 +362,7 @@ func (k Keeper) WithOrdersForGroup(ctx sdk.Context, id dtypes.GroupID, fn func(t defer iter.Close() for ; iter.Valid(); iter.Next() { var val types.Order - k.cdc.MustUnmarshalBinaryBare(iter.Value(), &val) + k.cdc.MustUnmarshal(iter.Value(), &val) if stop := fn(val); stop { break } @@ -377,7 +377,7 @@ func (k Keeper) WithBidsForOrder(ctx sdk.Context, id types.OrderID, fn func(type defer iter.Close() for ; iter.Valid(); iter.Next() { var val types.Bid - k.cdc.MustUnmarshalBinaryBare(iter.Value(), &val) + k.cdc.MustUnmarshal(iter.Value(), &val) if stop := fn(val); stop { break } @@ -409,17 +409,17 @@ func (k Keeper) SetParams(ctx sdk.Context, params types.Params) { func (k Keeper) updateOrder(ctx sdk.Context, order types.Order) { store := ctx.KVStore(k.skey) key := orderKey(order.ID()) - store.Set(key, k.cdc.MustMarshalBinaryBare(&order)) + store.Set(key, k.cdc.MustMarshal(&order)) } func (k Keeper) updateBid(ctx sdk.Context, bid types.Bid) { store := ctx.KVStore(k.skey) key := bidKey(bid.ID()) - store.Set(key, k.cdc.MustMarshalBinaryBare(&bid)) + store.Set(key, k.cdc.MustMarshal(&bid)) } func (k Keeper) updateLease(ctx sdk.Context, lease types.Lease) { store := ctx.KVStore(k.skey) key := leaseKey(lease.ID()) - store.Set(key, k.cdc.MustMarshalBinaryBare(&lease)) + store.Set(key, k.cdc.MustMarshal(&lease)) } diff --git a/x/market/module.go b/x/market/module.go index 6c4b922088..511421185f 100644 --- a/x/market/module.go +++ b/x/market/module.go @@ -38,7 +38,7 @@ var ( // AppModuleBasic defines the basic application module used by the market module. type AppModuleBasic struct { - cdc codec.Marshaler + cdc codec.Codec } // Name returns market module's name @@ -58,12 +58,12 @@ func (b AppModuleBasic) RegisterInterfaces(registry cdctypes.InterfaceRegistry) // DefaultGenesis returns default genesis state as raw bytes for the market // module. -func (AppModuleBasic) DefaultGenesis(cdc codec.JSONMarshaler) json.RawMessage { +func (AppModuleBasic) DefaultGenesis(cdc codec.JSONCodec) json.RawMessage { return cdc.MustMarshalJSON(DefaultGenesisState()) } // ValidateGenesis validation check of the Genesis -func (AppModuleBasic) ValidateGenesis(cdc codec.JSONMarshaler, config client.TxEncodingConfig, bz json.RawMessage) error { +func (AppModuleBasic) ValidateGenesis(cdc codec.JSONCodec, config client.TxEncodingConfig, bz json.RawMessage) error { var data types.GenesisState err := cdc.UnmarshalJSON(bz, &data) if err != nil { @@ -108,7 +108,7 @@ type AppModule struct { // NewAppModule creates a new AppModule object func NewAppModule( - cdc codec.Marshaler, + cdc codec.Codec, keeper keeper.IKeeper, ekeeper ekeeper.Keeper, akeeper akeeper.Keeper, @@ -170,7 +170,7 @@ func (am AppModule) EndBlock(ctx sdk.Context, _ abci.RequestEndBlock) []abci.Val // InitGenesis performs genesis initialization for the market module. It returns // no validator updates. -func (am AppModule) InitGenesis(ctx sdk.Context, cdc codec.JSONMarshaler, data json.RawMessage) []abci.ValidatorUpdate { +func (am AppModule) InitGenesis(ctx sdk.Context, cdc codec.JSONCodec, data json.RawMessage) []abci.ValidatorUpdate { var genesisState types.GenesisState cdc.MustUnmarshalJSON(data, &genesisState) return InitGenesis(ctx, am.keepers.Market, &genesisState) @@ -178,11 +178,14 @@ func (am AppModule) InitGenesis(ctx sdk.Context, cdc codec.JSONMarshaler, data j // ExportGenesis returns the exported genesis state as raw bytes for the market // module. -func (am AppModule) ExportGenesis(ctx sdk.Context, cdc codec.JSONMarshaler) json.RawMessage { +func (am AppModule) ExportGenesis(ctx sdk.Context, cdc codec.JSONCodec) json.RawMessage { gs := ExportGenesis(ctx, am.keepers.Market) return cdc.MustMarshalJSON(gs) } +// ConsensusVersion implements AppModule/ConsensusVersion. +func (AppModule) ConsensusVersion() uint64 { return 1 } + // AppModuleSimulation implements an application simulation module for the market module. type AppModuleSimulation struct { keepers handler.Keepers diff --git a/x/market/simulation/operations.go b/x/market/simulation/operations.go index 5311e618fb..3cee86c209 100644 --- a/x/market/simulation/operations.go +++ b/x/market/simulation/operations.go @@ -27,7 +27,7 @@ const ( // WeightedOperations returns all the operations from the module with their respective weights func WeightedOperations( - appParams simtypes.AppParams, cdc codec.JSONMarshaler, ak govtypes.AccountKeeper, + appParams simtypes.AppParams, cdc codec.JSONCodec, ak govtypes.AccountKeeper, ks keepers.Keepers) simulation.WeightedOperations { var ( weightMsgCreateBid int @@ -142,9 +142,9 @@ func SimulateMsgCreateBid(ak govtypes.AccountKeeper, ks keepers.Keepers) simtype _, _, err = app.Deliver(txGen.TxEncoder(), tx) switch { case err == nil: - return simtypes.NewOperationMsg(msg, true, ""), nil, nil + return simtypes.NewOperationMsg(msg, true, "", nil), nil, nil case errors.Is(err, types.ErrBidExists): - return simtypes.NewOperationMsg(msg, false, ""), nil, nil + return simtypes.NewOperationMsg(msg, false, "", nil), nil, nil default: return simtypes.NoOpMsg(types.ModuleName, msg.Type(), "unable to deliver mock tx"), nil, err } @@ -218,7 +218,7 @@ func SimulateMsgCloseBid(ak govtypes.AccountKeeper, ks keepers.Keepers) simtypes return simtypes.NoOpMsg(types.ModuleName, msg.Type(), "unable to deliver tx"), nil, err } - return simtypes.NewOperationMsg(msg, true, ""), nil, nil + return simtypes.NewOperationMsg(msg, true, "", nil), nil, nil } } diff --git a/x/provider/client/cli/cli_test.go b/x/provider/client/cli/cli_test.go index e87b557a5b..bef5769992 100644 --- a/x/provider/client/cli/cli_test.go +++ b/x/provider/client/cli/cli_test.go @@ -68,7 +68,7 @@ func (s *IntegrationTestSuite) TestProvider() { s.Require().NoError(err) out := &types.QueryProvidersResponse{} - err = val.ClientCtx.JSONMarshaler.UnmarshalJSON(resp.Bytes(), out) + err = val.ClientCtx.JSONCodec.UnmarshalJSON(resp.Bytes(), out) s.Require().NoError(err) s.Require().Len(out.Providers, 1, "Provider Creation Failed") providers := out.Providers @@ -80,7 +80,7 @@ func (s *IntegrationTestSuite) TestProvider() { s.Require().NoError(err) var provider types.Provider - err = val.ClientCtx.JSONMarshaler.UnmarshalJSON(resp.Bytes(), &provider) + err = val.ClientCtx.JSONCodec.UnmarshalJSON(resp.Bytes(), &provider) s.Require().NoError(err) s.Require().Equal(createdProvider, provider) @@ -102,7 +102,7 @@ func (s *IntegrationTestSuite) TestProvider() { s.Require().NoError(err) var providerV2 types.Provider - err = val.ClientCtx.JSONMarshaler.UnmarshalJSON(resp.Bytes(), &providerV2) + err = val.ClientCtx.JSONCodec.UnmarshalJSON(resp.Bytes(), &providerV2) s.Require().NoError(err) s.Require().NotEqual(provider.HostURI, providerV2.HostURI) } diff --git a/x/provider/client/cli/grpc_rest_test.go b/x/provider/client/cli/grpc_rest_test.go index cb7532700a..787b977a5c 100644 --- a/x/provider/client/cli/grpc_rest_test.go +++ b/x/provider/client/cli/grpc_rest_test.go @@ -60,7 +60,7 @@ func (s *GRPCRestTestSuite) SetupSuite() { s.Require().NoError(err) out := &types.QueryProvidersResponse{} - err = val.ClientCtx.JSONMarshaler.UnmarshalJSON(resp.Bytes(), out) + err = val.ClientCtx.JSONCodec.UnmarshalJSON(resp.Bytes(), out) s.Require().NoError(err) s.Require().Len(out.Providers, 1, "Provider Creation Failed") providers := out.Providers @@ -100,7 +100,7 @@ func (s *GRPCRestTestSuite) TestGetProviders() { s.Require().NoError(err) var providers types.QueryProvidersResponse - err = val.ClientCtx.JSONMarshaler.UnmarshalJSON(resp, &providers) + err = val.ClientCtx.JSONCodec.UnmarshalJSON(resp, &providers) s.Require().NoError(err) s.Require().Len(providers.Providers, tc.expLen) @@ -148,7 +148,7 @@ func (s *GRPCRestTestSuite) TestGetProvider() { s.Require().NoError(err) var out types.QueryProviderResponse - err = val.ClientCtx.JSONMarshaler.UnmarshalJSON(resp, &out) + err = val.ClientCtx.JSONCodec.UnmarshalJSON(resp, &out) if tc.expErr { s.Require().Error(err) diff --git a/x/provider/client/cli/query.go b/x/provider/client/cli/query.go index 5273d9969c..f95d0cc240 100644 --- a/x/provider/client/cli/query.go +++ b/x/provider/client/cli/query.go @@ -1,8 +1,6 @@ package cli import ( - "context" - "github.com/cosmos/cosmos-sdk/client" "github.com/cosmos/cosmos-sdk/client/flags" sdk "github.com/cosmos/cosmos-sdk/types" @@ -48,7 +46,7 @@ func cmdGetProviders() *cobra.Command { Pagination: pageReq, } - res, err := queryClient.Providers(context.Background(), params) + res, err := queryClient.Providers(cmd.Context(), params) if err != nil { return err } @@ -81,7 +79,7 @@ func cmdGetProvider() *cobra.Command { return err } - res, err := queryClient.Provider(context.Background(), &types.QueryProviderRequest{Owner: owner.String()}) + res, err := queryClient.Provider(cmd.Context(), &types.QueryProviderRequest{Owner: owner.String()}) if err != nil { return err } diff --git a/x/provider/keeper/grpc_query.go b/x/provider/keeper/grpc_query.go index c0fe07d2a2..0e87e5b2c3 100644 --- a/x/provider/keeper/grpc_query.go +++ b/x/provider/keeper/grpc_query.go @@ -32,7 +32,7 @@ func (k Querier) Providers(c context.Context, req *types.QueryProvidersRequest) pageRes, err := sdkquery.Paginate(store, req.Pagination, func(key []byte, value []byte) error { var provider types.Provider - err := k.cdc.UnmarshalBinaryBare(value, &provider) + err := k.cdc.Unmarshal(value, &provider) if err != nil { return err } diff --git a/x/provider/keeper/keeper.go b/x/provider/keeper/keeper.go index 4fdf5f1e20..3dbd3ee114 100644 --- a/x/provider/keeper/keeper.go +++ b/x/provider/keeper/keeper.go @@ -8,7 +8,7 @@ import ( ) type IKeeper interface { - Codec() codec.BinaryMarshaler + Codec() codec.BinaryCodec Get(ctx sdk.Context, id sdk.Address) (types.Provider, bool) Create(ctx sdk.Context, provider types.Provider) error WithProviders(ctx sdk.Context, fn func(types.Provider) bool) @@ -20,11 +20,11 @@ type IKeeper interface { // Keeper of the provider store type Keeper struct { skey sdk.StoreKey - cdc codec.BinaryMarshaler + cdc codec.BinaryCodec } // NewKeeper creates and returns an instance for Provider keeper -func NewKeeper(cdc codec.BinaryMarshaler, skey sdk.StoreKey) IKeeper { +func NewKeeper(cdc codec.BinaryCodec, skey sdk.StoreKey) IKeeper { return Keeper{ skey: skey, cdc: cdc, @@ -36,7 +36,7 @@ func (k Keeper) NewQuerier() Querier { } // Codec returns keeper codec -func (k Keeper) Codec() codec.BinaryMarshaler { +func (k Keeper) Codec() codec.BinaryCodec { return k.cdc } @@ -51,7 +51,7 @@ func (k Keeper) Get(ctx sdk.Context, id sdk.Address) (types.Provider, bool) { buf := store.Get(key) var val types.Provider - k.cdc.MustUnmarshalBinaryBare(buf, &val) + k.cdc.MustUnmarshal(buf, &val) return val, true } @@ -69,7 +69,7 @@ func (k Keeper) Create(ctx sdk.Context, provider types.Provider) error { return types.ErrProviderExists } - store.Set(key, k.cdc.MustMarshalBinaryBare(&provider)) + store.Set(key, k.cdc.MustMarshal(&provider)) ctx.EventManager().EmitEvent( types.EventProviderCreated{Owner: owner}.ToSDKEvent(), @@ -85,7 +85,7 @@ func (k Keeper) WithProviders(ctx sdk.Context, fn func(types.Provider) bool) { defer iter.Close() for ; iter.Valid(); iter.Next() { var val types.Provider - k.cdc.MustUnmarshalBinaryBare(iter.Value(), &val) + k.cdc.MustUnmarshal(iter.Value(), &val) if stop := fn(val); stop { break } @@ -105,7 +105,7 @@ func (k Keeper) Update(ctx sdk.Context, provider types.Provider) error { if !store.Has(key) { return types.ErrProviderNotFound } - store.Set(key, k.cdc.MustMarshalBinaryBare(&provider)) + store.Set(key, k.cdc.MustMarshal(&provider)) ctx.EventManager().EmitEvent( types.EventProviderUpdated{Owner: owner}.ToSDKEvent(), diff --git a/x/provider/module.go b/x/provider/module.go index a4c4dcd828..470695b33b 100644 --- a/x/provider/module.go +++ b/x/provider/module.go @@ -38,7 +38,7 @@ var ( // AppModuleBasic defines the basic application module used by the provider module. type AppModuleBasic struct { - cdc codec.Marshaler + cdc codec.Codec } // Name returns provider module's name @@ -58,12 +58,12 @@ func (b AppModuleBasic) RegisterInterfaces(registry cdctypes.InterfaceRegistry) // DefaultGenesis returns default genesis state as raw bytes for the provider // module. -func (AppModuleBasic) DefaultGenesis(cdc codec.JSONMarshaler) json.RawMessage { +func (AppModuleBasic) DefaultGenesis(cdc codec.JSONCodec) json.RawMessage { return cdc.MustMarshalJSON(DefaultGenesisState()) } // ValidateGenesis validation check of the Genesis -func (AppModuleBasic) ValidateGenesis(cdc codec.JSONMarshaler, config client.TxEncodingConfig, bz json.RawMessage) error { +func (AppModuleBasic) ValidateGenesis(cdc codec.JSONCodec, config client.TxEncodingConfig, bz json.RawMessage) error { var data types.GenesisState err := cdc.UnmarshalJSON(bz, &data) if err != nil { @@ -109,7 +109,7 @@ type AppModule struct { } // NewAppModule creates a new AppModule object -func NewAppModule(cdc codec.Marshaler, k keeper.IKeeper, bkeeper bankkeeper.Keeper, mkeeper mkeeper.IKeeper) AppModule { +func NewAppModule(cdc codec.Codec, k keeper.IKeeper, bkeeper bankkeeper.Keeper, mkeeper mkeeper.IKeeper) AppModule { return AppModule{ AppModuleBasic: AppModuleBasic{cdc: cdc}, keeper: k, @@ -159,7 +159,7 @@ func (am AppModule) EndBlock(ctx sdk.Context, _ abci.RequestEndBlock) []abci.Val // InitGenesis performs genesis initialization for the provider module. It returns // no validator updates. -func (am AppModule) InitGenesis(ctx sdk.Context, cdc codec.JSONMarshaler, data json.RawMessage) []abci.ValidatorUpdate { +func (am AppModule) InitGenesis(ctx sdk.Context, cdc codec.JSONCodec, data json.RawMessage) []abci.ValidatorUpdate { var genesisState types.GenesisState cdc.MustUnmarshalJSON(data, &genesisState) return InitGenesis(ctx, am.keeper, &genesisState) @@ -167,11 +167,14 @@ func (am AppModule) InitGenesis(ctx sdk.Context, cdc codec.JSONMarshaler, data j // ExportGenesis returns the exported genesis state as raw bytes for the provider // module. -func (am AppModule) ExportGenesis(ctx sdk.Context, cdc codec.JSONMarshaler) json.RawMessage { +func (am AppModule) ExportGenesis(ctx sdk.Context, cdc codec.JSONCodec) json.RawMessage { gs := ExportGenesis(ctx, am.keeper) return cdc.MustMarshalJSON(gs) } +// ConsensusVersion implements AppModule/ConsensusVersion. +func (AppModule) ConsensusVersion() uint64 { return 1 } + // ____________________________________________________________________________ // AppModuleSimulation implements an application simulation module for the provider module. diff --git a/x/provider/simulation/operations.go b/x/provider/simulation/operations.go index ce6947b360..e66b46c456 100644 --- a/x/provider/simulation/operations.go +++ b/x/provider/simulation/operations.go @@ -28,7 +28,7 @@ const ( // WeightedOperations returns all the operations from the module with their respective weights func WeightedOperations( - appParams simtypes.AppParams, cdc codec.JSONMarshaler, ak govtypes.AccountKeeper, + appParams simtypes.AppParams, cdc codec.JSONCodec, ak govtypes.AccountKeeper, bk bankkeeper.Keeper, k keeper.IKeeper) simulation.WeightedOperations { var ( weightMsgCreate int @@ -108,7 +108,7 @@ func SimulateMsgCreate(ak govtypes.AccountKeeper, bk bankkeeper.Keeper, k keeper return simtypes.NoOpMsg(types.ModuleName, msg.Type(), "unable to deliver mock tx"), nil, err } - return simtypes.NewOperationMsg(msg, true, ""), nil, nil + return simtypes.NewOperationMsg(msg, true, "", nil), nil, nil } } @@ -179,6 +179,6 @@ func SimulateMsgUpdate(ak govtypes.AccountKeeper, bk bankkeeper.Keeper, k keeper return simtypes.NoOpMsg(types.ModuleName, msg.Type(), "unable to deliver mock tx"), nil, err } - return simtypes.NewOperationMsg(msg, true, ""), nil, nil + return simtypes.NewOperationMsg(msg, true, "", nil), nil, nil } } From 169717150649de3eb60eb6e7268fab5aafe36d8a Mon Sep 17 00:00:00 2001 From: akhilkumarpilli Date: Thu, 27 May 2021 15:10:35 +0530 Subject: [PATCH 04/10] Fix tests --- client/broadcaster/client.go | 4 +++- x/cert/keeper/key.go | 5 +++-- 2 files changed, 6 insertions(+), 3 deletions(-) diff --git a/client/broadcaster/client.go b/client/broadcaster/client.go index b525ced878..057a45933c 100644 --- a/client/broadcaster/client.go +++ b/client/broadcaster/client.go @@ -17,6 +17,8 @@ import ( var ( // ErrBroadcastTx is used when a broadcast fails due to tendermint errors ErrBroadcastTx = errors.New("broadcast tx error") + // ErrSimulateTx is used when unsigned tx is not proto tx provider format + ErrSimulateTx = errors.New("cannot simulate amino tx") ) type Client interface { @@ -162,7 +164,7 @@ func BuildSimTx(txf tx.Factory, msgs ...sdk.Msg) ([]byte, error) { protoProvider, ok := txb.(protoTxProvider) if !ok { - return nil, fmt.Errorf("cannot simulate amino tx") + return nil, fmt.Errorf("%w: not protoTxProvider format", ErrSimulateTx) } simReq := txtypes.SimulateRequest{Tx: protoProvider.GetProtoTx()} diff --git a/x/cert/keeper/key.go b/x/cert/keeper/key.go index 14de73b429..25397294b7 100644 --- a/x/cert/keeper/key.go +++ b/x/cert/keeper/key.go @@ -5,12 +5,13 @@ import ( "math/big" sdk "github.com/cosmos/cosmos-sdk/types" - sdkAddress "github.com/cosmos/cosmos-sdk/types/address" "github.com/ovrclk/akash/x/cert/types" ) const ( - keyAddrPrefixLen = 1 + sdkAddress.MaxAddrLen + // AddrLen defines a valid address length + AddrLen = 20 + keyAddrPrefixLen = 1 + AddrLen ) var ( From 6efa415896dd9e75bb5bdb2ebb0eb88f52801a8e Mon Sep 17 00:00:00 2001 From: akhilkumarpilli Date: Fri, 28 May 2021 11:21:45 +0530 Subject: [PATCH 05/10] Fix lint issue --- app/app_test.go | 1 + 1 file changed, 1 insertion(+) diff --git a/app/app_test.go b/app/app_test.go index f6cd790731..f62023675c 100644 --- a/app/app_test.go +++ b/app/app_test.go @@ -130,6 +130,7 @@ func TestRunMigrations(t *testing.T) { } for _, tc := range testCases { + tc := tc t.Run(tc.name, func(t *testing.T) { var err error From 4e27e4c8f264b5975b08a75b466475cbab1d6498 Mon Sep 17 00:00:00 2001 From: akhilkumarpilli Date: Mon, 31 May 2021 11:45:09 +0530 Subject: [PATCH 06/10] Fix viper isssue cli --- cmd/akash/cmd/root.go | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/cmd/akash/cmd/root.go b/cmd/akash/cmd/root.go index a7a986a181..72dbbf4538 100644 --- a/cmd/akash/cmd/root.go +++ b/cmd/akash/cmd/root.go @@ -71,8 +71,8 @@ func NewRootCmd() (*cobra.Command, params.EncodingConfig) { WithLegacyAmino(encodingConfig.Amino). WithInput(os.Stdin). WithAccountRetriever(authtypes.AccountRetriever{}). - WithBroadcastMode(flags.BroadcastBlock). - WithHomeDir(app.DefaultHome) + WithHomeDir(app.DefaultHome). + WithViper("") rootCmd := &cobra.Command{ Use: "akash", From 7462b3427e208c0e500210f35857f911702c3d7f Mon Sep 17 00:00:00 2001 From: akhilkumarpilli Date: Mon, 26 Jul 2021 11:43:11 +0530 Subject: [PATCH 07/10] update sdk to v0.43.0-rc2 --- app/app.go | 6 +- app/app_test.go | 1 + cmd/akash/cmd/genaccounts.go | 2 +- cmd/akash/cmd/root.go | 40 ++- go.mod | 21 +- go.sum | 305 +++++++++++++++++++--- integration/e2e_test.go | 24 +- x/cert/client/cli/tx.go | 2 +- x/deployment/client/cli/cli_test.go | 14 +- x/deployment/client/cli/grpc_rest_test.go | 8 +- x/market/client/cli/cli_test.go | 30 +-- x/market/client/cli/grpc_rest_test.go | 18 +- x/provider/client/cli/cli_test.go | 6 +- x/provider/client/cli/grpc_rest_test.go | 6 +- 14 files changed, 376 insertions(+), 107 deletions(-) diff --git a/app/app.go b/app/app.go index 7154d71da3..33993938fa 100644 --- a/app/app.go +++ b/app/app.go @@ -162,7 +162,7 @@ type AkashApp struct { // simulation manager sm *module.SimulationManager - // the configurator + // module configurator configurator module.Configurator } @@ -274,7 +274,7 @@ func NewApp( app.keeper.upgrade = upgradekeeper.NewKeeper(skipUpgradeHeights, app.keys[upgradetypes.StoreKey], appCodec, homePath, app.BaseApp) - app.keeper.upgrade.SetUpgradeHandler("v0.43.0-beta1-upgrade", func(ctx sdk.Context, plan upgradetypes.Plan, + app.keeper.upgrade.SetUpgradeHandler("v0.43.0-upgrade", func(ctx sdk.Context, plan upgradetypes.Plan, _ module.VersionMap) (module.VersionMap, error) { // 1st-time running in-store migrations, using 1 as fromVersion to // avoid running InitGenesis. @@ -310,7 +310,7 @@ func NewApp( panic(err) } - if upgradeInfo.Name == "v0.43.0-beta1-upgrade" && !app.keeper.upgrade.IsSkipHeight(upgradeInfo.Height) { + if upgradeInfo.Name == "v0.43.0-upgrade" && !app.keeper.upgrade.IsSkipHeight(upgradeInfo.Height) { storeUpgrades := storetypes.StoreUpgrades{ Added: []string{"authz", "feegrant"}, } diff --git a/app/app_test.go b/app/app_test.go index f62023675c..5e1c101534 100644 --- a/app/app_test.go +++ b/app/app_test.go @@ -207,6 +207,7 @@ func TestInitGenesisOnMigration(t *testing.T) { mockDefaultGenesis := json.RawMessage(`{"key": "value"}`) mockModule.EXPECT().DefaultGenesis(gomock.Eq(app.appCodec)).Times(1).Return(mockDefaultGenesis) mockModule.EXPECT().InitGenesis(gomock.Eq(ctx), gomock.Eq(app.appCodec), gomock.Eq(mockDefaultGenesis)).Times(1).Return(nil) + mockModule.EXPECT().ConsensusVersion().Times(1).Return(uint64(0)) app.mm.Modules["mock"] = mockModule diff --git a/cmd/akash/cmd/genaccounts.go b/cmd/akash/cmd/genaccounts.go index fcef8b6b26..16ca88bcff 100644 --- a/cmd/akash/cmd/genaccounts.go +++ b/cmd/akash/cmd/genaccounts.go @@ -44,7 +44,7 @@ contain valid denominations. Accounts may optionally be supplied with vesting pa Args: cobra.ExactArgs(2), RunE: func(cmd *cobra.Command, args []string) error { clientCtx := client.GetClientContextFromCmd(cmd) - depCdc := clientCtx.JSONCodec + depCdc := clientCtx.Codec cdc := depCdc.(codec.Codec) serverCtx := server.GetServerContextFromCmd(cmd) diff --git a/cmd/akash/cmd/root.go b/cmd/akash/cmd/root.go index 72dbbf4538..65b2c9b0e7 100644 --- a/cmd/akash/cmd/root.go +++ b/cmd/akash/cmd/root.go @@ -16,6 +16,7 @@ import ( "github.com/cosmos/cosmos-sdk/client/keys" "github.com/cosmos/cosmos-sdk/client/rpc" "github.com/cosmos/cosmos-sdk/server" + serverconfig "github.com/cosmos/cosmos-sdk/server/config" servertypes "github.com/cosmos/cosmos-sdk/server/types" "github.com/cosmos/cosmos-sdk/simapp/params" "github.com/cosmos/cosmos-sdk/snapshots" @@ -23,7 +24,6 @@ import ( sdk "github.com/cosmos/cosmos-sdk/types" authcmd "github.com/cosmos/cosmos-sdk/x/auth/client/cli" authtypes "github.com/cosmos/cosmos-sdk/x/auth/types" - vestingcli "github.com/cosmos/cosmos-sdk/x/auth/vesting/client/cli" bankcmd "github.com/cosmos/cosmos-sdk/x/bank/client/cli" banktypes "github.com/cosmos/cosmos-sdk/x/bank/types" "github.com/cosmos/cosmos-sdk/x/crisis" @@ -65,7 +65,7 @@ func bindFlags(cmd *cobra.Command, v *viper.Viper) { func NewRootCmd() (*cobra.Command, params.EncodingConfig) { encodingConfig := app.MakeEncodingConfig() initClientCtx := client.Context{}. - WithJSONCodec(encodingConfig.Marshaler). + WithCodec(encodingConfig.Marshaler). WithInterfaceRegistry(encodingConfig.InterfaceRegistry). WithTxConfig(encodingConfig.TxConfig). WithLegacyAmino(encodingConfig.Amino). @@ -87,7 +87,9 @@ func NewRootCmd() (*cobra.Command, params.EncodingConfig) { return err } - if err := server.InterceptConfigsPreRunHandler(cmd); err != nil { + customAppTemplate, customAppConfig := initAppConfig() + + if err := server.InterceptConfigsPreRunHandler(cmd, customAppTemplate, customAppConfig); err != nil { return err } @@ -104,6 +106,35 @@ func NewRootCmd() (*cobra.Command, params.EncodingConfig) { return rootCmd, encodingConfig } +// initAppConfig helps to override default appConfig template and configs. +// return "", nil if no custom configuration is required for the application. +func initAppConfig() (string, interface{}) { + type CustomAppConfig struct { + serverconfig.Config + } + + srvCfg := serverconfig.DefaultConfig() + // The SDK's default minimum gas price is set to "" (empty value) inside + // app.toml. If left empty by validators, the node will halt on startup. + // However, the chain developer can set a default app.toml value for their + // validators here. + // + // In summary: + // - if you leave srvCfg.MinGasPrices = "", all validators MUST tweak their + // own app.toml config, + // - if you set srvCfg.MinGasPrices non-empty, validators CAN tweak their + // own app.toml to override, or use this default value. + // + // we set the min gas prices to 0. + srvCfg.MinGasPrices = "0uakt" + + customAppConfig := CustomAppConfig{ + Config: *srvCfg, + } + + return serverconfig.DefaultConfigTemplate, customAppConfig +} + // Execute executes the root command. func Execute(rootCmd *cobra.Command) error { // Create and set a client.Context on the command's Context. During the pre-run @@ -253,12 +284,9 @@ func txCmd() *cobra.Command { authcmd.GetSignBatchCommand(), authcmd.GetMultiSignCommand(), authcmd.GetValidateSignaturesCommand(), - flags.LineBreak, authcmd.GetBroadcastCommand(), authcmd.GetEncodeCommand(), authcmd.GetDecodeCommand(), - flags.LineBreak, - vestingcli.GetTxCmd(), ) // add modules' tx commands diff --git a/go.mod b/go.mod index e990eb8e62..45e3a9f0e3 100644 --- a/go.mod +++ b/go.mod @@ -6,12 +6,12 @@ require ( github.com/avast/retry-go v2.7.0+incompatible github.com/blang/semver v3.5.1+incompatible github.com/boz/go-lifecycle v0.1.1-0.20190620234137-5139c86739b8 - github.com/cosmos/cosmos-sdk v0.43.0-beta1 + github.com/cosmos/cosmos-sdk v0.43.0-rc2 github.com/cosmos/ibc-go v1.0.0-alpha2 github.com/davecgh/go-spew v1.1.2-0.20180830191138-d8f796af33cc // indirect github.com/go-kit/kit v0.10.0 github.com/gogo/protobuf v1.3.3 - github.com/golang/mock v1.4.4 + github.com/golang/mock v1.6.0 github.com/golang/protobuf v1.5.2 github.com/gorilla/context v1.1.1 github.com/gorilla/mux v1.8.0 @@ -22,26 +22,25 @@ require ( github.com/libp2p/go-buffer-pool v0.0.3-0.20190619091711-d94255cb3dfc // indirect github.com/pkg/errors v0.9.1 github.com/pmezard/go-difflib v1.0.1-0.20181226105442-5d4384ee4fb2 // indirect - github.com/prometheus/client_golang v1.10.0 + github.com/prometheus/client_golang v1.11.0 github.com/rakyll/statik v0.1.7 github.com/rs/cors v1.7.1-0.20191011001009-dcbccb712443 // indirect - github.com/rs/zerolog v1.21.0 + github.com/rs/zerolog v1.23.0 github.com/satori/go.uuid v1.2.0 github.com/shopspring/decimal v1.2.0 github.com/spf13/cast v1.3.1 github.com/spf13/cobra v1.1.3 github.com/spf13/pflag v1.0.5 - github.com/spf13/viper v1.7.1 + github.com/spf13/viper v1.8.0 github.com/stretchr/objx v0.2.1-0.20190415111823-35313a95ee26 // indirect github.com/stretchr/testify v1.7.0 github.com/subosito/gotenv v1.2.1-0.20190917103637-de67a6614a4d // indirect - github.com/tendermint/tendermint v0.34.10 + github.com/tendermint/tendermint v0.34.11 github.com/tendermint/tm-db v0.6.4 - golang.org/x/sync v0.0.0-20201207232520-09787c993a3a - google.golang.org/appengine v1.6.6-0.20191016204603-16bce7d3dc4e // indirect - google.golang.org/genproto v0.0.0-20210114201628-6edceaf6022f - google.golang.org/grpc v1.37.0 - gopkg.in/yaml.v3 v3.0.0-20200615113413-eeeca48fe776 + golang.org/x/sync v0.0.0-20210220032951-036812b2e83c + google.golang.org/genproto v0.0.0-20210602131652-f16073e35f0c + google.golang.org/grpc v1.38.0 + gopkg.in/yaml.v3 v3.0.0-20210107192922-496545a6307b k8s.io/api v0.19.3 k8s.io/apimachinery v0.19.3 k8s.io/client-go v0.19.3 diff --git a/go.sum b/go.sum index 3d86b46ee1..2bf4335f1a 100644 --- a/go.sum +++ b/go.sum @@ -4,12 +4,38 @@ cloud.google.com/go v0.44.1/go.mod h1:iSa0KzasP4Uvy3f1mN/7PiObzGgflwredwwASm/v6A cloud.google.com/go v0.44.2/go.mod h1:60680Gw3Yr4ikxnPRS/oxxkBccT6SA1yMk63TGekxKY= cloud.google.com/go v0.45.1/go.mod h1:RpBamKRgapWJb87xiFSdk4g1CME7QZg3uwTez+TSTjc= cloud.google.com/go v0.46.3/go.mod h1:a6bKKbmY7er1mI7TEI4lsAkts/mkhTSZK8w33B4RAg0= +cloud.google.com/go v0.50.0/go.mod h1:r9sluTvynVuxRIOHXQEHMFffphuXHOMZMycpNR5e6To= cloud.google.com/go v0.51.0/go.mod h1:hWtGJ6gnXH+KgDv+V0zFGDvpi07n3z8ZNj3T1RW0Gcw= +cloud.google.com/go v0.52.0/go.mod h1:pXajvRH/6o3+F9jDHZWQ5PbGhn+o8w9qiu/CffaVdO4= +cloud.google.com/go v0.53.0/go.mod h1:fp/UouUEsRkN6ryDKNW/Upv/JBKnv6WDthjR6+vze6M= +cloud.google.com/go v0.54.0/go.mod h1:1rq2OEkV3YMf6n/9ZvGWI3GWw0VoqH/1x2nd8Is/bPc= +cloud.google.com/go v0.56.0/go.mod h1:jr7tqZxxKOVYizybht9+26Z/gUq7tiRzu+ACVAMbKVk= +cloud.google.com/go v0.57.0/go.mod h1:oXiQ6Rzq3RAkkY7N6t3TcE6jE+CIBBbA36lwQ1JyzZs= +cloud.google.com/go v0.62.0/go.mod h1:jmCYTdRCQuc1PHIIJ/maLInMho30T/Y0M4hTdTShOYc= +cloud.google.com/go v0.65.0/go.mod h1:O5N8zS7uWy9vkA9vayVHs65eM1ubvY4h553ofrNHObY= +cloud.google.com/go v0.72.0/go.mod h1:M+5Vjvlc2wnp6tjzE102Dw08nGShTscUx2nZMufOKPI= +cloud.google.com/go v0.74.0/go.mod h1:VV1xSbzvo+9QJOxLDaJfTjx5e+MePCpCWwvftOeQmWk= +cloud.google.com/go v0.78.0/go.mod h1:QjdrLG0uq+YwhjoVOLsS1t7TW8fs36kLs4XO5R5ECHg= +cloud.google.com/go v0.79.0/go.mod h1:3bzgcEeQlzbuEAYu4mrWhKqWjmpprinYgKJLgKHnbb8= +cloud.google.com/go v0.81.0/go.mod h1:mk/AM35KwGk/Nm2YSeZbxXdrNK3KZOYHmLkOqC2V6E0= cloud.google.com/go/bigquery v1.0.1/go.mod h1:i/xbL2UlR5RvWAURpBYZTtm/cXjCha9lbfbpx4poX+o= +cloud.google.com/go/bigquery v1.3.0/go.mod h1:PjpwJnslEMmckchkHFfq+HTD2DmtT67aNFKH1/VBDHE= +cloud.google.com/go/bigquery v1.4.0/go.mod h1:S8dzgnTigyfTmLBfrtrhyYhwRxG72rYxvftPBK2Dvzc= +cloud.google.com/go/bigquery v1.5.0/go.mod h1:snEHRnqQbz117VIFhE8bmtwIDY80NLUZUMb4Nv6dBIg= +cloud.google.com/go/bigquery v1.7.0/go.mod h1://okPTzCYNXSlb24MZs83e2Do+h+VXtc4gLoIoXIAPc= +cloud.google.com/go/bigquery v1.8.0/go.mod h1:J5hqkt3O0uAFnINi6JXValWIb1v0goeZM77hZzJN/fQ= cloud.google.com/go/datastore v1.0.0/go.mod h1:LXYbyblFSglQ5pkeyhO+Qmw7ukd3C+pD7TKLgZqpHYE= +cloud.google.com/go/datastore v1.1.0/go.mod h1:umbIZjpQpHh4hmRpGhH4tLFup+FVzqBi1b3c64qFpCk= cloud.google.com/go/firestore v1.1.0/go.mod h1:ulACoGHTpvq5r8rxGJ4ddJZBZqakUQqClKRT5SZwBmk= cloud.google.com/go/pubsub v1.0.1/go.mod h1:R0Gpsv3s54REJCy4fxDixWD93lHJMoZTyQ2kNxGRt3I= +cloud.google.com/go/pubsub v1.1.0/go.mod h1:EwwdRX2sKPjnvnqCa270oGRyludottCI76h+R3AArQw= +cloud.google.com/go/pubsub v1.2.0/go.mod h1:jhfEVHT8odbXTkndysNHCcx0awwzvfOlguIAii9o8iA= +cloud.google.com/go/pubsub v1.3.1/go.mod h1:i+ucay31+CNRpDW4Lu78I4xXG+O1r/MAHgjpRVR+TSU= cloud.google.com/go/storage v1.0.0/go.mod h1:IhtSnM/ZTZV8YYJWCY8RULGVqBDmpoyjwiyrjsg+URw= +cloud.google.com/go/storage v1.5.0/go.mod h1:tpKbwo567HUNpVclU5sGELwQWBDZ8gh0ZeosJ0Rtdos= +cloud.google.com/go/storage v1.6.0/go.mod h1:N7U0C8pVQ/+NIKOBQyamJIeKQKkZ+mxpohlUTyfDhBk= +cloud.google.com/go/storage v1.8.0/go.mod h1:Wv1Oy7z6Yz3DshWRJFhqM/UCfaWIRTdp0RXyy7KQOVs= +cloud.google.com/go/storage v1.10.0/go.mod h1:FLPqc6j+Ki4BU591ie1oL6qBQGu2Bl/tZ9ullr3+Kg0= dmitri.shuralyov.com/gpu/mtl v0.0.0-20190408044501-666a987793e9/go.mod h1:H6x//7gZCb22OMCxBHrMx7a5I7Hp++hsVxbQ4BYO7hU= filippo.io/edwards25519 v1.0.0-beta.2 h1:/BZRNzm8N4K4eWfK28dL4yescorxtO7YG1yun8fy+pI= filippo.io/edwards25519 v1.0.0-beta.2/go.mod h1:X+pm78QAUPtFLi1z9PYIlS/bdDnvbCOGKtZ+ACWEf7o= @@ -59,6 +85,7 @@ github.com/VividCortex/gohistogram v1.0.0 h1:6+hBz+qvs0JOrrNhhmR7lFxo5sINxBCGXrd github.com/VividCortex/gohistogram v1.0.0/go.mod h1:Pf5mBqqDxYaXu3hDrrU+w6nw50o/4+TcAqDqk/vUH7g= github.com/Workiva/go-datastructures v1.0.52 h1:PLSK6pwn8mYdaoaCZEMsXBpBotr4HHn9abU0yMQt0NI= github.com/Workiva/go-datastructures v1.0.52/go.mod h1:Z+F2Rca0qCsVYDS8z7bAGm8f3UkzuWYS/oBZz5a7VVA= +github.com/Zilliqa/gozilliqa-sdk v1.2.1-0.20201201074141-dd0ecada1be6/go.mod h1:eSYp2T6f0apnuW8TzhV3f6Aff2SE8Dwio++U4ha4yEM= github.com/aead/siphash v1.0.1/go.mod h1:Nywa3cDsYNNK3gaciGTWPwHt0wlpNV15vwmswBAUSII= github.com/afex/hystrix-go v0.0.0-20180502004556-fa1af6a1f4f5/go.mod h1:SkGFH1ia65gfNATL8TAiHDNxPzPdmEL5uirI2Uyuz6c= github.com/alecthomas/template v0.0.0-20160405071501-a0175ee3bccc/go.mod h1:LOuyumcjzFXgccqObfd/Ljyb9UuFJ6TxHnclSeseNhc= @@ -76,8 +103,9 @@ github.com/aristanetworks/goarista v0.0.0-20170210015632-ea17b1a17847/go.mod h1: github.com/armon/circbuf v0.0.0-20150827004946-bbbad097214e/go.mod h1:3U/XgcO3hCbHZ8TKRvWD2dDTCfh9M9ya+I9JpbB7O8o= github.com/armon/consul-api v0.0.0-20180202201655-eb2c6b5be1b6/go.mod h1:grANhF5doyWs3UAsr3K4I6qtAmlQcZDesFNEHPZAzj8= github.com/armon/go-metrics v0.0.0-20180917152333-f0300d1749da/go.mod h1:Q73ZrmVTwzkszR9V5SSuryQ31EELlFMUz1kKyl939pY= -github.com/armon/go-metrics v0.3.8 h1:oOxq3KPj0WhCuy50EhzwiyMyG2ovRQZpZLXQuOh2a/M= github.com/armon/go-metrics v0.3.8/go.mod h1:4O98XIr/9W0sxpJ8UaYkvjk10Iff7SnFrb4QAOwNTFc= +github.com/armon/go-metrics v0.3.9 h1:O2sNqxBdvq8Eq5xmzljcYzAORli6RWCvEym4cJf9m18= +github.com/armon/go-metrics v0.3.9/go.mod h1:4O98XIr/9W0sxpJ8UaYkvjk10Iff7SnFrb4QAOwNTFc= github.com/armon/go-radix v0.0.0-20180808171621-7fddfc383310/go.mod h1:ufUuZ+zHj4x4TnLV4JWEpy2hxWSpsRywHrMgIH9cCH8= github.com/aryann/difflib v0.0.0-20170710044230-e206f873d14a/go.mod h1:DAHtR1m6lCRdSC2Tm3DSWRPvIPr6xNKyeHdqDQSQT+A= github.com/avast/retry-go v2.7.0+incompatible h1:XaGnzl7gESAideSjr+I8Hki/JBi+Yb9baHlMRPeSC84= @@ -93,20 +121,25 @@ github.com/beorn7/perks v1.0.1/go.mod h1:G2ZrVWU2WbWT9wwq4/hrbKbnv/1ERSJQ0ibhJ6r github.com/bgentry/speakeasy v0.1.0 h1:ByYyxL9InA1OWqxJqqp2A5pYHUrCiAL6K3J+LKSsQkY= github.com/bgentry/speakeasy v0.1.0/go.mod h1:+zsyZBPWlz7T6j88CTgSN5bM796AkVf0kBD4zp0CCIs= github.com/bketelsen/crypt v0.0.3-0.20200106085610-5cbc8cc4026c/go.mod h1:MKsuJmJgSg28kpZDP6UIiPt0e0Oz0kqKNGyRaWEPv84= +github.com/bketelsen/crypt v0.0.4/go.mod h1:aI6NrJ0pMGgvZKL1iVgXLnfIFJtfV+bKCoqOes/6LfM= github.com/blang/semver v3.5.1+incompatible h1:cQNTCjp13qL8KC3Nbxr/y2Bqb63oX6wdnnjpJbkM4JQ= github.com/blang/semver v3.5.1+incompatible/go.mod h1:kRBLl5iJ+tD4TcOOxsy/0fnwebNt5EWlYSAyrTnjyyk= github.com/boz/go-lifecycle v0.1.1-0.20190620234137-5139c86739b8 h1:0SsyL78bVw6RwFKVKFHv8kdREXxuGbQKDlo7FVy7Zss= github.com/boz/go-lifecycle v0.1.1-0.20190620234137-5139c86739b8/go.mod h1:zdagAUMcC2C0OmQkBlJZFV77uF4GCVaGphAexGi7oho= github.com/btcsuite/btcd v0.0.0-20171128150713-2e60448ffcc6/go.mod h1:Dmm/EzmjnCiweXmzRIAiUWCInVmPgjkzgv5k4tVyXiQ= github.com/btcsuite/btcd v0.0.0-20190115013929-ed77733ec07d/go.mod h1:d3C0AkH6BRcvO8T0UEPu53cnw4IbV63x1bEjildYhO0= +github.com/btcsuite/btcd v0.0.0-20190315201642-aa6e0f35703c/go.mod h1:DrZx5ec/dmnfpw9KyYoQyYo7d0KEvTkk/5M/vbZjAr8= github.com/btcsuite/btcd v0.20.1-beta/go.mod h1:wVuoA8VJLEcwgqHBwHmzLRazpKxTv13Px/pDuV7OomQ= -github.com/btcsuite/btcd v0.21.0-beta h1:At9hIZdJW0s9E/fAz28nrz6AmcNlSVucCH796ZteX1M= github.com/btcsuite/btcd v0.21.0-beta/go.mod h1:ZSWyehm27aAuS9bvkATT+Xte3hjHZ+MRgMY/8NJ7K94= +github.com/btcsuite/btcd v0.22.0-beta h1:LTDpDKUM5EeOFBPM8IXpinEcmZ6FWfNZbE3lfrfdnWo= +github.com/btcsuite/btcd v0.22.0-beta/go.mod h1:9n5ntfhhHQBIhUvlhDvD3Qg6fRUj4jkN0VB8L8svzOA= github.com/btcsuite/btclog v0.0.0-20170628155309-84c8d2346e9f/go.mod h1:TdznJufoqS23FtqVCzL0ZqgP5MqXbb4fg/WgDys70nA= github.com/btcsuite/btcutil v0.0.0-20180706230648-ab6388e0c60a/go.mod h1:+5NJ2+qvTyV9exUAL/rxXi3DcLg2Ts+ymUAY5y4NvMg= +github.com/btcsuite/btcutil v0.0.0-20190207003914-4c204d697803/go.mod h1:+5NJ2+qvTyV9exUAL/rxXi3DcLg2Ts+ymUAY5y4NvMg= github.com/btcsuite/btcutil v0.0.0-20190425235716-9e5f4b9a998d/go.mod h1:+5NJ2+qvTyV9exUAL/rxXi3DcLg2Ts+ymUAY5y4NvMg= -github.com/btcsuite/btcutil v1.0.2 h1:9iZ1Terx9fMIOtq1VrwdqfsATL9MC2l8ZrUY6YZ2uts= github.com/btcsuite/btcutil v1.0.2/go.mod h1:j9HUFwoQRsZL3V4n+qG+CUnEGHOarIxfC3Le2Yhbcts= +github.com/btcsuite/btcutil v1.0.3-0.20201208143702-a53e38424cce h1:YtWJF7RHm2pYCvA5t0RPmAaLUhREsKuKd+SLhxFbFeQ= +github.com/btcsuite/btcutil v1.0.3-0.20201208143702-a53e38424cce/go.mod h1:0DVlHczLPewLcPGEIeUEzfOJhqGPQ0mJJRDBtD307+o= github.com/btcsuite/go-socks v0.0.0-20170105172521-4720035b7bfd/go.mod h1:HHNXQzUsZCxOoE+CPiyCTO6x34Zs86zZUiwtpXoGdtg= github.com/btcsuite/goleveldb v0.0.0-20160330041536-7834afc9e8cd/go.mod h1:F+uVaaLLH7j4eDXPRvw78tMflu7Ie2bzYOH4Y8rRKBY= github.com/btcsuite/goleveldb v1.0.0/go.mod h1:QiK9vBlgftBg6rWQIj6wFzbPfRjiykIEhBH4obrXJ/I= @@ -133,8 +166,9 @@ github.com/cncf/udpa/go v0.0.0-20191209042840-269d4d468f6f/go.mod h1:M8M6+tZqaGX github.com/cockroachdb/datadriven v0.0.0-20190809214429-80d97fb3cbaa/go.mod h1:zn76sxSg3SzpJ0PPJaLDCu+Bu0Lg3sKTORVIj19EIF8= github.com/codahale/hdrhistogram v0.0.0-20161010025455-3a0bb77429bd/go.mod h1:sE/e/2PUdi/liOCUjSTXgM1o87ZssimdTWN964YiIeI= github.com/coinbase/rosetta-sdk-go v0.5.8/go.mod h1:xd4wYUhV3LkY78SPH8BUhc88rXfn2jYgN9BfiSjbcvM= -github.com/coinbase/rosetta-sdk-go v0.5.9 h1:CuGQE3HFmYwdEACJnuOtVI9cofqPsGvq6FdFIzaOPKI= github.com/coinbase/rosetta-sdk-go v0.5.9/go.mod h1:xd4wYUhV3LkY78SPH8BUhc88rXfn2jYgN9BfiSjbcvM= +github.com/coinbase/rosetta-sdk-go v0.6.10 h1:rgHD/nHjxLh0lMEdfGDqpTtlvtSBwULqrrZ2qPdNaCM= +github.com/coinbase/rosetta-sdk-go v0.6.10/go.mod h1:J/JFMsfcePrjJZkwQFLh+hJErkAmdm9Iyy3D5Y0LfXo= github.com/confio/ics23/go v0.0.0-20200817220745-f173e6211efb/go.mod h1:E45NqnlpxGnpfTWL/xauN7MRwEE28T4Dd4uraToOaKg= github.com/confio/ics23/go v0.6.3/go.mod h1:E45NqnlpxGnpfTWL/xauN7MRwEE28T4Dd4uraToOaKg= github.com/confio/ics23/go v0.6.6 h1:pkOy18YxxJ/r0XFDCnrl4Bjv6h4LkBSpLS6F38mrKL8= @@ -147,10 +181,12 @@ github.com/coreos/go-semver v0.2.0/go.mod h1:nnelYz7RCh+5ahJtPPxZlU+153eP4D4r3Ee github.com/coreos/go-semver v0.3.0/go.mod h1:nnelYz7RCh+5ahJtPPxZlU+153eP4D4r3EedlOD2RNk= github.com/coreos/go-systemd v0.0.0-20180511133405-39ca1b05acc7/go.mod h1:F5haX7vjVVG0kc13fIWeqUViNPyEJxv/OmvnBo0Yme4= github.com/coreos/go-systemd v0.0.0-20190321100706-95778dfbb74e/go.mod h1:F5haX7vjVVG0kc13fIWeqUViNPyEJxv/OmvnBo0Yme4= +github.com/coreos/go-systemd/v22 v22.3.2/go.mod h1:Y58oyj3AT4RCenI/lSvhwexgC+NSVTIJ3seZv2GcEnc= github.com/coreos/pkg v0.0.0-20160727233714-3ac0863d7acf/go.mod h1:E3G3o1h8I7cfcXa63jLwjI0eiQQMgzzUDFVpN/nH/eA= github.com/coreos/pkg v0.0.0-20180928190104-399ea9e2e55f/go.mod h1:E3G3o1h8I7cfcXa63jLwjI0eiQQMgzzUDFVpN/nH/eA= -github.com/cosmos/cosmos-sdk v0.43.0-beta1 h1:cfRZY+opamo+zF+MuEbvriZwoSzfCuEh1fqUM8fFHbg= github.com/cosmos/cosmos-sdk v0.43.0-beta1/go.mod h1:rpCPaC3MnityU4Io4CDZqZB4GMtPqNeYXxPk8iRqmYM= +github.com/cosmos/cosmos-sdk v0.43.0-rc2 h1:9xww4vDnsNyZyF1p9U4zpc8tc5Ctx763WQWLccddP8A= +github.com/cosmos/cosmos-sdk v0.43.0-rc2/go.mod h1:ctcrTEAhei9s8O3KSNvL0dxe+fVQGp07QyRb/7H9JYE= github.com/cosmos/go-bip39 v0.0.0-20180819234021-555e2067c45d/go.mod h1:tSxLoYXyBmiFeKpvmq4dzayMdCjCnu8uqmCysIGBT2Y= github.com/cosmos/go-bip39 v1.0.0 h1:pcomnQdrdH22njcAatO0yWojsUnCO3y2tNoV1cb6hHY= github.com/cosmos/go-bip39 v1.0.0/go.mod h1:RNJv0H/pOIVgxw6KS7QeX2a0Uo0aKUlfhZ4xuwvCdJw= @@ -214,6 +250,7 @@ github.com/enigmampc/btcutil v1.0.3-0.20200723161021-e2fb6adb2a25/go.mod h1:hTr8 github.com/envoyproxy/go-control-plane v0.9.4/go.mod h1:6rpuAdCZL397s3pYoYcLgu1mIlRU8Am5FuJP05cCM98= github.com/envoyproxy/protoc-gen-validate v0.1.0/go.mod h1:iSmxcyjqTsJpI2R4NaDN7+kN2VEUnK/pcBlmesArF7c= github.com/ethereum/go-ethereum v1.9.23/go.mod h1:JIfVb6esrqALTExdz9hRYvrP0xBDf6wCncIu1hNwHpM= +github.com/ethereum/go-ethereum v1.9.25/go.mod h1:vMkFiYLHI4tgPw4k2j4MHKoovchFE8plZ0M9VMk4/oM= github.com/evanphx/json-patch v4.9.0+incompatible h1:kLcOMZeuLAJvL2BPWLMIj5oaZQobrkAqrL+WFZwQses= github.com/evanphx/json-patch v4.9.0+incompatible/go.mod h1:50XU6AFN0ol/bzJsmQLiYLvXMP4fmwYFNcr97nuDLSk= github.com/evanphx/json-patch/v5 v5.1.0 h1:B0aXl1o/1cP8NbviYiBMkcHBtUjIJ1/Ccg6b+SwCLQg= @@ -227,6 +264,7 @@ github.com/facebookgo/subset v0.0.0-20150612182917-8dac2c3c4870/go.mod h1:5tD+ne github.com/fatih/color v1.3.0/go.mod h1:Zm6kSWBoL9eyXnKyktHP6abPY2pDugNf5KwzbycvMj4= github.com/fatih/color v1.7.0/go.mod h1:Zm6kSWBoL9eyXnKyktHP6abPY2pDugNf5KwzbycvMj4= github.com/fatih/color v1.9.0/go.mod h1:eQcE1qtQxscV5RaZvpXrrb8Drkc3/DdQ+uUYCNjL+zU= +github.com/fatih/color v1.10.0/go.mod h1:ELkj/draVOlAH/xkhN6mQ50Qd0MPOk5AAr3maGEBuJM= github.com/felixge/httpsnoop v1.0.1 h1:lvB5Jl89CsZtGIWuTcDM1E/vkVs49/Ml7JJe07l8SPQ= github.com/felixge/httpsnoop v1.0.1/go.mod h1:m8KPJKqk1gH5J9DgRY2ASl2lWCfGKXixSwevea8zH2U= github.com/fjl/memsize v0.0.0-20180418122429-ca190fb6ffbc/go.mod h1:VvhXpOYNQvB+uIk2RvXzuaQtkQJzzIx6lSBe1xv7hi0= @@ -251,6 +289,7 @@ github.com/go-kit/kit v0.8.0/go.mod h1:xBxKIO96dXMWWy0MnWVtmwkA9/13aqxPnvrjFYMA2 github.com/go-kit/kit v0.9.0/go.mod h1:xBxKIO96dXMWWy0MnWVtmwkA9/13aqxPnvrjFYMA2as= github.com/go-kit/kit v0.10.0 h1:dXFJfIHVvUcpSgDOV+Ne6t7jXri8Tfv2uOLHUZ2XNuo= github.com/go-kit/kit v0.10.0/go.mod h1:xUsJbQ/Fp4kEt7AFgCuvyX4a71u8h9jB8tj/ORgOZ7o= +github.com/go-kit/log v0.1.0/go.mod h1:zbhenjAZHb184qTLMA9ZjW7ThYL0H2mk7Q6pNt4vbaY= github.com/go-logfmt/logfmt v0.3.0/go.mod h1:Qt1PoO58o5twSAckw1HlFXLmHsOX5/0LbT9GBnD5lWE= github.com/go-logfmt/logfmt v0.4.0/go.mod h1:3RMwSq7FuexP4Kalkev3ejPJsZTpXXBr9+V4qmtdjCk= github.com/go-logfmt/logfmt v0.5.0 h1:TrB8swr/68K7m9CcGut2g3UOihhbcbiMAYiuTXdEih4= @@ -293,23 +332,31 @@ github.com/gobwas/ws v1.0.2 h1:CoAavW/wd/kulfZmSIBt6p24n4j7tHgNVCjsfHVNUbo= github.com/gobwas/ws v1.0.2/go.mod h1:szmBTxLgaFppYjEmNtny/v3w89xOydFnnZMcgRRu/EM= github.com/godbus/dbus v0.0.0-20190726142602-4481cbc300e2 h1:ZpnhV/YsD2/4cESfV5+Hoeu/iUR3ruzNvZ+yQfO03a0= github.com/godbus/dbus v0.0.0-20190726142602-4481cbc300e2/go.mod h1:bBOAhwG1umN6/6ZUMtDFBMQR8jRg9O75tm9K00oMsK4= +github.com/godbus/dbus/v5 v5.0.4/go.mod h1:xhWf0FNVPg57R7Z0UbKHbJfkEywrmjJnf7w5xrFpKfA= github.com/gogo/gateway v1.1.0 h1:u0SuhL9+Il+UbjM9VIE3ntfRujKbvVpFvNB4HbjeVQ0= github.com/gogo/gateway v1.1.0/go.mod h1:S7rR8FRQyG3QFESeSv4l2WnsyzlCLG0CzBbUUo/mbic= github.com/golang/glog v0.0.0-20160126235308-23def4e6c14b/go.mod h1:SBH7ygxi8pfUlaOkMMuAQtPIUF8ecWP5IEl/CR7VP2Q= github.com/golang/groupcache v0.0.0-20160516000752-02826c3e7903/go.mod h1:cIg4eruTrX1D+g88fzRXU5OdNfaM+9IcxsU14FzY7Hc= github.com/golang/groupcache v0.0.0-20190129154638-5b532d6fd5ef/go.mod h1:cIg4eruTrX1D+g88fzRXU5OdNfaM+9IcxsU14FzY7Hc= github.com/golang/groupcache v0.0.0-20190702054246-869f871628b6/go.mod h1:cIg4eruTrX1D+g88fzRXU5OdNfaM+9IcxsU14FzY7Hc= -github.com/golang/groupcache v0.0.0-20191227052852-215e87163ea7 h1:5ZkaAPbicIKTF2I64qf5Fh8Aa83Q/dnOafMYV0OMwjA= github.com/golang/groupcache v0.0.0-20191227052852-215e87163ea7/go.mod h1:cIg4eruTrX1D+g88fzRXU5OdNfaM+9IcxsU14FzY7Hc= +github.com/golang/groupcache v0.0.0-20200121045136-8c9f03a8e57e h1:1r7pUrabqp18hOBcwBwiTsbnFeTZHV9eER/QT5JVZxY= +github.com/golang/groupcache v0.0.0-20200121045136-8c9f03a8e57e/go.mod h1:cIg4eruTrX1D+g88fzRXU5OdNfaM+9IcxsU14FzY7Hc= github.com/golang/mock v1.2.0/go.mod h1:oTYuIxOrZwtPieC+H1uAHpcLFnEyAGVDL/k47Jfbm0A= github.com/golang/mock v1.3.1/go.mod h1:sBzyDLLjw3U8JLTeZvSv8jJB+tU5PVekmnlKIyFUx0Y= -github.com/golang/mock v1.4.4 h1:l75CXGRSwbaYNpl/Z2X1XIIAMSCquvXgpVZDhwEIJsc= +github.com/golang/mock v1.4.0/go.mod h1:UOMv5ysSaYNkG+OFQykRIcU/QvvxJf3p21QfJ2Bt3cw= +github.com/golang/mock v1.4.1/go.mod h1:UOMv5ysSaYNkG+OFQykRIcU/QvvxJf3p21QfJ2Bt3cw= +github.com/golang/mock v1.4.3/go.mod h1:UOMv5ysSaYNkG+OFQykRIcU/QvvxJf3p21QfJ2Bt3cw= github.com/golang/mock v1.4.4/go.mod h1:l3mdAwkq5BuhzHwde/uurv3sEJeZMXNpwsxVWU71h+4= +github.com/golang/mock v1.5.0/go.mod h1:CWnOUgYIOo4TcNZ0wHX3YZCqsaM1I1Jvs6v3mP3KVu8= +github.com/golang/mock v1.6.0 h1:ErTB+efbowRARo13NNdxyJji2egdxLGQhRaY+DUumQc= +github.com/golang/mock v1.6.0/go.mod h1:p6yTPP+5HYm5mzsMV8JkE6ZKdX+/wYM6Hr+LicevLPs= github.com/golang/protobuf v1.2.0/go.mod h1:6lQm79b+lXiMfvg/cZm0SGofjICqVBUtrP5yJMmIC1U= github.com/golang/protobuf v1.3.0/go.mod h1:Qd/q+1AKNOZr9uGQzbzCmRO6sUih6GTPZv6a1/R87v0= github.com/golang/protobuf v1.3.1/go.mod h1:6lQm79b+lXiMfvg/cZm0SGofjICqVBUtrP5yJMmIC1U= github.com/golang/protobuf v1.3.2/go.mod h1:6lQm79b+lXiMfvg/cZm0SGofjICqVBUtrP5yJMmIC1U= github.com/golang/protobuf v1.3.3/go.mod h1:vzj43D7+SQXF/4pzW/hwtAqwc6iTitCiVSaWz5lYuqw= +github.com/golang/protobuf v1.3.4/go.mod h1:vzj43D7+SQXF/4pzW/hwtAqwc6iTitCiVSaWz5lYuqw= github.com/golang/protobuf v1.3.5/go.mod h1:6O5/vntMXwX2lRkT1hjjk0nAC1IDOTvTlVgjlRvqsdk= github.com/golang/protobuf v1.4.0-rc.1/go.mod h1:ceaxUfeHdC40wWswd/P6IGgMaK3YpKi5j83Wpe3EHw8= github.com/golang/protobuf v1.4.0-rc.1.0.20200221234624-67d41d38c208/go.mod h1:xKAWHe0F5eneWXFV3EuXVDTCmh+JuBKY0li0aMyXATA= @@ -320,13 +367,15 @@ github.com/golang/protobuf v1.4.1/go.mod h1:U8fpvMrcmy5pZrNK1lt4xCsGvpyWQ/VVv6QD github.com/golang/protobuf v1.4.2/go.mod h1:oDoupMAO8OvCJWAcko0GGGIgR6R6ocIYbsSw735rRwI= github.com/golang/protobuf v1.4.3/go.mod h1:oDoupMAO8OvCJWAcko0GGGIgR6R6ocIYbsSw735rRwI= github.com/golang/protobuf v1.5.0/go.mod h1:FsONVRAS9T7sI+LIUmWTfcYkHO4aIWwzhcaSAoJOfIk= +github.com/golang/protobuf v1.5.1/go.mod h1:DopwsBzvsk0Fs44TXzsVbJyPhcCPeIwnvohx4u74HPM= github.com/golang/protobuf v1.5.2 h1:ROPKBNFfQgOUMifHyP+KYbvpjbdoFNs+aK7DXlji0Tw= github.com/golang/protobuf v1.5.2/go.mod h1:XVQd3VNwM+JqD3oG2Ue2ip4fOMUkwXdXDdiuN0vRsmY= github.com/golang/snappy v0.0.0-20180518054509-2e65f85255db/go.mod h1:/XxbfmMg8lxefKM7IXC3fBNl/7bRcc72aCRzEWrmP2Q= github.com/golang/snappy v0.0.1/go.mod h1:/XxbfmMg8lxefKM7IXC3fBNl/7bRcc72aCRzEWrmP2Q= github.com/golang/snappy v0.0.2-0.20200707131729-196ae77b8a26/go.mod h1:/XxbfmMg8lxefKM7IXC3fBNl/7bRcc72aCRzEWrmP2Q= -github.com/golang/snappy v0.0.2 h1:aeE13tS0IiQgFjYdoL8qN3K1N2bXXtI6Vi51/y7BpMw= github.com/golang/snappy v0.0.2/go.mod h1:/XxbfmMg8lxefKM7IXC3fBNl/7bRcc72aCRzEWrmP2Q= +github.com/golang/snappy v0.0.3-0.20201103224600-674baa8c7fc3 h1:ur2rms48b3Ep1dxh7aUV2FZEQ8jEVO2F6ILKx8ofkAg= +github.com/golang/snappy v0.0.3-0.20201103224600-674baa8c7fc3/go.mod h1:/XxbfmMg8lxefKM7IXC3fBNl/7bRcc72aCRzEWrmP2Q= github.com/google/btree v0.0.0-20180813153112-4030bb1f1f0c/go.mod h1:lNA+9X1NB3Zf8V7Ke586lFgjr2dZNuvo3lPJSGZ5JPQ= github.com/google/btree v1.0.0 h1:0udJVsspx3VBr5FwtLhQQtuAsVc79tTq0ocGIPAU6qo= github.com/google/btree v1.0.0/go.mod h1:lNA+9X1NB3Zf8V7Ke586lFgjr2dZNuvo3lPJSGZ5JPQ= @@ -334,8 +383,11 @@ github.com/google/go-cmp v0.2.0/go.mod h1:oXzfMopK8JAjlY9xF4vHSVASa0yLyX7SntLO5a github.com/google/go-cmp v0.3.0/go.mod h1:8QqcDgzrUqlUb/G2PQTWiueGozuR1884gddMywk6iLU= github.com/google/go-cmp v0.3.1/go.mod h1:8QqcDgzrUqlUb/G2PQTWiueGozuR1884gddMywk6iLU= github.com/google/go-cmp v0.4.0/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/gNBxE= +github.com/google/go-cmp v0.4.1/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/gNBxE= github.com/google/go-cmp v0.5.0/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/gNBxE= +github.com/google/go-cmp v0.5.1/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/gNBxE= github.com/google/go-cmp v0.5.2/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/gNBxE= +github.com/google/go-cmp v0.5.3/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/gNBxE= github.com/google/go-cmp v0.5.4/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/gNBxE= github.com/google/go-cmp v0.5.5 h1:Khx7svrCpmxxtHBq5j2mp/xVjsi8hQMfNLvJFAlrGgU= github.com/google/go-cmp v0.5.5/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/gNBxE= @@ -345,11 +397,21 @@ github.com/google/gofuzz v1.1.0/go.mod h1:dBl0BpW6vV/+mYPU4Po3pmUjxk6FQPldtuIdl/ github.com/google/gofuzz v1.1.1-0.20200604201612-c04b05f3adfa h1:Q75Upo5UN4JbPFURXZ8nLKYUvF85dyFRop/vQ0Rv+64= github.com/google/gofuzz v1.1.1-0.20200604201612-c04b05f3adfa/go.mod h1:dBl0BpW6vV/+mYPU4Po3pmUjxk6FQPldtuIdl/M65Eg= github.com/google/martian v2.1.0+incompatible/go.mod h1:9I4somxYTbIHy5NJKHRl3wXiIaQGbYVAs8BPL6v8lEs= +github.com/google/martian/v3 v3.0.0/go.mod h1:y5Zk1BBys9G+gd6Jrk0W3cC1+ELVxBWuIGO+w/tUAp0= +github.com/google/martian/v3 v3.1.0/go.mod h1:y5Zk1BBys9G+gd6Jrk0W3cC1+ELVxBWuIGO+w/tUAp0= github.com/google/orderedcode v0.0.1 h1:UzfcAexk9Vhv8+9pNOgRu41f16lHq725vPwnSeiG/Us= github.com/google/orderedcode v0.0.1/go.mod h1:iVyU4/qPKHY5h/wSd6rZZCDcLJNxiWO6dvsYES2Sb20= github.com/google/pprof v0.0.0-20181206194817-3ea8567a2e57/go.mod h1:zfwlbNMJ+OItoe0UupaVj+oy1omPYYDuagoSzA8v9mc= github.com/google/pprof v0.0.0-20190515194954-54271f7e092f/go.mod h1:zfwlbNMJ+OItoe0UupaVj+oy1omPYYDuagoSzA8v9mc= github.com/google/pprof v0.0.0-20191218002539-d4f498aebedc/go.mod h1:ZgVRPoUq/hfqzAqh7sHMqb3I9Rq5C59dIz2SbBwJ4eM= +github.com/google/pprof v0.0.0-20200212024743-f11f1df84d12/go.mod h1:ZgVRPoUq/hfqzAqh7sHMqb3I9Rq5C59dIz2SbBwJ4eM= +github.com/google/pprof v0.0.0-20200229191704-1ebb73c60ed3/go.mod h1:ZgVRPoUq/hfqzAqh7sHMqb3I9Rq5C59dIz2SbBwJ4eM= +github.com/google/pprof v0.0.0-20200430221834-fc25d7d30c6d/go.mod h1:ZgVRPoUq/hfqzAqh7sHMqb3I9Rq5C59dIz2SbBwJ4eM= +github.com/google/pprof v0.0.0-20200708004538-1a94d8640e99/go.mod h1:ZgVRPoUq/hfqzAqh7sHMqb3I9Rq5C59dIz2SbBwJ4eM= +github.com/google/pprof v0.0.0-20201023163331-3e6fc7fc9c4c/go.mod h1:kpwsk12EmLew5upagYY7GY0pfYCcupk39gWOCRROcvE= +github.com/google/pprof v0.0.0-20201203190320-1bf35d6f28c2/go.mod h1:kpwsk12EmLew5upagYY7GY0pfYCcupk39gWOCRROcvE= +github.com/google/pprof v0.0.0-20210122040257-d980be63207e/go.mod h1:kpwsk12EmLew5upagYY7GY0pfYCcupk39gWOCRROcvE= +github.com/google/pprof v0.0.0-20210226084205-cbba55b83ad5/go.mod h1:kpwsk12EmLew5upagYY7GY0pfYCcupk39gWOCRROcvE= github.com/google/renameio v0.1.0/go.mod h1:KWCgfxg9yswjAJkECMjeO8J8rahYeXnNhOm40UhjYkI= github.com/google/uuid v1.0.0/go.mod h1:TIyPZe4MgqvfeYDBFedMoGGpEw/LqOeaOT+nhxU+yHo= github.com/google/uuid v1.1.1/go.mod h1:TIyPZe4MgqvfeYDBFedMoGGpEw/LqOeaOT+nhxU+yHo= @@ -437,6 +499,7 @@ github.com/hudl/fargo v1.3.0/go.mod h1:y3CKSmjA+wD2gak7sUSXTAoopbhU08POFhmITJgmK github.com/huin/goupnp v1.0.0/go.mod h1:n9v9KO1tAxYH82qOn+UTIFQDmx5n1Zxd/ClZDMX7Bnc= github.com/huin/goutil v0.0.0-20170803182201-1ca381bf3150/go.mod h1:PpLOETDnJ0o3iZrZfqZzyLl6l7F3c6L1oWn7OICBi6o= github.com/ianlancetaylor/demangle v0.0.0-20181102032728-5e5cf60278f6/go.mod h1:aSSvb/t6k1mPoxDqO4vJh6VOCGPwU4O0C2/Eqndh1Sc= +github.com/ianlancetaylor/demangle v0.0.0-20200824232613-28f6c0f3b639/go.mod h1:aSSvb/t6k1mPoxDqO4vJh6VOCGPwU4O0C2/Eqndh1Sc= github.com/imdario/mergo v0.3.5 h1:JboBksRwiiAJWvIYJVo46AfV+IAIKZpfrSzVKj42R4Q= github.com/imdario/mergo v0.3.5/go.mod h1:2EnlNZ0deacrJVfApfmtdGgDfMuh/nq6Ok1EcJh5FfA= github.com/improbable-eng/grpc-web v0.14.0 h1:GdoK+cXABdB+1keuqsV1drSFO2XLYIxqt/4Rj8SWGBk= @@ -446,6 +509,7 @@ github.com/inconshreveable/mousetrap v1.0.0/go.mod h1:PxqpIevigyE2G7u3NXJIT2ANyt github.com/influxdata/influxdb v1.2.3-0.20180221223340-01288bdb0883/go.mod h1:qZna6X/4elxqT3yI9iZYdZrWWdeFOOprn86kgg4+IzY= github.com/influxdata/influxdb1-client v0.0.0-20191209144304-8bf82d3c094d/go.mod h1:qj24IKcXYK6Iy9ceXlo3Tc+vtHo9lIhSX5JddghvEPo= github.com/jackpal/go-nat-pmp v1.0.2-0.20160603034137-1fa385a6f458/go.mod h1:QPH045xvCAeXUZOxsnwmrtiCoxIr9eob+4orBN1SBKc= +github.com/jedisct1/go-minisign v0.0.0-20190909160543-45766022959e/go.mod h1:G1CVv03EnqU1wYL2dFwXxW2An0az9JTl/ZsqXQeBlkU= github.com/jessevdk/go-flags v0.0.0-20141203071132-1679536dcc89/go.mod h1:4FA24M0QyGHXBuZZK/XkWh8h0e1EYbRYJSGM75WSRxI= github.com/jessevdk/go-flags v1.4.0/go.mod h1:4FA24M0QyGHXBuZZK/XkWh8h0e1EYbRYJSGM75WSRxI= github.com/jhump/protoreflect v1.8.2 h1:k2xE7wcUomeqwY0LDCYA16y4WWfyTcMx5mKhk0d4ua0= @@ -461,8 +525,9 @@ github.com/json-iterator/go v1.1.6/go.mod h1:+SdeFBvtyEkXs7REEP0seUULqWtbJapLOCV github.com/json-iterator/go v1.1.7/go.mod h1:KdQUCv79m/52Kvf8AW2vK1V8akMuk1QjK/uOdHXbAo4= github.com/json-iterator/go v1.1.8/go.mod h1:KdQUCv79m/52Kvf8AW2vK1V8akMuk1QjK/uOdHXbAo4= github.com/json-iterator/go v1.1.9/go.mod h1:KdQUCv79m/52Kvf8AW2vK1V8akMuk1QjK/uOdHXbAo4= -github.com/json-iterator/go v1.1.10 h1:Kz6Cvnvv2wGdaG/V8yMvfkmNiXq9Ya2KUv4rouJJr68= github.com/json-iterator/go v1.1.10/go.mod h1:KdQUCv79m/52Kvf8AW2vK1V8akMuk1QjK/uOdHXbAo4= +github.com/json-iterator/go v1.1.11 h1:uVUAXhF2To8cbw/3xN3pxj6kk7TYKs98NIrTqPlMWAQ= +github.com/json-iterator/go v1.1.11/go.mod h1:KdQUCv79m/52Kvf8AW2vK1V8akMuk1QjK/uOdHXbAo4= github.com/jstemmer/go-junit-report v0.0.0-20190106144839-af01ea7f8024/go.mod h1:6v2b51hI/fHJwM22ozAgKL4VKDeJcHhJFhtBdhmNjmU= github.com/jstemmer/go-junit-report v0.9.1/go.mod h1:Brl9GWCQeLvo8nXZwPNNblvFj/XSXhF0NWZEnDohbsk= github.com/jtolds/gls v4.20.0+incompatible h1:xdiiI2gbIgH/gLH7ADydsJ1uDOEzR8yvV7C0MuV77Wo= @@ -509,6 +574,7 @@ github.com/mattn/go-colorable v0.0.9/go.mod h1:9vuHe8Xs5qXnSaW/c/ABM9alt+Vo+STaO github.com/mattn/go-colorable v0.1.0/go.mod h1:9vuHe8Xs5qXnSaW/c/ABM9alt+Vo+STaOChaDxuIBZU= github.com/mattn/go-colorable v0.1.4/go.mod h1:U0ppj6V5qS13XJ6of8GYAs25YV2eR4EVcfRqFIhoBtE= github.com/mattn/go-colorable v0.1.7/go.mod h1:u6P/XSegPjTcexA+o6vUJrdnUu04hMope9wVRipJSqc= +github.com/mattn/go-colorable v0.1.8/go.mod h1:u6P/XSegPjTcexA+o6vUJrdnUu04hMope9wVRipJSqc= github.com/mattn/go-ieproxy v0.0.0-20190610004146-91bb50d98149/go.mod h1:31jz6HNzdxOmlERGGEc4v/dMssOfmp2p5bT/okiKFFc= github.com/mattn/go-ieproxy v0.0.0-20190702010315-6dee0af9227d/go.mod h1:31jz6HNzdxOmlERGGEc4v/dMssOfmp2p5bT/okiKFFc= github.com/mattn/go-isatty v0.0.3/go.mod h1:M+lRXTBqGeGNdLjl/ufCoiOlB5xdOkqRJdNxMWT7Zi4= @@ -516,8 +582,9 @@ github.com/mattn/go-isatty v0.0.4/go.mod h1:M+lRXTBqGeGNdLjl/ufCoiOlB5xdOkqRJdNx github.com/mattn/go-isatty v0.0.5-0.20180830101745-3fb116b82035/go.mod h1:M+lRXTBqGeGNdLjl/ufCoiOlB5xdOkqRJdNxMWT7Zi4= github.com/mattn/go-isatty v0.0.8/go.mod h1:Iq45c/XA43vh69/j3iqttzPXn0bhXyGjM0Hdxcsrc5s= github.com/mattn/go-isatty v0.0.11/go.mod h1:PhnuNfih5lzO57/f3n+odYbM4JtupLOxQOAqxQCu2WE= -github.com/mattn/go-isatty v0.0.12 h1:wuysRhFDzyxgEmMf5xjvJ2M9dZoWAXNNr5LSBS7uHXY= github.com/mattn/go-isatty v0.0.12/go.mod h1:cbi8OIDigv2wuxKPP5vlRcQ1OAZbq2CE4Kysco4FUpU= +github.com/mattn/go-isatty v0.0.13 h1:qdl+GuBjcsKKDco5BsxPJlId98mSWNKqYA+Co0SC1yA= +github.com/mattn/go-isatty v0.0.13/go.mod h1:cbi8OIDigv2wuxKPP5vlRcQ1OAZbq2CE4Kysco4FUpU= github.com/mattn/go-runewidth v0.0.2/go.mod h1:LwmH8dsx7+W8Uxz3IHJYH5QSwggIsqBzpuz5H//U1FU= github.com/mattn/go-runewidth v0.0.3/go.mod h1:LwmH8dsx7+W8Uxz3IHJYH5QSwggIsqBzpuz5H//U1FU= github.com/mattn/go-runewidth v0.0.4/go.mod h1:LwmH8dsx7+W8Uxz3IHJYH5QSwggIsqBzpuz5H//U1FU= @@ -537,8 +604,9 @@ github.com/mitchellh/gox v0.4.0/go.mod h1:Sd9lOJ0+aimLBi73mGofS1ycjY8lL3uZM3JPS4 github.com/mitchellh/iochan v1.0.0/go.mod h1:JwYml1nuB7xOzsp52dPpHFffvOCDupsG0QubkSMEySY= github.com/mitchellh/mapstructure v0.0.0-20160808181253-ca63d7c062ee/go.mod h1:FVVH3fgwuzCH5S8UJGiWEs2h04kUh9fWfEaFds41c1Y= github.com/mitchellh/mapstructure v1.1.2/go.mod h1:FVVH3fgwuzCH5S8UJGiWEs2h04kUh9fWfEaFds41c1Y= -github.com/mitchellh/mapstructure v1.3.3 h1:SzB1nHZ2Xi+17FP0zVQBHIZqvwRN9408fJO8h+eeNA8= github.com/mitchellh/mapstructure v1.3.3/go.mod h1:bFUtVrKA4DC2yAKiSyO/QUcy7e+RRV2QTWOzhPopBRo= +github.com/mitchellh/mapstructure v1.4.1 h1:CpVNEelQCZBooIPDn+AR3NpivK/TIKU8bDxdASFVQag= +github.com/mitchellh/mapstructure v1.4.1/go.mod h1:bFUtVrKA4DC2yAKiSyO/QUcy7e+RRV2QTWOzhPopBRo= github.com/modern-go/concurrent v0.0.0-20180228061459-e0a39a4cb421/go.mod h1:6dJC0mAP4ikYIbvyc7fijjWJddQyLn8Ig3JB5CqoB9Q= github.com/modern-go/concurrent v0.0.0-20180306012644-bacd9c7ef1dd h1:TRLaZ9cD/w8PVh93nsPXa1VrQ6jlwL5oN8l14QlcNfg= github.com/modern-go/concurrent v0.0.0-20180306012644-bacd9c7ef1dd/go.mod h1:6dJC0mAP4ikYIbvyc7fijjWJddQyLn8Ig3JB5CqoB9Q= @@ -561,6 +629,7 @@ github.com/nats-io/nats.go v1.9.1/go.mod h1:ZjDU1L/7fJ09jvUSRVBR2e7+RnLiiIQyqyzE github.com/nats-io/nkeys v0.1.0/go.mod h1:xpnFELMwJABBLVhffcfd1MZx6VsNRFpEugbxziKVo7w= github.com/nats-io/nkeys v0.1.3/go.mod h1:xpnFELMwJABBLVhffcfd1MZx6VsNRFpEugbxziKVo7w= github.com/nats-io/nuid v1.0.1/go.mod h1:19wcPz3Ph3q0Jbyiqsd0kePYG7A95tJPxeL+1OSON2c= +github.com/neilotoole/errgroup v0.1.5/go.mod h1:Q2nLGf+594h0CLBs/Mbg6qOr7GtqDK7C2S41udRnToE= github.com/niemeyer/pretty v0.0.0-20200227124842-a10e7caefd8e h1:fD57ERR4JtEqsWbfPhv4DMiApHyliiK5xCTNVSPiaAs= github.com/niemeyer/pretty v0.0.0-20200227124842-a10e7caefd8e/go.mod h1:zD1mROLANZcx1PVRCS0qkT7pwLkGfwJo4zjcN/Tysno= github.com/nishanths/predeclared v0.0.0-20200524104333-86fad755b4d3/go.mod h1:nt3d53pc1VYcphSCIaYAJtnPYnr3Zyn8fMq2wvPGPso= @@ -612,8 +681,9 @@ github.com/pascaldekloe/goe v0.1.0/go.mod h1:lzWF7FIEvWOWxwDKqyGYQf6ZUaNfKdP144T github.com/pborman/uuid v0.0.0-20170112150404-1b00554d8222/go.mod h1:VyrYX9gd7irzKovcSS6BIIEwPRkP2Wm2m9ufcdFSJ34= github.com/pborman/uuid v1.2.0/go.mod h1:X/NO0urCmaxf9VXbdlT7C2Yzkj2IKimNn4k+gtPdI/k= github.com/pelletier/go-toml v1.2.0/go.mod h1:5z9KED0ma1S8pY6P1sdut58dfprrGBbd/94hg7ilaic= -github.com/pelletier/go-toml v1.8.1 h1:1Nf83orprkJyknT6h7zbuEGUEjcyVlCxSUGTENmNCRM= github.com/pelletier/go-toml v1.8.1/go.mod h1:T2/BmBdy8dvIRq1a/8aqjN41wvWlN4lrapLU/GW4pbc= +github.com/pelletier/go-toml v1.9.3 h1:zeC5b1GviRUyKYd6OJPvBU/mcVDVoL1OhT17FCt5dSQ= +github.com/pelletier/go-toml v1.9.3/go.mod h1:u1nR/EPcESfeI/szUZKdtJ0xRNbUoANCkoOuaOx1Y+c= github.com/performancecopilot/speed v3.0.0+incompatible/go.mod h1:/CLtqpZ5gBg1M9iaPbIdPPGyKcA8hKdoy6hAWba7Yac= github.com/peterbourgon/diskv v2.0.1+incompatible/go.mod h1:uqqh8zWWbv1HBMNONnaR/tNboyR3/BZd58JJSHlUSCU= github.com/peterh/liner v1.1.1-0.20190123174540-a2c9a5303de7/go.mod h1:CRroGNssyjTd/qIG2FyxByd2S8JEAZXBl4qUrZf8GS0= @@ -639,8 +709,9 @@ github.com/prometheus/client_golang v1.3.0/go.mod h1:hJaj2vgQTGQmVCsAACORcieXFeD github.com/prometheus/client_golang v1.4.0/go.mod h1:e9GMxYsXl05ICDXkRhurwBS4Q3OK1iX/F2sw+iXX5zU= github.com/prometheus/client_golang v1.7.1/go.mod h1:PY5Wy2awLA44sXw4AOSfFBetzPP4j5+D6mVACh+pe2M= github.com/prometheus/client_golang v1.8.0/go.mod h1:O9VU6huf47PktckDQfMTX0Y8tY0/7TSWwj+ITvv0TnM= -github.com/prometheus/client_golang v1.10.0 h1:/o0BDeWzLWXNZ+4q5gXltUvaMpJqckTa+jTNoB+z4cg= github.com/prometheus/client_golang v1.10.0/go.mod h1:WJM3cc3yu7XKBKa/I8WeZm+V3eltZnBwfENSU7mdogU= +github.com/prometheus/client_golang v1.11.0 h1:HNkLOAEQMIDv/K+04rukrLx6ch7msSRwf3/SASFAGtQ= +github.com/prometheus/client_golang v1.11.0/go.mod h1:Z6t4BnS23TR94PD6BsDNk8yVqroYurpAkEiz0P2BEV0= github.com/prometheus/client_model v0.0.0-20180712105110-5c3871d89910/go.mod h1:MbSGuTsp3dbXC40dX6PRTWyKYBIrTGTE9sqQNg2J8bo= github.com/prometheus/client_model v0.0.0-20190115171406-56726106282f/go.mod h1:MbSGuTsp3dbXC40dX6PRTWyKYBIrTGTE9sqQNg2J8bo= github.com/prometheus/client_model v0.0.0-20190129233127-fd36f4220a90/go.mod h1:xMI15A0UPsDsEKsMN9yxemIoYk6Tm2C1GtYGdfGttqA= @@ -657,8 +728,10 @@ github.com/prometheus/common v0.9.1/go.mod h1:yhUN8i9wzaXS3w1O07YhxHEBxD+W35wd8b github.com/prometheus/common v0.10.0/go.mod h1:Tlit/dnDKsSWFlCLTWaA1cyBgKHSMdTB80sz/V91rCo= github.com/prometheus/common v0.14.0/go.mod h1:U+gB1OBLb1lF3O42bTCL+FK18tX9Oar16Clt/msog/s= github.com/prometheus/common v0.18.0/go.mod h1:U+gB1OBLb1lF3O42bTCL+FK18tX9Oar16Clt/msog/s= -github.com/prometheus/common v0.23.0 h1:GXWvPYuTUenIa+BhOq/x+L/QZzCqASkVRny5KTlPDGM= github.com/prometheus/common v0.23.0/go.mod h1:H6QK/N6XVT42whUeIdI3dp36w49c+/iMDk7UAI2qm7Q= +github.com/prometheus/common v0.26.0/go.mod h1:M7rCNAaPfAosfx8veZJCuw84e35h3Cfd9VFqTh1DIvc= +github.com/prometheus/common v0.29.0 h1:3jqPBvKT4OHAbje2Ql7KeaaSicDBCxMYwEJU1zRJceE= +github.com/prometheus/common v0.29.0/go.mod h1:vu+V0TpY+O6vW9J44gczi3Ap/oXXR10b+M/gUGO4Hls= github.com/prometheus/procfs v0.0.0-20181005140218-185b4288413d/go.mod h1:c3At6R/oaqEKCNdg8wHV1ftS6bRYblBhIjjI8uT2IGk= github.com/prometheus/procfs v0.0.0-20190117184657-bf6a532e95b1/go.mod h1:c3At6R/oaqEKCNdg8wHV1ftS6bRYblBhIjjI8uT2IGk= github.com/prometheus/procfs v0.0.0-20190507164030-5867b95ac084/go.mod h1:TjEm7ze935MbeOT/UhFTIMYKhuLP4wbCsTZCD3I8kEA= @@ -689,8 +762,9 @@ github.com/rs/cors v1.7.1-0.20191011001009-dcbccb712443 h1:UnXq+ihqH+nJzMBSIiuRt github.com/rs/cors v1.7.1-0.20191011001009-dcbccb712443/go.mod h1:gFx+x8UowdsKA9AchylcLynDq+nNFfI8FkUZdN/jGCU= github.com/rs/xhandler v0.0.0-20160618193221-ed27b6fd6521/go.mod h1:RvLn4FgxWubrpZHtQLnOf6EwhN2hEMusxZOhcW9H3UQ= github.com/rs/xid v1.2.1/go.mod h1:+uKXf+4Djp6Md1KODXJxgGQPKngRmWyn10oCKFzNHOQ= -github.com/rs/zerolog v1.21.0 h1:Q3vdXlfLNT+OftyBHsU0Y445MD+8m8axjKgf2si0QcM= github.com/rs/zerolog v1.21.0/go.mod h1:ZPhntP/xmq1nnND05hhpAh2QMhSsA4UN3MGZ6O2J3hM= +github.com/rs/zerolog v1.23.0 h1:UskrK+saS9P9Y789yNNulYKdARjPZuS35B8gJF2x60g= +github.com/rs/zerolog v1.23.0/go.mod h1:6c7hFfxPOy7TacJc4Fcdi24/J0NKYGzjG8FWRI916Qo= github.com/russross/blackfriday v1.5.2 h1:HyvC0ARfnZBqnXwABFeSZHpKvJHJJfPz81GNueLj0oo= github.com/russross/blackfriday v1.5.2/go.mod h1:JO/DiYxRf+HjHt06OyowR9PTA263kcR/rfWxYHBV53g= github.com/russross/blackfriday/v2 v2.0.1 h1:lPqVAte+HuHNfhJ/0LC98ESWRz8afy9tM/0RK8m9o+Q= @@ -703,6 +777,7 @@ github.com/sasha-s/go-deadlock v0.2.1-0.20190427202633-1595213edefa/go.mod h1:F7 github.com/satori/go.uuid v1.2.0 h1:0uYX9dsZ2yD7q2RtLRtPSdGDWzjeM3TbMJP9utgA0ww= github.com/satori/go.uuid v1.2.0/go.mod h1:dA0hQrYB0VpLJoorglMZABFdXlWrHn1NEOzdhQKdks0= github.com/sean-/seed v0.0.0-20170313163322-e2103e2c3529/go.mod h1:DxrIzT+xaE7yg65j358z/aeFdxmN0P9QXhEzd20vsDc= +github.com/segmentio/fasthash v1.0.3/go.mod h1:waKX8l2N8yckOgmSsXJi7x1ZfdKZ4x7KRMzBtS3oedY= github.com/shirou/gopsutil v2.20.5+incompatible/go.mod h1:5b4v6he4MtMOwMlS0TUMTu2PcXUg8+E1lC7eC3UO/RA= github.com/shopspring/decimal v1.2.0 h1:abSATXmQEYyShuxI4/vyW3tV1MrKAJzCZ/0zLUXYbsQ= github.com/shopspring/decimal v1.2.0/go.mod h1:DKyhrW/HYNuLGql+MJL6WCR6knT2jwCFRcu2hWCYk4o= @@ -723,8 +798,9 @@ github.com/spaolacci/murmur3 v1.1.0 h1:7c1g84S4BPRrfL5Xrdp6fOJ206sU9y293DDHaoy0b github.com/spaolacci/murmur3 v1.1.0/go.mod h1:JwIasOWyU6f++ZhiEuf87xNszmSA2myDM2Kzu9HwQUA= github.com/spf13/afero v1.1.2/go.mod h1:j4pytiNVoe2o6bmDsKpLACNPDBIoEAkihy7loJ1B0CQ= github.com/spf13/afero v1.2.2/go.mod h1:9ZxEEn6pIJ8Rxe320qSDBk6AsU0r9pR7Q4OcevTdifk= -github.com/spf13/afero v1.3.4 h1:8q6vk3hthlpb2SouZcnBVKboxWQWMDNF38bwholZrJc= github.com/spf13/afero v1.3.4/go.mod h1:Ai8FlHk4v/PARR026UzYexafAt9roJ7LcLMAmO6Z93I= +github.com/spf13/afero v1.6.0 h1:xoax2sJ2DT8S8xA2paPFjDCScCNeWsg75VG0DLRreiY= +github.com/spf13/afero v1.6.0/go.mod h1:Ai8FlHk4v/PARR026UzYexafAt9roJ7LcLMAmO6Z93I= github.com/spf13/cast v1.3.0/go.mod h1:Qx5cxh0v+4UWYiBimWS+eyWzqEqokIECu5etghLkUJE= github.com/spf13/cast v1.3.1 h1:nFm6S0SMdyzrzcmThSipiEubIDy8WEXKNZ0UOgiRpng= github.com/spf13/cast v1.3.1/go.mod h1:Qx5cxh0v+4UWYiBimWS+eyWzqEqokIECu5etghLkUJE= @@ -745,8 +821,9 @@ github.com/spf13/pflag v1.0.5/go.mod h1:McXfInJRrz4CZXVZOBLb0bTZqETkiAhM9Iw0y3An github.com/spf13/viper v1.3.2/go.mod h1:ZiWeW+zYFKm7srdB9IoDzzZXaJaI5eL9QjNiN/DMA2s= github.com/spf13/viper v1.4.0/go.mod h1:PTJ7Z/lr49W6bUbkmS1V3by4uWynFiR9p7+dSq/yZzE= github.com/spf13/viper v1.7.0/go.mod h1:8WkrPz2fc9jxqZNCJI/76HCieCp4Q8HaLFoCha5qpdg= -github.com/spf13/viper v1.7.1 h1:pM5oEahlgWv/WnHXpgbKz7iLIxRf65tye2Ci+XFK5sk= github.com/spf13/viper v1.7.1/go.mod h1:8WkrPz2fc9jxqZNCJI/76HCieCp4Q8HaLFoCha5qpdg= +github.com/spf13/viper v1.8.0 h1:QRwDgoG8xX+kp69di68D+YYTCWfYEckbZRfUlEIAal0= +github.com/spf13/viper v1.8.0/go.mod h1:o0Pch8wJ9BVSWGQMbra6iw0oQ5oktSIBaujf1rJH9Ns= github.com/status-im/keycard-go v0.0.0-20190316090335-8537d3370df4/go.mod h1:RZLeN1LMWmRsyYjvAu+I6Dm9QmlDaIIt+Y+4Kd7Tp+Q= github.com/steakknife/bloomfilter v0.0.0-20180922174646-6819c0d2a570/go.mod h1:8OR4w3TdeIHIh1g6EMY5p0gVNOovcWC+1vpc7naMuAw= github.com/steakknife/hamming v0.0.0-20180906055917-c99c65617cd3/go.mod h1:hpGUWaI9xL8pRQCTXQgocU38Qw1g0Us7n5PxxTwTCYU= @@ -761,6 +838,7 @@ github.com/stretchr/objx v0.2.1-0.20190415111823-35313a95ee26/go.mod h1:qt09Ya8v github.com/stretchr/testify v1.2.2/go.mod h1:a8OnRcib4nhh0OaRAV+Yts87kKdq0PP7pXfy6kDkUVs= github.com/stretchr/testify v1.3.0/go.mod h1:M5WIy9Dh21IEIfnGCwXGc5bZfKNJtfHm1UVUgZn+9EI= github.com/stretchr/testify v1.4.0/go.mod h1:j7eGeouHqKxXV5pUuKE4zz7dFj8WfuZ+81PSLYec5m4= +github.com/stretchr/testify v1.5.1/go.mod h1:5W2xD1RspED5o8YsWQXVCued0rvSQ+mT+I5cxcmMvtA= github.com/stretchr/testify v1.6.1/go.mod h1:6Fq8oRcR53rry900zMqJjRRixrwX3KX962/h/Wwjteg= github.com/stretchr/testify v1.7.0 h1:nwc3DEeHmmLAfoZucVR881uASk0Mfjw8xYJ99tb5CcY= github.com/stretchr/testify v1.7.0/go.mod h1:6Fq8oRcR53rry900zMqJjRRixrwX3KX962/h/Wwjteg= @@ -773,7 +851,6 @@ github.com/tecbot/gorocksdb v0.0.0-20191217155057-f0fad39f321c h1:g+WoO5jjkqGAzH github.com/tecbot/gorocksdb v0.0.0-20191217155057-f0fad39f321c/go.mod h1:ahpPrc7HpcfEWDQRZEmnXMzHY03mLDYMCxeDzy46i+8= github.com/tendermint/btcd v0.1.1 h1:0VcxPfflS2zZ3RiOAHkBiFUcPvbtRj5O7zHmcJWHV7s= github.com/tendermint/btcd v0.1.1/go.mod h1:DC6/m53jtQzr/NFmMNEu0rxf18/ktVoVtMrnDD5pN+U= -github.com/tendermint/cosmos-rosetta-gateway v0.3.0-rc2.0.20210304154332-87d6ca4410df h1:hoMLrOS4WyyMM+Y+iWdGu94o0zzp6Q43y7v89Q1/OIw= github.com/tendermint/cosmos-rosetta-gateway v0.3.0-rc2.0.20210304154332-87d6ca4410df/go.mod h1:gBPw8WV2Erm4UGHlBRiM3zaEBst4bsuihmMCNQdgP/s= github.com/tendermint/crypto v0.0.0-20191022145703-50d29ede1e15 h1:hqAk8riJvK4RMWx1aInLzndwxKalgi5rTqgfXxOxbEI= github.com/tendermint/crypto v0.0.0-20191022145703-50d29ede1e15/go.mod h1:z4YtwM70uOnk8h0pjJYlj3zdYwi9l03By6iAIF5j/Pk= @@ -782,22 +859,27 @@ github.com/tendermint/go-amino v0.16.0/go.mod h1:TQU0M1i/ImAo+tYpZi73AU3V/dKeCoM github.com/tendermint/tendermint v0.34.0-rc4/go.mod h1:yotsojf2C1QBOw4dZrTcxbyxmPUrT4hNuOQWX9XUwB4= github.com/tendermint/tendermint v0.34.0-rc6/go.mod h1:ugzyZO5foutZImv0Iyx/gOFCX6mjJTgbLHTwi17VDVg= github.com/tendermint/tendermint v0.34.0/go.mod h1:Aj3PIipBFSNO21r+Lq3TtzQ+uKESxkbA3yo/INM4QwQ= -github.com/tendermint/tendermint v0.34.10 h1:wBOc/It8sh/pVH9np2V5fBvRmIyFN/bUrGPx+eAHexs= github.com/tendermint/tendermint v0.34.10/go.mod h1:aeHL7alPh4uTBIJQ8mgFEE8VwJLXI1VD3rVOmH2Mcy0= +github.com/tendermint/tendermint v0.34.11 h1:q1Yh76oG4QbS07xhmIJh5iAE0fYpJ8P8YKYtjnWfJRY= +github.com/tendermint/tendermint v0.34.11/go.mod h1:aeHL7alPh4uTBIJQ8mgFEE8VwJLXI1VD3rVOmH2Mcy0= github.com/tendermint/tm-db v0.6.2/go.mod h1:GYtQ67SUvATOcoY8/+x6ylk8Qo02BQyLrAs+yAcLvGI= github.com/tendermint/tm-db v0.6.3/go.mod h1:lfA1dL9/Y/Y8wwyPp2NMLyn5P5Ptr/gvDFNWtrCWSf8= github.com/tendermint/tm-db v0.6.4 h1:3N2jlnYQkXNQclQwd/eKV/NzlqPlfK21cpRRIx80XXQ= github.com/tendermint/tm-db v0.6.4/go.mod h1:dptYhIpJ2M5kUuenLr+Yyf3zQOv1SgBZcl8/BmWlMBw= github.com/tidwall/gjson v1.6.1/go.mod h1:BaHyNc5bjzYkPqgLq7mdVzeiRtULKULXLgZFKsxEHI0= +github.com/tidwall/gjson v1.6.7/go.mod h1:zeFuBCIqD4sN/gmqBzZ4j7Jd6UcA2Fc56x7QFsv+8fI= github.com/tidwall/match v1.0.1/go.mod h1:LujAq0jyVjBy028G1WhWfIzbpQfMO8bBZ6Tyb0+pL9E= +github.com/tidwall/match v1.0.3/go.mod h1:eRSPERbgtNPcGhD8UCthc6PmLEQXEWd3PRB5JTxsfmM= github.com/tidwall/pretty v1.0.2/go.mod h1:XNkn88O1ChpSDQmQeStsy+sBenx6DDtFZJxhVysOjyk= github.com/tidwall/sjson v1.1.2/go.mod h1:SEzaDwxiPzKzNfUEO4HbYF/m4UCSJDsGgNqsS1LvdoY= +github.com/tidwall/sjson v1.1.4/go.mod h1:wXpKXu8CtDjKAZ+3DrKY5ROCorDFahq8l0tey/Lx1fg= github.com/tmc/grpc-websocket-proxy v0.0.0-20170815181823-89b8d40f7ca8/go.mod h1:ncp9v5uamzpCO7NfCPTXjqaC+bZgJeR0sMTm6dMHP7U= github.com/tmc/grpc-websocket-proxy v0.0.0-20190109142713-0ad062ec5ee5/go.mod h1:ncp9v5uamzpCO7NfCPTXjqaC+bZgJeR0sMTm6dMHP7U= github.com/troian/hid v0.9.9 h1:5cSdziibXdFwmcP80t00SbHW+YDCFGTqNHqzH1qt6TI= github.com/troian/hid v0.9.9/go.mod h1:n6adloQ1876oEXZr6fFsthy4FDHxwJhh7QYQspm30Ds= github.com/tv42/httpunix v0.0.0-20150427012821-b75d8614f926/go.mod h1:9ESjWnEqriFuLhtthL60Sar/7RFoluCcXsuvEwTV5KM= github.com/tyler-smith/go-bip39 v1.0.1-0.20181017060643-dbb3b84ba2ef/go.mod h1:sJ5fKU0s6JVwZjjcUEX2zFOnvq0ASQ2K9Zr6cf67kNs= +github.com/tyler-smith/go-bip39 v1.0.2/go.mod h1:sJ5fKU0s6JVwZjjcUEX2zFOnvq0ASQ2K9Zr6cf67kNs= github.com/ugorji/go v1.1.4/go.mod h1:uQMGLiO92mf5W77hV/PUCpI3pbzQx3CRekS0kk+RGrc= github.com/ugorji/go v1.1.7 h1:/68gy2h+1mWMrwZFeD1kQialdSzAb432dtpeJ42ovdo= github.com/ugorji/go v1.1.7/go.mod h1:kZn38zHttfInRq0xu/PH0az30d+z6vm202qpg1oXVMw= @@ -807,41 +889,57 @@ github.com/ugorji/go/codec v1.1.7/go.mod h1:Ax+UKWsSmolVDwsd+7N3ZtXu+yMGCf907BLY github.com/urfave/cli v1.20.0/go.mod h1:70zkFmudgCuE/ngEzBv17Jvp/497gISqfk5gWijbERA= github.com/urfave/cli v1.22.1/go.mod h1:Gos4lmkARVdJ6EkW0WaNv/tZAAMe9V7XWyB60NtXRu0= github.com/vmihailenco/msgpack/v5 v5.0.0-beta.9/go.mod h1:HVxBVPUK/+fZMonk4bi1islLa8V3cfnBug0+4dykPzo= +github.com/vmihailenco/msgpack/v5 v5.1.4/go.mod h1:C5gboKD0TJPqWDTVTtrQNfRbiBwHZGo8UTqP/9/XvLI= github.com/vmihailenco/tagparser v0.1.2/go.mod h1:OeAg3pn3UbLjkWt+rN9oFYB6u/cQgqMEUPoW2WPyhdI= github.com/wsddn/go-ecdh v0.0.0-20161211032359-48726bab9208/go.mod h1:IotVbo4F+mw0EzQ08zFqg7pK3FebNXpaMsRy2RT+Ees= github.com/xiang90/probing v0.0.0-20190116061207-43a291ad63a2/go.mod h1:UETIi67q53MR2AWcXfiuqkDkRtnGDLqkBTpCHuJHxtU= github.com/xordataexchange/crypt v0.0.3-0.20170626215501-b2862e3d0a77/go.mod h1:aYKd//L2LvnjZzWKhF00oedf4jCCReLcmhLdhm1A27Q= +github.com/ybbus/jsonrpc v2.1.2+incompatible/go.mod h1:XJrh1eMSzdIYFbM08flv0wp5G35eRniyeGut1z+LSiE= +github.com/yuin/goldmark v1.1.25/go.mod h1:3hX8gzYuyVAZsxl0MRgGTJEmQBFcNTphYh9decYSb74= github.com/yuin/goldmark v1.1.27/go.mod h1:3hX8gzYuyVAZsxl0MRgGTJEmQBFcNTphYh9decYSb74= github.com/yuin/goldmark v1.1.32/go.mod h1:3hX8gzYuyVAZsxl0MRgGTJEmQBFcNTphYh9decYSb74= github.com/yuin/goldmark v1.2.1/go.mod h1:3hX8gzYuyVAZsxl0MRgGTJEmQBFcNTphYh9decYSb74= +github.com/yuin/goldmark v1.3.5/go.mod h1:mwnBkeHKe2W/ZEtQ+71ViKU8L12m81fl3OWwC1Zlc8k= go.etcd.io/bbolt v1.3.2/go.mod h1:IbVyRI1SCnLcuJnV2u8VeU0CEYM7e686BmAb1XKL+uU= go.etcd.io/bbolt v1.3.3/go.mod h1:IbVyRI1SCnLcuJnV2u8VeU0CEYM7e686BmAb1XKL+uU= go.etcd.io/bbolt v1.3.5 h1:XAzx9gjCb0Rxj7EoqcClPD1d5ZBxZJk0jbuoPHenBt0= go.etcd.io/bbolt v1.3.5/go.mod h1:G5EMThwa9y8QZGBClrRx5EY+Yw9kAhnjy3bSjsnlVTQ= go.etcd.io/etcd v0.0.0-20191023171146-3cf2f69b5738/go.mod h1:dnLIgRNXwCJa5e+c6mIZCrds/GIG4ncV9HhK5PX7jPg= +go.etcd.io/etcd/api/v3 v3.5.0/go.mod h1:cbVKeC6lCfl7j/8jBhAK6aIYO9XOjdptoxU/nLQcPvs= +go.etcd.io/etcd/client/pkg/v3 v3.5.0/go.mod h1:IJHfcCEKxYu1Os13ZdwCwIUTUVGYTSAM3YSwc9/Ac1g= +go.etcd.io/etcd/client/v2 v2.305.0/go.mod h1:h9puh54ZTgAKtEbut2oe9P4L/oqKCVB6xsXlzd7alYQ= go.opencensus.io v0.20.1/go.mod h1:6WKK9ahsWS3RSO+PY9ZHZUfv2irvY6gN279GOPZjmmk= go.opencensus.io v0.20.2/go.mod h1:6WKK9ahsWS3RSO+PY9ZHZUfv2irvY6gN279GOPZjmmk= go.opencensus.io v0.21.0/go.mod h1:mSImk1erAIZhrmZN+AvHh14ztQfjbGwt4TtuofqLduU= go.opencensus.io v0.22.0/go.mod h1:+kGneAE2xo2IficOXnaByMWTGM9T73dGwxeWcUqIpI8= go.opencensus.io v0.22.2/go.mod h1:yxeiOL68Rb0Xd1ddK5vPZ/oVn4vY4Ynel7k9FzqtOIw= +go.opencensus.io v0.22.3/go.mod h1:yxeiOL68Rb0Xd1ddK5vPZ/oVn4vY4Ynel7k9FzqtOIw= +go.opencensus.io v0.22.4/go.mod h1:yxeiOL68Rb0Xd1ddK5vPZ/oVn4vY4Ynel7k9FzqtOIw= +go.opencensus.io v0.22.5/go.mod h1:5pWMHQbX5EPX2/62yrJeAkowc+lfs/XD7Uxpq3pI6kk= +go.opencensus.io v0.23.0/go.mod h1:XItmlyltB5F7CS4xOC1DcqMoFqwtC6OG2xF7mCv7P7E= go.uber.org/atomic v1.3.2/go.mod h1:gD2HeocX3+yG+ygLZcrzQJaqmWj9AIm7n08wl/qW/PE= go.uber.org/atomic v1.4.0/go.mod h1:gD2HeocX3+yG+ygLZcrzQJaqmWj9AIm7n08wl/qW/PE= go.uber.org/atomic v1.5.0/go.mod h1:sABNBOSYdrvTF6hTgEIbc7YasKWGhgEQZyfxyTvoXHQ= +go.uber.org/atomic v1.7.0/go.mod h1:fEN4uk6kAWBTFdckzkM89CLk9XfWZrxpCo0nPH17wJc= go.uber.org/multierr v1.1.0/go.mod h1:wR5kodmAFQ0UK8QlbwjlSNy0Z68gJhDJUG5sjR94q/0= go.uber.org/multierr v1.3.0/go.mod h1:VgVr7evmIr6uPjLBxg28wmKNXyqE9akIJ5XnfpiKl+4= +go.uber.org/multierr v1.6.0/go.mod h1:cdWPpRnG4AhwMwsgIHip0KRBQjJy5kYEpYjJxpXp9iU= go.uber.org/tools v0.0.0-20190618225709-2cfd321de3ee/go.mod h1:vJERXedbb3MVM5f9Ejo0C68/HhF8uaILCdgjnY+goOA= go.uber.org/zap v1.10.0/go.mod h1:vwi/ZaCAaUcBkycHslxD9B2zi4UTXhF60s6SWpuDF0Q= go.uber.org/zap v1.13.0/go.mod h1:zwrFLgMcdUuIBviXEYEH1YKNaOBnKXsx2IPda5bBwHM= +go.uber.org/zap v1.17.0/go.mod h1:MXVU+bhUf/A7Xi2HNOnopQOrmycQ5Ih87HtOu4q5SSo= 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= golang.org/x/crypto v0.0.0-20181203042331-505ab145d0a9/go.mod h1:6SG95UA2DQfeDnfUPMdvaQW0Q7yPrPDi9nlGo2tz2b4= golang.org/x/crypto v0.0.0-20190308221718-c2843e01d9a2/go.mod h1:djNgcEr1/C05ACkg1iLfiJU5Ep61QUkGW8qpdssI0+w= +golang.org/x/crypto v0.0.0-20190426145343-a29dc8fdc734/go.mod h1:yigFU9vqHzYiE8UmvKecakEJjdnWj3jj499lnFckfCI= golang.org/x/crypto v0.0.0-20190510104115-cbcb75029529/go.mod h1:yigFU9vqHzYiE8UmvKecakEJjdnWj3jj499lnFckfCI= golang.org/x/crypto v0.0.0-20190605123033-f99c8df09eb5/go.mod h1:yigFU9vqHzYiE8UmvKecakEJjdnWj3jj499lnFckfCI= golang.org/x/crypto v0.0.0-20190611184440-5c40567a22f8/go.mod h1:yigFU9vqHzYiE8UmvKecakEJjdnWj3jj499lnFckfCI= golang.org/x/crypto v0.0.0-20190701094942-4def268fd1a4/go.mod h1:yigFU9vqHzYiE8UmvKecakEJjdnWj3jj499lnFckfCI= golang.org/x/crypto v0.0.0-20190820162420-60c769a6c586/go.mod h1:yigFU9vqHzYiE8UmvKecakEJjdnWj3jj499lnFckfCI= +golang.org/x/crypto v0.0.0-20190909091759-094676da4a83/go.mod h1:yigFU9vqHzYiE8UmvKecakEJjdnWj3jj499lnFckfCI= golang.org/x/crypto v0.0.0-20191011191535-87dc89f01550/go.mod h1:yigFU9vqHzYiE8UmvKecakEJjdnWj3jj499lnFckfCI= golang.org/x/crypto v0.0.0-20191206172530-e9b2fee46413/go.mod h1:LzIPMQfyMNhhGPhUkYOs5KpL4U8rLKemX1yGLhDgUto= golang.org/x/crypto v0.0.0-20200115085410-6d4e4cb37c7d/go.mod h1:LzIPMQfyMNhhGPhUkYOs5KpL4U8rLKemX1yGLhDgUto= @@ -860,7 +958,11 @@ golang.org/x/exp v0.0.0-20190510132918-efd6b22b2522/go.mod h1:ZjyILWgesfNpC6sMxT golang.org/x/exp v0.0.0-20190731235908-ec7cb31e5a56/go.mod h1:JhuoJpWY28nO4Vef9tZUw9qufEGTyX1+7lmHxV5q5G4= golang.org/x/exp v0.0.0-20190829153037-c13cbed26979/go.mod h1:86+5VVa7VpoJ4kLfm080zCjGlMRFzhUhsZKEZO7MGek= golang.org/x/exp v0.0.0-20191030013958-a1ab85dbe136/go.mod h1:JXzH8nQsPlswgeRAPE3MuO9GYsAcnJvJ4vnMwN/5qkY= +golang.org/x/exp v0.0.0-20191129062945-2f5052295587/go.mod h1:2RIsYlXP63K8oxa1u096TMicItID8zy7Y6sNkU49FU4= golang.org/x/exp v0.0.0-20191227195350-da58074b4299/go.mod h1:2RIsYlXP63K8oxa1u096TMicItID8zy7Y6sNkU49FU4= +golang.org/x/exp v0.0.0-20200119233911-0405dc783f0a/go.mod h1:2RIsYlXP63K8oxa1u096TMicItID8zy7Y6sNkU49FU4= +golang.org/x/exp v0.0.0-20200207192155-f17229e696bd/go.mod h1:J/WKrq2StrnmMY6+EHIKF9dgMWnmCNThgcyBT1FY9mM= +golang.org/x/exp v0.0.0-20200224162631-6cc2880d07d6/go.mod h1:3jZMyOhIsHpP37uCMkUooju7aAi5cS1Q23tOzKc+0MU= golang.org/x/exp v0.0.0-20200331195152-e8c3332aa8e5/go.mod h1:4M0jN8W1tt0AVLNr8HDosyJCDCDuyL9N9+3m7wDWgKw= golang.org/x/image v0.0.0-20190227222117-0694c2d4d067/go.mod h1:kZ7UVZpmo3dzQBMxlp+ypCbDeSB+sBbTgSJuh5dn5js= golang.org/x/image v0.0.0-20190802002840-cff245a6509b/go.mod h1:FeLwcggjj3mMvU+oOTbSwawSJRM1uh48EjtB4UJZlP0= @@ -871,6 +973,10 @@ golang.org/x/lint v0.0.0-20190409202823-959b441ac422/go.mod h1:6SW0HCj/g11FgYtHl golang.org/x/lint v0.0.0-20190909230951-414d861bb4ac/go.mod h1:6SW0HCj/g11FgYtHlgUYUwCkIfeOF89ocIRzGO/8vkc= golang.org/x/lint v0.0.0-20190930215403-16217165b5de/go.mod h1:6SW0HCj/g11FgYtHlgUYUwCkIfeOF89ocIRzGO/8vkc= golang.org/x/lint v0.0.0-20191125180803-fdd1cda4f05f/go.mod h1:5qLYkcX4OjUUV8bRuDixDT3tpyyb+LUpUlRWLxfhWrs= +golang.org/x/lint v0.0.0-20200130185559-910be7a94367/go.mod h1:3xt1FjdF8hUf6vQPIChWIBhFzV8gjjsPE/fR3IyQdNY= +golang.org/x/lint v0.0.0-20200302205851-738671d3881b/go.mod h1:3xt1FjdF8hUf6vQPIChWIBhFzV8gjjsPE/fR3IyQdNY= +golang.org/x/lint v0.0.0-20201208152925-83fdc39ff7b5/go.mod h1:3xt1FjdF8hUf6vQPIChWIBhFzV8gjjsPE/fR3IyQdNY= +golang.org/x/lint v0.0.0-20210508222113-6edffad5e616/go.mod h1:3xt1FjdF8hUf6vQPIChWIBhFzV8gjjsPE/fR3IyQdNY= golang.org/x/mobile v0.0.0-20190312151609-d3739f865fa6/go.mod h1:z+o9i4GpDbdi3rU15maQ/Ox0txvL9dWGYEHz965HBQE= golang.org/x/mobile v0.0.0-20190719004257-d2bd2a29d028/go.mod h1:E/iHnbuqvinMTCcRqshq8CkpyQDoeVncDDYHnLhea+o= golang.org/x/mobile v0.0.0-20200801112145-973feb4309de/go.mod h1:skQtrUTUwhdJvXM/2KKJzY8pDgNr9I/FOMqDVRPBUS4= @@ -880,8 +986,11 @@ golang.org/x/mod v0.1.1-0.20191105210325-c90efee705ee/go.mod h1:QqPTAvyqsEbceGzB golang.org/x/mod v0.1.1-0.20191107180719-034126e5016b/go.mod h1:QqPTAvyqsEbceGzBzNggFXnrqF1CaUcvgkdR5Ot7KZg= golang.org/x/mod v0.1.1-0.20191209134235-331c550502dd/go.mod h1:s0Qsj1ACt9ePp/hMypM3fl4fZqREWJwdYDEqhRiZZUA= golang.org/x/mod v0.2.0/go.mod h1:s0Qsj1ACt9ePp/hMypM3fl4fZqREWJwdYDEqhRiZZUA= -golang.org/x/mod v0.3.0 h1:RM4zey1++hCTbCVQfnWeKs9/IEsaBLA8vTkd0WVtmH4= golang.org/x/mod v0.3.0/go.mod h1:s0Qsj1ACt9ePp/hMypM3fl4fZqREWJwdYDEqhRiZZUA= +golang.org/x/mod v0.4.0/go.mod h1:s0Qsj1ACt9ePp/hMypM3fl4fZqREWJwdYDEqhRiZZUA= +golang.org/x/mod v0.4.1/go.mod h1:s0Qsj1ACt9ePp/hMypM3fl4fZqREWJwdYDEqhRiZZUA= +golang.org/x/mod v0.4.2 h1:Gz96sIWK3OalVv/I/qNygP42zyoKp3xptRVCWRFEBvo= +golang.org/x/mod v0.4.2/go.mod h1:s0Qsj1ACt9ePp/hMypM3fl4fZqREWJwdYDEqhRiZZUA= golang.org/x/net v0.0.0-20180719180050-a680a1efc54d/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= golang.org/x/net v0.0.0-20180724234803-3673e40ba225/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= golang.org/x/net v0.0.0-20180906233101-161cd47e91fd/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= @@ -901,37 +1010,65 @@ golang.org/x/net v0.0.0-20190522155817-f3200d17e092/go.mod h1:HSz+uSET+XFnRR8LxR golang.org/x/net v0.0.0-20190603091049-60506f45cf65/go.mod h1:HSz+uSET+XFnRR8LxR5pz3Of3rY3CfYBVs4xY44aLks= golang.org/x/net v0.0.0-20190613194153-d28f0bde5980/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= golang.org/x/net v0.0.0-20190620200207-3b0461eec859/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= +golang.org/x/net v0.0.0-20190628185345-da137c7871d7/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= +golang.org/x/net v0.0.0-20190724013045-ca1201d0de80/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= golang.org/x/net v0.0.0-20190813141303-74dc4d7220e7/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= golang.org/x/net v0.0.0-20190827160401-ba9fcec4b297/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= golang.org/x/net v0.0.0-20191002035440-2ec189313ef0/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= golang.org/x/net v0.0.0-20191209160850-c0dbc17a3553/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= +golang.org/x/net v0.0.0-20200114155413-6afb5195e5aa/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= +golang.org/x/net v0.0.0-20200202094626-16171245cfb2/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= +golang.org/x/net v0.0.0-20200222125558-5a598a2470a0/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= golang.org/x/net v0.0.0-20200226121028-0de0cce0169b/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= +golang.org/x/net v0.0.0-20200301022130-244492dfa37a/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= golang.org/x/net v0.0.0-20200324143707-d3edc9973b7e/go.mod h1:qpuaurCH72eLCgpAm/N6yyVIVM9cpaDIP3A8BGJEC5A= golang.org/x/net v0.0.0-20200421231249-e086a090c8fd/go.mod h1:qpuaurCH72eLCgpAm/N6yyVIVM9cpaDIP3A8BGJEC5A= +golang.org/x/net v0.0.0-20200501053045-e0ff5e5a1de5/go.mod h1:qpuaurCH72eLCgpAm/N6yyVIVM9cpaDIP3A8BGJEC5A= +golang.org/x/net v0.0.0-20200506145744-7e3656a0809f/go.mod h1:qpuaurCH72eLCgpAm/N6yyVIVM9cpaDIP3A8BGJEC5A= +golang.org/x/net v0.0.0-20200513185701-a91f0712d120/go.mod h1:qpuaurCH72eLCgpAm/N6yyVIVM9cpaDIP3A8BGJEC5A= golang.org/x/net v0.0.0-20200520004742-59133d7f0dd7/go.mod h1:qpuaurCH72eLCgpAm/N6yyVIVM9cpaDIP3A8BGJEC5A= +golang.org/x/net v0.0.0-20200520182314-0ba52f642ac2/go.mod h1:qpuaurCH72eLCgpAm/N6yyVIVM9cpaDIP3A8BGJEC5A= golang.org/x/net v0.0.0-20200625001655-4c5254603344/go.mod h1:/O7V0waA8r7cgGh81Ro3o1hOxt32SMVPicZroKQ2sZA= golang.org/x/net v0.0.0-20200707034311-ab3426394381/go.mod h1:/O7V0waA8r7cgGh81Ro3o1hOxt32SMVPicZroKQ2sZA= golang.org/x/net v0.0.0-20200813134508-3edf25e44fcc/go.mod h1:/O7V0waA8r7cgGh81Ro3o1hOxt32SMVPicZroKQ2sZA= golang.org/x/net v0.0.0-20200822124328-c89045814202/go.mod h1:/O7V0waA8r7cgGh81Ro3o1hOxt32SMVPicZroKQ2sZA= golang.org/x/net v0.0.0-20200904194848-62affa334b73/go.mod h1:/O7V0waA8r7cgGh81Ro3o1hOxt32SMVPicZroKQ2sZA= -golang.org/x/net v0.0.0-20201021035429-f5854403a974 h1:IX6qOQeG5uLjB/hjjwjedwfjND0hgjPMMyO1RoIXQNI= golang.org/x/net v0.0.0-20201021035429-f5854403a974/go.mod h1:sp8m0HH+o8qH0wwXwYZr8TS3Oi6o0r6Gce1SSxlDquU= +golang.org/x/net v0.0.0-20201031054903-ff519b6c9102/go.mod h1:sp8m0HH+o8qH0wwXwYZr8TS3Oi6o0r6Gce1SSxlDquU= +golang.org/x/net v0.0.0-20201110031124-69a78807bb2b/go.mod h1:sp8m0HH+o8qH0wwXwYZr8TS3Oi6o0r6Gce1SSxlDquU= +golang.org/x/net v0.0.0-20201209123823-ac852fbbde11/go.mod h1:m0MpNAwzfU5UDzcl9v0D8zg8gWTRqZa9RBIspLL5mdg= +golang.org/x/net v0.0.0-20210119194325-5f4716e94777/go.mod h1:m0MpNAwzfU5UDzcl9v0D8zg8gWTRqZa9RBIspLL5mdg= +golang.org/x/net v0.0.0-20210226172049-e18ecbb05110/go.mod h1:m0MpNAwzfU5UDzcl9v0D8zg8gWTRqZa9RBIspLL5mdg= +golang.org/x/net v0.0.0-20210316092652-d523dce5a7f4/go.mod h1:RBQZq4jEuRlivfhVLdyRGr576XBO4/greRjx4P4O3yc= +golang.org/x/net v0.0.0-20210405180319-a5a99cb37ef4/go.mod h1:p54w0d4576C0XHj96bSt6lcn1PtDYWL6XObtHCRCNQM= +golang.org/x/net v0.0.0-20210525063256-abc453219eb5 h1:wjuX4b5yYQnEQHzd+CBcrcC6OVR2J1CN6mUy0oSxIPo= +golang.org/x/net v0.0.0-20210525063256-abc453219eb5/go.mod h1:9nx3DQGgdP8bBQD5qxJ1jj9UTztislL4KSBs9R2vV5Y= golang.org/x/oauth2 v0.0.0-20180821212333-d2e6202438be/go.mod h1:N/0e6XlmueqKjAGxoOufVs8QHGRruUQn6yWY3a++T0U= golang.org/x/oauth2 v0.0.0-20190226205417-e64efc72b421/go.mod h1:gOpvHmFTYa4IltrdGE7lF6nIHvwfUNPOp7c8zoXwtLw= golang.org/x/oauth2 v0.0.0-20190604053449-0f29369cfe45/go.mod h1:gOpvHmFTYa4IltrdGE7lF6nIHvwfUNPOp7c8zoXwtLw= golang.org/x/oauth2 v0.0.0-20191202225959-858c2ad4c8b6/go.mod h1:gOpvHmFTYa4IltrdGE7lF6nIHvwfUNPOp7c8zoXwtLw= -golang.org/x/oauth2 v0.0.0-20200107190931-bf48bf16ab8d h1:TzXSXBo42m9gQenoE3b9BGiEpg5IG2JkU5FkPIawgtw= golang.org/x/oauth2 v0.0.0-20200107190931-bf48bf16ab8d/go.mod h1:gOpvHmFTYa4IltrdGE7lF6nIHvwfUNPOp7c8zoXwtLw= +golang.org/x/oauth2 v0.0.0-20200902213428-5d25da1a8d43/go.mod h1:KelEdhl1UZF7XfJ4dDtk6s++YSgaE7mD/BuKKDLBl4A= +golang.org/x/oauth2 v0.0.0-20201109201403-9fd604954f58/go.mod h1:KelEdhl1UZF7XfJ4dDtk6s++YSgaE7mD/BuKKDLBl4A= +golang.org/x/oauth2 v0.0.0-20201208152858-08078c50e5b5/go.mod h1:KelEdhl1UZF7XfJ4dDtk6s++YSgaE7mD/BuKKDLBl4A= +golang.org/x/oauth2 v0.0.0-20210218202405-ba52d332ba99/go.mod h1:KelEdhl1UZF7XfJ4dDtk6s++YSgaE7mD/BuKKDLBl4A= +golang.org/x/oauth2 v0.0.0-20210220000619-9bb904979d93/go.mod h1:KelEdhl1UZF7XfJ4dDtk6s++YSgaE7mD/BuKKDLBl4A= +golang.org/x/oauth2 v0.0.0-20210313182246-cd4f82c27b84/go.mod h1:KelEdhl1UZF7XfJ4dDtk6s++YSgaE7mD/BuKKDLBl4A= +golang.org/x/oauth2 v0.0.0-20210402161424-2e8d93401602/go.mod h1:KelEdhl1UZF7XfJ4dDtk6s++YSgaE7mD/BuKKDLBl4A= +golang.org/x/oauth2 v0.0.0-20210514164344-f6687ab2804c h1:pkQiBZBvdos9qq4wBAHqlzuZHEXo07pqV06ef90u1WI= +golang.org/x/oauth2 v0.0.0-20210514164344-f6687ab2804c/go.mod h1:KelEdhl1UZF7XfJ4dDtk6s++YSgaE7mD/BuKKDLBl4A= golang.org/x/sync v0.0.0-20180314180146-1d60e4601c6f/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= golang.org/x/sync v0.0.0-20181108010431-42b317875d0f/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= golang.org/x/sync v0.0.0-20181221193216-37e7f081c4d4/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= golang.org/x/sync v0.0.0-20190227155943-e225da77a7e6/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= golang.org/x/sync v0.0.0-20190423024810-112230192c58/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= golang.org/x/sync v0.0.0-20190911185100-cd5d95a43a6e/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= +golang.org/x/sync v0.0.0-20200317015054-43a5402ce75a/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= golang.org/x/sync v0.0.0-20200625203802-6e8e738ad208/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= golang.org/x/sync v0.0.0-20201020160332-67f06af15bc9/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= -golang.org/x/sync v0.0.0-20201207232520-09787c993a3a h1:DcqTD9SDLc+1P/r1EmRBwnVsrOwW+kk2vWf9n+1sGhs= golang.org/x/sync v0.0.0-20201207232520-09787c993a3a/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= +golang.org/x/sync v0.0.0-20210220032951-036812b2e83c h1:5KslGYwFpkhGh+Q16bwMP3cOontH8FOep7tGV86Y7SQ= +golang.org/x/sync v0.0.0-20210220032951-036812b2e83c/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= golang.org/x/sys v0.0.0-20180823144017-11551d06cbcc/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= golang.org/x/sys v0.0.0-20180905080454-ebe1bf3edb33/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= golang.org/x/sys v0.0.0-20180909124046-d0be0721c37e/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= @@ -964,34 +1101,61 @@ golang.org/x/sys v0.0.0-20191204072324-ce4227a45e2e/go.mod h1:h1NjWce9XRLGQEsW7w golang.org/x/sys v0.0.0-20191220142924-d4481acd189f/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20191228213918-04cbcbbfeed8/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20200106162015-b016eb3dc98e/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20200113162924-86b910548bc1/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20200116001909-b77594299b42/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20200122134326-e047566fdf82/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20200202164722-d101bd2416d5/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20200212091648-12a6c2dcc1e4/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20200223170610-d5e6a3e2c0ae/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20200302150141-5c8b2ff67527/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20200323222414-85ca7c5b95cd/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20200331124033-c3d80250170d/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20200420163511-1957bb5e6d1f/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20200501052902-10377860bb8e/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20200511232937-7e40ca221e25/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20200515095857-1151b9dac4a9/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20200519105757-fe76b779f299/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20200523222454-059865788121/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20200615200032-f1bc736245b1/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20200622214017-ed371f2e16b4/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20200625212154-ddb9806d33ae/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20200803210538-64077c9b5642/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20200814200057-3d37ad5750ed/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20200824131525-c12d262b63d8/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20200905004654-be1d3432aa8f/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20200909081042-eff7692f9009/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20200922070232-aee5d888a860/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20200928205150-006507a75852/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20200930185726-fdedc70b468f/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20201015000850-e3ed0017c211/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20201119102817-f84b799fce68/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20201201145000-ef89a241ccb3/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20210104204734-6f8348627aad/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20210119212857-b64e53b001e4/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20210124154548-22da62e12c0c/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20210309074719-68d13333faf2 h1:46ULzRKLh1CwgRq2dC5SlBzEqqNCi8rreOZnNrbqcIY= +golang.org/x/sys v0.0.0-20210220050731-9a76102bfb43/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20210305230114-8fe3ee5dd75b/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20210309074719-68d13333faf2/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/term v0.0.0-20201117132131-f5c789dd3221 h1:/ZHdbVpdR/jk3g30/d4yUL0JU9kksj8+F/bnQUVLGDM= +golang.org/x/sys v0.0.0-20210315160823-c6e025ad8005/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20210320140829-1e4c9ba3b0c4/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20210330210617-4fbd30eecc44/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20210403161142-5e06dd20ab57/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20210423082822-04245dca01da/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20210510120138-977fb7262007/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= +golang.org/x/sys v0.0.0-20210603081109-ebe580a85c40 h1:JWgyZ1qgdTaF3N3oxC+MdTV7qvEEgHo3otj+HB5CM7Q= +golang.org/x/sys v0.0.0-20210603081109-ebe580a85c40/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/term v0.0.0-20201117132131-f5c789dd3221/go.mod h1:Nr5EML6q2oocZ2LXRh80K7BxOlk5/8JxuGnuhpl+muw= +golang.org/x/term v0.0.0-20201126162022-7de9c90e9dd1 h1:v+OssWQX+hTHEmOBgwxdZxK4zHq3yOs8F9J7mk0PY8E= +golang.org/x/term v0.0.0-20201126162022-7de9c90e9dd1/go.mod h1:bj7SfCRtBDWHUb9snDiAeCFNEtKQo2Wmx5Cou7ajbmo= +golang.org/x/text v0.0.0-20170915032832-14c0d48ead0c/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ= golang.org/x/text v0.3.0/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ= golang.org/x/text v0.3.1-0.20180807135948-17ff2d5776d2/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ= golang.org/x/text v0.3.2/go.mod h1:bEr9sfX3Q8Zfm5fL9x+3itogRgK3+ptLWKqgva+5dAk= -golang.org/x/text v0.3.3 h1:cokOdA+Jmi5PJGXLlLllQSgYigAEfHXJAERHVMaCc2k= golang.org/x/text v0.3.3/go.mod h1:5Zoc/QRtKVWzQhOtBMvqHzDpF6irO9z98xDceosuGiQ= +golang.org/x/text v0.3.4/go.mod h1:5Zoc/QRtKVWzQhOtBMvqHzDpF6irO9z98xDceosuGiQ= +golang.org/x/text v0.3.5/go.mod h1:5Zoc/QRtKVWzQhOtBMvqHzDpF6irO9z98xDceosuGiQ= +golang.org/x/text v0.3.6 h1:aRYxNxv6iGQlyVaZmk6ZgYEDa+Jg18DxebPSrd6bg1M= +golang.org/x/text v0.3.6/go.mod h1:5Zoc/QRtKVWzQhOtBMvqHzDpF6irO9z98xDceosuGiQ= golang.org/x/time v0.0.0-20180412165947-fbb02b2291d2/go.mod h1:tRJNPiyCQ0inRvYxbN9jk5I+vvW/OXSQhTDSoE431IQ= golang.org/x/time v0.0.0-20181108054448-85acf8d2951c/go.mod h1:tRJNPiyCQ0inRvYxbN9jk5I+vvW/OXSQhTDSoE431IQ= golang.org/x/time v0.0.0-20190308202827-9d24e82272b4/go.mod h1:tRJNPiyCQ0inRvYxbN9jk5I+vvW/OXSQhTDSoE431IQ= @@ -1017,20 +1181,47 @@ golang.org/x/tools v0.0.0-20191012152004-8de300cfc20a/go.mod h1:b+2E5dAYhXwXZwtn golang.org/x/tools v0.0.0-20191029041327-9cc4af7d6b2c/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo= golang.org/x/tools v0.0.0-20191029190741-b9c20aec41a5/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo= golang.org/x/tools v0.0.0-20191112195655-aa38f8e97acc/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo= +golang.org/x/tools v0.0.0-20191113191852-77e3bb0ad9e7/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo= +golang.org/x/tools v0.0.0-20191115202509-3a792d9c32b2/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo= golang.org/x/tools v0.0.0-20191119224855-298f0cb1881e/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo= golang.org/x/tools v0.0.0-20191125144606-a911d9008d1f/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo= golang.org/x/tools v0.0.0-20191130070609-6e064ea0cf2d/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo= +golang.org/x/tools v0.0.0-20191216173652-a0e659d51361/go.mod h1:TB2adYChydJhpapKDTa4BR/hXlZSLoq2Wpct/0txZ28= golang.org/x/tools v0.0.0-20191227053925-7b8e75db28f4/go.mod h1:TB2adYChydJhpapKDTa4BR/hXlZSLoq2Wpct/0txZ28= golang.org/x/tools v0.0.0-20200103221440-774c71fcf114/go.mod h1:TB2adYChydJhpapKDTa4BR/hXlZSLoq2Wpct/0txZ28= golang.org/x/tools v0.0.0-20200117012304-6edc0a871e69/go.mod h1:TB2adYChydJhpapKDTa4BR/hXlZSLoq2Wpct/0txZ28= +golang.org/x/tools v0.0.0-20200117161641-43d50277825c/go.mod h1:TB2adYChydJhpapKDTa4BR/hXlZSLoq2Wpct/0txZ28= +golang.org/x/tools v0.0.0-20200122220014-bf1340f18c4a/go.mod h1:TB2adYChydJhpapKDTa4BR/hXlZSLoq2Wpct/0txZ28= +golang.org/x/tools v0.0.0-20200130002326-2f3ba24bd6e7/go.mod h1:TB2adYChydJhpapKDTa4BR/hXlZSLoq2Wpct/0txZ28= +golang.org/x/tools v0.0.0-20200204074204-1cc6d1ef6c74/go.mod h1:TB2adYChydJhpapKDTa4BR/hXlZSLoq2Wpct/0txZ28= golang.org/x/tools v0.0.0-20200207183749-b753a1ba74fa/go.mod h1:TB2adYChydJhpapKDTa4BR/hXlZSLoq2Wpct/0txZ28= +golang.org/x/tools v0.0.0-20200212150539-ea181f53ac56/go.mod h1:TB2adYChydJhpapKDTa4BR/hXlZSLoq2Wpct/0txZ28= +golang.org/x/tools v0.0.0-20200224181240-023911ca70b2/go.mod h1:TB2adYChydJhpapKDTa4BR/hXlZSLoq2Wpct/0txZ28= +golang.org/x/tools v0.0.0-20200227222343-706bc42d1f0d/go.mod h1:TB2adYChydJhpapKDTa4BR/hXlZSLoq2Wpct/0txZ28= +golang.org/x/tools v0.0.0-20200304193943-95d2e580d8eb/go.mod h1:o4KQGtdN14AW+yjsvvwRTJJuXz8XRtIHtEnmAXLyFUw= +golang.org/x/tools v0.0.0-20200312045724-11d5b4c81c7d/go.mod h1:o4KQGtdN14AW+yjsvvwRTJJuXz8XRtIHtEnmAXLyFUw= +golang.org/x/tools v0.0.0-20200331025713-a30bf2db82d4/go.mod h1:Sl4aGygMT6LrqrWclx+PTx3U+LnKx/seiNR+3G19Ar8= +golang.org/x/tools v0.0.0-20200501065659-ab2804fb9c9d/go.mod h1:EkVYQZoAsY45+roYkvgYkIh4xh/qjgUK9TdY2XT94GE= +golang.org/x/tools v0.0.0-20200512131952-2bc93b1c0c88/go.mod h1:EkVYQZoAsY45+roYkvgYkIh4xh/qjgUK9TdY2XT94GE= +golang.org/x/tools v0.0.0-20200515010526-7d3b6ebf133d/go.mod h1:EkVYQZoAsY45+roYkvgYkIh4xh/qjgUK9TdY2XT94GE= golang.org/x/tools v0.0.0-20200522201501-cb1345f3a375/go.mod h1:EkVYQZoAsY45+roYkvgYkIh4xh/qjgUK9TdY2XT94GE= golang.org/x/tools v0.0.0-20200616133436-c1934b75d054/go.mod h1:EkVYQZoAsY45+roYkvgYkIh4xh/qjgUK9TdY2XT94GE= +golang.org/x/tools v0.0.0-20200618134242-20370b0cb4b2/go.mod h1:EkVYQZoAsY45+roYkvgYkIh4xh/qjgUK9TdY2XT94GE= golang.org/x/tools v0.0.0-20200619180055-7c47624df98f/go.mod h1:EkVYQZoAsY45+roYkvgYkIh4xh/qjgUK9TdY2XT94GE= golang.org/x/tools v0.0.0-20200717024301-6ddee64345a6/go.mod h1:njjCfa9FT2d7l9Bc6FUM5FLjQPp3cFF28FI3qnDFljA= +golang.org/x/tools v0.0.0-20200729194436-6467de6f59a7/go.mod h1:njjCfa9FT2d7l9Bc6FUM5FLjQPp3cFF28FI3qnDFljA= +golang.org/x/tools v0.0.0-20200804011535-6c149bb5ef0d/go.mod h1:njjCfa9FT2d7l9Bc6FUM5FLjQPp3cFF28FI3qnDFljA= +golang.org/x/tools v0.0.0-20200825202427-b303f430e36d/go.mod h1:njjCfa9FT2d7l9Bc6FUM5FLjQPp3cFF28FI3qnDFljA= +golang.org/x/tools v0.0.0-20200904185747-39188db58858/go.mod h1:Cj7w3i3Rnn0Xh82ur9kSqwfTHTeVxaDqrfMjpcNT6bE= +golang.org/x/tools v0.0.0-20201110124207-079ba7bd75cd/go.mod h1:emZCQorbCU4vsT4fOWvOPXz4eW1wZW4PmDk9uLelYpA= +golang.org/x/tools v0.0.0-20201201161351-ac6f37ff4c2a/go.mod h1:emZCQorbCU4vsT4fOWvOPXz4eW1wZW4PmDk9uLelYpA= +golang.org/x/tools v0.0.0-20201208233053-a543418bbed2/go.mod h1:emZCQorbCU4vsT4fOWvOPXz4eW1wZW4PmDk9uLelYpA= +golang.org/x/tools v0.0.0-20210105154028-b0ab187a4818/go.mod h1:emZCQorbCU4vsT4fOWvOPXz4eW1wZW4PmDk9uLelYpA= golang.org/x/tools v0.0.0-20210106214847-113979e3529a/go.mod h1:emZCQorbCU4vsT4fOWvOPXz4eW1wZW4PmDk9uLelYpA= -golang.org/x/tools v0.1.0 h1:po9/4sTYwZU9lPhi1tOrb4hCv3qrhiQ77LZfGa2OjwY= golang.org/x/tools v0.1.0/go.mod h1:xkSsbof2nBLbhDlRMhhhyNLN/zl3eTqcnHD5viDpcZ0= +golang.org/x/tools v0.1.1/go.mod h1:o0xws9oXOQQZyjljx8fwUC0k7L1pTE6eaCbjGeHmOkk= +golang.org/x/tools v0.1.2 h1:kRBLX7v7Af8W7Gdbbc908OJcdgtK8bOz9Uaj8/F1ACA= +golang.org/x/tools v0.1.2/go.mod h1:o0xws9oXOQQZyjljx8fwUC0k7L1pTE6eaCbjGeHmOkk= golang.org/x/xerrors v0.0.0-20190717185122-a985d3407aa7/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= golang.org/x/xerrors v0.0.0-20191011141410-1b5146add898/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= golang.org/x/xerrors v0.0.0-20191204190536-9bdfabe68543/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= @@ -1042,14 +1233,31 @@ google.golang.org/api v0.7.0/go.mod h1:WtwebWUNSVBH/HAw79HIFXZNqEvBhG+Ra+ax0hx3E google.golang.org/api v0.8.0/go.mod h1:o4eAsZoiT+ibD93RtjEohWalFOjRDx6CVaqeizhEnKg= google.golang.org/api v0.9.0/go.mod h1:o4eAsZoiT+ibD93RtjEohWalFOjRDx6CVaqeizhEnKg= google.golang.org/api v0.13.0/go.mod h1:iLdEw5Ide6rF15KTC1Kkl0iskquN2gFfn9o9XIsbkAI= +google.golang.org/api v0.14.0/go.mod h1:iLdEw5Ide6rF15KTC1Kkl0iskquN2gFfn9o9XIsbkAI= google.golang.org/api v0.15.0/go.mod h1:iLdEw5Ide6rF15KTC1Kkl0iskquN2gFfn9o9XIsbkAI= +google.golang.org/api v0.17.0/go.mod h1:BwFmGc8tA3vsd7r/7kR8DY7iEEGSU04BFxCo5jP/sfE= +google.golang.org/api v0.18.0/go.mod h1:BwFmGc8tA3vsd7r/7kR8DY7iEEGSU04BFxCo5jP/sfE= +google.golang.org/api v0.19.0/go.mod h1:BwFmGc8tA3vsd7r/7kR8DY7iEEGSU04BFxCo5jP/sfE= +google.golang.org/api v0.20.0/go.mod h1:BwFmGc8tA3vsd7r/7kR8DY7iEEGSU04BFxCo5jP/sfE= +google.golang.org/api v0.22.0/go.mod h1:BwFmGc8tA3vsd7r/7kR8DY7iEEGSU04BFxCo5jP/sfE= +google.golang.org/api v0.24.0/go.mod h1:lIXQywCXRcnZPGlsd8NbLnOjtAoL6em04bJ9+z0MncE= +google.golang.org/api v0.28.0/go.mod h1:lIXQywCXRcnZPGlsd8NbLnOjtAoL6em04bJ9+z0MncE= +google.golang.org/api v0.29.0/go.mod h1:Lcubydp8VUV7KeIHD9z2Bys/sm/vGKnG1UHuDBSrHWM= +google.golang.org/api v0.30.0/go.mod h1:QGmEvQ87FHZNiUVJkT14jQNYJ4ZJjdRF23ZXz5138Fc= +google.golang.org/api v0.35.0/go.mod h1:/XrVsuzM0rZmrsbjJutiuftIzeuTQcEeaYcSk/mQ1dg= +google.golang.org/api v0.36.0/go.mod h1:+z5ficQTmoYpPn8LCUNVpK5I7hwkpjbcgqA7I34qYtE= +google.golang.org/api v0.40.0/go.mod h1:fYKFpnQN0DsDSKRVRcQSDQNtqWPfM9i+zNPxepjRCQ8= +google.golang.org/api v0.41.0/go.mod h1:RkxM5lITDfTzmyKFPt+wGrCJbVfniCr2ool8kTBzRTU= +google.golang.org/api v0.43.0/go.mod h1:nQsDGjRXMo4lvh5hP0TKqF244gqhGcr/YSIykhUk/94= +google.golang.org/api v0.44.0/go.mod h1:EBOGZqzyhtvMDoxwS97ctnh0zUmYY6CxqXsc1AvkYD8= google.golang.org/appengine v1.2.0/go.mod h1:xpcJRLb0r/rnEns0DIKYYv+WjYCduHsrkT7/EB5XEv4= google.golang.org/appengine v1.4.0/go.mod h1:xpcJRLb0r/rnEns0DIKYYv+WjYCduHsrkT7/EB5XEv4= google.golang.org/appengine v1.5.0/go.mod h1:xpcJRLb0r/rnEns0DIKYYv+WjYCduHsrkT7/EB5XEv4= google.golang.org/appengine v1.6.1/go.mod h1:i06prIuMbXzDqacNJfV5OdTW448YApPu5ww/cMBSeb0= google.golang.org/appengine v1.6.5/go.mod h1:8WjMMxjGQR8xUklV/ARdw2HLXBOI7O7uCIDZVag1xfc= -google.golang.org/appengine v1.6.6-0.20191016204603-16bce7d3dc4e h1:MfwK2BUGIt3D4CrP9KbL9+Glm0M2DsgJuPzkEJMbyNk= -google.golang.org/appengine v1.6.6-0.20191016204603-16bce7d3dc4e/go.mod h1:8WjMMxjGQR8xUklV/ARdw2HLXBOI7O7uCIDZVag1xfc= +google.golang.org/appengine v1.6.6/go.mod h1:8WjMMxjGQR8xUklV/ARdw2HLXBOI7O7uCIDZVag1xfc= +google.golang.org/appengine v1.6.7 h1:FZR1q0exgwxzPzp/aF+VccGrSfxfPpkBqjIIEq3ru6c= +google.golang.org/appengine v1.6.7/go.mod h1:8WjMMxjGQR8xUklV/ARdw2HLXBOI7O7uCIDZVag1xfc= google.golang.org/genproto v0.0.0-20180817151627-c66870c02cf8/go.mod h1:JiN7NxoALGmiZfu7CAH4rXhgtRTLTxftemlI0sWmxmc= google.golang.org/genproto v0.0.0-20180831171423-11092d34479b/go.mod h1:JiN7NxoALGmiZfu7CAH4rXhgtRTLTxftemlI0sWmxmc= google.golang.org/genproto v0.0.0-20190307195333-5fe7a883aa19/go.mod h1:VzzqZJRnGkLBvHegQrXjBqPurQTc5/KpmUdxsrq26oE= @@ -1061,16 +1269,44 @@ google.golang.org/genproto v0.0.0-20190801165951-fa694d86fc64/go.mod h1:DMBHOl98 google.golang.org/genproto v0.0.0-20190819201941-24fa4b261c55/go.mod h1:DMBHOl98Agz4BDEuKkezgsaosCRResVns1a3J2ZsMNc= google.golang.org/genproto v0.0.0-20190911173649-1774047e7e51/go.mod h1:IbNlFCBrqXvoKpeg0TB2l7cyZUmoaFKYIwrEpbDKLA8= google.golang.org/genproto v0.0.0-20191108220845-16a3f7862a1a/go.mod h1:n3cpQtvxv34hfy77yVDNjmbRyujviMdxYliBSkLhpCc= +google.golang.org/genproto v0.0.0-20191115194625-c23dd37a84c9/go.mod h1:n3cpQtvxv34hfy77yVDNjmbRyujviMdxYliBSkLhpCc= +google.golang.org/genproto v0.0.0-20191216164720-4f79533eabd1/go.mod h1:n3cpQtvxv34hfy77yVDNjmbRyujviMdxYliBSkLhpCc= google.golang.org/genproto v0.0.0-20191230161307-f3c370f40bfb/go.mod h1:n3cpQtvxv34hfy77yVDNjmbRyujviMdxYliBSkLhpCc= +google.golang.org/genproto v0.0.0-20200115191322-ca5a22157cba/go.mod h1:n3cpQtvxv34hfy77yVDNjmbRyujviMdxYliBSkLhpCc= +google.golang.org/genproto v0.0.0-20200122232147-0452cf42e150/go.mod h1:n3cpQtvxv34hfy77yVDNjmbRyujviMdxYliBSkLhpCc= +google.golang.org/genproto v0.0.0-20200204135345-fa8e72b47b90/go.mod h1:GmwEX6Z4W5gMy59cAlVYjN9JhxgbQH6Gn+gFDQe2lzA= +google.golang.org/genproto v0.0.0-20200212174721-66ed5ce911ce/go.mod h1:55QSHmfGQM9UVYDPBsyGGes0y52j32PQ3BqQfXhyH3c= +google.golang.org/genproto v0.0.0-20200224152610-e50cd9704f63/go.mod h1:55QSHmfGQM9UVYDPBsyGGes0y52j32PQ3BqQfXhyH3c= +google.golang.org/genproto v0.0.0-20200228133532-8c2c7df3a383/go.mod h1:55QSHmfGQM9UVYDPBsyGGes0y52j32PQ3BqQfXhyH3c= +google.golang.org/genproto v0.0.0-20200305110556-506484158171/go.mod h1:55QSHmfGQM9UVYDPBsyGGes0y52j32PQ3BqQfXhyH3c= +google.golang.org/genproto v0.0.0-20200312145019-da6875a35672/go.mod h1:55QSHmfGQM9UVYDPBsyGGes0y52j32PQ3BqQfXhyH3c= google.golang.org/genproto v0.0.0-20200324203455-a04cca1dde73/go.mod h1:55QSHmfGQM9UVYDPBsyGGes0y52j32PQ3BqQfXhyH3c= +google.golang.org/genproto v0.0.0-20200331122359-1ee6d9798940/go.mod h1:55QSHmfGQM9UVYDPBsyGGes0y52j32PQ3BqQfXhyH3c= google.golang.org/genproto v0.0.0-20200423170343-7949de9c1215/go.mod h1:55QSHmfGQM9UVYDPBsyGGes0y52j32PQ3BqQfXhyH3c= +google.golang.org/genproto v0.0.0-20200430143042-b979b6f78d84/go.mod h1:55QSHmfGQM9UVYDPBsyGGes0y52j32PQ3BqQfXhyH3c= +google.golang.org/genproto v0.0.0-20200511104702-f5ebc3bea380/go.mod h1:55QSHmfGQM9UVYDPBsyGGes0y52j32PQ3BqQfXhyH3c= google.golang.org/genproto v0.0.0-20200513103714-09dca8ec2884/go.mod h1:55QSHmfGQM9UVYDPBsyGGes0y52j32PQ3BqQfXhyH3c= +google.golang.org/genproto v0.0.0-20200515170657-fc4c6c6a6587/go.mod h1:YsZOwe1myG/8QRHRsmBRE1LrgQY60beZKjly0O1fX9U= google.golang.org/genproto v0.0.0-20200526211855-cb27e3aa2013/go.mod h1:NbSheEEYHJ7i3ixzK3sjbqSGDJWnxyFXZblF3eUsNvo= +google.golang.org/genproto v0.0.0-20200618031413-b414f8b61790/go.mod h1:jDfRM7FcilCzHH/e9qn6dsT145K34l5v+OpcnNgKAAA= +google.golang.org/genproto v0.0.0-20200729003335-053ba62fc06f/go.mod h1:FWY/as6DDZQgahTzZj3fqbO1CbirC29ZNUFHwi0/+no= +google.golang.org/genproto v0.0.0-20200804131852-c06518451d9c/go.mod h1:FWY/as6DDZQgahTzZj3fqbO1CbirC29ZNUFHwi0/+no= google.golang.org/genproto v0.0.0-20200825200019-8632dd797987/go.mod h1:FWY/as6DDZQgahTzZj3fqbO1CbirC29ZNUFHwi0/+no= +google.golang.org/genproto v0.0.0-20200904004341-0bd0a958aa1d/go.mod h1:FWY/as6DDZQgahTzZj3fqbO1CbirC29ZNUFHwi0/+no= +google.golang.org/genproto v0.0.0-20201109203340-2640f1f9cdfb/go.mod h1:FWY/as6DDZQgahTzZj3fqbO1CbirC29ZNUFHwi0/+no= google.golang.org/genproto v0.0.0-20201111145450-ac7456db90a6/go.mod h1:FWY/as6DDZQgahTzZj3fqbO1CbirC29ZNUFHwi0/+no= google.golang.org/genproto v0.0.0-20201119123407-9b1e624d6bc4/go.mod h1:FWY/as6DDZQgahTzZj3fqbO1CbirC29ZNUFHwi0/+no= -google.golang.org/genproto v0.0.0-20210114201628-6edceaf6022f h1:izedQ6yVIc5mZsRuXzmSreCOlzI0lCU1HpG8yEdMiKw= +google.golang.org/genproto v0.0.0-20201201144952-b05cb90ed32e/go.mod h1:FWY/as6DDZQgahTzZj3fqbO1CbirC29ZNUFHwi0/+no= +google.golang.org/genproto v0.0.0-20201210142538-e3217bee35cc/go.mod h1:FWY/as6DDZQgahTzZj3fqbO1CbirC29ZNUFHwi0/+no= +google.golang.org/genproto v0.0.0-20201214200347-8c77b98c765d/go.mod h1:FWY/as6DDZQgahTzZj3fqbO1CbirC29ZNUFHwi0/+no= google.golang.org/genproto v0.0.0-20210114201628-6edceaf6022f/go.mod h1:FWY/as6DDZQgahTzZj3fqbO1CbirC29ZNUFHwi0/+no= +google.golang.org/genproto v0.0.0-20210222152913-aa3ee6e6a81c/go.mod h1:FWY/as6DDZQgahTzZj3fqbO1CbirC29ZNUFHwi0/+no= +google.golang.org/genproto v0.0.0-20210303154014-9728d6b83eeb/go.mod h1:FWY/as6DDZQgahTzZj3fqbO1CbirC29ZNUFHwi0/+no= +google.golang.org/genproto v0.0.0-20210310155132-4ce2db91004e/go.mod h1:FWY/as6DDZQgahTzZj3fqbO1CbirC29ZNUFHwi0/+no= +google.golang.org/genproto v0.0.0-20210319143718-93e7006c17a6/go.mod h1:FWY/as6DDZQgahTzZj3fqbO1CbirC29ZNUFHwi0/+no= +google.golang.org/genproto v0.0.0-20210402141018-6c239bbf2bb1/go.mod h1:9lPAdzaEmUacj36I+k7YKbEc5CXzPIeORRgDAUOu28A= +google.golang.org/genproto v0.0.0-20210602131652-f16073e35f0c h1:wtujag7C+4D6KMoulW9YauvK2lgdvCMS260jsqqBXr0= +google.golang.org/genproto v0.0.0-20210602131652-f16073e35f0c/go.mod h1:UODoCrxHCcBojKKwX1terBiRUaqAsFqJiF615XL43r0= google.golang.org/grpc v1.33.2 h1:EQyQC3sa8M+p6Ulc8yy9SWSS2GVwyRc83gAbG8lrl4o= google.golang.org/grpc v1.33.2/go.mod h1:JMHMWHQWaTccqQQlmk3MJZS+GWXOdAesneDmEnv2fbc= google.golang.org/protobuf v0.0.0-20200109180630-ec00e32a8dfd/go.mod h1:DFci5gLYBciE7Vtevhsrf46CRTquxDuWsQurQQe4oz8= @@ -1101,8 +1337,9 @@ gopkg.in/gcfg.v1 v1.2.3/go.mod h1:yesOnuUOFQAhST5vPY4nbZsb/huCgGGXlipJsBn0b3o= gopkg.in/inf.v0 v0.9.1 h1:73M5CoZyi3ZLMOyDlQh031Cx6N9NDJ2Vvfl76EDAgDc= gopkg.in/inf.v0 v0.9.1/go.mod h1:cWUDdTG/fYaXco+Dcufb5Vnc6Gp2YChqWtbxRZE0mXw= gopkg.in/ini.v1 v1.51.0/go.mod h1:pNLf8WUiyNEtQjuu5G5vTm06TEv9tsIgeAvK8hOrP4k= -gopkg.in/ini.v1 v1.61.0 h1:LBCdW4FmFYL4s/vDZD1RQYX7oAR6IjujCYgMdbHBR10= gopkg.in/ini.v1 v1.61.0/go.mod h1:pNLf8WUiyNEtQjuu5G5vTm06TEv9tsIgeAvK8hOrP4k= +gopkg.in/ini.v1 v1.62.0 h1:duBzk771uxoUuOlyRLkHsygud9+5lrlGjdFBb4mSKDU= +gopkg.in/ini.v1 v1.62.0/go.mod h1:pNLf8WUiyNEtQjuu5G5vTm06TEv9tsIgeAvK8hOrP4k= gopkg.in/natefinch/npipe.v2 v2.0.0-20160621034901-c1b8fa8bdcce/go.mod h1:5AcXVHNjg+BDxry382+8OKon8SEWiKktQR07RKPsv1c= gopkg.in/olebedev/go-duktape.v3 v3.0.0-20200619000410-60c24ae608a6/go.mod h1:uAJfkITjFhyEEuUfm7bsmCZRbW5WRq8s9EY8HZ6hCns= gopkg.in/resty.v1 v1.12.0/go.mod h1:mDo4pnntr5jdWRML875a/NmxYqAlA73dVijT2AXvQQo= @@ -1121,14 +1358,16 @@ gopkg.in/yaml.v2 v2.3.0/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI= gopkg.in/yaml.v2 v2.4.0 h1:D8xgwECY7CYvx+Y2n4sBz93Jn9JRvxdiyyo8CTfuKaY= gopkg.in/yaml.v2 v2.4.0/go.mod h1:RDklbk79AGWmwhnvt/jBztapEOGDOx6ZbXqjP6csGnQ= gopkg.in/yaml.v3 v3.0.0-20200313102051-9f266ea9e77c/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM= -gopkg.in/yaml.v3 v3.0.0-20200615113413-eeeca48fe776 h1:tQIYjPdBoyREyB9XMu+nnTclpTYkz2zFM+lzLJFO4gQ= gopkg.in/yaml.v3 v3.0.0-20200615113413-eeeca48fe776/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM= +gopkg.in/yaml.v3 v3.0.0-20210107192922-496545a6307b h1:h8qDotaEPuJATrMmW04NCwg7v22aHH28wwpauUhK9Oo= +gopkg.in/yaml.v3 v3.0.0-20210107192922-496545a6307b/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM= gotest.tools v2.2.0+incompatible/go.mod h1:DsYFclhRJ6vuDpmuTbkuFWG+y2sxOXAzmJt81HFBacw= honnef.co/go/tools v0.0.0-20190102054323-c2f93a96b099/go.mod h1:rf3lG4BRIbNafJWhAfAdb/ePZxsR/4RtNHQocxwk9r4= honnef.co/go/tools v0.0.0-20190106161140-3f1c8253044a/go.mod h1:rf3lG4BRIbNafJWhAfAdb/ePZxsR/4RtNHQocxwk9r4= honnef.co/go/tools v0.0.0-20190418001031-e561f6794a2a/go.mod h1:rf3lG4BRIbNafJWhAfAdb/ePZxsR/4RtNHQocxwk9r4= honnef.co/go/tools v0.0.0-20190523083050-ea95bdfd59fc/go.mod h1:rf3lG4BRIbNafJWhAfAdb/ePZxsR/4RtNHQocxwk9r4= honnef.co/go/tools v0.0.1-2019.2.3/go.mod h1:a3bituU0lyd329TUQxRnasdCoJDkEUEAqEt0JzvZhAg= +honnef.co/go/tools v0.0.1-2020.1.3/go.mod h1:X/FiERA/W4tHapMX5mGpAtMSVEeEUOyHaw9vFzvIQ3k= honnef.co/go/tools v0.0.1-2020.1.4/go.mod h1:X/FiERA/W4tHapMX5mGpAtMSVEeEUOyHaw9vFzvIQ3k= k8s.io/api v0.19.3 h1:GN6ntFnv44Vptj/b+OnMW7FmzkpDoIDLZRvKX3XH9aU= k8s.io/api v0.19.3/go.mod h1:VF+5FT1B74Pw3KxMdKyinLo+zynBaMBiAfGMuldcNDs= @@ -1154,6 +1393,8 @@ k8s.io/utils v0.0.0-20200729134348-d5654de09c73/go.mod h1:jPW/WVKK9YHAvNhRxK0md/ nhooyr.io/websocket v1.8.6 h1:s+C3xAMLwGmlI31Nyn/eAehUlZPwfYZu2JXM621Q5/k= nhooyr.io/websocket v1.8.6/go.mod h1:B70DZP8IakI65RVQ51MsWP/8jndNma26DVA/nFSCgW0= rsc.io/binaryregexp v0.2.0/go.mod h1:qTv7/COck+e2FymRvadv62gMdZztPaShugOCi3I+8D8= +rsc.io/quote/v3 v3.1.0/go.mod h1:yEA65RcK8LyAZtP9Kv3t0HmxON59tX3rD+tICJqUlj0= +rsc.io/sampler v1.3.0/go.mod h1:T1hPZKmBbMNahiBKFy5HrXp6adAjACjK9JXDnKaTXpA= sigs.k8s.io/kind v0.10.0 h1:Tm+QITIqdRd+efLOsxZHMAfLnr5K4e3/RH8MePspEXs= sigs.k8s.io/kind v0.10.0/go.mod h1:fb32zUw7ewC47bPwLnwhf47wd/vADtv3c38KP7sjIlo= sigs.k8s.io/structured-merge-diff/v4 v4.0.1 h1:YXTMot5Qz/X1iBRJhAt+vI+HVttY0WkSqqhKxQ0xVbA= diff --git a/integration/e2e_test.go b/integration/e2e_test.go index 190df03456..a0b2d11c01 100644 --- a/integration/e2e_test.go +++ b/integration/e2e_test.go @@ -223,7 +223,7 @@ func (s *IntegrationTestSuite) SetupSuite() { s.Require().NoError(err) out := &types.QueryProvidersResponse{} - err = s.validator.ClientCtx.JSONCodec.UnmarshalJSON(resp.Bytes(), out) + err = s.validator.ClientCtx.Codec.UnmarshalJSON(resp.Bytes(), out) s.Require().NoError(err) s.Require().Len(out.Providers, 1, "Provider Creation Failed") providers := out.Providers @@ -235,7 +235,7 @@ func (s *IntegrationTestSuite) SetupSuite() { s.Require().NoError(err) var provider types.Provider - err = s.validator.ClientCtx.JSONCodec.UnmarshalJSON(resp.Bytes(), &provider) + err = s.validator.ClientCtx.Codec.UnmarshalJSON(resp.Bytes(), &provider) s.Require().NoError(err) s.Require().Equal(createdProvider, provider) @@ -272,7 +272,7 @@ func (s *IntegrationTestSuite) TearDownSuite() { s.Require().NoError(err) deployResp := &dtypes.QueryDeploymentsResponse{} - err = s.validator.ClientCtx.JSONCodec.UnmarshalJSON(resp.Bytes(), deployResp) + err = s.validator.ClientCtx.Codec.UnmarshalJSON(resp.Bytes(), deployResp) s.Require().NoError(err) s.Require().False(0 == len(deployResp.Deployments), "no deployments created") @@ -304,7 +304,7 @@ func (s *IntegrationTestSuite) TearDownSuite() { s.Require().NoError(err) qResp := &dtypes.QueryDeploymentsResponse{} - err = s.validator.ClientCtx.JSONCodec.UnmarshalJSON(resp.Bytes(), qResp) + err = s.validator.ClientCtx.Codec.UnmarshalJSON(resp.Bytes(), qResp) s.Require().NoError(err) s.Require().True(len(qResp.Deployments) == len(deployResp.Deployments), "Deployment Close Failed") @@ -463,7 +463,7 @@ func (s *E2EAppNodePort) TestE2EAppNodePort() { s.Require().NoError(err) leaseRes := &mtypes.QueryLeasesResponse{} - err = s.validator.ClientCtx.JSONCodec.UnmarshalJSON(resp.Bytes(), leaseRes) + err = s.validator.ClientCtx.Codec.UnmarshalJSON(resp.Bytes(), leaseRes) s.Require().NoError(err) s.Require().Len(leaseRes.Leases, 1) @@ -591,7 +591,7 @@ func (s *E2EDeploymentUpdate) TestE2EDeploymentUpdate() { s.Require().NoError(err) leaseRes := &mtypes.QueryLeasesResponse{} - err = s.validator.ClientCtx.JSONCodec.UnmarshalJSON(resp.Bytes(), leaseRes) + err = s.validator.ClientCtx.Codec.UnmarshalJSON(resp.Bytes(), leaseRes) s.Require().NoError(err) s.Require().Len(leaseRes.Leases, 1) @@ -679,7 +679,7 @@ func (s *E2EApp) TestE2EApp() { s.Require().NoError(err) deployResp := &dtypes.QueryDeploymentsResponse{} - err = s.validator.ClientCtx.JSONCodec.UnmarshalJSON(res.Bytes(), deployResp) + err = s.validator.ClientCtx.Codec.UnmarshalJSON(res.Bytes(), deployResp) s.Require().NoError(err) s.Require().Len(deployResp.Deployments, 1, "Deployment Create Failed") deployments := deployResp.Deployments @@ -691,7 +691,7 @@ func (s *E2EApp) TestE2EApp() { s.Require().NoError(err) deploymentResp := dtypes.QueryDeploymentResponse{} - err = s.validator.ClientCtx.JSONCodec.UnmarshalJSON(res.Bytes(), &deploymentResp) + err = s.validator.ClientCtx.Codec.UnmarshalJSON(res.Bytes(), &deploymentResp) s.Require().NoError(err) s.Require().Equal(createdDep, deploymentResp) s.Require().NotEmpty(deploymentResp.Deployment.Version) @@ -705,7 +705,7 @@ func (s *E2EApp) TestE2EApp() { s.Require().NoError(err, "Error when fetching deployments with owner filter") deployResp = &dtypes.QueryDeploymentsResponse{} - err = s.validator.ClientCtx.JSONCodec.UnmarshalJSON(res.Bytes(), deployResp) + err = s.validator.ClientCtx.Codec.UnmarshalJSON(res.Bytes(), deployResp) s.Require().NoError(err) s.Require().Len(deployResp.Deployments, 1) @@ -715,7 +715,7 @@ func (s *E2EApp) TestE2EApp() { s.Require().NoError(err) result := &mtypes.QueryOrdersResponse{} - err = s.validator.ClientCtx.JSONCodec.UnmarshalJSON(res.Bytes(), result) + err = s.validator.ClientCtx.Codec.UnmarshalJSON(res.Bytes(), result) s.Require().NoError(err) s.Require().Len(result.Orders, 1) orders := result.Orders @@ -729,7 +729,7 @@ func (s *E2EApp) TestE2EApp() { res, err = mcli.QueryBidsExec(cctxJSON) s.Require().NoError(err) bidsRes := &mtypes.QueryBidsResponse{} - err = s.validator.ClientCtx.JSONCodec.UnmarshalJSON(res.Bytes(), bidsRes) + err = s.validator.ClientCtx.Codec.UnmarshalJSON(res.Bytes(), bidsRes) s.Require().NoError(err) s.Require().Len(bidsRes.Bids, 1) @@ -750,7 +750,7 @@ func (s *E2EApp) TestE2EApp() { s.Require().NoError(err) leaseRes := &mtypes.QueryLeasesResponse{} - err = s.validator.ClientCtx.JSONCodec.UnmarshalJSON(res.Bytes(), leaseRes) + err = s.validator.ClientCtx.Codec.UnmarshalJSON(res.Bytes(), leaseRes) s.Require().NoError(err) s.Require().Len(leaseRes.Leases, 1) diff --git a/x/cert/client/cli/tx.go b/x/cert/client/cli/tx.go index c116630ba1..2d8ff55036 100644 --- a/x/cert/client/cli/tx.go +++ b/x/cert/client/cli/tx.go @@ -303,7 +303,7 @@ func addCertToGenesis(cmd *cobra.Command, cert types.GenesisCertificate) error { return err } - cdc := cctx.JSONCodec.(codec.Codec) + cdc := cctx.Codec.(codec.Codec) serverCtx := server.GetServerContextFromCmd(cmd) config := serverCtx.Config diff --git a/x/deployment/client/cli/cli_test.go b/x/deployment/client/cli/cli_test.go index 9ec46e5a88..ec2585b8dc 100644 --- a/x/deployment/client/cli/cli_test.go +++ b/x/deployment/client/cli/cli_test.go @@ -85,7 +85,7 @@ func (s *IntegrationTestSuite) TestDeployment() { s.Require().NoError(err) out := &types.QueryDeploymentsResponse{} - err = val.ClientCtx.JSONCodec.UnmarshalJSON(resp.Bytes(), out) + err = val.ClientCtx.Codec.UnmarshalJSON(resp.Bytes(), out) s.Require().NoError(err) s.Require().Len(out.Deployments, 1, "Deployment Create Failed") deployments := out.Deployments @@ -98,7 +98,7 @@ func (s *IntegrationTestSuite) TestDeployment() { var deployment types.QueryDeploymentResponse fmt.Println(string(resp.Bytes())) - err = val.ClientCtx.JSONCodec.UnmarshalJSON(resp.Bytes(), &deployment) + err = val.ClientCtx.Codec.UnmarshalJSON(resp.Bytes(), &deployment) s.Require().NoError(err) s.Require().Equal(createdDep, deployment) @@ -111,7 +111,7 @@ func (s *IntegrationTestSuite) TestDeployment() { s.Require().NoError(err, "Error when fetching deployments with owner filter") out = &types.QueryDeploymentsResponse{} - err = val.ClientCtx.JSONCodec.UnmarshalJSON(resp.Bytes(), out) + err = val.ClientCtx.Codec.UnmarshalJSON(resp.Bytes(), out) s.Require().NoError(err) s.Require().Len(out.Deployments, 1) @@ -134,7 +134,7 @@ func (s *IntegrationTestSuite) TestDeployment() { s.Require().NoError(err) var deploymentV2 types.QueryDeploymentResponse - err = val.ClientCtx.JSONCodec.UnmarshalJSON(resp.Bytes(), &deploymentV2) + err = val.ClientCtx.Codec.UnmarshalJSON(resp.Bytes(), &deploymentV2) s.Require().NoError(err) s.Require().NotEqual(deployment.Deployment.Version, deploymentV2.Deployment.Version) @@ -174,7 +174,7 @@ func (s *IntegrationTestSuite) TestDeployment() { s.Require().NoError(err) out = &types.QueryDeploymentsResponse{} - err = val.ClientCtx.JSONCodec.UnmarshalJSON(resp.Bytes(), out) + err = val.ClientCtx.Codec.UnmarshalJSON(resp.Bytes(), out) s.Require().NoError(err) s.Require().Len(out.Deployments, 1, "Deployment Close Failed") } @@ -207,7 +207,7 @@ func (s *IntegrationTestSuite) TestGroup() { s.Require().NoError(err) out := &types.QueryDeploymentsResponse{} - err = val.ClientCtx.JSONCodec.UnmarshalJSON(resp.Bytes(), out) + err = val.ClientCtx.Codec.UnmarshalJSON(resp.Bytes(), out) s.Require().NoError(err) s.Require().Len(out.Deployments, 1, "Deployment Create Failed") deployments := out.Deployments @@ -235,7 +235,7 @@ func (s *IntegrationTestSuite) TestGroup() { s.Require().NoError(err) var group types.Group - err = val.ClientCtx.JSONCodec.UnmarshalJSON(resp.Bytes(), &group) + err = val.ClientCtx.Codec.UnmarshalJSON(resp.Bytes(), &group) s.Require().NoError(err) s.Require().Equal(types.GroupClosed, group.State) } diff --git a/x/deployment/client/cli/grpc_rest_test.go b/x/deployment/client/cli/grpc_rest_test.go index 461ca77063..def109c6eb 100644 --- a/x/deployment/client/cli/grpc_rest_test.go +++ b/x/deployment/client/cli/grpc_rest_test.go @@ -74,7 +74,7 @@ func (s *GRPCRestTestSuite) SetupSuite() { s.Require().NoError(err) out := &types.QueryDeploymentsResponse{} - err = val.ClientCtx.JSONCodec.UnmarshalJSON(resp.Bytes(), out) + err = val.ClientCtx.Codec.UnmarshalJSON(resp.Bytes(), out) s.Require().NoError(err) s.Require().Len(out.Deployments, 1, "Deployment Create Failed") deployments := out.Deployments @@ -134,7 +134,7 @@ func (s *GRPCRestTestSuite) TestGetDeployments() { s.Require().NoError(err) var deployments types.QueryDeploymentsResponse - err = val.ClientCtx.JSONCodec.UnmarshalJSON(resp, &deployments) + err = val.ClientCtx.Codec.UnmarshalJSON(resp, &deployments) if tc.expErr { s.Require().NotNil(err) @@ -194,7 +194,7 @@ func (s *GRPCRestTestSuite) TestGetDeployment() { s.Require().NoError(err) var out types.QueryDeploymentResponse - err = val.ClientCtx.JSONCodec.UnmarshalJSON(resp, &out) + err = val.ClientCtx.Codec.UnmarshalJSON(resp, &out) if tc.expErr { s.Require().Error(err) @@ -254,7 +254,7 @@ func (s *GRPCRestTestSuite) TestGetGroup() { s.Require().NoError(err) var out types.QueryGroupResponse - err = val.ClientCtx.JSONCodec.UnmarshalJSON(resp, &out) + err = val.ClientCtx.Codec.UnmarshalJSON(resp, &out) if tc.expErr { s.Require().Error(err) diff --git a/x/market/client/cli/cli_test.go b/x/market/client/cli/cli_test.go index 1c1f878ca7..865d563bcf 100644 --- a/x/market/client/cli/cli_test.go +++ b/x/market/client/cli/cli_test.go @@ -96,7 +96,7 @@ func (s *IntegrationTestSuite) Test1QueryOrders() { s.Require().NoError(err) out := &dtypes.QueryDeploymentsResponse{} - err = val.ClientCtx.JSONCodec.UnmarshalJSON(resp.Bytes(), out) + err = val.ClientCtx.Codec.UnmarshalJSON(resp.Bytes(), out) s.Require().NoError(err) s.Require().Len(out.Deployments, 1) s.Require().Equal(val.Address.String(), out.Deployments[0].Deployment.DeploymentID.Owner) @@ -106,7 +106,7 @@ func (s *IntegrationTestSuite) Test1QueryOrders() { s.Require().NoError(err) result := &types.QueryOrdersResponse{} - err = val.ClientCtx.JSONCodec.UnmarshalJSON(resp.Bytes(), result) + err = val.ClientCtx.Codec.UnmarshalJSON(resp.Bytes(), result) s.Require().NoError(err) s.Require().Len(result.Orders, 1) orders := result.Orders @@ -118,7 +118,7 @@ func (s *IntegrationTestSuite) Test1QueryOrders() { s.Require().NoError(err) var order types.Order - err = val.ClientCtx.JSONCodec.UnmarshalJSON(resp.Bytes(), &order) + err = val.ClientCtx.Codec.UnmarshalJSON(resp.Bytes(), &order) s.Require().NoError(err) s.Require().Equal(createdOrder, order) @@ -131,7 +131,7 @@ func (s *IntegrationTestSuite) Test1QueryOrders() { s.Require().NoError(err) result = &types.QueryOrdersResponse{} - err = val.ClientCtx.JSONCodec.UnmarshalJSON(resp.Bytes(), result) + err = val.ClientCtx.Codec.UnmarshalJSON(resp.Bytes(), result) s.Require().NoError(err) s.Require().Len(result.Orders, 1) s.Require().Equal(createdOrder, result.Orders[0]) @@ -181,7 +181,7 @@ func (s *IntegrationTestSuite) Test2CreateBid() { s.Require().NoError(err) var balRes banktypes.QueryAllBalancesResponse - err = val.ClientCtx.JSONCodec.UnmarshalJSON(resp.Bytes(), &balRes) + err = val.ClientCtx.Codec.UnmarshalJSON(resp.Bytes(), &balRes) s.Require().NoError(err) s.Require().Equal(sendTokens.Amount, balRes.Balances.AmountOf(s.cfg.BondDenom)) @@ -204,7 +204,7 @@ func (s *IntegrationTestSuite) Test2CreateBid() { s.Require().NoError(err) out := &ptypes.QueryProvidersResponse{} - err = val.ClientCtx.JSONCodec.UnmarshalJSON(resp.Bytes(), out) + err = val.ClientCtx.Codec.UnmarshalJSON(resp.Bytes(), out) s.Require().NoError(err) s.Require().Len(out.Providers, 1, "Provider Creation Failed in TestCreateBid") s.Require().Equal(keyBar.GetAddress().String(), out.Providers[0].Owner) @@ -214,7 +214,7 @@ func (s *IntegrationTestSuite) Test2CreateBid() { s.Require().NoError(err) result := &types.QueryOrdersResponse{} - err = val.ClientCtx.JSONCodec.UnmarshalJSON(resp.Bytes(), result) + err = val.ClientCtx.Codec.UnmarshalJSON(resp.Bytes(), result) s.Require().NoError(err) s.Require().Len(result.Orders, 1) @@ -242,7 +242,7 @@ func (s *IntegrationTestSuite) Test2CreateBid() { s.Require().NoError(err) bidRes := &types.QueryBidsResponse{} - err = val.ClientCtx.JSONCodec.UnmarshalJSON(resp.Bytes(), bidRes) + err = val.ClientCtx.Codec.UnmarshalJSON(resp.Bytes(), bidRes) s.Require().NoError(err) s.Require().Len(bidRes.Bids, 1) bids := bidRes.Bids @@ -255,7 +255,7 @@ func (s *IntegrationTestSuite) Test2CreateBid() { var bid types.QueryBidResponse fmt.Println(string(resp.Bytes())) - err = val.ClientCtx.JSONCodec.UnmarshalJSON(resp.Bytes(), &bid) + err = val.ClientCtx.Codec.UnmarshalJSON(resp.Bytes(), &bid) s.Require().NoError(err) s.Require().Equal(createdBid, bid.Bid) @@ -268,7 +268,7 @@ func (s *IntegrationTestSuite) Test2CreateBid() { s.Require().NoError(err) bidRes = &types.QueryBidsResponse{} - err = val.ClientCtx.JSONCodec.UnmarshalJSON(resp.Bytes(), bidRes) + err = val.ClientCtx.Codec.UnmarshalJSON(resp.Bytes(), bidRes) s.Require().NoError(err) s.Require().Len(bidRes.Bids, 1) s.Require().Equal(createdBid, bidRes.Bids[0].Bid) @@ -314,7 +314,7 @@ func (s *IntegrationTestSuite) Test3QueryLeasesAndCloseBid() { s.Require().NoError(err) leaseRes := &types.QueryLeasesResponse{} - err = val.ClientCtx.JSONCodec.UnmarshalJSON(resp.Bytes(), leaseRes) + err = val.ClientCtx.Codec.UnmarshalJSON(resp.Bytes(), leaseRes) s.Require().NoError(err) s.Require().Len(leaseRes.Leases, 1) leases := leaseRes.Leases @@ -326,7 +326,7 @@ func (s *IntegrationTestSuite) Test3QueryLeasesAndCloseBid() { s.Require().NoError(err) var lease types.QueryLeaseResponse - err = val.ClientCtx.JSONCodec.UnmarshalJSON(resp.Bytes(), &lease) + err = val.ClientCtx.Codec.UnmarshalJSON(resp.Bytes(), &lease) s.Require().NoError(err) s.Require().Equal(createdLease, lease.Lease) @@ -349,7 +349,7 @@ func (s *IntegrationTestSuite) Test3QueryLeasesAndCloseBid() { s.Require().NoError(err) bidRes := &types.QueryBidsResponse{} - err = val.ClientCtx.JSONCodec.UnmarshalJSON(resp.Bytes(), bidRes) + err = val.ClientCtx.Codec.UnmarshalJSON(resp.Bytes(), bidRes) s.Require().NoError(err) s.Require().Len(bidRes.Bids, 1) s.Require().Equal(keyBar.GetAddress().String(), bidRes.Bids[0].Bid.BidID.Provider) @@ -359,7 +359,7 @@ func (s *IntegrationTestSuite) Test3QueryLeasesAndCloseBid() { s.Require().NoError(err) leaseRes = &types.QueryLeasesResponse{} - err = val.ClientCtx.JSONCodec.UnmarshalJSON(resp.Bytes(), leaseRes) + err = val.ClientCtx.Codec.UnmarshalJSON(resp.Bytes(), leaseRes) s.Require().NoError(err) s.Require().Len(leaseRes.Leases, 1) @@ -390,7 +390,7 @@ func (s *IntegrationTestSuite) Test4CloseOrder() { s.Require().NoError(err) result := &types.QueryOrdersResponse{} - err = val.ClientCtx.JSONCodec.UnmarshalJSON(resp.Bytes(), result) + err = val.ClientCtx.Codec.UnmarshalJSON(resp.Bytes(), result) s.Require().NoError(err) openedOrders := result.Orders s.Require().Len(openedOrders, 0) diff --git a/x/market/client/cli/grpc_rest_test.go b/x/market/client/cli/grpc_rest_test.go index bae35eb1db..06f092f0e8 100644 --- a/x/market/client/cli/grpc_rest_test.go +++ b/x/market/client/cli/grpc_rest_test.go @@ -89,7 +89,7 @@ func (s *GRPCRestTestSuite) SetupSuite() { s.Require().NoError(err) result := &types.QueryOrdersResponse{} - err = val.ClientCtx.JSONCodec.UnmarshalJSON(resp.Bytes(), result) + err = val.ClientCtx.Codec.UnmarshalJSON(resp.Bytes(), result) s.Require().NoError(err) s.Require().Len(result.Orders, 1) orders := result.Orders @@ -149,7 +149,7 @@ func (s *GRPCRestTestSuite) SetupSuite() { s.Require().NoError(err) bidRes := &types.QueryBidsResponse{} - err = val.ClientCtx.JSONCodec.UnmarshalJSON(resp.Bytes(), bidRes) + err = val.ClientCtx.Codec.UnmarshalJSON(resp.Bytes(), bidRes) s.Require().NoError(err) s.Require().Len(bidRes.Bids, 1) bids := bidRes.Bids @@ -176,7 +176,7 @@ func (s *GRPCRestTestSuite) SetupSuite() { s.Require().NoError(err) leaseRes := &types.QueryLeasesResponse{} - err = val.ClientCtx.JSONCodec.UnmarshalJSON(resp.Bytes(), leaseRes) + err = val.ClientCtx.Codec.UnmarshalJSON(resp.Bytes(), leaseRes) s.Require().NoError(err) s.Require().Len(leaseRes.Leases, 1) leases := leaseRes.Leases @@ -240,7 +240,7 @@ func (s *GRPCRestTestSuite) TestGetOrders() { s.Require().NoError(err) var orders types.QueryOrdersResponse - err = val.ClientCtx.JSONCodec.UnmarshalJSON(resp, &orders) + err = val.ClientCtx.Codec.UnmarshalJSON(resp, &orders) if tc.expErr { s.Require().NotNil(err) @@ -300,7 +300,7 @@ func (s *GRPCRestTestSuite) TestGetOrder() { s.Require().NoError(err) var out types.QueryOrderResponse - err = val.ClientCtx.JSONCodec.UnmarshalJSON(resp, &out) + err = val.ClientCtx.Codec.UnmarshalJSON(resp, &out) if tc.expErr { s.Require().Error(err) @@ -363,7 +363,7 @@ func (s *GRPCRestTestSuite) TestGetBids() { s.Require().NoError(err) var bids types.QueryBidsResponse - err = val.ClientCtx.JSONCodec.UnmarshalJSON(resp, &bids) + err = val.ClientCtx.Codec.UnmarshalJSON(resp, &bids) if tc.expErr { s.Require().NotNil(err) @@ -423,7 +423,7 @@ func (s *GRPCRestTestSuite) TestGetBid() { s.Require().NoError(err) var out types.QueryBidResponse - err = val.ClientCtx.JSONCodec.UnmarshalJSON(resp, &out) + err = val.ClientCtx.Codec.UnmarshalJSON(resp, &out) if tc.expErr { s.Require().Error(err) @@ -486,7 +486,7 @@ func (s *GRPCRestTestSuite) TestGetLeases() { s.Require().NoError(err) var leases types.QueryLeasesResponse - err = val.ClientCtx.JSONCodec.UnmarshalJSON(resp, &leases) + err = val.ClientCtx.Codec.UnmarshalJSON(resp, &leases) if tc.expErr { s.Require().NotNil(err) @@ -547,7 +547,7 @@ func (s *GRPCRestTestSuite) TestGetLease() { s.Require().NoError(err) var out types.QueryLeaseResponse - err = val.ClientCtx.JSONCodec.UnmarshalJSON(resp, &out) + err = val.ClientCtx.Codec.UnmarshalJSON(resp, &out) if tc.expErr { s.Require().Error(err) diff --git a/x/provider/client/cli/cli_test.go b/x/provider/client/cli/cli_test.go index bef5769992..22e02bd6cf 100644 --- a/x/provider/client/cli/cli_test.go +++ b/x/provider/client/cli/cli_test.go @@ -68,7 +68,7 @@ func (s *IntegrationTestSuite) TestProvider() { s.Require().NoError(err) out := &types.QueryProvidersResponse{} - err = val.ClientCtx.JSONCodec.UnmarshalJSON(resp.Bytes(), out) + err = val.ClientCtx.Codec.UnmarshalJSON(resp.Bytes(), out) s.Require().NoError(err) s.Require().Len(out.Providers, 1, "Provider Creation Failed") providers := out.Providers @@ -80,7 +80,7 @@ func (s *IntegrationTestSuite) TestProvider() { s.Require().NoError(err) var provider types.Provider - err = val.ClientCtx.JSONCodec.UnmarshalJSON(resp.Bytes(), &provider) + err = val.ClientCtx.Codec.UnmarshalJSON(resp.Bytes(), &provider) s.Require().NoError(err) s.Require().Equal(createdProvider, provider) @@ -102,7 +102,7 @@ func (s *IntegrationTestSuite) TestProvider() { s.Require().NoError(err) var providerV2 types.Provider - err = val.ClientCtx.JSONCodec.UnmarshalJSON(resp.Bytes(), &providerV2) + err = val.ClientCtx.Codec.UnmarshalJSON(resp.Bytes(), &providerV2) s.Require().NoError(err) s.Require().NotEqual(provider.HostURI, providerV2.HostURI) } diff --git a/x/provider/client/cli/grpc_rest_test.go b/x/provider/client/cli/grpc_rest_test.go index 787b977a5c..24cbca50e6 100644 --- a/x/provider/client/cli/grpc_rest_test.go +++ b/x/provider/client/cli/grpc_rest_test.go @@ -60,7 +60,7 @@ func (s *GRPCRestTestSuite) SetupSuite() { s.Require().NoError(err) out := &types.QueryProvidersResponse{} - err = val.ClientCtx.JSONCodec.UnmarshalJSON(resp.Bytes(), out) + err = val.ClientCtx.Codec.UnmarshalJSON(resp.Bytes(), out) s.Require().NoError(err) s.Require().Len(out.Providers, 1, "Provider Creation Failed") providers := out.Providers @@ -100,7 +100,7 @@ func (s *GRPCRestTestSuite) TestGetProviders() { s.Require().NoError(err) var providers types.QueryProvidersResponse - err = val.ClientCtx.JSONCodec.UnmarshalJSON(resp, &providers) + err = val.ClientCtx.Codec.UnmarshalJSON(resp, &providers) s.Require().NoError(err) s.Require().Len(providers.Providers, tc.expLen) @@ -148,7 +148,7 @@ func (s *GRPCRestTestSuite) TestGetProvider() { s.Require().NoError(err) var out types.QueryProviderResponse - err = val.ClientCtx.JSONCodec.UnmarshalJSON(resp, &out) + err = val.ClientCtx.Codec.UnmarshalJSON(resp, &out) if tc.expErr { s.Require().Error(err) From 69d9a5c4a4b8c7696d1eab8095625849da2c45cc Mon Sep 17 00:00:00 2001 From: akhilkumarpilli Date: Mon, 26 Jul 2021 13:00:50 +0530 Subject: [PATCH 08/10] Fix e2e tests issue --- integration/e2e_test.go | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) diff --git a/integration/e2e_test.go b/integration/e2e_test.go index ea98b31418..11932860ea 100644 --- a/integration/e2e_test.go +++ b/integration/e2e_test.go @@ -6,8 +6,6 @@ import ( "encoding/json" "errors" "fmt" - sdktest "github.com/cosmos/cosmos-sdk/testutil" - "github.com/ovrclk/akash/provider/gateway/rest" "io/ioutil" "net" "net/url" @@ -17,6 +15,9 @@ import ( "testing" "time" + sdktest "github.com/cosmos/cosmos-sdk/testutil" + "github.com/ovrclk/akash/provider/gateway/rest" + "github.com/cosmos/cosmos-sdk/server" bankcli "github.com/cosmos/cosmos-sdk/x/bank/client/testutil" "github.com/stretchr/testify/assert" @@ -895,7 +896,7 @@ func (s *E2EDeploymentUpdate) TestE2ELeaseShell() { s.Require().NoError(err) leaseRes := &mtypes.QueryLeasesResponse{} - err = s.validator.ClientCtx.JSONMarshaler.UnmarshalJSON(resp.Bytes(), leaseRes) + err = s.validator.ClientCtx.Codec.UnmarshalJSON(resp.Bytes(), leaseRes) s.Require().NoError(err) lease := newestLease(leaseRes.Leases) From c136c5bb638ca342b12fc5e6a67559a455502ca6 Mon Sep 17 00:00:00 2001 From: akhilkumarpilli Date: Mon, 26 Jul 2021 13:27:11 +0530 Subject: [PATCH 09/10] Fix min gas price issue in tests --- integration/e2e_test.go | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/integration/e2e_test.go b/integration/e2e_test.go index 11932860ea..034847e19a 100644 --- a/integration/e2e_test.go +++ b/integration/e2e_test.go @@ -82,7 +82,7 @@ func (s *IntegrationTestSuite) SetupSuite() { // Create a network for test cfg := testutil.DefaultConfig() cfg.NumValidators = 1 - cfg.MinGasPrices = "" + cfg.MinGasPrices = fmt.Sprintf("0%s", cfg.BondDenom) s.cfg = cfg s.network = network.New(s.T(), cfg) From 550d8af12c24ba956e0dcdcff1eb672099bcf87f Mon Sep 17 00:00:00 2001 From: akhilkumarpilli Date: Sat, 21 Aug 2021 11:50:53 +0530 Subject: [PATCH 10/10] Update SDK to v0.43.0 --- app/app.go | 23 +++++++++-------------- app/config.go | 2 ++ go.mod | 4 ++-- go.sum | 36 ++++-------------------------------- 4 files changed, 17 insertions(+), 48 deletions(-) diff --git a/app/app.go b/app/app.go index 33993938fa..2b2fed8ad1 100644 --- a/app/app.go +++ b/app/app.go @@ -75,7 +75,6 @@ import ( escrowkeeper "github.com/ovrclk/akash/x/escrow/keeper" "github.com/tendermint/tendermint/libs/log" - tmproto "github.com/tendermint/tendermint/proto/tendermint/types" dbm "github.com/tendermint/tm-db" abci "github.com/tendermint/tendermint/abci/types" @@ -93,6 +92,7 @@ import ( ibctransferkeeper "github.com/cosmos/ibc-go/modules/apps/transfer/keeper" ibctransfertypes "github.com/cosmos/ibc-go/modules/apps/transfer/types" ibcclient "github.com/cosmos/ibc-go/modules/core/02-client" + ibcclienttypes "github.com/cosmos/ibc-go/modules/core/02-client/types" ibchost "github.com/cosmos/ibc-go/modules/core/24-host" ibckeeper "github.com/cosmos/ibc-go/modules/core/keeper" @@ -210,6 +210,10 @@ func NewApp( scopedIBCKeeper := app.keeper.cap.ScopeToModule(ibchost.ModuleName) scopedTransferKeeper := app.keeper.cap.ScopeToModule(ibctransfertypes.ModuleName) + // Applications that wish to enforce statically created ScopedKeepers should call `Seal` after creating + // their scoped modules in `NewApp` with `ScopeToModule` + app.keeper.cap.Seal() + app.keeper.acct = authkeeper.NewAccountKeeper( appCodec, app.keys[authtypes.StoreKey], @@ -340,7 +344,7 @@ func NewApp( AddRoute(paramproposal.RouterKey, params.NewParamChangeProposalHandler(app.keeper.params)). AddRoute(distrtypes.RouterKey, distr.NewCommunityPoolSpendProposalHandler(app.keeper.distr)). AddRoute(upgradetypes.RouterKey, upgrade.NewSoftwareUpgradeProposalHandler(app.keeper.upgrade)). - AddRoute(ibchost.RouterKey, ibcclient.NewClientProposalHandler(app.keeper.ibc.ClientKeeper)) + AddRoute(ibcclienttypes.RouterKey, ibcclient.NewClientProposalHandler(app.keeper.ibc.ClientKeeper)) govKeeper := govkeeper.NewKeeper( appCodec, @@ -409,9 +413,10 @@ func NewApp( }, app.akashAppModules()...)..., ) + // NOTE: capability module's beginblocker must come before any modules using capabilities (e.g. IBC) app.mm.SetOrderBeginBlockers( - upgradetypes.ModuleName, minttypes.ModuleName, distrtypes.ModuleName, slashingtypes.ModuleName, - evidencetypes.ModuleName, stakingtypes.ModuleName, ibchost.ModuleName, + upgradetypes.ModuleName, capabilitytypes.ModuleName, minttypes.ModuleName, distrtypes.ModuleName, + slashingtypes.ModuleName, evidencetypes.ModuleName, stakingtypes.ModuleName, ibchost.ModuleName, ) app.mm.SetOrderEndBlockers( append([]string{ @@ -507,16 +512,6 @@ func NewApp( if err := app.LoadLatestVersion(); err != nil { tmos.Exit("app initialization:" + err.Error()) } - - // Initialize and seal the capability keeper so all persistent capabilities - // are loaded in-memory and prevent any further modules from creating scoped - // sub-keepers. - // This must be done during creation of baseapp rather than in InitChain so - // that in-memory capabilities get regenerated on app restart. - // Note that since this reads from the store, we can only perform it when - // `loadLatest` is set to true. - ctx := app.BaseApp.NewUncachedContext(true, tmproto.Header{}) - app.keeper.cap.InitializeAndSeal(ctx) } app.keeper.scopedIBC = scopedIBCKeeper diff --git a/app/config.go b/app/config.go index 2d9f6eda30..e77e667967 100644 --- a/app/config.go +++ b/app/config.go @@ -40,6 +40,7 @@ import ( transfer "github.com/cosmos/ibc-go/modules/apps/transfer" ibctransfertypes "github.com/cosmos/ibc-go/modules/apps/transfer/types" ibc "github.com/cosmos/ibc-go/modules/core" + ibcclientclient "github.com/cosmos/ibc-go/modules/core/02-client/client" ibchost "github.com/cosmos/ibc-go/modules/core/24-host" appparams "github.com/ovrclk/akash/app/params" ) @@ -64,6 +65,7 @@ var ( gov.NewAppModuleBasic( paramsclient.ProposalHandler, distrclient.ProposalHandler, upgradeclient.ProposalHandler, upgradeclient.CancelProposalHandler, + ibcclientclient.UpdateClientProposalHandler, ibcclientclient.UpgradeProposalHandler, ), // chain parameters params.AppModuleBasic{}, diff --git a/go.mod b/go.mod index 069224ea0b..2dec508828 100644 --- a/go.mod +++ b/go.mod @@ -6,8 +6,8 @@ require ( github.com/avast/retry-go v2.7.0+incompatible github.com/blang/semver v3.5.1+incompatible github.com/boz/go-lifecycle v0.1.1-0.20190620234137-5139c86739b8 - github.com/cosmos/cosmos-sdk v0.43.0-rc2 - github.com/cosmos/ibc-go v1.0.0-alpha2 + github.com/cosmos/cosmos-sdk v0.43.0 + github.com/cosmos/ibc-go v1.0.0 github.com/davecgh/go-spew v1.1.2-0.20180830191138-d8f796af33cc // indirect github.com/go-kit/kit v0.10.0 github.com/gogo/protobuf v1.3.3 diff --git a/go.sum b/go.sum index 11aa970e6c..010b11a4be 100644 --- a/go.sum +++ b/go.sum @@ -106,7 +106,6 @@ github.com/aristanetworks/goarista v0.0.0-20170210015632-ea17b1a17847/go.mod h1: github.com/armon/circbuf v0.0.0-20150827004946-bbbad097214e/go.mod h1:3U/XgcO3hCbHZ8TKRvWD2dDTCfh9M9ya+I9JpbB7O8o= github.com/armon/consul-api v0.0.0-20180202201655-eb2c6b5be1b6/go.mod h1:grANhF5doyWs3UAsr3K4I6qtAmlQcZDesFNEHPZAzj8= github.com/armon/go-metrics v0.0.0-20180917152333-f0300d1749da/go.mod h1:Q73ZrmVTwzkszR9V5SSuryQ31EELlFMUz1kKyl939pY= -github.com/armon/go-metrics v0.3.8/go.mod h1:4O98XIr/9W0sxpJ8UaYkvjk10Iff7SnFrb4QAOwNTFc= github.com/armon/go-metrics v0.3.9 h1:O2sNqxBdvq8Eq5xmzljcYzAORli6RWCvEym4cJf9m18= github.com/armon/go-metrics v0.3.9/go.mod h1:4O98XIr/9W0sxpJ8UaYkvjk10Iff7SnFrb4QAOwNTFc= github.com/armon/go-radix v0.0.0-20180808171621-7fddfc383310/go.mod h1:ufUuZ+zHj4x4TnLV4JWEpy2hxWSpsRywHrMgIH9cCH8= @@ -171,8 +170,6 @@ github.com/cloudflare/cloudflare-go v0.10.2-0.20190916151808-a80f83b9add9/go.mod github.com/cncf/udpa/go v0.0.0-20191209042840-269d4d468f6f/go.mod h1:M8M6+tZqaGXZJjfX53e64911xZQV5JYwmTeXPW+k8Sc= github.com/cockroachdb/datadriven v0.0.0-20190809214429-80d97fb3cbaa/go.mod h1:zn76sxSg3SzpJ0PPJaLDCu+Bu0Lg3sKTORVIj19EIF8= github.com/codahale/hdrhistogram v0.0.0-20161010025455-3a0bb77429bd/go.mod h1:sE/e/2PUdi/liOCUjSTXgM1o87ZssimdTWN964YiIeI= -github.com/coinbase/rosetta-sdk-go v0.5.8/go.mod h1:xd4wYUhV3LkY78SPH8BUhc88rXfn2jYgN9BfiSjbcvM= -github.com/coinbase/rosetta-sdk-go v0.5.9/go.mod h1:xd4wYUhV3LkY78SPH8BUhc88rXfn2jYgN9BfiSjbcvM= github.com/coinbase/rosetta-sdk-go v0.6.10 h1:rgHD/nHjxLh0lMEdfGDqpTtlvtSBwULqrrZ2qPdNaCM= github.com/coinbase/rosetta-sdk-go v0.6.10/go.mod h1:J/JFMsfcePrjJZkwQFLh+hJErkAmdm9Iyy3D5Y0LfXo= github.com/confio/ics23/go v0.0.0-20200817220745-f173e6211efb/go.mod h1:E45NqnlpxGnpfTWL/xauN7MRwEE28T4Dd4uraToOaKg= @@ -190,9 +187,8 @@ github.com/coreos/go-systemd v0.0.0-20190321100706-95778dfbb74e/go.mod h1:F5haX7 github.com/coreos/go-systemd/v22 v22.3.2/go.mod h1:Y58oyj3AT4RCenI/lSvhwexgC+NSVTIJ3seZv2GcEnc= github.com/coreos/pkg v0.0.0-20160727233714-3ac0863d7acf/go.mod h1:E3G3o1h8I7cfcXa63jLwjI0eiQQMgzzUDFVpN/nH/eA= github.com/coreos/pkg v0.0.0-20180928190104-399ea9e2e55f/go.mod h1:E3G3o1h8I7cfcXa63jLwjI0eiQQMgzzUDFVpN/nH/eA= -github.com/cosmos/cosmos-sdk v0.43.0-beta1/go.mod h1:rpCPaC3MnityU4Io4CDZqZB4GMtPqNeYXxPk8iRqmYM= -github.com/cosmos/cosmos-sdk v0.43.0-rc2 h1:9xww4vDnsNyZyF1p9U4zpc8tc5Ctx763WQWLccddP8A= -github.com/cosmos/cosmos-sdk v0.43.0-rc2/go.mod h1:ctcrTEAhei9s8O3KSNvL0dxe+fVQGp07QyRb/7H9JYE= +github.com/cosmos/cosmos-sdk v0.43.0 h1:l2GXJMDVtJyHb35pDUCw+uyr6eZtBo8vt+7PSsq+Fjo= +github.com/cosmos/cosmos-sdk v0.43.0/go.mod h1:ctcrTEAhei9s8O3KSNvL0dxe+fVQGp07QyRb/7H9JYE= github.com/cosmos/go-bip39 v0.0.0-20180819234021-555e2067c45d/go.mod h1:tSxLoYXyBmiFeKpvmq4dzayMdCjCnu8uqmCysIGBT2Y= github.com/cosmos/go-bip39 v1.0.0 h1:pcomnQdrdH22njcAatO0yWojsUnCO3y2tNoV1cb6hHY= github.com/cosmos/go-bip39 v1.0.0/go.mod h1:RNJv0H/pOIVgxw6KS7QeX2a0Uo0aKUlfhZ4xuwvCdJw= @@ -201,8 +197,8 @@ github.com/cosmos/iavl v0.15.0-rc5/go.mod h1:WqoPL9yPTQ85QBMT45OOUzPxG/U/JcJoN7u github.com/cosmos/iavl v0.15.3/go.mod h1:OLjQiAQ4fGD2KDZooyJG9yz+p2ao2IAYSbke8mVvSA4= github.com/cosmos/iavl v0.16.0 h1:ICIOB8xysirTX27GmVAaoeSpeozzgSu9d49w36xkVJA= github.com/cosmos/iavl v0.16.0/go.mod h1:2A8O/Jz9YwtjqXMO0CjnnbTYEEaovE8jWcwrakH3PoE= -github.com/cosmos/ibc-go v1.0.0-alpha2 h1:G7CQLTgH5CLXp6UajmBcM6GcWb63p+ZTmIYzZoC7rfg= -github.com/cosmos/ibc-go v1.0.0-alpha2/go.mod h1:NU4IARjXt3Hj5xcju207SWjDMpqMx3CHUXejGe0EXfY= +github.com/cosmos/ibc-go v1.0.0 h1:RtIRERSENyApp6WK7Germ3/wq8xvHxfsqfW/Xh+CJ2o= +github.com/cosmos/ibc-go v1.0.0/go.mod h1:2wHKQUa+BLJMEyN635KrHfmTTwSNHBtXcqdY8JWGuXA= github.com/cpuguy83/go-md2man v1.0.10 h1:BSKMNlYxDvnunlTymqtgONjNnaRV1sTpcovwwjF22jk= github.com/cpuguy83/go-md2man v1.0.10/go.mod h1:SmD6nW6nTyfqj6ABTjUi3V3JVMnlJmwcJI5acqYI6dE= github.com/cpuguy83/go-md2man/v2 v2.0.0-20190314233015-f79a8a8ca69d/go.mod h1:maD7wRr/U5Z6m/iR4s+kqSMx2CaBsrgA7czyZG/E6dU= @@ -259,7 +255,6 @@ github.com/enigmampc/btcutil v1.0.3-0.20200723161021-e2fb6adb2a25 h1:2vLKys4RBU4 github.com/enigmampc/btcutil v1.0.3-0.20200723161021-e2fb6adb2a25/go.mod h1:hTr8+TLQmkUkgcuh3mcr5fjrT9c64ZzsBCdCEC6UppY= github.com/envoyproxy/go-control-plane v0.9.4/go.mod h1:6rpuAdCZL397s3pYoYcLgu1mIlRU8Am5FuJP05cCM98= github.com/envoyproxy/protoc-gen-validate v0.1.0/go.mod h1:iSmxcyjqTsJpI2R4NaDN7+kN2VEUnK/pcBlmesArF7c= -github.com/ethereum/go-ethereum v1.9.23/go.mod h1:JIfVb6esrqALTExdz9hRYvrP0xBDf6wCncIu1hNwHpM= github.com/ethereum/go-ethereum v1.9.25/go.mod h1:vMkFiYLHI4tgPw4k2j4MHKoovchFE8plZ0M9VMk4/oM= github.com/evanphx/json-patch v4.9.0+incompatible h1:kLcOMZeuLAJvL2BPWLMIj5oaZQobrkAqrL+WFZwQses= github.com/evanphx/json-patch v4.9.0+incompatible/go.mod h1:50XU6AFN0ol/bzJsmQLiYLvXMP4fmwYFNcr97nuDLSk= @@ -275,7 +270,6 @@ github.com/facebookgo/subset v0.0.0-20150612182917-8dac2c3c4870/go.mod h1:5tD+ne github.com/fatih/camelcase v1.0.0/go.mod h1:yN2Sb0lFhZJUdVvtELVWefmrXpuZESvPmqwoZc+/fpc= github.com/fatih/color v1.3.0/go.mod h1:Zm6kSWBoL9eyXnKyktHP6abPY2pDugNf5KwzbycvMj4= github.com/fatih/color v1.7.0/go.mod h1:Zm6kSWBoL9eyXnKyktHP6abPY2pDugNf5KwzbycvMj4= -github.com/fatih/color v1.9.0/go.mod h1:eQcE1qtQxscV5RaZvpXrrb8Drkc3/DdQ+uUYCNjL+zU= github.com/fatih/color v1.10.0/go.mod h1:ELkj/draVOlAH/xkhN6mQ50Qd0MPOk5AAr3maGEBuJM= github.com/felixge/httpsnoop v1.0.1 h1:lvB5Jl89CsZtGIWuTcDM1E/vkVs49/Ml7JJe07l8SPQ= github.com/felixge/httpsnoop v1.0.1/go.mod h1:m8KPJKqk1gH5J9DgRY2ASl2lWCfGKXixSwevea8zH2U= @@ -384,8 +378,6 @@ github.com/golang/protobuf v1.5.2 h1:ROPKBNFfQgOUMifHyP+KYbvpjbdoFNs+aK7DXlji0Tw github.com/golang/protobuf v1.5.2/go.mod h1:XVQd3VNwM+JqD3oG2Ue2ip4fOMUkwXdXDdiuN0vRsmY= github.com/golang/snappy v0.0.0-20180518054509-2e65f85255db/go.mod h1:/XxbfmMg8lxefKM7IXC3fBNl/7bRcc72aCRzEWrmP2Q= github.com/golang/snappy v0.0.1/go.mod h1:/XxbfmMg8lxefKM7IXC3fBNl/7bRcc72aCRzEWrmP2Q= -github.com/golang/snappy v0.0.2-0.20200707131729-196ae77b8a26/go.mod h1:/XxbfmMg8lxefKM7IXC3fBNl/7bRcc72aCRzEWrmP2Q= -github.com/golang/snappy v0.0.2/go.mod h1:/XxbfmMg8lxefKM7IXC3fBNl/7bRcc72aCRzEWrmP2Q= github.com/golang/snappy v0.0.3-0.20201103224600-674baa8c7fc3 h1:ur2rms48b3Ep1dxh7aUV2FZEQ8jEVO2F6ILKx8ofkAg= github.com/golang/snappy v0.0.3-0.20201103224600-674baa8c7fc3/go.mod h1:/XxbfmMg8lxefKM7IXC3fBNl/7bRcc72aCRzEWrmP2Q= github.com/golangplus/bytes v0.0.0-20160111154220-45c989fe5450/go.mod h1:Bk6SMAONeMXrxql8uvOKuAZSu8aM5RUGv+1C6IJaEho= @@ -590,16 +582,12 @@ github.com/mailru/easyjson v0.7.0 h1:aizVhC/NAAcKWb+5QsU1iNOZb4Yws5UO2I+aIprQITM github.com/mailru/easyjson v0.7.0/go.mod h1:KAzv3t3aY1NaHWoQz1+4F1ccyAH66Jk7yos7ldAVICs= github.com/mattn/go-colorable v0.0.9/go.mod h1:9vuHe8Xs5qXnSaW/c/ABM9alt+Vo+STaOChaDxuIBZU= github.com/mattn/go-colorable v0.1.0/go.mod h1:9vuHe8Xs5qXnSaW/c/ABM9alt+Vo+STaOChaDxuIBZU= -github.com/mattn/go-colorable v0.1.4/go.mod h1:U0ppj6V5qS13XJ6of8GYAs25YV2eR4EVcfRqFIhoBtE= -github.com/mattn/go-colorable v0.1.7/go.mod h1:u6P/XSegPjTcexA+o6vUJrdnUu04hMope9wVRipJSqc= github.com/mattn/go-colorable v0.1.8/go.mod h1:u6P/XSegPjTcexA+o6vUJrdnUu04hMope9wVRipJSqc= github.com/mattn/go-ieproxy v0.0.0-20190610004146-91bb50d98149/go.mod h1:31jz6HNzdxOmlERGGEc4v/dMssOfmp2p5bT/okiKFFc= github.com/mattn/go-ieproxy v0.0.0-20190702010315-6dee0af9227d/go.mod h1:31jz6HNzdxOmlERGGEc4v/dMssOfmp2p5bT/okiKFFc= github.com/mattn/go-isatty v0.0.3/go.mod h1:M+lRXTBqGeGNdLjl/ufCoiOlB5xdOkqRJdNxMWT7Zi4= github.com/mattn/go-isatty v0.0.4/go.mod h1:M+lRXTBqGeGNdLjl/ufCoiOlB5xdOkqRJdNxMWT7Zi4= github.com/mattn/go-isatty v0.0.5-0.20180830101745-3fb116b82035/go.mod h1:M+lRXTBqGeGNdLjl/ufCoiOlB5xdOkqRJdNxMWT7Zi4= -github.com/mattn/go-isatty v0.0.8/go.mod h1:Iq45c/XA43vh69/j3iqttzPXn0bhXyGjM0Hdxcsrc5s= -github.com/mattn/go-isatty v0.0.11/go.mod h1:PhnuNfih5lzO57/f3n+odYbM4JtupLOxQOAqxQCu2WE= github.com/mattn/go-isatty v0.0.12/go.mod h1:cbi8OIDigv2wuxKPP5vlRcQ1OAZbq2CE4Kysco4FUpU= github.com/mattn/go-isatty v0.0.13 h1:qdl+GuBjcsKKDco5BsxPJlId98mSWNKqYA+Co0SC1yA= github.com/mattn/go-isatty v0.0.13/go.mod h1:cbi8OIDigv2wuxKPP5vlRcQ1OAZbq2CE4Kysco4FUpU= @@ -733,7 +721,6 @@ github.com/prometheus/client_golang v1.3.0/go.mod h1:hJaj2vgQTGQmVCsAACORcieXFeD github.com/prometheus/client_golang v1.4.0/go.mod h1:e9GMxYsXl05ICDXkRhurwBS4Q3OK1iX/F2sw+iXX5zU= github.com/prometheus/client_golang v1.7.1/go.mod h1:PY5Wy2awLA44sXw4AOSfFBetzPP4j5+D6mVACh+pe2M= github.com/prometheus/client_golang v1.8.0/go.mod h1:O9VU6huf47PktckDQfMTX0Y8tY0/7TSWwj+ITvv0TnM= -github.com/prometheus/client_golang v1.10.0/go.mod h1:WJM3cc3yu7XKBKa/I8WeZm+V3eltZnBwfENSU7mdogU= github.com/prometheus/client_golang v1.11.0 h1:HNkLOAEQMIDv/K+04rukrLx6ch7msSRwf3/SASFAGtQ= github.com/prometheus/client_golang v1.11.0/go.mod h1:Z6t4BnS23TR94PD6BsDNk8yVqroYurpAkEiz0P2BEV0= github.com/prometheus/client_model v0.0.0-20180712105110-5c3871d89910/go.mod h1:MbSGuTsp3dbXC40dX6PRTWyKYBIrTGTE9sqQNg2J8bo= @@ -751,8 +738,6 @@ github.com/prometheus/common v0.7.0/go.mod h1:DjGbpBbp5NYNiECxcL/VnbXCCaQpKd3tt2 github.com/prometheus/common v0.9.1/go.mod h1:yhUN8i9wzaXS3w1O07YhxHEBxD+W35wd8bs7vj7HSQ4= github.com/prometheus/common v0.10.0/go.mod h1:Tlit/dnDKsSWFlCLTWaA1cyBgKHSMdTB80sz/V91rCo= github.com/prometheus/common v0.14.0/go.mod h1:U+gB1OBLb1lF3O42bTCL+FK18tX9Oar16Clt/msog/s= -github.com/prometheus/common v0.18.0/go.mod h1:U+gB1OBLb1lF3O42bTCL+FK18tX9Oar16Clt/msog/s= -github.com/prometheus/common v0.23.0/go.mod h1:H6QK/N6XVT42whUeIdI3dp36w49c+/iMDk7UAI2qm7Q= github.com/prometheus/common v0.26.0/go.mod h1:M7rCNAaPfAosfx8veZJCuw84e35h3Cfd9VFqTh1DIvc= github.com/prometheus/common v0.29.0 h1:3jqPBvKT4OHAbje2Ql7KeaaSicDBCxMYwEJU1zRJceE= github.com/prometheus/common v0.29.0/go.mod h1:vu+V0TpY+O6vW9J44gczi3Ap/oXXR10b+M/gUGO4Hls= @@ -786,7 +771,6 @@ github.com/rs/cors v1.7.1-0.20191011001009-dcbccb712443 h1:UnXq+ihqH+nJzMBSIiuRt github.com/rs/cors v1.7.1-0.20191011001009-dcbccb712443/go.mod h1:gFx+x8UowdsKA9AchylcLynDq+nNFfI8FkUZdN/jGCU= github.com/rs/xhandler v0.0.0-20160618193221-ed27b6fd6521/go.mod h1:RvLn4FgxWubrpZHtQLnOf6EwhN2hEMusxZOhcW9H3UQ= github.com/rs/xid v1.2.1/go.mod h1:+uKXf+4Djp6Md1KODXJxgGQPKngRmWyn10oCKFzNHOQ= -github.com/rs/zerolog v1.21.0/go.mod h1:ZPhntP/xmq1nnND05hhpAh2QMhSsA4UN3MGZ6O2J3hM= github.com/rs/zerolog v1.23.0 h1:UskrK+saS9P9Y789yNNulYKdARjPZuS35B8gJF2x60g= github.com/rs/zerolog v1.23.0/go.mod h1:6c7hFfxPOy7TacJc4Fcdi24/J0NKYGzjG8FWRI916Qo= github.com/russross/blackfriday v1.5.2 h1:HyvC0ARfnZBqnXwABFeSZHpKvJHJJfPz81GNueLj0oo= @@ -823,7 +807,6 @@ github.com/spaolacci/murmur3 v1.1.0 h1:7c1g84S4BPRrfL5Xrdp6fOJ206sU9y293DDHaoy0b github.com/spaolacci/murmur3 v1.1.0/go.mod h1:JwIasOWyU6f++ZhiEuf87xNszmSA2myDM2Kzu9HwQUA= github.com/spf13/afero v1.1.2/go.mod h1:j4pytiNVoe2o6bmDsKpLACNPDBIoEAkihy7loJ1B0CQ= github.com/spf13/afero v1.2.2/go.mod h1:9ZxEEn6pIJ8Rxe320qSDBk6AsU0r9pR7Q4OcevTdifk= -github.com/spf13/afero v1.3.4/go.mod h1:Ai8FlHk4v/PARR026UzYexafAt9roJ7LcLMAmO6Z93I= github.com/spf13/afero v1.6.0 h1:xoax2sJ2DT8S8xA2paPFjDCScCNeWsg75VG0DLRreiY= github.com/spf13/afero v1.6.0/go.mod h1:Ai8FlHk4v/PARR026UzYexafAt9roJ7LcLMAmO6Z93I= github.com/spf13/cast v1.3.0/go.mod h1:Qx5cxh0v+4UWYiBimWS+eyWzqEqokIECu5etghLkUJE= @@ -876,7 +859,6 @@ github.com/tecbot/gorocksdb v0.0.0-20191217155057-f0fad39f321c h1:g+WoO5jjkqGAzH github.com/tecbot/gorocksdb v0.0.0-20191217155057-f0fad39f321c/go.mod h1:ahpPrc7HpcfEWDQRZEmnXMzHY03mLDYMCxeDzy46i+8= github.com/tendermint/btcd v0.1.1 h1:0VcxPfflS2zZ3RiOAHkBiFUcPvbtRj5O7zHmcJWHV7s= github.com/tendermint/btcd v0.1.1/go.mod h1:DC6/m53jtQzr/NFmMNEu0rxf18/ktVoVtMrnDD5pN+U= -github.com/tendermint/cosmos-rosetta-gateway v0.3.0-rc2.0.20210304154332-87d6ca4410df/go.mod h1:gBPw8WV2Erm4UGHlBRiM3zaEBst4bsuihmMCNQdgP/s= github.com/tendermint/crypto v0.0.0-20191022145703-50d29ede1e15 h1:hqAk8riJvK4RMWx1aInLzndwxKalgi5rTqgfXxOxbEI= github.com/tendermint/crypto v0.0.0-20191022145703-50d29ede1e15/go.mod h1:z4YtwM70uOnk8h0pjJYlj3zdYwi9l03By6iAIF5j/Pk= github.com/tendermint/go-amino v0.16.0 h1:GyhmgQKvqF82e2oZeuMSp9JTN0N09emoSZlb2lyGa2E= @@ -891,12 +873,9 @@ github.com/tendermint/tm-db v0.6.2/go.mod h1:GYtQ67SUvATOcoY8/+x6ylk8Qo02BQyLrAs github.com/tendermint/tm-db v0.6.3/go.mod h1:lfA1dL9/Y/Y8wwyPp2NMLyn5P5Ptr/gvDFNWtrCWSf8= github.com/tendermint/tm-db v0.6.4 h1:3N2jlnYQkXNQclQwd/eKV/NzlqPlfK21cpRRIx80XXQ= github.com/tendermint/tm-db v0.6.4/go.mod h1:dptYhIpJ2M5kUuenLr+Yyf3zQOv1SgBZcl8/BmWlMBw= -github.com/tidwall/gjson v1.6.1/go.mod h1:BaHyNc5bjzYkPqgLq7mdVzeiRtULKULXLgZFKsxEHI0= github.com/tidwall/gjson v1.6.7/go.mod h1:zeFuBCIqD4sN/gmqBzZ4j7Jd6UcA2Fc56x7QFsv+8fI= -github.com/tidwall/match v1.0.1/go.mod h1:LujAq0jyVjBy028G1WhWfIzbpQfMO8bBZ6Tyb0+pL9E= github.com/tidwall/match v1.0.3/go.mod h1:eRSPERbgtNPcGhD8UCthc6PmLEQXEWd3PRB5JTxsfmM= github.com/tidwall/pretty v1.0.2/go.mod h1:XNkn88O1ChpSDQmQeStsy+sBenx6DDtFZJxhVysOjyk= -github.com/tidwall/sjson v1.1.2/go.mod h1:SEzaDwxiPzKzNfUEO4HbYF/m4UCSJDsGgNqsS1LvdoY= github.com/tidwall/sjson v1.1.4/go.mod h1:wXpKXu8CtDjKAZ+3DrKY5ROCorDFahq8l0tey/Lx1fg= github.com/tmc/grpc-websocket-proxy v0.0.0-20170815181823-89b8d40f7ca8/go.mod h1:ncp9v5uamzpCO7NfCPTXjqaC+bZgJeR0sMTm6dMHP7U= github.com/tmc/grpc-websocket-proxy v0.0.0-20190109142713-0ad062ec5ee5/go.mod h1:ncp9v5uamzpCO7NfCPTXjqaC+bZgJeR0sMTm6dMHP7U= @@ -913,7 +892,6 @@ github.com/ugorji/go/codec v1.1.7 h1:2SvQaVZ1ouYrrKKwoSk2pzd4A9evlKJb9oTL+OaLUSs github.com/ugorji/go/codec v1.1.7/go.mod h1:Ax+UKWsSmolVDwsd+7N3ZtXu+yMGCf907BLYF3GoBXY= github.com/urfave/cli v1.20.0/go.mod h1:70zkFmudgCuE/ngEzBv17Jvp/497gISqfk5gWijbERA= github.com/urfave/cli v1.22.1/go.mod h1:Gos4lmkARVdJ6EkW0WaNv/tZAAMe9V7XWyB60NtXRu0= -github.com/vmihailenco/msgpack/v5 v5.0.0-beta.9/go.mod h1:HVxBVPUK/+fZMonk4bi1islLa8V3cfnBug0+4dykPzo= github.com/vmihailenco/msgpack/v5 v5.1.4/go.mod h1:C5gboKD0TJPqWDTVTtrQNfRbiBwHZGo8UTqP/9/XvLI= github.com/vmihailenco/tagparser v0.1.2/go.mod h1:OeAg3pn3UbLjkWt+rN9oFYB6u/cQgqMEUPoW2WPyhdI= github.com/wsddn/go-ecdh v0.0.0-20161211032359-48726bab9208/go.mod h1:IotVbo4F+mw0EzQ08zFqg7pK3FebNXpaMsRy2RT+Ees= @@ -1105,7 +1083,6 @@ golang.org/x/sys v0.0.0-20181122145206-62eef0e2fa9b/go.mod h1:STP8DvDyc/dI5b8T5h golang.org/x/sys v0.0.0-20181205085412-a5c9d58dba9a/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= golang.org/x/sys v0.0.0-20190130150945-aca44879d564/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= golang.org/x/sys v0.0.0-20190215142949-d0b11bdaac8a/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= -golang.org/x/sys v0.0.0-20190222072716-a9d3bda3a223/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= golang.org/x/sys v0.0.0-20190312061237-fead79001313/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20190412213103-97732733099d/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20190422165155-953cdadca894/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= @@ -1150,7 +1127,6 @@ golang.org/x/sys v0.0.0-20200814200057-3d37ad5750ed/go.mod h1:h1NjWce9XRLGQEsW7w golang.org/x/sys v0.0.0-20200824131525-c12d262b63d8/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20200905004654-be1d3432aa8f/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20200909081042-eff7692f9009/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20200922070232-aee5d888a860/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20200930185726-fdedc70b468f/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20201015000850-e3ed0017c211/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20201112073958-5cba982894dd/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= @@ -1161,7 +1137,6 @@ golang.org/x/sys v0.0.0-20210119212857-b64e53b001e4/go.mod h1:h1NjWce9XRLGQEsW7w golang.org/x/sys v0.0.0-20210124154548-22da62e12c0c/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20210220050731-9a76102bfb43/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20210305230114-8fe3ee5dd75b/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20210309074719-68d13333faf2/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20210315160823-c6e025ad8005/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20210320140829-1e4c9ba3b0c4/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20210330210617-4fbd30eecc44/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= @@ -1326,7 +1301,6 @@ google.golang.org/genproto v0.0.0-20201119123407-9b1e624d6bc4/go.mod h1:FWY/as6D google.golang.org/genproto v0.0.0-20201201144952-b05cb90ed32e/go.mod h1:FWY/as6DDZQgahTzZj3fqbO1CbirC29ZNUFHwi0/+no= google.golang.org/genproto v0.0.0-20201210142538-e3217bee35cc/go.mod h1:FWY/as6DDZQgahTzZj3fqbO1CbirC29ZNUFHwi0/+no= google.golang.org/genproto v0.0.0-20201214200347-8c77b98c765d/go.mod h1:FWY/as6DDZQgahTzZj3fqbO1CbirC29ZNUFHwi0/+no= -google.golang.org/genproto v0.0.0-20210114201628-6edceaf6022f/go.mod h1:FWY/as6DDZQgahTzZj3fqbO1CbirC29ZNUFHwi0/+no= google.golang.org/genproto v0.0.0-20210222152913-aa3ee6e6a81c/go.mod h1:FWY/as6DDZQgahTzZj3fqbO1CbirC29ZNUFHwi0/+no= google.golang.org/genproto v0.0.0-20210303154014-9728d6b83eeb/go.mod h1:FWY/as6DDZQgahTzZj3fqbO1CbirC29ZNUFHwi0/+no= google.golang.org/genproto v0.0.0-20210310155132-4ce2db91004e/go.mod h1:FWY/as6DDZQgahTzZj3fqbO1CbirC29ZNUFHwi0/+no= @@ -1364,7 +1338,6 @@ gopkg.in/gcfg.v1 v1.2.3/go.mod h1:yesOnuUOFQAhST5vPY4nbZsb/huCgGGXlipJsBn0b3o= gopkg.in/inf.v0 v0.9.1 h1:73M5CoZyi3ZLMOyDlQh031Cx6N9NDJ2Vvfl76EDAgDc= gopkg.in/inf.v0 v0.9.1/go.mod h1:cWUDdTG/fYaXco+Dcufb5Vnc6Gp2YChqWtbxRZE0mXw= gopkg.in/ini.v1 v1.51.0/go.mod h1:pNLf8WUiyNEtQjuu5G5vTm06TEv9tsIgeAvK8hOrP4k= -gopkg.in/ini.v1 v1.61.0/go.mod h1:pNLf8WUiyNEtQjuu5G5vTm06TEv9tsIgeAvK8hOrP4k= gopkg.in/ini.v1 v1.62.0 h1:duBzk771uxoUuOlyRLkHsygud9+5lrlGjdFBb4mSKDU= gopkg.in/ini.v1 v1.62.0/go.mod h1:pNLf8WUiyNEtQjuu5G5vTm06TEv9tsIgeAvK8hOrP4k= gopkg.in/natefinch/npipe.v2 v2.0.0-20160621034901-c1b8fa8bdcce/go.mod h1:5AcXVHNjg+BDxry382+8OKon8SEWiKktQR07RKPsv1c= @@ -1385,7 +1358,6 @@ gopkg.in/yaml.v2 v2.3.0/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI= gopkg.in/yaml.v2 v2.4.0 h1:D8xgwECY7CYvx+Y2n4sBz93Jn9JRvxdiyyo8CTfuKaY= gopkg.in/yaml.v2 v2.4.0/go.mod h1:RDklbk79AGWmwhnvt/jBztapEOGDOx6ZbXqjP6csGnQ= gopkg.in/yaml.v3 v3.0.0-20200313102051-9f266ea9e77c/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM= -gopkg.in/yaml.v3 v3.0.0-20200615113413-eeeca48fe776/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM= gopkg.in/yaml.v3 v3.0.0-20210107192922-496545a6307b h1:h8qDotaEPuJATrMmW04NCwg7v22aHH28wwpauUhK9Oo= gopkg.in/yaml.v3 v3.0.0-20210107192922-496545a6307b/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM= gotest.tools v2.2.0+incompatible h1:VsBPFP1AI068pPrMxtb/S8Zkgf9xEmTLJjfM+P5UIEo=