feat(AssetsDeployment): Assets deployment

- Add ERC20 contract
- Add decimals field to community_tokens db table
- Adjusting API to handle assets deployment
- Add decimals field to CommunityTokenMetadata

Issue #10987
This commit is contained in:
Michal Iskierko 2023-06-14 09:47:54 +02:00 committed by Michał Iskierko
parent 40a59b3aca
commit 6ec50d52aa
14 changed files with 1560 additions and 324 deletions

View File

@ -1 +1 @@
0.159.11
0.160.0

1087
contracts/assets/Assets.go Normal file

File diff suppressed because one or more lines are too long

View File

@ -0,0 +1,55 @@
// SPDX-License-Identifier: Mozilla Public License 2.0
pragma solidity ^0.8.17;
import "@openzeppelin/contracts/access/Ownable.sol";
import "@openzeppelin/contracts/token/ERC20/ERC20.sol";
import "@openzeppelin/contracts/utils/Context.sol";
contract CommunityERC20 is
Context,
Ownable,
ERC20
{
/**
* If we want unlimited total supply we should set maxSupply to 2^256-1.
*/
uint256 public maxSupply;
constructor(
string memory _name,
string memory _symbol,
uint256 _maxSupply
) ERC20(_name, _symbol) {
maxSupply = _maxSupply;
}
// Events
// External functions
function setMaxSupply(uint256 newMaxSupply) external onlyOwner {
require(newMaxSupply >= totalSupply(), "MAX_SUPPLY_LOWER_THAN_TOTAL_SUPPLY");
maxSupply = newMaxSupply;
}
/**
* @dev Mint tokens for each address in `addresses` each one with
* an amount specified in `amounts`.
*
*/
function mintTo(address[] memory addresses, uint256[] memory amounts) external onlyOwner {
require(addresses.length == amounts.length, "WRONG_LENGTHS");
for (uint256 i = 0; i < addresses.length; i++) {
uint256 amount = amounts[i];
require(totalSupply() + amount <= maxSupply, "MAX_SUPPLY_REACHED");
_mint(addresses[i], amount);
}
}
// Public functions
// Internal functions
// Private functions
}

View File

