feat: delete for me (#2866)

This commit is contained in:
yqrashawn 2022-09-28 19:42:17 +08:00 committed by GitHub
parent 81e279a055
commit f47cb8572d
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
18 changed files with 763 additions and 205 deletions

View File

@ -43,6 +43,7 @@ exclude_patterns:
- "t/"
- "mailserver/migrations"
- "**/*/bindata.go"
- "protocol/protobuf/*.pb.go"
- "protocol/communities/migrations/migrations.go"
- "protocol/encryption/migrations/migrations.go"
- "protocol/internal/sqlite/migrations.go"

View File

@ -1 +1 @@
0.111.0
0.111.1

View File

@ -169,6 +169,8 @@ type Message struct {
// Deleted indicates if a message was deleted
Deleted bool `json:"deleted"`
DeletedForMe bool `json:"deletedForMe"`
// ContactRequestState is the state of the contact request message
ContactRequestState ContactRequestState `json:"contactRequestState,omitempty"`
@ -217,6 +219,7 @@ func (m *Message) MarshalJSON() ([]byte, error) {
Links []string `json:"links,omitempty"`
EditedAt uint64 `json:"editedAt,omitempty"`
Deleted bool `json:"deleted,omitempty"`
DeletedForMe bool `json:"deletedForMe,omitempty"`
ContactRequestState ContactRequestState `json:"contactRequestState,omitempty"`
DiscordMessage *protobuf.DiscordMessage `json:"discordMessage,omitempty"`
}{
@ -253,6 +256,7 @@ func (m *Message) MarshalJSON() ([]byte, error) {
GapParameters: m.GapParameters,
EditedAt: m.EditedAt,
Deleted: m.Deleted,
DeletedForMe: m.DeletedForMe,
ContactRequestState: m.ContactRequestState,
}
if sticker := m.GetSticker(); sticker != nil {

View File

@ -0,0 +1,44 @@
package protocol
import (
"crypto/ecdsa"
"github.com/golang/protobuf/proto"
"github.com/status-im/status-go/protocol/protobuf"
)
// DeleteForMeMessage represents a delete of a message from a user in the
// application layer, used for persistence, querying and signaling
type DeleteForMeMessage struct {
protobuf.DeleteForMeMessage
// ID is the ID of the message that has been edited
ID string `json:"id,omitempty"`
// From is a public key of the author of the edit reaction.
From string `json:"from,omitempty"`
// SigPubKey is the ecdsa encoded public key of the edit author
SigPubKey *ecdsa.PublicKey `json:"-"`
// LocalChatID is the chatID of the local chat (one-to-one are not symmetric)
LocalChatID string `json:"localChatId"`
}
// GetSigPubKey returns an ecdsa encoded public key
// this function is required to implement the ChatEntity interface
func (e DeleteForMeMessage) GetSigPubKey() *ecdsa.PublicKey {
return e.SigPubKey
}
// GetProtoBuf returns the struct's embedded protobuf struct
// this function is required to implement the ChatEntity interface
func (e DeleteForMeMessage) GetProtobuf() proto.Message {
return &e.DeleteForMeMessage
}
// WrapGroupMessage indicates whether we should wrap this in membership information
func (e DeleteForMeMessage) WrapGroupMessage() bool {
return false
}

View File

@ -78,6 +78,7 @@ func (db sqlitePersistence) tableUserMessagesAllFields() string {
replace_message,
edited_at,
deleted,
deleted_for_me,
rtl,
line_count,
response_to,
@ -122,6 +123,7 @@ func (db sqlitePersistence) tableUserMessagesAllFieldsJoin() string {
m1.replace_message,
m1.edited_at,
m1.deleted,
m1.deleted_for_me,
m1.rtl,
m1.line_count,
m1.response_to,
@ -177,6 +179,7 @@ func (db sqlitePersistence) tableUserMessagesScanAllFields(row scanner, message
var gapTo sql.NullInt64
var editedAt sql.NullInt64
var deleted sql.NullBool
var deletedForMe sql.NullBool
var contactRequestState sql.NullInt64
sticker := &protobuf.StickerMessage{}
@ -222,6 +225,7 @@ func (db sqlitePersistence) tableUserMessagesScanAllFields(row scanner, message
&message.Replace,
&editedAt,
&deleted,
&deletedForMe,
&message.RTL,
&message.LineCount,
&message.ResponseTo,
@ -264,6 +268,10 @@ func (db sqlitePersistence) tableUserMessagesScanAllFields(row scanner, message
message.Deleted = deleted.Bool
}
if deletedForMe.Valid {
message.DeletedForMe = deletedForMe.Bool
}
if contactRequestState.Valid {
message.ContactRequestState = common.ContactRequestState(contactRequestState.Int64)
}
@ -422,6 +430,7 @@ func (db sqlitePersistence) tableUserMessagesAllValues(message *common.Message)
message.Replace,
int64(message.EditedAt),
message.Deleted,
message.DeletedForMe,
message.RTL,
message.LineCount,
message.ResponseTo,
@ -2125,6 +2134,31 @@ func (db sqlitePersistence) GetDeletes(messageID string, from string) ([]*Delete
return messages, nil
}
func (db sqlitePersistence) SaveDeleteForMe(deleteForMeMessage DeleteForMeMessage) error {
_, err := db.db.Exec(`INSERT INTO user_messages_deleted_for_mes (clock, message_id, source, id) VALUES(?,?,?,?)`, deleteForMeMessage.Clock, deleteForMeMessage.MessageId, deleteForMeMessage.From, deleteForMeMessage.ID)
return err
}
func (db sqlitePersistence) GetDeleteForMes(messageID string, from string) ([]*DeleteForMeMessage, error) {
rows, err := db.db.Query(`SELECT clock, message_id, source, id FROM user_messages_deleted_for_mes WHERE message_id = ? AND source = ? ORDER BY CLOCK DESC`, messageID, from)
if err != nil {
return nil, err
}
var messages []*DeleteForMeMessage
for rows.Next() {
d := &DeleteForMeMessage{}
err := rows.Scan(&d.Clock, &d.MessageId, &d.From, &d.ID)
if err != nil {
return nil, err
}
messages = append(messages, d)
}
return messages, nil
}
func (db sqlitePersistence) SaveEdit(editMessage EditMessage) error {
_, err := db.db.Exec(`INSERT INTO user_messages_edits (clock, chat_id, message_id, text, source, id) VALUES(?,?,?,?,?,?)`, editMessage.Clock, editMessage.ChatId, editMessage.MessageId, editMessage.Text, editMessage.From, editMessage.ID)
return err

View File

@ -90,6 +90,14 @@ func ValidateDeleteMessage(message protobuf.DeleteMessage) error {
return nil
}
func ValidateDeleteForMeMessage(message protobuf.DeleteForMeMessage) error {
if len(message.MessageId) == 0 {
return errors.New("message-id can't be empty")
}
return nil
}
func ValidateReceivedPairInstallation(message *protobuf.PairInstallation, whisperTimestamp uint64) error {
if err := validateClockValue(message.Clock, whisperTimestamp); err != nil {
return err

View File

@ -3165,6 +3165,29 @@ func (m *Messenger) handleRetrievedMessages(chatWithMessages map[transport.Filte
continue
}
case protobuf.DeleteForMeMessage:
logger.Debug("Handling DeleteForMeMessage")
deleteForMeProto := msg.ParsedMessage.Interface().(protobuf.DeleteForMeMessage)
if !common.IsPubKeyEqual(messageState.CurrentMessageState.PublicKey, &m.identity.PublicKey) {
logger.Warn("not coming from us, ignoring")
continue
}
m.outputToCSV(msg.TransportMessage.Timestamp, msg.ID, senderID, filter.Topic, filter.ChatID, msg.Type, deleteForMeProto)
deleteForMeMessage := DeleteForMeMessage{
DeleteForMeMessage: deleteForMeProto,
From: contact.ID,
ID: messageID,
SigPubKey: publicKey,
}
err = m.HandleDeleteForMeMessage(messageState, deleteForMeMessage)
if err != nil {
logger.Warn("failed to handle DeleteForMeMessage", zap.Error(err))
allMessagesProcessed = false
continue
}
case protobuf.PinMessage:
pinMessage := msg.ParsedMessage.Interface().(protobuf.PinMessage)
m.outputToCSV(msg.TransportMessage.Timestamp, msg.ID, senderID, filter.Topic, filter.ChatID, msg.Type, pinMessage)

View File

@ -0,0 +1,195 @@
package protocol
import (
"context"
"crypto/ecdsa"
"errors"
"testing"
"github.com/stretchr/testify/suite"
"go.uber.org/zap"
gethbridge "github.com/status-im/status-go/eth-node/bridge/geth"
"github.com/status-im/status-go/eth-node/crypto"
"github.com/status-im/status-go/eth-node/types"
"github.com/status-im/status-go/protocol/common"
"github.com/status-im/status-go/protocol/encryption/multidevice"
"github.com/status-im/status-go/protocol/tt"
"github.com/status-im/status-go/waku"
)
func TestMessengerDeleteMessageForMeSuite(t *testing.T) {
suite.Run(t, new(MessengerDeleteMessageForMeSuite))
}
type MessengerDeleteMessageForMeSuite struct {
suite.Suite
privateKey *ecdsa.PrivateKey // private key for the main instance of Messenger
alice1 *Messenger
alice2 *Messenger
// If one wants to send messages between different instances of Messenger,
// a single waku service should be shared.
shh types.Waku
logger *zap.Logger
}
func (s *MessengerDeleteMessageForMeSuite) newMessenger() *Messenger {
if s.privateKey == nil {
privateKey, err := crypto.GenerateKey()
s.Require().NoError(err)
s.privateKey = privateKey
}
messenger, err := newMessengerWithKey(s.shh, s.privateKey, s.logger, nil)
s.Require().NoError(err)
return messenger
}
func (s *MessengerDeleteMessageForMeSuite) otherNewMessenger() *Messenger {
privateKey, err := crypto.GenerateKey()
s.Require().NoError(err)
messenger, err := newMessengerWithKey(s.shh, privateKey, s.logger, nil)
s.Require().NoError(err)
return messenger
}
func (s *MessengerDeleteMessageForMeSuite) SetupTest() {
s.logger = tt.MustCreateTestLogger()
config := waku.DefaultConfig
config.MinimumAcceptedPoW = 0
shh := waku.New(&config, s.logger)
s.shh = gethbridge.NewGethWakuWrapper(shh)
s.Require().NoError(shh.Start())
s.alice1 = s.newMessenger()
s.alice2 = s.newMessenger()
_, err := s.alice1.Start()
s.Require().NoError(err)
_, err = s.alice2.Start()
s.Require().NoError(err)
}
func (s *MessengerDeleteMessageForMeSuite) TearDownTest() {
s.Require().NoError(s.alice1.Shutdown())
s.Require().NoError(s.alice2.Shutdown())
_ = s.logger.Sync()
}
func (s *MessengerDeleteMessageForMeSuite) Pair() {
err := s.alice2.SetInstallationMetadata(s.alice2.installationID, &multidevice.InstallationMetadata{
Name: "alice2",
DeviceType: "alice2",
})
s.Require().NoError(err)
response, err := s.alice2.SendPairInstallation(context.Background())
s.Require().NoError(err)
s.Require().NotNil(response)
s.Require().Len(response.Chats(), 1)
s.Require().False(response.Chats()[0].Active)
// Wait for the message to reach its destination
response, err = WaitOnMessengerResponse(
s.alice1,
func(r *MessengerResponse) bool { return len(r.Installations) > 0 },
"installation not received",
)
s.Require().NoError(err)
actualInstallation := response.Installations[0]
s.Require().Equal(s.alice2.installationID, actualInstallation.ID)
s.Require().NotNil(actualInstallation.InstallationMetadata)
s.Require().Equal("alice2", actualInstallation.InstallationMetadata.Name)
s.Require().Equal("alice2", actualInstallation.InstallationMetadata.DeviceType)
err = s.alice1.EnableInstallation(s.alice2.installationID)
s.Require().NoError(err)
}
func (s *MessengerDeleteMessageForMeSuite) TestDeleteMessageForMe() {
s.Pair()
chatID := "foobarsynctest"
_, err := s.alice1.createPublicChat(chatID, &MessengerResponse{})
s.Require().NoError(err)
_, err = s.alice2.createPublicChat(chatID, &MessengerResponse{})
s.Require().NoError(err)
otherMessenger := s.otherNewMessenger()
_, err = otherMessenger.createPublicChat(chatID, &MessengerResponse{})
s.Require().NoError(err)
chat := otherMessenger.Chat(chatID)
message := buildTestMessage(*chat)
response, err := otherMessenger.SendChatMessage(context.Background(), message)
messageID := response.Messages()[0].ID
s.Require().NoError(err)
var receivedPubChatMessage *common.Message
err = tt.RetryWithBackOff(func() error {
var err error
_, err = s.alice1.RetrieveAll()
if err != nil {
return err
}
response, err := s.alice2.RetrieveAll()
if err != nil {
return err
}
messages := response.Messages()
if len(messages) > 0 {
receivedPubChatMessage = messages[0]
return nil
}
return errors.New("Not received all messages")
})
s.Require().NoError(err)
s.Require().Equal(receivedPubChatMessage.ChatId, chatID)
s.Require().Equal(receivedPubChatMessage.ID, messageID)
s.Require().False(receivedPubChatMessage.DeletedForMe)
// message synced to alice1
alice1Msg, err := s.alice1.MessageByID(messageID)
s.Require().NoError(err)
s.Require().False(alice1Msg.DeletedForMe)
response, err = s.alice1.DeleteMessageForMeAndSync(context.Background(), chatID, messageID)
s.Require().NoError(err)
s.Require().True(response.Messages()[0].DeletedForMe)
err = tt.RetryWithBackOff(func() error {
var err error
response, err := s.alice2.RetrieveAll()
if err != nil {
return err
}
_, err = otherMessenger.RetrieveAll()
if err != nil {
return err
}
if len(response.messages) > 0 {
receivedPubChatMessage = response.Messages()[0]
return nil
}
return errors.New("Not received all messages")
})
s.Require().NoError(err)
deletedForMeMessage, err := s.alice2.MessageByID(messageID)
s.Require().NoError(err)
s.Require().True(deletedForMeMessage.DeletedForMe)
// no DeletedForMe in others' message
otherMessage, err := otherMessenger.MessageByID(messageID)
s.Require().NoError(err)
s.Require().False(otherMessage.DeletedForMe)
}

View File

@ -1180,6 +1180,55 @@ func (m *Messenger) HandleDeleteMessage(state *ReceivedMessageState, deleteMessa
return nil
}
func (m *Messenger) HandleDeleteForMeMessage(state *ReceivedMessageState, deleteForMeMessage DeleteForMeMessage) error {
if err := ValidateDeleteForMeMessage(deleteForMeMessage.DeleteForMeMessage); err != nil {
return err
}
messageID := deleteForMeMessage.MessageId
// Check if it's already in the response
originalMessage := state.Response.GetMessage(messageID)
// otherwise pull from database
if originalMessage == nil {
var err error
originalMessage, err = m.persistence.MessageByID(messageID)
if err == common.ErrRecordNotFound {
return m.persistence.SaveDeleteForMe(deleteForMeMessage)
}
if err != nil {
return err
}
}
chat, ok := m.allChats.Load(originalMessage.LocalChatID)
if !ok {
return errors.New("chat not found")
}
// Update message and return it
originalMessage.DeletedForMe = true
err := m.persistence.SaveMessages([]*common.Message{originalMessage})
if err != nil {
return err
}
m.logger.Debug("deleting activity center notification for message", zap.String("chatID", chat.ID), zap.String("messageID", deleteForMeMessage.MessageId))
err = m.persistence.DeleteActivityCenterNotificationForMessage(chat.ID, deleteForMeMessage.MessageId)
if err != nil {
m.logger.Warn("failed to delete notifications for deleted message", zap.Error(err))
return err
}
state.Response.AddMessage(originalMessage)
state.Response.AddChat(chat)
return nil
}
func (m *Messenger) updateLastMessage(chat *Chat) error {
// Get last message that is not hidden
messages, _, err := m.persistence.MessageByChatID(chat.ID, "", 1)
@ -1313,6 +1362,11 @@ func (m *Messenger) HandleChatMessage(state *ReceivedMessageState) error {
return err
}
err = m.checkForDeleteForMes(receivedMessage)
if err != nil {
return err
}
if receivedMessage.Deleted && (chat.LastMessage == nil || chat.LastMessage.ID == receivedMessage.ID) {
// Get last message that is not hidden
messages, _, err := m.persistence.MessageByChatID(receivedMessage.LocalChatID, "", 1)
@ -2002,6 +2056,21 @@ func (m *Messenger) checkForDeletes(message *common.Message) error {
return m.applyDeleteMessage(messageDeletes, message)
}
func (m *Messenger) checkForDeleteForMes(message *common.Message) error {
// Check for any pending delete for mes
// If any pending deletes are available and valid, apply them
messageDeleteForMes, err := m.persistence.GetDeleteForMes(message.ID, message.From)
if err != nil {
return err
}
if len(messageDeleteForMes) == 0 {
return nil
}
return m.applyDeleteForMeMessage(messageDeleteForMes, message)
}
func (m *Messenger) isMessageAllowedFrom(publicKey string, chat *Chat) (bool, error) {
onlyFromContacts, err := m.settings.GetMessagesFromContactsOnly()
if err != nil {

View File

@ -4,6 +4,8 @@ import (
"context"
"errors"
"github.com/golang/protobuf/proto"
"github.com/status-im/status-go/protocol/common"
"github.com/status-im/status-go/protocol/protobuf"
"github.com/status-im/status-go/protocol/requests"
@ -159,6 +161,67 @@ func (m *Messenger) DeleteMessageAndSend(ctx context.Context, messageID string)
return response, nil
}
func (m *Messenger) DeleteMessageForMeAndSync(ctx context.Context, chatID string, messageID string) (*MessengerResponse, error) {
message, err := m.persistence.MessageByID(messageID)
if err != nil {
return nil, err
}
// A valid added chat is required.
chat, ok := m.allChats.Load(chatID)
if !ok {
return nil, errors.New("Chat not found")
}
// Only certain types of messages can be deleted
if message.ContentType != protobuf.ChatMessage_TEXT_PLAIN &&
message.ContentType != protobuf.ChatMessage_STICKER &&
message.ContentType != protobuf.ChatMessage_EMOJI &&
message.ContentType != protobuf.ChatMessage_IMAGE &&
message.ContentType != protobuf.ChatMessage_AUDIO {
return nil, ErrInvalidDeleteTypeAuthor
}
message.DeletedForMe = true
err = m.persistence.SaveMessages([]*common.Message{message})
if err != nil {
return nil, err
}
response := &MessengerResponse{}
response.AddMessage(message)
response.AddChat(chat)
if m.hasPairedDevices() {
clock, _ := chat.NextClockAndTimestamp(m.getTimesource())
deletedForMeMessage := &DeleteForMeMessage{}
deletedForMeMessage.MessageId = messageID
deletedForMeMessage.Clock = clock
encodedMessage, err := proto.Marshal(deletedForMeMessage.GetProtobuf())
if err != nil {
return response, err
}
rawMessage := common.RawMessage{
LocalChatID: chat.ID,
Payload: encodedMessage,
MessageType: protobuf.ApplicationMetadataMessage_SYNC_DELETE_FOR_ME_MESSAGE,
SkipGroupMessageWrap: true,
ResendAutomatically: true,
}
_, err = m.dispatchMessage(ctx, rawMessage)
if err != nil {
return response, err
}
}
return response, nil
}
func (m *Messenger) applyEditMessage(editMessage *protobuf.EditMessage, message *common.Message) error {
if err := ValidateText(editMessage.Text); err != nil {
return err
@ -207,3 +270,19 @@ func (m *Messenger) applyDeleteMessage(messageDeletes []*DeleteMessage, message
return m.persistence.HideMessage(message.ID)
}
func (m *Messenger) applyDeleteForMeMessage(messageDeletes []*DeleteForMeMessage, message *common.Message) error {
message.DeletedForMe = true
err := message.PrepareContent(common.PubkeyToHex(&m.identity.PublicKey))
if err != nil {
return err
}
err = m.persistence.SaveMessages([]*common.Message{message})
if err != nil {
return err
}
return nil
}

View File

@ -61,6 +61,7 @@
// 1662044232_add_chat_image.up.sql (49B)
// 1662106895_add_chat_first_message_timestamp.up.sql (113B)
// 1662723928_add_discord_author_image_fields.up.sql (75B)
// 1664195977_add_deleted_for_mes.up.sql (352B)
// README.md (554B)
// doc.go (850B)
@ -146,7 +147,7 @@ func _000001_initDownDbSql() (*asset, error) {
return nil, err
}
info := bindataFileInfo{name: "000001_init.down.db.sql", size: 65, mode: os.FileMode(0664), modTime: time.Unix(1662647306, 0)}
info := bindataFileInfo{name: "000001_init.down.db.sql", size: 65, mode: os.FileMode(0644), modTime: time.Unix(1658906042, 0)}
a := &asset{bytes: bytes, info: info, digest: [32]uint8{0x5e, 0xbb, 0x3f, 0x1, 0x75, 0x19, 0x70, 0x86, 0xa7, 0x34, 0x40, 0x17, 0x34, 0x3e, 0x18, 0x51, 0x79, 0xd4, 0x22, 0xad, 0x8f, 0x80, 0xcc, 0xa6, 0xcc, 0x6, 0x2b, 0x62, 0x2, 0x47, 0xba, 0xf9}}
return a, nil
}
@ -166,7 +167,7 @@ func _000001_initUpDbSql() (*asset, error) {
return nil, err
}
info := bindataFileInfo{name: "000001_init.up.db.sql", size: 2719, mode: os.FileMode(0664), modTime: time.Unix(1662647306, 0)}
info := bindataFileInfo{name: "000001_init.up.db.sql", size: 2719, mode: os.FileMode(0644), modTime: time.Unix(1658906042, 0)}
a := &asset{bytes: bytes, info: info, digest: [32]uint8{0x60, 0xdc, 0xeb, 0xe, 0xc2, 0x4f, 0x75, 0xa, 0xf6, 0x3e, 0xc7, 0xc4, 0x4, 0xe2, 0xe1, 0xa4, 0x73, 0x2f, 0x4a, 0xad, 0x1a, 0x0, 0xc3, 0x93, 0x9d, 0x77, 0x3e, 0x31, 0x91, 0x77, 0x2e, 0xc8}}
return a, nil
}
@ -186,7 +187,7 @@ func _000002_add_last_ens_clock_valueUpSql() (*asset, error) {
return nil, err
}
info := bindataFileInfo{name: "000002_add_last_ens_clock_value.up.sql", size: 77, mode: os.FileMode(0664), modTime: time.Unix(1662647306, 0)}
info := bindataFileInfo{name: "000002_add_last_ens_clock_value.up.sql", size: 77, mode: os.FileMode(0644), modTime: time.Unix(1658906042, 0)}
a := &asset{bytes: bytes, info: info, digest: [32]uint8{0x4d, 0x3, 0x8f, 0xd5, 0x85, 0x83, 0x47, 0xbe, 0xf9, 0x82, 0x7e, 0x81, 0xa4, 0xbd, 0xaa, 0xd5, 0x98, 0x18, 0x5, 0x2d, 0x82, 0x42, 0x3b, 0x3, 0x50, 0xc3, 0x1e, 0x84, 0x35, 0xf, 0xb6, 0x2b}}
return a, nil
}
@ -206,7 +207,7 @@ func _1586358095_add_replaceUpSql() (*asset, error) {
return nil, err
}
info := bindataFileInfo{name: "1586358095_add_replace.up.sql", size: 224, mode: os.FileMode(0664), modTime: time.Unix(1662647306, 0)}
info := bindataFileInfo{name: "1586358095_add_replace.up.sql", size: 224, mode: os.FileMode(0644), modTime: time.Unix(1658906042, 0)}
a := &asset{bytes: bytes, info: info, digest: [32]uint8{0xd2, 0xb3, 0xa9, 0xc7, 0x7f, 0x9d, 0x8f, 0x43, 0x8c, 0x9e, 0x58, 0x8d, 0x44, 0xbc, 0xfa, 0x6b, 0x5f, 0x3f, 0x5a, 0xbe, 0xe8, 0xb1, 0x16, 0xf, 0x91, 0x2a, 0xa0, 0x71, 0xbb, 0x8d, 0x6b, 0xcb}}
return a, nil
}
@ -226,7 +227,7 @@ func _1588665364_add_image_dataUpSql() (*asset, error) {
return nil, err
}
info := bindataFileInfo{name: "1588665364_add_image_data.up.sql", size: 186, mode: os.FileMode(0664), modTime: time.Unix(1662647306, 0)}
info := bindataFileInfo{name: "1588665364_add_image_data.up.sql", size: 186, mode: os.FileMode(0644), modTime: time.Unix(1658906042, 0)}
a := &asset{bytes: bytes, info: info, digest: [32]uint8{0xd6, 0xc6, 0x35, 0xb4, 0x4c, 0x39, 0x96, 0x29, 0x30, 0xda, 0xf4, 0x8f, 0xcb, 0xf1, 0x9f, 0x84, 0xdc, 0x88, 0xd4, 0xd5, 0xbc, 0xb6, 0x5b, 0x46, 0x78, 0x67, 0x76, 0x1a, 0x5, 0x36, 0xdc, 0xe5}}
return a, nil
}
@ -246,7 +247,7 @@ func _1589365189_add_pow_targetUpSql() (*asset, error) {
return nil, err
}
info := bindataFileInfo{name: "1589365189_add_pow_target.up.sql", size: 66, mode: os.FileMode(0664), modTime: time.Unix(1662647306, 0)}
info := bindataFileInfo{name: "1589365189_add_pow_target.up.sql", size: 66, mode: os.FileMode(0644), modTime: time.Unix(1658906042, 0)}
a := &asset{bytes: bytes, info: info, digest: [32]uint8{0x4e, 0x3a, 0xe2, 0x2e, 0x7d, 0xaf, 0xbb, 0xcc, 0x21, 0xa1, 0x7a, 0x41, 0x9a, 0xd0, 0xbb, 0xa9, 0xc8, 0x35, 0xf9, 0x32, 0x34, 0x46, 0x44, 0x9a, 0x86, 0x40, 0x7c, 0xb9, 0x23, 0xc7, 0x3, 0x3f}}
return a, nil
}
@ -266,7 +267,7 @@ func _1591277220_add_index_messagesUpSql() (*asset, error) {
return nil, err
}
info := bindataFileInfo{name: "1591277220_add_index_messages.up.sql", size: 240, mode: os.FileMode(0664), modTime: time.Unix(1662647306, 0)}
info := bindataFileInfo{name: "1591277220_add_index_messages.up.sql", size: 240, mode: os.FileMode(0644), modTime: time.Unix(1658906042, 0)}
a := &asset{bytes: bytes, info: info, digest: [32]uint8{0x9c, 0xfe, 0xbe, 0xd5, 0xb8, 0x8f, 0xdd, 0xef, 0xbb, 0xa8, 0xad, 0x7f, 0xed, 0x5b, 0x5b, 0x2f, 0xe6, 0x82, 0x27, 0x78, 0x1f, 0xb9, 0x57, 0xdc, 0x8, 0xc2, 0xb2, 0xa9, 0x9a, 0x4, 0xe1, 0x7a}}
return a, nil
}
@ -286,7 +287,7 @@ func _1593087212_add_mute_chat_and_raw_message_fieldsUpSql() (*asset, error) {
return nil, err
}
info := bindataFileInfo{name: "1593087212_add_mute_chat_and_raw_message_fields.up.sql", size: 215, mode: os.FileMode(0664), modTime: time.Unix(1662647306, 0)}
info := bindataFileInfo{name: "1593087212_add_mute_chat_and_raw_message_fields.up.sql", size: 215, mode: os.FileMode(0644), modTime: time.Unix(1658906042, 0)}
a := &asset{bytes: bytes, info: info, digest: [32]uint8{0x73, 0x99, 0x61, 0xd1, 0xaa, 0xb4, 0xbf, 0xaf, 0xd7, 0x20, 0x17, 0x40, 0xf9, 0x2, 0xfb, 0xcc, 0x40, 0x2a, 0xd, 0x86, 0x36, 0x30, 0x88, 0x89, 0x25, 0x80, 0x42, 0xb0, 0x5b, 0xe9, 0x73, 0x78}}
return a, nil
}
@ -306,7 +307,7 @@ func _1595862781_add_audio_dataUpSql() (*asset, error) {
return nil, err
}
info := bindataFileInfo{name: "1595862781_add_audio_data.up.sql", size: 246, mode: os.FileMode(0664), modTime: time.Unix(1662647306, 0)}
info := bindataFileInfo{name: "1595862781_add_audio_data.up.sql", size: 246, mode: os.FileMode(0644), modTime: time.Unix(1658906042, 0)}
a := &asset{bytes: bytes, info: info, digest: [32]uint8{0xae, 0xd2, 0xee, 0x55, 0xfb, 0x36, 0xa4, 0x92, 0x66, 0xe, 0x81, 0x62, 0x1e, 0x7a, 0x69, 0xa, 0xd5, 0x4b, 0xa5, 0x6a, 0x8d, 0x1d, 0xce, 0xf3, 0x3e, 0xc0, 0x5f, 0x9c, 0x66, 0x1b, 0xb4, 0xed}}
return a, nil
}
@ -326,7 +327,7 @@ func _1595865249_create_emoji_reactions_tableUpSql() (*asset, error) {
return nil, err
}
info := bindataFileInfo{name: "1595865249_create_emoji_reactions_table.up.sql", size: 300, mode: os.FileMode(0664), modTime: time.Unix(1662647306, 0)}
info := bindataFileInfo{name: "1595865249_create_emoji_reactions_table.up.sql", size: 300, mode: os.FileMode(0644), modTime: time.Unix(1658906042, 0)}
a := &asset{bytes: bytes, info: info, digest: [32]uint8{0x3e, 0xc5, 0x43, 0x5c, 0x3d, 0x53, 0x43, 0x2c, 0x1a, 0xa5, 0xb6, 0xbf, 0x7, 0x4, 0x5a, 0x3e, 0x40, 0x8b, 0xa4, 0x57, 0x12, 0x58, 0xbc, 0x42, 0xe2, 0xc3, 0xde, 0x76, 0x98, 0x80, 0xe2, 0xbe}}
return a, nil
}
@ -346,7 +347,7 @@ func _1596805115_create_group_chat_invitations_tableUpSql() (*asset, error) {
return nil, err
}
info := bindataFileInfo{name: "1596805115_create_group_chat_invitations_table.up.sql", size: 231, mode: os.FileMode(0664), modTime: time.Unix(1662647306, 0)}
info := bindataFileInfo{name: "1596805115_create_group_chat_invitations_table.up.sql", size: 231, mode: os.FileMode(0644), modTime: time.Unix(1658906042, 0)}
a := &asset{bytes: bytes, info: info, digest: [32]uint8{0x6d, 0xb1, 0x14, 0x6d, 0x54, 0x28, 0x67, 0xc3, 0x23, 0x6a, 0xfc, 0x80, 0xdf, 0x9e, 0x4c, 0x35, 0x36, 0xf, 0xf8, 0xf3, 0x5f, 0xae, 0xad, 0xb, 0xc1, 0x51, 0x8e, 0x17, 0x7, 0xe5, 0x7f, 0x91}}
return a, nil
}
@ -366,7 +367,7 @@ func _1597322655_add_invitation_admin_chat_fieldUpSql() (*asset, error) {
return nil, err
}
info := bindataFileInfo{name: "1597322655_add_invitation_admin_chat_field.up.sql", size: 54, mode: os.FileMode(0664), modTime: time.Unix(1662647306, 0)}
info := bindataFileInfo{name: "1597322655_add_invitation_admin_chat_field.up.sql", size: 54, mode: os.FileMode(0644), modTime: time.Unix(1658906042, 0)}
a := &asset{bytes: bytes, info: info, digest: [32]uint8{0xa9, 0x7a, 0xa0, 0xf2, 0xdb, 0x13, 0x91, 0x91, 0xa8, 0x34, 0x1a, 0xa1, 0x49, 0x68, 0xd5, 0xae, 0x2c, 0xd8, 0xd5, 0xea, 0x8f, 0x8c, 0xc7, 0x2, 0x4e, 0x58, 0x2c, 0x3a, 0x14, 0xd4, 0x4f, 0x2c}}
return a, nil
}
@ -386,7 +387,7 @@ func _1597757544_add_nicknameUpSql() (*asset, error) {
return nil, err
}
info := bindataFileInfo{name: "1597757544_add_nickname.up.sql", size: 52, mode: os.FileMode(0664), modTime: time.Unix(1662647306, 0)}
info := bindataFileInfo{name: "1597757544_add_nickname.up.sql", size: 52, mode: os.FileMode(0644), modTime: time.Unix(1658906042, 0)}
a := &asset{bytes: bytes, info: info, digest: [32]uint8{0xf4, 0xa2, 0x64, 0x50, 0xc5, 0x4, 0xb9, 0x8b, 0xd1, 0x18, 0x9b, 0xc3, 0x91, 0x36, 0x2a, 0x1f, 0xc3, 0x6c, 0x2d, 0x92, 0xf8, 0x5e, 0xff, 0xb1, 0x59, 0x61, 0x2, 0x1c, 0xe1, 0x85, 0x90, 0xa4}}
return a, nil
}
@ -406,7 +407,7 @@ func _1598955122_add_mentionsUpSql() (*asset, error) {
return nil, err
}
info := bindataFileInfo{name: "1598955122_add_mentions.up.sql", size: 52, mode: os.FileMode(0664), modTime: time.Unix(1662647306, 0)}
info := bindataFileInfo{name: "1598955122_add_mentions.up.sql", size: 52, mode: os.FileMode(0644), modTime: time.Unix(1658906042, 0)}
a := &asset{bytes: bytes, info: info, digest: [32]uint8{0x8d, 0x22, 0x17, 0x92, 0xd2, 0x11, 0x4e, 0x7, 0x93, 0x9a, 0x55, 0xfd, 0xb, 0x97, 0xc4, 0x63, 0x6a, 0x81, 0x97, 0xcd, 0xb2, 0xf8, 0x4b, 0x5f, 0x3c, 0xfa, 0x3a, 0x38, 0x53, 0x10, 0xed, 0x9d}}
return a, nil
}
@ -426,7 +427,7 @@ func _1599641390_add_emoji_reactions_indexUpSql() (*asset, error) {
return nil, err
}
info := bindataFileInfo{name: "1599641390_add_emoji_reactions_index.up.sql", size: 126, mode: os.FileMode(0664), modTime: time.Unix(1662647306, 0)}
info := bindataFileInfo{name: "1599641390_add_emoji_reactions_index.up.sql", size: 126, mode: os.FileMode(0644), modTime: time.Unix(1658906042, 0)}
a := &asset{bytes: bytes, info: info, digest: [32]uint8{0xf9, 0xd8, 0xdc, 0xa7, 0xb, 0x92, 0x7a, 0x61, 0x37, 0x24, 0x1c, 0x77, 0x5e, 0xe, 0x7e, 0xfc, 0x9f, 0x98, 0x7b, 0x65, 0xe7, 0xf9, 0x71, 0x57, 0x89, 0x2d, 0x90, 0x1b, 0xf6, 0x5e, 0x37, 0xe8}}
return a, nil
}
@ -446,7 +447,7 @@ func _1599720851_add_seen_index_remove_long_messagesUpSql() (*asset, error) {
return nil, err
}
info := bindataFileInfo{name: "1599720851_add_seen_index_remove_long_messages.up.sql", size: 150, mode: os.FileMode(0664), modTime: time.Unix(1662647306, 0)}
info := bindataFileInfo{name: "1599720851_add_seen_index_remove_long_messages.up.sql", size: 150, mode: os.FileMode(0644), modTime: time.Unix(1658906042, 0)}
a := &asset{bytes: bytes, info: info, digest: [32]uint8{0x24, 0x1c, 0xc4, 0x78, 0x91, 0xc7, 0xeb, 0xfe, 0xc8, 0xa0, 0xd8, 0x13, 0x27, 0x97, 0xc8, 0x96, 0x56, 0x97, 0x33, 0x2c, 0x1e, 0x16, 0x8a, 0xd3, 0x49, 0x99, 0x3, 0xe9, 0xbb, 0xc4, 0x5, 0x3c}}
return a, nil
}
@ -466,7 +467,7 @@ func _1603198582_add_profile_chat_fieldUpSql() (*asset, error) {
return nil, err
}
info := bindataFileInfo{name: "1603198582_add_profile_chat_field.up.sql", size: 45, mode: os.FileMode(0664), modTime: time.Unix(1662647306, 0)}
info := bindataFileInfo{name: "1603198582_add_profile_chat_field.up.sql", size: 45, mode: os.FileMode(0644), modTime: time.Unix(1658906042, 0)}
a := &asset{bytes: bytes, info: info, digest: [32]uint8{0xaa, 0xca, 0xe, 0x46, 0xa0, 0x9, 0x9d, 0x47, 0x57, 0xe9, 0xfb, 0x17, 0xeb, 0x9c, 0xf6, 0xb8, 0x1d, 0xe9, 0xd, 0x0, 0xd5, 0xe5, 0xd8, 0x9e, 0x60, 0xa, 0xbf, 0x32, 0x2c, 0x52, 0x7f, 0x6a}}
return a, nil
}
@ -486,7 +487,7 @@ func _1603816533_add_linksUpSql() (*asset, error) {
return nil, err
}
info := bindataFileInfo{name: "1603816533_add_links.up.sql", size: 48, mode: os.FileMode(0664), modTime: time.Unix(1662647306, 0)}
info := bindataFileInfo{name: "1603816533_add_links.up.sql", size: 48, mode: os.FileMode(0644), modTime: time.Unix(1658906042, 0)}
a := &asset{bytes: bytes, info: info, digest: [32]uint8{0xc9, 0x24, 0xd6, 0x1d, 0xa, 0x83, 0x1e, 0x4d, 0xf, 0xae, 0x4d, 0x8c, 0x51, 0x32, 0xa8, 0x37, 0xb0, 0x14, 0xfb, 0x32, 0x34, 0xc8, 0xc, 0x4e, 0x5b, 0xc5, 0x15, 0x65, 0x73, 0x0, 0x0, 0x1d}}
return a, nil
}
@ -506,7 +507,7 @@ func _1603888149_create_chat_identity_last_published_tableUpSql() (*asset, error
return nil, err
}
info := bindataFileInfo{name: "1603888149_create_chat_identity_last_published_table.up.sql", size: 407, mode: os.FileMode(0664), modTime: time.Unix(1662647306, 0)}
info := bindataFileInfo{name: "1603888149_create_chat_identity_last_published_table.up.sql", size: 407, mode: os.FileMode(0644), modTime: time.Unix(1658906042, 0)}
a := &asset{bytes: bytes, info: info, digest: [32]uint8{0x7f, 0x9, 0xf, 0xfb, 0xdb, 0x3c, 0x86, 0x70, 0x82, 0xda, 0x10, 0x25, 0xe2, 0x4e, 0x40, 0x45, 0xab, 0x8b, 0x1c, 0x91, 0x7c, 0xf1, 0x70, 0x2e, 0x81, 0xf3, 0x71, 0x45, 0xda, 0xe2, 0xa4, 0x57}}
return a, nil
}
@ -526,7 +527,7 @@ func _1605075346_add_communitiesUpSql() (*asset, error) {
return nil, err
}
info := bindataFileInfo{name: "1605075346_add_communities.up.sql", size: 6971, mode: os.FileMode(0664), modTime: time.Unix(1662647306, 0)}
info := bindataFileInfo{name: "1605075346_add_communities.up.sql", size: 6971, mode: os.FileMode(0644), modTime: time.Unix(1658906042, 0)}
a := &asset{bytes: bytes, info: info, digest: [32]uint8{0x1f, 0x64, 0xea, 0xb4, 0xae, 0x9e, 0xdb, 0x9, 0x58, 0xb6, 0x5c, 0x7a, 0x50, 0xc5, 0xfe, 0x93, 0x5d, 0x36, 0x85, 0x5d, 0x6a, 0xba, 0xc9, 0x7e, 0x84, 0xd7, 0xbf, 0x2a, 0x53, 0xf3, 0x97, 0xf1}}
return a, nil
}
@ -546,7 +547,7 @@ func _1610117927_add_message_cacheUpSql() (*asset, error) {
return nil, err
}
info := bindataFileInfo{name: "1610117927_add_message_cache.up.sql", size: 142, mode: os.FileMode(0664), modTime: time.Unix(1662647306, 0)}
info := bindataFileInfo{name: "1610117927_add_message_cache.up.sql", size: 142, mode: os.FileMode(0644), modTime: time.Unix(1658906042, 0)}
a := &asset{bytes: bytes, info: info, digest: [32]uint8{0x34, 0xf1, 0xf0, 0x82, 0x79, 0x28, 0x19, 0xc2, 0x39, 0x6a, 0xa5, 0x96, 0x59, 0x23, 0xa0, 0xed, 0x60, 0x58, 0x86, 0x9, 0xb9, 0xad, 0xfb, 0xa, 0xe3, 0x47, 0x6e, 0xa1, 0x18, 0xe8, 0x39, 0x2c}}
return a, nil
}
@ -566,7 +567,7 @@ func _1610959908_add_dont_wrap_to_raw_messagesUpSql() (*asset, error) {
return nil, err
}
info := bindataFileInfo{name: "1610959908_add_dont_wrap_to_raw_messages.up.sql", size: 83, mode: os.FileMode(0664), modTime: time.Unix(1662647306, 0)}
info := bindataFileInfo{name: "1610959908_add_dont_wrap_to_raw_messages.up.sql", size: 83, mode: os.FileMode(0644), modTime: time.Unix(1658906042, 0)}
a := &asset{bytes: bytes, info: info, digest: [32]uint8{0x71, 0x2, 0x9a, 0xca, 0xd4, 0x38, 0x44, 0x30, 0x2b, 0xa8, 0x27, 0x32, 0x63, 0x53, 0x22, 0x60, 0x59, 0x84, 0x23, 0x96, 0x77, 0xf0, 0x56, 0xd7, 0x94, 0xe0, 0x95, 0x28, 0x6, 0x1d, 0x4e, 0xb1}}
return a, nil
}
@ -586,7 +587,7 @@ func _1610960912_add_send_on_personal_topicUpSql() (*asset, error) {
return nil, err
}
info := bindataFileInfo{name: "1610960912_add_send_on_personal_topic.up.sql", size: 82, mode: os.FileMode(0664), modTime: time.Unix(1662647306, 0)}
info := bindataFileInfo{name: "1610960912_add_send_on_personal_topic.up.sql", size: 82, mode: os.FileMode(0644), modTime: time.Unix(1658906042, 0)}
a := &asset{bytes: bytes, info: info, digest: [32]uint8{0x77, 0xac, 0x2f, 0xc4, 0xd, 0xa7, 0x1b, 0x37, 0x30, 0xc2, 0x68, 0xee, 0xde, 0x54, 0x5e, 0xbf, 0x3f, 0xa0, 0xd6, 0xc6, 0x9f, 0xd4, 0x34, 0x12, 0x76, 0x1e, 0x66, 0x4a, 0xfc, 0xf, 0xee, 0xc9}}
return a, nil
}
@ -606,7 +607,7 @@ func _1612870480_add_datasync_idUpSql() (*asset, error) {
return nil, err
}
info := bindataFileInfo{name: "1612870480_add_datasync_id.up.sql", size: 111, mode: os.FileMode(0664), modTime: time.Unix(1662647306, 0)}
info := bindataFileInfo{name: "1612870480_add_datasync_id.up.sql", size: 111, mode: os.FileMode(0644), modTime: time.Unix(1658906042, 0)}
a := &asset{bytes: bytes, info: info, digest: [32]uint8{0x34, 0x9a, 0xbc, 0xfa, 0xaa, 0x8c, 0x9c, 0x37, 0x67, 0x15, 0x9c, 0x7e, 0x78, 0x75, 0x66, 0x82, 0x18, 0x72, 0x10, 0xbc, 0xd4, 0xab, 0x44, 0xfe, 0x57, 0x85, 0x6d, 0x19, 0xf5, 0x96, 0x8a, 0xbe}}
return a, nil
}
@ -626,7 +627,7 @@ func _1614152139_add_communities_request_to_joinUpSql() (*asset, error) {
return nil, err
}
info := bindataFileInfo{name: "1614152139_add_communities_request_to_join.up.sql", size: 831, mode: os.FileMode(0664), modTime: time.Unix(1662647306, 0)}
info := bindataFileInfo{name: "1614152139_add_communities_request_to_join.up.sql", size: 831, mode: os.FileMode(0644), modTime: time.Unix(1658906042, 0)}
a := &asset{bytes: bytes, info: info, digest: [32]uint8{0x11, 0x3, 0x26, 0xf9, 0x29, 0x50, 0x4f, 0xcd, 0x46, 0xe5, 0xb1, 0x6b, 0xb9, 0x2, 0x40, 0xb1, 0xdf, 0x4a, 0x4c, 0x7a, 0xda, 0x3, 0x35, 0xcd, 0x2d, 0xcc, 0x80, 0x7d, 0x57, 0x5f, 0x3, 0x5c}}
return a, nil
}
@ -646,7 +647,7 @@ func _1615374373_add_confirmationsUpSql() (*asset, error) {
return nil, err
}
info := bindataFileInfo{name: "1615374373_add_confirmations.up.sql", size: 227, mode: os.FileMode(0664), modTime: time.Unix(1662647306, 0)}
info := bindataFileInfo{name: "1615374373_add_confirmations.up.sql", size: 227, mode: os.FileMode(0644), modTime: time.Unix(1658906042, 0)}
a := &asset{bytes: bytes, info: info, digest: [32]uint8{0xdd, 0xa6, 0x65, 0xc5, 0x1d, 0xb2, 0x77, 0x36, 0xe3, 0x79, 0xda, 0xe8, 0x7a, 0xa4, 0xdf, 0x45, 0xae, 0xd8, 0xb4, 0xba, 0x90, 0xfd, 0x74, 0x71, 0x14, 0x75, 0x73, 0x72, 0xb9, 0x9e, 0x1, 0x81}}
return a, nil
}
@ -666,7 +667,7 @@ func _1617694931_add_notification_centerUpSql() (*asset, error) {
return nil, err
}
info := bindataFileInfo{name: "1617694931_add_notification_center.up.sql", size: 572, mode: os.FileMode(0664), modTime: time.Unix(1662647306, 0)}
info := bindataFileInfo{name: "1617694931_add_notification_center.up.sql", size: 572, mode: os.FileMode(0644), modTime: time.Unix(1658906042, 0)}
a := &asset{bytes: bytes, info: info, digest: [32]uint8{0x10, 0x45, 0xc6, 0xc9, 0x73, 0xbb, 0x1f, 0xda, 0xa3, 0x4d, 0x19, 0x98, 0x85, 0x2d, 0xca, 0xda, 0xcc, 0x3b, 0x32, 0xff, 0xc7, 0x7b, 0xe3, 0x9f, 0x9b, 0x2a, 0x93, 0xf5, 0xdf, 0x65, 0x38, 0x91}}
return a, nil
}
@ -686,7 +687,7 @@ func _1618923660_create_pin_messagesUpSql() (*asset, error) {
return nil, err
}
info := bindataFileInfo{name: "1618923660_create_pin_messages.up.sql", size: 265, mode: os.FileMode(0664), modTime: time.Unix(1662647306, 0)}
info := bindataFileInfo{name: "1618923660_create_pin_messages.up.sql", size: 265, mode: os.FileMode(0644), modTime: time.Unix(1658906042, 0)}
a := &asset{bytes: bytes, info: info, digest: [32]uint8{0x61, 0x44, 0x3a, 0xbe, 0x30, 0xd2, 0x7e, 0xc0, 0xe2, 0x8e, 0x65, 0x53, 0x54, 0xbb, 0x7a, 0x1c, 0xb3, 0x5d, 0xd2, 0xa6, 0xa9, 0x28, 0xb7, 0xa4, 0x5f, 0x8b, 0x9, 0x5f, 0x17, 0xc1, 0x85, 0x21}}
return a, nil
}
@ -706,7 +707,7 @@ func _1619094007_add_joined_chat_fieldUpSql() (*asset, error) {
return nil, err
}
info := bindataFileInfo{name: "1619094007_add_joined_chat_field.up.sql", size: 101, mode: os.FileMode(0664), modTime: time.Unix(1662647306, 0)}
info := bindataFileInfo{name: "1619094007_add_joined_chat_field.up.sql", size: 101, mode: os.FileMode(0644), modTime: time.Unix(1658906042, 0)}
a := &asset{bytes: bytes, info: info, digest: [32]uint8{0xfa, 0x30, 0x81, 0x3a, 0x2f, 0x9f, 0xb3, 0x0, 0x55, 0x8e, 0x1d, 0xa8, 0xb0, 0x68, 0xf0, 0x40, 0x1a, 0x6c, 0xaa, 0xfc, 0x33, 0xd1, 0xd1, 0x55, 0x3f, 0xf2, 0xbd, 0x54, 0xa1, 0x2b, 0x40, 0x95}}
return a, nil
}
@ -726,7 +727,7 @@ func _1619099821_add_last_synced_fieldUpSql() (*asset, error) {
return nil, err
}
info := bindataFileInfo{name: "1619099821_add_last_synced_field.up.sql", size: 226, mode: os.FileMode(0664), modTime: time.Unix(1662647306, 0)}
info := bindataFileInfo{name: "1619099821_add_last_synced_field.up.sql", size: 226, mode: os.FileMode(0644), modTime: time.Unix(1658906042, 0)}
a := &asset{bytes: bytes, info: info, digest: [32]uint8{0xf, 0x52, 0x22, 0xe, 0x2f, 0xd7, 0x93, 0x5f, 0x42, 0xc2, 0x93, 0x4, 0x35, 0x6f, 0xc9, 0x19, 0xed, 0x6b, 0x52, 0x6f, 0xae, 0x99, 0xe2, 0x68, 0x3d, 0x4f, 0x40, 0xe, 0xe1, 0xa, 0x47, 0x21}}
return a, nil
}
@ -746,7 +747,7 @@ func _1621933219_add_mentionedUpSql() (*asset, error) {
return nil, err
}
info := bindataFileInfo{name: "1621933219_add_mentioned.up.sql", size: 70, mode: os.FileMode(0664), modTime: time.Unix(1662647306, 0)}
info := bindataFileInfo{name: "1621933219_add_mentioned.up.sql", size: 70, mode: os.FileMode(0644), modTime: time.Unix(1658906042, 0)}
a := &asset{bytes: bytes, info: info, digest: [32]uint8{0x36, 0x76, 0x8a, 0xc9, 0x7, 0x8f, 0xa5, 0xcb, 0x12, 0x21, 0x4e, 0xfe, 0x96, 0x77, 0xcf, 0x7f, 0x76, 0x75, 0x36, 0x2c, 0xf8, 0x1d, 0x13, 0xcb, 0xcd, 0x6e, 0x70, 0xbf, 0xf5, 0x93, 0x67, 0xd1}}
return a, nil
}
@ -766,7 +767,7 @@ func _1622010048_add_unviewed_mentions_countUpSql() (*asset, error) {
return nil, err
}
info := bindataFileInfo{name: "1622010048_add_unviewed_mentions_count.up.sql", size: 114, mode: os.FileMode(0664), modTime: time.Unix(1662647306, 0)}
info := bindataFileInfo{name: "1622010048_add_unviewed_mentions_count.up.sql", size: 114, mode: os.FileMode(0644), modTime: time.Unix(1658906042, 0)}
a := &asset{bytes: bytes, info: info, digest: [32]uint8{0x7c, 0x16, 0x85, 0xa6, 0x5b, 0xe1, 0x66, 0xb9, 0x84, 0xbe, 0x7f, 0xa, 0x77, 0x23, 0xb9, 0xef, 0x8e, 0x2, 0x8, 0xfc, 0x61, 0xb2, 0x43, 0xa9, 0x63, 0xae, 0xb4, 0xdf, 0x30, 0xb1, 0x61, 0x4b}}
return a, nil
}
@ -786,7 +787,7 @@ func _1622061278_add_message_activity_center_notification_fieldUpSql() (*asset,
return nil, err
}
info := bindataFileInfo{name: "1622061278_add_message_activity_center_notification_field.up.sql", size: 80, mode: os.FileMode(0664), modTime: time.Unix(1662647306, 0)}
info := bindataFileInfo{name: "1622061278_add_message_activity_center_notification_field.up.sql", size: 80, mode: os.FileMode(0644), modTime: time.Unix(1658906042, 0)}
a := &asset{bytes: bytes, info: info, digest: [32]uint8{0x8, 0xc, 0xa6, 0x1f, 0xa5, 0xc6, 0x7c, 0x6f, 0xab, 0x2c, 0x2d, 0xb5, 0xa4, 0xdd, 0xc1, 0xd6, 0x44, 0x83, 0xf9, 0xb1, 0xa5, 0xce, 0x34, 0x3d, 0x2, 0xa9, 0x35, 0xcf, 0xc6, 0xb2, 0x43, 0x37}}
return a, nil
}
@ -806,7 +807,7 @@ func _1622464518_set_synced_to_fromUpSql() (*asset, error) {
return nil, err
}
info := bindataFileInfo{name: "1622464518_set_synced_to_from.up.sql", size: 105, mode: os.FileMode(0664), modTime: time.Unix(1662647306, 0)}
info := bindataFileInfo{name: "1622464518_set_synced_to_from.up.sql", size: 105, mode: os.FileMode(0644), modTime: time.Unix(1658906042, 0)}
a := &asset{bytes: bytes, info: info, digest: [32]uint8{0x33, 0x3e, 0x2b, 0xa, 0x1e, 0xc7, 0x6d, 0x6f, 0xd1, 0x1d, 0xe8, 0x4b, 0xdd, 0x92, 0x76, 0xea, 0xf2, 0x3e, 0x15, 0x85, 0xc4, 0xc3, 0x31, 0xf1, 0xc0, 0xa2, 0xd7, 0x47, 0xde, 0x4e, 0xfd, 0xc6}}
return a, nil
}
@ -826,7 +827,7 @@ func _1622464519_add_chat_descriptionUpSql() (*asset, error) {
return nil, err
}
info := bindataFileInfo{name: "1622464519_add_chat_description.up.sql", size: 93, mode: os.FileMode(0664), modTime: time.Unix(1662647306, 0)}
info := bindataFileInfo{name: "1622464519_add_chat_description.up.sql", size: 93, mode: os.FileMode(0644), modTime: time.Unix(1658906042, 0)}
a := &asset{bytes: bytes, info: info, digest: [32]uint8{0x36, 0x2e, 0x89, 0x31, 0xec, 0xef, 0xeb, 0x43, 0xf5, 0x96, 0x6d, 0xce, 0x91, 0x8a, 0x37, 0x2a, 0x11, 0x7a, 0x3f, 0xd9, 0x10, 0xbb, 0xa1, 0xbc, 0x7, 0xe0, 0x3b, 0xa5, 0xf4, 0xa6, 0xf4, 0xa1}}
return a, nil
}
@ -846,7 +847,7 @@ func _1622622253_add_pinned_by_to_pin_messagesUpSql() (*asset, error) {
return nil, err
}
info := bindataFileInfo{name: "1622622253_add_pinned_by_to_pin_messages.up.sql", size: 52, mode: os.FileMode(0664), modTime: time.Unix(1662647306, 0)}
info := bindataFileInfo{name: "1622622253_add_pinned_by_to_pin_messages.up.sql", size: 52, mode: os.FileMode(0644), modTime: time.Unix(1658906042, 0)}
a := &asset{bytes: bytes, info: info, digest: [32]uint8{0x9b, 0x94, 0xa3, 0x45, 0x91, 0x1e, 0x66, 0xd1, 0x96, 0x5a, 0xaf, 0xfa, 0x29, 0x39, 0xa8, 0x3a, 0x97, 0x4c, 0x65, 0x6, 0x96, 0x90, 0x4c, 0xfe, 0xce, 0x7d, 0x5d, 0xd4, 0xb3, 0x8, 0x6d, 0x5f}}
return a, nil
}
@ -866,7 +867,7 @@ func _1623938329_add_author_activity_center_notification_fieldUpSql() (*asset, e
return nil, err
}
info := bindataFileInfo{name: "1623938329_add_author_activity_center_notification_field.up.sql", size: 66, mode: os.FileMode(0664), modTime: time.Unix(1662647306, 0)}
info := bindataFileInfo{name: "1623938329_add_author_activity_center_notification_field.up.sql", size: 66, mode: os.FileMode(0644), modTime: time.Unix(1658906042, 0)}
a := &asset{bytes: bytes, info: info, digest: [32]uint8{0x36, 0xe6, 0xa7, 0xd5, 0x26, 0xff, 0xab, 0x92, 0x88, 0xf0, 0xd3, 0x34, 0xd9, 0x2f, 0xe7, 0x18, 0x1a, 0x40, 0xf9, 0xbe, 0x8e, 0xfc, 0xd0, 0x4f, 0x1f, 0x4a, 0xb9, 0x83, 0x3f, 0xa9, 0xde, 0xb}}
return a, nil
}
@ -886,7 +887,7 @@ func _1623938330_add_edit_messagesUpSql() (*asset, error) {
return nil, err
}
info := bindataFileInfo{name: "1623938330_add_edit_messages.up.sql", size: 369, mode: os.FileMode(0664), modTime: time.Unix(1662647306, 0)}
info := bindataFileInfo{name: "1623938330_add_edit_messages.up.sql", size: 369, mode: os.FileMode(0644), modTime: time.Unix(1658906042, 0)}
a := &asset{bytes: bytes, info: info, digest: [32]uint8{0x7e, 0xd2, 0xce, 0xe, 0x5c, 0x19, 0xbe, 0x5e, 0x29, 0xbe, 0x9b, 0x31, 0x53, 0x76, 0xb2, 0xc8, 0x56, 0xf0, 0x82, 0xfe, 0x7d, 0x6c, 0xe8, 0x5c, 0xe9, 0x7a, 0x5d, 0x5, 0xc4, 0x92, 0x38, 0xe3}}
return a, nil
}
@ -906,7 +907,7 @@ func _1624978434_add_muted_communityUpSql() (*asset, error) {
return nil, err
}
info := bindataFileInfo{name: "1624978434_add_muted_community.up.sql", size: 82, mode: os.FileMode(0664), modTime: time.Unix(1662647306, 0)}
info := bindataFileInfo{name: "1624978434_add_muted_community.up.sql", size: 82, mode: os.FileMode(0644), modTime: time.Unix(1658906042, 0)}
a := &asset{bytes: bytes, info: info, digest: [32]uint8{0x6, 0xdc, 0x6e, 0x6f, 0x97, 0xc7, 0x3d, 0x50, 0xab, 0x80, 0x87, 0x44, 0x43, 0x38, 0xe6, 0xc5, 0xc1, 0x91, 0x26, 0xf, 0x16, 0xe, 0xd9, 0x32, 0x37, 0x25, 0x96, 0x25, 0x6, 0xc8, 0xb5, 0x4a}}
return a, nil
}
@ -926,7 +927,7 @@ func _1625018910_add_repply_message_activity_center_notification_fieldUpSql() (*
return nil, err
}
info := bindataFileInfo{name: "1625018910_add_repply_message_activity_center_notification_field.up.sql", size: 86, mode: os.FileMode(0664), modTime: time.Unix(1662647306, 0)}
info := bindataFileInfo{name: "1625018910_add_repply_message_activity_center_notification_field.up.sql", size: 86, mode: os.FileMode(0644), modTime: time.Unix(1658906042, 0)}
a := &asset{bytes: bytes, info: info, digest: [32]uint8{0xf2, 0x52, 0x12, 0x40, 0xd8, 0x6f, 0x71, 0x97, 0x46, 0x39, 0xaa, 0x74, 0x41, 0xcd, 0x45, 0x4c, 0xe8, 0xd9, 0xe2, 0x56, 0x8e, 0x78, 0x18, 0x62, 0xf6, 0xa8, 0x36, 0xe9, 0x9a, 0x1f, 0xc, 0xb1}}
return a, nil
}
@ -946,7 +947,7 @@ func _1625762506_add_deleted_messagesUpSql() (*asset, error) {
return nil, err
}
info := bindataFileInfo{name: "1625762506_add_deleted_messages.up.sql", size: 357, mode: os.FileMode(0664), modTime: time.Unix(1662647306, 0)}
info := bindataFileInfo{name: "1625762506_add_deleted_messages.up.sql", size: 357, mode: os.FileMode(0644), modTime: time.Unix(1658906042, 0)}
a := &asset{bytes: bytes, info: info, digest: [32]uint8{0xd5, 0x61, 0x42, 0xb6, 0x8c, 0x7f, 0x2d, 0xec, 0xa9, 0x6d, 0x3d, 0x0, 0xa3, 0x32, 0xd8, 0x4a, 0x38, 0x5c, 0x97, 0xfc, 0x68, 0xde, 0xa9, 0xb7, 0xd8, 0xde, 0xb, 0x29, 0x93, 0xdc, 0x81, 0xf8}}
return a, nil
}
@ -966,7 +967,7 @@ func _1627388946_add_communities_synced_atUpSql() (*asset, error) {
return nil, err
}
info := bindataFileInfo{name: "1627388946_add_communities_synced_at.up.sql", size: 87, mode: os.FileMode(0664), modTime: time.Unix(1662647306, 0)}
info := bindataFileInfo{name: "1627388946_add_communities_synced_at.up.sql", size: 87, mode: os.FileMode(0644), modTime: time.Unix(1658906042, 0)}
a := &asset{bytes: bytes, info: info, digest: [32]uint8{0xc1, 0xbd, 0x9b, 0x6a, 0xc9, 0x1a, 0x7a, 0x34, 0xcf, 0x5f, 0x80, 0x9e, 0x8c, 0x1c, 0xc0, 0xec, 0x4e, 0x78, 0xb0, 0x2d, 0x15, 0x77, 0x38, 0x4a, 0x6a, 0x5, 0x84, 0xf5, 0x8d, 0x8b, 0xbe, 0x9}}
return a, nil
}
@ -986,7 +987,7 @@ func _1628280060_createUsermessagesIndexSql() (*asset, error) {
return nil, err
}
info := bindataFileInfo{name: "1628280060_create-usermessages-index.sql", size: 80, mode: os.FileMode(0664), modTime: time.Unix(1662647306, 0)}
info := bindataFileInfo{name: "1628280060_create-usermessages-index.sql", size: 80, mode: os.FileMode(0644), modTime: time.Unix(1658906042, 0)}
a := &asset{bytes: bytes, info: info, digest: [32]uint8{0x10, 0x6f, 0x70, 0x47, 0x40, 0xab, 0xa8, 0x60, 0xe0, 0xf9, 0x8, 0x7e, 0x19, 0x9d, 0xba, 0x33, 0x16, 0xfc, 0x3c, 0xdc, 0xa8, 0xa6, 0x53, 0x61, 0x39, 0x82, 0x91, 0xcf, 0x69, 0xd8, 0xf2, 0xcf}}
return a, nil
}
@ -1006,7 +1007,7 @@ func _1632303896_modify_contacts_tableUpSql() (*asset, error) {
return nil, err
}
info := bindataFileInfo{name: "1632303896_modify_contacts_table.up.sql", size: 1574, mode: os.FileMode(0664), modTime: time.Unix(1662647306, 0)}
info := bindataFileInfo{name: "1632303896_modify_contacts_table.up.sql", size: 1574, mode: os.FileMode(0644), modTime: time.Unix(1658906042, 0)}
a := &asset{bytes: bytes, info: info, digest: [32]uint8{0x81, 0x1e, 0x6c, 0x3c, 0xd, 0xd7, 0x7d, 0xbb, 0x19, 0xbc, 0xe4, 0x7, 0xfd, 0xf8, 0x66, 0x6d, 0x78, 0xf6, 0x4, 0xe6, 0x51, 0xe4, 0xe6, 0xdc, 0xe, 0x5a, 0x2e, 0xac, 0xe6, 0xe7, 0x24, 0x69}}
return a, nil
}
@ -1026,7 +1027,7 @@ func _1633349838_add_emoji_column_in_chatsUpSql() (*asset, error) {
return nil, err
}
info := bindataFileInfo{name: "1633349838_add_emoji_column_in_chats.up.sql", size: 52, mode: os.FileMode(0664), modTime: time.Unix(1662647306, 0)}
info := bindataFileInfo{name: "1633349838_add_emoji_column_in_chats.up.sql", size: 52, mode: os.FileMode(0644), modTime: time.Unix(1658906042, 0)}
a := &asset{bytes: bytes, info: info, digest: [32]uint8{0xcb, 0x33, 0xcb, 0x3b, 0xa9, 0x99, 0x77, 0x6a, 0xea, 0xc4, 0x39, 0xd7, 0xa1, 0x49, 0xa7, 0xdf, 0xff, 0x72, 0xda, 0x34, 0x21, 0x67, 0x66, 0xca, 0x65, 0x46, 0x1, 0xa6, 0x4e, 0xf9, 0x38, 0x86}}
return a, nil
}
@ -1046,7 +1047,7 @@ func _1634831235_add_highlight_column_in_chatsUpSql() (*asset, error) {
return nil, err
}
info := bindataFileInfo{name: "1634831235_add_highlight_column_in_chats.up.sql", size: 62, mode: os.FileMode(0664), modTime: time.Unix(1662647306, 0)}
info := bindataFileInfo{name: "1634831235_add_highlight_column_in_chats.up.sql", size: 62, mode: os.FileMode(0644), modTime: time.Unix(1658906042, 0)}
a := &asset{bytes: bytes, info: info, digest: [32]uint8{0xaa, 0x63, 0x5c, 0x73, 0x19, 0x83, 0xbd, 0x35, 0x80, 0x9f, 0x66, 0xec, 0x4c, 0xbc, 0x9d, 0x2d, 0x52, 0x91, 0x6d, 0xb3, 0x2b, 0x87, 0xde, 0x24, 0x46, 0x5c, 0xd, 0xfd, 0x78, 0xf5, 0xe3, 0xe9}}
return a, nil
}
@ -1066,7 +1067,7 @@ func _1634896007_add_last_updated_locally_and_removedUpSql() (*asset, error) {
return nil, err
}
info := bindataFileInfo{name: "1634896007_add_last_updated_locally_and_removed.up.sql", size: 131, mode: os.FileMode(0664), modTime: time.Unix(1662647306, 0)}
info := bindataFileInfo{name: "1634896007_add_last_updated_locally_and_removed.up.sql", size: 131, mode: os.FileMode(0644), modTime: time.Unix(1658906042, 0)}
a := &asset{bytes: bytes, info: info, digest: [32]uint8{0x2e, 0xa8, 0x34, 0xe2, 0xc0, 0x62, 0xc8, 0xd6, 0x5a, 0x87, 0xe3, 0x70, 0xe1, 0xc4, 0x16, 0x9c, 0x60, 0x2e, 0x98, 0xf0, 0x91, 0x84, 0xbe, 0xe0, 0xdf, 0x3e, 0x4d, 0x24, 0xc4, 0x6c, 0x40, 0x17}}
return a, nil
}
@ -1086,7 +1087,7 @@ func _1635840039_add_clock_read_at_column_in_chatsUpSql() (*asset, error) {
return nil, err
}
info := bindataFileInfo{name: "1635840039_add_clock_read_at_column_in_chats.up.sql", size: 245, mode: os.FileMode(0664), modTime: time.Unix(1662647306, 0)}
info := bindataFileInfo{name: "1635840039_add_clock_read_at_column_in_chats.up.sql", size: 245, mode: os.FileMode(0644), modTime: time.Unix(1658906042, 0)}
a := &asset{bytes: bytes, info: info, digest: [32]uint8{0x6c, 0xba, 0x3f, 0xba, 0x1a, 0x71, 0xa8, 0x9, 0x19, 0xbe, 0x1e, 0x38, 0x50, 0x30, 0x3a, 0x52, 0x15, 0x29, 0xee, 0x49, 0x19, 0x6f, 0x53, 0xc2, 0xc6, 0x6c, 0xd9, 0x80, 0x7e, 0xb9, 0x58, 0x7a}}
return a, nil
}
@ -1106,7 +1107,7 @@ func _1637852321_add_received_invitation_admin_column_in_chatsUpSql() (*asset, e
return nil, err
}
info := bindataFileInfo{name: "1637852321_add_received_invitation_admin_column_in_chats.up.sql", size: 72, mode: os.FileMode(0664), modTime: time.Unix(1662647306, 0)}
info := bindataFileInfo{name: "1637852321_add_received_invitation_admin_column_in_chats.up.sql", size: 72, mode: os.FileMode(0644), modTime: time.Unix(1658906042, 0)}
a := &asset{bytes: bytes, info: info, digest: [32]uint8{0x70, 0x8b, 0x92, 0x56, 0x83, 0x70, 0x7f, 0x6, 0xb2, 0xd, 0x1c, 0x2f, 0xcc, 0x93, 0xc3, 0x85, 0x8c, 0xc2, 0x38, 0x94, 0x7e, 0x88, 0x3f, 0x39, 0x34, 0xf8, 0x90, 0xcf, 0x83, 0x68, 0x3d, 0xe5}}
return a, nil
}
@ -1126,7 +1127,7 @@ func _1645034601_display_nameUpSql() (*asset, error) {
return nil, err
}
info := bindataFileInfo{name: "1645034601_display_name.up.sql", size: 110, mode: os.FileMode(0664), modTime: time.Unix(1662647306, 0)}
info := bindataFileInfo{name: "1645034601_display_name.up.sql", size: 110, mode: os.FileMode(0644), modTime: time.Unix(1658906042, 0)}
a := &asset{bytes: bytes, info: info, digest: [32]uint8{0x15, 0xfc, 0xda, 0x70, 0x53, 0x19, 0x90, 0x20, 0x4, 0x1c, 0x99, 0x42, 0x53, 0x1a, 0xd6, 0xb8, 0xbb, 0x8a, 0xe8, 0xbe, 0xcc, 0xb7, 0xc, 0x7f, 0x73, 0x50, 0x18, 0xf1, 0x8b, 0x18, 0x54, 0x64}}
return a, nil
}
@ -1146,7 +1147,7 @@ func _1645034602_add_mutual_contact_requestUpSql() (*asset, error) {
return nil, err
}
info := bindataFileInfo{name: "1645034602_add_mutual_contact_request.up.sql", size: 454, mode: os.FileMode(0664), modTime: time.Unix(1662647306, 0)}
info := bindataFileInfo{name: "1645034602_add_mutual_contact_request.up.sql", size: 454, mode: os.FileMode(0644), modTime: time.Unix(1658906042, 0)}
a := &asset{bytes: bytes, info: info, digest: [32]uint8{0x1a, 0xe0, 0x5d, 0x68, 0xb8, 0x50, 0xa4, 0xbb, 0x3e, 0x4f, 0x2, 0x87, 0xad, 0x87, 0x6e, 0x38, 0xdf, 0xc8, 0x4c, 0xe2, 0x5f, 0xd1, 0x6, 0xdc, 0xe7, 0xbd, 0x4a, 0x9c, 0xf3, 0x91, 0xa1, 0x51}}
return a, nil
}
@ -1166,7 +1167,7 @@ func _1650373957_add_contact_request_stateUpSql() (*asset, error) {
return nil, err
}
info := bindataFileInfo{name: "1650373957_add_contact_request_state.up.sql", size: 59, mode: os.FileMode(0664), modTime: time.Unix(1662647306, 0)}
info := bindataFileInfo{name: "1650373957_add_contact_request_state.up.sql", size: 59, mode: os.FileMode(0644), modTime: time.Unix(1658906042, 0)}
a := &asset{bytes: bytes, info: info, digest: [32]uint8{0x5e, 0xc1, 0x3f, 0x29, 0xe, 0x19, 0x86, 0x1a, 0x4c, 0x6c, 0x2a, 0x90, 0x9d, 0xdf, 0xb1, 0xb, 0x72, 0x25, 0xcd, 0x6c, 0x5f, 0xd, 0x51, 0x9e, 0x85, 0xc0, 0x9, 0xb7, 0xbc, 0x87, 0x23, 0xec}}
return a, nil
}
@ -1186,7 +1187,7 @@ func _1656958989_contact_verificationUpSql() (*asset, error) {
return nil, err
}
info := bindataFileInfo{name: "1656958989_contact_verification.up.sql", size: 624, mode: os.FileMode(0664), modTime: time.Unix(1662647306, 0)}
info := bindataFileInfo{name: "1656958989_contact_verification.up.sql", size: 624, mode: os.FileMode(0644), modTime: time.Unix(1658906042, 0)}
a := &asset{bytes: bytes, info: info, digest: [32]uint8{0x3a, 0x3f, 0x28, 0x38, 0x33, 0xdb, 0xe9, 0x4d, 0xc0, 0x54, 0x8c, 0x2a, 0x73, 0xc4, 0xdd, 0x5c, 0xc5, 0x1a, 0x93, 0x4b, 0x6, 0x13, 0xbe, 0x42, 0xd2, 0x7f, 0xd4, 0xc, 0xc5, 0x4e, 0x6d, 0xce}}
return a, nil
}
@ -1206,7 +1207,7 @@ func _1658236268_add_discord_message_authors_tableUpSql() (*asset, error) {
return nil, err
}
info := bindataFileInfo{name: "1658236268_add_discord_message_authors_table.up.sql", size: 191, mode: os.FileMode(0664), modTime: time.Unix(1662647306, 0)}
info := bindataFileInfo{name: "1658236268_add_discord_message_authors_table.up.sql", size: 191, mode: os.FileMode(0644), modTime: time.Unix(1662342446, 0)}
a := &asset{bytes: bytes, info: info, digest: [32]uint8{0x3d, 0xb7, 0xdb, 0x79, 0x1, 0x15, 0xe7, 0x76, 0x5d, 0x22, 0x54, 0x82, 0x9a, 0xbe, 0x24, 0xc1, 0x82, 0xcf, 0x67, 0x91, 0x53, 0xcc, 0xac, 0x74, 0x18, 0x61, 0x69, 0x68, 0x19, 0xca, 0x2b, 0xa8}}
return a, nil
}
@ -1226,7 +1227,7 @@ func _1659619997_add_discord_messages_tableUpSql() (*asset, error) {
return nil, err
}
info := bindataFileInfo{name: "1659619997_add_discord_messages_table.up.sql", size: 371, mode: os.FileMode(0664), modTime: time.Unix(1662647306, 0)}
info := bindataFileInfo{name: "1659619997_add_discord_messages_table.up.sql", size: 371, mode: os.FileMode(0644), modTime: time.Unix(1662342446, 0)}
a := &asset{bytes: bytes, info: info, digest: [32]uint8{0xde, 0x12, 0x9c, 0x96, 0xe2, 0x42, 0x3f, 0x94, 0x62, 0xc2, 0x76, 0xab, 0x3b, 0x4c, 0x85, 0x36, 0x48, 0xcc, 0x73, 0x60, 0x93, 0x5a, 0xd6, 0x7, 0xd6, 0x0, 0xee, 0x1b, 0x1e, 0x34, 0x58, 0x99}}
return a, nil
}
@ -1246,7 +1247,7 @@ func _1660226788_create_chat_identity_social_linksUpSql() (*asset, error) {
return nil, err
}
info := bindataFileInfo{name: "1660226788_create_chat_identity_social_links.up.sql", size: 318, mode: os.FileMode(0664), modTime: time.Unix(1662647306, 0)}
info := bindataFileInfo{name: "1660226788_create_chat_identity_social_links.up.sql", size: 318, mode: os.FileMode(0644), modTime: time.Unix(1662342446, 0)}
a := &asset{bytes: bytes, info: info, digest: [32]uint8{0x3c, 0x76, 0x40, 0xe9, 0x85, 0xc4, 0x38, 0xf8, 0xe5, 0x5d, 0xe8, 0x13, 0x46, 0x1b, 0xc, 0x1, 0xe9, 0x2f, 0x74, 0xd1, 0x79, 0x59, 0xa4, 0xdb, 0x4a, 0x4a, 0xf4, 0x98, 0x58, 0x3c, 0x57, 0xd3}}
return a, nil
}
@ -1266,7 +1267,7 @@ func _1660226789_add_walletconnectsessions_tableUpSql() (*asset, error) {
return nil, err
}
info := bindataFileInfo{name: "1660226789_add_walletconnectsessions_table.up.sql", size: 215, mode: os.FileMode(0664), modTime: time.Unix(1662647306, 0)}
info := bindataFileInfo{name: "1660226789_add_walletconnectsessions_table.up.sql", size: 215, mode: os.FileMode(0644), modTime: time.Unix(1662342446, 0)}
a := &asset{bytes: bytes, info: info, digest: [32]uint8{0xf8, 0x5c, 0x72, 0x2, 0xed, 0x36, 0x19, 0x91, 0x4d, 0x1a, 0xc1, 0xab, 0x84, 0xfa, 0x41, 0xb1, 0x46, 0xa5, 0xdb, 0x3f, 0x76, 0x47, 0xd3, 0x75, 0x3c, 0x6a, 0x8e, 0x78, 0xe6, 0x41, 0xdc, 0x7f}}
return a, nil
}
@ -1286,7 +1287,7 @@ func _1661242854_add_communities_requests_to_leaveUpSql() (*asset, error) {
return nil, err
}
info := bindataFileInfo{name: "1661242854_add_communities_requests_to_leave.up.sql", size: 204, mode: os.FileMode(0664), modTime: time.Unix(1662647306, 0)}
info := bindataFileInfo{name: "1661242854_add_communities_requests_to_leave.up.sql", size: 204, mode: os.FileMode(0644), modTime: time.Unix(1662342446, 0)}
a := &asset{bytes: bytes, info: info, digest: [32]uint8{0x49, 0x2e, 0x7d, 0x14, 0xef, 0x6e, 0x95, 0x4b, 0x6, 0x70, 0x2e, 0xd1, 0xf6, 0x59, 0xf9, 0xe, 0x56, 0xa, 0x9c, 0x80, 0x18, 0xca, 0xb9, 0x49, 0x19, 0xf, 0x89, 0x94, 0x36, 0x6d, 0x93, 0x9a}}
return a, nil
}
@ -1306,7 +1307,7 @@ func _1662044232_add_chat_imageUpSql() (*asset, error) {
return nil, err
}
info := bindataFileInfo{name: "1662044232_add_chat_image.up.sql", size: 49, mode: os.FileMode(0664), modTime: time.Unix(1662722310, 0)}
info := bindataFileInfo{name: "1662044232_add_chat_image.up.sql", size: 49, mode: os.FileMode(0644), modTime: time.Unix(1662342446, 0)}
a := &asset{bytes: bytes, info: info, digest: [32]uint8{0xb3, 0x74, 0xdf, 0x50, 0x79, 0x73, 0x9e, 0xd0, 0xff, 0xa4, 0xd3, 0x87, 0xc3, 0x48, 0x31, 0x6c, 0xdf, 0xa6, 0x20, 0x85, 0xe6, 0x4e, 0x19, 0x9d, 0xef, 0xcc, 0x84, 0x2b, 0x5d, 0x44, 0x34, 0x6}}
return a, nil
}
@ -1326,7 +1327,7 @@ func _1662106895_add_chat_first_message_timestampUpSql() (*asset, error) {
return nil, err
}
info := bindataFileInfo{name: "1662106895_add_chat_first_message_timestamp.up.sql", size: 113, mode: os.FileMode(0664), modTime: time.Unix(1662722310, 0)}
info := bindataFileInfo{name: "1662106895_add_chat_first_message_timestamp.up.sql", size: 113, mode: os.FileMode(0644), modTime: time.Unix(1663556979, 0)}
a := &asset{bytes: bytes, info: info, digest: [32]uint8{0x8b, 0x55, 0x74, 0xfa, 0xf5, 0x51, 0x85, 0x19, 0xfd, 0xfb, 0x6, 0x79, 0x4d, 0x1d, 0xd, 0x3, 0x46, 0x66, 0x34, 0x1e, 0xce, 0x91, 0x21, 0x29, 0xf6, 0x71, 0xe7, 0x31, 0x39, 0x8f, 0x9d, 0x5}}
return a, nil
}
@ -1346,11 +1347,31 @@ func _1662723928_add_discord_author_image_fieldsUpSql() (*asset, error) {
return nil, err
}
info := bindataFileInfo{name: "1662723928_add_discord_author_image_fields.up.sql", size: 75, mode: os.FileMode(0664), modTime: time.Unix(1663585109, 0)}
info := bindataFileInfo{name: "1662723928_add_discord_author_image_fields.up.sql", size: 75, mode: os.FileMode(0644), modTime: time.Unix(1664174288, 0)}
a := &asset{bytes: bytes, info: info, digest: [32]uint8{0x1e, 0x5b, 0x48, 0x57, 0x98, 0x55, 0x9a, 0xf1, 0x75, 0xf7, 0xb5, 0x41, 0x5e, 0x96, 0xc5, 0xce, 0xfc, 0x30, 0x5c, 0x15, 0x35, 0x9e, 0x4e, 0x4a, 0x3b, 0x38, 0x42, 0xc4, 0x27, 0x3c, 0x87, 0xbf}}
return a, nil
}
var __1664195977_add_deleted_for_mesUpSql = []byte("\x1f\x8b\x08\x00\x00\x00\x00\x00\x00\xff\x7c\x8e\x41\x6a\xc3\x30\x10\x45\xf7\x3a\xc5\x5f\xda\x90\x1b\x64\x35\xb1\x26\xad\xe9\x44\x2a\xaa\x5c\x9a\x95\x28\xd6\xb4\x98\xa6\x18\xa2\xf8\xfe\xa5\x60\x30\x2e\x6e\xd6\x6f\xde\xfc\x47\x12\x39\x20\xd2\x41\x18\x53\xd1\x6b\xfa\xd6\x52\xde\x3f\xb5\x80\xac\x45\xe3\xa5\x3b\x39\x64\xbd\xe8\x4d\x73\xfa\x18\x7f\x39\x0e\xde\x0b\x2c\x1f\xa9\x93\x88\x23\xc9\x0b\xef\x8d\x69\x02\x53\xe4\xad\x4f\x69\xad\x17\x54\x06\xe8\x2f\x63\xff\x85\xd6\x45\x7e\xe0\x00\xe7\x23\x5c\x27\xb2\x33\xc0\xac\xa5\x21\xe3\x95\x42\xf3\x48\x6b\x5c\xc6\xe9\xda\xeb\x26\xfa\xc7\x78\x0e\xed\x89\xc2\x19\x4f\x7c\xae\x86\x5c\x9b\x7a\xa9\x6d\x9d\xe5\xb7\xfb\xb5\x69\xe9\x49\xf3\xb6\x77\x7f\x14\xcd\xc3\xad\x54\xcb\xe1\x6e\xae\xac\xf7\xe6\x27\x00\x00\xff\xff\x2f\xc2\xbe\x8e\x60\x01\x00\x00")
func _1664195977_add_deleted_for_mesUpSqlBytes() ([]byte, error) {
return bindataRead(
__1664195977_add_deleted_for_mesUpSql,
"1664195977_add_deleted_for_mes.up.sql",
)
}
func _1664195977_add_deleted_for_mesUpSql() (*asset, error) {
bytes, err := _1664195977_add_deleted_for_mesUpSqlBytes()
if err != nil {
return nil, err
}
info := bindataFileInfo{name: "1664195977_add_deleted_for_mes.up.sql", size: 352, mode: os.FileMode(0644), modTime: time.Unix(1664195981, 0)}
a := &asset{bytes: bytes, info: info, digest: [32]uint8{0x7d, 0x9d, 0x13, 0x9, 0xaa, 0x44, 0x14, 0x93, 0xe2, 0xf5, 0x53, 0xb7, 0x79, 0xa8, 0x18, 0xf0, 0x6c, 0xa4, 0x9c, 0x73, 0xc1, 0xaa, 0xc5, 0x2e, 0xc5, 0x41, 0xd7, 0x24, 0xb0, 0xd7, 0xb8, 0xdf}}
return a, nil
}
var _readmeMd = []byte("\x1f\x8b\x08\x00\x00\x00\x00\x00\x00\xff\x54\x91\xc1\xce\xd3\x30\x10\x84\xef\x7e\x8a\x91\x7a\x01\xa9\x2a\x8f\xc0\x0d\x71\x82\x03\x48\x1c\xc9\x36\x9e\x36\x96\x1c\x6f\xf0\xae\x93\xe6\xed\x91\xa3\xc2\xdf\xff\x66\xed\xd8\x33\xdf\x78\x4f\xa7\x13\xbe\xea\x06\x57\x6c\x35\x39\x31\xa7\x7b\x15\x4f\x5a\xec\x73\x08\xbf\x08\x2d\x79\x7f\x4a\x43\x5b\x86\x17\xfd\x8c\x21\xea\x56\x5e\x47\x90\x4a\x14\x75\x48\xde\x64\x37\x2c\x6a\x96\xae\x99\x48\x05\xf6\x27\x77\x13\xad\x08\xae\x8a\x51\xe7\x25\xf3\xf1\xa9\x9f\xf9\x58\x58\x2c\xad\xbc\xe0\x8b\x56\xf0\x21\x5d\xeb\x4c\x95\xb3\xae\x84\x60\xd4\xdc\xe6\x82\x5d\x1b\x36\x6d\x39\x62\x92\xf5\xb8\x11\xdb\x92\xd3\x28\xce\xe0\x13\xe1\x72\xcd\x3c\x63\xd4\x65\x87\xae\xac\xe8\xc3\x28\x2e\x67\x44\x66\x3a\x21\x25\xa2\x72\xac\x14\x67\xbc\x84\x9f\x53\x32\x8c\x52\x70\x25\x56\xd6\xfd\x8d\x05\x37\xad\x30\x9d\x9f\xa6\x86\x0f\xcd\x58\x7f\xcf\x34\x93\x3b\xed\x90\x9f\xa4\x1f\xcf\x30\x85\x4d\x07\x58\xaf\x7f\x25\xc4\x9d\xf3\x72\x64\x84\xd0\x7f\xf9\x9b\x3a\x2d\x84\xef\x85\x48\x66\x8d\xd8\x88\x9b\x8c\x8c\x98\x5b\xf6\x74\x14\x4e\x33\x0d\xc9\xe0\x93\x38\xda\x12\xc5\x69\xbd\xe4\xf0\x2e\x7a\x78\x07\x1c\xfe\x13\x9f\x91\x29\x31\x95\x7b\x7f\x62\x59\x37\xb4\xe5\x5e\x25\xfe\x33\xee\xd5\x53\x71\xd6\xda\x3a\xd8\xcb\xde\x2e\xf8\xa1\x90\x55\x53\x0c\xc7\xaa\x0d\xe9\x76\x14\x29\x1c\x7b\x68\xdd\x2f\xe1\x6f\x00\x00\x00\xff\xff\x3c\x0a\xc2\xfe\x2a\x02\x00\x00")
func readmeMdBytes() ([]byte, error) {
@ -1366,7 +1387,7 @@ func readmeMd() (*asset, error) {
return nil, err
}
info := bindataFileInfo{name: "README.md", size: 554, mode: os.FileMode(0664), modTime: time.Unix(1662647306, 0)}
info := bindataFileInfo{name: "README.md", size: 554, mode: os.FileMode(0644), modTime: time.Unix(1658906042, 0)}
a := &asset{bytes: bytes, info: info, digest: [32]uint8{0x1c, 0x6e, 0xfb, 0xcc, 0x81, 0x94, 0x4d, 0x8c, 0xa0, 0x3b, 0x5, 0xb0, 0x18, 0xd6, 0xbb, 0xb3, 0x79, 0xc8, 0x8f, 0xff, 0xc1, 0x10, 0xf9, 0xf, 0x20, 0x1b, 0x4a, 0x74, 0x96, 0x42, 0xd7, 0xa8}}
return a, nil
}
@ -1386,7 +1407,7 @@ func docGo() (*asset, error) {
return nil, err
}
info := bindataFileInfo{name: "doc.go", size: 850, mode: os.FileMode(0664), modTime: time.Unix(1662647306, 0)}
info := bindataFileInfo{name: "doc.go", size: 850, mode: os.FileMode(0644), modTime: time.Unix(1658906042, 0)}
a := &asset{bytes: bytes, info: info, digest: [32]uint8{0xa0, 0xcc, 0x41, 0xe1, 0x61, 0x12, 0x97, 0xe, 0x36, 0x8c, 0xa7, 0x9e, 0xe0, 0x6e, 0x59, 0x9e, 0xee, 0xd5, 0x4a, 0xcf, 0x1e, 0x60, 0xd6, 0xc3, 0x3a, 0xc9, 0x6c, 0xf2, 0x86, 0x5a, 0xb4, 0x1e}}
return a, nil
}
@ -1604,6 +1625,8 @@ var _bindata = map[string]func() (*asset, error){
"1662723928_add_discord_author_image_fields.up.sql": _1662723928_add_discord_author_image_fieldsUpSql,
"1664195977_add_deleted_for_mes.up.sql": _1664195977_add_deleted_for_mesUpSql,
"README.md": readmeMd,
"doc.go": docGo,
@ -1711,6 +1734,7 @@ var _bintree = &bintree{nil, map[string]*bintree{
"1662044232_add_chat_image.up.sql": &bintree{_1662044232_add_chat_imageUpSql, map[string]*bintree{}},
"1662106895_add_chat_first_message_timestamp.up.sql": &bintree{_1662106895_add_chat_first_message_timestampUpSql, map[string]*bintree{}},
"1662723928_add_discord_author_image_fields.up.sql": &bintree{_1662723928_add_discord_author_image_fieldsUpSql, map[string]*bintree{}},
"1664195977_add_deleted_for_mes.up.sql": &bintree{_1664195977_add_deleted_for_mesUpSql, map[string]*bintree{}},
"README.md": &bintree{readmeMd, map[string]*bintree{}},
"doc.go": &bintree{docGo, map[string]*bintree{}},
}}

View File

@ -0,0 +1,11 @@
ALTER TABLE user_messages ADD COLUMN deleted_for_me BOOL DEFAULT FALSE;
CREATE TABLE user_messages_deleted_for_mes (
clock INTEGER NOT NULL,
message_id VARCHAR NOT NULL,
source VARCHAR NOT NULL,
id VARCHAR NOT NULL,
PRIMARY KEY(id)
);
CREATE INDEX user_messages_deleted_for_mes_message_id_source ON user_messages_edits(message_id, source);

View File

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

View File

@ -71,5 +71,6 @@ message ApplicationMetadataMessage {
CONTACT_VERIFICATION_TRUSTED = 55;
SYNC_CONTACT_REQUEST_DECISION = 56;
COMMUNITY_REQUEST_TO_LEAVE = 57;
SYNC_DELETE_FOR_ME_MESSAGE = 58;
}
}

