add zcashd versioning to GetLightdInfo result
This commit is contained in:
parent
0e0cdcc8ef
commit
33e7312218
25
cmd/root.go
25
cmd/root.go
|
@ -178,9 +178,7 @@ func startServer(opts *common.Options) error {
|
||||||
// of block streamer.
|
// of block streamer.
|
||||||
|
|
||||||
var saplingHeight int
|
var saplingHeight int
|
||||||
var blockHeight int
|
|
||||||
var chainName string
|
var chainName string
|
||||||
var branchID string
|
|
||||||
var rpcClient *rpcclient.Client
|
var rpcClient *rpcclient.Client
|
||||||
var err error
|
var err error
|
||||||
if opts.Darkside {
|
if opts.Darkside {
|
||||||
|
@ -198,13 +196,22 @@ func startServer(opts *common.Options) error {
|
||||||
}
|
}
|
||||||
// Indirect function for test mocking (so unit tests can talk to stub functions).
|
// Indirect function for test mocking (so unit tests can talk to stub functions).
|
||||||
common.RawRequest = rpcClient.RawRequest
|
common.RawRequest = rpcClient.RawRequest
|
||||||
// Get the sapling activation height from the RPC
|
|
||||||
// (this first RPC also verifies that we can communicate with zcashd)
|
// Ensure that we can communicate with zcashd
|
||||||
saplingHeight, blockHeight, chainName, branchID = common.GetSaplingInfo()
|
common.FirstRPC()
|
||||||
common.Log.Info("Got sapling height ", saplingHeight,
|
|
||||||
" block height ", blockHeight,
|
getLightdInfo, err := common.GetLightdInfo()
|
||||||
" chain ", chainName,
|
if err != nil {
|
||||||
" branchID ", branchID)
|
common.Log.WithFields(logrus.Fields{
|
||||||
|
"error": err,
|
||||||
|
}).Fatal("getting initial information from zcashd")
|
||||||
|
}
|
||||||
|
common.Log.Info("Got sapling height ", getLightdInfo.SaplingActivationHeight,
|
||||||
|
" block height ", getLightdInfo.BlockHeight,
|
||||||
|
" chain ", getLightdInfo.ChainName,
|
||||||
|
" branchID ", getLightdInfo.ConsensusBranchId)
|
||||||
|
saplingHeight = int(getLightdInfo.SaplingActivationHeight)
|
||||||
|
chainName = getLightdInfo.ChainName
|
||||||
}
|
}
|
||||||
|
|
||||||
dbPath := filepath.Join(opts.DataDir, "db")
|
dbPath := filepath.Join(opts.DataDir, "db")
|
||||||
|
|
129
common/common.go
129
common/common.go
|
@ -59,27 +59,86 @@ var Sleep func(d time.Duration)
|
||||||
// Log as a global variable simplifies logging
|
// Log as a global variable simplifies logging
|
||||||
var Log *logrus.Entry
|
var Log *logrus.Entry
|
||||||
|
|
||||||
|
// The following are JSON zcashd rpc requests and replies.
|
||||||
type (
|
type (
|
||||||
|
// zcashd rpc "getblockchaininfo"
|
||||||
Upgradeinfo struct {
|
Upgradeinfo struct {
|
||||||
// there are other fields that aren't needed here, omit them
|
// unneeded fields can be omitted
|
||||||
ActivationHeight int
|
ActivationHeight int
|
||||||
|
Status string // "active"
|
||||||
}
|
}
|
||||||
ConsensusInfo struct {
|
ConsensusInfo struct { // consensus branch IDs
|
||||||
Nextblock string
|
Nextblock string
|
||||||
Chaintip string
|
Chaintip string
|
||||||
}
|
}
|
||||||
Blockchaininfo struct {
|
ZcashdRpcReplyGetblockchaininfo struct {
|
||||||
Chain string
|
Chain string
|
||||||
Upgrades map[string]Upgradeinfo
|
Upgrades map[string]Upgradeinfo
|
||||||
Headers int
|
Headers int
|
||||||
Consensus ConsensusInfo
|
Consensus ConsensusInfo
|
||||||
|
EstimatedHeight int
|
||||||
|
}
|
||||||
|
|
||||||
|
// zcashd rpc "getinfo"
|
||||||
|
ZcashdRpcReplyGetinfo struct {
|
||||||
|
Height int
|
||||||
|
ChainName string
|
||||||
|
ConsensusBranchID string
|
||||||
|
Build string
|
||||||
|
Subversion string
|
||||||
|
}
|
||||||
|
|
||||||
|
// zcashd rpc "getaddresstxids"
|
||||||
|
ZcashdRpcRequestGetaddresstxids struct {
|
||||||
|
Addresses []string
|
||||||
|
Start uint64
|
||||||
|
End uint64
|
||||||
|
}
|
||||||
|
|
||||||
|
// zcashd rpc "z_gettreestate"
|
||||||
|
ZcashdRpcReplyGettreestate struct {
|
||||||
|
Height int
|
||||||
|
Hash string
|
||||||
|
Time uint32
|
||||||
|
Sapling struct {
|
||||||
|
Commitments struct {
|
||||||
|
FinalState string
|
||||||
|
}
|
||||||
|
SkipHash string
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
// zcashd rpc "getrawtransaction"
|
||||||
|
ZcashdRpcRequestGetrawtransaction struct {
|
||||||
|
Hex string
|
||||||
|
Height int
|
||||||
|
}
|
||||||
|
ZcashdRpcReplyGetrawtransaction struct {
|
||||||
|
Hex string
|
||||||
|
Height int
|
||||||
|
}
|
||||||
|
|
||||||
|
// zcashd rpc "getaddressbalance"
|
||||||
|
ZcashdRpcREquestGetaddressbalance struct {
|
||||||
|
Addresses []string
|
||||||
|
}
|
||||||
|
ZcashdRpcReplyGetaddressbalance struct {
|
||||||
|
Balance int64
|
||||||
|
}
|
||||||
|
|
||||||
|
// zcashd rpc "getaddressutxos"
|
||||||
|
ZcashdRpcReplyGetaddressutxos []struct {
|
||||||
|
Txid string
|
||||||
|
OutputIndex int64
|
||||||
|
Script string
|
||||||
|
Satoshis uint64
|
||||||
|
Height int
|
||||||
}
|
}
|
||||||
)
|
)
|
||||||
|
|
||||||
// GetSaplingInfo returns the result of the getblockchaininfo RPC to zcashd
|
// FirstRPC tests that we can successfully reach zcashd through the RPC
|
||||||
func GetSaplingInfo() (int, int, string, string) {
|
// interface. The specific RPC used here is not important.
|
||||||
// This request must succeed or we can't go on; give zcashd time to start up
|
func FirstRPC() {
|
||||||
var blockchaininfo Blockchaininfo
|
|
||||||
retryCount := 0
|
retryCount := 0
|
||||||
for {
|
for {
|
||||||
result, rpcErr := RawRequest("getblockchaininfo", []json.RawMessage{})
|
result, rpcErr := RawRequest("getblockchaininfo", []json.RawMessage{})
|
||||||
|
@ -87,7 +146,8 @@ func GetSaplingInfo() (int, int, string, string) {
|
||||||
if retryCount > 0 {
|
if retryCount > 0 {
|
||||||
Log.Warn("getblockchaininfo RPC successful")
|
Log.Warn("getblockchaininfo RPC successful")
|
||||||
}
|
}
|
||||||
err := json.Unmarshal(result, &blockchaininfo)
|
var getblockchaininfo ZcashdRpcReplyGetblockchaininfo
|
||||||
|
err := json.Unmarshal(result, &getblockchaininfo)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
Log.Fatalf("error parsing JSON getblockchaininfo response: %v", err)
|
Log.Fatalf("error parsing JSON getblockchaininfo response: %v", err)
|
||||||
}
|
}
|
||||||
|
@ -105,15 +165,54 @@ func GetSaplingInfo() (int, int, string, string) {
|
||||||
}).Warn("error with getblockchaininfo rpc, retrying...")
|
}).Warn("error with getblockchaininfo rpc, retrying...")
|
||||||
Sleep(time.Duration(10+retryCount*5) * time.Second) // backoff
|
Sleep(time.Duration(10+retryCount*5) * time.Second) // backoff
|
||||||
}
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
func GetLightdInfo() (*walletrpc.LightdInfo, error) {
|
||||||
|
result, rpcErr := RawRequest("getinfo", []json.RawMessage{})
|
||||||
|
if rpcErr != nil {
|
||||||
|
return nil, rpcErr
|
||||||
|
}
|
||||||
|
var getinfoReply ZcashdRpcReplyGetinfo
|
||||||
|
err := json.Unmarshal(result, &getinfoReply)
|
||||||
|
if err != nil {
|
||||||
|
return nil, rpcErr
|
||||||
|
}
|
||||||
|
|
||||||
|
result, rpcErr = RawRequest("getblockchaininfo", []json.RawMessage{})
|
||||||
|
if rpcErr != nil {
|
||||||
|
return nil, rpcErr
|
||||||
|
}
|
||||||
|
var getblockchaininfoReply ZcashdRpcReplyGetblockchaininfo
|
||||||
|
err = json.Unmarshal(result, &getblockchaininfoReply)
|
||||||
|
if err != nil {
|
||||||
|
return nil, rpcErr
|
||||||
|
}
|
||||||
// If the sapling consensus branch doesn't exist, it must be regtest
|
// If the sapling consensus branch doesn't exist, it must be regtest
|
||||||
var saplingHeight int
|
var saplingHeight int
|
||||||
if saplingJSON, ok := blockchaininfo.Upgrades["76b809bb"]; ok { // Sapling ID
|
if saplingJSON, ok := getblockchaininfoReply.Upgrades["76b809bb"]; ok { // Sapling ID
|
||||||
saplingHeight = saplingJSON.ActivationHeight
|
saplingHeight = saplingJSON.ActivationHeight
|
||||||
}
|
}
|
||||||
|
|
||||||
return saplingHeight, blockchaininfo.Headers, blockchaininfo.Chain,
|
vendor := "ECC LightWalletD"
|
||||||
blockchaininfo.Consensus.Nextblock
|
if DarksideEnabled {
|
||||||
|
vendor = "ECC DarksideWalletD"
|
||||||
|
}
|
||||||
|
return &walletrpc.LightdInfo{
|
||||||
|
Version: Version,
|
||||||
|
Vendor: vendor,
|
||||||
|
TaddrSupport: true,
|
||||||
|
ChainName: getinfoReply.ChainName,
|
||||||
|
SaplingActivationHeight: uint64(saplingHeight),
|
||||||
|
ConsensusBranchId: getinfoReply.ConsensusBranchID,
|
||||||
|
BlockHeight: uint64(getinfoReply.Height),
|
||||||
|
GitCommit: GitCommit,
|
||||||
|
Branch: Branch,
|
||||||
|
BuildDate: BuildDate,
|
||||||
|
BuildUser: BuildUser,
|
||||||
|
EstimatedHeight: uint64(getblockchaininfoReply.EstimatedHeight),
|
||||||
|
ZcashdBuild: getinfoReply.Build,
|
||||||
|
ZcashdSubversion: getinfoReply.Subversion,
|
||||||
|
}, nil
|
||||||
}
|
}
|
||||||
|
|
||||||
func getBlockFromRPC(height int) (*walletrpc.CompactBlock, error) {
|
func getBlockFromRPC(height int) (*walletrpc.CompactBlock, error) {
|
||||||
|
|
|
@ -5,7 +5,6 @@ package common
|
||||||
|
|
||||||
import (
|
import (
|
||||||
"bufio"
|
"bufio"
|
||||||
"encoding/hex"
|
|
||||||
"encoding/json"
|
"encoding/json"
|
||||||
"fmt"
|
"fmt"
|
||||||
"io/ioutil"
|
"io/ioutil"
|
||||||
|
@ -33,8 +32,6 @@ var (
|
||||||
getblockchaininfoReply []byte
|
getblockchaininfoReply []byte
|
||||||
logger = logrus.New()
|
logger = logrus.New()
|
||||||
|
|
||||||
getsaplinginfo []byte
|
|
||||||
|
|
||||||
blocks [][]byte // four test blocks
|
blocks [][]byte // four test blocks
|
||||||
)
|
)
|
||||||
|
|
||||||
|
@ -50,13 +47,6 @@ func TestMain(m *testing.M) {
|
||||||
"app": "test",
|
"app": "test",
|
||||||
})
|
})
|
||||||
|
|
||||||
getsaplinginfo, err := ioutil.ReadFile("../testdata/getsaplinginfo")
|
|
||||||
if err != nil {
|
|
||||||
os.Stderr.WriteString(fmt.Sprintf("Cannot open testdata/getsaplinginfo: %v", err))
|
|
||||||
os.Exit(1)
|
|
||||||
}
|
|
||||||
getblockchaininfoReply, _ = hex.DecodeString(string(getsaplinginfo))
|
|
||||||
|
|
||||||
// Several tests need test blocks; read all 4 into memory just once
|
// Several tests need test blocks; read all 4 into memory just once
|
||||||
// (for efficiency).
|
// (for efficiency).
|
||||||
testBlocks, err := os.Open("../testdata/blocks")
|
testBlocks, err := os.Open("../testdata/blocks")
|
||||||
|
@ -88,26 +78,43 @@ func sleepStub(d time.Duration) {
|
||||||
sleepDuration += d
|
sleepDuration += d
|
||||||
}
|
}
|
||||||
|
|
||||||
// ------------------------------------------ GetSaplingInfo()
|
// ------------------------------------------ GetLightdInfo()
|
||||||
|
|
||||||
func getblockchaininfoStub(method string, params []json.RawMessage) (json.RawMessage, error) {
|
func getLightdInfoStub(method string, params []json.RawMessage) (json.RawMessage, error) {
|
||||||
step++
|
step++
|
||||||
// Test retry logic (for the moment, it's very simple, just one retry).
|
switch method {
|
||||||
switch step {
|
case "getinfo":
|
||||||
case 1:
|
r, _ := json.Marshal(&ZcashdRpcReplyGetinfo{
|
||||||
return getblockchaininfoReply, errors.New("first failure")
|
Height: 9977,
|
||||||
|
ChainName: "bugsbunny",
|
||||||
|
ConsensusBranchID: "someid",
|
||||||
|
})
|
||||||
|
return r, nil
|
||||||
|
|
||||||
|
case "getblockchaininfo":
|
||||||
|
// Test retry logic (for the moment, it's very simple, just one retry).
|
||||||
|
switch step {
|
||||||
|
case 1:
|
||||||
|
return json.RawMessage{}, errors.New("first failure")
|
||||||
|
case 2:
|
||||||
|
if sleepCount != 1 || sleepDuration != 15*time.Second {
|
||||||
|
testT.Error("unexpected sleeps", sleepCount, sleepDuration)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
r, _ := json.Marshal(&ZcashdRpcReplyGetblockchaininfo{
|
||||||
|
Headers: 11111,
|
||||||
|
})
|
||||||
|
return r, nil
|
||||||
}
|
}
|
||||||
if sleepCount != 1 || sleepDuration != 15*time.Second {
|
return nil, nil
|
||||||
testT.Error("unexpected sleeps", sleepCount, sleepDuration)
|
|
||||||
}
|
|
||||||
return getblockchaininfoReply, nil
|
|
||||||
}
|
}
|
||||||
|
|
||||||
func TestGetSaplingInfo(t *testing.T) {
|
func TestGetLightdInfo(t *testing.T) {
|
||||||
testT = t
|
testT = t
|
||||||
RawRequest = getblockchaininfoStub
|
RawRequest = getLightdInfoStub
|
||||||
Sleep = sleepStub
|
Sleep = sleepStub
|
||||||
saplingHeight, blockHeight, chainName, branchID := GetSaplingInfo()
|
// This calls the getblockchaininfo rpc just to establish connectivity with zcashd
|
||||||
|
FirstRPC()
|
||||||
|
|
||||||
// Ensure the retry happened as expected
|
// Ensure the retry happened as expected
|
||||||
logFile, err := ioutil.ReadFile("test-log")
|
logFile, err := ioutil.ReadFile("test-log")
|
||||||
|
@ -123,17 +130,21 @@ func TestGetSaplingInfo(t *testing.T) {
|
||||||
}
|
}
|
||||||
|
|
||||||
// Check the success case (second attempt)
|
// Check the success case (second attempt)
|
||||||
if saplingHeight != 419200 {
|
getLightdInfo, err := GetLightdInfo()
|
||||||
t.Error("unexpected saplingHeight", saplingHeight)
|
if err != nil {
|
||||||
|
t.Fatal("GetLightdInfo failed")
|
||||||
}
|
}
|
||||||
if blockHeight != 677713 {
|
if getLightdInfo.SaplingActivationHeight != 0 {
|
||||||
t.Error("unexpected blockHeight", blockHeight)
|
t.Error("unexpected saplingActivationHeight", getLightdInfo.SaplingActivationHeight)
|
||||||
}
|
}
|
||||||
if chainName != "main" {
|
if getLightdInfo.BlockHeight != 9977 {
|
||||||
t.Error("unexpected chainName", chainName)
|
t.Error("unexpected blockHeight", getLightdInfo.BlockHeight)
|
||||||
}
|
}
|
||||||
if branchID != "2bb40e60" {
|
if getLightdInfo.ChainName != "bugsbunny" {
|
||||||
t.Error("unexpected branchID", branchID)
|
t.Error("unexpected chainName", getLightdInfo.ChainName)
|
||||||
|
}
|
||||||
|
if getLightdInfo.ConsensusBranchId != "someid" {
|
||||||
|
t.Error("unexpected ConsensusBranchId", getLightdInfo.ConsensusBranchId)
|
||||||
}
|
}
|
||||||
|
|
||||||
if sleepCount != 1 || sleepDuration != 15*time.Second {
|
if sleepCount != 1 || sleepDuration != 15*time.Second {
|
||||||
|
|
|
@ -366,7 +366,7 @@ func DarksideClearIncomingTransactions() {
|
||||||
func darksideRawRequest(method string, params []json.RawMessage) (json.RawMessage, error) {
|
func darksideRawRequest(method string, params []json.RawMessage) (json.RawMessage, error) {
|
||||||
switch method {
|
switch method {
|
||||||
case "getblockchaininfo":
|
case "getblockchaininfo":
|
||||||
blockchaininfo := Blockchaininfo{
|
blockchaininfo := &ZcashdRpcReplyGetblockchaininfo{
|
||||||
Chain: state.chainName,
|
Chain: state.chainName,
|
||||||
Upgrades: map[string]Upgradeinfo{
|
Upgrades: map[string]Upgradeinfo{
|
||||||
"76b809bb": {ActivationHeight: state.startHeight},
|
"76b809bb": {ActivationHeight: state.startHeight},
|
||||||
|
@ -376,6 +376,10 @@ func darksideRawRequest(method string, params []json.RawMessage) (json.RawMessag
|
||||||
}
|
}
|
||||||
return json.Marshal(blockchaininfo)
|
return json.Marshal(blockchaininfo)
|
||||||
|
|
||||||
|
case "getinfo":
|
||||||
|
info := &ZcashdRpcReplyGetinfo{}
|
||||||
|
return json.Marshal(info)
|
||||||
|
|
||||||
case "getblock":
|
case "getblock":
|
||||||
var heightStr string
|
var heightStr string
|
||||||
err := json.Unmarshal(params[0], &heightStr)
|
err := json.Unmarshal(params[0], &heightStr)
|
||||||
|
|
|
@ -1245,6 +1245,27 @@ into a specified block on the next ApplyStaged().</p></td>
|
||||||
<td><p> </p></td>
|
<td><p> </p></td>
|
||||||
</tr>
|
</tr>
|
||||||
|
|
||||||
|
<tr>
|
||||||
|
<td>estimatedHeight</td>
|
||||||
|
<td><a href="#uint64">uint64</a></td>
|
||||||
|
<td></td>
|
||||||
|
<td><p>less than tip height if zcashd is syncing </p></td>
|
||||||
|
</tr>
|
||||||
|
|
||||||
|
<tr>
|
||||||
|
<td>zcashdBuild</td>
|
||||||
|
<td><a href="#string">string</a></td>
|
||||||
|
<td></td>
|
||||||
|
<td><p>example: "v4.1.1-877212414" </p></td>
|
||||||
|
</tr>
|
||||||
|
|
||||||
|
<tr>
|
||||||
|
<td>zcashdSubversion</td>
|
||||||
|
<td><a href="#string">string</a></td>
|
||||||
|
<td></td>
|
||||||
|
<td><p>example: "/MagicBean:4.1.1/" </p></td>
|
||||||
|
</tr>
|
||||||
|
|
||||||
</tbody>
|
</tbody>
|
||||||
</table>
|
</table>
|
||||||
|
|
||||||
|
|
|
@ -11,7 +11,6 @@ import (
|
||||||
"encoding/json"
|
"encoding/json"
|
||||||
"errors"
|
"errors"
|
||||||
"fmt"
|
"fmt"
|
||||||
"io/ioutil"
|
|
||||||
"os"
|
"os"
|
||||||
"strings"
|
"strings"
|
||||||
"testing"
|
"testing"
|
||||||
|
@ -214,11 +213,7 @@ func zcashdrpcStub(method string, params []json.RawMessage) (json.RawMessage, er
|
||||||
step++
|
step++
|
||||||
switch method {
|
switch method {
|
||||||
case "getaddresstxids":
|
case "getaddresstxids":
|
||||||
var filter struct {
|
var filter common.ZcashdRpcRequestGetaddresstxids
|
||||||
Addresses []string
|
|
||||||
Start float64
|
|
||||||
End float64
|
|
||||||
}
|
|
||||||
err := json.Unmarshal(params[0], &filter)
|
err := json.Unmarshal(params[0], &filter)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
testT.Fatal("could not unmarshal block filter")
|
testT.Fatal("could not unmarshal block filter")
|
||||||
|
@ -239,10 +234,7 @@ func zcashdrpcStub(method string, params []json.RawMessage) (json.RawMessage, er
|
||||||
case "getrawtransaction":
|
case "getrawtransaction":
|
||||||
switch step {
|
switch step {
|
||||||
case 2:
|
case 2:
|
||||||
tx := &struct {
|
tx := &common.ZcashdRpcRequestGetrawtransaction{
|
||||||
Hex string `json:"hex"`
|
|
||||||
Height int `json:"height"`
|
|
||||||
}{
|
|
||||||
Hex: hex.EncodeToString(rawTxData[0]),
|
Hex: hex.EncodeToString(rawTxData[0]),
|
||||||
Height: 1234567,
|
Height: 1234567,
|
||||||
}
|
}
|
||||||
|
@ -451,27 +443,6 @@ func TestGetBlockRangeNilArgs(t *testing.T) {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
func getblockchaininfoStub(method string, params []json.RawMessage) (json.RawMessage, error) {
|
|
||||||
getsaplinginfo, _ := ioutil.ReadFile("../testdata/getsaplinginfo")
|
|
||||||
getblockchaininfoReply, _ := hex.DecodeString(string(getsaplinginfo))
|
|
||||||
return getblockchaininfoReply, nil
|
|
||||||
}
|
|
||||||
|
|
||||||
func TestGetLightdInfo(t *testing.T) {
|
|
||||||
testT = t
|
|
||||||
common.RawRequest = getblockchaininfoStub
|
|
||||||
lwd, _ := testsetup()
|
|
||||||
|
|
||||||
ldinfo, err := lwd.GetLightdInfo(context.Background(), &walletrpc.Empty{})
|
|
||||||
if err != nil {
|
|
||||||
t.Fatal("GetLightdInfo failed", err)
|
|
||||||
}
|
|
||||||
if ldinfo.Vendor != "ECC LightWalletD" {
|
|
||||||
t.Fatal("GetLightdInfo: unexpected vendor", ldinfo)
|
|
||||||
}
|
|
||||||
step = 0
|
|
||||||
}
|
|
||||||
|
|
||||||
func sendrawtransactionStub(method string, params []json.RawMessage) (json.RawMessage, error) {
|
func sendrawtransactionStub(method string, params []json.RawMessage) (json.RawMessage, error) {
|
||||||
step++
|
step++
|
||||||
if method != "sendrawtransaction" {
|
if method != "sendrawtransaction" {
|
||||||
|
|
|
@ -81,11 +81,7 @@ func (s *lwdStreamer) GetTaddressTxids(addressBlockFilter *walletrpc.Transparent
|
||||||
return errors.New("Must specify an end block height")
|
return errors.New("Must specify an end block height")
|
||||||
}
|
}
|
||||||
params := make([]json.RawMessage, 1)
|
params := make([]json.RawMessage, 1)
|
||||||
request := &struct {
|
request := &common.ZcashdRpcRequestGetaddresstxids{
|
||||||
Addresses []string `json:"addresses"`
|
|
||||||
Start uint64 `json:"start"`
|
|
||||||
End uint64 `json:"end"`
|
|
||||||
}{
|
|
||||||
Addresses: []string{addressBlockFilter.Address},
|
Addresses: []string{addressBlockFilter.Address},
|
||||||
Start: addressBlockFilter.Range.Start.Height,
|
Start: addressBlockFilter.Range.Start.Height,
|
||||||
End: addressBlockFilter.Range.End.Height,
|
End: addressBlockFilter.Range.End.Height,
|
||||||
|
@ -198,17 +194,7 @@ func (s *lwdStreamer) GetTreeState(ctx context.Context, id *walletrpc.BlockID) (
|
||||||
}
|
}
|
||||||
params[0] = hashJSON
|
params[0] = hashJSON
|
||||||
}
|
}
|
||||||
var gettreestateReply struct {
|
var gettreestateReply common.ZcashdRpcReplyGettreestate
|
||||||
Height int
|
|
||||||
Hash string
|
|
||||||
Time uint32
|
|
||||||
Sapling struct {
|
|
||||||
Commitments struct {
|
|
||||||
FinalState string
|
|
||||||
}
|
|
||||||
SkipHash string
|
|
||||||
}
|
|
||||||
}
|
|
||||||
for {
|
for {
|
||||||
result, rpcErr := common.RawRequest("z_gettreestate", params)
|
result, rpcErr := common.RawRequest("z_gettreestate", params)
|
||||||
if rpcErr != nil {
|
if rpcErr != nil {
|
||||||
|
@ -263,10 +249,7 @@ func (s *lwdStreamer) GetTransaction(ctx context.Context, txf *walletrpc.TxFilte
|
||||||
return nil, rpcErr
|
return nil, rpcErr
|
||||||
}
|
}
|
||||||
// Many other fields are returned, but we need only these two.
|
// Many other fields are returned, but we need only these two.
|
||||||
var txinfo struct {
|
var txinfo common.ZcashdRpcReplyGetrawtransaction
|
||||||
Hex string
|
|
||||||
Height int
|
|
||||||
}
|
|
||||||
err = json.Unmarshal(result, &txinfo)
|
err = json.Unmarshal(result, &txinfo)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return nil, err
|
return nil, err
|
||||||
|
@ -292,25 +275,7 @@ func (s *lwdStreamer) GetTransaction(ctx context.Context, txf *walletrpc.TxFilte
|
||||||
// GetLightdInfo gets the LightWalletD (this server) info, and includes information
|
// GetLightdInfo gets the LightWalletD (this server) info, and includes information
|
||||||
// it gets from its backend zcashd.
|
// it gets from its backend zcashd.
|
||||||
func (s *lwdStreamer) GetLightdInfo(ctx context.Context, in *walletrpc.Empty) (*walletrpc.LightdInfo, error) {
|
func (s *lwdStreamer) GetLightdInfo(ctx context.Context, in *walletrpc.Empty) (*walletrpc.LightdInfo, error) {
|
||||||
saplingHeight, blockHeight, chainName, consensusBranchID := common.GetSaplingInfo()
|
return common.GetLightdInfo()
|
||||||
|
|
||||||
vendor := "ECC LightWalletD"
|
|
||||||
if common.DarksideEnabled {
|
|
||||||
vendor = "ECC DarksideWalletD"
|
|
||||||
}
|
|
||||||
return &walletrpc.LightdInfo{
|
|
||||||
Version: common.Version,
|
|
||||||
GitCommit: common.GitCommit,
|
|
||||||
Branch: common.Branch,
|
|
||||||
BuildDate: common.BuildDate,
|
|
||||||
BuildUser: common.BuildUser,
|
|
||||||
Vendor: vendor,
|
|
||||||
TaddrSupport: true,
|
|
||||||
ChainName: chainName,
|
|
||||||
SaplingActivationHeight: uint64(saplingHeight),
|
|
||||||
ConsensusBranchId: consensusBranchID,
|
|
||||||
BlockHeight: uint64(blockHeight),
|
|
||||||
}, nil
|
|
||||||
}
|
}
|
||||||
|
|
||||||
// SendTransaction forwards raw transaction bytes to a zcashd instance over JSON-RPC
|
// SendTransaction forwards raw transaction bytes to a zcashd instance over JSON-RPC
|
||||||
|
@ -356,9 +321,7 @@ func (s *lwdStreamer) SendTransaction(ctx context.Context, rawtx *walletrpc.RawT
|
||||||
|
|
||||||
func getTaddressBalanceZcashdRpc(addressList []string) (*walletrpc.Balance, error) {
|
func getTaddressBalanceZcashdRpc(addressList []string) (*walletrpc.Balance, error) {
|
||||||
params := make([]json.RawMessage, 1)
|
params := make([]json.RawMessage, 1)
|
||||||
addrList := &struct {
|
addrList := &common.ZcashdRpcREquestGetaddressbalance{
|
||||||
Addresses []string `json:"addresses"`
|
|
||||||
}{
|
|
||||||
Addresses: addressList,
|
Addresses: addressList,
|
||||||
}
|
}
|
||||||
params[0], _ = json.Marshal(addrList)
|
params[0], _ = json.Marshal(addrList)
|
||||||
|
@ -367,9 +330,7 @@ func getTaddressBalanceZcashdRpc(addressList []string) (*walletrpc.Balance, erro
|
||||||
if rpcErr != nil {
|
if rpcErr != nil {
|
||||||
return &walletrpc.Balance{}, rpcErr
|
return &walletrpc.Balance{}, rpcErr
|
||||||
}
|
}
|
||||||
var balanceReply struct {
|
var balanceReply common.ZcashdRpcReplyGetaddressbalance
|
||||||
Balance int64
|
|
||||||
}
|
|
||||||
err := json.Unmarshal(result, &balanceReply)
|
err := json.Unmarshal(result, &balanceReply)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return &walletrpc.Balance{}, err
|
return &walletrpc.Balance{}, err
|
||||||
|
@ -539,13 +500,7 @@ func getAddressUtxos(arg *walletrpc.GetAddressUtxosArg, f func(*walletrpc.GetAdd
|
||||||
if rpcErr != nil {
|
if rpcErr != nil {
|
||||||
return rpcErr
|
return rpcErr
|
||||||
}
|
}
|
||||||
var utxosReply []struct {
|
var utxosReply common.ZcashdRpcReplyGetaddressutxos
|
||||||
Txid string
|
|
||||||
OutputIndex int64
|
|
||||||
Script string
|
|
||||||
Satoshis uint64
|
|
||||||
Height int
|
|
||||||
}
|
|
||||||
err := json.Unmarshal(result, &utxosReply)
|
err := json.Unmarshal(result, &utxosReply)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return err
|
return err
|
||||||
|
|
|
@ -1 +0,0 @@
|
||||||
7b22636861696e223a226d61696e222c22626c6f636b73223a3637373731332c2268656164657273223a3637373731332c2262657374626c6f636b68617368223a2230303030303030303030306465376137323833343731626238636264363661393530663261333261373666323235306465303364313237366437643036386538222c22646966666963756c7479223a35313436383233372e38303135313331342c22766572696669636174696f6e70726f6772657373223a312c22636861696e776f726b223a2230303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030323432326237363262663437363637222c227072756e6564223a66616c73652c2273697a655f6f6e5f6469736b223a32333938313131363337302c22636f6d6d69746d656e7473223a313434303139322c2276616c7565506f6f6c73223a5b7b226964223a227370726f7574222c226d6f6e69746f726564223a747275652c22636861696e56616c7565223a3134323433342e35393136333732342c22636861696e56616c75655a6174223a31343234333435393136333732347d2c7b226964223a227361706c696e67222c226d6f6e69746f726564223a747275652c22636861696e56616c7565223a3235383330362e32393830353736362c22636861696e56616c75655a6174223a32353833303632393830353736367d5d2c22736f6674666f726b73223a5b7b226964223a226269703334222c2276657273696f6e223a322c22656e666f726365223a7b22737461747573223a747275652c22666f756e64223a343030302c227265717569726564223a3735302c2277696e646f77223a343030307d2c2272656a656374223a7b22737461747573223a747275652c22666f756e64223a343030302c227265717569726564223a3935302c2277696e646f77223a343030307d7d2c7b226964223a226269703636222c2276657273696f6e223a332c22656e666f726365223a7b22737461747573223a747275652c22666f756e64223a343030302c227265717569726564223a3735302c2277696e646f77223a343030307d2c2272656a656374223a7b22737461747573223a747275652c22666f756e64223a343030302c227265717569726564223a3935302c2277696e646f77223a343030307d7d2c7b226964223a226269703635222c2276657273696f6e223a342c22656e666f726365223a7b22737461747573223a747275652c22666f756e64223a343030302c227265717569726564223a3735302c2277696e646f77223a343030307d2c2272656a656374223a7b22737461747573223a747275652c22666f756e64223a343030302c227265717569726564223a3935302c2277696e646f77223a343030307d7d5d2c227570677261646573223a7b223562613831623139223a7b226e616d65223a224f76657277696e746572222c2261637469766174696f6e686569676874223a3334373530302c22737461747573223a22616374697665222c22696e666f223a225365652068747470733a2f2f7a2e636173682f757067726164652f6f76657277696e7465722e68746d6c20666f722064657461696c732e227d2c223736623830396262223a7b226e616d65223a225361706c696e67222c2261637469766174696f6e686569676874223a3431393230302c22737461747573223a22616374697665222c22696e666f223a225365652068747470733a2f2f7a2e636173682f757067726164652f7361706c696e672e68746d6c20666f722064657461696c732e227d2c223262623430653630223a7b226e616d65223a22426c6f73736f6d222c2261637469766174696f6e686569676874223a3635333630302c22737461747573223a22616374697665222c22696e666f223a225365652068747470733a2f2f7a2e636173682f757067726164652f626c6f73736f6d2e68746d6c20666f722064657461696c732e227d7d2c22636f6e73656e737573223a7b22636861696e746970223a223262623430653630222c226e657874626c6f636b223a223262623430653630227d7d
|
|
|
@ -424,6 +424,9 @@ type LightdInfo struct {
|
||||||
Branch string `protobuf:"bytes,9,opt,name=branch,proto3" json:"branch,omitempty"`
|
Branch string `protobuf:"bytes,9,opt,name=branch,proto3" json:"branch,omitempty"`
|
||||||
BuildDate string `protobuf:"bytes,10,opt,name=buildDate,proto3" json:"buildDate,omitempty"`
|
BuildDate string `protobuf:"bytes,10,opt,name=buildDate,proto3" json:"buildDate,omitempty"`
|
||||||
BuildUser string `protobuf:"bytes,11,opt,name=buildUser,proto3" json:"buildUser,omitempty"`
|
BuildUser string `protobuf:"bytes,11,opt,name=buildUser,proto3" json:"buildUser,omitempty"`
|
||||||
|
EstimatedHeight uint64 `protobuf:"varint,12,opt,name=estimatedHeight,proto3" json:"estimatedHeight,omitempty"` // less than tip height if zcashd is syncing
|
||||||
|
ZcashdBuild string `protobuf:"bytes,13,opt,name=zcashdBuild,proto3" json:"zcashdBuild,omitempty"` // example: "v4.1.1-877212414"
|
||||||
|
ZcashdSubversion string `protobuf:"bytes,14,opt,name=zcashdSubversion,proto3" json:"zcashdSubversion,omitempty"` // example: "/MagicBean:4.1.1/"
|
||||||
}
|
}
|
||||||
|
|
||||||
func (x *LightdInfo) Reset() {
|
func (x *LightdInfo) Reset() {
|
||||||
|
@ -535,6 +538,27 @@ func (x *LightdInfo) GetBuildUser() string {
|
||||||
return ""
|
return ""
|
||||||
}
|
}
|
||||||
|
|
||||||
|
func (x *LightdInfo) GetEstimatedHeight() uint64 {
|
||||||
|
if x != nil {
|
||||||
|
return x.EstimatedHeight
|
||||||
|
}
|
||||||
|
return 0
|
||||||
|
}
|
||||||
|
|
||||||
|
func (x *LightdInfo) GetZcashdBuild() string {
|
||||||
|
if x != nil {
|
||||||
|
return x.ZcashdBuild
|
||||||
|
}
|
||||||
|
return ""
|
||||||
|
}
|
||||||
|
|
||||||
|
func (x *LightdInfo) GetZcashdSubversion() string {
|
||||||
|
if x != nil {
|
||||||
|
return x.ZcashdSubversion
|
||||||
|
}
|
||||||
|
return ""
|
||||||
|
}
|
||||||
|
|
||||||
// TransparentAddressBlockFilter restricts the results to the given address
|
// TransparentAddressBlockFilter restricts the results to the given address
|
||||||
// or block range.
|
// or block range.
|
||||||
type TransparentAddressBlockFilter struct {
|
type TransparentAddressBlockFilter struct {
|
||||||
|
@ -1191,7 +1215,7 @@ var file_service_proto_rawDesc = []byte{
|
||||||
0x64, 0x65, 0x12, 0x22, 0x0a, 0x0c, 0x65, 0x72, 0x72, 0x6f, 0x72, 0x4d, 0x65, 0x73, 0x73, 0x61,
|
0x64, 0x65, 0x12, 0x22, 0x0a, 0x0c, 0x65, 0x72, 0x72, 0x6f, 0x72, 0x4d, 0x65, 0x73, 0x73, 0x61,
|
||||||
0x67, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0c, 0x65, 0x72, 0x72, 0x6f, 0x72, 0x4d,
|
0x67, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0c, 0x65, 0x72, 0x72, 0x6f, 0x72, 0x4d,
|
||||||
0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x22, 0x0b, 0x0a, 0x09, 0x43, 0x68, 0x61, 0x69, 0x6e, 0x53,
|
0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x22, 0x0b, 0x0a, 0x09, 0x43, 0x68, 0x61, 0x69, 0x6e, 0x53,
|
||||||
0x70, 0x65, 0x63, 0x22, 0x07, 0x0a, 0x05, 0x45, 0x6d, 0x70, 0x74, 0x79, 0x22, 0xfc, 0x02, 0x0a,
|
0x70, 0x65, 0x63, 0x22, 0x07, 0x0a, 0x05, 0x45, 0x6d, 0x70, 0x74, 0x79, 0x22, 0xf4, 0x03, 0x0a,
|
||||||
0x0a, 0x4c, 0x69, 0x67, 0x68, 0x74, 0x64, 0x49, 0x6e, 0x66, 0x6f, 0x12, 0x18, 0x0a, 0x07, 0x76,
|
0x0a, 0x4c, 0x69, 0x67, 0x68, 0x74, 0x64, 0x49, 0x6e, 0x66, 0x6f, 0x12, 0x18, 0x0a, 0x07, 0x76,
|
||||||
0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x76, 0x65,
|
0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x76, 0x65,
|
||||||
0x72, 0x73, 0x69, 0x6f, 0x6e, 0x12, 0x16, 0x0a, 0x06, 0x76, 0x65, 0x6e, 0x64, 0x6f, 0x72, 0x18,
|
0x72, 0x73, 0x69, 0x6f, 0x6e, 0x12, 0x16, 0x0a, 0x06, 0x76, 0x65, 0x6e, 0x64, 0x6f, 0x72, 0x18,
|
||||||
|
@ -1215,146 +1239,154 @@ var file_service_proto_rawDesc = []byte{
|
||||||
0x1c, 0x0a, 0x09, 0x62, 0x75, 0x69, 0x6c, 0x64, 0x44, 0x61, 0x74, 0x65, 0x18, 0x0a, 0x20, 0x01,
|
0x1c, 0x0a, 0x09, 0x62, 0x75, 0x69, 0x6c, 0x64, 0x44, 0x61, 0x74, 0x65, 0x18, 0x0a, 0x20, 0x01,
|
||||||
0x28, 0x09, 0x52, 0x09, 0x62, 0x75, 0x69, 0x6c, 0x64, 0x44, 0x61, 0x74, 0x65, 0x12, 0x1c, 0x0a,
|
0x28, 0x09, 0x52, 0x09, 0x62, 0x75, 0x69, 0x6c, 0x64, 0x44, 0x61, 0x74, 0x65, 0x12, 0x1c, 0x0a,
|
||||||
0x09, 0x62, 0x75, 0x69, 0x6c, 0x64, 0x55, 0x73, 0x65, 0x72, 0x18, 0x0b, 0x20, 0x01, 0x28, 0x09,
|
0x09, 0x62, 0x75, 0x69, 0x6c, 0x64, 0x55, 0x73, 0x65, 0x72, 0x18, 0x0b, 0x20, 0x01, 0x28, 0x09,
|
||||||
0x52, 0x09, 0x62, 0x75, 0x69, 0x6c, 0x64, 0x55, 0x73, 0x65, 0x72, 0x22, 0x72, 0x0a, 0x1d, 0x54,
|
0x52, 0x09, 0x62, 0x75, 0x69, 0x6c, 0x64, 0x55, 0x73, 0x65, 0x72, 0x12, 0x28, 0x0a, 0x0f, 0x65,
|
||||||
0x72, 0x61, 0x6e, 0x73, 0x70, 0x61, 0x72, 0x65, 0x6e, 0x74, 0x41, 0x64, 0x64, 0x72, 0x65, 0x73,
|
0x73, 0x74, 0x69, 0x6d, 0x61, 0x74, 0x65, 0x64, 0x48, 0x65, 0x69, 0x67, 0x68, 0x74, 0x18, 0x0c,
|
||||||
0x73, 0x42, 0x6c, 0x6f, 0x63, 0x6b, 0x46, 0x69, 0x6c, 0x74, 0x65, 0x72, 0x12, 0x18, 0x0a, 0x07,
|
0x20, 0x01, 0x28, 0x04, 0x52, 0x0f, 0x65, 0x73, 0x74, 0x69, 0x6d, 0x61, 0x74, 0x65, 0x64, 0x48,
|
||||||
0x61, 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x61,
|
0x65, 0x69, 0x67, 0x68, 0x74, 0x12, 0x20, 0x0a, 0x0b, 0x7a, 0x63, 0x61, 0x73, 0x68, 0x64, 0x42,
|
||||||
0x64, 0x64, 0x72, 0x65, 0x73, 0x73, 0x12, 0x37, 0x0a, 0x05, 0x72, 0x61, 0x6e, 0x67, 0x65, 0x18,
|
0x75, 0x69, 0x6c, 0x64, 0x18, 0x0d, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0b, 0x7a, 0x63, 0x61, 0x73,
|
||||||
0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x21, 0x2e, 0x63, 0x61, 0x73, 0x68, 0x2e, 0x7a, 0x2e, 0x77,
|
0x68, 0x64, 0x42, 0x75, 0x69, 0x6c, 0x64, 0x12, 0x2a, 0x0a, 0x10, 0x7a, 0x63, 0x61, 0x73, 0x68,
|
||||||
0x61, 0x6c, 0x6c, 0x65, 0x74, 0x2e, 0x73, 0x64, 0x6b, 0x2e, 0x72, 0x70, 0x63, 0x2e, 0x42, 0x6c,
|
0x64, 0x53, 0x75, 0x62, 0x76, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x18, 0x0e, 0x20, 0x01, 0x28,
|
||||||
0x6f, 0x63, 0x6b, 0x52, 0x61, 0x6e, 0x67, 0x65, 0x52, 0x05, 0x72, 0x61, 0x6e, 0x67, 0x65, 0x22,
|
0x09, 0x52, 0x10, 0x7a, 0x63, 0x61, 0x73, 0x68, 0x64, 0x53, 0x75, 0x62, 0x76, 0x65, 0x72, 0x73,
|
||||||
0x2a, 0x0a, 0x08, 0x44, 0x75, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x1e, 0x0a, 0x0a, 0x69,
|
0x69, 0x6f, 0x6e, 0x22, 0x72, 0x0a, 0x1d, 0x54, 0x72, 0x61, 0x6e, 0x73, 0x70, 0x61, 0x72, 0x65,
|
||||||
0x6e, 0x74, 0x65, 0x72, 0x76, 0x61, 0x6c, 0x55, 0x73, 0x18, 0x01, 0x20, 0x01, 0x28, 0x03, 0x52,
|
0x6e, 0x74, 0x41, 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, 0x42, 0x6c, 0x6f, 0x63, 0x6b, 0x46, 0x69,
|
||||||
0x0a, 0x69, 0x6e, 0x74, 0x65, 0x72, 0x76, 0x61, 0x6c, 0x55, 0x73, 0x22, 0x38, 0x0a, 0x0c, 0x50,
|
0x6c, 0x74, 0x65, 0x72, 0x12, 0x18, 0x0a, 0x07, 0x61, 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, 0x18,
|
||||||
0x69, 0x6e, 0x67, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x14, 0x0a, 0x05, 0x65,
|
0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x61, 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, 0x12, 0x37,
|
||||||
0x6e, 0x74, 0x72, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x03, 0x52, 0x05, 0x65, 0x6e, 0x74, 0x72,
|
0x0a, 0x05, 0x72, 0x61, 0x6e, 0x67, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x21, 0x2e,
|
||||||
0x79, 0x12, 0x12, 0x0a, 0x04, 0x65, 0x78, 0x69, 0x74, 0x18, 0x02, 0x20, 0x01, 0x28, 0x03, 0x52,
|
0x63, 0x61, 0x73, 0x68, 0x2e, 0x7a, 0x2e, 0x77, 0x61, 0x6c, 0x6c, 0x65, 0x74, 0x2e, 0x73, 0x64,
|
||||||
0x04, 0x65, 0x78, 0x69, 0x74, 0x22, 0x23, 0x0a, 0x07, 0x41, 0x64, 0x64, 0x72, 0x65, 0x73, 0x73,
|
0x6b, 0x2e, 0x72, 0x70, 0x63, 0x2e, 0x42, 0x6c, 0x6f, 0x63, 0x6b, 0x52, 0x61, 0x6e, 0x67, 0x65,
|
||||||
0x12, 0x18, 0x0a, 0x07, 0x61, 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, 0x18, 0x01, 0x20, 0x01, 0x28,
|
0x52, 0x05, 0x72, 0x61, 0x6e, 0x67, 0x65, 0x22, 0x2a, 0x0a, 0x08, 0x44, 0x75, 0x72, 0x61, 0x74,
|
||||||
0x09, 0x52, 0x07, 0x61, 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, 0x22, 0x2b, 0x0a, 0x0b, 0x41, 0x64,
|
0x69, 0x6f, 0x6e, 0x12, 0x1e, 0x0a, 0x0a, 0x69, 0x6e, 0x74, 0x65, 0x72, 0x76, 0x61, 0x6c, 0x55,
|
||||||
0x64, 0x72, 0x65, 0x73, 0x73, 0x4c, 0x69, 0x73, 0x74, 0x12, 0x1c, 0x0a, 0x09, 0x61, 0x64, 0x64,
|
0x73, 0x18, 0x01, 0x20, 0x01, 0x28, 0x03, 0x52, 0x0a, 0x69, 0x6e, 0x74, 0x65, 0x72, 0x76, 0x61,
|
||||||
0x72, 0x65, 0x73, 0x73, 0x65, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x09, 0x52, 0x09, 0x61, 0x64,
|
0x6c, 0x55, 0x73, 0x22, 0x38, 0x0a, 0x0c, 0x50, 0x69, 0x6e, 0x67, 0x52, 0x65, 0x73, 0x70, 0x6f,
|
||||||
0x64, 0x72, 0x65, 0x73, 0x73, 0x65, 0x73, 0x22, 0x25, 0x0a, 0x07, 0x42, 0x61, 0x6c, 0x61, 0x6e,
|
0x6e, 0x73, 0x65, 0x12, 0x14, 0x0a, 0x05, 0x65, 0x6e, 0x74, 0x72, 0x79, 0x18, 0x01, 0x20, 0x01,
|
||||||
0x63, 0x65, 0x12, 0x1a, 0x0a, 0x08, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x5a, 0x61, 0x74, 0x18, 0x01,
|
0x28, 0x03, 0x52, 0x05, 0x65, 0x6e, 0x74, 0x72, 0x79, 0x12, 0x12, 0x0a, 0x04, 0x65, 0x78, 0x69,
|
||||||
0x20, 0x01, 0x28, 0x03, 0x52, 0x08, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x5a, 0x61, 0x74, 0x22, 0x1d,
|
0x74, 0x18, 0x02, 0x20, 0x01, 0x28, 0x03, 0x52, 0x04, 0x65, 0x78, 0x69, 0x74, 0x22, 0x23, 0x0a,
|
||||||
0x0a, 0x07, 0x45, 0x78, 0x63, 0x6c, 0x75, 0x64, 0x65, 0x12, 0x12, 0x0a, 0x04, 0x74, 0x78, 0x69,
|
0x07, 0x41, 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, 0x12, 0x18, 0x0a, 0x07, 0x61, 0x64, 0x64, 0x72,
|
||||||
0x64, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0c, 0x52, 0x04, 0x74, 0x78, 0x69, 0x64, 0x22, 0x79, 0x0a,
|
0x65, 0x73, 0x73, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x61, 0x64, 0x64, 0x72, 0x65,
|
||||||
0x09, 0x54, 0x72, 0x65, 0x65, 0x53, 0x74, 0x61, 0x74, 0x65, 0x12, 0x18, 0x0a, 0x07, 0x6e, 0x65,
|
0x73, 0x73, 0x22, 0x2b, 0x0a, 0x0b, 0x41, 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, 0x4c, 0x69, 0x73,
|
||||||
0x74, 0x77, 0x6f, 0x72, 0x6b, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x6e, 0x65, 0x74,
|
0x74, 0x12, 0x1c, 0x0a, 0x09, 0x61, 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, 0x65, 0x73, 0x18, 0x01,
|
||||||
0x77, 0x6f, 0x72, 0x6b, 0x12, 0x16, 0x0a, 0x06, 0x68, 0x65, 0x69, 0x67, 0x68, 0x74, 0x18, 0x02,
|
0x20, 0x03, 0x28, 0x09, 0x52, 0x09, 0x61, 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, 0x65, 0x73, 0x22,
|
||||||
0x20, 0x01, 0x28, 0x04, 0x52, 0x06, 0x68, 0x65, 0x69, 0x67, 0x68, 0x74, 0x12, 0x12, 0x0a, 0x04,
|
0x25, 0x0a, 0x07, 0x42, 0x61, 0x6c, 0x61, 0x6e, 0x63, 0x65, 0x12, 0x1a, 0x0a, 0x08, 0x76, 0x61,
|
||||||
0x68, 0x61, 0x73, 0x68, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x68, 0x61, 0x73, 0x68,
|
0x6c, 0x75, 0x65, 0x5a, 0x61, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x03, 0x52, 0x08, 0x76, 0x61,
|
||||||
0x12, 0x12, 0x0a, 0x04, 0x74, 0x69, 0x6d, 0x65, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x04,
|
0x6c, 0x75, 0x65, 0x5a, 0x61, 0x74, 0x22, 0x1d, 0x0a, 0x07, 0x45, 0x78, 0x63, 0x6c, 0x75, 0x64,
|
||||||
0x74, 0x69, 0x6d, 0x65, 0x12, 0x12, 0x0a, 0x04, 0x74, 0x72, 0x65, 0x65, 0x18, 0x05, 0x20, 0x01,
|
0x65, 0x12, 0x12, 0x0a, 0x04, 0x74, 0x78, 0x69, 0x64, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0c, 0x52,
|
||||||
0x28, 0x09, 0x52, 0x04, 0x74, 0x72, 0x65, 0x65, 0x22, 0x70, 0x0a, 0x12, 0x47, 0x65, 0x74, 0x41,
|
0x04, 0x74, 0x78, 0x69, 0x64, 0x22, 0x79, 0x0a, 0x09, 0x54, 0x72, 0x65, 0x65, 0x53, 0x74, 0x61,
|
||||||
0x64, 0x64, 0x72, 0x65, 0x73, 0x73, 0x55, 0x74, 0x78, 0x6f, 0x73, 0x41, 0x72, 0x67, 0x12, 0x18,
|
0x74, 0x65, 0x12, 0x18, 0x0a, 0x07, 0x6e, 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x18, 0x01, 0x20,
|
||||||
0x0a, 0x07, 0x61, 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52,
|
0x01, 0x28, 0x09, 0x52, 0x07, 0x6e, 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x12, 0x16, 0x0a, 0x06,
|
||||||
0x07, 0x61, 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, 0x12, 0x20, 0x0a, 0x0b, 0x73, 0x74, 0x61, 0x72,
|
0x68, 0x65, 0x69, 0x67, 0x68, 0x74, 0x18, 0x02, 0x20, 0x01, 0x28, 0x04, 0x52, 0x06, 0x68, 0x65,
|
||||||
0x74, 0x48, 0x65, 0x69, 0x67, 0x68, 0x74, 0x18, 0x02, 0x20, 0x01, 0x28, 0x04, 0x52, 0x0b, 0x73,
|
0x69, 0x67, 0x68, 0x74, 0x12, 0x12, 0x0a, 0x04, 0x68, 0x61, 0x73, 0x68, 0x18, 0x03, 0x20, 0x01,
|
||||||
0x74, 0x61, 0x72, 0x74, 0x48, 0x65, 0x69, 0x67, 0x68, 0x74, 0x12, 0x1e, 0x0a, 0x0a, 0x6d, 0x61,
|
0x28, 0x09, 0x52, 0x04, 0x68, 0x61, 0x73, 0x68, 0x12, 0x12, 0x0a, 0x04, 0x74, 0x69, 0x6d, 0x65,
|
||||||
0x78, 0x45, 0x6e, 0x74, 0x72, 0x69, 0x65, 0x73, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x0a,
|
0x18, 0x04, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x04, 0x74, 0x69, 0x6d, 0x65, 0x12, 0x12, 0x0a, 0x04,
|
||||||
0x6d, 0x61, 0x78, 0x45, 0x6e, 0x74, 0x72, 0x69, 0x65, 0x73, 0x22, 0x8c, 0x01, 0x0a, 0x14, 0x47,
|
0x74, 0x72, 0x65, 0x65, 0x18, 0x05, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x74, 0x72, 0x65, 0x65,
|
||||||
0x65, 0x74, 0x41, 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, 0x55, 0x74, 0x78, 0x6f, 0x73, 0x52, 0x65,
|
0x22, 0x70, 0x0a, 0x12, 0x47, 0x65, 0x74, 0x41, 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, 0x55, 0x74,
|
||||||
0x70, 0x6c, 0x79, 0x12, 0x12, 0x0a, 0x04, 0x74, 0x78, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28,
|
0x78, 0x6f, 0x73, 0x41, 0x72, 0x67, 0x12, 0x18, 0x0a, 0x07, 0x61, 0x64, 0x64, 0x72, 0x65, 0x73,
|
||||||
0x0c, 0x52, 0x04, 0x74, 0x78, 0x69, 0x64, 0x12, 0x14, 0x0a, 0x05, 0x69, 0x6e, 0x64, 0x65, 0x78,
|
0x73, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x61, 0x64, 0x64, 0x72, 0x65, 0x73, 0x73,
|
||||||
0x18, 0x02, 0x20, 0x01, 0x28, 0x05, 0x52, 0x05, 0x69, 0x6e, 0x64, 0x65, 0x78, 0x12, 0x16, 0x0a,
|
0x12, 0x20, 0x0a, 0x0b, 0x73, 0x74, 0x61, 0x72, 0x74, 0x48, 0x65, 0x69, 0x67, 0x68, 0x74, 0x18,
|
||||||
0x06, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0c, 0x52, 0x06, 0x73,
|
0x02, 0x20, 0x01, 0x28, 0x04, 0x52, 0x0b, 0x73, 0x74, 0x61, 0x72, 0x74, 0x48, 0x65, 0x69, 0x67,
|
||||||
0x63, 0x72, 0x69, 0x70, 0x74, 0x12, 0x1a, 0x0a, 0x08, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x5a, 0x61,
|
0x68, 0x74, 0x12, 0x1e, 0x0a, 0x0a, 0x6d, 0x61, 0x78, 0x45, 0x6e, 0x74, 0x72, 0x69, 0x65, 0x73,
|
||||||
0x74, 0x18, 0x04, 0x20, 0x01, 0x28, 0x03, 0x52, 0x08, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x5a, 0x61,
|
0x18, 0x03, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x0a, 0x6d, 0x61, 0x78, 0x45, 0x6e, 0x74, 0x72, 0x69,
|
||||||
0x74, 0x12, 0x16, 0x0a, 0x06, 0x68, 0x65, 0x69, 0x67, 0x68, 0x74, 0x18, 0x05, 0x20, 0x01, 0x28,
|
0x65, 0x73, 0x22, 0x8c, 0x01, 0x0a, 0x14, 0x47, 0x65, 0x74, 0x41, 0x64, 0x64, 0x72, 0x65, 0x73,
|
||||||
0x04, 0x52, 0x06, 0x68, 0x65, 0x69, 0x67, 0x68, 0x74, 0x22, 0x6b, 0x0a, 0x18, 0x47, 0x65, 0x74,
|
0x73, 0x55, 0x74, 0x78, 0x6f, 0x73, 0x52, 0x65, 0x70, 0x6c, 0x79, 0x12, 0x12, 0x0a, 0x04, 0x74,
|
||||||
0x41, 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, 0x55, 0x74, 0x78, 0x6f, 0x73, 0x52, 0x65, 0x70, 0x6c,
|
0x78, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0c, 0x52, 0x04, 0x74, 0x78, 0x69, 0x64, 0x12,
|
||||||
0x79, 0x4c, 0x69, 0x73, 0x74, 0x12, 0x4f, 0x0a, 0x0c, 0x61, 0x64, 0x64, 0x72, 0x65, 0x73, 0x73,
|
0x14, 0x0a, 0x05, 0x69, 0x6e, 0x64, 0x65, 0x78, 0x18, 0x02, 0x20, 0x01, 0x28, 0x05, 0x52, 0x05,
|
||||||
0x55, 0x74, 0x78, 0x6f, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x2b, 0x2e, 0x63, 0x61,
|
0x69, 0x6e, 0x64, 0x65, 0x78, 0x12, 0x16, 0x0a, 0x06, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x18,
|
||||||
0x73, 0x68, 0x2e, 0x7a, 0x2e, 0x77, 0x61, 0x6c, 0x6c, 0x65, 0x74, 0x2e, 0x73, 0x64, 0x6b, 0x2e,
|
0x03, 0x20, 0x01, 0x28, 0x0c, 0x52, 0x06, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x12, 0x1a, 0x0a,
|
||||||
0x72, 0x70, 0x63, 0x2e, 0x47, 0x65, 0x74, 0x41, 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, 0x55, 0x74,
|
0x08, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x5a, 0x61, 0x74, 0x18, 0x04, 0x20, 0x01, 0x28, 0x03, 0x52,
|
||||||
0x78, 0x6f, 0x73, 0x52, 0x65, 0x70, 0x6c, 0x79, 0x52, 0x0c, 0x61, 0x64, 0x64, 0x72, 0x65, 0x73,
|
0x08, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x5a, 0x61, 0x74, 0x12, 0x16, 0x0a, 0x06, 0x68, 0x65, 0x69,
|
||||||
0x73, 0x55, 0x74, 0x78, 0x6f, 0x73, 0x32, 0xbb, 0x0a, 0x0a, 0x11, 0x43, 0x6f, 0x6d, 0x70, 0x61,
|
0x67, 0x68, 0x74, 0x18, 0x05, 0x20, 0x01, 0x28, 0x04, 0x52, 0x06, 0x68, 0x65, 0x69, 0x67, 0x68,
|
||||||
0x63, 0x74, 0x54, 0x78, 0x53, 0x74, 0x72, 0x65, 0x61, 0x6d, 0x65, 0x72, 0x12, 0x54, 0x0a, 0x0e,
|
0x74, 0x22, 0x6b, 0x0a, 0x18, 0x47, 0x65, 0x74, 0x41, 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, 0x55,
|
||||||
0x47, 0x65, 0x74, 0x4c, 0x61, 0x74, 0x65, 0x73, 0x74, 0x42, 0x6c, 0x6f, 0x63, 0x6b, 0x12, 0x20,
|
0x74, 0x78, 0x6f, 0x73, 0x52, 0x65, 0x70, 0x6c, 0x79, 0x4c, 0x69, 0x73, 0x74, 0x12, 0x4f, 0x0a,
|
||||||
0x2e, 0x63, 0x61, 0x73, 0x68, 0x2e, 0x7a, 0x2e, 0x77, 0x61, 0x6c, 0x6c, 0x65, 0x74, 0x2e, 0x73,
|
0x0c, 0x61, 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, 0x55, 0x74, 0x78, 0x6f, 0x73, 0x18, 0x01, 0x20,
|
||||||
0x64, 0x6b, 0x2e, 0x72, 0x70, 0x63, 0x2e, 0x43, 0x68, 0x61, 0x69, 0x6e, 0x53, 0x70, 0x65, 0x63,
|
0x03, 0x28, 0x0b, 0x32, 0x2b, 0x2e, 0x63, 0x61, 0x73, 0x68, 0x2e, 0x7a, 0x2e, 0x77, 0x61, 0x6c,
|
||||||
0x1a, 0x1e, 0x2e, 0x63, 0x61, 0x73, 0x68, 0x2e, 0x7a, 0x2e, 0x77, 0x61, 0x6c, 0x6c, 0x65, 0x74,
|
0x6c, 0x65, 0x74, 0x2e, 0x73, 0x64, 0x6b, 0x2e, 0x72, 0x70, 0x63, 0x2e, 0x47, 0x65, 0x74, 0x41,
|
||||||
0x2e, 0x73, 0x64, 0x6b, 0x2e, 0x72, 0x70, 0x63, 0x2e, 0x42, 0x6c, 0x6f, 0x63, 0x6b, 0x49, 0x44,
|
0x64, 0x64, 0x72, 0x65, 0x73, 0x73, 0x55, 0x74, 0x78, 0x6f, 0x73, 0x52, 0x65, 0x70, 0x6c, 0x79,
|
||||||
0x22, 0x00, 0x12, 0x51, 0x0a, 0x08, 0x47, 0x65, 0x74, 0x42, 0x6c, 0x6f, 0x63, 0x6b, 0x12, 0x1e,
|
0x52, 0x0c, 0x61, 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, 0x55, 0x74, 0x78, 0x6f, 0x73, 0x32, 0xbb,
|
||||||
0x2e, 0x63, 0x61, 0x73, 0x68, 0x2e, 0x7a, 0x2e, 0x77, 0x61, 0x6c, 0x6c, 0x65, 0x74, 0x2e, 0x73,
|
0x0a, 0x0a, 0x11, 0x43, 0x6f, 0x6d, 0x70, 0x61, 0x63, 0x74, 0x54, 0x78, 0x53, 0x74, 0x72, 0x65,
|
||||||
0x64, 0x6b, 0x2e, 0x72, 0x70, 0x63, 0x2e, 0x42, 0x6c, 0x6f, 0x63, 0x6b, 0x49, 0x44, 0x1a, 0x23,
|
0x61, 0x6d, 0x65, 0x72, 0x12, 0x54, 0x0a, 0x0e, 0x47, 0x65, 0x74, 0x4c, 0x61, 0x74, 0x65, 0x73,
|
||||||
0x2e, 0x63, 0x61, 0x73, 0x68, 0x2e, 0x7a, 0x2e, 0x77, 0x61, 0x6c, 0x6c, 0x65, 0x74, 0x2e, 0x73,
|
0x74, 0x42, 0x6c, 0x6f, 0x63, 0x6b, 0x12, 0x20, 0x2e, 0x63, 0x61, 0x73, 0x68, 0x2e, 0x7a, 0x2e,
|
||||||
0x64, 0x6b, 0x2e, 0x72, 0x70, 0x63, 0x2e, 0x43, 0x6f, 0x6d, 0x70, 0x61, 0x63, 0x74, 0x42, 0x6c,
|
0x77, 0x61, 0x6c, 0x6c, 0x65, 0x74, 0x2e, 0x73, 0x64, 0x6b, 0x2e, 0x72, 0x70, 0x63, 0x2e, 0x43,
|
||||||
0x6f, 0x63, 0x6b, 0x22, 0x00, 0x12, 0x5b, 0x0a, 0x0d, 0x47, 0x65, 0x74, 0x42, 0x6c, 0x6f, 0x63,
|
0x68, 0x61, 0x69, 0x6e, 0x53, 0x70, 0x65, 0x63, 0x1a, 0x1e, 0x2e, 0x63, 0x61, 0x73, 0x68, 0x2e,
|
||||||
0x6b, 0x52, 0x61, 0x6e, 0x67, 0x65, 0x12, 0x21, 0x2e, 0x63, 0x61, 0x73, 0x68, 0x2e, 0x7a, 0x2e,
|
|
||||||
0x77, 0x61, 0x6c, 0x6c, 0x65, 0x74, 0x2e, 0x73, 0x64, 0x6b, 0x2e, 0x72, 0x70, 0x63, 0x2e, 0x42,
|
|
||||||
0x6c, 0x6f, 0x63, 0x6b, 0x52, 0x61, 0x6e, 0x67, 0x65, 0x1a, 0x23, 0x2e, 0x63, 0x61, 0x73, 0x68,
|
|
||||||
0x2e, 0x7a, 0x2e, 0x77, 0x61, 0x6c, 0x6c, 0x65, 0x74, 0x2e, 0x73, 0x64, 0x6b, 0x2e, 0x72, 0x70,
|
|
||||||
0x63, 0x2e, 0x43, 0x6f, 0x6d, 0x70, 0x61, 0x63, 0x74, 0x42, 0x6c, 0x6f, 0x63, 0x6b, 0x22, 0x00,
|
|
||||||
0x30, 0x01, 0x12, 0x5a, 0x0a, 0x0e, 0x47, 0x65, 0x74, 0x54, 0x72, 0x61, 0x6e, 0x73, 0x61, 0x63,
|
|
||||||
0x74, 0x69, 0x6f, 0x6e, 0x12, 0x1f, 0x2e, 0x63, 0x61, 0x73, 0x68, 0x2e, 0x7a, 0x2e, 0x77, 0x61,
|
|
||||||
0x6c, 0x6c, 0x65, 0x74, 0x2e, 0x73, 0x64, 0x6b, 0x2e, 0x72, 0x70, 0x63, 0x2e, 0x54, 0x78, 0x46,
|
|
||||||
0x69, 0x6c, 0x74, 0x65, 0x72, 0x1a, 0x25, 0x2e, 0x63, 0x61, 0x73, 0x68, 0x2e, 0x7a, 0x2e, 0x77,
|
|
||||||
0x61, 0x6c, 0x6c, 0x65, 0x74, 0x2e, 0x73, 0x64, 0x6b, 0x2e, 0x72, 0x70, 0x63, 0x2e, 0x52, 0x61,
|
|
||||||
0x77, 0x54, 0x72, 0x61, 0x6e, 0x73, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x22, 0x00, 0x12, 0x5f,
|
|
||||||
0x0a, 0x0f, 0x53, 0x65, 0x6e, 0x64, 0x54, 0x72, 0x61, 0x6e, 0x73, 0x61, 0x63, 0x74, 0x69, 0x6f,
|
|
||||||
0x6e, 0x12, 0x25, 0x2e, 0x63, 0x61, 0x73, 0x68, 0x2e, 0x7a, 0x2e, 0x77, 0x61, 0x6c, 0x6c, 0x65,
|
|
||||||
0x74, 0x2e, 0x73, 0x64, 0x6b, 0x2e, 0x72, 0x70, 0x63, 0x2e, 0x52, 0x61, 0x77, 0x54, 0x72, 0x61,
|
|
||||||
0x6e, 0x73, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x1a, 0x23, 0x2e, 0x63, 0x61, 0x73, 0x68, 0x2e,
|
|
||||||
0x7a, 0x2e, 0x77, 0x61, 0x6c, 0x6c, 0x65, 0x74, 0x2e, 0x73, 0x64, 0x6b, 0x2e, 0x72, 0x70, 0x63,
|
0x7a, 0x2e, 0x77, 0x61, 0x6c, 0x6c, 0x65, 0x74, 0x2e, 0x73, 0x64, 0x6b, 0x2e, 0x72, 0x70, 0x63,
|
||||||
0x2e, 0x53, 0x65, 0x6e, 0x64, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x00, 0x12,
|
0x2e, 0x42, 0x6c, 0x6f, 0x63, 0x6b, 0x49, 0x44, 0x22, 0x00, 0x12, 0x51, 0x0a, 0x08, 0x47, 0x65,
|
||||||
0x73, 0x0a, 0x10, 0x47, 0x65, 0x74, 0x54, 0x61, 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, 0x54, 0x78,
|
0x74, 0x42, 0x6c, 0x6f, 0x63, 0x6b, 0x12, 0x1e, 0x2e, 0x63, 0x61, 0x73, 0x68, 0x2e, 0x7a, 0x2e,
|
||||||
0x69, 0x64, 0x73, 0x12, 0x34, 0x2e, 0x63, 0x61, 0x73, 0x68, 0x2e, 0x7a, 0x2e, 0x77, 0x61, 0x6c,
|
0x77, 0x61, 0x6c, 0x6c, 0x65, 0x74, 0x2e, 0x73, 0x64, 0x6b, 0x2e, 0x72, 0x70, 0x63, 0x2e, 0x42,
|
||||||
0x6c, 0x65, 0x74, 0x2e, 0x73, 0x64, 0x6b, 0x2e, 0x72, 0x70, 0x63, 0x2e, 0x54, 0x72, 0x61, 0x6e,
|
0x6c, 0x6f, 0x63, 0x6b, 0x49, 0x44, 0x1a, 0x23, 0x2e, 0x63, 0x61, 0x73, 0x68, 0x2e, 0x7a, 0x2e,
|
||||||
0x73, 0x70, 0x61, 0x72, 0x65, 0x6e, 0x74, 0x41, 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, 0x42, 0x6c,
|
0x77, 0x61, 0x6c, 0x6c, 0x65, 0x74, 0x2e, 0x73, 0x64, 0x6b, 0x2e, 0x72, 0x70, 0x63, 0x2e, 0x43,
|
||||||
0x6f, 0x63, 0x6b, 0x46, 0x69, 0x6c, 0x74, 0x65, 0x72, 0x1a, 0x25, 0x2e, 0x63, 0x61, 0x73, 0x68,
|
0x6f, 0x6d, 0x70, 0x61, 0x63, 0x74, 0x42, 0x6c, 0x6f, 0x63, 0x6b, 0x22, 0x00, 0x12, 0x5b, 0x0a,
|
||||||
|
0x0d, 0x47, 0x65, 0x74, 0x42, 0x6c, 0x6f, 0x63, 0x6b, 0x52, 0x61, 0x6e, 0x67, 0x65, 0x12, 0x21,
|
||||||
|
0x2e, 0x63, 0x61, 0x73, 0x68, 0x2e, 0x7a, 0x2e, 0x77, 0x61, 0x6c, 0x6c, 0x65, 0x74, 0x2e, 0x73,
|
||||||
|
0x64, 0x6b, 0x2e, 0x72, 0x70, 0x63, 0x2e, 0x42, 0x6c, 0x6f, 0x63, 0x6b, 0x52, 0x61, 0x6e, 0x67,
|
||||||
|
0x65, 0x1a, 0x23, 0x2e, 0x63, 0x61, 0x73, 0x68, 0x2e, 0x7a, 0x2e, 0x77, 0x61, 0x6c, 0x6c, 0x65,
|
||||||
|
0x74, 0x2e, 0x73, 0x64, 0x6b, 0x2e, 0x72, 0x70, 0x63, 0x2e, 0x43, 0x6f, 0x6d, 0x70, 0x61, 0x63,
|
||||||
|
0x74, 0x42, 0x6c, 0x6f, 0x63, 0x6b, 0x22, 0x00, 0x30, 0x01, 0x12, 0x5a, 0x0a, 0x0e, 0x47, 0x65,
|
||||||
|
0x74, 0x54, 0x72, 0x61, 0x6e, 0x73, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x1f, 0x2e, 0x63,
|
||||||
|
0x61, 0x73, 0x68, 0x2e, 0x7a, 0x2e, 0x77, 0x61, 0x6c, 0x6c, 0x65, 0x74, 0x2e, 0x73, 0x64, 0x6b,
|
||||||
|
0x2e, 0x72, 0x70, 0x63, 0x2e, 0x54, 0x78, 0x46, 0x69, 0x6c, 0x74, 0x65, 0x72, 0x1a, 0x25, 0x2e,
|
||||||
|
0x63, 0x61, 0x73, 0x68, 0x2e, 0x7a, 0x2e, 0x77, 0x61, 0x6c, 0x6c, 0x65, 0x74, 0x2e, 0x73, 0x64,
|
||||||
|
0x6b, 0x2e, 0x72, 0x70, 0x63, 0x2e, 0x52, 0x61, 0x77, 0x54, 0x72, 0x61, 0x6e, 0x73, 0x61, 0x63,
|
||||||
|
0x74, 0x69, 0x6f, 0x6e, 0x22, 0x00, 0x12, 0x5f, 0x0a, 0x0f, 0x53, 0x65, 0x6e, 0x64, 0x54, 0x72,
|
||||||
|
0x61, 0x6e, 0x73, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x25, 0x2e, 0x63, 0x61, 0x73, 0x68,
|
||||||
0x2e, 0x7a, 0x2e, 0x77, 0x61, 0x6c, 0x6c, 0x65, 0x74, 0x2e, 0x73, 0x64, 0x6b, 0x2e, 0x72, 0x70,
|
0x2e, 0x7a, 0x2e, 0x77, 0x61, 0x6c, 0x6c, 0x65, 0x74, 0x2e, 0x73, 0x64, 0x6b, 0x2e, 0x72, 0x70,
|
||||||
0x63, 0x2e, 0x52, 0x61, 0x77, 0x54, 0x72, 0x61, 0x6e, 0x73, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e,
|
0x63, 0x2e, 0x52, 0x61, 0x77, 0x54, 0x72, 0x61, 0x6e, 0x73, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e,
|
||||||
0x22, 0x00, 0x30, 0x01, 0x12, 0x5a, 0x0a, 0x12, 0x47, 0x65, 0x74, 0x54, 0x61, 0x64, 0x64, 0x72,
|
0x1a, 0x23, 0x2e, 0x63, 0x61, 0x73, 0x68, 0x2e, 0x7a, 0x2e, 0x77, 0x61, 0x6c, 0x6c, 0x65, 0x74,
|
||||||
0x65, 0x73, 0x73, 0x42, 0x61, 0x6c, 0x61, 0x6e, 0x63, 0x65, 0x12, 0x22, 0x2e, 0x63, 0x61, 0x73,
|
0x2e, 0x73, 0x64, 0x6b, 0x2e, 0x72, 0x70, 0x63, 0x2e, 0x53, 0x65, 0x6e, 0x64, 0x52, 0x65, 0x73,
|
||||||
0x68, 0x2e, 0x7a, 0x2e, 0x77, 0x61, 0x6c, 0x6c, 0x65, 0x74, 0x2e, 0x73, 0x64, 0x6b, 0x2e, 0x72,
|
0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x00, 0x12, 0x73, 0x0a, 0x10, 0x47, 0x65, 0x74, 0x54, 0x61,
|
||||||
0x70, 0x63, 0x2e, 0x41, 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, 0x4c, 0x69, 0x73, 0x74, 0x1a, 0x1e,
|
0x64, 0x64, 0x72, 0x65, 0x73, 0x73, 0x54, 0x78, 0x69, 0x64, 0x73, 0x12, 0x34, 0x2e, 0x63, 0x61,
|
||||||
0x2e, 0x63, 0x61, 0x73, 0x68, 0x2e, 0x7a, 0x2e, 0x77, 0x61, 0x6c, 0x6c, 0x65, 0x74, 0x2e, 0x73,
|
0x73, 0x68, 0x2e, 0x7a, 0x2e, 0x77, 0x61, 0x6c, 0x6c, 0x65, 0x74, 0x2e, 0x73, 0x64, 0x6b, 0x2e,
|
||||||
0x64, 0x6b, 0x2e, 0x72, 0x70, 0x63, 0x2e, 0x42, 0x61, 0x6c, 0x61, 0x6e, 0x63, 0x65, 0x22, 0x00,
|
0x72, 0x70, 0x63, 0x2e, 0x54, 0x72, 0x61, 0x6e, 0x73, 0x70, 0x61, 0x72, 0x65, 0x6e, 0x74, 0x41,
|
||||||
0x12, 0x5e, 0x0a, 0x18, 0x47, 0x65, 0x74, 0x54, 0x61, 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, 0x42,
|
0x64, 0x64, 0x72, 0x65, 0x73, 0x73, 0x42, 0x6c, 0x6f, 0x63, 0x6b, 0x46, 0x69, 0x6c, 0x74, 0x65,
|
||||||
0x61, 0x6c, 0x61, 0x6e, 0x63, 0x65, 0x53, 0x74, 0x72, 0x65, 0x61, 0x6d, 0x12, 0x1e, 0x2e, 0x63,
|
0x72, 0x1a, 0x25, 0x2e, 0x63, 0x61, 0x73, 0x68, 0x2e, 0x7a, 0x2e, 0x77, 0x61, 0x6c, 0x6c, 0x65,
|
||||||
0x61, 0x73, 0x68, 0x2e, 0x7a, 0x2e, 0x77, 0x61, 0x6c, 0x6c, 0x65, 0x74, 0x2e, 0x73, 0x64, 0x6b,
|
0x74, 0x2e, 0x73, 0x64, 0x6b, 0x2e, 0x72, 0x70, 0x63, 0x2e, 0x52, 0x61, 0x77, 0x54, 0x72, 0x61,
|
||||||
0x2e, 0x72, 0x70, 0x63, 0x2e, 0x41, 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, 0x1a, 0x1e, 0x2e, 0x63,
|
0x6e, 0x73, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x22, 0x00, 0x30, 0x01, 0x12, 0x5a, 0x0a, 0x12,
|
||||||
0x61, 0x73, 0x68, 0x2e, 0x7a, 0x2e, 0x77, 0x61, 0x6c, 0x6c, 0x65, 0x74, 0x2e, 0x73, 0x64, 0x6b,
|
0x47, 0x65, 0x74, 0x54, 0x61, 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, 0x42, 0x61, 0x6c, 0x61, 0x6e,
|
||||||
0x2e, 0x72, 0x70, 0x63, 0x2e, 0x42, 0x61, 0x6c, 0x61, 0x6e, 0x63, 0x65, 0x22, 0x00, 0x28, 0x01,
|
0x63, 0x65, 0x12, 0x22, 0x2e, 0x63, 0x61, 0x73, 0x68, 0x2e, 0x7a, 0x2e, 0x77, 0x61, 0x6c, 0x6c,
|
||||||
0x12, 0x54, 0x0a, 0x0c, 0x47, 0x65, 0x74, 0x4d, 0x65, 0x6d, 0x70, 0x6f, 0x6f, 0x6c, 0x54, 0x78,
|
0x65, 0x74, 0x2e, 0x73, 0x64, 0x6b, 0x2e, 0x72, 0x70, 0x63, 0x2e, 0x41, 0x64, 0x64, 0x72, 0x65,
|
||||||
0x12, 0x1e, 0x2e, 0x63, 0x61, 0x73, 0x68, 0x2e, 0x7a, 0x2e, 0x77, 0x61, 0x6c, 0x6c, 0x65, 0x74,
|
0x73, 0x73, 0x4c, 0x69, 0x73, 0x74, 0x1a, 0x1e, 0x2e, 0x63, 0x61, 0x73, 0x68, 0x2e, 0x7a, 0x2e,
|
||||||
0x2e, 0x73, 0x64, 0x6b, 0x2e, 0x72, 0x70, 0x63, 0x2e, 0x45, 0x78, 0x63, 0x6c, 0x75, 0x64, 0x65,
|
|
||||||
0x1a, 0x20, 0x2e, 0x63, 0x61, 0x73, 0x68, 0x2e, 0x7a, 0x2e, 0x77, 0x61, 0x6c, 0x6c, 0x65, 0x74,
|
|
||||||
0x2e, 0x73, 0x64, 0x6b, 0x2e, 0x72, 0x70, 0x63, 0x2e, 0x43, 0x6f, 0x6d, 0x70, 0x61, 0x63, 0x74,
|
|
||||||
0x54, 0x78, 0x22, 0x00, 0x30, 0x01, 0x12, 0x52, 0x0a, 0x0c, 0x47, 0x65, 0x74, 0x54, 0x72, 0x65,
|
|
||||||
0x65, 0x53, 0x74, 0x61, 0x74, 0x65, 0x12, 0x1e, 0x2e, 0x63, 0x61, 0x73, 0x68, 0x2e, 0x7a, 0x2e,
|
|
||||||
0x77, 0x61, 0x6c, 0x6c, 0x65, 0x74, 0x2e, 0x73, 0x64, 0x6b, 0x2e, 0x72, 0x70, 0x63, 0x2e, 0x42,
|
0x77, 0x61, 0x6c, 0x6c, 0x65, 0x74, 0x2e, 0x73, 0x64, 0x6b, 0x2e, 0x72, 0x70, 0x63, 0x2e, 0x42,
|
||||||
0x6c, 0x6f, 0x63, 0x6b, 0x49, 0x44, 0x1a, 0x20, 0x2e, 0x63, 0x61, 0x73, 0x68, 0x2e, 0x7a, 0x2e,
|
0x61, 0x6c, 0x61, 0x6e, 0x63, 0x65, 0x22, 0x00, 0x12, 0x5e, 0x0a, 0x18, 0x47, 0x65, 0x74, 0x54,
|
||||||
0x77, 0x61, 0x6c, 0x6c, 0x65, 0x74, 0x2e, 0x73, 0x64, 0x6b, 0x2e, 0x72, 0x70, 0x63, 0x2e, 0x54,
|
0x61, 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, 0x42, 0x61, 0x6c, 0x61, 0x6e, 0x63, 0x65, 0x53, 0x74,
|
||||||
0x72, 0x65, 0x65, 0x53, 0x74, 0x61, 0x74, 0x65, 0x22, 0x00, 0x12, 0x6f, 0x0a, 0x0f, 0x47, 0x65,
|
0x72, 0x65, 0x61, 0x6d, 0x12, 0x1e, 0x2e, 0x63, 0x61, 0x73, 0x68, 0x2e, 0x7a, 0x2e, 0x77, 0x61,
|
||||||
0x74, 0x41, 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, 0x55, 0x74, 0x78, 0x6f, 0x73, 0x12, 0x29, 0x2e,
|
0x6c, 0x6c, 0x65, 0x74, 0x2e, 0x73, 0x64, 0x6b, 0x2e, 0x72, 0x70, 0x63, 0x2e, 0x41, 0x64, 0x64,
|
||||||
0x63, 0x61, 0x73, 0x68, 0x2e, 0x7a, 0x2e, 0x77, 0x61, 0x6c, 0x6c, 0x65, 0x74, 0x2e, 0x73, 0x64,
|
0x72, 0x65, 0x73, 0x73, 0x1a, 0x1e, 0x2e, 0x63, 0x61, 0x73, 0x68, 0x2e, 0x7a, 0x2e, 0x77, 0x61,
|
||||||
0x6b, 0x2e, 0x72, 0x70, 0x63, 0x2e, 0x47, 0x65, 0x74, 0x41, 0x64, 0x64, 0x72, 0x65, 0x73, 0x73,
|
0x6c, 0x6c, 0x65, 0x74, 0x2e, 0x73, 0x64, 0x6b, 0x2e, 0x72, 0x70, 0x63, 0x2e, 0x42, 0x61, 0x6c,
|
||||||
0x55, 0x74, 0x78, 0x6f, 0x73, 0x41, 0x72, 0x67, 0x1a, 0x2f, 0x2e, 0x63, 0x61, 0x73, 0x68, 0x2e,
|
0x61, 0x6e, 0x63, 0x65, 0x22, 0x00, 0x28, 0x01, 0x12, 0x54, 0x0a, 0x0c, 0x47, 0x65, 0x74, 0x4d,
|
||||||
|
0x65, 0x6d, 0x70, 0x6f, 0x6f, 0x6c, 0x54, 0x78, 0x12, 0x1e, 0x2e, 0x63, 0x61, 0x73, 0x68, 0x2e,
|
||||||
0x7a, 0x2e, 0x77, 0x61, 0x6c, 0x6c, 0x65, 0x74, 0x2e, 0x73, 0x64, 0x6b, 0x2e, 0x72, 0x70, 0x63,
|
0x7a, 0x2e, 0x77, 0x61, 0x6c, 0x6c, 0x65, 0x74, 0x2e, 0x73, 0x64, 0x6b, 0x2e, 0x72, 0x70, 0x63,
|
||||||
0x2e, 0x47, 0x65, 0x74, 0x41, 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, 0x55, 0x74, 0x78, 0x6f, 0x73,
|
0x2e, 0x45, 0x78, 0x63, 0x6c, 0x75, 0x64, 0x65, 0x1a, 0x20, 0x2e, 0x63, 0x61, 0x73, 0x68, 0x2e,
|
||||||
0x52, 0x65, 0x70, 0x6c, 0x79, 0x4c, 0x69, 0x73, 0x74, 0x22, 0x00, 0x12, 0x73, 0x0a, 0x15, 0x47,
|
0x7a, 0x2e, 0x77, 0x61, 0x6c, 0x6c, 0x65, 0x74, 0x2e, 0x73, 0x64, 0x6b, 0x2e, 0x72, 0x70, 0x63,
|
||||||
0x65, 0x74, 0x41, 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, 0x55, 0x74, 0x78, 0x6f, 0x73, 0x53, 0x74,
|
0x2e, 0x43, 0x6f, 0x6d, 0x70, 0x61, 0x63, 0x74, 0x54, 0x78, 0x22, 0x00, 0x30, 0x01, 0x12, 0x52,
|
||||||
0x72, 0x65, 0x61, 0x6d, 0x12, 0x29, 0x2e, 0x63, 0x61, 0x73, 0x68, 0x2e, 0x7a, 0x2e, 0x77, 0x61,
|
0x0a, 0x0c, 0x47, 0x65, 0x74, 0x54, 0x72, 0x65, 0x65, 0x53, 0x74, 0x61, 0x74, 0x65, 0x12, 0x1e,
|
||||||
0x6c, 0x6c, 0x65, 0x74, 0x2e, 0x73, 0x64, 0x6b, 0x2e, 0x72, 0x70, 0x63, 0x2e, 0x47, 0x65, 0x74,
|
0x2e, 0x63, 0x61, 0x73, 0x68, 0x2e, 0x7a, 0x2e, 0x77, 0x61, 0x6c, 0x6c, 0x65, 0x74, 0x2e, 0x73,
|
||||||
0x41, 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, 0x55, 0x74, 0x78, 0x6f, 0x73, 0x41, 0x72, 0x67, 0x1a,
|
0x64, 0x6b, 0x2e, 0x72, 0x70, 0x63, 0x2e, 0x42, 0x6c, 0x6f, 0x63, 0x6b, 0x49, 0x44, 0x1a, 0x20,
|
||||||
0x2b, 0x2e, 0x63, 0x61, 0x73, 0x68, 0x2e, 0x7a, 0x2e, 0x77, 0x61, 0x6c, 0x6c, 0x65, 0x74, 0x2e,
|
0x2e, 0x63, 0x61, 0x73, 0x68, 0x2e, 0x7a, 0x2e, 0x77, 0x61, 0x6c, 0x6c, 0x65, 0x74, 0x2e, 0x73,
|
||||||
0x73, 0x64, 0x6b, 0x2e, 0x72, 0x70, 0x63, 0x2e, 0x47, 0x65, 0x74, 0x41, 0x64, 0x64, 0x72, 0x65,
|
0x64, 0x6b, 0x2e, 0x72, 0x70, 0x63, 0x2e, 0x54, 0x72, 0x65, 0x65, 0x53, 0x74, 0x61, 0x74, 0x65,
|
||||||
0x73, 0x73, 0x55, 0x74, 0x78, 0x6f, 0x73, 0x52, 0x65, 0x70, 0x6c, 0x79, 0x22, 0x00, 0x30, 0x01,
|
0x22, 0x00, 0x12, 0x6f, 0x0a, 0x0f, 0x47, 0x65, 0x74, 0x41, 0x64, 0x64, 0x72, 0x65, 0x73, 0x73,
|
||||||
0x12, 0x52, 0x0a, 0x0d, 0x47, 0x65, 0x74, 0x4c, 0x69, 0x67, 0x68, 0x74, 0x64, 0x49, 0x6e, 0x66,
|
0x55, 0x74, 0x78, 0x6f, 0x73, 0x12, 0x29, 0x2e, 0x63, 0x61, 0x73, 0x68, 0x2e, 0x7a, 0x2e, 0x77,
|
||||||
0x6f, 0x12, 0x1c, 0x2e, 0x63, 0x61, 0x73, 0x68, 0x2e, 0x7a, 0x2e, 0x77, 0x61, 0x6c, 0x6c, 0x65,
|
0x61, 0x6c, 0x6c, 0x65, 0x74, 0x2e, 0x73, 0x64, 0x6b, 0x2e, 0x72, 0x70, 0x63, 0x2e, 0x47, 0x65,
|
||||||
0x74, 0x2e, 0x73, 0x64, 0x6b, 0x2e, 0x72, 0x70, 0x63, 0x2e, 0x45, 0x6d, 0x70, 0x74, 0x79, 0x1a,
|
0x74, 0x41, 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, 0x55, 0x74, 0x78, 0x6f, 0x73, 0x41, 0x72, 0x67,
|
||||||
0x21, 0x2e, 0x63, 0x61, 0x73, 0x68, 0x2e, 0x7a, 0x2e, 0x77, 0x61, 0x6c, 0x6c, 0x65, 0x74, 0x2e,
|
0x1a, 0x2f, 0x2e, 0x63, 0x61, 0x73, 0x68, 0x2e, 0x7a, 0x2e, 0x77, 0x61, 0x6c, 0x6c, 0x65, 0x74,
|
||||||
0x73, 0x64, 0x6b, 0x2e, 0x72, 0x70, 0x63, 0x2e, 0x4c, 0x69, 0x67, 0x68, 0x74, 0x64, 0x49, 0x6e,
|
0x2e, 0x73, 0x64, 0x6b, 0x2e, 0x72, 0x70, 0x63, 0x2e, 0x47, 0x65, 0x74, 0x41, 0x64, 0x64, 0x72,
|
||||||
0x66, 0x6f, 0x22, 0x00, 0x12, 0x4e, 0x0a, 0x04, 0x50, 0x69, 0x6e, 0x67, 0x12, 0x1f, 0x2e, 0x63,
|
0x65, 0x73, 0x73, 0x55, 0x74, 0x78, 0x6f, 0x73, 0x52, 0x65, 0x70, 0x6c, 0x79, 0x4c, 0x69, 0x73,
|
||||||
|
0x74, 0x22, 0x00, 0x12, 0x73, 0x0a, 0x15, 0x47, 0x65, 0x74, 0x41, 0x64, 0x64, 0x72, 0x65, 0x73,
|
||||||
|
0x73, 0x55, 0x74, 0x78, 0x6f, 0x73, 0x53, 0x74, 0x72, 0x65, 0x61, 0x6d, 0x12, 0x29, 0x2e, 0x63,
|
||||||
0x61, 0x73, 0x68, 0x2e, 0x7a, 0x2e, 0x77, 0x61, 0x6c, 0x6c, 0x65, 0x74, 0x2e, 0x73, 0x64, 0x6b,
|
0x61, 0x73, 0x68, 0x2e, 0x7a, 0x2e, 0x77, 0x61, 0x6c, 0x6c, 0x65, 0x74, 0x2e, 0x73, 0x64, 0x6b,
|
||||||
0x2e, 0x72, 0x70, 0x63, 0x2e, 0x44, 0x75, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x1a, 0x23, 0x2e,
|
0x2e, 0x72, 0x70, 0x63, 0x2e, 0x47, 0x65, 0x74, 0x41, 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, 0x55,
|
||||||
0x63, 0x61, 0x73, 0x68, 0x2e, 0x7a, 0x2e, 0x77, 0x61, 0x6c, 0x6c, 0x65, 0x74, 0x2e, 0x73, 0x64,
|
0x74, 0x78, 0x6f, 0x73, 0x41, 0x72, 0x67, 0x1a, 0x2b, 0x2e, 0x63, 0x61, 0x73, 0x68, 0x2e, 0x7a,
|
||||||
0x6b, 0x2e, 0x72, 0x70, 0x63, 0x2e, 0x50, 0x69, 0x6e, 0x67, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e,
|
0x2e, 0x77, 0x61, 0x6c, 0x6c, 0x65, 0x74, 0x2e, 0x73, 0x64, 0x6b, 0x2e, 0x72, 0x70, 0x63, 0x2e,
|
||||||
0x73, 0x65, 0x22, 0x00, 0x42, 0x10, 0x5a, 0x0b, 0x2e, 0x3b, 0x77, 0x61, 0x6c, 0x6c, 0x65, 0x74,
|
0x47, 0x65, 0x74, 0x41, 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, 0x55, 0x74, 0x78, 0x6f, 0x73, 0x52,
|
||||||
0x72, 0x70, 0x63, 0xba, 0x02, 0x00, 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33,
|
0x65, 0x70, 0x6c, 0x79, 0x22, 0x00, 0x30, 0x01, 0x12, 0x52, 0x0a, 0x0d, 0x47, 0x65, 0x74, 0x4c,
|
||||||
|
0x69, 0x67, 0x68, 0x74, 0x64, 0x49, 0x6e, 0x66, 0x6f, 0x12, 0x1c, 0x2e, 0x63, 0x61, 0x73, 0x68,
|
||||||
|
0x2e, 0x7a, 0x2e, 0x77, 0x61, 0x6c, 0x6c, 0x65, 0x74, 0x2e, 0x73, 0x64, 0x6b, 0x2e, 0x72, 0x70,
|
||||||
|
0x63, 0x2e, 0x45, 0x6d, 0x70, 0x74, 0x79, 0x1a, 0x21, 0x2e, 0x63, 0x61, 0x73, 0x68, 0x2e, 0x7a,
|
||||||
|
0x2e, 0x77, 0x61, 0x6c, 0x6c, 0x65, 0x74, 0x2e, 0x73, 0x64, 0x6b, 0x2e, 0x72, 0x70, 0x63, 0x2e,
|
||||||
|
0x4c, 0x69, 0x67, 0x68, 0x74, 0x64, 0x49, 0x6e, 0x66, 0x6f, 0x22, 0x00, 0x12, 0x4e, 0x0a, 0x04,
|
||||||
|
0x50, 0x69, 0x6e, 0x67, 0x12, 0x1f, 0x2e, 0x63, 0x61, 0x73, 0x68, 0x2e, 0x7a, 0x2e, 0x77, 0x61,
|
||||||
|
0x6c, 0x6c, 0x65, 0x74, 0x2e, 0x73, 0x64, 0x6b, 0x2e, 0x72, 0x70, 0x63, 0x2e, 0x44, 0x75, 0x72,
|
||||||
|
0x61, 0x74, 0x69, 0x6f, 0x6e, 0x1a, 0x23, 0x2e, 0x63, 0x61, 0x73, 0x68, 0x2e, 0x7a, 0x2e, 0x77,
|
||||||
|
0x61, 0x6c, 0x6c, 0x65, 0x74, 0x2e, 0x73, 0x64, 0x6b, 0x2e, 0x72, 0x70, 0x63, 0x2e, 0x50, 0x69,
|
||||||
|
0x6e, 0x67, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x00, 0x42, 0x10, 0x5a, 0x0b,
|
||||||
|
0x2e, 0x3b, 0x77, 0x61, 0x6c, 0x6c, 0x65, 0x74, 0x72, 0x70, 0x63, 0xba, 0x02, 0x00, 0x62, 0x06,
|
||||||
|
0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33,
|
||||||
}
|
}
|
||||||
|
|
||||||
var (
|
var (
|
||||||
|
|
|
@ -66,6 +66,9 @@ message LightdInfo {
|
||||||
string branch = 9;
|
string branch = 9;
|
||||||
string buildDate = 10;
|
string buildDate = 10;
|
||||||
string buildUser = 11;
|
string buildUser = 11;
|
||||||
|
uint64 estimatedHeight = 12; // less than tip height if zcashd is syncing
|
||||||
|
string zcashdBuild = 13; // example: "v4.1.1-877212414"
|
||||||
|
string zcashdSubversion = 14; // example: "/MagicBean:4.1.1/"
|
||||||
}
|
}
|
||||||
|
|
||||||
// TransparentAddressBlockFilter restricts the results to the given address
|
// TransparentAddressBlockFilter restricts the results to the given address
|
||||||
|
|
Loading…
Reference in New Issue