@ -454,6 +454,7 @@ type CommunityToken struct {
ChainID int `json:"chainId"`
DeployState DeployState `json:"deployState"`
Base64Image string `json:"image"`
Decimals int `json:"decimals"`
}
type CommunitySettings struct {

View File

@ -4022,6 +4022,7 @@ func (m *Manager) AddCommunityToken(token *CommunityToken) (*CommunityToken, err
Symbol: token.Symbol,
TokenType: token.TokenType,
Name: token.Name,
Decimals: uint32(token.Decimals),
}
_, err = community.AddCommunityTokensMetadata(tokenMetadata)
if err != nil {

View File

@ -1106,7 +1106,7 @@ func (p *Persistence) GetCommunityChatIDs(communityID types.HexBytes) ([]string,
func (p *Persistence) GetAllCommunityTokens() ([]*CommunityToken, error) {
rows, err := p.db.Query(`SELECT community_id, address, type, name, symbol, description, supply,
infinite_supply, transferable, remote_self_destruct, chain_id, deploy_state, image_base64
infinite_supply, transferable, remote_self_destruct, chain_id, deploy_state, image_base64, decimals
FROM community_tokens`)
if err != nil {
return nil, err
@ -1118,7 +1118,7 @@ func (p *Persistence) GetAllCommunityTokens() ([]*CommunityToken, error) {
func (p *Persistence) GetCommunityTokens(communityID string) ([]*CommunityToken, error) {
rows, err := p.db.Query(`SELECT community_id, address, type, name, symbol, description, supply,
infinite_supply, transferable, remote_self_destruct, chain_id, deploy_state, image_base64
infinite_supply, transferable, remote_self_destruct, chain_id, deploy_state, image_base64, decimals
FROM community_tokens WHERE community_id = ?`, communityID)
if err != nil {
return nil, err
@ -1135,7 +1135,7 @@ func (p *Persistence) getCommunityTokensInternal(rows *sql.Rows) ([]*CommunityTo
token := CommunityToken{}
err := rows.Scan(&token.CommunityID, &token.Address, &token.TokenType, &token.Name,
&token.Symbol, &token.Description, &token.Supply, &token.InfiniteSupply, &token.Transferable,
&token.RemoteSelfDestruct, &token.ChainID, &token.DeployState, &token.Base64Image)
&token.RemoteSelfDestruct, &token.ChainID, &token.DeployState, &token.Base64Image, &token.Decimals)
if err != nil {
return nil, err
}
@ -1146,10 +1146,10 @@ func (p *Persistence) getCommunityTokensInternal(rows *sql.Rows) ([]*CommunityTo
func (p *Persistence) AddCommunityToken(token *CommunityToken) error {
_, err := p.db.Exec(`INSERT INTO community_tokens (community_id, address, type, name, symbol, description, supply,
infinite_supply, transferable, remote_self_destruct, chain_id, deploy_state, image_base64)
VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?)`, token.CommunityID, token.Address, token.TokenType, token.Name,
infinite_supply, transferable, remote_self_destruct, chain_id, deploy_state, image_base64, decimals)
VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?)`, token.CommunityID, token.Address, token.TokenType, token.Name,
token.Symbol, token.Description, token.Supply, token.InfiniteSupply, token.Transferable, token.RemoteSelfDestruct,
token.ChainID, token.DeployState, token.Base64Image)
token.ChainID, token.DeployState, token.Base64Image, token.Decimals)
return err
}

View File

@ -375,7 +375,7 @@ func (s *PersistenceSuite) TestGetCommunityTokens() {
s.Require().NoError(err)
s.Require().Len(tokens, 0)
token := CommunityToken{
tokenERC721 := CommunityToken{
CommunityID: "123",
TokenType: protobuf.CommunityTokenType_ERC721,
Address: "0x123",
@ -391,9 +391,9 @@ func (s *PersistenceSuite) TestGetCommunityTokens() {
Base64Image: "ABCD",
}
token2 := CommunityToken{
tokenERC20 := CommunityToken{
CommunityID: "345",
TokenType: protobuf.CommunityTokenType_ERC721,
TokenType: protobuf.CommunityTokenType_ERC20,
Address: "0x345",
Name: "StatusToken",
Symbol: "STT",
@ -405,17 +405,18 @@ func (s *PersistenceSuite) TestGetCommunityTokens() {
ChainID: 2,
DeployState: Failed,
Base64Image: "QWERTY",
Decimals: 21,
}
err = s.db.AddCommunityToken(&token)
err = s.db.AddCommunityToken(&tokenERC721)
s.Require().NoError(err)
err = s.db.AddCommunityToken(&token2)
err = s.db.AddCommunityToken(&tokenERC20)
s.Require().NoError(err)
tokens, err = s.db.GetCommunityTokens("123")
s.Require().NoError(err)
s.Require().Len(tokens, 1)
s.Require().Equal(token, *tokens[0])
s.Require().Equal(tokenERC721, *tokens[0])
err = s.db.UpdateCommunityTokenState(1, "0x123", Deployed)
s.Require().NoError(err)
@ -423,6 +424,11 @@ func (s *PersistenceSuite) TestGetCommunityTokens() {
s.Require().NoError(err)
s.Require().Len(tokens, 1)
s.Require().Equal(Deployed, tokens[0].DeployState)
tokens, err = s.db.GetCommunityTokens("345")
s.Require().NoError(err)
s.Require().Len(tokens, 1)
s.Require().Equal(tokenERC20, *tokens[0])
}
func (s *PersistenceSuite) TestSaveCheckChannelPermissionResponse() {

View File

@ -95,6 +95,7 @@
// 1685964183_add_chainids_to_revealed_addresses.up.sql (88B)
// 1687370421_add_communities_muted_till_new.up.sql (635B)
// 1687416607_add_communities_check_channel_permission_responses_table.up.sql (739B)
// 1687856939_add_community_tokens_decimals.up.sql (65B)
// README.md (554B)
// doc.go (850B)
@ -179,7 +180,7 @@ func _000001_initDownDbSql() (*asset, error) {
return nil, err
}
info := bindataFileInfo{name: "000001_init.down.db.sql", size: 65, mode: os.FileMode(0644), modTime: time.Unix(1687889856, 0)}
info := bindataFileInfo{name: "000001_init.down.db.sql", size: 65, mode: os.FileMode(0644), modTime: time.Unix(1687875194, 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
}
@ -199,7 +200,7 @@ func _000001_initUpDbSql() (*asset, error) {
return nil, err
}
info := bindataFileInfo{name: "000001_init.up.db.sql", size: 2719, mode: os.FileMode(0644), modTime: time.Unix(1687889856, 0)}
info := bindataFileInfo{name: "000001_init.up.db.sql", size: 2719, mode: os.FileMode(0644), modTime: time.Unix(1687875194, 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
}
@ -219,7 +220,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(0644), modTime: time.Unix(1687889856, 0)}
info := bindataFileInfo{name: "000002_add_last_ens_clock_value.up.sql", size: 77, mode: os.FileMode(0644), modTime: time.Unix(1687875194, 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
}
@ -239,7 +240,7 @@ func _1586358095_add_replaceUpSql() (*asset, error) {
return nil, err
}
info := bindataFileInfo{name: "1586358095_add_replace.up.sql", size: 224, mode: os.FileMode(0644), modTime: time.Unix(1687889856, 0)}
info := bindataFileInfo{name: "1586358095_add_replace.up.sql", size: 224, mode: os.FileMode(0644), modTime: time.Unix(1687875194, 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
}
@ -259,7 +260,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(0644), modTime: time.Unix(1687889856, 0)}
info := bindataFileInfo{name: "1588665364_add_image_data.up.sql", size: 186, mode: os.FileMode(0644), modTime: time.Unix(1687875194, 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
}
@ -279,7 +280,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(0644), modTime: time.Unix(1687889856, 0)}
info := bindataFileInfo{name: "1589365189_add_pow_target.up.sql", size: 66, mode: os.FileMode(0644), modTime: time.Unix(1687875194, 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
}
@ -299,7 +300,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(0644), modTime: time.Unix(1687889856, 0)}
info := bindataFileInfo{name: "1591277220_add_index_messages.up.sql", size: 240, mode: os.FileMode(0644), modTime: time.Unix(1687875194, 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
}
@ -319,7 +320,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(0644), modTime: time.Unix(1687889856, 0)}
info := bindataFileInfo{name: "1593087212_add_mute_chat_and_raw_message_fields.up.sql", size: 215, mode: os.FileMode(0644), modTime: time.Unix(1687875194, 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
}
@ -339,7 +340,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(0644), modTime: time.Unix(1687889856, 0)}
info := bindataFileInfo{name: "1595862781_add_audio_data.up.sql", size: 246, mode: os.FileMode(0644), modTime: time.Unix(1687875194, 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
}
@ -359,7 +360,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(0644), modTime: time.Unix(1687889856, 0)}
info := bindataFileInfo{name: "1595865249_create_emoji_reactions_table.up.sql", size: 300, mode: os.FileMode(0644), modTime: time.Unix(1687875194, 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
}
@ -379,7 +380,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(0644), modTime: time.Unix(1687889856, 0)}
info := bindataFileInfo{name: "1596805115_create_group_chat_invitations_table.up.sql", size: 231, mode: os.FileMode(0644), modTime: time.Unix(1687875194, 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
}
@ -399,7 +400,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(0644), modTime: time.Unix(1687889856, 0)}
info := bindataFileInfo{name: "1597322655_add_invitation_admin_chat_field.up.sql", size: 54, mode: os.FileMode(0644), modTime: time.Unix(1687875194, 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
}
@ -419,7 +420,7 @@ func _1597757544_add_nicknameUpSql() (*asset, error) {
return nil, err
}
info := bindataFileInfo{name: "1597757544_add_nickname.up.sql", size: 52, mode: os.FileMode(0644), modTime: time.Unix(1687889856, 0)}
info := bindataFileInfo{name: "1597757544_add_nickname.up.sql", size: 52, mode: os.FileMode(0644), modTime: time.Unix(1687875194, 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
}
@ -439,7 +440,7 @@ func _1598955122_add_mentionsUpSql() (*asset, error) {
return nil, err
}
info := bindataFileInfo{name: "1598955122_add_mentions.up.sql", size: 52, mode: os.FileMode(0644), modTime: time.Unix(1687889856, 0)}
info := bindataFileInfo{name: "1598955122_add_mentions.up.sql", size: 52, mode: os.FileMode(0644), modTime: time.Unix(1687875194, 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
}
@ -459,7 +460,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(0644), modTime: time.Unix(1687889856, 0)}
info := bindataFileInfo{name: "1599641390_add_emoji_reactions_index.up.sql", size: 126, mode: os.FileMode(0644), modTime: time.Unix(1687875194, 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
}
@ -479,7 +480,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(0644), modTime: time.Unix(1687889856, 0)}
info := bindataFileInfo{name: "1599720851_add_seen_index_remove_long_messages.up.sql", size: 150, mode: os.FileMode(0644), modTime: time.Unix(1687875194, 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
}
@ -499,7 +500,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(0644), modTime: time.Unix(1687889856, 0)}
info := bindataFileInfo{name: "1603198582_add_profile_chat_field.up.sql", size: 45, mode: os.FileMode(0644), modTime: time.Unix(1687875194, 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
}
@ -519,7 +520,7 @@ func _1603816533_add_linksUpSql() (*asset, error) {
return nil, err
}
info := bindataFileInfo{name: "1603816533_add_links.up.sql", size: 48, mode: os.FileMode(0644), modTime: time.Unix(1687889856, 0)}
info := bindataFileInfo{name: "1603816533_add_links.up.sql", size: 48, mode: os.FileMode(0644), modTime: time.Unix(1687875194, 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
}
@ -539,7 +540,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(0644), modTime: time.Unix(1687889856, 0)}
info := bindataFileInfo{name: "1603888149_create_chat_identity_last_published_table.up.sql", size: 407, mode: os.FileMode(0644), modTime: time.Unix(1687875194, 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
}
@ -559,7 +560,7 @@ func _1605075346_add_communitiesUpSql() (*asset, error) {
return nil, err
}
info := bindataFileInfo{name: "1605075346_add_communities.up.sql", size: 6971, mode: os.FileMode(0644), modTime: time.Unix(1687889856, 0)}
info := bindataFileInfo{name: "1605075346_add_communities.up.sql", size: 6971, mode: os.FileMode(0644), modTime: time.Unix(1687875194, 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
}
@ -579,7 +580,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(0644), modTime: time.Unix(1687889856, 0)}
info := bindataFileInfo{name: "1610117927_add_message_cache.up.sql", size: 142, mode: os.FileMode(0644), modTime: time.Unix(1687875194, 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
}
@ -599,7 +600,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(0644), modTime: time.Unix(1687889856, 0)}
info := bindataFileInfo{name: "1610959908_add_dont_wrap_to_raw_messages.up.sql", size: 83, mode: os.FileMode(0644), modTime: time.Unix(1687875194, 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
}
@ -619,7 +620,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(0644), modTime: time.Unix(1687889856, 0)}
info := bindataFileInfo{name: "1610960912_add_send_on_personal_topic.up.sql", size: 82, mode: os.FileMode(0644), modTime: time.Unix(1687875194, 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
}
@ -639,7 +640,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(0644), modTime: time.Unix(1687889856, 0)}
info := bindataFileInfo{name: "1612870480_add_datasync_id.up.sql", size: 111, mode: os.FileMode(0644), modTime: time.Unix(1687875194, 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
}
@ -659,7 +660,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(0644), modTime: time.Unix(1687889856, 0)}
info := bindataFileInfo{name: "1614152139_add_communities_request_to_join.up.sql", size: 831, mode: os.FileMode(0644), modTime: time.Unix(1687875194, 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
}
@ -679,7 +680,7 @@ func _1615374373_add_confirmationsUpSql() (*asset, error) {
return nil, err
}
info := bindataFileInfo{name: "1615374373_add_confirmations.up.sql", size: 227, mode: os.FileMode(0644), modTime: time.Unix(1687889856, 0)}
info := bindataFileInfo{name: "1615374373_add_confirmations.up.sql", size: 227, mode: os.FileMode(0644), modTime: time.Unix(1687875194, 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
}
@ -699,7 +700,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(0644), modTime: time.Unix(1687889856, 0)}
info := bindataFileInfo{name: "1617694931_add_notification_center.up.sql", size: 572, mode: os.FileMode(0644), modTime: time.Unix(1687875194, 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
}
@ -719,7 +720,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(0644), modTime: time.Unix(1687889856, 0)}
info := bindataFileInfo{name: "1618923660_create_pin_messages.up.sql", size: 265, mode: os.FileMode(0644), modTime: time.Unix(1687875194, 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
}
@ -739,7 +740,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(0644), modTime: time.Unix(1687889856, 0)}
info := bindataFileInfo{name: "1619094007_add_joined_chat_field.up.sql", size: 101, mode: os.FileMode(0644), modTime: time.Unix(1687875194, 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
}
@ -759,7 +760,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(0644), modTime: time.Unix(1687889856, 0)}
info := bindataFileInfo{name: "1619099821_add_last_synced_field.up.sql", size: 226, mode: os.FileMode(0644), modTime: time.Unix(1687875194, 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
}
@ -779,7 +780,7 @@ func _1621933219_add_mentionedUpSql() (*asset, error) {
return nil, err
}
info := bindataFileInfo{name: "1621933219_add_mentioned.up.sql", size: 70, mode: os.FileMode(0644), modTime: time.Unix(1687889856, 0)}
info := bindataFileInfo{name: "1621933219_add_mentioned.up.sql", size: 70, mode: os.FileMode(0644), modTime: time.Unix(1687875194, 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
}
@ -799,7 +800,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(0644), modTime: time.Unix(1687889856, 0)}
info := bindataFileInfo{name: "1622010048_add_unviewed_mentions_count.up.sql", size: 114, mode: os.FileMode(0644), modTime: time.Unix(1687875194, 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
}
@ -819,7 +820,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(0644), modTime: time.Unix(1687889856, 0)}
info := bindataFileInfo{name: "1622061278_add_message_activity_center_notification_field.up.sql", size: 80, mode: os.FileMode(0644), modTime: time.Unix(1687875194, 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
}
@ -839,7 +840,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(0644), modTime: time.Unix(1687889856, 0)}
info := bindataFileInfo{name: "1622464518_set_synced_to_from.up.sql", size: 105, mode: os.FileMode(0644), modTime: time.Unix(1687875194, 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
}
@ -859,7 +860,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(0644), modTime: time.Unix(1687889856, 0)}
info := bindataFileInfo{name: "1622464519_add_chat_description.up.sql", size: 93, mode: os.FileMode(0644), modTime: time.Unix(1687875194, 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
}
@ -879,7 +880,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(0644), modTime: time.Unix(1687889856, 0)}
info := bindataFileInfo{name: "1622622253_add_pinned_by_to_pin_messages.up.sql", size: 52, mode: os.FileMode(0644), modTime: time.Unix(1687875194, 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
}
@ -899,7 +900,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(0644), modTime: time.Unix(1687889856, 0)}
info := bindataFileInfo{name: "1623938329_add_author_activity_center_notification_field.up.sql", size: 66, mode: os.FileMode(0644), modTime: time.Unix(1687875194, 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
}
@ -919,7 +920,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(0644), modTime: time.Unix(1687889856, 0)}
info := bindataFileInfo{name: "1623938330_add_edit_messages.up.sql", size: 369, mode: os.FileMode(0644), modTime: time.Unix(1687875194, 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
}
@ -939,7 +940,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(0644), modTime: time.Unix(1687889856, 0)}
info := bindataFileInfo{name: "1624978434_add_muted_community.up.sql", size: 82, mode: os.FileMode(0644), modTime: time.Unix(1687875194, 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
}
@ -959,7 +960,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(0644), modTime: time.Unix(1687889856, 0)}
info := bindataFileInfo{name: "1625018910_add_repply_message_activity_center_notification_field.up.sql", size: 86, mode: os.FileMode(0644), modTime: time.Unix(1687875194, 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
}
@ -979,7 +980,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(0644), modTime: time.Unix(1687889856, 0)}
info := bindataFileInfo{name: "1625762506_add_deleted_messages.up.sql", size: 357, mode: os.FileMode(0644), modTime: time.Unix(1687875194, 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
}
@ -999,7 +1000,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(0644), modTime: time.Unix(1687889856, 0)}
info := bindataFileInfo{name: "1627388946_add_communities_synced_at.up.sql", size: 87, mode: os.FileMode(0644), modTime: time.Unix(1687875194, 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
}
@ -1019,7 +1020,7 @@ func _1628280060_createUsermessagesIndexSql() (*asset, error) {
return nil, err
}
info := bindataFileInfo{name: "1628280060_create-usermessages-index.sql", size: 80, mode: os.FileMode(0644), modTime: time.Unix(1687889856, 0)}
info := bindataFileInfo{name: "1628280060_create-usermessages-index.sql", size: 80, mode: os.FileMode(0644), modTime: time.Unix(1687875194, 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
}
@ -1039,7 +1040,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(0644), modTime: time.Unix(1687889856, 0)}
info := bindataFileInfo{name: "1632303896_modify_contacts_table.up.sql", size: 1574, mode: os.FileMode(0644), modTime: time.Unix(1687875194, 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
}
@ -1059,7 +1060,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(0644), modTime: time.Unix(1687889856, 0)}
info := bindataFileInfo{name: "1633349838_add_emoji_column_in_chats.up.sql", size: 52, mode: os.FileMode(0644), modTime: time.Unix(1687875194, 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
}
@ -1079,7 +1080,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(0644), modTime: time.Unix(1687889856, 0)}
info := bindataFileInfo{name: "1634831235_add_highlight_column_in_chats.up.sql", size: 62, mode: os.FileMode(0644), modTime: time.Unix(1687875194, 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
}
@ -1099,7 +1100,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(0644), modTime: time.Unix(1687889856, 0)}
info := bindataFileInfo{name: "1634896007_add_last_updated_locally_and_removed.up.sql", size: 131, mode: os.FileMode(0644), modTime: time.Unix(1687875194, 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
}
@ -1119,7 +1120,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(0644), modTime: time.Unix(1687889856, 0)}
info := bindataFileInfo{name: "1635840039_add_clock_read_at_column_in_chats.up.sql", size: 245, mode: os.FileMode(0644), modTime: time.Unix(1687875194, 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
}
@ -1139,7 +1140,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(0644), modTime: time.Unix(1687889856, 0)}
info := bindataFileInfo{name: "1637852321_add_received_invitation_admin_column_in_chats.up.sql", size: 72, mode: os.FileMode(0644), modTime: time.Unix(1687875194, 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
}
@ -1159,7 +1160,7 @@ func _1645034601_display_nameUpSql() (*asset, error) {
return nil, err
}
info := bindataFileInfo{name: "1645034601_display_name.up.sql", size: 110, mode: os.FileMode(0644), modTime: time.Unix(1687889856, 0)}
info := bindataFileInfo{name: "1645034601_display_name.up.sql", size: 110, mode: os.FileMode(0644), modTime: time.Unix(1687875194, 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
}
@ -1179,7 +1180,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(0644), modTime: time.Unix(1687889856, 0)}
info := bindataFileInfo{name: "1645034602_add_mutual_contact_request.up.sql", size: 454, mode: os.FileMode(0644), modTime: time.Unix(1687875194, 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
}
@ -1199,7 +1200,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(0644), modTime: time.Unix(1687889856, 0)}
info := bindataFileInfo{name: "1650373957_add_contact_request_state.up.sql", size: 59, mode: os.FileMode(0644), modTime: time.Unix(1687875194, 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
}
@ -1219,7 +1220,7 @@ func _1656958989_contact_verificationUpSql() (*asset, error) {
return nil, err
}
info := bindataFileInfo{name: "1656958989_contact_verification.up.sql", size: 624, mode: os.FileMode(0644), modTime: time.Unix(1687889856, 0)}
info := bindataFileInfo{name: "1656958989_contact_verification.up.sql", size: 624, mode: os.FileMode(0644), modTime: time.Unix(1687875194, 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
}
@ -1239,7 +1240,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(0644), modTime: time.Unix(1687889856, 0)}
info := bindataFileInfo{name: "1658236268_add_discord_message_authors_table.up.sql", size: 191, mode: os.FileMode(0644), modTime: time.Unix(1687875194, 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
}
@ -1259,7 +1260,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(0644), modTime: time.Unix(1687889856, 0)}
info := bindataFileInfo{name: "1659619997_add_discord_messages_table.up.sql", size: 371, mode: os.FileMode(0644), modTime: time.Unix(1687875194, 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
}
@ -1279,7 +1280,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(0644), modTime: time.Unix(1687889856, 0)}
info := bindataFileInfo{name: "1660226788_create_chat_identity_social_links.up.sql", size: 318, mode: os.FileMode(0644), modTime: time.Unix(1687875194, 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
}
@ -1299,7 +1300,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(0644), modTime: time.Unix(1687889856, 0)}
info := bindataFileInfo{name: "1660226789_add_walletconnectsessions_table.up.sql", size: 215, mode: os.FileMode(0644), modTime: time.Unix(1687875194, 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
}
@ -1319,7 +1320,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(0644), modTime: time.Unix(1687889856, 0)}
info := bindataFileInfo{name: "1661242854_add_communities_requests_to_leave.up.sql", size: 204, mode: os.FileMode(0644), modTime: time.Unix(1687875194, 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
}
@ -1339,7 +1340,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(0644), modTime: time.Unix(1687889856, 0)}
info := bindataFileInfo{name: "1662044232_add_chat_image.up.sql", size: 49, mode: os.FileMode(0644), modTime: time.Unix(1687875194, 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
}
@ -1359,7 +1360,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(0644), modTime: time.Unix(1687889856, 0)}
info := bindataFileInfo{name: "1662106895_add_chat_first_message_timestamp.up.sql", size: 113, mode: os.FileMode(0644), modTime: time.Unix(1687875194, 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
}
@ -1379,7 +1380,7 @@ 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(0644), modTime: time.Unix(1687889856, 0)}
info := bindataFileInfo{name: "1662723928_add_discord_author_image_fields.up.sql", size: 75, mode: os.FileMode(0644), modTime: time.Unix(1687875194, 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
}
@ -1399,7 +1400,7 @@ func _1664195977_add_deleted_for_mesUpSql() (*asset, error) {
return nil, err
}
info := bindataFileInfo{name: "1664195977_add_deleted_for_mes.up.sql", size: 352, mode: os.FileMode(0644), modTime: time.Unix(1687889856, 0)}
info := bindataFileInfo{name: "1664195977_add_deleted_for_mes.up.sql", size: 352, mode: os.FileMode(0644), modTime: time.Unix(1687875194, 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
}
@ -1419,7 +1420,7 @@ func _1664367420_add_discord_attachments_tableUpSql() (*asset, error) {
return nil, err
}
info := bindataFileInfo{name: "1664367420_add_discord_attachments_table.up.sql", size: 350, mode: os.FileMode(0644), modTime: time.Unix(1687889856, 0)}
info := bindataFileInfo{name: "1664367420_add_discord_attachments_table.up.sql", size: 350, mode: os.FileMode(0644), modTime: time.Unix(1687875194, 0)}
a := &asset{bytes: bytes, info: info, digest: [32]uint8{0x48, 0xe1, 0xb6, 0x4f, 0x6f, 0x92, 0x0, 0xb4, 0xf, 0x55, 0x12, 0x1c, 0x98, 0x6d, 0xbc, 0x1e, 0xfd, 0xae, 0x1c, 0xce, 0xd1, 0x3d, 0x2, 0x21, 0x2e, 0xc0, 0x13, 0xa, 0xb2, 0xec, 0x81, 0x13}}
return a, nil
}
@ -1439,7 +1440,7 @@ func _1665079662_add_spectated_column_in_communitiesUpSql() (*asset, error) {
return nil, err
}
info := bindataFileInfo{name: "1665079662_add_spectated_column_in_communities.up.sql", size: 86, mode: os.FileMode(0644), modTime: time.Unix(1687889856, 0)}
info := bindataFileInfo{name: "1665079662_add_spectated_column_in_communities.up.sql", size: 86, mode: os.FileMode(0644), modTime: time.Unix(1687875194, 0)}
a := &asset{bytes: bytes, info: info, digest: [32]uint8{0xa0, 0x5d, 0xfe, 0xe2, 0xbe, 0xdf, 0xba, 0x45, 0xe9, 0xfc, 0xa7, 0x5f, 0xda, 0x19, 0xdb, 0x40, 0x96, 0x59, 0x78, 0xa, 0xd7, 0x4a, 0xca, 0x1a, 0x93, 0xfb, 0xae, 0x6d, 0x74, 0x7, 0x36, 0xdd}}
return a, nil
}
@ -1459,7 +1460,7 @@ func _1665479047_add_community_id_in_notificationsUpSql() (*asset, error) {
return nil, err
}
info := bindataFileInfo{name: "1665479047_add_community_id_in_notifications.up.sql", size: 169, mode: os.FileMode(0644), modTime: time.Unix(1687889856, 0)}
info := bindataFileInfo{name: "1665479047_add_community_id_in_notifications.up.sql", size: 169, mode: os.FileMode(0644), modTime: time.Unix(1687875194, 0)}
a := &asset{bytes: bytes, info: info, digest: [32]uint8{0xd9, 0x8f, 0x8b, 0x1c, 0xaa, 0x6a, 0x56, 0xd6, 0xa5, 0x88, 0x57, 0x13, 0x8f, 0xea, 0xb9, 0x23, 0x82, 0x50, 0xb7, 0x65, 0x1f, 0xab, 0xfa, 0x23, 0x6f, 0x0, 0x7, 0xb6, 0x6e, 0xb5, 0x85, 0x44}}
return a, nil
}
@ -1479,7 +1480,7 @@ func _1665484435_add_encrypted_messagesUpSql() (*asset, error) {
return nil, err
}
info := bindataFileInfo{name: "1665484435_add_encrypted_messages.up.sql", size: 402, mode: os.FileMode(0644), modTime: time.Unix(1687889856, 0)}
info := bindataFileInfo{name: "1665484435_add_encrypted_messages.up.sql", size: 402, mode: os.FileMode(0644), modTime: time.Unix(1687875194, 0)}
a := &asset{bytes: bytes, info: info, digest: [32]uint8{0x8f, 0x5c, 0x1e, 0x1c, 0x7f, 0xae, 0x5f, 0xeb, 0x3c, 0x6c, 0xcd, 0xc2, 0x99, 0x48, 0x5c, 0x83, 0xa0, 0xa2, 0x97, 0x5, 0x39, 0x82, 0x71, 0x90, 0x47, 0x21, 0x84, 0x29, 0x19, 0xa4, 0x7a, 0x90}}
return a, nil
}
@ -1499,7 +1500,7 @@ func _1665560200_add_contact_verification_individualUpSql() (*asset, error) {
return nil, err
}
info := bindataFileInfo{name: "1665560200_add_contact_verification_individual.up.sql", size: 509, mode: os.FileMode(0644), modTime: time.Unix(1687889856, 0)}
info := bindataFileInfo{name: "1665560200_add_contact_verification_individual.up.sql", size: 509, mode: os.FileMode(0644), modTime: time.Unix(1687875194, 0)}
a := &asset{bytes: bytes, info: info, digest: [32]uint8{0xc5, 0xbb, 0x61, 0xfd, 0xbf, 0x33, 0x1d, 0x4e, 0x5f, 0xbd, 0x86, 0x42, 0xb0, 0x6c, 0xf7, 0x39, 0x19, 0x6e, 0x72, 0x35, 0xfd, 0x1b, 0xd6, 0xbd, 0xf6, 0x81, 0x21, 0xc4, 0xaa, 0x6, 0x62, 0x40}}
return a, nil
}
@ -1519,7 +1520,7 @@ func _1670921937_add_album_idUpSql() (*asset, error) {
return nil, err
}
info := bindataFileInfo{name: "1670921937_add_album_id.up.sql", size: 55, mode: os.FileMode(0644), modTime: time.Unix(1687889856, 0)}
info := bindataFileInfo{name: "1670921937_add_album_id.up.sql", size: 55, mode: os.FileMode(0644), modTime: time.Unix(1687875194, 0)}
a := &asset{bytes: bytes, info: info, digest: [32]uint8{0x7e, 0xae, 0x83, 0x58, 0xb7, 0x77, 0x5, 0xca, 0xe3, 0xda, 0x32, 0x8f, 0x7b, 0xa4, 0x2f, 0x4c, 0xaf, 0x5f, 0xfa, 0x94, 0x36, 0xe4, 0xf9, 0x7, 0xc6, 0xd6, 0xb7, 0x90, 0xf3, 0xe5, 0xb5, 0x3}}
return a, nil
}
@ -1539,7 +1540,7 @@ func _1673373000_add_repliedUpSql() (*asset, error) {
return nil, err
}
info := bindataFileInfo{name: "1673373000_add_replied.up.sql", size: 67, mode: os.FileMode(0644), modTime: time.Unix(1687889856, 0)}
info := bindataFileInfo{name: "1673373000_add_replied.up.sql", size: 67, mode: os.FileMode(0644), modTime: time.Unix(1687875194, 0)}
a := &asset{bytes: bytes, info: info, digest: [32]uint8{0xd5, 0x1c, 0xae, 0xf2, 0xf, 0xb4, 0xc2, 0xba, 0x3c, 0xfe, 0x7b, 0xb0, 0xf, 0xf, 0xd5, 0xbc, 0xe2, 0xa7, 0xad, 0x50, 0xd9, 0x5a, 0xe8, 0x96, 0x22, 0x65, 0x89, 0xcf, 0x4a, 0x9a, 0x1b, 0x94}}
return a, nil
}
@ -1559,7 +1560,7 @@ func _1673428910_add_image_width_heightUpSql() (*asset, error) {
return nil, err
}
info := bindataFileInfo{name: "1673428910_add_image_width_height.up.sql", size: 117, mode: os.FileMode(0644), modTime: time.Unix(1687889856, 0)}
info := bindataFileInfo{name: "1673428910_add_image_width_height.up.sql", size: 117, mode: os.FileMode(0644), modTime: time.Unix(1687875194, 0)}
a := &asset{bytes: bytes, info: info, digest: [32]uint8{0x74, 0xda, 0x93, 0x2a, 0x9b, 0x6b, 0xb7, 0x96, 0xcd, 0xac, 0xf, 0xaf, 0x54, 0x89, 0x9e, 0x91, 0x5b, 0xd0, 0x4a, 0xa, 0x8d, 0x9e, 0x80, 0x66, 0x26, 0x9e, 0xb5, 0xa9, 0x8, 0xec, 0x2d, 0x6c}}
return a, nil
}
@ -1579,7 +1580,7 @@ func _1674210659_add_contact_request_local_clockUpSql() (*asset, error) {
return nil, err
}
info := bindataFileInfo{name: "1674210659_add_contact_request_local_clock.up.sql", size: 691, mode: os.FileMode(0644), modTime: time.Unix(1687889856, 0)}
info := bindataFileInfo{name: "1674210659_add_contact_request_local_clock.up.sql", size: 691, mode: os.FileMode(0644), modTime: time.Unix(1687875194, 0)}
a := &asset{bytes: bytes, info: info, digest: [32]uint8{0x92, 0x72, 0x39, 0xfe, 0x72, 0x98, 0xfc, 0x91, 0x20, 0x10, 0xe8, 0xf5, 0xac, 0x79, 0xa8, 0x1c, 0xca, 0x7b, 0x35, 0xa, 0xc1, 0x56, 0x49, 0x9a, 0xfc, 0xbd, 0x64, 0x9d, 0xdf, 0xd2, 0x60, 0x70}}
return a, nil
}
@ -1599,7 +1600,7 @@ func _1675212323_add_deleted_byUpSql() (*asset, error) {
return nil, err
}
info := bindataFileInfo{name: "1675212323_add_deleted_by.up.sql", size: 57, mode: os.FileMode(0644), modTime: time.Unix(1687889856, 0)}
info := bindataFileInfo{name: "1675212323_add_deleted_by.up.sql", size: 57, mode: os.FileMode(0644), modTime: time.Unix(1687875194, 0)}
a := &asset{bytes: bytes, info: info, digest: [32]uint8{0x85, 0x37, 0x29, 0x2f, 0xd, 0x5a, 0xb6, 0xdb, 0xa7, 0x8, 0x86, 0xfc, 0x7a, 0x70, 0xd8, 0x4d, 0xe6, 0xf0, 0x57, 0xe7, 0xd1, 0x95, 0xd5, 0x4, 0x40, 0x2f, 0x7a, 0x5, 0x4f, 0xc2, 0x97, 0xbc}}
return a, nil
}
@ -1619,7 +1620,7 @@ func _1675247084_add_activity_center_statesUpSql() (*asset, error) {
return nil, err
}
info := bindataFileInfo{name: "1675247084_add_activity_center_states.up.sql", size: 136, mode: os.FileMode(0644), modTime: time.Unix(1687889856, 0)}
info := bindataFileInfo{name: "1675247084_add_activity_center_states.up.sql", size: 136, mode: os.FileMode(0644), modTime: time.Unix(1687875194, 0)}
a := &asset{bytes: bytes, info: info, digest: [32]uint8{0xba, 0x90, 0x7d, 0x55, 0xc7, 0x40, 0x29, 0x26, 0x97, 0x45, 0x5c, 0xdf, 0xba, 0x61, 0xb, 0xfc, 0x3d, 0x7a, 0x6c, 0x42, 0xe4, 0x95, 0x78, 0xb0, 0xc5, 0x1f, 0x73, 0xe9, 0x33, 0x51, 0xc8, 0x81}}
return a, nil
}
@ -1639,7 +1640,7 @@ func _1675272329_fix_protocol_migrationUpSql() (*asset, error) {
return nil, err
}
info := bindataFileInfo{name: "1675272329_fix_protocol_migration.up.sql", size: 183, mode: os.FileMode(0644), modTime: time.Unix(1687889856, 0)}
info := bindataFileInfo{name: "1675272329_fix_protocol_migration.up.sql", size: 183, mode: os.FileMode(0644), modTime: time.Unix(1687875194, 0)}
a := &asset{bytes: bytes, info: info, digest: [32]uint8{0xb6, 0xe0, 0x11, 0x4c, 0x66, 0x55, 0x72, 0xd3, 0xe6, 0x98, 0xa4, 0xe7, 0x44, 0xf9, 0x3b, 0x3a, 0x3f, 0xd9, 0x91, 0x1e, 0x4f, 0xfc, 0x56, 0x63, 0xe5, 0xa4, 0x83, 0xfc, 0x7c, 0xcf, 0x18, 0x99}}
return a, nil
}
@ -1659,7 +1660,7 @@ func _1676998418_fix_activity_center_migrationUpSql() (*asset, error) {
return nil, err
}
info := bindataFileInfo{name: "1676998418_fix_activity_center_migration.up.sql", size: 178, mode: os.FileMode(0644), modTime: time.Unix(1687889856, 0)}
info := bindataFileInfo{name: "1676998418_fix_activity_center_migration.up.sql", size: 178, mode: os.FileMode(0644), modTime: time.Unix(1687875194, 0)}
a := &asset{bytes: bytes, info: info, digest: [32]uint8{0x8a, 0xdc, 0x64, 0xb1, 0x47, 0x67, 0xda, 0x2c, 0x26, 0x29, 0x6b, 0x6f, 0xb, 0xfa, 0x45, 0xf3, 0xad, 0x8b, 0x1a, 0x5f, 0x1c, 0xed, 0xd7, 0xea, 0x54, 0xf5, 0x3f, 0xb8, 0xf6, 0xf9, 0x44, 0x53}}
return a, nil
}
@ -1679,7 +1680,7 @@ func _1677278861_add_deleted_column_to_activity_center_notifications_tableUpSql(
return nil, err
}
info := bindataFileInfo{name: "1677278861_add_deleted_column_to_activity_center_notifications_table.up.sql", size: 381, mode: os.FileMode(0644), modTime: time.Unix(1687889856, 0)}
info := bindataFileInfo{name: "1677278861_add_deleted_column_to_activity_center_notifications_table.up.sql", size: 381, mode: os.FileMode(0644), modTime: time.Unix(1687875194, 0)}
a := &asset{bytes: bytes, info: info, digest: [32]uint8{0x38, 0x3a, 0x95, 0xaf, 0x81, 0xb0, 0x85, 0x8d, 0x73, 0xda, 0x7b, 0x2a, 0x35, 0xa6, 0xaa, 0xcc, 0x4c, 0x35, 0xa3, 0xa8, 0xbd, 0xd1, 0x37, 0xe8, 0x5d, 0x83, 0xa4, 0x33, 0x1f, 0x10, 0xe4, 0xe6}}
return a, nil
}
@ -1699,7 +1700,7 @@ func _1677486338_add_community_tokens_tableUpSql() (*asset, error) {
return nil, err
}
info := bindataFileInfo{name: "1677486338_add_community_tokens_table.up.sql", size: 527, mode: os.FileMode(0644), modTime: time.Unix(1687889856, 0)}
info := bindataFileInfo{name: "1677486338_add_community_tokens_table.up.sql", size: 527, mode: os.FileMode(0644), modTime: time.Unix(1687875194, 0)}
a := &asset{bytes: bytes, info: info, digest: [32]uint8{0xfb, 0x7b, 0x3d, 0x7e, 0x79, 0xc4, 0x3a, 0xf1, 0xda, 0x4b, 0xc6, 0xd1, 0xd, 0xfb, 0xb2, 0xb9, 0x7f, 0x81, 0x29, 0xab, 0xd8, 0x1, 0x20, 0xd7, 0xe1, 0xaf, 0x3e, 0x67, 0x1b, 0xdb, 0xf9, 0xd5}}
return a, nil
}
@ -1719,7 +1720,7 @@ func _1678292329_add_collapsed_categoriesUpSql() (*asset, error) {
return nil, err
}
info := bindataFileInfo{name: "1678292329_add_collapsed_categories.up.sql", size: 170, mode: os.FileMode(0644), modTime: time.Unix(1687889856, 0)}
info := bindataFileInfo{name: "1678292329_add_collapsed_categories.up.sql", size: 170, mode: os.FileMode(0644), modTime: time.Unix(1687875194, 0)}
a := &asset{bytes: bytes, info: info, digest: [32]uint8{0x46, 0x63, 0x86, 0xd5, 0x7, 0xe2, 0x25, 0x15, 0x1b, 0xfe, 0xf3, 0xe, 0x50, 0x48, 0x11, 0x3c, 0x7c, 0xc6, 0xe5, 0xab, 0x8d, 0x1f, 0xe8, 0x3c, 0xcb, 0xf0, 0x8d, 0xa7, 0x49, 0x4c, 0x16, 0x4f}}
return a, nil
}
@ -1739,7 +1740,7 @@ func _1678800760_add_index_to_raw_messagesUpSql() (*asset, error) {
return nil, err
}
info := bindataFileInfo{name: "1678800760_add_index_to_raw_messages.up.sql", size: 88, mode: os.FileMode(0644), modTime: time.Unix(1687889856, 0)}
info := bindataFileInfo{name: "1678800760_add_index_to_raw_messages.up.sql", size: 88, mode: os.FileMode(0644), modTime: time.Unix(1687875194, 0)}
a := &asset{bytes: bytes, info: info, digest: [32]uint8{0x9d, 0xd9, 0x8d, 0x22, 0x46, 0xae, 0x7b, 0x53, 0x3e, 0x51, 0x39, 0xad, 0xad, 0x38, 0x50, 0x6, 0xfa, 0xb9, 0xc4, 0x9f, 0x8d, 0xd2, 0x67, 0x0, 0xef, 0x58, 0x13, 0xab, 0x6a, 0x67, 0xf3, 0x7e}}
return a, nil
}
@ -1759,7 +1760,7 @@ func _1678877478_add_communities_requests_to_join_revealed_addresses_tableUpSql(
return nil, err
}
info := bindataFileInfo{name: "1678877478_add_communities_requests_to_join_revealed_addresses_table.up.sql", size: 168, mode: os.FileMode(0644), modTime: time.Unix(1687889856, 0)}
info := bindataFileInfo{name: "1678877478_add_communities_requests_to_join_revealed_addresses_table.up.sql", size: 168, mode: os.FileMode(0644), modTime: time.Unix(1687875194, 0)}
a := &asset{bytes: bytes, info: info, digest: [32]uint8{0x82, 0x1, 0xb4, 0xb2, 0x94, 0x25, 0xd5, 0x2e, 0x45, 0xc3, 0xb1, 0x2c, 0xeb, 0x1a, 0x52, 0xe0, 0x4b, 0x9b, 0x46, 0xf4, 0xc, 0xac, 0x1, 0x1e, 0x90, 0xbc, 0x64, 0x38, 0x10, 0xf1, 0xaf, 0xac}}
return a, nil
}
@ -1779,7 +1780,7 @@ func _1679326850_add_community_token_ownersUpSql() (*asset, error) {
return nil, err
}
info := bindataFileInfo{name: "1679326850_add_community_token_owners.up.sql", size: 206, mode: os.FileMode(0644), modTime: time.Unix(1687889856, 0)}
info := bindataFileInfo{name: "1679326850_add_community_token_owners.up.sql", size: 206, mode: os.FileMode(0644), modTime: time.Unix(1687875194, 0)}
a := &asset{bytes: bytes, info: info, digest: [32]uint8{0xe9, 0xe6, 0x25, 0x67, 0xd1, 0xd6, 0x54, 0x88, 0xb1, 0x80, 0x1e, 0x2d, 0x9c, 0xfa, 0x1c, 0xc7, 0x63, 0x6e, 0xf9, 0x66, 0xb1, 0x68, 0xc6, 0xf8, 0x51, 0xb6, 0xd5, 0x4e, 0x93, 0x39, 0x5e, 0xc0}}
return a, nil
}
@ -1799,7 +1800,7 @@ func _1680011500_add_album_images_countUpSql() (*asset, error) {
return nil, err
}
info := bindataFileInfo{name: "1680011500_add_album_images_count.up.sql", size: 71, mode: os.FileMode(0644), modTime: time.Unix(1687889856, 0)}
info := bindataFileInfo{name: "1680011500_add_album_images_count.up.sql", size: 71, mode: os.FileMode(0644), modTime: time.Unix(1687875194, 0)}
a := &asset{bytes: bytes, info: info, digest: [32]uint8{0x2e, 0x55, 0x99, 0x31, 0xcc, 0x80, 0x78, 0xc3, 0x51, 0x13, 0x63, 0x6f, 0x1a, 0xfd, 0x53, 0xd2, 0xf4, 0x13, 0x4b, 0xb2, 0x4f, 0x99, 0xb8, 0x7b, 0x7, 0x99, 0xb6, 0xab, 0x88, 0x2e, 0x7, 0x8}}
return a, nil
}
@ -1819,7 +1820,7 @@ func _1680114896_add_index_on_album_idUpSql() (*asset, error) {
return nil, err
}
info := bindataFileInfo{name: "1680114896_add_index_on_album_id.up.sql", size: 83, mode: os.FileMode(0644), modTime: time.Unix(1687889856, 0)}
info := bindataFileInfo{name: "1680114896_add_index_on_album_id.up.sql", size: 83, mode: os.FileMode(0644), modTime: time.Unix(1687875194, 0)}
a := &asset{bytes: bytes, info: info, digest: [32]uint8{0xb3, 0x7e, 0xd5, 0xcd, 0x2d, 0xab, 0xd4, 0x32, 0x26, 0x50, 0x3a, 0x5b, 0x8e, 0x1c, 0xcc, 0x35, 0xf8, 0xa1, 0x2a, 0xc1, 0x23, 0xf6, 0x90, 0xfe, 0x84, 0x3, 0xde, 0x5a, 0xee, 0xc6, 0xfc, 0x2a}}
return a, nil
}
@ -1839,7 +1840,7 @@ func _1681655289_add_mute_tillUpSql() (*asset, error) {
return nil, err
}
info := bindataFileInfo{name: "1681655289_add_mute_till.up.sql", size: 51, mode: os.FileMode(0644), modTime: time.Unix(1687889856, 0)}
info := bindataFileInfo{name: "1681655289_add_mute_till.up.sql", size: 51, mode: os.FileMode(0644), modTime: time.Unix(1687875194, 0)}
a := &asset{bytes: bytes, info: info, digest: [32]uint8{0xd1, 0xbe, 0xce, 0xb8, 0xe1, 0x30, 0xe7, 0xa7, 0xe0, 0x7d, 0x97, 0xf4, 0x26, 0xb8, 0x57, 0x1d, 0x2a, 0xed, 0x18, 0xf2, 0xa, 0xe3, 0x77, 0x29, 0x18, 0x55, 0x9, 0x74, 0x2c, 0x24, 0x5a, 0x19}}
return a, nil
}
@ -1859,7 +1860,7 @@ func _1681934966_add_index_response_toUpSql() (*asset, error) {
return nil, err
}
info := bindataFileInfo{name: "1681934966_add_index_response_to.up.sql", size: 70, mode: os.FileMode(0644), modTime: time.Unix(1687889856, 0)}
info := bindataFileInfo{name: "1681934966_add_index_response_to.up.sql", size: 70, mode: os.FileMode(0644), modTime: time.Unix(1687875194, 0)}
a := &asset{bytes: bytes, info: info, digest: [32]uint8{0x3b, 0xed, 0xa6, 0x7e, 0x51, 0xf2, 0xa1, 0x3c, 0x78, 0x9a, 0xa7, 0x7a, 0x51, 0x25, 0x7d, 0xdd, 0x4b, 0xf3, 0x45, 0xeb, 0x3f, 0xad, 0x23, 0x3e, 0xac, 0x16, 0x28, 0x62, 0x7, 0x8c, 0xe0, 0xa0}}
return a, nil
}
@ -1879,7 +1880,7 @@ func _1682528339_add_index_user_messages_unseenUpSql() (*asset, error) {
return nil, err
}
info := bindataFileInfo{name: "1682528339_add_index_user_messages_unseen.up.sql", size: 104, mode: os.FileMode(0644), modTime: time.Unix(1687889856, 0)}
info := bindataFileInfo{name: "1682528339_add_index_user_messages_unseen.up.sql", size: 104, mode: os.FileMode(0644), modTime: time.Unix(1687875194, 0)}
a := &asset{bytes: bytes, info: info, digest: [32]uint8{0x35, 0xfa, 0x98, 0xdd, 0x74, 0x5e, 0x21, 0x1f, 0xf2, 0x56, 0x17, 0x96, 0xfe, 0xbb, 0x44, 0x4c, 0xa1, 0xd8, 0x9f, 0x2e, 0x6, 0x2f, 0xd8, 0x23, 0xec, 0x94, 0x8c, 0x53, 0xf3, 0xf0, 0x40, 0xe7}}
return a, nil
}
@ -1899,7 +1900,7 @@ func _1683707289_recreate_deleted_for_mesUpSql() (*asset, error) {
return nil, err
}
info := bindataFileInfo{name: "1683707289_recreate_deleted_for_mes.up.sql", size: 408, mode: os.FileMode(0644), modTime: time.Unix(1687889856, 0)}
info := bindataFileInfo{name: "1683707289_recreate_deleted_for_mes.up.sql", size: 408, mode: os.FileMode(0644), modTime: time.Unix(1687875194, 0)}
a := &asset{bytes: bytes, info: info, digest: [32]uint8{0x5b, 0x9d, 0xd6, 0x45, 0x41, 0x29, 0x44, 0xf6, 0x14, 0x38, 0xeb, 0xdf, 0x6b, 0x5d, 0x9c, 0x45, 0x4b, 0xc3, 0xa8, 0xbd, 0x38, 0x14, 0xd9, 0x73, 0xf1, 0x51, 0xbb, 0x9f, 0x14, 0x36, 0xf2, 0x11}}
return a, nil
}
@ -1919,7 +1920,7 @@ func _1683725607_mark_discord_messages_as_seenUpSql() (*asset, error) {
return nil, err
}
info := bindataFileInfo{name: "1683725607_mark_discord_messages_as_seen.up.sql", size: 108, mode: os.FileMode(0644), modTime: time.Unix(1687889856, 0)}
info := bindataFileInfo{name: "1683725607_mark_discord_messages_as_seen.up.sql", size: 108, mode: os.FileMode(0644), modTime: time.Unix(1687875194, 0)}
a := &asset{bytes: bytes, info: info, digest: [32]uint8{0xd7, 0x2a, 0xc3, 0x43, 0xea, 0x5e, 0x3, 0x2e, 0xce, 0x79, 0xea, 0xa5, 0x67, 0x61, 0x8c, 0xe4, 0xb9, 0xb7, 0x4d, 0xd5, 0xd5, 0xb0, 0x35, 0xc8, 0x2b, 0xa0, 0x3f, 0xd8, 0xde, 0xea, 0x4e, 0x16}}
return a, nil
}
@ -1939,7 +1940,7 @@ func _1684174617_add_url_previews_to_user_messagesUpSql() (*asset, error) {
return nil, err
}
info := bindataFileInfo{name: "1684174617_add_url_previews_to_user_messages.up.sql", size: 58, mode: os.FileMode(0644), modTime: time.Unix(1687889856, 0)}
info := bindataFileInfo{name: "1684174617_add_url_previews_to_user_messages.up.sql", size: 58, mode: os.FileMode(0644), modTime: time.Unix(1687875194, 0)}
a := &asset{bytes: bytes, info: info, digest: [32]uint8{0xdc, 0xb0, 0x72, 0xe3, 0xe4, 0xa9, 0x63, 0x82, 0xea, 0x52, 0x70, 0xb6, 0xa0, 0x73, 0x55, 0x7a, 0x78, 0xa8, 0xd2, 0xb0, 0xf4, 0x78, 0x8a, 0xd, 0x5a, 0xa2, 0x9d, 0x92, 0xdc, 0xce, 0x1c, 0x71}}
return a, nil
}
@ -1959,7 +1960,7 @@ func _1684175608_add_token_balancesUpSql() (*asset, error) {
return nil, err
}
info := bindataFileInfo{name: "1684175608_add_token_balances.up.sql", size: 467, mode: os.FileMode(0644), modTime: time.Unix(1687889856, 0)}
info := bindataFileInfo{name: "1684175608_add_token_balances.up.sql", size: 467, mode: os.FileMode(0644), modTime: time.Unix(1687875194, 0)}
a := &asset{bytes: bytes, info: info, digest: [32]uint8{0x1b, 0x4e, 0xe0, 0x48, 0x34, 0x1, 0x4d, 0x88, 0x11, 0x54, 0x20, 0x52, 0x5c, 0x57, 0x14, 0xa9, 0xa9, 0x36, 0xa4, 0x28, 0x59, 0x48, 0xa8, 0xa, 0x76, 0xec, 0x37, 0xee, 0x9e, 0xd2, 0x20, 0xaa}}
return a, nil
}
@ -1979,7 +1980,7 @@ func _1684979808_sync_activity_center_notificationsUpSql() (*asset, error) {
return nil, err
}
info := bindataFileInfo{name: "1684979808_sync_activity_center_notifications.up.sql", size: 169, mode: os.FileMode(0644), modTime: time.Unix(1687889856, 0)}
info := bindataFileInfo{name: "1684979808_sync_activity_center_notifications.up.sql", size: 169, mode: os.FileMode(0644), modTime: time.Unix(1687875194, 0)}
a := &asset{bytes: bytes, info: info, digest: [32]uint8{0xd8, 0xf5, 0xf7, 0x94, 0xa9, 0xa1, 0x60, 0x26, 0x9d, 0xca, 0x31, 0xf, 0x14, 0xd, 0x70, 0xf8, 0xab, 0x40, 0x29, 0x73, 0x61, 0xbd, 0x1b, 0xb6, 0xc4, 0x31, 0x77, 0x9e, 0x32, 0xa8, 0xce, 0x6d}}
return a, nil
}
@ -1999,7 +2000,7 @@ func _1685383829_add_communities_mute_tillUpSql() (*asset, error) {
return nil, err
}
info := bindataFileInfo{name: "1685383829_add_communities_mute_till.up.sql", size: 69, mode: os.FileMode(0644), modTime: time.Unix(1687941008, 0)}
info := bindataFileInfo{name: "1685383829_add_communities_mute_till.up.sql", size: 69, mode: os.FileMode(0644), modTime: time.Unix(1687875194, 0)}
a := &asset{bytes: bytes, info: info, digest: [32]uint8{0xbf, 0x58, 0x96, 0xe5, 0x66, 0xcb, 0xde, 0xed, 0x76, 0xb8, 0x5a, 0x86, 0x81, 0x9a, 0x60, 0x51, 0x12, 0x37, 0x54, 0x9a, 0x36, 0x3e, 0xd1, 0x4a, 0xbe, 0x9a, 0xab, 0x20, 0x7f, 0x1d, 0xf4, 0x73}}
return a, nil
}
@ -2019,7 +2020,7 @@ func _1685964183_add_chainids_to_revealed_addressesUpSql() (*asset, error) {
return nil, err
}
info := bindataFileInfo{name: "1685964183_add_chainids_to_revealed_addresses.up.sql", size: 88, mode: os.FileMode(0644), modTime: time.Unix(1687889856, 0)}
info := bindataFileInfo{name: "1685964183_add_chainids_to_revealed_addresses.up.sql", size: 88, mode: os.FileMode(0644), modTime: time.Unix(1687875194, 0)}
a := &asset{bytes: bytes, info: info, digest: [32]uint8{0xc, 0xb5, 0xa8, 0xd7, 0xad, 0x9c, 0x54, 0xa5, 0xe9, 0xdb, 0x42, 0x2d, 0xd0, 0xd7, 0x22, 0x1, 0x93, 0xf3, 0x4f, 0x53, 0xf7, 0x1e, 0xbe, 0x4b, 0xac, 0xc7, 0x63, 0x15, 0xdf, 0xe0, 0x6, 0xf8}}
return a, nil
}
@ -2039,7 +2040,7 @@ func _1687370421_add_communities_muted_till_newUpSql() (*asset, error) {
return nil, err
}
info := bindataFileInfo{name: "1687370421_add_communities_muted_till_new.up.sql", size: 635, mode: os.FileMode(0644), modTime: time.Unix(1687889856, 0)}
info := bindataFileInfo{name: "1687370421_add_communities_muted_till_new.up.sql", size: 635, mode: os.FileMode(0644), modTime: time.Unix(1687875721, 0)}
a := &asset{bytes: bytes, info: info, digest: [32]uint8{0x65, 0x73, 0x96, 0x1d, 0xc8, 0x3e, 0xca, 0xf5, 0xdc, 0xe3, 0xac, 0x3f, 0x9c, 0xc3, 0x67, 0x12, 0x9c, 0x19, 0x1, 0x4, 0x2b, 0xea, 0x6b, 0xe1, 0x59, 0x59, 0x89, 0x3d, 0xef, 0x4a, 0x6e, 0xbe}}
return a, nil
}
@ -2059,11 +2060,31 @@ func _1687416607_add_communities_check_channel_permission_responses_tableUpSql()
return nil, err
}
info := bindataFileInfo{name: "1687416607_add_communities_check_channel_permission_responses_table.up.sql", size: 739, mode: os.FileMode(0644), modTime: time.Unix(1687889856, 0)}
info := bindataFileInfo{name: "1687416607_add_communities_check_channel_permission_responses_table.up.sql", size: 739, mode: os.FileMode(0644), modTime: time.Unix(1687875721, 0)}
a := &asset{bytes: bytes, info: info, digest: [32]uint8{0xc2, 0x6, 0x3, 0x1a, 0xde, 0x9d, 0xbc, 0x50, 0x9d, 0xf1, 0x6d, 0x5a, 0x1c, 0x28, 0x92, 0x19, 0x89, 0x76, 0x4e, 0x8b, 0x60, 0xa9, 0xf, 0xe9, 0x76, 0xf1, 0xee, 0x75, 0x92, 0xbd, 0xda, 0x72}}
return a, nil
}
var __1687856939_add_community_tokens_decimalsUpSql = []byte("\x1f\x8b\x08\x00\x00\x00\x00\x00\x00\xff\x72\xf4\x09\x71\x0d\x52\x08\x71\x74\xf2\x71\x55\x48\xce\xcf\xcd\x2d\xcd\xcb\x2c\xa9\x8c\x2f\xc9\xcf\x4e\xcd\x2b\x56\x70\x74\x71\x51\x70\xf6\xf7\x09\xf5\xf5\x53\x48\x49\x4d\xce\xcc\x4d\xcc\x29\x56\xf0\xf4\x0b\x51\x70\x71\x75\x73\x0c\xf5\x09\x51\x30\xb4\xb0\xe6\x02\x04\x00\x00\xff\xff\x00\x67\xca\x06\x41\x00\x00\x00")
func _1687856939_add_community_tokens_decimalsUpSqlBytes() ([]byte, error) {
return bindataRead(
__1687856939_add_community_tokens_decimalsUpSql,
"1687856939_add_community_tokens_decimals.up.sql",
)
}
func _1687856939_add_community_tokens_decimalsUpSql() (*asset, error) {
bytes, err := _1687856939_add_community_tokens_decimalsUpSqlBytes()
if err != nil {
return nil, err
}
info := bindataFileInfo{name: "1687856939_add_community_tokens_decimals.up.sql", size: 65, mode: os.FileMode(0644), modTime: time.Unix(1688042120, 0)}
a := &asset{bytes: bytes, info: info, digest: [32]uint8{0x59, 0x76, 0x42, 0x70, 0xc9, 0x7b, 0x16, 0xf6, 0xfe, 0x7, 0x1c, 0x99, 0xe5, 0x38, 0xfd, 0xa0, 0x3b, 0x93, 0x40, 0xbc, 0x66, 0xc2, 0xd1, 0xdd, 0xe9, 0xc7, 0xbf, 0xae, 0x36, 0xcc, 0x46, 0x57}}
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) {
@ -2079,7 +2100,7 @@ func readmeMd() (*asset, error) {
return nil, err
}
info := bindataFileInfo{name: "README.md", size: 554, mode: os.FileMode(0644), modTime: time.Unix(1687889856, 0)}
info := bindataFileInfo{name: "README.md", size: 554, mode: os.FileMode(0644), modTime: time.Unix(1687875194, 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
}
@ -2099,7 +2120,7 @@ func docGo() (*asset, error) {
return nil, err
}
info := bindataFileInfo{name: "doc.go", size: 850, mode: os.FileMode(0644), modTime: time.Unix(1687889856, 0)}
info := bindataFileInfo{name: "doc.go", size: 850, mode: os.FileMode(0644), modTime: time.Unix(1687875194, 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
}
@ -2290,6 +2311,7 @@ var _bindata = map[string]func() (*asset, error){
"1685964183_add_chainids_to_revealed_addresses.up.sql": _1685964183_add_chainids_to_revealed_addressesUpSql,
"1687370421_add_communities_muted_till_new.up.sql": _1687370421_add_communities_muted_till_newUpSql,
"1687416607_add_communities_check_channel_permission_responses_table.up.sql": _1687416607_add_communities_check_channel_permission_responses_tableUpSql,
"1687856939_add_community_tokens_decimals.up.sql": _1687856939_add_community_tokens_decimalsUpSql,
"README.md": readmeMd,
"doc.go": docGo,
}
@ -2435,6 +2457,7 @@ var _bintree = &bintree{nil, map[string]*bintree{
"1685964183_add_chainids_to_revealed_addresses.up.sql": {_1685964183_add_chainids_to_revealed_addressesUpSql, map[string]*bintree{}},
"1687370421_add_communities_muted_till_new.up.sql": {_1687370421_add_communities_muted_till_newUpSql, map[string]*bintree{}},
"1687416607_add_communities_check_channel_permission_responses_table.up.sql": {_1687416607_add_communities_check_channel_permission_responses_tableUpSql, map[string]*bintree{}},
"1687856939_add_community_tokens_decimals.up.sql": {_1687856939_add_community_tokens_decimalsUpSql, map[string]*bintree{}},
"README.md": {readmeMd, map[string]*bintree{}},
"doc.go": {docGo, map[string]*bintree{}},
}}

View File

@ -0,0 +1 @@
ALTER TABLE community_tokens ADD COLUMN decimals INT DEFAULT 18;

View File

@ -236,6 +236,7 @@ type CommunityTokenMetadata struct {
TokenType CommunityTokenType `protobuf:"varint,4,opt,name=tokenType,proto3,enum=protobuf.CommunityTokenType" json:"tokenType,omitempty"`
Symbol string `protobuf:"bytes,5,opt,name=symbol,proto3" json:"symbol,omitempty"`
Name string `protobuf:"bytes,6,opt,name=name,proto3" json:"name,omitempty"`
Decimals uint32 `protobuf:"varint,7,opt,name=decimals,proto3" json:"decimals,omitempty"`
XXX_NoUnkeyedLiteral struct{} `json:"-"`
XXX_unrecognized []byte `json:"-"`
XXX_sizecache int32 `json:"-"`
@ -308,6 +309,13 @@ func (m *CommunityTokenMetadata) GetName() string {
return ""
}
func (m *CommunityTokenMetadata) GetDecimals() uint32 {
if m != nil {
return m.Decimals
}
return 0
}
type CommunityPermissions struct {
EnsOnly bool `protobuf:"varint,1,opt,name=ens_only,json=ensOnly,proto3" json:"ens_only,omitempty"`
// https://gitlab.matrix.org/matrix-org/olm/blob/master/docs/megolm.md is a candidate for the algorithm to be used in case we want to have private communityal chats, lighter than pairwise encryption using the DR, less secure, but more efficient for large number of participants
@ -1651,130 +1659,130 @@ func init() {
}
var fileDescriptor_f937943d74c1cd8b = []byte{
// 1991 bytes of a gzipped FileDescriptorProto
0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xcc, 0x58, 0x4f, 0x73, 0x23, 0x47,
0x15, 0xcf, 0x48, 0xb2, 0x2d, 0x3d, 0x49, 0x5e, 0xb9, 0xf7, 0x8f, 0xc7, 0xde, 0xdd, 0xac, 0x77,
0x80, 0xc2, 0x29, 0x0a, 0x6d, 0xe2, 0x40, 0xb1, 0x95, 0x40, 0x12, 0xad, 0x3c, 0x6c, 0xc4, 0xae,
0x47, 0x4e, 0x4b, 0x9b, 0x85, 0x14, 0x30, 0xd5, 0x9e, 0x69, 0xcb, 0x5d, 0x2b, 0xcd, 0x88, 0xe9,
0x96, 0x0b, 0x71, 0xc8, 0x89, 0x0f, 0xc1, 0x9d, 0x3b, 0x5f, 0x81, 0x03, 0x77, 0xee, 0xdc, 0xe0,
0x42, 0x71, 0xe4, 0xc4, 0x81, 0x13, 0xd5, 0x7f, 0x66, 0x34, 0x23, 0x4b, 0xeb, 0x4d, 0x05, 0xaa,
// 1999 bytes of a gzipped FileDescriptorProto
0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xcc, 0x58, 0x4f, 0x73, 0x1b, 0x49,
0x15, 0xdf, 0x91, 0x64, 0x5b, 0x7a, 0x92, 0x1c, 0xb9, 0x93, 0xd8, 0x63, 0x27, 0xd9, 0x28, 0x03,
0x14, 0xde, 0xa2, 0x50, 0x76, 0xbd, 0x50, 0xa4, 0x76, 0x61, 0x77, 0x15, 0x79, 0xc8, 0x8a, 0xc4,
0x23, 0x6f, 0x5b, 0xd9, 0xc0, 0x16, 0x30, 0xd5, 0x9e, 0x69, 0xcb, 0x5d, 0x91, 0x66, 0xc4, 0x74,
0xcb, 0x85, 0x38, 0xec, 0x81, 0xe2, 0x43, 0x70, 0xe7, 0xce, 0x57, 0xe0, 0xc0, 0x9d, 0x3b, 0x37,
0xb8, 0x71, 0xe4, 0xc4, 0x81, 0x13, 0xd5, 0x7f, 0x66, 0x34, 0x23, 0x4b, 0x49, 0xb6, 0x16, 0xaa,
0x38, 0x69, 0xde, 0xeb, 0xd7, 0xef, 0xf5, 0x7b, 0xef, 0xd7, 0xaf, 0xdf, 0x13, 0xec, 0x04, 0xf1,
0x64, 0x32, 0x8b, 0x98, 0x60, 0x94, 0xb7, 0xa7, 0x49, 0x2c, 0x62, 0x54, 0x55, 0x3f, 0x67, 0xb3,
0xf3, 0xfd, 0x9b, 0xc1, 0x05, 0x11, 0x3e, 0x0b, 0x69, 0x24, 0x98, 0x98, 0xeb, 0xe5, 0xfd, 0x3a,
0x8d, 0x66, 0x13, 0x23, 0xeb, 0x5c, 0xc2, 0xc6, 0xd3, 0x84, 0x44, 0x02, 0x3d, 0x84, 0x46, 0xaa,
0x69, 0xee, 0xb3, 0xd0, 0xb6, 0x0e, 0xac, 0xc3, 0x06, 0xae, 0x67, 0xbc, 0x5e, 0x88, 0xee, 0x42,
0x6d, 0x42, 0x27, 0x67, 0x34, 0x91, 0xeb, 0x25, 0xb5, 0x5e, 0xd5, 0x8c, 0x5e, 0x88, 0x76, 0x61,
0xcb, 0x18, 0xb3, 0xcb, 0x07, 0xd6, 0x61, 0x0d, 0x6f, 0x4a, 0xb2, 0x17, 0xa2, 0x5b, 0xb0, 0x11,
0x8c, 0xe3, 0xe0, 0x95, 0x5d, 0x39, 0xb0, 0x0e, 0x2b, 0x58, 0x13, 0xce, 0xbf, 0x2d, 0xb8, 0xd1,
0x4d, 0x75, 0x9f, 0x28, 0x25, 0xe8, 0xfb, 0xb0, 0x91, 0xc4, 0x63, 0xca, 0x6d, 0xeb, 0xa0, 0x7c,
0xb8, 0x7d, 0xf4, 0xa0, 0x9d, 0xfa, 0xd1, 0x5e, 0x92, 0x6c, 0x63, 0x29, 0x86, 0xb5, 0x34, 0xfa,
0x31, 0xec, 0x24, 0xf4, 0x92, 0x92, 0x31, 0x0d, 0x7d, 0x12, 0x04, 0xf1, 0x2c, 0x12, 0xdc, 0x2e,
0x1d, 0x94, 0x0f, 0xeb, 0x47, 0x7b, 0x0b, 0x15, 0xd8, 0x88, 0x74, 0xb4, 0x04, 0x6e, 0x25, 0x45,
0x06, 0x77, 0x2e, 0x60, 0x43, 0xe9, 0x45, 0x4d, 0xa8, 0xe1, 0xfe, 0x73, 0xd7, 0xf7, 0xfa, 0x9e,
0xdb, 0x7a, 0x0b, 0x6d, 0x03, 0x28, 0xb2, 0xff, 0xd2, 0x73, 0x71, 0xcb, 0x42, 0xb7, 0x61, 0x47,
0xd1, 0x27, 0x1d, 0xaf, 0xf3, 0xd4, 0xf5, 0x5f, 0x0c, 0x5c, 0x3c, 0x68, 0x95, 0xd0, 0x1e, 0xdc,
0xd6, 0xec, 0xfe, 0xb1, 0x8b, 0x3b, 0x43, 0xd7, 0xef, 0xf6, 0xbd, 0xa1, 0xeb, 0x0d, 0x5b, 0xe5,
0x4c, 0x43, 0xe7, 0xf8, 0xa4, 0xe7, 0xb5, 0x2a, 0xce, 0xdf, 0x4b, 0x70, 0x27, 0x73, 0x69, 0x18,
0xbf, 0xa2, 0xd1, 0x09, 0x15, 0x24, 0x24, 0x82, 0xa0, 0x73, 0x40, 0x41, 0x1c, 0x89, 0x84, 0x04,
0xc2, 0x27, 0x61, 0x98, 0x50, 0xce, 0x4d, 0x40, 0xea, 0x47, 0x3f, 0x58, 0x11, 0x90, 0xc2, 0xee,
0x76, 0xd7, 0x6c, 0xed, 0xa4, 0x3b, 0xdd, 0x48, 0x24, 0x73, 0xbc, 0x13, 0x2c, 0xf3, 0xd1, 0x01,
0xd4, 0x43, 0xca, 0x83, 0x84, 0x4d, 0x05, 0x8b, 0x23, 0x95, 0xcd, 0x1a, 0xce, 0xb3, 0x64, 0xde,
0xd8, 0x84, 0x8c, 0xa8, 0x49, 0xa7, 0x26, 0xd0, 0x07, 0x50, 0x13, 0xd2, 0xe4, 0x70, 0x3e, 0xa5,
0x2a, 0xa3, 0xdb, 0x47, 0xf7, 0xd6, 0x1d, 0x4b, 0xca, 0xe0, 0x85, 0x38, 0xba, 0x03, 0x9b, 0x7c,
0x3e, 0x39, 0x8b, 0xc7, 0xf6, 0x86, 0x46, 0x88, 0xa6, 0x10, 0x82, 0x4a, 0x44, 0x26, 0xd4, 0xde,
0x54, 0x5c, 0xf5, 0xbd, 0x7f, 0x2c, 0x23, 0xb4, 0xca, 0x19, 0xd4, 0x82, 0xf2, 0x2b, 0x3a, 0x57,
0xf8, 0xac, 0x60, 0xf9, 0x29, 0x4f, 0x7a, 0x49, 0xc6, 0x33, 0x6a, 0xbc, 0xd0, 0xc4, 0x07, 0xa5,
0xc7, 0x96, 0xf3, 0x57, 0x0b, 0x6e, 0x65, 0x67, 0x3a, 0xa5, 0xc9, 0x84, 0x71, 0xce, 0xe2, 0x88,
0xa3, 0x3d, 0xa8, 0xd2, 0x88, 0xfb, 0x71, 0x34, 0xd6, 0x9a, 0xaa, 0x78, 0x8b, 0x46, 0xbc, 0x1f,
0x8d, 0xe7, 0xc8, 0x86, 0xad, 0x69, 0xc2, 0x2e, 0x89, 0xd0, 0xfa, 0xaa, 0x38, 0x25, 0xd1, 0x8f,
0x60, 0x93, 0x04, 0x01, 0xe5, 0x5c, 0x85, 0x64, 0xfb, 0xe8, 0x5b, 0x2b, 0x1c, 0xcf, 0x19, 0x69,
0x77, 0x94, 0x30, 0x36, 0x9b, 0x9c, 0x21, 0x6c, 0x6a, 0x0e, 0x42, 0xb0, 0xfd, 0xc2, 0x7b, 0xe6,
0xf5, 0x5f, 0x7a, 0x7e, 0xa7, 0xdb, 0x75, 0x07, 0x83, 0xd6, 0x5b, 0x68, 0x07, 0x9a, 0x5e, 0xdf,
0x3f, 0x71, 0x4f, 0x9e, 0xb8, 0x78, 0xf0, 0x69, 0xef, 0xb4, 0x65, 0xa1, 0x9b, 0x70, 0xa3, 0xe7,
0x7d, 0xde, 0x1b, 0x76, 0x86, 0xbd, 0xbe, 0xe7, 0xf7, 0xbd, 0xe7, 0x3f, 0x6b, 0x95, 0x24, 0x96,
0xfa, 0x9e, 0x8f, 0xdd, 0xcf, 0x5e, 0xb8, 0x83, 0x61, 0xab, 0xec, 0xfc, 0xb6, 0x0c, 0x4d, 0x15,
0xed, 0x6e, 0xc2, 0x04, 0x4d, 0x18, 0x41, 0xbf, 0x78, 0x0d, 0x84, 0xda, 0x8b, 0x23, 0x17, 0x36,
0x7d, 0x05, 0xe4, 0xbc, 0x0b, 0x15, 0x21, 0x93, 0x5f, 0x7a, 0x83, 0xe4, 0x2b, 0xc9, 0x5c, 0xde,
0xcb, 0x2b, 0xf3, 0x5e, 0x59, 0xe4, 0x5d, 0xca, 0x92, 0x89, 0xbc, 0x8f, 0x29, 0x46, 0x34, 0x25,
0x6b, 0x8f, 0x02, 0x92, 0xcf, 0x42, 0x6e, 0x6f, 0x1e, 0x94, 0x0f, 0x2b, 0xb8, 0xaa, 0x18, 0xbd,
0x90, 0xa3, 0x07, 0x50, 0x97, 0xd9, 0x9c, 0x12, 0x21, 0x68, 0x12, 0xd9, 0x5b, 0x6a, 0x27, 0xd0,
0x88, 0x9f, 0x6a, 0x0e, 0xda, 0x87, 0x6a, 0x48, 0x03, 0x36, 0x21, 0x63, 0x6e, 0x57, 0x15, 0x70,
0x32, 0xfa, 0xbf, 0x84, 0xb4, 0xbf, 0x95, 0xc0, 0x2e, 0x06, 0x60, 0x81, 0x04, 0xb4, 0x0d, 0x25,
0x53, 0x51, 0x6b, 0xb8, 0xc4, 0x42, 0xf4, 0x61, 0x21, 0x84, 0xdf, 0x5e, 0x17, 0xc2, 0x85, 0x86,
0x76, 0x2e, 0x9a, 0x1f, 0xc1, 0xb6, 0x8e, 0x44, 0x60, 0x72, 0x67, 0x97, 0x55, 0x6a, 0x77, 0xd7,
0xa4, 0x16, 0x37, 0x45, 0x01, 0x1e, 0x7b, 0x50, 0x35, 0x85, 0x9a, 0xdb, 0x95, 0x83, 0xf2, 0x61,
0x0d, 0x6f, 0xe9, 0x4a, 0xcd, 0xd1, 0x7d, 0x00, 0xc6, 0xfd, 0x14, 0xfd, 0x1b, 0x0a, 0xfd, 0x35,
0xc6, 0x4f, 0x35, 0xc3, 0xf9, 0x12, 0x2a, 0xea, 0x1e, 0xdf, 0x03, 0x3b, 0x85, 0xef, 0xb0, 0xff,
0xcc, 0xf5, 0xfc, 0x53, 0x17, 0x9f, 0xf4, 0x06, 0x83, 0x5e, 0xdf, 0x6b, 0xbd, 0x85, 0x5a, 0xd0,
0x78, 0xe2, 0x76, 0xfb, 0x27, 0x69, 0xb9, 0xb3, 0x24, 0xb4, 0x0d, 0x47, 0xc3, 0xbb, 0x55, 0x42,
0xb7, 0xa0, 0xd5, 0xed, 0x78, 0xfe, 0xe7, 0x3d, 0xf7, 0xa5, 0xdf, 0xfd, 0xb4, 0xe3, 0x79, 0xee,
0xf3, 0x56, 0x19, 0xdd, 0x87, 0xbd, 0x8c, 0xdb, 0xf1, 0x8e, 0xfd, 0xd3, 0xfe, 0x60, 0x98, 0x2d,
0x57, 0x9c, 0x7f, 0xd5, 0x72, 0xb7, 0xf9, 0xb8, 0x58, 0xaa, 0xf4, 0x13, 0x63, 0xe5, 0x9e, 0x18,
0xe4, 0xc2, 0x96, 0x7e, 0x9d, 0xd2, 0xd7, 0xe0, 0x3b, 0x2b, 0x02, 0x9d, 0x53, 0xd3, 0xd6, 0x8f,
0x8b, 0x41, 0x7e, 0xba, 0x17, 0x7d, 0x02, 0xf5, 0xe9, 0xe2, 0x52, 0x2b, 0x08, 0xd7, 0x8f, 0xde,
0x7e, 0xfd, 0xd5, 0xc7, 0xf9, 0x2d, 0xe8, 0x08, 0xaa, 0xe9, 0x13, 0xac, 0x82, 0x5a, 0x3f, 0xba,
0x93, 0xdb, 0xae, 0x62, 0xaf, 0x57, 0x71, 0x26, 0x87, 0x3e, 0x86, 0x0d, 0x99, 0x15, 0x8d, 0xf5,
0xfa, 0xd1, 0x3b, 0xd7, 0x1c, 0x5d, 0x6a, 0x31, 0x07, 0xd7, 0xfb, 0x64, 0x9a, 0xcf, 0x48, 0xe4,
0x8f, 0x19, 0x17, 0xf6, 0x96, 0x4e, 0xf3, 0x19, 0x89, 0x9e, 0x33, 0x2e, 0x90, 0x07, 0x10, 0x10,
0x41, 0x47, 0x71, 0xc2, 0xa8, 0xbc, 0x0f, 0x4b, 0x85, 0x61, 0xb5, 0x81, 0x6c, 0x83, 0xb6, 0x92,
0xd3, 0x80, 0x1e, 0x83, 0x4d, 0x92, 0xe0, 0x82, 0x5d, 0x52, 0x7f, 0x42, 0x46, 0x11, 0x15, 0x63,
0x16, 0xbd, 0xf2, 0x75, 0x46, 0x6a, 0x2a, 0x23, 0x77, 0xcc, 0xfa, 0x49, 0xb6, 0xdc, 0x55, 0x29,
0x7a, 0x0a, 0xdb, 0x24, 0x9c, 0xb0, 0xc8, 0xe7, 0x54, 0x08, 0x16, 0x8d, 0xb8, 0x0d, 0x2a, 0x3e,
0x07, 0x2b, 0x4e, 0xd3, 0x91, 0x82, 0x03, 0x23, 0x87, 0x9b, 0x24, 0x4f, 0xa2, 0x6f, 0x40, 0x93,
0x45, 0x22, 0x89, 0xfd, 0x09, 0xe5, 0x5c, 0x3e, 0x5a, 0x75, 0x75, 0xd9, 0x1a, 0x8a, 0x79, 0xa2,
0x79, 0x52, 0x28, 0x9e, 0xe5, 0x85, 0x1a, 0x5a, 0x48, 0x31, 0x53, 0xa1, 0x7b, 0x50, 0xa3, 0x51,
0x90, 0xcc, 0xa7, 0x82, 0x86, 0x76, 0x53, 0x5f, 0x81, 0x8c, 0x21, 0x4b, 0x96, 0x20, 0x23, 0x6e,
0x6f, 0xab, 0x88, 0xaa, 0x6f, 0x44, 0x60, 0x47, 0x5f, 0xc8, 0x3c, 0x4c, 0x6e, 0xa8, 0xa8, 0x7e,
0xef, 0x9a, 0xa8, 0x2e, 0x5d, 0x73, 0x13, 0xdb, 0x96, 0x58, 0x62, 0xa3, 0x9f, 0xc3, 0xde, 0xa2,
0x39, 0x53, 0xab, 0xdc, 0x9f, 0x98, 0x47, 0xdf, 0x6e, 0x29, 0x53, 0x07, 0xd7, 0x35, 0x07, 0x78,
0x37, 0x28, 0xf0, 0x79, 0xd6, 0x73, 0xbc, 0x0b, 0xb7, 0x48, 0x20, 0x54, 0xfa, 0x34, 0xe6, 0x7d,
0xd5, 0x11, 0xd9, 0x3b, 0x2a, 0x77, 0x48, 0xaf, 0x99, 0xcb, 0xd1, 0x95, 0x2b, 0xfb, 0x2f, 0xa0,
0x91, 0xbf, 0x2c, 0xf9, 0x4a, 0x59, 0xd3, 0x95, 0xf2, 0x51, 0xbe, 0x52, 0x16, 0x1a, 0xb1, 0xa5,
0x5e, 0x2e, 0x57, 0x44, 0xf7, 0x3f, 0x03, 0x58, 0x00, 0x79, 0x85, 0xd2, 0xef, 0x16, 0x95, 0xee,
0xae, 0x50, 0x2a, 0xf7, 0xe7, 0x55, 0x7e, 0x01, 0x37, 0x96, 0xa0, 0xbb, 0x42, 0xef, 0x7b, 0x45,
0xbd, 0x77, 0x57, 0xe9, 0xd5, 0x4a, 0xe6, 0x79, 0xdd, 0x23, 0xb8, 0xbd, 0x32, 0x81, 0x2b, 0x2c,
0x3c, 0x2e, 0x5a, 0x70, 0xae, 0x2f, 0xf9, 0xf9, 0xc7, 0xe5, 0x97, 0xb9, 0x76, 0xb1, 0x70, 0x0d,
0xd0, 0x31, 0x3c, 0x98, 0xb2, 0x28, 0x05, 0xb4, 0x4f, 0xc6, 0xe3, 0x2c, 0x87, 0x34, 0x22, 0x67,
0x63, 0x1a, 0x9a, 0xf6, 0xe6, 0xee, 0x94, 0x45, 0x06, 0xe2, 0x9d, 0xf1, 0x38, 0x4b, 0x9e, 0x12,
0x71, 0xfe, 0x52, 0x82, 0x66, 0x21, 0x82, 0xe8, 0xa3, 0x45, 0xed, 0xd4, 0x8d, 0xc3, 0x37, 0xd7,
0xc4, 0xfa, 0xcd, 0x8a, 0x66, 0xe9, 0xeb, 0x15, 0xcd, 0xf2, 0x1b, 0x16, 0xcd, 0x07, 0x50, 0x37,
0x65, 0x49, 0x8d, 0x30, 0xba, 0xaf, 0x48, 0x2b, 0x95, 0x9c, 0x60, 0xf6, 0xa1, 0x3a, 0x8d, 0x39,
0x53, 0x2d, 0xaf, 0xac, 0xc4, 0x1b, 0x38, 0xa3, 0xff, 0x47, 0x98, 0x76, 0x42, 0xd8, 0xb9, 0x02,
0xa2, 0xe5, 0x83, 0x5a, 0x57, 0x0e, 0x9a, 0xb6, 0x46, 0xa5, 0x5c, 0x6b, 0x94, 0x3f, 0x7c, 0xb9,
0x78, 0x78, 0xe7, 0x77, 0x16, 0xdc, 0xcc, 0xcc, 0xf4, 0xa2, 0x4b, 0x26, 0x88, 0x7a, 0x19, 0xdf,
0x87, 0xdb, 0x8b, 0xc2, 0x91, 0x6f, 0xf8, 0xf5, 0x78, 0x77, 0x2b, 0x58, 0xf3, 0x9c, 0x8e, 0xe4,
0x4c, 0x68, 0x66, 0x3c, 0x4d, 0xac, 0x1f, 0xf0, 0xee, 0x03, 0x4c, 0x67, 0x67, 0x63, 0x16, 0xf8,
0x32, 0x5e, 0x15, 0xb5, 0xa7, 0xa6, 0x39, 0xcf, 0xe8, 0xdc, 0x39, 0x87, 0x1b, 0x4b, 0xb3, 0x97,
0x6c, 0xb1, 0x4d, 0x63, 0x6a, 0x5c, 0x4f, 0x49, 0x59, 0x7d, 0x39, 0x1b, 0x45, 0x44, 0xcc, 0x12,
0x6a, 0xcc, 0x2f, 0x18, 0xb2, 0x09, 0x0c, 0x2e, 0x08, 0xd3, 0x4d, 0x60, 0x59, 0x37, 0x81, 0x8a,
0xd1, 0x0b, 0xb9, 0xf3, 0x4f, 0x2b, 0x77, 0x4b, 0x30, 0xfd, 0xd5, 0x8c, 0x72, 0x31, 0x8c, 0x7f,
0x12, 0xb3, 0x75, 0xfd, 0x81, 0x99, 0x01, 0x72, 0x71, 0x96, 0x33, 0x80, 0x27, 0x43, 0xbd, 0xd6,
0xd7, 0xe5, 0x29, 0xb9, 0x72, 0x75, 0x4a, 0x7e, 0x08, 0x8d, 0x90, 0xf1, 0xe9, 0x98, 0xcc, 0xb5,
0xea, 0x0d, 0x33, 0x5a, 0x69, 0x9e, 0x52, 0xbf, 0x72, 0x62, 0xdd, 0xfc, 0xea, 0x13, 0xeb, 0x1f,
0x2c, 0xb8, 0x97, 0x03, 0x57, 0x14, 0xd0, 0xf1, 0xff, 0xb5, 0xe3, 0xce, 0x3f, 0x2c, 0x78, 0x7b,
0x75, 0x8e, 0x30, 0xe5, 0xd3, 0x38, 0xe2, 0x74, 0xcd, 0x91, 0x7f, 0x08, 0xb5, 0xcc, 0xd4, 0x6b,
0xaa, 0x49, 0x0e, 0xc5, 0x78, 0xb1, 0x41, 0xde, 0x1c, 0x39, 0x83, 0xa9, 0x27, 0xbd, 0xac, 0xca,
0x61, 0x46, 0x2f, 0xc0, 0x5e, 0xc9, 0x83, 0x7d, 0xd9, 0xdd, 0x8d, 0xab, 0xee, 0xde, 0x07, 0xd0,
0xdd, 0x8e, 0x3f, 0x4b, 0x98, 0x99, 0x5d, 0x6b, 0x9a, 0xf3, 0x22, 0x61, 0x0e, 0x86, 0xdd, 0xab,
0x9e, 0x3e, 0xa7, 0xe4, 0x72, 0x9d, 0x8b, 0xcb, 0x26, 0x4b, 0x57, 0x4c, 0x3a, 0x3f, 0x85, 0x87,
0xb9, 0x4a, 0xa3, 0x8b, 0xf9, 0x72, 0x63, 0xb5, 0x46, 0x7b, 0xf1, 0xb4, 0xa5, 0xe5, 0xd3, 0xfe,
0xd1, 0x82, 0xfa, 0x4b, 0xf2, 0x6a, 0x96, 0x76, 0x41, 0x2d, 0x28, 0x73, 0x36, 0x32, 0x55, 0x42,
0x7e, 0xca, 0x9b, 0x29, 0xd8, 0x84, 0x72, 0x41, 0x26, 0x53, 0xb5, 0xbf, 0x82, 0x17, 0x0c, 0x69,
0x54, 0xc4, 0x53, 0x16, 0xa8, 0xf0, 0x36, 0xb0, 0x26, 0xd4, 0x28, 0x4d, 0xe6, 0xe3, 0x98, 0xa4,
0x78, 0x49, 0x49, 0xbd, 0x12, 0x86, 0x2c, 0x1a, 0x99, 0xd0, 0xa6, 0xa4, 0xac, 0x7c, 0x17, 0x84,
0x5f, 0xa8, 0x80, 0x36, 0xb0, 0xfa, 0x46, 0x0e, 0x34, 0xc4, 0x05, 0x4b, 0xc2, 0x53, 0x92, 0xc8,
0x38, 0x98, 0x01, 0xaf, 0xc0, 0x73, 0xbe, 0x84, 0xfd, 0x9c, 0x03, 0x69, 0x58, 0xd2, 0x16, 0xc7,
0x86, 0xad, 0x4b, 0x9a, 0xf0, 0xb4, 0xf2, 0x35, 0x71, 0x4a, 0x4a, 0x7b, 0xe7, 0x49, 0x3c, 0x31,
0x2e, 0xa9, 0x6f, 0x39, 0xaf, 0x89, 0x58, 0xb9, 0x52, 0xc1, 0x25, 0x11, 0x4b, 0xfb, 0x72, 0x0e,
0xa6, 0x91, 0x18, 0x2a, 0x27, 0xe5, 0xd8, 0xd4, 0xc0, 0x05, 0x9e, 0xf3, 0x7b, 0x0b, 0xd0, 0xd5,
0x03, 0xbc, 0xc6, 0xf0, 0x27, 0x50, 0xcd, 0x5a, 0x38, 0x8d, 0xe8, 0xdc, 0x1b, 0xbb, 0xde, 0x15,
0x9c, 0xed, 0x42, 0xef, 0x49, 0x0d, 0x4a, 0x86, 0x9b, 0x19, 0xf0, 0xf6, 0x4a, 0x0d, 0x38, 0x13,
0x73, 0xfe, 0x64, 0xc1, 0x83, 0xab, 0xba, 0x7b, 0x51, 0x48, 0x7f, 0xfd, 0x06, 0xb1, 0xfa, 0xfa,
0x47, 0xbe, 0x03, 0x9b, 0xf1, 0xf9, 0x39, 0xa7, 0xc2, 0x44, 0xd7, 0x50, 0x32, 0x0b, 0x9c, 0xfd,
0x86, 0x9a, 0xff, 0x08, 0xd5, 0xf7, 0x32, 0x46, 0x2a, 0x19, 0x46, 0x9c, 0x3f, 0x5b, 0xb0, 0xbb,
0xc6, 0x0b, 0xf4, 0x0c, 0xaa, 0x66, 0xd8, 0x48, 0x5b, 0x97, 0x47, 0xaf, 0x3b, 0xa3, 0xda, 0xd4,
0x36, 0x84, 0xe9, 0x62, 0x32, 0x05, 0xfb, 0xe7, 0xd0, 0x2c, 0x2c, 0xad, 0x68, 0x0a, 0x3e, 0x2e,
0x36, 0x05, 0xef, 0x5c, 0x6b, 0x2c, 0x8b, 0xca, 0xa2, 0x49, 0x78, 0xd2, 0xfc, 0xa2, 0xde, 0x7e,
0xf4, 0x61, 0xba, 0xf3, 0x6c, 0x53, 0x7d, 0xbd, 0xff, 0x9f, 0x00, 0x00, 0x00, 0xff, 0xff, 0x16,
0x85, 0x6c, 0xff, 0xdc, 0x15, 0x00, 0x00,
0x64, 0x32, 0x8b, 0x98, 0x60, 0x94, 0x77, 0xa6, 0x49, 0x2c, 0x62, 0x54, 0x55, 0x3f, 0xe7, 0xb3,
0x8b, 0x83, 0x9b, 0xc1, 0x25, 0x11, 0x3e, 0x0b, 0x69, 0x24, 0x98, 0x98, 0xeb, 0xe5, 0x83, 0x3a,
0x8d, 0x66, 0x13, 0x23, 0xeb, 0x5c, 0xc1, 0xc6, 0x93, 0x84, 0x44, 0x02, 0x3d, 0x80, 0x46, 0xaa,
0x69, 0xee, 0xb3, 0xd0, 0xb6, 0xda, 0xd6, 0x61, 0x03, 0xd7, 0x33, 0x5e, 0x3f, 0x44, 0x77, 0xa0,
0x36, 0xa1, 0x93, 0x73, 0x9a, 0xc8, 0xf5, 0x92, 0x5a, 0xaf, 0x6a, 0x46, 0x3f, 0x44, 0x7b, 0xb0,
0x65, 0x8c, 0xd9, 0xe5, 0xb6, 0x75, 0x58, 0xc3, 0x9b, 0x92, 0xec, 0x87, 0xe8, 0x16, 0x6c, 0x04,
0xe3, 0x38, 0x78, 0x69, 0x57, 0xda, 0xd6, 0x61, 0x05, 0x6b, 0xc2, 0xf9, 0xb7, 0x05, 0x37, 0x7a,
0xa9, 0xee, 0x13, 0xa5, 0x04, 0x7d, 0x1f, 0x36, 0x92, 0x78, 0x4c, 0xb9, 0x6d, 0xb5, 0xcb, 0x87,
0xdb, 0x47, 0xf7, 0x3b, 0xa9, 0x1f, 0x9d, 0x25, 0xc9, 0x0e, 0x96, 0x62, 0x58, 0x4b, 0xa3, 0x1f,
0xc3, 0x4e, 0x42, 0xaf, 0x28, 0x19, 0xd3, 0xd0, 0x27, 0x41, 0x10, 0xcf, 0x22, 0xc1, 0xed, 0x52,
0xbb, 0x7c, 0x58, 0x3f, 0xda, 0x5f, 0xa8, 0xc0, 0x46, 0xa4, 0xab, 0x25, 0x70, 0x2b, 0x29, 0x32,
0xb8, 0x73, 0x09, 0x1b, 0x4a, 0x2f, 0x6a, 0x42, 0x0d, 0x0f, 0x9e, 0xb9, 0xbe, 0x37, 0xf0, 0xdc,
0xd6, 0x5b, 0x68, 0x1b, 0x40, 0x91, 0x83, 0x17, 0x9e, 0x8b, 0x5b, 0x16, 0xba, 0x0d, 0x3b, 0x8a,
0x3e, 0xe9, 0x7a, 0xdd, 0x27, 0xae, 0xff, 0xfc, 0xcc, 0xc5, 0x67, 0xad, 0x12, 0xda, 0x87, 0xdb,
0x9a, 0x3d, 0x38, 0x76, 0x71, 0x77, 0xe8, 0xfa, 0xbd, 0x81, 0x37, 0x74, 0xbd, 0x61, 0xab, 0x9c,
0x69, 0xe8, 0x1e, 0x9f, 0xf4, 0xbd, 0x56, 0xc5, 0xf9, 0x6d, 0x19, 0x76, 0x33, 0x97, 0x86, 0xf1,
0x4b, 0x1a, 0x9d, 0x50, 0x41, 0x42, 0x22, 0x08, 0xba, 0x00, 0x14, 0xc4, 0x91, 0x48, 0x48, 0x20,
0x7c, 0x12, 0x86, 0x09, 0xe5, 0xdc, 0x04, 0xa4, 0x7e, 0xf4, 0x83, 0x15, 0x01, 0x29, 0xec, 0xee,
0xf4, 0xcc, 0xd6, 0x6e, 0xba, 0xd3, 0x8d, 0x44, 0x32, 0xc7, 0x3b, 0xc1, 0x32, 0x1f, 0xb5, 0xa1,
0x1e, 0x52, 0x1e, 0x24, 0x6c, 0x2a, 0x58, 0x1c, 0xa9, 0x6c, 0xd6, 0x70, 0x9e, 0x25, 0xf3, 0xc6,
0x26, 0x64, 0x44, 0x4d, 0x3a, 0x35, 0x81, 0x3e, 0x80, 0x9a, 0x90, 0x26, 0x87, 0xf3, 0x29, 0x55,
0x19, 0xdd, 0x3e, 0xba, 0xbb, 0xee, 0x58, 0x52, 0x06, 0x2f, 0xc4, 0xd1, 0x2e, 0x6c, 0xf2, 0xf9,
0xe4, 0x3c, 0x1e, 0xdb, 0x1b, 0x1a, 0x21, 0x9a, 0x42, 0x08, 0x2a, 0x11, 0x99, 0x50, 0x7b, 0x53,
0x71, 0xd5, 0x37, 0x3a, 0x80, 0x6a, 0x48, 0x03, 0x36, 0x21, 0x63, 0x6e, 0x6f, 0xb5, 0xad, 0xc3,
0x26, 0xce, 0xe8, 0x83, 0x63, 0x19, 0xbd, 0x55, 0x8e, 0xa2, 0x16, 0x94, 0x5f, 0xd2, 0xb9, 0xc2,
0x6e, 0x05, 0xcb, 0x4f, 0xe9, 0xc5, 0x15, 0x19, 0xcf, 0xa8, 0xf1, 0x50, 0x13, 0x1f, 0x94, 0x1e,
0x59, 0xce, 0xdf, 0x2c, 0xb8, 0x95, 0x9d, 0xf7, 0x94, 0x26, 0x13, 0xc6, 0x39, 0x8b, 0x23, 0x8e,
0xf6, 0xa1, 0x4a, 0x23, 0xee, 0xc7, 0xd1, 0x58, 0x6b, 0xaa, 0xe2, 0x2d, 0x1a, 0xf1, 0x41, 0x34,
0x9e, 0x23, 0x1b, 0xb6, 0xa6, 0x09, 0xbb, 0x22, 0x42, 0xeb, 0xab, 0xe2, 0x94, 0x44, 0x3f, 0x82,
0x4d, 0x12, 0x04, 0x94, 0x73, 0x15, 0xae, 0xed, 0xa3, 0x6f, 0xad, 0x08, 0x4a, 0xce, 0x48, 0xa7,
0xab, 0x84, 0xb1, 0xd9, 0xe4, 0x0c, 0x61, 0x53, 0x73, 0x10, 0x82, 0xed, 0xe7, 0xde, 0x53, 0x6f,
0xf0, 0xc2, 0xf3, 0xbb, 0xbd, 0x9e, 0x7b, 0x76, 0xd6, 0x7a, 0x0b, 0xed, 0x40, 0xd3, 0x1b, 0xf8,
0x27, 0xee, 0xc9, 0x63, 0x17, 0x9f, 0x7d, 0xda, 0x3f, 0x6d, 0x59, 0xe8, 0x26, 0xdc, 0xe8, 0x7b,
0x9f, 0xf7, 0x87, 0xdd, 0x61, 0x7f, 0xe0, 0xf9, 0x03, 0xef, 0xd9, 0xcf, 0x5a, 0x25, 0x89, 0xb3,
0x81, 0xe7, 0x63, 0xf7, 0xb3, 0xe7, 0xee, 0xd9, 0xb0, 0x55, 0x76, 0x7e, 0x57, 0x86, 0xa6, 0xca,
0x44, 0x2f, 0x61, 0x82, 0x26, 0x8c, 0xa0, 0x5f, 0xbc, 0x02, 0x5e, 0x9d, 0xc5, 0x91, 0x0b, 0x9b,
0xbe, 0x02, 0xaa, 0xde, 0x85, 0x8a, 0x90, 0xc0, 0x28, 0xbd, 0x01, 0x30, 0x94, 0x64, 0x0e, 0x13,
0xe5, 0x95, 0x98, 0xa8, 0xe4, 0x30, 0xb1, 0x0b, 0x9b, 0x64, 0x22, 0xef, 0x6a, 0x8a, 0x1f, 0x4d,
0xc9, 0xba, 0xa4, 0x40, 0xe6, 0xb3, 0x90, 0xdb, 0x9b, 0xed, 0xf2, 0x61, 0x05, 0x57, 0x15, 0xa3,
0x1f, 0x72, 0x74, 0x1f, 0xea, 0x32, 0x9b, 0x53, 0x22, 0x04, 0x4d, 0x22, 0x85, 0xa5, 0x1a, 0x06,
0x1a, 0xf1, 0x53, 0xcd, 0x29, 0x20, 0xad, 0xaa, 0x80, 0xf3, 0xdf, 0x46, 0xda, 0xdf, 0x4b, 0x60,
0x17, 0x03, 0xb0, 0x40, 0x02, 0xda, 0x86, 0x92, 0xa9, 0xb6, 0x35, 0x5c, 0x62, 0x21, 0xfa, 0xb0,
0x10, 0xc2, 0x6f, 0xaf, 0x0b, 0xe1, 0x42, 0x43, 0x27, 0x17, 0xcd, 0x8f, 0x60, 0x5b, 0x47, 0x22,
0x30, 0xb9, 0xb3, 0xcb, 0x2a, 0xb5, 0x7b, 0x6b, 0x52, 0x8b, 0x9b, 0xa2, 0x00, 0x8f, 0x7d, 0xa8,
0x9a, 0x22, 0xce, 0xed, 0x4a, 0xbb, 0x7c, 0x58, 0xc3, 0x5b, 0xba, 0x8a, 0x73, 0x74, 0x0f, 0x80,
0x71, 0x3f, 0x45, 0xff, 0x86, 0x42, 0x7f, 0x8d, 0xf1, 0x53, 0xcd, 0x70, 0xbe, 0x84, 0x8a, 0xba,
0xe3, 0x77, 0xc1, 0x4e, 0xe1, 0x3b, 0x1c, 0x3c, 0x75, 0x3d, 0xff, 0xd4, 0xc5, 0x27, 0xfd, 0xb3,
0xb3, 0xfe, 0xc0, 0x6b, 0xbd, 0x85, 0x5a, 0xd0, 0x78, 0xec, 0xf6, 0x06, 0x27, 0x69, 0x29, 0xb4,
0x24, 0xb4, 0x0d, 0x47, 0xc3, 0xbb, 0x55, 0x42, 0xb7, 0xa0, 0xd5, 0xeb, 0x7a, 0xfe, 0xe7, 0x7d,
0xf7, 0x85, 0xdf, 0xfb, 0xb4, 0xeb, 0x79, 0xee, 0xb3, 0x56, 0x19, 0xdd, 0x83, 0xfd, 0x8c, 0xdb,
0xf5, 0x8e, 0xfd, 0xd3, 0xc1, 0xd9, 0x30, 0x5b, 0xae, 0x38, 0xff, 0xaa, 0xe5, 0x6e, 0xf3, 0x71,
0xb1, 0x8c, 0xe9, 0xe7, 0xc7, 0xca, 0x3d, 0x3f, 0xc8, 0x85, 0x2d, 0xfd, 0x72, 0xa5, 0x2f, 0xc5,
0x77, 0x56, 0x04, 0x3a, 0xa7, 0xa6, 0xa3, 0x1f, 0x1e, 0x83, 0xfc, 0x74, 0x2f, 0xfa, 0x04, 0xea,
0xd3, 0xc5, 0xa5, 0x56, 0x10, 0xae, 0x1f, 0xbd, 0xfd, 0xea, 0xab, 0x8f, 0xf3, 0x5b, 0xd0, 0x11,
0x54, 0xd3, 0xe7, 0x59, 0x05, 0xb5, 0x7e, 0xb4, 0x9b, 0xdb, 0xae, 0x62, 0xaf, 0x57, 0x71, 0x26,
0x87, 0x3e, 0x86, 0x0d, 0x99, 0x15, 0x8d, 0xf5, 0xfa, 0xd1, 0x3b, 0xaf, 0x39, 0xba, 0xd4, 0x62,
0x0e, 0xae, 0xf7, 0xc9, 0x34, 0x9f, 0x93, 0xc8, 0x1f, 0x33, 0x2e, 0xec, 0x2d, 0x9d, 0xe6, 0x73,
0x12, 0x3d, 0x63, 0x5c, 0x20, 0x0f, 0x20, 0x20, 0x82, 0x8e, 0xe2, 0x84, 0x51, 0x79, 0x1f, 0x96,
0x0a, 0xc3, 0x6a, 0x03, 0xd9, 0x06, 0x6d, 0x25, 0xa7, 0x01, 0x3d, 0x02, 0x9b, 0x24, 0xc1, 0x25,
0xbb, 0xa2, 0xfe, 0x84, 0x8c, 0x22, 0x2a, 0xc6, 0x2c, 0x7a, 0xe9, 0xeb, 0x8c, 0xd4, 0x54, 0x46,
0x76, 0xcd, 0xfa, 0x49, 0xb6, 0xdc, 0x53, 0x29, 0x7a, 0x02, 0xdb, 0x24, 0x9c, 0xb0, 0xc8, 0xe7,
0x54, 0x08, 0x16, 0x8d, 0xb8, 0x0d, 0x2a, 0x3e, 0xed, 0x15, 0xa7, 0xe9, 0x4a, 0xc1, 0x33, 0x23,
0x87, 0x9b, 0x24, 0x4f, 0xa2, 0x6f, 0x40, 0x93, 0x45, 0x22, 0x89, 0xfd, 0x09, 0xe5, 0x5c, 0x3e,
0x68, 0x75, 0x75, 0xd9, 0x1a, 0x8a, 0x79, 0xa2, 0x79, 0x52, 0x28, 0x9e, 0xe5, 0x85, 0x1a, 0x5a,
0x48, 0x31, 0x53, 0xa1, 0xbb, 0x50, 0xa3, 0x51, 0x90, 0xcc, 0xa7, 0x82, 0x86, 0x76, 0x53, 0x5f,
0x81, 0x8c, 0x21, 0x4b, 0x96, 0x20, 0x23, 0x6e, 0x6f, 0xab, 0x88, 0xaa, 0x6f, 0x44, 0x60, 0x47,
0x5f, 0xc8, 0x3c, 0x4c, 0x6e, 0xa8, 0xa8, 0x7e, 0xef, 0x35, 0x51, 0x5d, 0xba, 0xe6, 0x26, 0xb6,
0x2d, 0xb1, 0xc4, 0x46, 0x3f, 0x87, 0xfd, 0x45, 0xe3, 0xa6, 0x56, 0xb9, 0x3f, 0x31, 0x0d, 0x81,
0xdd, 0x52, 0xa6, 0xda, 0xaf, 0x6b, 0x1c, 0xf0, 0x5e, 0x50, 0xe0, 0xf3, 0xac, 0x1f, 0x79, 0x17,
0x6e, 0x91, 0x40, 0xa8, 0xf4, 0x69, 0xcc, 0xfb, 0xaa, 0x5b, 0xb2, 0x77, 0x54, 0xee, 0x90, 0x5e,
0x33, 0x97, 0xa3, 0x27, 0x57, 0x0e, 0x9e, 0x43, 0x23, 0x7f, 0x59, 0xf2, 0x95, 0xb2, 0xa6, 0x2b,
0xe5, 0xc3, 0x7c, 0xa5, 0x2c, 0x34, 0x69, 0x4b, 0x7d, 0x5e, 0xae, 0x88, 0x1e, 0x7c, 0x06, 0xb0,
0x00, 0xf2, 0x0a, 0xa5, 0xdf, 0x2d, 0x2a, 0xdd, 0x5b, 0xa1, 0x54, 0xee, 0xcf, 0xab, 0xfc, 0x02,
0x6e, 0x2c, 0x41, 0x77, 0x85, 0xde, 0xf7, 0x8a, 0x7a, 0xef, 0xac, 0xd2, 0xab, 0x95, 0xcc, 0xf3,
0xba, 0x47, 0x70, 0x7b, 0x65, 0x02, 0x57, 0x58, 0x78, 0x54, 0xb4, 0xe0, 0xbc, 0xbe, 0xe4, 0xe7,
0x1f, 0x97, 0x5f, 0xe6, 0x5a, 0xc9, 0xc2, 0x35, 0x40, 0xc7, 0x70, 0x7f, 0xca, 0xa2, 0x14, 0xd0,
0x3e, 0x19, 0x8f, 0xb3, 0x1c, 0xd2, 0x88, 0x9c, 0x8f, 0x69, 0x68, 0xda, 0x9b, 0x3b, 0x53, 0x16,
0x19, 0x88, 0x77, 0xc7, 0xe3, 0x2c, 0x79, 0x4a, 0xc4, 0xf9, 0x6b, 0x09, 0x9a, 0x85, 0x08, 0xa2,
0x8f, 0x16, 0xb5, 0x53, 0x37, 0x0e, 0xdf, 0x5c, 0x13, 0xeb, 0x37, 0x2b, 0x9a, 0xa5, 0xaf, 0x57,
0x34, 0xcb, 0x6f, 0x58, 0x34, 0xef, 0x43, 0xdd, 0x94, 0x25, 0x35, 0xde, 0xe8, 0xbe, 0x22, 0xad,
0x54, 0x72, 0xba, 0x39, 0x80, 0xea, 0x34, 0xe6, 0x4c, 0xb5, 0xc3, 0xb2, 0x12, 0x6f, 0xe0, 0x8c,
0xfe, 0x1f, 0x61, 0xda, 0x09, 0x61, 0xe7, 0x1a, 0x88, 0x96, 0x0f, 0x6a, 0x5d, 0x3b, 0x68, 0xda,
0x1a, 0x95, 0x8a, 0xed, 0x72, 0x76, 0xf8, 0x72, 0xf1, 0xf0, 0xce, 0xef, 0x2d, 0xb8, 0x99, 0x99,
0xe9, 0x47, 0x57, 0x4c, 0x10, 0xf5, 0x32, 0xbe, 0x0f, 0xb7, 0x17, 0x85, 0x23, 0x3f, 0x0c, 0xe8,
0xd1, 0xef, 0x56, 0xb0, 0xe6, 0x39, 0x1d, 0xc9, 0x79, 0xd1, 0xcc, 0x7f, 0x9a, 0x58, 0x3f, 0xfc,
0xdd, 0x03, 0x98, 0xce, 0xce, 0xc7, 0x2c, 0xf0, 0x65, 0xbc, 0x2a, 0x6a, 0x4f, 0x4d, 0x73, 0x9e,
0xd2, 0xb9, 0x73, 0x01, 0x37, 0x96, 0xe6, 0x32, 0xd9, 0x62, 0x9b, 0xc6, 0xd4, 0xb8, 0x9e, 0x92,
0xb2, 0xfa, 0x72, 0x36, 0x8a, 0x88, 0x98, 0x25, 0xd4, 0x98, 0x5f, 0x30, 0x64, 0x13, 0x18, 0x5c,
0x12, 0xa6, 0x9b, 0xc0, 0xb2, 0x6e, 0x02, 0x15, 0xa3, 0x1f, 0x72, 0xe7, 0x9f, 0x56, 0xee, 0x96,
0x60, 0xfa, 0xab, 0x19, 0xe5, 0x62, 0x18, 0xff, 0x24, 0x66, 0xeb, 0xfa, 0x03, 0x33, 0x03, 0xe4,
0xe2, 0x2c, 0x67, 0x00, 0x4f, 0x86, 0x7a, 0xad, 0xaf, 0xcb, 0x13, 0x74, 0xe5, 0xfa, 0x04, 0xfd,
0x00, 0x1a, 0x21, 0xe3, 0xd3, 0x31, 0x99, 0x6b, 0xd5, 0x1b, 0x66, 0xec, 0xd2, 0x3c, 0xa5, 0x7e,
0xe5, 0x34, 0xbb, 0xf9, 0xd5, 0xa7, 0xd9, 0x3f, 0x5a, 0x70, 0x37, 0x07, 0xae, 0x28, 0xa0, 0xe3,
0xff, 0x6b, 0xc7, 0x9d, 0x7f, 0x58, 0xf0, 0xf6, 0xea, 0x1c, 0x61, 0xca, 0xa7, 0x71, 0xc4, 0xe9,
0x9a, 0x23, 0xff, 0x10, 0x6a, 0x99, 0xa9, 0x57, 0x54, 0x93, 0x1c, 0x8a, 0xf1, 0x62, 0x83, 0xbc,
0x39, 0x72, 0x06, 0x53, 0x4f, 0x7a, 0x59, 0x95, 0xc3, 0x8c, 0x5e, 0x80, 0xbd, 0x92, 0x07, 0xfb,
0xb2, 0xbb, 0x1b, 0xd7, 0xdd, 0xbd, 0x07, 0xa0, 0xbb, 0x1d, 0x7f, 0x96, 0x30, 0x33, 0xd7, 0xd6,
0x34, 0xe7, 0x79, 0xc2, 0x1c, 0x0c, 0x7b, 0xd7, 0x3d, 0x7d, 0x46, 0xc9, 0xd5, 0x3a, 0x17, 0x97,
0x4d, 0x96, 0xae, 0x99, 0x74, 0x7e, 0x0a, 0x0f, 0x72, 0x95, 0x46, 0x17, 0xf3, 0xe5, 0xc6, 0x6a,
0x8d, 0xf6, 0xe2, 0x69, 0x4b, 0xcb, 0xa7, 0xfd, 0x93, 0x05, 0xf5, 0x17, 0xe4, 0xe5, 0x2c, 0xed,
0x82, 0x5a, 0x50, 0xe6, 0x6c, 0x64, 0xaa, 0x84, 0xfc, 0x94, 0x37, 0x53, 0xb0, 0x09, 0xe5, 0x82,
0x4c, 0xa6, 0x6a, 0x7f, 0x05, 0x2f, 0x18, 0xd2, 0xa8, 0x88, 0xa7, 0x2c, 0x50, 0xe1, 0x6d, 0x60,
0x4d, 0xa8, 0x51, 0x9a, 0xcc, 0xc7, 0x31, 0x49, 0xf1, 0x92, 0x92, 0x7a, 0x25, 0x0c, 0x59, 0x34,
0x32, 0xa1, 0x4d, 0x49, 0x59, 0xf9, 0x2e, 0x09, 0xbf, 0x54, 0x01, 0x6d, 0x60, 0xf5, 0x8d, 0x1c,
0x68, 0x88, 0x4b, 0x96, 0x84, 0xa7, 0x24, 0x91, 0x71, 0x30, 0x03, 0x5e, 0x81, 0xe7, 0x7c, 0x09,
0x07, 0x39, 0x07, 0xd2, 0xb0, 0xa4, 0x2d, 0x8e, 0x0d, 0x5b, 0x57, 0x34, 0xe1, 0x69, 0xe5, 0x6b,
0xe2, 0x94, 0x94, 0xf6, 0x2e, 0x92, 0x78, 0x62, 0x5c, 0x52, 0xdf, 0x72, 0x5e, 0x13, 0xb1, 0x72,
0xa5, 0x82, 0x4b, 0x22, 0x96, 0xf6, 0xe5, 0x1c, 0x4c, 0x23, 0x31, 0x54, 0x4e, 0xca, 0xb1, 0xa9,
0x81, 0x0b, 0x3c, 0xe7, 0x0f, 0x16, 0xa0, 0xeb, 0x07, 0x78, 0x85, 0xe1, 0x4f, 0xa0, 0x9a, 0xb5,
0x70, 0x1a, 0xd1, 0xb9, 0x37, 0x76, 0xbd, 0x2b, 0x38, 0xdb, 0x85, 0xde, 0x93, 0x1a, 0x94, 0x0c,
0x37, 0x33, 0xe0, 0xed, 0x95, 0x1a, 0x70, 0x26, 0xe6, 0xfc, 0xd9, 0x82, 0xfb, 0xd7, 0x75, 0xf7,
0xa3, 0x90, 0xfe, 0xfa, 0x0d, 0x62, 0xf5, 0xf5, 0x8f, 0xbc, 0x0b, 0x9b, 0xf1, 0xc5, 0x05, 0xa7,
0xc2, 0x44, 0xd7, 0x50, 0x32, 0x0b, 0x9c, 0xfd, 0x86, 0x9a, 0xff, 0x0f, 0xd5, 0xf7, 0x32, 0x46,
0x2a, 0x19, 0x46, 0x9c, 0xbf, 0x58, 0xb0, 0xb7, 0xc6, 0x0b, 0xf4, 0x14, 0xaa, 0x66, 0xd8, 0x48,
0x5b, 0x97, 0x87, 0xaf, 0x3a, 0xa3, 0xda, 0xd4, 0x31, 0x84, 0xe9, 0x62, 0x32, 0x05, 0x07, 0x17,
0xd0, 0x2c, 0x2c, 0xad, 0x68, 0x0a, 0x3e, 0x2e, 0x36, 0x05, 0xef, 0xbc, 0xd6, 0x58, 0x16, 0x95,
0x45, 0x93, 0xf0, 0xb8, 0xf9, 0x45, 0xbd, 0xf3, 0xf0, 0xc3, 0x74, 0xe7, 0xf9, 0xa6, 0xfa, 0x7a,
0xff, 0x3f, 0x01, 0x00, 0x00, 0xff, 0xff, 0xca, 0xc3, 0x8d, 0xb3, 0xf8, 0x15, 0x00, 0x00,
}

View File

@ -32,6 +32,7 @@ message CommunityTokenMetadata {
CommunityTokenType tokenType = 4;
string symbol = 5;
string name = 6;
uint32 decimals = 7;
}
message CommunityPermissions {

View File

@ -14,8 +14,10 @@ import (
"github.com/ethereum/go-ethereum/common"
"github.com/ethereum/go-ethereum/log"
"github.com/status-im/status-go/account"
"github.com/status-im/status-go/contracts/assets"
"github.com/status-im/status-go/contracts/collectibles"
"github.com/status-im/status-go/params"
"github.com/status-im/status-go/protocol/protobuf"
"github.com/status-im/status-go/rpc"
"github.com/status-im/status-go/services/utils"
"github.com/status-im/status-go/services/wallet/bigint"
@ -27,7 +29,7 @@ func NewAPI(rpcClient *rpc.Client, accountsManager *account.GethManager, config
RPCClient: rpcClient,
accountsManager: accountsManager,
config: config,
db: NewCollectiblesDatabase(appDb),
db: NewCommunityTokensDatabase(appDb),
}
}
@ -82,7 +84,7 @@ func (d *DeploymentParameters) Validate() error {
return nil
}
func (api *API) Deploy(ctx context.Context, chainID uint64, deploymentParameters DeploymentParameters, txArgs transactions.SendTxArgs, password string) (DeploymentDetails, error) {
func (api *API) DeployCollectibles(ctx context.Context, chainID uint64, deploymentParameters DeploymentParameters, txArgs transactions.SendTxArgs, password string) (DeploymentDetails, error) {
err := deploymentParameters.Validate()
if err != nil {
@ -109,12 +111,43 @@ func (api *API) Deploy(ctx context.Context, chainID uint64, deploymentParameters
return DeploymentDetails{address.Hex(), tx.Hash().Hex()}, nil
}
func (api *API) DeployAssets(ctx context.Context, chainID uint64, deploymentParameters DeploymentParameters, txArgs transactions.SendTxArgs, password string) (DeploymentDetails, error) {
err := deploymentParameters.Validate()
if err != nil {
return DeploymentDetails{}, err
}
transactOpts := txArgs.ToTransactOpts(utils.GetSigner(chainID, api.accountsManager, api.config.KeyStoreDir, txArgs.From, password))
ethClient, err := api.RPCClient.EthClient(chainID)
if err != nil {
log.Error(err.Error())
return DeploymentDetails{}, err
}
address, tx, _, err := assets.DeployAssets(transactOpts, ethClient, deploymentParameters.Name,
deploymentParameters.Symbol, deploymentParameters.GetSupply())
if err != nil {
log.Error(err.Error())
return DeploymentDetails{}, err
}
return DeploymentDetails{address.Hex(), tx.Hash().Hex()}, nil
}
// Returns gas units + 10%
func (api *API) DeployCollectiblesEstimate(ctx context.Context) (uint64, error) {
gasAmount := uint64(1960645)
return gasAmount + uint64(float32(gasAmount)*0.1), nil
}
// Returns gas units + 10%
func (api *API) DeployAssetsEstimate(ctx context.Context) (uint64, error) {
gasAmount := uint64(957483)
return gasAmount + uint64(float32(gasAmount)*0.1), nil
}
func (api *API) newCollectiblesInstance(chainID uint64, contractAddress string) (*collectibles.Collectibles, error) {
backend, err := api.RPCClient.EthClient(chainID)
if err != nil {
@ -123,6 +156,14 @@ func (api *API) newCollectiblesInstance(chainID uint64, contractAddress string)
return collectibles.NewCollectibles(common.HexToAddress(contractAddress), backend)
}
func (api *API) newAssetsInstance(chainID uint64, contractAddress string) (*assets.Assets, error) {
backend, err := api.RPCClient.EthClient(chainID)
if err != nil {
return nil, err
}
return assets.NewAssets(common.HexToAddress(contractAddress), backend)
}
// if we want to mint 2 tokens to addresses ["a", "b"] we need to mint
// twice to every address - we need to send to smart contract table ["a", "a", "b", "b"]
func (api *API) multiplyWalletAddresses(amount int, contractAddresses []string) []string {
@ -177,6 +218,7 @@ func (api *API) EstimateMintTo(ctx context.Context, chainID uint64, contractAddr
return api.estimateMethod(ctx, chainID, contractAddress, "mintTo", usersAddresses)
}
// This is only ERC721 function
func (api *API) RemoteBurn(ctx context.Context, chainID uint64, contractAddress string, txArgs transactions.SendTxArgs, password string, tokenIds []*bigint.BigInt) (string, error) {
err := api.validateTokens(tokenIds)
if err != nil {
@ -219,15 +261,32 @@ func (api *API) EstimateRemoteBurn(ctx context.Context, chainID uint64, contract
func (api *API) ContractOwner(ctx context.Context, chainID uint64, contractAddress string) (string, error) {
callOpts := &bind.CallOpts{Context: ctx, Pending: false}
contractInst, err := api.newCollectiblesInstance(chainID, contractAddress)
tokenType, err := api.db.GetTokenType(chainID, contractAddress)
if err != nil {
return "", err
}
owner, err := contractInst.Owner(callOpts)
if err != nil {
return "", err
if tokenType == protobuf.CommunityTokenType_ERC721 {
contractInst, err := api.newCollectiblesInstance(chainID, contractAddress)
if err != nil {
return "", err
}
owner, err := contractInst.Owner(callOpts)
if err != nil {
return "", err
}
return owner.String(), nil
} else if tokenType == protobuf.CommunityTokenType_ERC20 {
contractInst, err := api.newAssetsInstance(chainID, contractAddress)
if err != nil {
return "", err
}
owner, err := contractInst.Owner(callOpts)
if err != nil {
return "", err
}
return owner.String(), nil
}
return owner.String(), nil
return "", fmt.Errorf("unknown token type: %v", tokenType)
}
func (api *API) MintedCount(ctx context.Context, chainID uint64, contractAddress string) (*big.Int, error) {

View File

@ -2,76 +2,30 @@ package collectibles
import (
"database/sql"
"strings"
"fmt"
"github.com/status-im/status-go/protocol/protobuf"
)
type Database struct {
db *sql.DB
}
type TokenOwner struct {
Address string
Amount int
}
func NewCollectiblesDatabase(db *sql.DB) *Database {
func NewCommunityTokensDatabase(db *sql.DB) *Database {
return &Database{db: db}
}
func (db *Database) GetAmount(chainID uint64, contractAddress string, owner string) (int, error) {
const selectQuery = `SELECT amount FROM community_token_owners WHERE chain_id=? AND address=? AND owner=? LIMIT 1`
rows, err := db.db.Query(selectQuery, chainID, contractAddress, owner)
func (db *Database) GetTokenType(chainID uint64, contractAddress string) (protobuf.CommunityTokenType, error) {
var result = protobuf.CommunityTokenType_UNKNOWN_TOKEN_TYPE
rows, err := db.db.Query(`SELECT type FROM community_tokens WHERE chain_id=? AND address=? LIMIT 1`, chainID, contractAddress)
if err != nil {
return -1, err
return result, err
}
defer rows.Close()
if rows.Next() {
var amount int
err := rows.Scan(&amount)
if err != nil {
return -1, err
}
return amount, nil
err := rows.Scan(&result)
return result, err
}
return 0, nil
}
func (db *Database) setAmount(chainID uint64, contractAddress string, owner string, amount int) error {
const sqlQuery = `INSERT OR REPLACE INTO community_token_owners(chain_id, address, owner, amount) VALUES (?, ?, ?, ?)`
_, err := db.db.Exec(sqlQuery, chainID, contractAddress, owner, amount)
return err
}
func (db *Database) AddTokenOwners(chainID uint64, contractAddress string, owners []string) error {
for _, v := range owners {
lowerVal := strings.ToLower(v)
amount, err := db.GetAmount(chainID, contractAddress, lowerVal)
if err != nil {
return err
}
err = db.setAmount(chainID, contractAddress, lowerVal, amount+1)
if err != nil {
return err
}
}
return nil
}
func (db *Database) GetTokenOwners(chainID uint64, contractAddress string) ([]TokenOwner, error) {
const selectQuery = `SELECT owner, amount FROM community_token_owners WHERE chain_id=? AND address=?`
rows, err := db.db.Query(selectQuery, chainID, contractAddress)
if err != nil {
return nil, err
}
defer rows.Close()
var owners []TokenOwner
for rows.Next() {
var owner TokenOwner
err := rows.Scan(&owner.Address, &owner.Amount)
if err != nil {
return nil, err
}
owners = append(owners, owner)
}
return owners, nil
return result, fmt.Errorf("can't find token: chainId %v, contractAddress %v", chainID, contractAddress)
}

View File

@ -1,12 +1,15 @@
package collectibles
import (
"database/sql"
"io/ioutil"
"testing"
"github.com/stretchr/testify/suite"
"github.com/status-im/status-go/appdatabase"
"github.com/status-im/status-go/protocol/communities"
"github.com/status-im/status-go/protocol/protobuf"
"github.com/status-im/status-go/protocol/sqlite"
)
@ -20,10 +23,60 @@ type DatabaseSuite struct {
db *Database
}
func (s *DatabaseSuite) addCommunityToken(db *sql.DB, token *communities.CommunityToken) error {
_, err := db.Exec(`INSERT INTO community_tokens (community_id, address, type, name, symbol, description, supply,
infinite_supply, transferable, remote_self_destruct, chain_id, deploy_state, image_base64, decimals)
VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?)`, token.CommunityID, token.Address, token.TokenType, token.Name,
token.Symbol, token.Description, token.Supply, token.InfiniteSupply, token.Transferable, token.RemoteSelfDestruct,
token.ChainID, token.DeployState, token.Base64Image, token.Decimals)
return err
}
func (s *DatabaseSuite) setupDatabase(db *sql.DB) error {
token721 := &communities.CommunityToken{
CommunityID: "123",
TokenType: protobuf.CommunityTokenType_ERC721,
Address: "0x123",
Name: "StatusToken",
Symbol: "STT",
Description: "desc",
Supply: 123,
InfiniteSupply: false,
Transferable: true,
RemoteSelfDestruct: true,
ChainID: 1,
DeployState: communities.InProgress,
Base64Image: "ABCD",
}
token20 := &communities.CommunityToken{
CommunityID: "345",
TokenType: protobuf.CommunityTokenType_ERC20,
Address: "0x345",
Name: "StatusToken",
Symbol: "STT",
Description: "desc",
Supply: 345,
InfiniteSupply: false,
Transferable: true,
RemoteSelfDestruct: true,
ChainID: 2,
DeployState: communities.Failed,
Base64Image: "QWERTY",
Decimals: 21,
}
err := s.addCommunityToken(db, token721)
if err != nil {
return err
}
return s.addCommunityToken(db, token20)
}
func (s *DatabaseSuite) SetupTest() {
s.db = nil
dbPath, err := ioutil.TempFile("", "status-go-collectibles-db-")
dbPath, err := ioutil.TempFile("", "status-go-community-tokens-db-")
s.NoError(err, "creating temp file for db")
db, err := appdatabase.InitializeDB(dbPath.Name(), "", sqlite.ReducedKDFIterationsNumber)
@ -33,33 +86,20 @@ func (s *DatabaseSuite) SetupTest() {
s.NoError(err, "protocol migrate")
s.db = &Database{db: db}
err = s.setupDatabase(db)
s.NoError(err, "setting up database")
}
func (s *DatabaseSuite) TestAddOwner() {
owners, err := s.db.GetTokenOwners(5, "0x123")
func (s *DatabaseSuite) TestGetTokenType() {
contractType, err := s.db.GetTokenType(1, "0x123")
s.Require().NoError(err)
s.Require().Len(owners, 0)
s.Equal(contractType, protobuf.CommunityTokenType_ERC721)
err = s.db.AddTokenOwners(5, "0x123", []string{"A", "B"})
contractType, err = s.db.GetTokenType(2, "0x345")
s.Require().NoError(err)
owners, err = s.db.GetTokenOwners(5, "0x123")
s.Require().NoError(err)
s.Require().Len(owners, 2)
s.Equal(contractType, protobuf.CommunityTokenType_ERC20)
s.Equal(owners[0].Amount, 1)
s.Equal(owners[1].Amount, 1)
err = s.db.AddTokenOwners(5, "0x123", []string{"a"})
s.Require().NoError(err)
owners, err = s.db.GetTokenOwners(5, "0x123")
s.Require().NoError(err)
s.Require().Len(owners, 2)
amount, err := s.db.GetAmount(5, "0x123", "A")
s.Require().NoError(err)
s.Equal(amount, 2)
amount, err = s.db.GetAmount(5, "0x123", "B")
s.Require().NoError(err)
s.Equal(amount, 1)
_, err = s.db.GetTokenType(10, "0x777")
s.Require().Error(err)
}