feat(community): add api to edit shared address (#3723)

This commit is contained in:
Jonathan Rainville 2023-07-10 10:11:37 -04:00 committed by GitHub
parent 66a21aa7e4
commit 2c275058ad
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
13 changed files with 659 additions and 252 deletions

View File

@ -685,6 +685,10 @@ func (o *Community) getMember(pk *ecdsa.PublicKey) *protobuf.CommunityMember {
return member
}
func (o *Community) GetMember(pk *ecdsa.PublicKey) *protobuf.CommunityMember {
return o.getMember(pk)
}
func (o *Community) hasMember(pk *ecdsa.PublicKey) bool {
member := o.getMember(pk)
@ -1227,6 +1231,27 @@ func (o *Community) ValidateRequestToJoin(signer *ecdsa.PublicKey, request *prot
return nil
}
// ValidateRequestToJoin validates a request, checks that the right permissions are applied
func (o *Community) ValidateEditSharedAddresses(signer *ecdsa.PublicKey, request *protobuf.CommunityEditRevealedAccounts) error {
o.mutex.Lock()
defer o.mutex.Unlock()
// If we are not admin, fuggetaboutit
if !o.IsOwnerOrAdmin() {
return ErrNotAdmin
}
if len(request.RevealedAccounts) == 0 {
return errors.New("no addresses were shared")
}
if request.Clock < o.config.CommunityDescription.Members[common.PubkeyToHex(signer)].LastUpdateClock {
return errors.New("edit request is older than the last one we have. Ignore")
}
return nil
}
func (o *Community) IsOwner() bool {
return o.config.PrivateKey != nil || o.IsMemberOwner(o.config.MemberIdentity)
}
@ -1921,7 +1946,7 @@ func (o *Community) AllowsAllMembersToPinMessage() bool {
return o.config.CommunityDescription.AdminSettings != nil && o.config.CommunityDescription.AdminSettings.PinMessageAllMembersEnabled
}
func (o *Community) AddMemberRevealedAccounts(memberID string, accounts []*protobuf.RevealedAccount) (*CommunityChanges, error) {
func (o *Community) AddMemberRevealedAccounts(memberID string, accounts []*protobuf.RevealedAccount, clock uint64) (*CommunityChanges, error) {
o.mutex.Lock()
defer o.mutex.Unlock()
@ -1934,6 +1959,7 @@ func (o *Community) AddMemberRevealedAccounts(memberID string, accounts []*proto
}
o.config.CommunityDescription.Members[memberID].RevealedAccounts = accounts
o.config.CommunityDescription.Members[memberID].LastUpdateClock = clock
o.increaseClock()
changes := o.emptyCommunityChanges()

View File

@ -1636,7 +1636,7 @@ func (m *Manager) AcceptRequestToJoin(request *requests.AcceptRequestToJoinCommu
return nil, err
}
_, err = community.AddMemberRevealedAccounts(dbRequest.PublicKey, revealedAccounts)
_, err = community.AddMemberRevealedAccounts(dbRequest.PublicKey, revealedAccounts, dbRequest.Clock)
if err != nil {
return nil, err
}
@ -1900,6 +1900,52 @@ func (m *Manager) HandleCommunityRequestToJoin(signer *ecdsa.PublicKey, request
return requestToJoin, nil
}
func (m *Manager) HandleCommunityEditSharedAddresses(signer *ecdsa.PublicKey, request *protobuf.CommunityEditRevealedAccounts) error {
community, err := m.persistence.GetByID(&m.identity.PublicKey, request.CommunityId)
if err != nil {
return err
}
if community == nil {
return ErrOrgNotFound
}
if err := community.ValidateEditSharedAddresses(signer, request); err != nil {
return err
}
// verify if revealed addresses indeed belong to requester
for _, revealedAccount := range request.RevealedAccounts {
recoverParams := account.RecoverParams{
Message: types.EncodeHex(crypto.Keccak256(crypto.CompressPubkey(signer), community.ID())),
Signature: types.EncodeHex(revealedAccount.Signature),
}
matching, err := m.accountsManager.CanRecover(recoverParams, types.HexToAddress(revealedAccount.Address))
if err != nil {
return err
}
if !matching {
// if ownership of only one wallet address cannot be verified we stop
return errors.New("wrong wallet address used")
}
}
_, err = community.AddMemberRevealedAccounts(common.PubkeyToHex(signer), request.RevealedAccounts, request.Clock)
if err != nil {
return err
}
err = m.persistence.SaveCommunity(community)
if err != nil {
return err
}
if community.IsOwner() {
m.publish(&Subscription{Community: community})
}
return nil
}
type CheckPermissionsResponse struct {
Satisfied bool `json:"satisfied"`
Permissions map[string]*PermissionTokenCriteriaResult `json:"permissions"`

View File

@ -445,6 +445,86 @@ func (s *MessengerCommunitiesTokenPermissionsSuite) TestJoinedCommunityMembersSe
}
}
func (s *MessengerCommunitiesTokenPermissionsSuite) validateAliceAddress(community *communities.Community, wantedAddress string) error {
for pubKey, member := range community.Members() {
if pubKey != common.PubkeyToHex(&s.owner.identity.PublicKey) {
s.Require().Len(member.RevealedAccounts, 1)
switch pubKey {
case common.PubkeyToHex(&s.alice.identity.PublicKey):
if member.RevealedAccounts[0].Address != wantedAddress {
return errors.New("Alice's address does not match the wanted address. Wanted " + wantedAddress + ", Found: " + member.RevealedAccounts[0].Address)
}
default:
return errors.New("pubKey does not match expected keys")
}
}
}
return nil
}
func (s *MessengerCommunitiesTokenPermissionsSuite) TestEditSharedAddresses() {
community, _ := s.createCommunity()
s.advertiseCommunityTo(community, s.alice)
s.joinCommunity(community, s.alice, alicePassword, []string{aliceAddress2})
community, err := s.owner.GetCommunityByID(community.ID())
s.Require().NoError(err)
s.Require().Equal(2, community.MembersCount())
err = s.validateAliceAddress(community, aliceAddress2)
s.Require().NoError(err)
passwdHash := types.EncodeHex(crypto.Keccak256([]byte(alicePassword)))
request := &requests.EditSharedAddresses{CommunityID: community.ID(), Password: passwdHash, AddressesToReveal: []string{aliceAddress1}}
response, err := s.alice.EditSharedAddressesForCommunity(request)
s.Require().NoError(err)
s.Require().NotNil(response)
// Retrieve address change
err = tt.RetryWithBackOff(func() error {
response, err := s.owner.RetrieveAll()
if err != nil {
return err
}
if len(response.Communities()) == 0 {
return errors.New("no communities in response (address change reception)")
}
community := response.Communities()[0]
return s.validateAliceAddress(community, aliceAddress1)
})
s.Require().NoError(err)
// Also check that the owner has the new address in their DB
community, err = s.owner.GetCommunityByID(community.ID())
s.Require().NoError(err)
err = s.validateAliceAddress(community, aliceAddress1)
s.Require().NoError(err)
// Retrieve community description change
err = tt.RetryWithBackOff(func() error {
response, err := s.alice.RetrieveAll()
if err != nil {
return err
}
if len(response.Communities()) == 0 {
return errors.New("no communities in response (address change reception)")
}
return nil
})
s.Require().NoError(err)
// Check that Alice's community is updated with the new addresses
community, err = s.alice.GetCommunityByID(community.ID())
s.Require().NoError(err)
err = s.validateAliceAddress(community, aliceAddress1)
s.Require().NoError(err)
}
func (s *MessengerCommunitiesTokenPermissionsSuite) TestBecomeMemberPermissions() {
community, chat := s.createCommunity()

View File

@ -4190,6 +4190,15 @@ func (m *Messenger) handleRetrievedMessages(chatWithMessages map[transport.Filte
logger.Warn("failed to handle CommunityRequestToJoin", zap.Error(err))
continue
}
case protobuf.CommunityEditRevealedAccounts:
logger.Debug("Handling CommunityEditRevealedAccounts")
request := msg.ParsedMessage.Interface().(protobuf.CommunityEditRevealedAccounts)
m.outputToCSV(msg.TransportMessage.Timestamp, msg.ID, senderID, filter.Topic, filter.ChatID, msg.Type, request)
err = m.HandleCommunityEditSharedAddresses(messageState, publicKey, request)
if err != nil {
logger.Warn("failed to handle CommunityEditRevealedAccounts", zap.Error(err))
continue
}
case protobuf.CommunityCancelRequestToJoin:
logger.Debug("Handling CommunityCancelRequestToJoin")
request := msg.ParsedMessage.Interface().(protobuf.CommunityCancelRequestToJoin)

View File

@ -661,6 +661,62 @@ func (m *Messenger) SetMutePropertyOnChatsByCategory(request *requests.MuteCateg
return nil
}
// getAccountsToShare is used to get the wallet accounts to share either when requesting to join a community or when editing
// requestToJoinID can be empty when editing
func (m *Messenger) getAccountsToShare(addressesToReveal []string, communityID types.HexBytes, password string, requestToJoinID []byte) (map[gethcommon.Address]*protobuf.RevealedAccount, []gethcommon.Address, error) {
walletAccounts, err := m.settings.GetAccounts()
if err != nil {
return nil, nil, err
}
revealedAccounts := make(map[gethcommon.Address]*protobuf.RevealedAccount)
revealedAddresses := make([]gethcommon.Address, 0)
containsAddress := func(addresses []string, targetAddress string) bool {
for _, address := range addresses {
if address == targetAddress {
return true
}
}
return false
}
for _, walletAccount := range walletAccounts {
if walletAccount.Chat || walletAccount.Type == accounts.AccountTypeWatch {
continue
}
if len(addressesToReveal) > 0 && !containsAddress(addressesToReveal, walletAccount.Address.Hex()) {
continue
}
verifiedAccount, err := m.accountsManager.GetVerifiedWalletAccount(m.settings, walletAccount.Address.Hex(), password)
if err != nil {
return nil, nil, err
}
messageToSign := types.EncodeHex(crypto.Keccak256(m.IdentityPublicKeyCompressed(), communityID, requestToJoinID))
signParams := account.SignParams{
Data: messageToSign,
Address: verifiedAccount.Address.Hex(),
Password: password,
}
signatureBytes, err := m.accountsManager.Sign(signParams, verifiedAccount)
if err != nil {
return nil, nil, err
}
revealedAddress := gethcommon.HexToAddress(verifiedAccount.Address.Hex())
revealedAddresses = append(revealedAddresses, revealedAddress)
revealedAccounts[revealedAddress] = &protobuf.RevealedAccount{
Address: verifiedAccount.Address.Hex(),
Signature: signatureBytes,
ChainIds: make([]uint64, 0),
}
}
return revealedAccounts, revealedAddresses, nil
}
func (m *Messenger) RequestToJoinCommunity(request *requests.RequestToJoinCommunity) (*MessengerResponse, error) {
logger := m.logger.Named("RequestToJoinCommunity")
if err := request.Validate(); err != nil {
@ -668,7 +724,6 @@ func (m *Messenger) RequestToJoinCommunity(request *requests.RequestToJoinCommun
return nil, err
}
// verify wallet password if there
if request.Password != "" {
walletAccounts, err := m.settings.GetAccounts()
if err != nil {
@ -707,57 +762,16 @@ func (m *Messenger) RequestToJoinCommunity(request *requests.RequestToJoinCommun
// find wallet accounts and attach wallet addresses and
// signatures to request
if request.Password != "" {
walletAccounts, err := m.settings.GetAccounts()
revealedAccounts, revealedAddresses, err := m.getAccountsToShare(
request.AddressesToReveal,
request.CommunityID,
request.Password,
requestToJoin.ID,
)
if err != nil {
return nil, err
}
revealedAccounts := make(map[gethcommon.Address]*protobuf.RevealedAccount)
revealedAddresses := make([]gethcommon.Address, 0)
containsAddress := func(addresses []string, targetAddress string) bool {
for _, address := range addresses {
if address == targetAddress {
return true
}
}
return false
}
for _, walletAccount := range walletAccounts {
if !walletAccount.Chat && walletAccount.Type != accounts.AccountTypeWatch {
if len(request.AddressesToReveal) > 0 && !containsAddress(request.AddressesToReveal, walletAccount.Address.Hex()) {
continue
}
verifiedAccount, err := m.accountsManager.GetVerifiedWalletAccount(m.settings, walletAccount.Address.Hex(), request.Password)
if err != nil {
return nil, err
}
messageToSign := types.EncodeHex(crypto.Keccak256(m.IdentityPublicKeyCompressed(), request.CommunityID, requestToJoin.ID))
signParams := account.SignParams{
Data: messageToSign,
Address: verifiedAccount.Address.Hex(),
Password: request.Password,
}
signatureBytes, err := m.accountsManager.Sign(signParams, verifiedAccount)
if err != nil {
return nil, err
}
revealedAddress := gethcommon.HexToAddress(verifiedAccount.Address.Hex())
revealedAddresses = append(revealedAddresses, revealedAddress)
revealedAccounts[revealedAddress] = &protobuf.RevealedAccount{
Address: verifiedAccount.Address.Hex(),
Signature: signatureBytes,
ChainIds: make([]uint64, 0),
}
}
}
response, err := m.communitiesManager.CheckPermissionToJoin(community.ID(), revealedAddresses)
if err != nil {
return nil, err
@ -841,6 +855,101 @@ func (m *Messenger) RequestToJoinCommunity(request *requests.RequestToJoinCommun
return response, nil
}
func (m *Messenger) EditSharedAddressesForCommunity(request *requests.EditSharedAddresses) (*MessengerResponse, error) {
logger := m.logger.Named("EditSharedAddressesForCommunity")
if err := request.Validate(); err != nil {
logger.Debug("request failed to validate", zap.Error(err), zap.Any("request", request))
return nil, err
}
// verify wallet password is there
if request.Password == "" {
return nil, errors.New("password is necessary to use this function")
}
community, err := m.communitiesManager.GetByID(request.CommunityID)
if err != nil {
return nil, err
}
walletAccounts, err := m.settings.GetAccounts()
if err != nil {
return nil, err
}
if len(walletAccounts) > 0 {
_, err := m.accountsManager.GetVerifiedWalletAccount(m.settings, walletAccounts[0].Address.Hex(), request.Password)
if err != nil {
return nil, err
}
}
if !community.HasMember(m.IdentityPublicKey()) {
return nil, errors.New("not part of the community")
}
member := community.GetMember(m.IdentityPublicKey())
requestToEditRevealedAccountsProto := &protobuf.CommunityEditRevealedAccounts{
Clock: member.LastUpdateClock + 1,
CommunityId: community.ID(),
RevealedAccounts: make([]*protobuf.RevealedAccount, 0),
}
// find wallet accounts and attach wallet addresses and
// signatures to request
revealedAccounts, revealedAddresses, err := m.getAccountsToShare(
request.AddressesToReveal,
request.CommunityID,
request.Password,
[]byte{},
)
if err != nil {
return nil, err
}
checkPermissionResponse, err := m.communitiesManager.CheckPermissionToJoin(community.ID(), revealedAddresses)
if err != nil {
return nil, err
}
for _, accountAndChainIDs := range checkPermissionResponse.ValidCombinations {
revealedAccounts[accountAndChainIDs.Address].ChainIds = accountAndChainIDs.ChainIDs
}
for _, revealedAccount := range revealedAccounts {
requestToEditRevealedAccountsProto.RevealedAccounts = append(requestToEditRevealedAccountsProto.RevealedAccounts, revealedAccount)
}
payload, err := proto.Marshal(requestToEditRevealedAccountsProto)
if err != nil {
return nil, err
}
rawMessage := common.RawMessage{
Payload: payload,
CommunityID: community.ID(),
SkipProtocolLayer: true,
MessageType: protobuf.ApplicationMetadataMessage_COMMUNITY_EDIT_SHARED_ADDRESSES,
}
_, err = m.sender.SendCommunityMessage(context.Background(), rawMessage)
if err != nil {
return nil, err
}
// send edit message also to community admins
communityAdmins := community.GetMemberAdmins()
for _, communityAdmin := range communityAdmins {
_, err := m.sender.SendPrivate(context.Background(), communityAdmin, &rawMessage)
if err != nil {
return nil, err
}
}
response := &MessengerResponse{}
response.AddCommunity(community)
return response, nil
}
func (m *Messenger) CreateCommunityCategory(request *requests.CreateCommunityCategory) (*MessengerResponse, error) {
if err := request.Validate(); err != nil {
return nil, err

View File

@ -49,6 +49,7 @@ var (
ErrSomeFieldsMissingForWalletAccount = errors.New("some fields are missing for wallet account")
ErrTryingToRemoveUnexistingWalletAccount = errors.New("trying to remove an unexisting wallet account")
ErrUnknownKeypairForWalletAccount = errors.New("keypair is not known for the wallet account")
ErrInvalidCommunityID = errors.New("invalid community id")
)
// HandleMembershipUpdate updates a Chat instance according to the membership updates.
@ -1356,7 +1357,7 @@ func (m *Messenger) handleArchiveMessages(archiveMessages []*protobuf.WakuMessag
func (m *Messenger) HandleCommunityCancelRequestToJoin(state *ReceivedMessageState, signer *ecdsa.PublicKey, cancelRequestToJoinProto protobuf.CommunityCancelRequestToJoin) error {
if cancelRequestToJoinProto.CommunityId == nil {
return errors.New("invalid community id")
return ErrInvalidCommunityID
}
requestToJoin, err := m.communitiesManager.HandleCommunityCancelRequestToJoin(signer, &cancelRequestToJoinProto)
@ -1399,7 +1400,7 @@ func (m *Messenger) HandleCommunityCancelRequestToJoin(state *ReceivedMessageSta
// HandleCommunityRequestToJoin handles an community request to join
func (m *Messenger) HandleCommunityRequestToJoin(state *ReceivedMessageState, signer *ecdsa.PublicKey, requestToJoinProto protobuf.CommunityRequestToJoin) error {
if requestToJoinProto.CommunityId == nil {
return errors.New("invalid community id")
return ErrInvalidCommunityID
}
timeNow := uint64(time.Now().Unix())
@ -1505,9 +1506,29 @@ func (m *Messenger) HandleCommunityRequestToJoin(state *ReceivedMessageState, si
return nil
}
// HandleCommunityEditSharedAddresses handles an edit a user has made to their shared addresses
func (m *Messenger) HandleCommunityEditSharedAddresses(state *ReceivedMessageState, signer *ecdsa.PublicKey, editRevealedAddressesProto protobuf.CommunityEditRevealedAccounts) error {
if editRevealedAddressesProto.CommunityId == nil {
return ErrInvalidCommunityID
}
err := m.communitiesManager.HandleCommunityEditSharedAddresses(signer, &editRevealedAddressesProto)
if err != nil {
return err
}
community, err := m.communitiesManager.GetByIDString(string(editRevealedAddressesProto.GetCommunityId()))
if err != nil {
return err
}
state.Response.AddCommunity(community)
return nil
}
func (m *Messenger) HandleCommunityRequestToJoinResponse(state *ReceivedMessageState, signer *ecdsa.PublicKey, requestToJoinResponseProto protobuf.CommunityRequestToJoinResponse) error {
if requestToJoinResponseProto.CommunityId == nil {
return errors.New("invalid community id")
return ErrInvalidCommunityID
}
updatedRequest, err := m.communitiesManager.HandleCommunityRequestToJoinResponse(signer, &requestToJoinResponseProto)
@ -1592,7 +1613,7 @@ func (m *Messenger) HandleCommunityRequestToJoinResponse(state *ReceivedMessageS
func (m *Messenger) HandleCommunityRequestToLeave(state *ReceivedMessageState, signer *ecdsa.PublicKey, requestToLeaveProto protobuf.CommunityRequestToLeave) error {
if requestToLeaveProto.CommunityId == nil {
return errors.New("invalid community id")
return ErrInvalidCommunityID
}
err := m.communitiesManager.HandleCommunityRequestToLeave(signer, &requestToLeaveProto)

View File

@ -91,6 +91,7 @@ const (
ApplicationMetadataMessage_SYNC_ACTIVITY_CENTER_NOTIFICATION ApplicationMetadataMessage_Type = 66
ApplicationMetadataMessage_SYNC_ACTIVITY_CENTER_NOTIFICATION_STATE ApplicationMetadataMessage_Type = 67
ApplicationMetadataMessage_COMMUNITY_ADMIN_MESSAGE ApplicationMetadataMessage_Type = 68
ApplicationMetadataMessage_COMMUNITY_EDIT_SHARED_ADDRESSES ApplicationMetadataMessage_Type = 69
)
var ApplicationMetadataMessage_Type_name = map[int32]string{
@ -162,6 +163,7 @@ var ApplicationMetadataMessage_Type_name = map[int32]string{
66: "SYNC_ACTIVITY_CENTER_NOTIFICATION",
67: "SYNC_ACTIVITY_CENTER_NOTIFICATION_STATE",
68: "COMMUNITY_ADMIN_MESSAGE",
69: "COMMUNITY_EDIT_SHARED_ADDRESSES",
}
var ApplicationMetadataMessage_Type_value = map[string]int32{
@ -233,6 +235,7 @@ var ApplicationMetadataMessage_Type_value = map[string]int32{
"SYNC_ACTIVITY_CENTER_NOTIFICATION": 66,
"SYNC_ACTIVITY_CENTER_NOTIFICATION_STATE": 67,
"COMMUNITY_ADMIN_MESSAGE": 68,
"COMMUNITY_EDIT_SHARED_ADDRESSES": 69,
}
func (x ApplicationMetadataMessage_Type) String() string {
@ -311,67 +314,67 @@ func init() {
}
var fileDescriptor_ad09a6406fcf24c7 = []byte{
// 977 bytes of a gzipped FileDescriptorProto
0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0x84, 0x55, 0x6b, 0x73, 0x13, 0x37,
0x14, 0x6d, 0x20, 0x4d, 0x40, 0x79, 0x29, 0x22, 0x0f, 0xe7, 0xed, 0x18, 0x08, 0x01, 0x5a, 0xd3,
0x42, 0xdb, 0x69, 0x4b, 0x69, 0x2b, 0x4b, 0x37, 0xb6, 0xf0, 0xae, 0xb4, 0x48, 0x5a, 0x77, 0xdc,
0x2f, 0x1a, 0x53, 0x5c, 0x26, 0x33, 0x40, 0x3c, 0xc4, 0xf9, 0x90, 0xbf, 0xd3, 0x5f, 0xd1, 0x9f,
0xd7, 0xd1, 0x3e, 0x9d, 0x64, 0xd3, 0x7c, 0x4a, 0x7c, 0xef, 0xd1, 0x95, 0xee, 0xb9, 0xe7, 0x9e,
0x45, 0x8d, 0xc1, 0x68, 0xf4, 0xe1, 0xf8, 0xaf, 0xc1, 0xf8, 0xf8, 0xe4, 0x93, 0xfb, 0x38, 0x1c,
0x0f, 0xde, 0x0d, 0xc6, 0x03, 0xf7, 0x71, 0x78, 0x7a, 0x3a, 0x78, 0x3f, 0x6c, 0x8e, 0x3e, 0x9f,
0x8c, 0x4f, 0xc8, 0x9d, 0xe4, 0xcf, 0xdb, 0xb3, 0xbf, 0x1b, 0xff, 0x62, 0xb4, 0x49, 0xcb, 0x03,
0x61, 0x86, 0x0f, 0x53, 0x38, 0xd9, 0x46, 0x77, 0x4f, 0x8f, 0xdf, 0x7f, 0x1a, 0x8c, 0xcf, 0x3e,
0x0f, 0x6b, 0x53, 0xf5, 0xa9, 0xc3, 0x79, 0x5d, 0x06, 0x48, 0x0d, 0xcd, 0x8e, 0x06, 0xe7, 0x1f,
0x4e, 0x06, 0xef, 0x6a, 0xb7, 0x92, 0x5c, 0xfe, 0x93, 0xbc, 0x42, 0xd3, 0xe3, 0xf3, 0xd1, 0xb0,
0x76, 0xbb, 0x3e, 0x75, 0xb8, 0xf8, 0xfc, 0x71, 0x33, 0xbf, 0xaf, 0x79, 0xfd, 0x5d, 0x4d, 0x7b,
0x3e, 0x1a, 0xea, 0xe4, 0x58, 0xe3, 0x9f, 0x25, 0x34, 0xed, 0x7f, 0x92, 0x39, 0x34, 0x1b, 0xcb,
0xae, 0x54, 0x7f, 0x48, 0xfc, 0x05, 0xc1, 0x68, 0x9e, 0x75, 0xa8, 0x75, 0x21, 0x18, 0x43, 0xdb,
0x80, 0xa7, 0x08, 0x41, 0x8b, 0x4c, 0x49, 0x4b, 0x99, 0x75, 0x71, 0xc4, 0xa9, 0x05, 0x7c, 0x8b,
0xec, 0xa0, 0x8d, 0x10, 0xc2, 0x16, 0x68, 0xd3, 0x11, 0x51, 0x16, 0x2e, 0x8e, 0xdc, 0x26, 0xab,
0x68, 0x39, 0xa2, 0x42, 0x3b, 0x21, 0x8d, 0xa5, 0x41, 0x40, 0xad, 0x50, 0x12, 0x4f, 0xfb, 0xb0,
0xe9, 0x4b, 0x76, 0x31, 0xfc, 0x25, 0xb9, 0x8f, 0xf6, 0x34, 0xbc, 0x89, 0xc1, 0x58, 0x47, 0x39,
0xd7, 0x60, 0x8c, 0x3b, 0x52, 0xda, 0x59, 0x4d, 0xa5, 0xa1, 0x2c, 0x01, 0xcd, 0x90, 0x27, 0xe8,
0x80, 0x32, 0x06, 0x91, 0x75, 0x37, 0x61, 0x67, 0xc9, 0x53, 0xf4, 0x88, 0x03, 0x0b, 0x84, 0x84,
0x1b, 0xc1, 0x77, 0xc8, 0x3a, 0xba, 0x97, 0x83, 0x26, 0x13, 0x77, 0xc9, 0x0a, 0xc2, 0x06, 0x24,
0xbf, 0x10, 0x45, 0x64, 0x0f, 0x6d, 0x5d, 0xae, 0x3d, 0x09, 0x98, 0xf3, 0xd4, 0x5c, 0x69, 0xd2,
0x65, 0x04, 0xe2, 0xf9, 0xea, 0x34, 0x65, 0x4c, 0xc5, 0xd2, 0xe2, 0x05, 0xb2, 0x8f, 0x76, 0xae,
0xa6, 0xa3, 0xb8, 0x15, 0x08, 0xe6, 0xfc, 0x5c, 0xf0, 0x22, 0xd9, 0x45, 0x9b, 0xf9, 0x3c, 0x98,
0xe2, 0xe0, 0x28, 0xef, 0x81, 0xb6, 0xc2, 0x40, 0x08, 0xd2, 0xe2, 0x25, 0xd2, 0x40, 0xbb, 0x51,
0x6c, 0x3a, 0x4e, 0x2a, 0x2b, 0x8e, 0x04, 0x4b, 0x4b, 0x68, 0x68, 0x0b, 0x63, 0x75, 0x4a, 0x39,
0xf6, 0x0c, 0xfd, 0x3f, 0xc6, 0x69, 0x30, 0x91, 0x92, 0x06, 0xf0, 0x32, 0xd9, 0x42, 0xeb, 0x57,
0xc1, 0x6f, 0x62, 0xd0, 0x7d, 0x4c, 0xc8, 0x03, 0x54, 0xbf, 0x26, 0x59, 0x96, 0xb8, 0xe7, 0xbb,
0xae, 0xba, 0x2f, 0xe1, 0x0f, 0xaf, 0xf8, 0x96, 0xaa, 0xd2, 0xd9, 0xf1, 0x55, 0x2f, 0x41, 0x08,
0xd5, 0x6b, 0xe1, 0x34, 0x64, 0x3c, 0xaf, 0x91, 0x0d, 0xb4, 0xda, 0xd6, 0x2a, 0x8e, 0x12, 0x5a,
0x9c, 0x90, 0x3d, 0x61, 0xd3, 0xee, 0xd6, 0xc9, 0x32, 0x5a, 0x48, 0x83, 0x1c, 0xa4, 0x15, 0xb6,
0x8f, 0x6b, 0x1e, 0xcd, 0x54, 0x18, 0xc6, 0x52, 0xd8, 0xbe, 0xe3, 0x60, 0x98, 0x16, 0x51, 0x82,
0xde, 0x20, 0x35, 0xb4, 0x52, 0xa6, 0x26, 0xea, 0x6c, 0xfa, 0x57, 0x97, 0x99, 0x62, 0xda, 0xca,
0xbd, 0x56, 0x42, 0xe2, 0x2d, 0xb2, 0x84, 0xe6, 0x22, 0x21, 0x0b, 0xd9, 0x6f, 0xfb, 0xdd, 0x01,
0x2e, 0xca, 0xdd, 0xd9, 0xf1, 0x2f, 0x31, 0x96, 0xda, 0xd8, 0xe4, 0xab, 0xb3, 0xeb, 0x7b, 0xe1,
0x10, 0xc0, 0xc4, 0xbe, 0xec, 0x79, 0x51, 0x55, 0x69, 0x26, 0xbb, 0x1a, 0xd7, 0xc9, 0x26, 0x5a,
0xa3, 0x52, 0xc9, 0x7e, 0xa8, 0x62, 0xe3, 0x42, 0xb0, 0x5a, 0x30, 0xd7, 0xa2, 0x96, 0x75, 0xf0,
0x7e, 0xb1, 0x55, 0x49, 0xcb, 0x1a, 0x42, 0xd5, 0x03, 0x8e, 0x1b, 0x7e, 0x6a, 0x65, 0x38, 0xbb,
0xca, 0x78, 0x02, 0x39, 0xbe, 0x4f, 0x10, 0x9a, 0x69, 0x51, 0xd6, 0x8d, 0x23, 0xfc, 0xa0, 0x50,
0xa4, 0x67, 0xb6, 0xe7, 0x3b, 0x65, 0x20, 0x2d, 0xe8, 0x14, 0xfa, 0xb0, 0x50, 0xe4, 0xe5, 0x74,
0xba, 0x8d, 0xc0, 0xf1, 0x81, 0x57, 0x5c, 0x25, 0x84, 0x0b, 0x13, 0x0a, 0x63, 0x80, 0xe3, 0x47,
0x09, 0x13, 0x1e, 0xd3, 0x52, 0xaa, 0x1b, 0x52, 0xdd, 0xc5, 0x87, 0x64, 0x0d, 0x91, 0xf4, 0x85,
0x01, 0x50, 0xed, 0x3a, 0xc2, 0x58, 0xa5, 0xfb, 0xf8, 0xb1, 0xa7, 0x31, 0x89, 0x1b, 0xb0, 0x56,
0xc8, 0x36, 0x7e, 0x42, 0xea, 0x68, 0xbb, 0x1c, 0x04, 0xd5, 0xac, 0x23, 0x7a, 0xe0, 0x42, 0xda,
0x96, 0x60, 0x03, 0x21, 0xbb, 0xf8, 0xa9, 0x1f, 0x62, 0x72, 0x26, 0xd2, 0xea, 0x48, 0x04, 0xe0,
0x22, 0xc1, 0x6c, 0xac, 0x01, 0x7f, 0x55, 0x54, 0xcb, 0x77, 0xec, 0xeb, 0x84, 0xcc, 0xd4, 0x4a,
0xf2, 0x3d, 0xca, 0x95, 0xd8, 0xf4, 0xac, 0x69, 0xb0, 0x3a, 0x5d, 0xae, 0x8b, 0xc9, 0x67, 0xe4,
0x00, 0x35, 0xae, 0xd5, 0x43, 0x29, 0xd7, 0x6f, 0x4a, 0xea, 0x0b, 0x70, 0xd6, 0x8a, 0xc1, 0xdf,
0xfa, 0x5e, 0xf2, 0xa3, 0xf9, 0x0d, 0x3d, 0xd0, 0x85, 0xec, 0xf1, 0x73, 0xaf, 0x86, 0x4b, 0xef,
0xbb, 0x00, 0x78, 0xe1, 0x4b, 0xe4, 0x1e, 0x54, 0x89, 0xf8, 0xae, 0xd0, 0x84, 0xd5, 0xb1, 0xb1,
0xc0, 0x5d, 0x6c, 0x40, 0xe3, 0xef, 0x8b, 0x51, 0x4f, 0xa2, 0x8b, 0xfe, 0x7e, 0x28, 0x46, 0x7d,
0xa9, 0x73, 0xc7, 0x81, 0x09, 0xe3, 0x0b, 0xff, 0x98, 0x9a, 0x4f, 0x05, 0x05, 0x01, 0xd0, 0x1e,
0xe0, 0x9f, 0x7c, 0x3e, 0x29, 0x91, 0x49, 0xdc, 0xdb, 0x6d, 0x58, 0x2a, 0xfd, 0xe7, 0x62, 0xe6,
0x86, 0xf6, 0x80, 0xe7, 0xae, 0x8c, 0x5f, 0x7a, 0x1b, 0x29, 0xeb, 0x32, 0x2a, 0x19, 0x04, 0x57,
0x36, 0xee, 0x17, 0xcf, 0x4c, 0x96, 0xab, 0xec, 0xfb, 0x55, 0x31, 0xec, 0x2e, 0xf4, 0xfd, 0x07,
0x08, 0xff, 0xea, 0xed, 0x3d, 0x8f, 0x30, 0xaa, 0xb9, 0xcb, 0xfc, 0xe3, 0xb7, 0x82, 0x22, 0xa3,
0x98, 0xa0, 0x81, 0xf3, 0x3a, 0x32, 0xf8, 0x77, 0xb2, 0x8d, 0x6a, 0x49, 0x18, 0xa4, 0x49, 0x58,
0x93, 0x34, 0x04, 0xc7, 0xc1, 0x52, 0x11, 0x60, 0x4a, 0x1e, 0xa2, 0xfd, 0x4a, 0xa5, 0x4f, 0x1a,
0x17, 0x6e, 0x79, 0x7b, 0xbd, 0x11, 0xe6, 0xbc, 0x31, 0x00, 0x66, 0x5e, 0x2d, 0x13, 0xe2, 0xe6,
0xe1, 0x84, 0xa5, 0xf0, 0xd6, 0xc2, 0x9f, 0x73, 0xcd, 0x67, 0x2f, 0xf3, 0x2f, 0xfb, 0xdb, 0x99,
0xe4, 0xbf, 0x17, 0xff, 0x05, 0x00, 0x00, 0xff, 0xff, 0xf3, 0x96, 0x25, 0x5f, 0x80, 0x08, 0x00,
0x00,
// 990 bytes of a gzipped FileDescriptorProto
0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0x84, 0x55, 0x6b, 0x73, 0x53, 0x37,
0x10, 0x6d, 0x80, 0x26, 0xa0, 0xbc, 0x36, 0x22, 0x0f, 0xe7, 0x9d, 0x18, 0x08, 0x01, 0x5a, 0xd3,
0x42, 0xdb, 0x69, 0x4b, 0x69, 0x2b, 0x4b, 0x1b, 0x5b, 0xf8, 0x5e, 0xdd, 0x8b, 0xa4, 0xeb, 0x8e,
0xfb, 0x45, 0x63, 0x8a, 0xcb, 0x64, 0x06, 0x88, 0x87, 0x98, 0x0f, 0xf9, 0x85, 0xfd, 0x15, 0xfd,
0x2f, 0x1d, 0xdd, 0xa7, 0x93, 0x38, 0xcd, 0xa7, 0xc4, 0xbb, 0x47, 0x2b, 0xed, 0xd9, 0xb3, 0xe7,
0x92, 0x7a, 0x7f, 0x38, 0x7c, 0x7f, 0xfc, 0x57, 0x7f, 0x74, 0x7c, 0xf2, 0xd1, 0x7d, 0x18, 0x8c,
0xfa, 0x6f, 0xfb, 0xa3, 0xbe, 0xfb, 0x30, 0x38, 0x3d, 0xed, 0xbf, 0x1b, 0x34, 0x86, 0x9f, 0x4e,
0x46, 0x27, 0xf4, 0x76, 0xfa, 0xe7, 0xcd, 0xe7, 0xbf, 0xeb, 0xff, 0x02, 0xd9, 0x60, 0xd5, 0x81,
0x30, 0xc7, 0x87, 0x19, 0x9c, 0x6e, 0x91, 0x3b, 0xa7, 0xc7, 0xef, 0x3e, 0xf6, 0x47, 0x9f, 0x3f,
0x0d, 0x6a, 0x53, 0x7b, 0x53, 0x87, 0x73, 0xba, 0x0a, 0xd0, 0x1a, 0x99, 0x19, 0xf6, 0xcf, 0xde,
0x9f, 0xf4, 0xdf, 0xd6, 0x6e, 0xa4, 0xb9, 0xe2, 0x27, 0x7d, 0x49, 0x6e, 0x8d, 0xce, 0x86, 0x83,
0xda, 0xcd, 0xbd, 0xa9, 0xc3, 0x85, 0x67, 0x8f, 0x1a, 0xc5, 0x7d, 0x8d, 0xab, 0xef, 0x6a, 0xd8,
0xb3, 0xe1, 0x40, 0xa7, 0xc7, 0xea, 0xff, 0x2c, 0x92, 0x5b, 0xfe, 0x27, 0x9d, 0x25, 0x33, 0x89,
0xea, 0xa8, 0xe8, 0x0f, 0x05, 0x5f, 0x50, 0x20, 0x73, 0xbc, 0xcd, 0xac, 0x0b, 0xd1, 0x18, 0xd6,
0x42, 0x98, 0xa2, 0x94, 0x2c, 0xf0, 0x48, 0x59, 0xc6, 0xad, 0x4b, 0x62, 0xc1, 0x2c, 0xc2, 0x0d,
0xba, 0x4d, 0xd6, 0x43, 0x0c, 0x9b, 0xa8, 0x4d, 0x5b, 0xc6, 0x79, 0xb8, 0x3c, 0x72, 0x93, 0xae,
0x90, 0xa5, 0x98, 0x49, 0xed, 0xa4, 0x32, 0x96, 0x05, 0x01, 0xb3, 0x32, 0x52, 0x70, 0xcb, 0x87,
0x4d, 0x4f, 0xf1, 0xf3, 0xe1, 0x2f, 0xe9, 0x3d, 0xb2, 0xab, 0xf1, 0x75, 0x82, 0xc6, 0x3a, 0x26,
0x84, 0x46, 0x63, 0xdc, 0x51, 0xa4, 0x9d, 0xd5, 0x4c, 0x19, 0xc6, 0x53, 0xd0, 0x34, 0x7d, 0x4c,
0x0e, 0x18, 0xe7, 0x18, 0x5b, 0x77, 0x1d, 0x76, 0x86, 0x3e, 0x21, 0x0f, 0x05, 0xf2, 0x40, 0x2a,
0xbc, 0x16, 0x7c, 0x9b, 0xae, 0x91, 0xbb, 0x05, 0x68, 0x3c, 0x71, 0x87, 0x2e, 0x13, 0x30, 0xa8,
0xc4, 0xb9, 0x28, 0xa1, 0xbb, 0x64, 0xf3, 0x62, 0xed, 0x71, 0xc0, 0xac, 0xa7, 0xe6, 0x52, 0x93,
0x2e, 0x27, 0x10, 0xe6, 0x26, 0xa7, 0x19, 0xe7, 0x51, 0xa2, 0x2c, 0xcc, 0xd3, 0x7d, 0xb2, 0x7d,
0x39, 0x1d, 0x27, 0xcd, 0x40, 0x72, 0xe7, 0xe7, 0x02, 0x0b, 0x74, 0x87, 0x6c, 0x14, 0xf3, 0xe0,
0x91, 0x40, 0xc7, 0x44, 0x17, 0xb5, 0x95, 0x06, 0x43, 0x54, 0x16, 0x16, 0x69, 0x9d, 0xec, 0xc4,
0x89, 0x69, 0x3b, 0x15, 0x59, 0x79, 0x24, 0x79, 0x56, 0x42, 0x63, 0x4b, 0x1a, 0xab, 0x33, 0xca,
0xc1, 0x33, 0xf4, 0xff, 0x18, 0xa7, 0xd1, 0xc4, 0x91, 0x32, 0x08, 0x4b, 0x74, 0x93, 0xac, 0x5d,
0x06, 0xbf, 0x4e, 0x50, 0xf7, 0x80, 0xd2, 0xfb, 0x64, 0xef, 0x8a, 0x64, 0x55, 0xe2, 0xae, 0xef,
0x7a, 0xd2, 0x7d, 0x29, 0x7f, 0xb0, 0xec, 0x5b, 0x9a, 0x94, 0xce, 0x8f, 0xaf, 0x78, 0x09, 0x62,
0x18, 0xbd, 0x92, 0x4e, 0x63, 0xce, 0xf3, 0x2a, 0x5d, 0x27, 0x2b, 0x2d, 0x1d, 0x25, 0x71, 0x4a,
0x8b, 0x93, 0xaa, 0x2b, 0x6d, 0xd6, 0xdd, 0x1a, 0x5d, 0x22, 0xf3, 0x59, 0x50, 0xa0, 0xb2, 0xd2,
0xf6, 0xa0, 0xe6, 0xd1, 0x3c, 0x0a, 0xc3, 0x44, 0x49, 0xdb, 0x73, 0x02, 0x0d, 0xd7, 0x32, 0x4e,
0xd1, 0xeb, 0xb4, 0x46, 0x96, 0xab, 0xd4, 0x58, 0x9d, 0x0d, 0xff, 0xea, 0x2a, 0x53, 0x4e, 0x3b,
0x72, 0xaf, 0x22, 0xa9, 0x60, 0x93, 0x2e, 0x92, 0xd9, 0x58, 0xaa, 0x52, 0xf6, 0x5b, 0x7e, 0x77,
0x50, 0xc8, 0x6a, 0x77, 0xb6, 0xfd, 0x4b, 0x8c, 0x65, 0x36, 0x31, 0xc5, 0xea, 0xec, 0xf8, 0x5e,
0x04, 0x06, 0x38, 0xb6, 0x2f, 0xbb, 0x5e, 0x54, 0x93, 0x34, 0x93, 0x5f, 0x0d, 0x7b, 0x74, 0x83,
0xac, 0x32, 0x15, 0xa9, 0x5e, 0x18, 0x25, 0xc6, 0x85, 0x68, 0xb5, 0xe4, 0xae, 0xc9, 0x2c, 0x6f,
0xc3, 0x7e, 0xb9, 0x55, 0x69, 0xcb, 0x1a, 0xc3, 0xa8, 0x8b, 0x02, 0xea, 0x7e, 0x6a, 0x55, 0x38,
0xbf, 0xca, 0x78, 0x02, 0x05, 0xdc, 0xa3, 0x84, 0x4c, 0x37, 0x19, 0xef, 0x24, 0x31, 0xdc, 0x2f,
0x15, 0xe9, 0x99, 0xed, 0xfa, 0x4e, 0x39, 0x2a, 0x8b, 0x3a, 0x83, 0x3e, 0x28, 0x15, 0x79, 0x31,
0x9d, 0x6d, 0x23, 0x0a, 0x38, 0xf0, 0x8a, 0x9b, 0x08, 0x11, 0xd2, 0x84, 0xd2, 0x18, 0x14, 0xf0,
0x30, 0x65, 0xc2, 0x63, 0x9a, 0x51, 0xd4, 0x09, 0x99, 0xee, 0xc0, 0x21, 0x5d, 0x25, 0x34, 0x7b,
0x61, 0x80, 0x4c, 0xbb, 0xb6, 0x34, 0x36, 0xd2, 0x3d, 0x78, 0xe4, 0x69, 0x4c, 0xe3, 0x06, 0xad,
0x95, 0xaa, 0x05, 0x8f, 0xe9, 0x1e, 0xd9, 0xaa, 0x06, 0xc1, 0x34, 0x6f, 0xcb, 0x2e, 0xba, 0x90,
0xb5, 0x14, 0xda, 0x40, 0xaa, 0x0e, 0x3c, 0xf1, 0x43, 0x4c, 0xcf, 0xc4, 0x3a, 0x3a, 0x92, 0x01,
0xba, 0x58, 0x72, 0x9b, 0x68, 0x84, 0xaf, 0xca, 0x6a, 0xc5, 0x8e, 0x7d, 0x9d, 0x92, 0x99, 0x59,
0x49, 0xb1, 0x47, 0x85, 0x12, 0x1b, 0x9e, 0x35, 0x8d, 0x56, 0x67, 0xcb, 0x75, 0x3e, 0xf9, 0x94,
0x1e, 0x90, 0xfa, 0x95, 0x7a, 0xa8, 0xe4, 0xfa, 0x4d, 0x45, 0x7d, 0x09, 0xce, 0x5b, 0x31, 0xf0,
0xad, 0xef, 0xa5, 0x38, 0x5a, 0xdc, 0xd0, 0x45, 0x5d, 0xca, 0x1e, 0x9e, 0x79, 0x35, 0x5c, 0x78,
0xdf, 0x39, 0xc0, 0x73, 0x5f, 0xa2, 0xf0, 0xa0, 0x89, 0x88, 0xef, 0x4a, 0x4d, 0x58, 0x9d, 0x18,
0x8b, 0xc2, 0x25, 0x06, 0x35, 0x7c, 0x5f, 0x8e, 0x7a, 0x1c, 0x5d, 0xf6, 0xf7, 0x43, 0x39, 0xea,
0x0b, 0x9d, 0x3b, 0x81, 0x5c, 0x1a, 0x5f, 0xf8, 0xc7, 0xcc, 0x7c, 0x26, 0x50, 0x10, 0x20, 0xeb,
0x22, 0xfc, 0xe4, 0xf3, 0x69, 0x89, 0x5c, 0xe2, 0xde, 0x6e, 0xc3, 0x4a, 0xe9, 0x3f, 0x97, 0x33,
0x37, 0xac, 0x8b, 0xa2, 0x70, 0x65, 0x78, 0xe1, 0x6d, 0xa4, 0xaa, 0xcb, 0x99, 0xe2, 0x18, 0x5c,
0xda, 0xb8, 0x5f, 0x3c, 0x33, 0x79, 0x6e, 0x62, 0xdf, 0x2f, 0xcb, 0x61, 0x77, 0xb0, 0xe7, 0x3f,
0x40, 0xf0, 0xab, 0xb7, 0xf7, 0x22, 0xc2, 0x99, 0x16, 0x2e, 0xf7, 0x8f, 0xdf, 0x4a, 0x8a, 0x4c,
0xc4, 0x25, 0x0b, 0x9c, 0xd7, 0x91, 0x81, 0xdf, 0xe9, 0x16, 0xa9, 0xa5, 0x61, 0x54, 0x26, 0x65,
0x4d, 0xb1, 0x10, 0x9d, 0x40, 0xcb, 0x64, 0x00, 0x8c, 0x3e, 0x20, 0xfb, 0x13, 0x95, 0x3e, 0x6e,
0x5c, 0xd0, 0xf4, 0xf6, 0x7a, 0x2d, 0xcc, 0x79, 0x63, 0x40, 0xe0, 0x5e, 0x2d, 0x63, 0xe2, 0x16,
0xe1, 0x98, 0xa5, 0x08, 0xff, 0x6d, 0xac, 0x92, 0xa9, 0xb9, 0x98, 0x36, 0xd3, 0x15, 0x75, 0x68,
0x00, 0x9b, 0xf3, 0x7f, 0xce, 0x36, 0x9e, 0xbe, 0x28, 0x3e, 0xff, 0x6f, 0xa6, 0xd3, 0xff, 0x9e,
0xff, 0x17, 0x00, 0x00, 0xff, 0xff, 0xcd, 0xaa, 0x54, 0xe4, 0xa5, 0x08, 0x00, 0x00,
}

View File

@ -81,5 +81,6 @@ message ApplicationMetadataMessage {
SYNC_ACTIVITY_CENTER_NOTIFICATION = 66;
SYNC_ACTIVITY_CENTER_NOTIFICATION_STATE = 67;
COMMUNITY_ADMIN_MESSAGE = 68;
COMMUNITY_EDIT_SHARED_ADDRESSES = 69;
}
}

View File

@ -185,6 +185,7 @@ func (m *Grant) GetClock() uint64 {
type CommunityMember struct {
Roles []CommunityMember_Roles `protobuf:"varint,1,rep,packed,name=roles,proto3,enum=protobuf.CommunityMember_Roles" json:"roles,omitempty"`
RevealedAccounts []*RevealedAccount `protobuf:"bytes,2,rep,name=revealed_accounts,json=revealedAccounts,proto3" json:"revealed_accounts,omitempty"`
LastUpdateClock uint64 `protobuf:"varint,3,opt,name=last_update_clock,json=lastUpdateClock,proto3" json:"last_update_clock,omitempty"`
XXX_NoUnkeyedLiteral struct{} `json:"-"`
XXX_unrecognized []byte `json:"-"`
XXX_sizecache int32 `json:"-"`
@ -229,6 +230,13 @@ func (m *CommunityMember) GetRevealedAccounts() []*RevealedAccount {
return nil
}
func (m *CommunityMember) GetLastUpdateClock() uint64 {
if m != nil {
return m.LastUpdateClock
}
return 0
}
type CommunityTokenMetadata struct {
ContractAddresses map[uint64]string `protobuf:"bytes,1,rep,name=contract_addresses,json=contractAddresses,proto3" json:"contract_addresses,omitempty" protobuf_key:"varint,1,opt,name=key,proto3" protobuf_val:"bytes,2,opt,name=value,proto3"`
Description string `protobuf:"bytes,2,opt,name=description,proto3" json:"description,omitempty"`
@ -1059,6 +1067,61 @@ func (m *CommunityRequestToJoin) GetRevealedAccounts() []*RevealedAccount {
return nil
}
type CommunityEditRevealedAccounts struct {
Clock uint64 `protobuf:"varint,1,opt,name=clock,proto3" json:"clock,omitempty"`
CommunityId []byte `protobuf:"bytes,2,opt,name=community_id,json=communityId,proto3" json:"community_id,omitempty"`
RevealedAccounts []*RevealedAccount `protobuf:"bytes,3,rep,name=revealed_accounts,json=revealedAccounts,proto3" json:"revealed_accounts,omitempty"`
XXX_NoUnkeyedLiteral struct{} `json:"-"`
XXX_unrecognized []byte `json:"-"`
XXX_sizecache int32 `json:"-"`
}
func (m *CommunityEditRevealedAccounts) Reset() { *m = CommunityEditRevealedAccounts{} }
func (m *CommunityEditRevealedAccounts) String() string { return proto.CompactTextString(m) }
func (*CommunityEditRevealedAccounts) ProtoMessage() {}
func (*CommunityEditRevealedAccounts) Descriptor() ([]byte, []int) {
return fileDescriptor_f937943d74c1cd8b, []int{13}
}
func (m *CommunityEditRevealedAccounts) XXX_Unmarshal(b []byte) error {
return xxx_messageInfo_CommunityEditRevealedAccounts.Unmarshal(m, b)
}
func (m *CommunityEditRevealedAccounts) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
return xxx_messageInfo_CommunityEditRevealedAccounts.Marshal(b, m, deterministic)
}
func (m *CommunityEditRevealedAccounts) XXX_Merge(src proto.Message) {
xxx_messageInfo_CommunityEditRevealedAccounts.Merge(m, src)
}
func (m *CommunityEditRevealedAccounts) XXX_Size() int {
return xxx_messageInfo_CommunityEditRevealedAccounts.Size(m)
}
func (m *CommunityEditRevealedAccounts) XXX_DiscardUnknown() {
xxx_messageInfo_CommunityEditRevealedAccounts.DiscardUnknown(m)
}
var xxx_messageInfo_CommunityEditRevealedAccounts proto.InternalMessageInfo
func (m *CommunityEditRevealedAccounts) GetClock() uint64 {
if m != nil {
return m.Clock
}
return 0
}
func (m *CommunityEditRevealedAccounts) GetCommunityId() []byte {
if m != nil {
return m.CommunityId
}
return nil
}
func (m *CommunityEditRevealedAccounts) GetRevealedAccounts() []*RevealedAccount {
if m != nil {
return m.RevealedAccounts
}
return nil
}
type CommunityCancelRequestToJoin struct {
Clock uint64 `protobuf:"varint,1,opt,name=clock,proto3" json:"clock,omitempty"`
EnsName string `protobuf:"bytes,2,opt,name=ens_name,json=ensName,proto3" json:"ens_name,omitempty"`
@ -1074,7 +1137,7 @@ func (m *CommunityCancelRequestToJoin) Reset() { *m = CommunityCancelReq
func (m *CommunityCancelRequestToJoin) String() string { return proto.CompactTextString(m) }
func (*CommunityCancelRequestToJoin) ProtoMessage() {}
func (*CommunityCancelRequestToJoin) Descriptor() ([]byte, []int) {
return fileDescriptor_f937943d74c1cd8b, []int{13}
return fileDescriptor_f937943d74c1cd8b, []int{14}
}
func (m *CommunityCancelRequestToJoin) XXX_Unmarshal(b []byte) error {
@ -1146,7 +1209,7 @@ func (m *CommunityRequestToJoinResponse) Reset() { *m = CommunityRequest
func (m *CommunityRequestToJoinResponse) String() string { return proto.CompactTextString(m) }
func (*CommunityRequestToJoinResponse) ProtoMessage() {}
func (*CommunityRequestToJoinResponse) Descriptor() ([]byte, []int) {
return fileDescriptor_f937943d74c1cd8b, []int{14}
return fileDescriptor_f937943d74c1cd8b, []int{15}
}
func (m *CommunityRequestToJoinResponse) XXX_Unmarshal(b []byte) error {
@ -1221,7 +1284,7 @@ func (m *CommunityRequestToLeave) Reset() { *m = CommunityRequestToLeave
func (m *CommunityRequestToLeave) String() string { return proto.CompactTextString(m) }
func (*CommunityRequestToLeave) ProtoMessage() {}
func (*CommunityRequestToLeave) Descriptor() ([]byte, []int) {
return fileDescriptor_f937943d74c1cd8b, []int{15}
return fileDescriptor_f937943d74c1cd8b, []int{16}
}
func (m *CommunityRequestToLeave) XXX_Unmarshal(b []byte) error {
@ -1268,7 +1331,7 @@ func (m *CommunityMessageArchiveMagnetlink) Reset() { *m = CommunityMess
func (m *CommunityMessageArchiveMagnetlink) String() string { return proto.CompactTextString(m) }
func (*CommunityMessageArchiveMagnetlink) ProtoMessage() {}
func (*CommunityMessageArchiveMagnetlink) Descriptor() ([]byte, []int) {
return fileDescriptor_f937943d74c1cd8b, []int{16}
return fileDescriptor_f937943d74c1cd8b, []int{17}
}
func (m *CommunityMessageArchiveMagnetlink) XXX_Unmarshal(b []byte) error {
@ -1320,7 +1383,7 @@ func (m *WakuMessage) Reset() { *m = WakuMessage{} }
func (m *WakuMessage) String() string { return proto.CompactTextString(m) }
func (*WakuMessage) ProtoMessage() {}
func (*WakuMessage) Descriptor() ([]byte, []int) {
return fileDescriptor_f937943d74c1cd8b, []int{17}
return fileDescriptor_f937943d74c1cd8b, []int{18}
}
func (m *WakuMessage) XXX_Unmarshal(b []byte) error {
@ -1404,7 +1467,7 @@ func (m *WakuMessageArchiveMetadata) Reset() { *m = WakuMessageArchiveMe
func (m *WakuMessageArchiveMetadata) String() string { return proto.CompactTextString(m) }
func (*WakuMessageArchiveMetadata) ProtoMessage() {}
func (*WakuMessageArchiveMetadata) Descriptor() ([]byte, []int) {
return fileDescriptor_f937943d74c1cd8b, []int{18}
return fileDescriptor_f937943d74c1cd8b, []int{19}
}
func (m *WakuMessageArchiveMetadata) XXX_Unmarshal(b []byte) error {
@ -1466,7 +1529,7 @@ func (m *WakuMessageArchive) Reset() { *m = WakuMessageArchive{} }
func (m *WakuMessageArchive) String() string { return proto.CompactTextString(m) }
func (*WakuMessageArchive) ProtoMessage() {}
func (*WakuMessageArchive) Descriptor() ([]byte, []int) {
return fileDescriptor_f937943d74c1cd8b, []int{19}
return fileDescriptor_f937943d74c1cd8b, []int{20}
}
func (m *WakuMessageArchive) XXX_Unmarshal(b []byte) error {
@ -1523,7 +1586,7 @@ func (m *WakuMessageArchiveIndexMetadata) Reset() { *m = WakuMessageArch
func (m *WakuMessageArchiveIndexMetadata) String() string { return proto.CompactTextString(m) }
func (*WakuMessageArchiveIndexMetadata) ProtoMessage() {}
func (*WakuMessageArchiveIndexMetadata) Descriptor() ([]byte, []int) {
return fileDescriptor_f937943d74c1cd8b, []int{20}
return fileDescriptor_f937943d74c1cd8b, []int{21}
}
func (m *WakuMessageArchiveIndexMetadata) XXX_Unmarshal(b []byte) error {
@ -1590,7 +1653,7 @@ func (m *WakuMessageArchiveIndex) Reset() { *m = WakuMessageArchiveIndex
func (m *WakuMessageArchiveIndex) String() string { return proto.CompactTextString(m) }
func (*WakuMessageArchiveIndex) ProtoMessage() {}
func (*WakuMessageArchiveIndex) Descriptor() ([]byte, []int) {
return fileDescriptor_f937943d74c1cd8b, []int{21}
return fileDescriptor_f937943d74c1cd8b, []int{22}
}
func (m *WakuMessageArchiveIndex) XXX_Unmarshal(b []byte) error {
@ -1642,6 +1705,7 @@ func init() {
proto.RegisterType((*CommunityInvitation)(nil), "protobuf.CommunityInvitation")
proto.RegisterType((*RevealedAccount)(nil), "protobuf.RevealedAccount")
proto.RegisterType((*CommunityRequestToJoin)(nil), "protobuf.CommunityRequestToJoin")
proto.RegisterType((*CommunityEditRevealedAccounts)(nil), "protobuf.CommunityEditRevealedAccounts")
proto.RegisterType((*CommunityCancelRequestToJoin)(nil), "protobuf.CommunityCancelRequestToJoin")
proto.RegisterType((*CommunityRequestToJoinResponse)(nil), "protobuf.CommunityRequestToJoinResponse")
proto.RegisterType((*CommunityRequestToLeave)(nil), "protobuf.CommunityRequestToLeave")
@ -1659,130 +1723,133 @@ func init() {
}
var fileDescriptor_f937943d74c1cd8b = []byte{
// 1999 bytes of a gzipped FileDescriptorProto
0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xcc, 0x58, 0x4f, 0x73, 0x1b, 0x49,
0x15, 0xdf, 0x91, 0x64, 0x5b, 0x7a, 0x92, 0x1c, 0xb9, 0x93, 0xd8, 0x63, 0x27, 0xd9, 0x28, 0x03,
0x14, 0xde, 0xa2, 0x50, 0x76, 0xbd, 0x50, 0xa4, 0x76, 0x61, 0x77, 0x15, 0x79, 0xc8, 0x8a, 0xc4,
0x23, 0x6f, 0x5b, 0xd9, 0xc0, 0x16, 0x30, 0xd5, 0x9e, 0x69, 0xcb, 0x5d, 0x91, 0x66, 0xc4, 0x74,
0xcb, 0x85, 0x38, 0xec, 0x81, 0xe2, 0x43, 0x70, 0xe7, 0xce, 0x57, 0xe0, 0xc0, 0x9d, 0x3b, 0x37,
0xb8, 0x71, 0xe4, 0xc4, 0x81, 0x13, 0xd5, 0x7f, 0x66, 0x34, 0x23, 0x4b, 0x49, 0xb6, 0x16, 0xaa,
0x38, 0x69, 0xde, 0xeb, 0xd7, 0xef, 0xf5, 0x7b, 0xef, 0xd7, 0xaf, 0xdf, 0x13, 0xec, 0x04, 0xf1,
0x64, 0x32, 0x8b, 0x98, 0x60, 0x94, 0x77, 0xa6, 0x49, 0x2c, 0x62, 0x54, 0x55, 0x3f, 0xe7, 0xb3,
0x8b, 0x83, 0x9b, 0xc1, 0x25, 0x11, 0x3e, 0x0b, 0x69, 0x24, 0x98, 0x98, 0xeb, 0xe5, 0x83, 0x3a,
0x8d, 0x66, 0x13, 0x23, 0xeb, 0x5c, 0xc1, 0xc6, 0x93, 0x84, 0x44, 0x02, 0x3d, 0x80, 0x46, 0xaa,
0x69, 0xee, 0xb3, 0xd0, 0xb6, 0xda, 0xd6, 0x61, 0x03, 0xd7, 0x33, 0x5e, 0x3f, 0x44, 0x77, 0xa0,
0x36, 0xa1, 0x93, 0x73, 0x9a, 0xc8, 0xf5, 0x92, 0x5a, 0xaf, 0x6a, 0x46, 0x3f, 0x44, 0x7b, 0xb0,
0x65, 0x8c, 0xd9, 0xe5, 0xb6, 0x75, 0x58, 0xc3, 0x9b, 0x92, 0xec, 0x87, 0xe8, 0x16, 0x6c, 0x04,
0xe3, 0x38, 0x78, 0x69, 0x57, 0xda, 0xd6, 0x61, 0x05, 0x6b, 0xc2, 0xf9, 0xb7, 0x05, 0x37, 0x7a,
0xa9, 0xee, 0x13, 0xa5, 0x04, 0x7d, 0x1f, 0x36, 0x92, 0x78, 0x4c, 0xb9, 0x6d, 0xb5, 0xcb, 0x87,
0xdb, 0x47, 0xf7, 0x3b, 0xa9, 0x1f, 0x9d, 0x25, 0xc9, 0x0e, 0x96, 0x62, 0x58, 0x4b, 0xa3, 0x1f,
0xc3, 0x4e, 0x42, 0xaf, 0x28, 0x19, 0xd3, 0xd0, 0x27, 0x41, 0x10, 0xcf, 0x22, 0xc1, 0xed, 0x52,
0xbb, 0x7c, 0x58, 0x3f, 0xda, 0x5f, 0xa8, 0xc0, 0x46, 0xa4, 0xab, 0x25, 0x70, 0x2b, 0x29, 0x32,
0xb8, 0x73, 0x09, 0x1b, 0x4a, 0x2f, 0x6a, 0x42, 0x0d, 0x0f, 0x9e, 0xb9, 0xbe, 0x37, 0xf0, 0xdc,
0xd6, 0x5b, 0x68, 0x1b, 0x40, 0x91, 0x83, 0x17, 0x9e, 0x8b, 0x5b, 0x16, 0xba, 0x0d, 0x3b, 0x8a,
0x3e, 0xe9, 0x7a, 0xdd, 0x27, 0xae, 0xff, 0xfc, 0xcc, 0xc5, 0x67, 0xad, 0x12, 0xda, 0x87, 0xdb,
0x9a, 0x3d, 0x38, 0x76, 0x71, 0x77, 0xe8, 0xfa, 0xbd, 0x81, 0x37, 0x74, 0xbd, 0x61, 0xab, 0x9c,
0x69, 0xe8, 0x1e, 0x9f, 0xf4, 0xbd, 0x56, 0xc5, 0xf9, 0x6d, 0x19, 0x76, 0x33, 0x97, 0x86, 0xf1,
0x4b, 0x1a, 0x9d, 0x50, 0x41, 0x42, 0x22, 0x08, 0xba, 0x00, 0x14, 0xc4, 0x91, 0x48, 0x48, 0x20,
0x7c, 0x12, 0x86, 0x09, 0xe5, 0xdc, 0x04, 0xa4, 0x7e, 0xf4, 0x83, 0x15, 0x01, 0x29, 0xec, 0xee,
0xf4, 0xcc, 0xd6, 0x6e, 0xba, 0xd3, 0x8d, 0x44, 0x32, 0xc7, 0x3b, 0xc1, 0x32, 0x1f, 0xb5, 0xa1,
0x1e, 0x52, 0x1e, 0x24, 0x6c, 0x2a, 0x58, 0x1c, 0xa9, 0x6c, 0xd6, 0x70, 0x9e, 0x25, 0xf3, 0xc6,
0x26, 0x64, 0x44, 0x4d, 0x3a, 0x35, 0x81, 0x3e, 0x80, 0x9a, 0x90, 0x26, 0x87, 0xf3, 0x29, 0x55,
0x19, 0xdd, 0x3e, 0xba, 0xbb, 0xee, 0x58, 0x52, 0x06, 0x2f, 0xc4, 0xd1, 0x2e, 0x6c, 0xf2, 0xf9,
0xe4, 0x3c, 0x1e, 0xdb, 0x1b, 0x1a, 0x21, 0x9a, 0x42, 0x08, 0x2a, 0x11, 0x99, 0x50, 0x7b, 0x53,
0x71, 0xd5, 0x37, 0x3a, 0x80, 0x6a, 0x48, 0x03, 0x36, 0x21, 0x63, 0x6e, 0x6f, 0xb5, 0xad, 0xc3,
0x26, 0xce, 0xe8, 0x83, 0x63, 0x19, 0xbd, 0x55, 0x8e, 0xa2, 0x16, 0x94, 0x5f, 0xd2, 0xb9, 0xc2,
0x6e, 0x05, 0xcb, 0x4f, 0xe9, 0xc5, 0x15, 0x19, 0xcf, 0xa8, 0xf1, 0x50, 0x13, 0x1f, 0x94, 0x1e,
0x59, 0xce, 0xdf, 0x2c, 0xb8, 0x95, 0x9d, 0xf7, 0x94, 0x26, 0x13, 0xc6, 0x39, 0x8b, 0x23, 0x8e,
0xf6, 0xa1, 0x4a, 0x23, 0xee, 0xc7, 0xd1, 0x58, 0x6b, 0xaa, 0xe2, 0x2d, 0x1a, 0xf1, 0x41, 0x34,
0x9e, 0x23, 0x1b, 0xb6, 0xa6, 0x09, 0xbb, 0x22, 0x42, 0xeb, 0xab, 0xe2, 0x94, 0x44, 0x3f, 0x82,
0x4d, 0x12, 0x04, 0x94, 0x73, 0x15, 0xae, 0xed, 0xa3, 0x6f, 0xad, 0x08, 0x4a, 0xce, 0x48, 0xa7,
0xab, 0x84, 0xb1, 0xd9, 0xe4, 0x0c, 0x61, 0x53, 0x73, 0x10, 0x82, 0xed, 0xe7, 0xde, 0x53, 0x6f,
0xf0, 0xc2, 0xf3, 0xbb, 0xbd, 0x9e, 0x7b, 0x76, 0xd6, 0x7a, 0x0b, 0xed, 0x40, 0xd3, 0x1b, 0xf8,
0x27, 0xee, 0xc9, 0x63, 0x17, 0x9f, 0x7d, 0xda, 0x3f, 0x6d, 0x59, 0xe8, 0x26, 0xdc, 0xe8, 0x7b,
0x9f, 0xf7, 0x87, 0xdd, 0x61, 0x7f, 0xe0, 0xf9, 0x03, 0xef, 0xd9, 0xcf, 0x5a, 0x25, 0x89, 0xb3,
0x81, 0xe7, 0x63, 0xf7, 0xb3, 0xe7, 0xee, 0xd9, 0xb0, 0x55, 0x76, 0x7e, 0x57, 0x86, 0xa6, 0xca,
0x44, 0x2f, 0x61, 0x82, 0x26, 0x8c, 0xa0, 0x5f, 0xbc, 0x02, 0x5e, 0x9d, 0xc5, 0x91, 0x0b, 0x9b,
0xbe, 0x02, 0xaa, 0xde, 0x85, 0x8a, 0x90, 0xc0, 0x28, 0xbd, 0x01, 0x30, 0x94, 0x64, 0x0e, 0x13,
0xe5, 0x95, 0x98, 0xa8, 0xe4, 0x30, 0xb1, 0x0b, 0x9b, 0x64, 0x22, 0xef, 0x6a, 0x8a, 0x1f, 0x4d,
0xc9, 0xba, 0xa4, 0x40, 0xe6, 0xb3, 0x90, 0xdb, 0x9b, 0xed, 0xf2, 0x61, 0x05, 0x57, 0x15, 0xa3,
0x1f, 0x72, 0x74, 0x1f, 0xea, 0x32, 0x9b, 0x53, 0x22, 0x04, 0x4d, 0x22, 0x85, 0xa5, 0x1a, 0x06,
0x1a, 0xf1, 0x53, 0xcd, 0x29, 0x20, 0xad, 0xaa, 0x80, 0xf3, 0xdf, 0x46, 0xda, 0xdf, 0x4b, 0x60,
0x17, 0x03, 0xb0, 0x40, 0x02, 0xda, 0x86, 0x92, 0xa9, 0xb6, 0x35, 0x5c, 0x62, 0x21, 0xfa, 0xb0,
0x10, 0xc2, 0x6f, 0xaf, 0x0b, 0xe1, 0x42, 0x43, 0x27, 0x17, 0xcd, 0x8f, 0x60, 0x5b, 0x47, 0x22,
0x30, 0xb9, 0xb3, 0xcb, 0x2a, 0xb5, 0x7b, 0x6b, 0x52, 0x8b, 0x9b, 0xa2, 0x00, 0x8f, 0x7d, 0xa8,
0x9a, 0x22, 0xce, 0xed, 0x4a, 0xbb, 0x7c, 0x58, 0xc3, 0x5b, 0xba, 0x8a, 0x73, 0x74, 0x0f, 0x80,
0x71, 0x3f, 0x45, 0xff, 0x86, 0x42, 0x7f, 0x8d, 0xf1, 0x53, 0xcd, 0x70, 0xbe, 0x84, 0x8a, 0xba,
0xe3, 0x77, 0xc1, 0x4e, 0xe1, 0x3b, 0x1c, 0x3c, 0x75, 0x3d, 0xff, 0xd4, 0xc5, 0x27, 0xfd, 0xb3,
0xb3, 0xfe, 0xc0, 0x6b, 0xbd, 0x85, 0x5a, 0xd0, 0x78, 0xec, 0xf6, 0x06, 0x27, 0x69, 0x29, 0xb4,
0x24, 0xb4, 0x0d, 0x47, 0xc3, 0xbb, 0x55, 0x42, 0xb7, 0xa0, 0xd5, 0xeb, 0x7a, 0xfe, 0xe7, 0x7d,
0xf7, 0x85, 0xdf, 0xfb, 0xb4, 0xeb, 0x79, 0xee, 0xb3, 0x56, 0x19, 0xdd, 0x83, 0xfd, 0x8c, 0xdb,
0xf5, 0x8e, 0xfd, 0xd3, 0xc1, 0xd9, 0x30, 0x5b, 0xae, 0x38, 0xff, 0xaa, 0xe5, 0x6e, 0xf3, 0x71,
0xb1, 0x8c, 0xe9, 0xe7, 0xc7, 0xca, 0x3d, 0x3f, 0xc8, 0x85, 0x2d, 0xfd, 0x72, 0xa5, 0x2f, 0xc5,
0x77, 0x56, 0x04, 0x3a, 0xa7, 0xa6, 0xa3, 0x1f, 0x1e, 0x83, 0xfc, 0x74, 0x2f, 0xfa, 0x04, 0xea,
0xd3, 0xc5, 0xa5, 0x56, 0x10, 0xae, 0x1f, 0xbd, 0xfd, 0xea, 0xab, 0x8f, 0xf3, 0x5b, 0xd0, 0x11,
0x54, 0xd3, 0xe7, 0x59, 0x05, 0xb5, 0x7e, 0xb4, 0x9b, 0xdb, 0xae, 0x62, 0xaf, 0x57, 0x71, 0x26,
0x87, 0x3e, 0x86, 0x0d, 0x99, 0x15, 0x8d, 0xf5, 0xfa, 0xd1, 0x3b, 0xaf, 0x39, 0xba, 0xd4, 0x62,
0x0e, 0xae, 0xf7, 0xc9, 0x34, 0x9f, 0x93, 0xc8, 0x1f, 0x33, 0x2e, 0xec, 0x2d, 0x9d, 0xe6, 0x73,
0x12, 0x3d, 0x63, 0x5c, 0x20, 0x0f, 0x20, 0x20, 0x82, 0x8e, 0xe2, 0x84, 0x51, 0x79, 0x1f, 0x96,
0x0a, 0xc3, 0x6a, 0x03, 0xd9, 0x06, 0x6d, 0x25, 0xa7, 0x01, 0x3d, 0x02, 0x9b, 0x24, 0xc1, 0x25,
0xbb, 0xa2, 0xfe, 0x84, 0x8c, 0x22, 0x2a, 0xc6, 0x2c, 0x7a, 0xe9, 0xeb, 0x8c, 0xd4, 0x54, 0x46,
0x76, 0xcd, 0xfa, 0x49, 0xb6, 0xdc, 0x53, 0x29, 0x7a, 0x02, 0xdb, 0x24, 0x9c, 0xb0, 0xc8, 0xe7,
0x54, 0x08, 0x16, 0x8d, 0xb8, 0x0d, 0x2a, 0x3e, 0xed, 0x15, 0xa7, 0xe9, 0x4a, 0xc1, 0x33, 0x23,
0x87, 0x9b, 0x24, 0x4f, 0xa2, 0x6f, 0x40, 0x93, 0x45, 0x22, 0x89, 0xfd, 0x09, 0xe5, 0x5c, 0x3e,
0x68, 0x75, 0x75, 0xd9, 0x1a, 0x8a, 0x79, 0xa2, 0x79, 0x52, 0x28, 0x9e, 0xe5, 0x85, 0x1a, 0x5a,
0x48, 0x31, 0x53, 0xa1, 0xbb, 0x50, 0xa3, 0x51, 0x90, 0xcc, 0xa7, 0x82, 0x86, 0x76, 0x53, 0x5f,
0x81, 0x8c, 0x21, 0x4b, 0x96, 0x20, 0x23, 0x6e, 0x6f, 0xab, 0x88, 0xaa, 0x6f, 0x44, 0x60, 0x47,
0x5f, 0xc8, 0x3c, 0x4c, 0x6e, 0xa8, 0xa8, 0x7e, 0xef, 0x35, 0x51, 0x5d, 0xba, 0xe6, 0x26, 0xb6,
0x2d, 0xb1, 0xc4, 0x46, 0x3f, 0x87, 0xfd, 0x45, 0xe3, 0xa6, 0x56, 0xb9, 0x3f, 0x31, 0x0d, 0x81,
0xdd, 0x52, 0xa6, 0xda, 0xaf, 0x6b, 0x1c, 0xf0, 0x5e, 0x50, 0xe0, 0xf3, 0xac, 0x1f, 0x79, 0x17,
0x6e, 0x91, 0x40, 0xa8, 0xf4, 0x69, 0xcc, 0xfb, 0xaa, 0x5b, 0xb2, 0x77, 0x54, 0xee, 0x90, 0x5e,
0x33, 0x97, 0xa3, 0x27, 0x57, 0x0e, 0x9e, 0x43, 0x23, 0x7f, 0x59, 0xf2, 0x95, 0xb2, 0xa6, 0x2b,
0xe5, 0xc3, 0x7c, 0xa5, 0x2c, 0x34, 0x69, 0x4b, 0x7d, 0x5e, 0xae, 0x88, 0x1e, 0x7c, 0x06, 0xb0,
0x00, 0xf2, 0x0a, 0xa5, 0xdf, 0x2d, 0x2a, 0xdd, 0x5b, 0xa1, 0x54, 0xee, 0xcf, 0xab, 0xfc, 0x02,
0x6e, 0x2c, 0x41, 0x77, 0x85, 0xde, 0xf7, 0x8a, 0x7a, 0xef, 0xac, 0xd2, 0xab, 0x95, 0xcc, 0xf3,
0xba, 0x47, 0x70, 0x7b, 0x65, 0x02, 0x57, 0x58, 0x78, 0x54, 0xb4, 0xe0, 0xbc, 0xbe, 0xe4, 0xe7,
0x1f, 0x97, 0x5f, 0xe6, 0x5a, 0xc9, 0xc2, 0x35, 0x40, 0xc7, 0x70, 0x7f, 0xca, 0xa2, 0x14, 0xd0,
0x3e, 0x19, 0x8f, 0xb3, 0x1c, 0xd2, 0x88, 0x9c, 0x8f, 0x69, 0x68, 0xda, 0x9b, 0x3b, 0x53, 0x16,
0x19, 0x88, 0x77, 0xc7, 0xe3, 0x2c, 0x79, 0x4a, 0xc4, 0xf9, 0x6b, 0x09, 0x9a, 0x85, 0x08, 0xa2,
0x8f, 0x16, 0xb5, 0x53, 0x37, 0x0e, 0xdf, 0x5c, 0x13, 0xeb, 0x37, 0x2b, 0x9a, 0xa5, 0xaf, 0x57,
0x34, 0xcb, 0x6f, 0x58, 0x34, 0xef, 0x43, 0xdd, 0x94, 0x25, 0x35, 0xde, 0xe8, 0xbe, 0x22, 0xad,
0x54, 0x72, 0xba, 0x39, 0x80, 0xea, 0x34, 0xe6, 0x4c, 0xb5, 0xc3, 0xb2, 0x12, 0x6f, 0xe0, 0x8c,
0xfe, 0x1f, 0x61, 0xda, 0x09, 0x61, 0xe7, 0x1a, 0x88, 0x96, 0x0f, 0x6a, 0x5d, 0x3b, 0x68, 0xda,
0x1a, 0x95, 0x8a, 0xed, 0x72, 0x76, 0xf8, 0x72, 0xf1, 0xf0, 0xce, 0xef, 0x2d, 0xb8, 0x99, 0x99,
0xe9, 0x47, 0x57, 0x4c, 0x10, 0xf5, 0x32, 0xbe, 0x0f, 0xb7, 0x17, 0x85, 0x23, 0x3f, 0x0c, 0xe8,
0xd1, 0xef, 0x56, 0xb0, 0xe6, 0x39, 0x1d, 0xc9, 0x79, 0xd1, 0xcc, 0x7f, 0x9a, 0x58, 0x3f, 0xfc,
0xdd, 0x03, 0x98, 0xce, 0xce, 0xc7, 0x2c, 0xf0, 0x65, 0xbc, 0x2a, 0x6a, 0x4f, 0x4d, 0x73, 0x9e,
0xd2, 0xb9, 0x73, 0x01, 0x37, 0x96, 0xe6, 0x32, 0xd9, 0x62, 0x9b, 0xc6, 0xd4, 0xb8, 0x9e, 0x92,
0xb2, 0xfa, 0x72, 0x36, 0x8a, 0x88, 0x98, 0x25, 0xd4, 0x98, 0x5f, 0x30, 0x64, 0x13, 0x18, 0x5c,
0x12, 0xa6, 0x9b, 0xc0, 0xb2, 0x6e, 0x02, 0x15, 0xa3, 0x1f, 0x72, 0xe7, 0x9f, 0x56, 0xee, 0x96,
0x60, 0xfa, 0xab, 0x19, 0xe5, 0x62, 0x18, 0xff, 0x24, 0x66, 0xeb, 0xfa, 0x03, 0x33, 0x03, 0xe4,
0xe2, 0x2c, 0x67, 0x00, 0x4f, 0x86, 0x7a, 0xad, 0xaf, 0xcb, 0x13, 0x74, 0xe5, 0xfa, 0x04, 0xfd,
0x00, 0x1a, 0x21, 0xe3, 0xd3, 0x31, 0x99, 0x6b, 0xd5, 0x1b, 0x66, 0xec, 0xd2, 0x3c, 0xa5, 0x7e,
0xe5, 0x34, 0xbb, 0xf9, 0xd5, 0xa7, 0xd9, 0x3f, 0x5a, 0x70, 0x37, 0x07, 0xae, 0x28, 0xa0, 0xe3,
0xff, 0x6b, 0xc7, 0x9d, 0x7f, 0x58, 0xf0, 0xf6, 0xea, 0x1c, 0x61, 0xca, 0xa7, 0x71, 0xc4, 0xe9,
0x9a, 0x23, 0xff, 0x10, 0x6a, 0x99, 0xa9, 0x57, 0x54, 0x93, 0x1c, 0x8a, 0xf1, 0x62, 0x83, 0xbc,
0x39, 0x72, 0x06, 0x53, 0x4f, 0x7a, 0x59, 0x95, 0xc3, 0x8c, 0x5e, 0x80, 0xbd, 0x92, 0x07, 0xfb,
0xb2, 0xbb, 0x1b, 0xd7, 0xdd, 0xbd, 0x07, 0xa0, 0xbb, 0x1d, 0x7f, 0x96, 0x30, 0x33, 0xd7, 0xd6,
0x34, 0xe7, 0x79, 0xc2, 0x1c, 0x0c, 0x7b, 0xd7, 0x3d, 0x7d, 0x46, 0xc9, 0xd5, 0x3a, 0x17, 0x97,
0x4d, 0x96, 0xae, 0x99, 0x74, 0x7e, 0x0a, 0x0f, 0x72, 0x95, 0x46, 0x17, 0xf3, 0xe5, 0xc6, 0x6a,
0x8d, 0xf6, 0xe2, 0x69, 0x4b, 0xcb, 0xa7, 0xfd, 0x93, 0x05, 0xf5, 0x17, 0xe4, 0xe5, 0x2c, 0xed,
0x82, 0x5a, 0x50, 0xe6, 0x6c, 0x64, 0xaa, 0x84, 0xfc, 0x94, 0x37, 0x53, 0xb0, 0x09, 0xe5, 0x82,
0x4c, 0xa6, 0x6a, 0x7f, 0x05, 0x2f, 0x18, 0xd2, 0xa8, 0x88, 0xa7, 0x2c, 0x50, 0xe1, 0x6d, 0x60,
0x4d, 0xa8, 0x51, 0x9a, 0xcc, 0xc7, 0x31, 0x49, 0xf1, 0x92, 0x92, 0x7a, 0x25, 0x0c, 0x59, 0x34,
0x32, 0xa1, 0x4d, 0x49, 0x59, 0xf9, 0x2e, 0x09, 0xbf, 0x54, 0x01, 0x6d, 0x60, 0xf5, 0x8d, 0x1c,
0x68, 0x88, 0x4b, 0x96, 0x84, 0xa7, 0x24, 0x91, 0x71, 0x30, 0x03, 0x5e, 0x81, 0xe7, 0x7c, 0x09,
0x07, 0x39, 0x07, 0xd2, 0xb0, 0xa4, 0x2d, 0x8e, 0x0d, 0x5b, 0x57, 0x34, 0xe1, 0x69, 0xe5, 0x6b,
0xe2, 0x94, 0x94, 0xf6, 0x2e, 0x92, 0x78, 0x62, 0x5c, 0x52, 0xdf, 0x72, 0x5e, 0x13, 0xb1, 0x72,
0xa5, 0x82, 0x4b, 0x22, 0x96, 0xf6, 0xe5, 0x1c, 0x4c, 0x23, 0x31, 0x54, 0x4e, 0xca, 0xb1, 0xa9,
0x81, 0x0b, 0x3c, 0xe7, 0x0f, 0x16, 0xa0, 0xeb, 0x07, 0x78, 0x85, 0xe1, 0x4f, 0xa0, 0x9a, 0xb5,
0x70, 0x1a, 0xd1, 0xb9, 0x37, 0x76, 0xbd, 0x2b, 0x38, 0xdb, 0x85, 0xde, 0x93, 0x1a, 0x94, 0x0c,
0x37, 0x33, 0xe0, 0xed, 0x95, 0x1a, 0x70, 0x26, 0xe6, 0xfc, 0xd9, 0x82, 0xfb, 0xd7, 0x75, 0xf7,
0xa3, 0x90, 0xfe, 0xfa, 0x0d, 0x62, 0xf5, 0xf5, 0x8f, 0xbc, 0x0b, 0x9b, 0xf1, 0xc5, 0x05, 0xa7,
0xc2, 0x44, 0xd7, 0x50, 0x32, 0x0b, 0x9c, 0xfd, 0x86, 0x9a, 0xff, 0x0f, 0xd5, 0xf7, 0x32, 0x46,
0x2a, 0x19, 0x46, 0x9c, 0xbf, 0x58, 0xb0, 0xb7, 0xc6, 0x0b, 0xf4, 0x14, 0xaa, 0x66, 0xd8, 0x48,
0x5b, 0x97, 0x87, 0xaf, 0x3a, 0xa3, 0xda, 0xd4, 0x31, 0x84, 0xe9, 0x62, 0x32, 0x05, 0x07, 0x17,
0xd0, 0x2c, 0x2c, 0xad, 0x68, 0x0a, 0x3e, 0x2e, 0x36, 0x05, 0xef, 0xbc, 0xd6, 0x58, 0x16, 0x95,
0x45, 0x93, 0xf0, 0xb8, 0xf9, 0x45, 0xbd, 0xf3, 0xf0, 0xc3, 0x74, 0xe7, 0xf9, 0xa6, 0xfa, 0x7a,
0xff, 0x3f, 0x01, 0x00, 0x00, 0xff, 0xff, 0xca, 0xc3, 0x8d, 0xb3, 0xf8, 0x15, 0x00, 0x00,
// 2046 bytes of a gzipped FileDescriptorProto
0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xcc, 0x58, 0xcd, 0x73, 0x1b, 0x49,
0x15, 0xcf, 0x48, 0xb2, 0x2d, 0x3d, 0x59, 0xb6, 0xdc, 0x49, 0xec, 0xb1, 0x93, 0x6c, 0x94, 0x01,
0x0a, 0x2f, 0x14, 0xca, 0xae, 0x17, 0x8a, 0xd4, 0x2e, 0xec, 0xae, 0x22, 0x0f, 0x59, 0x91, 0x78,
0xe4, 0x6d, 0xcb, 0x1b, 0xd8, 0x02, 0xa6, 0xda, 0x33, 0x6d, 0xbb, 0x2b, 0xd2, 0x8c, 0x98, 0x6e,
0xb9, 0x10, 0x87, 0x3d, 0x50, 0xfc, 0x11, 0x1c, 0xa9, 0xa2, 0x8a, 0x23, 0xff, 0x02, 0x07, 0xee,
0xdc, 0xb9, 0xc1, 0x8d, 0x23, 0x27, 0xce, 0x54, 0x7f, 0xcc, 0x68, 0x46, 0x96, 0xf2, 0xc1, 0x42,
0xd5, 0x9e, 0x34, 0xef, 0xf5, 0xeb, 0xd7, 0xef, 0xe3, 0xd7, 0xaf, 0xdf, 0x13, 0x6c, 0x05, 0xf1,
0x68, 0x34, 0x89, 0x98, 0x60, 0x94, 0xb7, 0xc7, 0x49, 0x2c, 0x62, 0x54, 0x55, 0x3f, 0x67, 0x93,
0xf3, 0xbd, 0x9b, 0xc1, 0x25, 0x11, 0x3e, 0x0b, 0x69, 0x24, 0x98, 0x98, 0xea, 0xe5, 0xbd, 0x3a,
0x8d, 0x26, 0x23, 0x23, 0xeb, 0x5c, 0xc1, 0xca, 0x93, 0x84, 0x44, 0x02, 0x3d, 0x80, 0xf5, 0x54,
0xd3, 0xd4, 0x67, 0xa1, 0x6d, 0xb5, 0xac, 0xfd, 0x75, 0x5c, 0xcf, 0x78, 0xbd, 0x10, 0xdd, 0x81,
0xda, 0x88, 0x8e, 0xce, 0x68, 0x22, 0xd7, 0x4b, 0x6a, 0xbd, 0xaa, 0x19, 0xbd, 0x10, 0xed, 0xc0,
0x9a, 0x39, 0xcc, 0x2e, 0xb7, 0xac, 0xfd, 0x1a, 0x5e, 0x95, 0x64, 0x2f, 0x44, 0xb7, 0x60, 0x25,
0x18, 0xc6, 0xc1, 0x0b, 0xbb, 0xd2, 0xb2, 0xf6, 0x2b, 0x58, 0x13, 0xce, 0x1f, 0x4b, 0xb0, 0xd9,
0x4d, 0x75, 0x1f, 0x29, 0x25, 0xe8, 0x7b, 0xb0, 0x92, 0xc4, 0x43, 0xca, 0x6d, 0xab, 0x55, 0xde,
0xdf, 0x38, 0xb8, 0xdf, 0x4e, 0xfd, 0x68, 0xcf, 0x49, 0xb6, 0xb1, 0x14, 0xc3, 0x5a, 0x1a, 0xfd,
0x08, 0xb6, 0x12, 0x7a, 0x45, 0xc9, 0x90, 0x86, 0x3e, 0x09, 0x82, 0x78, 0x12, 0x09, 0x6e, 0x97,
0x5a, 0xe5, 0xfd, 0xfa, 0xc1, 0xee, 0x4c, 0x05, 0x36, 0x22, 0x1d, 0x2d, 0x81, 0x9b, 0x49, 0x91,
0xc1, 0xd1, 0xb7, 0x60, 0x6b, 0x48, 0xb8, 0xf0, 0x27, 0xe3, 0x90, 0x08, 0xea, 0x6b, 0xa3, 0xcb,
0xca, 0xe8, 0x4d, 0xb9, 0x70, 0xaa, 0xf8, 0x5d, 0x65, 0xfe, 0x25, 0xac, 0x28, 0x1b, 0x50, 0x03,
0x6a, 0xb8, 0xff, 0xcc, 0xf5, 0xbd, 0xbe, 0xe7, 0x36, 0x6f, 0xa0, 0x0d, 0x00, 0x45, 0xf6, 0x9f,
0x7b, 0x2e, 0x6e, 0x5a, 0xe8, 0x36, 0x6c, 0x29, 0xfa, 0xa8, 0xe3, 0x75, 0x9e, 0xb8, 0xfe, 0xe9,
0x89, 0x8b, 0x4f, 0x9a, 0x25, 0xb4, 0x0b, 0xb7, 0x35, 0xbb, 0x7f, 0xe8, 0xe2, 0xce, 0xc0, 0xf5,
0xbb, 0x7d, 0x6f, 0xe0, 0x7a, 0x83, 0x66, 0x39, 0xd3, 0xd0, 0x39, 0x3c, 0xea, 0x79, 0xcd, 0x8a,
0xf3, 0x9b, 0x32, 0x6c, 0x67, 0xee, 0x0f, 0xe2, 0x17, 0x34, 0x3a, 0xa2, 0x82, 0x84, 0x44, 0x10,
0x74, 0x0e, 0x28, 0x88, 0x23, 0x91, 0x90, 0x40, 0xf8, 0x24, 0x0c, 0x13, 0xca, 0xb9, 0x09, 0x5e,
0xfd, 0xe0, 0xfb, 0x0b, 0x82, 0x57, 0xd8, 0xdd, 0xee, 0x9a, 0xad, 0x9d, 0x74, 0xa7, 0x1b, 0x89,
0x64, 0x8a, 0xb7, 0x82, 0x79, 0x3e, 0x6a, 0x41, 0x3d, 0xa4, 0x3c, 0x48, 0xd8, 0x58, 0xb0, 0x38,
0x52, 0x99, 0xaf, 0xe1, 0x3c, 0x4b, 0xe6, 0x98, 0x8d, 0xc8, 0x05, 0x35, 0xa9, 0xd7, 0x04, 0x7a,
0x1f, 0x6a, 0x42, 0x1e, 0x39, 0x98, 0x8e, 0xa9, 0xca, 0xfe, 0xc6, 0xc1, 0xdd, 0x65, 0x66, 0x49,
0x19, 0x3c, 0x13, 0x47, 0xdb, 0xb0, 0xca, 0xa7, 0xa3, 0xb3, 0x78, 0x68, 0xaf, 0x68, 0x34, 0x69,
0x0a, 0x21, 0xa8, 0x44, 0x64, 0x44, 0xed, 0x55, 0xc5, 0x55, 0xdf, 0x68, 0x0f, 0xaa, 0x21, 0x0d,
0xd8, 0x88, 0x0c, 0xb9, 0xbd, 0xd6, 0xb2, 0xf6, 0x1b, 0x38, 0xa3, 0xf7, 0x0e, 0x65, 0xf4, 0x16,
0x39, 0x8a, 0x9a, 0x50, 0x7e, 0x41, 0xa7, 0x0a, 0xe7, 0x15, 0x2c, 0x3f, 0xa5, 0x17, 0x57, 0x64,
0x38, 0xa1, 0xc6, 0x43, 0x4d, 0xbc, 0x5f, 0x7a, 0x64, 0x39, 0x7f, 0xb7, 0xe0, 0x56, 0x66, 0xef,
0x31, 0x4d, 0x46, 0x8c, 0x73, 0x16, 0x47, 0x1c, 0xed, 0x42, 0x95, 0x46, 0xdc, 0x8f, 0xa3, 0xa1,
0xd6, 0x54, 0xc5, 0x6b, 0x34, 0xe2, 0xfd, 0x68, 0x38, 0x45, 0x36, 0xac, 0x8d, 0x13, 0x76, 0x45,
0x84, 0xd6, 0x57, 0xc5, 0x29, 0x89, 0x7e, 0x08, 0xab, 0x24, 0x08, 0x28, 0xe7, 0x2a, 0x5c, 0x1b,
0x07, 0xdf, 0x58, 0x10, 0x94, 0xdc, 0x21, 0xed, 0x8e, 0x12, 0xc6, 0x66, 0x93, 0x33, 0x80, 0x55,
0xcd, 0x41, 0x08, 0x36, 0x4e, 0xbd, 0xa7, 0x5e, 0xff, 0xb9, 0xe7, 0x77, 0xba, 0x5d, 0xf7, 0xe4,
0xa4, 0x79, 0x03, 0x6d, 0x41, 0xc3, 0xeb, 0xfb, 0x47, 0xee, 0xd1, 0x63, 0x17, 0x9f, 0x7c, 0xd2,
0x3b, 0x6e, 0x5a, 0xe8, 0x26, 0x6c, 0xf6, 0xbc, 0xcf, 0x7a, 0x83, 0xce, 0xa0, 0xd7, 0xf7, 0xfc,
0xbe, 0xf7, 0xec, 0xa7, 0xcd, 0x92, 0xc4, 0x59, 0xdf, 0xf3, 0xb1, 0xfb, 0xe9, 0xa9, 0x7b, 0x32,
0x68, 0x96, 0x9d, 0xdf, 0x96, 0xa1, 0xa1, 0x32, 0xd1, 0x4d, 0x98, 0xa0, 0x09, 0x23, 0xe8, 0xe7,
0x2f, 0x81, 0x57, 0x7b, 0x66, 0x72, 0x61, 0xd3, 0x1b, 0xa0, 0xea, 0x1d, 0xa8, 0x08, 0x09, 0x8c,
0xd2, 0x6b, 0x00, 0x43, 0x49, 0xe6, 0x30, 0x51, 0x5e, 0x88, 0x89, 0x4a, 0x0e, 0x13, 0xdb, 0xb0,
0x4a, 0x46, 0xf2, 0x5e, 0xa7, 0xf8, 0xd1, 0x94, 0xac, 0x61, 0x0a, 0x64, 0x3e, 0x0b, 0xb9, 0xbd,
0xda, 0x2a, 0xef, 0x57, 0x70, 0x55, 0x31, 0x7a, 0x21, 0x47, 0xf7, 0xa1, 0x2e, 0xb3, 0x39, 0x26,
0x42, 0xd0, 0x24, 0x52, 0x58, 0xaa, 0x61, 0xa0, 0x11, 0x3f, 0xd6, 0x9c, 0x02, 0xd2, 0xaa, 0x0a,
0x38, 0xff, 0x6b, 0xa4, 0xfd, 0xa3, 0x04, 0x76, 0x31, 0x00, 0x33, 0x24, 0xa0, 0x0d, 0x28, 0x99,
0xca, 0x5c, 0xc3, 0x25, 0x16, 0xa2, 0x0f, 0x0a, 0x21, 0xfc, 0xe6, 0xb2, 0x10, 0xce, 0x34, 0xb4,
0x73, 0xd1, 0xfc, 0x10, 0x36, 0x74, 0x24, 0x02, 0x93, 0x3b, 0xbb, 0xac, 0x52, 0xbb, 0xb3, 0x24,
0xb5, 0xb8, 0x21, 0x0a, 0xf0, 0xd8, 0x85, 0xaa, 0x29, 0xf8, 0xdc, 0xae, 0xb4, 0xca, 0xfb, 0x35,
0xbc, 0xa6, 0x2b, 0x3e, 0x47, 0xf7, 0x00, 0x18, 0xf7, 0x53, 0xf4, 0xaf, 0x28, 0xf4, 0xd7, 0x18,
0x3f, 0xd6, 0x0c, 0xe7, 0x0b, 0xa8, 0xa8, 0x3b, 0x7e, 0x17, 0xec, 0x14, 0xbe, 0x83, 0xfe, 0x53,
0xd7, 0xf3, 0x8f, 0x5d, 0x7c, 0xd4, 0x3b, 0x39, 0xe9, 0xf5, 0xbd, 0xe6, 0x0d, 0xd4, 0x84, 0xf5,
0xc7, 0x6e, 0xb7, 0x7f, 0x94, 0x96, 0x42, 0x4b, 0x42, 0xdb, 0x70, 0x34, 0xbc, 0x9b, 0x25, 0x74,
0x0b, 0x9a, 0xdd, 0x8e, 0xe7, 0x7f, 0xd6, 0x73, 0x9f, 0xfb, 0xdd, 0x4f, 0x3a, 0x9e, 0xe7, 0x3e,
0x6b, 0x96, 0xd1, 0x3d, 0xd8, 0xcd, 0xb8, 0x1d, 0xef, 0xd0, 0x3f, 0xee, 0x9f, 0x0c, 0xb2, 0xe5,
0x8a, 0xf3, 0xef, 0x5a, 0xee, 0x36, 0x1f, 0x16, 0xcb, 0x98, 0xae, 0xfa, 0x56, 0xee, 0xa9, 0x42,
0x2e, 0xac, 0xe9, 0x57, 0x2e, 0x7d, 0x55, 0xbe, 0xbd, 0x20, 0xd0, 0x39, 0x35, 0x6d, 0xfd, 0x48,
0x19, 0xe4, 0xa7, 0x7b, 0xd1, 0xc7, 0x50, 0x1f, 0xcf, 0x2e, 0xb5, 0x82, 0x70, 0xfd, 0xe0, 0xad,
0x97, 0x5f, 0x7d, 0x9c, 0xdf, 0x82, 0x0e, 0xa0, 0x9a, 0x3e, 0xe5, 0x2a, 0xa8, 0xf5, 0x83, 0xed,
0xdc, 0x76, 0x15, 0x7b, 0xbd, 0x8a, 0x33, 0x39, 0xf4, 0x11, 0xac, 0xc8, 0xac, 0x68, 0xac, 0xd7,
0x0f, 0xde, 0x7e, 0x85, 0xe9, 0x52, 0x8b, 0x31, 0x5c, 0xef, 0x93, 0x69, 0x3e, 0x23, 0x91, 0x3f,
0x64, 0x5c, 0xd8, 0x6b, 0x3a, 0xcd, 0x67, 0x24, 0x7a, 0xc6, 0xb8, 0x40, 0x1e, 0x40, 0x40, 0x04,
0xbd, 0x88, 0x13, 0x46, 0xe5, 0x7d, 0x98, 0x2b, 0x0c, 0x8b, 0x0f, 0xc8, 0x36, 0xe8, 0x53, 0x72,
0x1a, 0xd0, 0x23, 0xb0, 0x49, 0x12, 0x5c, 0xb2, 0x2b, 0xea, 0x8f, 0xc8, 0x45, 0x44, 0xc5, 0x90,
0x45, 0x2f, 0xcc, 0x3b, 0x5c, 0x53, 0x19, 0xd9, 0x36, 0xeb, 0x47, 0xd9, 0xb2, 0x7a, 0x8e, 0xd1,
0x13, 0xd8, 0x20, 0xe1, 0x88, 0x45, 0x3e, 0xa7, 0x42, 0xb0, 0xe8, 0x82, 0xdb, 0xa0, 0xe2, 0xd3,
0x5a, 0x60, 0x4d, 0x47, 0x0a, 0x9e, 0x18, 0x39, 0xdc, 0x20, 0x79, 0x12, 0x7d, 0x0d, 0x1a, 0x2c,
0x12, 0x49, 0xec, 0x8f, 0x28, 0xe7, 0xf2, 0x41, 0xab, 0xab, 0xcb, 0xb6, 0xae, 0x98, 0x47, 0x9a,
0x27, 0x85, 0xe2, 0x49, 0x5e, 0x68, 0x5d, 0x0b, 0x29, 0x66, 0x2a, 0x74, 0x17, 0x6a, 0x34, 0x0a,
0x92, 0xe9, 0x58, 0xd0, 0xd0, 0x6e, 0xe8, 0x2b, 0x90, 0x31, 0x64, 0xc9, 0x12, 0xe4, 0x82, 0xdb,
0x1b, 0x2a, 0xa2, 0xea, 0x1b, 0x11, 0xd8, 0xd2, 0x17, 0x32, 0x0f, 0x93, 0x4d, 0x15, 0xd5, 0xef,
0xbe, 0x22, 0xaa, 0x73, 0xd7, 0xdc, 0xc4, 0xb6, 0x29, 0xe6, 0xd8, 0xe8, 0x67, 0xb0, 0x3b, 0x6b,
0xf2, 0xd4, 0x2a, 0xf7, 0x47, 0xa6, 0x21, 0xb0, 0x9b, 0xea, 0xa8, 0xd6, 0xab, 0x1a, 0x07, 0xbc,
0x13, 0x14, 0xf8, 0x3c, 0xeb, 0x47, 0xde, 0x81, 0x5b, 0x24, 0x10, 0x2a, 0x7d, 0x1a, 0xf3, 0xbe,
0xea, 0xac, 0xec, 0x2d, 0x95, 0x3b, 0xa4, 0xd7, 0xcc, 0xe5, 0xe8, 0xca, 0x95, 0xbd, 0x53, 0x58,
0xcf, 0x5f, 0x96, 0x7c, 0xa5, 0xac, 0xe9, 0x4a, 0xf9, 0x30, 0x5f, 0x29, 0x0b, 0x0d, 0xdd, 0x5c,
0x4f, 0x98, 0x2b, 0xa2, 0x7b, 0x9f, 0x02, 0xcc, 0x80, 0xbc, 0x40, 0xe9, 0x77, 0x8a, 0x4a, 0x77,
0x16, 0x28, 0x95, 0xfb, 0xf3, 0x2a, 0x3f, 0x87, 0xcd, 0x39, 0xe8, 0x2e, 0xd0, 0xfb, 0x6e, 0x51,
0xef, 0x9d, 0x45, 0x7a, 0xb5, 0x92, 0x69, 0x5e, 0xf7, 0x05, 0xdc, 0x5e, 0x98, 0xc0, 0x05, 0x27,
0x3c, 0x2a, 0x9e, 0xe0, 0xbc, 0xba, 0xe4, 0xe7, 0x1f, 0x97, 0x5f, 0xe4, 0x5a, 0xc9, 0xc2, 0x35,
0x40, 0x87, 0x70, 0x7f, 0xcc, 0xa2, 0x14, 0xd0, 0x3e, 0x19, 0x0e, 0xb3, 0x1c, 0xd2, 0x88, 0x9c,
0x0d, 0x69, 0x68, 0xda, 0x9b, 0x3b, 0x63, 0x16, 0x19, 0x88, 0x77, 0x86, 0xc3, 0x2c, 0x79, 0x4a,
0xc4, 0xf9, 0x5b, 0x09, 0x1a, 0x85, 0x08, 0xa2, 0x0f, 0x67, 0xb5, 0x53, 0x37, 0x0e, 0x5f, 0x5f,
0x12, 0xeb, 0xd7, 0x2b, 0x9a, 0xa5, 0x2f, 0x57, 0x34, 0xcb, 0xaf, 0x59, 0x34, 0xef, 0x43, 0xdd,
0x94, 0x25, 0x35, 0x0a, 0xe9, 0xbe, 0x22, 0xad, 0x54, 0x72, 0x12, 0xda, 0x83, 0xea, 0x38, 0xe6,
0x4c, 0xb5, 0xc3, 0xb2, 0x12, 0xaf, 0xe0, 0x8c, 0xfe, 0x3f, 0x61, 0xda, 0x09, 0x61, 0xeb, 0x1a,
0x88, 0xe6, 0x0d, 0xb5, 0xae, 0x19, 0x9a, 0xb6, 0x46, 0xa5, 0x62, 0xbb, 0x9c, 0x19, 0x5f, 0x2e,
0x1a, 0xef, 0xfc, 0xce, 0x82, 0x9b, 0xd9, 0x31, 0xbd, 0xe8, 0x8a, 0x09, 0xa2, 0x5e, 0xc6, 0xf7,
0xe0, 0xf6, 0xac, 0x70, 0xe4, 0x87, 0x01, 0x3d, 0x26, 0xde, 0x0a, 0x96, 0x3c, 0xa7, 0x17, 0x72,
0xb6, 0x34, 0xb3, 0xa2, 0x26, 0x96, 0x0f, 0x8a, 0xf7, 0x00, 0xc6, 0x93, 0xb3, 0x21, 0x0b, 0x7c,
0x19, 0xaf, 0x8a, 0xda, 0x53, 0xd3, 0x9c, 0xa7, 0x74, 0xea, 0x9c, 0xc3, 0xe6, 0xdc, 0x0c, 0x27,
0x5b, 0x6c, 0xd3, 0x98, 0x1a, 0xd7, 0x53, 0x52, 0x56, 0x5f, 0xce, 0x2e, 0x22, 0x22, 0x26, 0x09,
0x35, 0xc7, 0xcf, 0x18, 0xb2, 0x09, 0x0c, 0x2e, 0x09, 0xd3, 0x4d, 0x60, 0x59, 0x37, 0x81, 0x8a,
0xd1, 0x0b, 0xb9, 0xf3, 0x2f, 0x2b, 0x77, 0x4b, 0x30, 0xfd, 0xe5, 0x84, 0x72, 0x31, 0x88, 0x7f,
0x1c, 0xb3, 0x65, 0xfd, 0x81, 0x99, 0x01, 0x72, 0x71, 0x96, 0x33, 0x80, 0x27, 0x43, 0xbd, 0xd4,
0xd7, 0xf9, 0x69, 0xbb, 0x72, 0x7d, 0xda, 0x7e, 0x00, 0xeb, 0x21, 0xe3, 0xe3, 0x21, 0x99, 0x6a,
0xd5, 0x2b, 0x66, 0xec, 0xd2, 0x3c, 0xa5, 0x7e, 0xe1, 0xe4, 0xbb, 0xfa, 0xc6, 0x93, 0xaf, 0xf3,
0x7b, 0x0b, 0xee, 0x65, 0x2e, 0xbb, 0x21, 0x13, 0x78, 0x7e, 0x36, 0x5e, 0xec, 0xf9, 0xbc, 0x17,
0xa5, 0xeb, 0x5e, 0x2c, 0x34, 0xb1, 0xfc, 0xe6, 0x26, 0xfe, 0xc9, 0x82, 0xbb, 0x39, 0xfc, 0x47,
0x01, 0x1d, 0x7e, 0xa5, 0x73, 0xe3, 0xfc, 0xd3, 0x82, 0xb7, 0x16, 0xc3, 0x08, 0x53, 0x3e, 0x8e,
0x23, 0x4e, 0x97, 0x98, 0xfc, 0x03, 0xa8, 0x65, 0x47, 0xbd, 0xa4, 0xe0, 0xe5, 0x2e, 0x1a, 0x9e,
0x6d, 0x90, 0x97, 0x5b, 0x8e, 0x89, 0xaa, 0xeb, 0x28, 0xab, 0x8a, 0x9d, 0xd1, 0xb3, 0xfb, 0x58,
0xc9, 0xdf, 0xc7, 0x79, 0x77, 0x57, 0xae, 0xbb, 0x7b, 0x0f, 0x40, 0x37, 0x64, 0xfe, 0x24, 0x61,
0x66, 0xf4, 0xae, 0x69, 0xce, 0x69, 0xc2, 0x1c, 0x0c, 0x3b, 0xd7, 0x3d, 0x7d, 0x46, 0xc9, 0x15,
0xfd, 0xaf, 0x71, 0xe3, 0xfc, 0x04, 0x1e, 0xe4, 0x8a, 0xa1, 0x7e, 0x6f, 0xe6, 0x7b, 0xbf, 0x25,
0xda, 0x8b, 0xd6, 0x96, 0xe6, 0xad, 0xfd, 0xb3, 0x05, 0xf5, 0xe7, 0xe4, 0xc5, 0x24, 0x6d, 0xd4,
0x9a, 0x50, 0xe6, 0xec, 0xc2, 0x14, 0x32, 0xf9, 0x29, 0x8b, 0x87, 0x60, 0x23, 0xca, 0x05, 0x19,
0x8d, 0xd5, 0xfe, 0x0a, 0x9e, 0x31, 0xe4, 0xa1, 0x22, 0x1e, 0xb3, 0x40, 0x85, 0x77, 0x1d, 0x6b,
0x42, 0x4d, 0xfb, 0x64, 0x3a, 0x8c, 0x49, 0x8a, 0x97, 0x94, 0xd4, 0x2b, 0x61, 0xc8, 0xa2, 0x0b,
0x13, 0xda, 0x94, 0x94, 0xc5, 0xf9, 0x92, 0xf0, 0x4b, 0x15, 0xd0, 0x75, 0xac, 0xbe, 0x91, 0x03,
0xeb, 0xe2, 0x92, 0x25, 0xe1, 0x31, 0x49, 0x64, 0x1c, 0xcc, 0x0c, 0x5a, 0xe0, 0x39, 0x5f, 0xc0,
0x5e, 0xce, 0x81, 0x34, 0x2c, 0x69, 0x17, 0x66, 0xc3, 0xda, 0x15, 0x4d, 0x78, 0x5a, 0x9c, 0x1b,
0x38, 0x25, 0xe5, 0x79, 0xe7, 0x49, 0x3c, 0x32, 0x2e, 0xa9, 0x6f, 0x39, 0x52, 0x8a, 0xd8, 0xfc,
0xcb, 0x55, 0x12, 0xb1, 0x3c, 0x5f, 0x8e, 0xea, 0x34, 0x12, 0x03, 0xe5, 0xa4, 0x9c, 0xec, 0xd6,
0x71, 0x81, 0xe7, 0xfc, 0xc1, 0x02, 0x74, 0xdd, 0x80, 0x97, 0x1c, 0xfc, 0x31, 0x54, 0xb3, 0x2e,
0x53, 0x23, 0x3a, 0xd7, 0x06, 0x2c, 0x77, 0x05, 0x67, 0xbb, 0xd0, 0xbb, 0x52, 0x83, 0x92, 0x49,
0xab, 0xc7, 0xed, 0x85, 0x1a, 0x70, 0x26, 0xe6, 0xfc, 0xc5, 0x82, 0xfb, 0xd7, 0x75, 0xf7, 0xa2,
0x90, 0xfe, 0xea, 0x35, 0x62, 0xf5, 0xe5, 0x4d, 0xde, 0x86, 0xd5, 0xf8, 0xfc, 0x9c, 0x53, 0x61,
0xa2, 0x6b, 0x28, 0x99, 0x05, 0xce, 0x7e, 0x4d, 0xcd, 0xdf, 0xa1, 0xea, 0x7b, 0x1e, 0x23, 0x95,
0x0c, 0x23, 0xce, 0x5f, 0x2d, 0xd8, 0x59, 0xe2, 0x05, 0x7a, 0x0a, 0x55, 0x33, 0x0f, 0xa5, 0xdd,
0xd5, 0xc3, 0x97, 0xd9, 0xa8, 0x36, 0xb5, 0x0d, 0x61, 0x1a, 0xad, 0x4c, 0xc1, 0xde, 0x39, 0x34,
0x0a, 0x4b, 0x0b, 0xfa, 0x96, 0x8f, 0x8a, 0x7d, 0xcb, 0xdb, 0xaf, 0x3c, 0x2c, 0x8b, 0xca, 0xac,
0x8f, 0x79, 0xdc, 0xf8, 0xbc, 0xde, 0x7e, 0xf8, 0x41, 0xba, 0xf3, 0x6c, 0x55, 0x7d, 0xbd, 0xf7,
0x9f, 0x00, 0x00, 0x00, 0xff, 0xff, 0xfc, 0x4a, 0xe4, 0x94, 0xc7, 0x16, 0x00, 0x00,
}

View File

@ -23,6 +23,7 @@ message CommunityMember {
}
repeated Roles roles = 1;
repeated RevealedAccount revealed_accounts = 2;
uint64 last_update_clock = 3;
}
message CommunityTokenMetadata {
@ -136,6 +137,12 @@ message CommunityRequestToJoin {
repeated RevealedAccount revealed_accounts = 6;
}
message CommunityEditRevealedAccounts {
uint64 clock = 1;
bytes community_id = 2;
repeated RevealedAccount revealed_accounts = 3;
}
message CommunityCancelRequestToJoin {
uint64 clock = 1;
string ens_name = 2;

View File

@ -0,0 +1,31 @@
package requests
import (
"errors"
"github.com/status-im/status-go/eth-node/types"
)
var ErrInvalidCommunityID = errors.New("invalid community id")
var ErrMissingPassword = errors.New("password is necessary when sending a list of addresses")
var ErrMissingSharedAddresses = errors.New("list of shared addresses is needed")
type EditSharedAddresses struct {
CommunityID types.HexBytes `json:"communityId"`
Password string `json:"password"`
AddressesToReveal []string `json:"addressesToReveal"`
}
func (j *EditSharedAddresses) Validate() error {
if len(j.CommunityID) == 0 {
return ErrInvalidCommunityID
}
if j.Password == "" {
return ErrMissingPassword
}
if len(j.AddressesToReveal) == 0 {
return ErrMissingSharedAddresses
}
return nil
}

View File

@ -251,6 +251,8 @@ func (m *StatusMessage) HandleApplication() error {
return m.unmarshalProtobufData(new(protobuf.CommunityInvitation))
case protobuf.ApplicationMetadataMessage_COMMUNITY_REQUEST_TO_JOIN:
return m.unmarshalProtobufData(new(protobuf.CommunityRequestToJoin))
case protobuf.ApplicationMetadataMessage_COMMUNITY_EDIT_SHARED_ADDRESSES:
return m.unmarshalProtobufData(new(protobuf.CommunityEditRevealedAccounts))
case protobuf.ApplicationMetadataMessage_COMMUNITY_REQUEST_TO_JOIN_RESPONSE:
return m.unmarshalProtobufData(new(protobuf.CommunityRequestToJoinResponse))
case protobuf.ApplicationMetadataMessage_COMMUNITY_CANCEL_REQUEST_TO_JOIN:

View File

@ -566,6 +566,11 @@ func (api *PublicAPI) RequestToJoinCommunity(request *requests.RequestToJoinComm
return api.service.messenger.RequestToJoinCommunity(request)
}
// EditSharedAddressesForCommunity edits the addresses that are shared with the owner of the community
func (api *PublicAPI) EditSharedAddressesForCommunity(request *requests.EditSharedAddresses) (*protocol.MessengerResponse, error) {
return api.service.messenger.EditSharedAddressesForCommunity(request)
}
// CheckAndClearPendingRequestToJoinCommunity to delete pending request to join a community which are older than 7 days
func (api *PublicAPI) CheckAndDeletePendingRequestToJoinCommunity() (*protocol.MessengerResponse, error) {
return api.service.messenger.CheckAndDeletePendingRequestToJoinCommunity(true)