View File

@ -105,7 +105,7 @@ func (x ChatMessage_ContentType) String() string {
}
func (ChatMessage_ContentType) EnumDescriptor() ([]byte, []int) {
return fileDescriptor_263952f55fd35689, []int{8, 0}
return fileDescriptor_263952f55fd35689, []int{9, 0}
}
type StickerMessage struct {
@ -412,6 +412,53 @@ func (m *DeleteMessage) GetMessageType() MessageType {
return MessageType_UNKNOWN_MESSAGE_TYPE
}
type DeleteForMeMessage struct {
Clock uint64 `protobuf:"varint,1,opt,name=clock,proto3" json:"clock,omitempty"`
MessageId string `protobuf:"bytes,2,opt,name=message_id,json=messageId,proto3" json:"message_id,omitempty"`
XXX_NoUnkeyedLiteral struct{} `json:"-"`
XXX_unrecognized []byte `json:"-"`
XXX_sizecache int32 `json:"-"`
}
func (m *DeleteForMeMessage) Reset() { *m = DeleteForMeMessage{} }
func (m *DeleteForMeMessage) String() string { return proto.CompactTextString(m) }
func (*DeleteForMeMessage) ProtoMessage() {}
func (*DeleteForMeMessage) Descriptor() ([]byte, []int) {
return fileDescriptor_263952f55fd35689, []int{5}
}
func (m *DeleteForMeMessage) XXX_Unmarshal(b []byte) error {
return xxx_messageInfo_DeleteForMeMessage.Unmarshal(m, b)
}
func (m *DeleteForMeMessage) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
return xxx_messageInfo_DeleteForMeMessage.Marshal(b, m, deterministic)
}
func (m *DeleteForMeMessage) XXX_Merge(src proto.Message) {
xxx_messageInfo_DeleteForMeMessage.Merge(m, src)
}
func (m *DeleteForMeMessage) XXX_Size() int {
return xxx_messageInfo_DeleteForMeMessage.Size(m)
}
func (m *DeleteForMeMessage) XXX_DiscardUnknown() {
xxx_messageInfo_DeleteForMeMessage.DiscardUnknown(m)
}
var xxx_messageInfo_DeleteForMeMessage proto.InternalMessageInfo
func (m *DeleteForMeMessage) GetClock() uint64 {
if m != nil {
return m.Clock
}
return 0
}
func (m *DeleteForMeMessage) GetMessageId() string {
if m != nil {
return m.MessageId
}
return ""
}
type DiscordMessage struct {
Id string `protobuf:"bytes,1,opt,name=id,proto3" json:"id,omitempty"`
Type string `protobuf:"bytes,2,opt,name=type,proto3" json:"type,omitempty"`
@ -429,7 +476,7 @@ func (m *DiscordMessage) Reset() { *m = DiscordMessage{} }
func (m *DiscordMessage) String() string { return proto.CompactTextString(m) }
func (*DiscordMessage) ProtoMessage() {}
func (*DiscordMessage) Descriptor() ([]byte, []int) {
return fileDescriptor_263952f55fd35689, []int{5}
return fileDescriptor_263952f55fd35689, []int{6}
}
func (m *DiscordMessage) XXX_Unmarshal(b []byte) error {
@ -516,7 +563,7 @@ func (m *DiscordMessageAuthor) Reset() { *m = DiscordMessageAuthor{} }
func (m *DiscordMessageAuthor) String() string { return proto.CompactTextString(m) }
func (*DiscordMessageAuthor) ProtoMessage() {}
func (*DiscordMessageAuthor) Descriptor() ([]byte, []int) {
return fileDescriptor_263952f55fd35689, []int{6}
return fileDescriptor_263952f55fd35689, []int{7}
}
func (m *DiscordMessageAuthor) XXX_Unmarshal(b []byte) error {
@ -599,7 +646,7 @@ func (m *DiscordMessageReference) Reset() { *m = DiscordMessageReference
func (m *DiscordMessageReference) String() string { return proto.CompactTextString(m) }
func (*DiscordMessageReference) ProtoMessage() {}
func (*DiscordMessageReference) Descriptor() ([]byte, []int) {
return fileDescriptor_263952f55fd35689, []int{7}
return fileDescriptor_263952f55fd35689, []int{8}
}
func (m *DiscordMessageReference) XXX_Unmarshal(b []byte) error {
@ -644,8 +691,8 @@ func (m *DiscordMessageReference) GetGuildId() string {
type ChatMessage struct {
// Lamport timestamp of the chat message
Clock uint64 `protobuf:"varint,1,opt,name=clock,proto3" json:"clock,omitempty"`
// Unix timestamps in milliseconds, currently not used as we use whisper as more reliable, but here
// so that we don't rely on it
// Unix timestamps in milliseconds, currently not used as we use whisper as
// more reliable, but here so that we don't rely on it
Timestamp uint64 `protobuf:"varint,2,opt,name=timestamp,proto3" json:"timestamp,omitempty"`
// Text of the message
Text string `protobuf:"bytes,3,opt,name=text,proto3" json:"text,omitempty"`
@ -656,13 +703,15 @@ type ChatMessage struct {
// Chat id, this field is symmetric for public-chats and private group chats,
// but asymmetric in case of one-to-ones, as the sender will use the chat-id
// of the received, while the receiver will use the chat-id of the sender.
// Probably should be the concatenation of sender-pk & receiver-pk in alphabetical order
// Probably should be the concatenation of sender-pk & receiver-pk in
// alphabetical order
ChatId string `protobuf:"bytes,6,opt,name=chat_id,json=chatId,proto3" json:"chat_id,omitempty"`
// The type of message (public/one-to-one/private-group-chat)
MessageType MessageType `protobuf:"varint,7,opt,name=message_type,json=messageType,proto3,enum=protobuf.MessageType" json:"message_type,omitempty"`
// The type of the content of the message
ContentType ChatMessage_ContentType `protobuf:"varint,8,opt,name=content_type,json=contentType,proto3,enum=protobuf.ChatMessage_ContentType" json:"content_type,omitempty"`
// Types that are valid to be assigned to Payload:
//
// *ChatMessage_Sticker
// *ChatMessage_Image
// *ChatMessage_Audio
@ -685,7 +734,7 @@ func (m *ChatMessage) Reset() { *m = ChatMessage{} }
func (m *ChatMessage) String() string { return proto.CompactTextString(m) }
func (*ChatMessage) ProtoMessage() {}
func (*ChatMessage) Descriptor() ([]byte, []int) {
return fileDescriptor_263952f55fd35689, []int{8}
return fileDescriptor_263952f55fd35689, []int{9}
}
func (m *ChatMessage) XXX_Unmarshal(b []byte) error {
@ -896,7 +945,7 @@ func (m *ContactRequestSignature) Reset() { *m = ContactRequestSignature
func (m *ContactRequestSignature) String() string { return proto.CompactTextString(m) }
func (*ContactRequestSignature) ProtoMessage() {}
func (*ContactRequestSignature) Descriptor() ([]byte, []int) {
return fileDescriptor_263952f55fd35689, []int{9}
return fileDescriptor_263952f55fd35689, []int{10}
}
func (m *ContactRequestSignature) XXX_Unmarshal(b []byte) error {
@ -939,6 +988,7 @@ func init() {
proto.RegisterType((*AudioMessage)(nil), "protobuf.AudioMessage")
proto.RegisterType((*EditMessage)(nil), "protobuf.EditMessage")
proto.RegisterType((*DeleteMessage)(nil), "protobuf.DeleteMessage")
proto.RegisterType((*DeleteForMeMessage)(nil), "protobuf.DeleteForMeMessage")
proto.RegisterType((*DiscordMessage)(nil), "protobuf.DiscordMessage")
proto.RegisterType((*DiscordMessageAuthor)(nil), "protobuf.DiscordMessageAuthor")
proto.RegisterType((*DiscordMessageReference)(nil), "protobuf.DiscordMessageReference")
@ -951,74 +1001,75 @@ func init() {
}
var fileDescriptor_263952f55fd35689 = []byte{
// 1101 bytes of a gzipped FileDescriptorProto
0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0x8c, 0x56, 0xcb, 0x6e, 0xdb, 0x46,
0x17, 0x36, 0x65, 0xdd, 0x78, 0x28, 0xcb, 0xfc, 0x27, 0xfe, 0x63, 0x36, 0x75, 0x6d, 0x87, 0x08,
0x10, 0xad, 0x54, 0x20, 0x4d, 0x8b, 0x00, 0x5d, 0x14, 0x8c, 0x44, 0xd8, 0x6c, 0xaa, 0x4b, 0x86,
0x54, 0x5b, 0x77, 0x43, 0x4c, 0xc8, 0xb1, 0x45, 0x58, 0x24, 0x55, 0x92, 0x0a, 0xea, 0x07, 0xe8,
0xba, 0x4f, 0xd2, 0x6d, 0xb7, 0x7d, 0x9b, 0x3e, 0x40, 0x9f, 0xa0, 0x98, 0x21, 0x47, 0xa4, 0x04,
0xcb, 0xf1, 0x8a, 0x73, 0xce, 0x9c, 0x1b, 0xbf, 0xf3, 0x9d, 0x99, 0x01, 0xe4, 0xcd, 0x49, 0xe6,
0x86, 0x34, 0x4d, 0xc9, 0x0d, 0xed, 0x2f, 0x93, 0x38, 0x8b, 0x51, 0x9b, 0x7f, 0x3e, 0xac, 0xae,
0x9f, 0x29, 0x34, 0x5a, 0x85, 0x69, 0xae, 0xd6, 0xdf, 0x40, 0xd7, 0xce, 0x02, 0xef, 0x96, 0x26,
0xa3, 0xdc, 0x1c, 0x21, 0xa8, 0xcf, 0x49, 0x3a, 0xd7, 0xa4, 0x73, 0xa9, 0x27, 0x63, 0xbe, 0x66,
0xba, 0x25, 0xf1, 0x6e, 0xb5, 0xda, 0xb9, 0xd4, 0x6b, 0x60, 0xbe, 0xd6, 0xdf, 0x43, 0xc7, 0x0a,
0xc9, 0x0d, 0x15, 0x7e, 0x1a, 0xb4, 0x96, 0xe4, 0x6e, 0x11, 0x13, 0x9f, 0xbb, 0x76, 0xb0, 0x10,
0xd1, 0x4b, 0xa8, 0x67, 0x77, 0x4b, 0xca, 0xbd, 0xbb, 0xaf, 0x9e, 0xf4, 0x45, 0x25, 0x7d, 0xee,
0xef, 0xdc, 0x2d, 0x29, 0xe6, 0x06, 0xfa, 0x5f, 0x12, 0x74, 0x8c, 0x95, 0x1f, 0xc4, 0x9f, 0x8e,
0xf9, 0x7a, 0x23, 0xe6, 0x79, 0x19, 0xb3, 0xea, 0x9f, 0x0b, 0x65, 0x02, 0x74, 0x06, 0x8a, 0xbf,
0x4a, 0x48, 0x16, 0xc4, 0x91, 0x1b, 0xa6, 0xda, 0xfe, 0xb9, 0xd4, 0xab, 0x63, 0x10, 0xaa, 0x51,
0xaa, 0x7f, 0x0d, 0xf2, 0xda, 0x07, 0x3d, 0x05, 0x34, 0x1b, 0xbf, 0x1b, 0x4f, 0x7e, 0x1a, 0xbb,
0xc6, 0x6c, 0x68, 0x4d, 0x5c, 0xe7, 0x6a, 0x6a, 0xaa, 0x7b, 0xa8, 0x05, 0xfb, 0x86, 0x31, 0x50,
0x25, 0xbe, 0x18, 0x61, 0xb5, 0xa6, 0xff, 0x2d, 0x81, 0x62, 0xfa, 0x41, 0x26, 0xea, 0x3e, 0x82,
0x86, 0xb7, 0x88, 0xbd, 0x5b, 0x5e, 0x75, 0x1d, 0xe7, 0x02, 0x43, 0x31, 0xa3, 0xbf, 0x65, 0xbc,
0x66, 0x19, 0xf3, 0x35, 0x3a, 0x86, 0x16, 0x6f, 0x56, 0xe0, 0xf3, 0x6a, 0x64, 0xdc, 0x64, 0xa2,
0xe5, 0xa3, 0x2f, 0x00, 0x8a, 0x06, 0xb2, 0xbd, 0x3a, 0xdf, 0x93, 0x0b, 0x8d, 0xe5, 0xb3, 0x0c,
0x37, 0x09, 0x89, 0x32, 0xad, 0xc1, 0x71, 0xc9, 0x05, 0xf4, 0x06, 0x3a, 0xc2, 0x89, 0xa3, 0xd3,
0xe4, 0xe8, 0xfc, 0xbf, 0x44, 0xa7, 0x28, 0x90, 0x43, 0xa2, 0x84, 0xa5, 0xa0, 0xff, 0x29, 0xc1,
0xc1, 0x90, 0x2e, 0x68, 0x46, 0x1f, 0xfe, 0x87, 0x4a, 0xbd, 0xb5, 0x07, 0xea, 0xdd, 0xdf, 0x59,
0x6f, 0xfd, 0xa1, 0x7a, 0x1b, 0x8f, 0xae, 0xf7, 0x8f, 0x1a, 0x74, 0x87, 0x41, 0xea, 0xc5, 0x89,
0x2f, 0x0a, 0xee, 0x42, 0x2d, 0xf0, 0x0b, 0xda, 0xd6, 0x02, 0x9f, 0xc3, 0x2d, 0x28, 0x22, 0x17,
0x04, 0x38, 0x01, 0x39, 0x0b, 0x42, 0x9a, 0x66, 0x24, 0x5c, 0x8a, 0x22, 0xd7, 0x0a, 0xd4, 0x83,
0xc3, 0xb5, 0xc0, 0xda, 0x49, 0x05, 0xf0, 0xdb, 0x6a, 0x46, 0x4c, 0x2f, 0x8e, 0x32, 0x5a, 0x34,
0x40, 0xc6, 0x42, 0x44, 0xdf, 0x40, 0x93, 0xac, 0xb2, 0x79, 0x9c, 0x70, 0xf0, 0x95, 0x57, 0xa7,
0xe5, 0xcf, 0x6c, 0xd6, 0x6b, 0x70, 0x2b, 0x5c, 0x58, 0xa3, 0xef, 0x40, 0x4e, 0xe8, 0x35, 0x4d,
0x68, 0xe4, 0x51, 0xad, 0xc5, 0x5d, 0x9f, 0xef, 0x72, 0xc5, 0xc2, 0x10, 0x97, 0x3e, 0xfa, 0x3f,
0x12, 0x1c, 0xdd, 0x97, 0xe1, 0x3e, 0x5c, 0x22, 0x12, 0xae, 0x71, 0x61, 0x6b, 0xf4, 0x02, 0x0e,
0xfc, 0x20, 0xf5, 0x92, 0x20, 0x0c, 0x22, 0x92, 0xc5, 0x49, 0x81, 0xcd, 0xa6, 0x12, 0x3d, 0x83,
0x76, 0x14, 0x78, 0xb7, 0xdc, 0x3b, 0x07, 0x66, 0x2d, 0x33, 0x64, 0xc9, 0x47, 0x92, 0x91, 0x64,
0x96, 0x2c, 0x0a, 0x4c, 0x4a, 0x05, 0xea, 0x03, 0xca, 0x05, 0x3e, 0xf2, 0xd3, 0x62, 0xa6, 0x9b,
0x9c, 0x0b, 0xf7, 0xec, 0xb0, 0x4c, 0x8b, 0xd8, 0x23, 0x0b, 0x16, 0xac, 0x95, 0x67, 0x12, 0xb2,
0x1e, 0xc3, 0xf1, 0x0e, 0x38, 0x58, 0x11, 0x6b, 0xca, 0x15, 0x7f, 0x5c, 0xe1, 0xe0, 0x09, 0xc8,
0xde, 0x9c, 0x44, 0x11, 0x5d, 0x58, 0x82, 0xbd, 0xa5, 0x82, 0xb5, 0xf4, 0x66, 0x15, 0x2c, 0x7c,
0x4b, 0xb0, 0x57, 0x88, 0xfa, 0xbf, 0x6d, 0x50, 0x06, 0x73, 0xf2, 0x89, 0xe9, 0xde, 0xa0, 0x56,
0x8d, 0xef, 0x54, 0xa8, 0x25, 0x66, 0x7f, 0xbf, 0x32, 0xfb, 0x67, 0xa0, 0x24, 0x34, 0x5d, 0xc6,
0x51, 0x4a, 0xdd, 0x2c, 0x2e, 0x10, 0x05, 0xa1, 0x72, 0x62, 0xf4, 0x19, 0xb4, 0x69, 0x94, 0xba,
0x1c, 0xef, 0x82, 0x66, 0x34, 0x4a, 0xc7, 0x0c, 0xee, 0xca, 0x1c, 0x36, 0x37, 0xe6, 0x70, 0x7b,
0xa4, 0x5a, 0x8f, 0x1d, 0x29, 0x34, 0x84, 0x4e, 0x41, 0xe2, 0xdc, 0xb3, 0xcd, 0x3d, 0x2b, 0x24,
0xac, 0x60, 0xd0, 0x1f, 0xe4, 0x96, 0x79, 0x14, 0xaf, 0x14, 0xd0, 0x6b, 0x68, 0xa5, 0xf9, 0x85,
0xa2, 0xc9, 0x9c, 0xc5, 0x5a, 0x19, 0x60, 0xf3, 0xa6, 0xb9, 0xdc, 0xc3, 0xc2, 0x14, 0xf5, 0xa1,
0x11, 0xb0, 0xfe, 0x6b, 0xc0, 0x7d, 0x9e, 0x6e, 0xdd, 0x11, 0xa5, 0x47, 0x6e, 0xc6, 0xec, 0x09,
0x3b, 0xa7, 0x35, 0x65, 0xdb, 0xbe, 0x7a, 0xfe, 0x33, 0x7b, 0x6e, 0x86, 0x4e, 0x41, 0xf6, 0xe2,
0x30, 0x5c, 0x45, 0x41, 0x76, 0xa7, 0x75, 0x18, 0xed, 0x2e, 0xf7, 0x70, 0xa9, 0x42, 0x03, 0x38,
0xf4, 0x73, 0x4e, 0x89, 0x6b, 0x53, 0xf3, 0xb6, 0xab, 0xdf, 0x24, 0xdd, 0xe5, 0x1e, 0xee, 0xfa,
0x9b, 0x07, 0xd0, 0xfa, 0x8c, 0x3b, 0xa8, 0x9e, 0x71, 0xcf, 0xa1, 0xe3, 0x07, 0xe9, 0x72, 0x41,
0xee, 0xf2, 0x46, 0x76, 0x79, 0xbb, 0x94, 0x42, 0xc7, 0x9b, 0x79, 0x0d, 0xa7, 0x29, 0x83, 0x9d,
0xe1, 0x48, 0xbc, 0xcc, 0x4d, 0xe8, 0xaf, 0x2b, 0x9a, 0x66, 0x6e, 0x1a, 0xdc, 0x44, 0x24, 0x5b,
0x25, 0x54, 0x3b, 0xdc, 0x3e, 0x10, 0x06, 0xb9, 0x29, 0xce, 0x2d, 0x6d, 0x61, 0x88, 0x3f, 0x67,
0x81, 0x76, 0x6c, 0xa2, 0x08, 0xf4, 0x84, 0x7a, 0x34, 0xf8, 0x48, 0xfd, 0x07, 0x72, 0xa9, 0x8f,
0xcd, 0x75, 0x26, 0x82, 0xed, 0xca, 0xf7, 0x12, 0x0e, 0x45, 0x1a, 0x81, 0xea, 0xff, 0xce, 0xa5,
0x5e, 0x1b, 0x77, 0x0b, 0x75, 0x81, 0x9c, 0xfe, 0x7b, 0x0d, 0x94, 0x0a, 0xa3, 0x90, 0x06, 0x47,
0xe2, 0xe6, 0x1d, 0x4c, 0xc6, 0x8e, 0x39, 0x76, 0xc4, 0xdd, 0xdb, 0x05, 0x70, 0xcc, 0x9f, 0x1d,
0x77, 0xfa, 0x83, 0x61, 0x8d, 0x55, 0x09, 0x29, 0xd0, 0xb2, 0x1d, 0x6b, 0xf0, 0xce, 0xc4, 0x6a,
0x0d, 0x01, 0x34, 0x6d, 0xc7, 0x70, 0x66, 0xb6, 0xba, 0x8f, 0x64, 0x68, 0x98, 0xa3, 0xc9, 0xf7,
0x96, 0x5a, 0x47, 0xc7, 0xf0, 0xc4, 0xc1, 0xc6, 0xd8, 0x36, 0x06, 0x8e, 0x35, 0x61, 0x11, 0x47,
0x23, 0x63, 0x3c, 0x54, 0x1b, 0xa8, 0x07, 0x2f, 0xec, 0x2b, 0xdb, 0x31, 0x47, 0xee, 0xc8, 0xb4,
0x6d, 0xe3, 0xc2, 0x5c, 0x67, 0x9b, 0x62, 0xeb, 0x47, 0xc3, 0x31, 0xdd, 0x0b, 0x3c, 0x99, 0x4d,
0xd5, 0x26, 0x8b, 0x66, 0x8d, 0x8c, 0x0b, 0x53, 0x6d, 0xb1, 0x25, 0x7f, 0x0d, 0xa8, 0x6d, 0x74,
0x00, 0x32, 0x0b, 0x36, 0x1b, 0x5b, 0xce, 0x95, 0x2a, 0xb3, 0xf7, 0xc2, 0x56, 0xb8, 0x0b, 0x63,
0xaa, 0x02, 0x7a, 0x02, 0x87, 0x2c, 0xae, 0x31, 0x70, 0x5c, 0x6c, 0xbe, 0x9f, 0x99, 0xb6, 0xa3,
0x2a, 0x4c, 0x39, 0xb4, 0xec, 0xc1, 0x04, 0x0f, 0x85, 0xb5, 0xda, 0x79, 0x2b, 0xaf, 0xdf, 0x3b,
0xfa, 0x0c, 0x8e, 0x77, 0xc1, 0x7a, 0x02, 0x72, 0xd9, 0xad, 0xfc, 0x5d, 0x54, 0x2a, 0x1e, 0x3e,
0x87, 0xde, 0x1e, 0xfc, 0xa2, 0xf4, 0xbf, 0xfc, 0x56, 0xb4, 0xf6, 0x43, 0x93, 0xaf, 0xbe, 0xfa,
0x2f, 0x00, 0x00, 0xff, 0xff, 0xcc, 0x43, 0x0c, 0xc6, 0x32, 0x0a, 0x00, 0x00,
// 1119 bytes of a gzipped FileDescriptorProto
0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0x8c, 0x56, 0xcd, 0x6e, 0xdb, 0x46,
0x10, 0xb6, 0x64, 0xfd, 0x71, 0x28, 0xcb, 0xec, 0x26, 0x8d, 0xd9, 0x34, 0xb5, 0x1d, 0x22, 0x40,
0x74, 0x52, 0x81, 0x34, 0x2d, 0x02, 0xf4, 0x50, 0x30, 0x12, 0x6b, 0xb3, 0xa9, 0x7e, 0xb2, 0xa4,
0xda, 0xba, 0x17, 0x62, 0x43, 0xae, 0x2d, 0xc2, 0x22, 0xa9, 0x92, 0x54, 0x50, 0x3f, 0x40, 0xcf,
0x7d, 0x92, 0x5e, 0x7b, 0xed, 0xdb, 0xf4, 0x01, 0xfa, 0x04, 0xc5, 0x2e, 0xb9, 0x24, 0x25, 0x58,
0xb6, 0x4f, 0xda, 0x99, 0x9d, 0x99, 0xfd, 0xf4, 0xcd, 0xb7, 0xb3, 0x04, 0xe4, 0x2e, 0x48, 0xea,
0x04, 0x34, 0x49, 0xc8, 0x15, 0x1d, 0xac, 0xe2, 0x28, 0x8d, 0x50, 0x87, 0xff, 0x7c, 0x58, 0x5f,
0x3e, 0x95, 0x69, 0xb8, 0x0e, 0x92, 0xcc, 0xad, 0xbd, 0x81, 0x9e, 0x95, 0xfa, 0xee, 0x35, 0x8d,
0xc7, 0x59, 0x38, 0x42, 0xd0, 0x58, 0x90, 0x64, 0xa1, 0xd6, 0x4e, 0x6b, 0x7d, 0x09, 0xf3, 0x35,
0xf3, 0xad, 0x88, 0x7b, 0xad, 0xd6, 0x4f, 0x6b, 0xfd, 0x26, 0xe6, 0x6b, 0xed, 0x3d, 0x74, 0xcd,
0x80, 0x5c, 0x51, 0x91, 0xa7, 0x42, 0x7b, 0x45, 0x6e, 0x96, 0x11, 0xf1, 0x78, 0x6a, 0x17, 0x0b,
0x13, 0xbd, 0x84, 0x46, 0x7a, 0xb3, 0xa2, 0x3c, 0xbb, 0xf7, 0xea, 0xd1, 0x40, 0x20, 0x19, 0xf0,
0x7c, 0xfb, 0x66, 0x45, 0x31, 0x0f, 0xd0, 0xfe, 0xae, 0x41, 0x57, 0x5f, 0x7b, 0x7e, 0x74, 0x7f,
0xcd, 0xd7, 0x1b, 0x35, 0x4f, 0xcb, 0x9a, 0xd5, 0xfc, 0xcc, 0x28, 0x0f, 0x40, 0x27, 0x20, 0x7b,
0xeb, 0x98, 0xa4, 0x7e, 0x14, 0x3a, 0x41, 0xa2, 0xee, 0x9f, 0xd6, 0xfa, 0x0d, 0x0c, 0xc2, 0x35,
0x4e, 0xb4, 0xaf, 0x41, 0x2a, 0x72, 0xd0, 0x13, 0x40, 0xf3, 0xc9, 0xbb, 0xc9, 0xf4, 0xe7, 0x89,
0xa3, 0xcf, 0x47, 0xe6, 0xd4, 0xb1, 0x2f, 0x66, 0x86, 0xb2, 0x87, 0xda, 0xb0, 0xaf, 0xeb, 0x43,
0xa5, 0xc6, 0x17, 0x63, 0xac, 0xd4, 0xb5, 0x7f, 0x6a, 0x20, 0x1b, 0x9e, 0x9f, 0x0a, 0xdc, 0x8f,
0xa1, 0xe9, 0x2e, 0x23, 0xf7, 0x9a, 0xa3, 0x6e, 0xe0, 0xcc, 0x60, 0x2c, 0xa6, 0xf4, 0xf7, 0x94,
0x63, 0x96, 0x30, 0x5f, 0xa3, 0x23, 0x68, 0xf3, 0x66, 0xf9, 0x1e, 0x47, 0x23, 0xe1, 0x16, 0x33,
0x4d, 0x0f, 0x7d, 0x01, 0x90, 0x37, 0x90, 0xed, 0x35, 0xf8, 0x9e, 0x94, 0x7b, 0x4c, 0x8f, 0x9d,
0x70, 0x15, 0x93, 0x30, 0x55, 0x9b, 0x9c, 0x97, 0xcc, 0x40, 0x6f, 0xa0, 0x2b, 0x92, 0x38, 0x3b,
0x2d, 0xce, 0xce, 0xa7, 0x25, 0x3b, 0x39, 0x40, 0x4e, 0x89, 0x1c, 0x94, 0x86, 0xf6, 0x57, 0x0d,
0x0e, 0x46, 0x74, 0x49, 0x53, 0x7a, 0xf7, 0x7f, 0xa8, 0xe0, 0xad, 0xdf, 0x81, 0x77, 0x7f, 0x27,
0xde, 0xc6, 0x5d, 0x78, 0x9b, 0x0f, 0xc6, 0x6b, 0x02, 0xca, 0xe0, 0x7e, 0x1f, 0xc5, 0xe3, 0x7b,
0x30, 0x6f, 0x42, 0xab, 0x6f, 0x41, 0xd3, 0xfe, 0xac, 0x43, 0x6f, 0xe4, 0x27, 0x6e, 0x14, 0x7b,
0xa2, 0x4e, 0x0f, 0xea, 0xbe, 0x97, 0xdf, 0x80, 0xba, 0xef, 0xf1, 0xce, 0x09, 0xb5, 0x49, 0xb9,
0x96, 0x9e, 0x81, 0x94, 0xfa, 0x01, 0x4d, 0x52, 0x12, 0xac, 0xc4, 0xff, 0x2d, 0x1c, 0xa8, 0x0f,
0x87, 0x85, 0xc1, 0x94, 0x41, 0x45, 0x0f, 0xb7, 0xdd, 0x4c, 0xe3, 0x6e, 0x14, 0xa6, 0x34, 0xef,
0xa5, 0x84, 0x85, 0x89, 0xbe, 0x81, 0x16, 0x59, 0xa7, 0x8b, 0x28, 0xe6, 0x7d, 0x94, 0x5f, 0x1d,
0x97, 0xbc, 0x6c, 0xe2, 0xd5, 0x79, 0x14, 0xce, 0xa3, 0xd1, 0x77, 0x20, 0xc5, 0xf4, 0x92, 0xc6,
0x34, 0x74, 0xa9, 0xda, 0xe6, 0xa9, 0xcf, 0x77, 0xa5, 0x62, 0x11, 0x88, 0xcb, 0x1c, 0xed, 0xdf,
0x1a, 0x3c, 0xbe, 0xed, 0x84, 0xdb, 0x78, 0x09, 0x49, 0x50, 0xf0, 0xc2, 0xd6, 0xe8, 0x05, 0x1c,
0x78, 0x7e, 0xe2, 0xc6, 0x7e, 0xe0, 0x87, 0x24, 0x8d, 0xe2, 0x9c, 0x9b, 0x4d, 0x27, 0x7a, 0x0a,
0x9d, 0xd0, 0x77, 0xaf, 0x79, 0x76, 0x46, 0x4c, 0x61, 0x33, 0x66, 0xc9, 0x47, 0x92, 0x92, 0x78,
0x1e, 0x2f, 0x73, 0x4e, 0x4a, 0x07, 0x1a, 0x00, 0xca, 0x0c, 0x3e, 0x3d, 0x66, 0xf9, 0x78, 0x68,
0x71, 0x59, 0xdd, 0xb2, 0xc3, 0x4e, 0x5a, 0x46, 0x2e, 0x59, 0xb2, 0x62, 0xed, 0xec, 0x24, 0x61,
0x6b, 0x11, 0x1c, 0xed, 0xa0, 0x83, 0x81, 0x28, 0x24, 0x92, 0xff, 0xe3, 0x8a, 0x9c, 0x9f, 0x81,
0xe4, 0x2e, 0x48, 0x18, 0xd2, 0xa5, 0x59, 0x28, 0xaa, 0x70, 0xb0, 0x96, 0x5e, 0xad, 0xfd, 0xa5,
0x67, 0x8a, 0x8b, 0x20, 0x4c, 0xed, 0xbf, 0x0e, 0xc8, 0xc3, 0x05, 0xb9, 0x67, 0x50, 0x6c, 0x48,
0xab, 0xce, 0x77, 0x2a, 0xd2, 0x12, 0x63, 0x64, 0xbf, 0x32, 0x46, 0x4e, 0x40, 0x8e, 0x69, 0xb2,
0x8a, 0xc2, 0x84, 0x3a, 0x69, 0x94, 0x33, 0x0a, 0xc2, 0x65, 0x47, 0xe8, 0x33, 0xe8, 0xd0, 0x30,
0x71, 0x38, 0xdf, 0xb9, 0xcc, 0x68, 0x98, 0x4c, 0x18, 0xdd, 0x95, 0x2b, 0xdd, 0xda, 0xb8, 0xd2,
0xdb, 0xb7, 0xb3, 0xfd, 0xd0, 0xdb, 0x89, 0x46, 0xd0, 0xcd, 0x45, 0x9c, 0x65, 0x76, 0x78, 0x66,
0x45, 0x84, 0x15, 0x0e, 0x06, 0xc3, 0x2c, 0x32, 0xab, 0xe2, 0x96, 0x06, 0x7a, 0x0d, 0xed, 0x24,
0x7b, 0x9b, 0x54, 0x89, 0xab, 0x58, 0x2d, 0x0b, 0x6c, 0x3e, 0x5a, 0xe7, 0x7b, 0x58, 0x84, 0xa2,
0x01, 0x34, 0x7d, 0xd6, 0x7f, 0x15, 0x78, 0xce, 0x93, 0xad, 0xe7, 0xa6, 0xcc, 0xc8, 0xc2, 0x58,
0x3c, 0x61, 0x23, 0x5f, 0x95, 0xb7, 0xe3, 0xab, 0x4f, 0x09, 0x8b, 0xe7, 0x61, 0xe8, 0x18, 0x24,
0x37, 0x0a, 0x82, 0x75, 0xe8, 0xa7, 0x37, 0x6a, 0x97, 0xc9, 0xee, 0x7c, 0x0f, 0x97, 0x2e, 0x34,
0x84, 0x43, 0x2f, 0xd3, 0x94, 0x78, 0x81, 0x55, 0x77, 0x1b, 0xfd, 0xa6, 0xe8, 0xce, 0xf7, 0x70,
0xcf, 0xdb, 0x1c, 0x40, 0xc5, 0xb8, 0x3c, 0xa8, 0x8e, 0xcb, 0xe7, 0xd0, 0xf5, 0xfc, 0x64, 0xb5,
0x24, 0x37, 0x59, 0x23, 0x7b, 0xbc, 0x5d, 0x72, 0xee, 0xe3, 0xcd, 0xbc, 0x84, 0xe3, 0x84, 0xd1,
0xce, 0x78, 0x24, 0x6e, 0xea, 0xc4, 0xf4, 0xb7, 0x35, 0x4d, 0x52, 0x27, 0xf1, 0xaf, 0x42, 0x92,
0xae, 0x63, 0xaa, 0x1e, 0x6e, 0x0f, 0x84, 0x61, 0x16, 0x8a, 0xb3, 0x48, 0x4b, 0x04, 0xe2, 0xcf,
0x59, 0xa1, 0x1d, 0x9b, 0x28, 0x04, 0x2d, 0xa6, 0x2e, 0xf5, 0x3f, 0x52, 0xef, 0x8e, 0xb3, 0x94,
0x87, 0x9e, 0x75, 0x22, 0x8a, 0xed, 0x3a, 0xef, 0x25, 0x1c, 0x8a, 0x63, 0x04, 0xab, 0x9f, 0x9c,
0xd6, 0xfa, 0x1d, 0xdc, 0xcb, 0xdd, 0x39, 0x73, 0xda, 0x1f, 0x75, 0x90, 0x2b, 0x8a, 0x42, 0x2a,
0x3c, 0x16, 0x8f, 0xf8, 0x70, 0x3a, 0xb1, 0x8d, 0x89, 0x2d, 0x9e, 0xf1, 0x1e, 0x80, 0x6d, 0xfc,
0x62, 0x3b, 0xb3, 0x1f, 0x75, 0x73, 0xa2, 0xd4, 0x90, 0x0c, 0x6d, 0xcb, 0x36, 0x87, 0xef, 0x0c,
0xac, 0xd4, 0x11, 0x40, 0xcb, 0xb2, 0x75, 0x7b, 0x6e, 0x29, 0xfb, 0x48, 0x82, 0xa6, 0x31, 0x9e,
0xfe, 0x60, 0x2a, 0x0d, 0x74, 0x04, 0x8f, 0x6c, 0xac, 0x4f, 0x2c, 0x7d, 0x68, 0x9b, 0x53, 0x56,
0x71, 0x3c, 0xd6, 0x27, 0x23, 0xa5, 0x89, 0xfa, 0xf0, 0xc2, 0xba, 0xb0, 0x6c, 0x63, 0xec, 0x8c,
0x0d, 0xcb, 0xd2, 0xcf, 0x8c, 0xe2, 0xb4, 0x19, 0x36, 0x7f, 0xd2, 0x6d, 0xc3, 0x39, 0xc3, 0xd3,
0xf9, 0x4c, 0x69, 0xb1, 0x6a, 0xe6, 0x58, 0x3f, 0x33, 0x94, 0x36, 0x5b, 0xf2, 0x0f, 0x0b, 0xa5,
0x83, 0x0e, 0x40, 0x62, 0xc5, 0xe6, 0x13, 0xd3, 0xbe, 0x50, 0x24, 0xf6, 0xe9, 0xb1, 0x55, 0xee,
0x4c, 0x9f, 0x29, 0x80, 0x1e, 0xc1, 0x21, 0xab, 0xab, 0x0f, 0x6d, 0x07, 0x1b, 0xef, 0xe7, 0x86,
0x65, 0x2b, 0x32, 0x73, 0x8e, 0x4c, 0x6b, 0x38, 0xc5, 0x23, 0x11, 0xad, 0x74, 0xdf, 0x4a, 0xc5,
0xa7, 0x93, 0x36, 0x87, 0xa3, 0x5d, 0xb4, 0x3e, 0x03, 0xa9, 0xec, 0x56, 0xf6, 0x89, 0x55, 0x3a,
0xee, 0x9e, 0x43, 0x6f, 0x0f, 0x7e, 0x95, 0x07, 0x5f, 0x7e, 0x2b, 0x5a, 0xfb, 0xa1, 0xc5, 0x57,
0x5f, 0xfd, 0x1f, 0x00, 0x00, 0xff, 0xff, 0x5f, 0x62, 0xda, 0x69, 0x7d, 0x0a, 0x00, 0x00,
}

View File

@ -54,6 +54,11 @@ message DeleteMessage {
MessageType message_type = 5;
}
message DeleteForMeMessage {
uint64 clock = 1;
string message_id = 2;
}
message DiscordMessage {
string id = 1;
string type = 2;
@ -83,8 +88,8 @@ message DiscordMessageReference {
message ChatMessage {
// Lamport timestamp of the chat message
uint64 clock = 1;
// Unix timestamps in milliseconds, currently not used as we use whisper as more reliable, but here
// so that we don't rely on it
// Unix timestamps in milliseconds, currently not used as we use whisper as
// more reliable, but here so that we don't rely on it
uint64 timestamp = 2;
// Text of the message
string text = 3;
@ -95,7 +100,8 @@ message ChatMessage {
// Chat id, this field is symmetric for public-chats and private group chats,
// but asymmetric in case of one-to-ones, as the sender will use the chat-id
// of the received, while the receiver will use the chat-id of the sender.
// Probably should be the concatenation of sender-pk & receiver-pk in alphabetical order
// Probably should be the concatenation of sender-pk & receiver-pk in
// alphabetical order
string chat_id = 6;
// The type of message (public/one-to-one/private-group-chat)
@ -138,8 +144,6 @@ message ChatMessage {
CONTACT_REQUEST = 11;
DISCORD_MESSAGE = 12;
}
}
message ContactRequestSignature {

View File

@ -247,6 +247,8 @@ func (m *StatusMessage) HandleApplication() error {
return m.unmarshalProtobufData(new(protobuf.EditMessage))
case protobuf.ApplicationMetadataMessage_DELETE_MESSAGE:
return m.unmarshalProtobufData(new(protobuf.DeleteMessage))
case protobuf.ApplicationMetadataMessage_SYNC_DELETE_FOR_ME_MESSAGE:
return m.unmarshalProtobufData(new(protobuf.DeleteForMeMessage))
case protobuf.ApplicationMetadataMessage_STATUS_UPDATE:
return m.unmarshalProtobufData(new(protobuf.StatusUpdate))
case protobuf.ApplicationMetadataMessage_PUSH_NOTIFICATION_REGISTRATION:

View File

@ -705,6 +705,10 @@ func (api *PublicAPI) DeleteMessageAndSend(ctx context.Context, messageID string
return api.service.messenger.DeleteMessageAndSend(ctx, messageID)
}
func (api *PublicAPI) DeleteMessageForMeAndSync(ctx context.Context, chatID string, messageID string) (*protocol.MessengerResponse, error) {
return api.service.messenger.DeleteMessageForMeAndSync(ctx, chatID, messageID)
}
func (api *PublicAPI) SendPinMessage(ctx context.Context, message *common.PinMessage) (*protocol.MessengerResponse, error) {
return api.service.messenger.SendPinMessage(ctx, message)
}