contract SixthReseauGenesis is ERC1155Supply, Ownable {
    string public _baseTokenUri;

    string public name = "Sixth Reseau Genesis";
    string public symbol = "SRGNSS";

    constructor(string memory _uri) 
    ERC1155(_uri){}

    /// @notice Mint genesis tokens, only the contract owner is able to mint
    /// @param _id Token id to mint
    /// @param _amount Amount of tokens to mint
    /// @param _to Address to mint tokens to
    function mint(uint _id, uint _amount, address _to) public onlyOwner {
        _mint(_to, _id, _amount, "");
    }

    /// @notice Set the URI of the metadata
    /// @param _uri New metadata URI
    function setBaseTokenURI(string memory _uri) external onlyOwner {
        _baseTokenUri = _uri;
    }

    /// @notice Metadata of each token
    /// @param _tokenId Token id to get metadata of
    /// @return Metadata URI of the token
    function uri(uint256 _tokenId) public view override returns (string memory) {
        require(exists(_tokenId), "URI: nonexistent token");
        return string(abi.encodePacked(abi.encodePacked(_baseTokenUri, Strings.toString(_tokenId)), ".json"));
    }
}
/// @title SixthRéseau Genesis Contract
/// @author SphericonIO
function setBaseTokenURI(string memory _uri) external onlyOwner {
    _baseTokenUri = _uri;
}

/// @notice Set the URI of the metadata
/// @param _uri New metadata URI