Skip to content

Instantly share code, notes, and snippets.

@kikoncuo
Created October 20, 2021 11:55
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save kikoncuo/459e796e0a0804f2c545a5c492f8edc0 to your computer and use it in GitHub Desktop.
Save kikoncuo/459e796e0a0804f2c545a5c492f8edc0 to your computer and use it in GitHub Desktop.
Created using remix-ide: Realtime Ethereum Contract Compiler and Runtime. Load this file by pasting this gists URL or ID at https://remix.ethereum.org/#version=soljson-v0.4.26+commit.4563c3fc.js&optimize=true&runs=200&gist=
REMIX EXAMPLE PROJECT
Remix example project is present when Remix loads very first time or there are no files existing in the File Explorer.
It contains 3 directories:
1. 'contracts': Holds three contracts with different complexity level, denoted with number prefix in file name.
2. 'scripts': Holds two scripts to deploy a contract. It is explained below.
3. 'tests': Contains one test file for 'Ballot' contract with unit tests in Solidity.
SCRIPTS
The 'scripts' folder contains example async/await scripts for deploying the 'Storage' contract.
For the deployment of any other contract, 'contractName' and 'constructorArgs' should be updated (along with other code if required).
Scripts have full access to the web3.js and ethers.js libraries.
To run a script, right click on file name in the file explorer and click 'Run'. Remember, Solidity file must already be compiled.
Output from script will appear in remix terminal.
{
"deploy": {
"VM:-": {
"linkReferences": {},
"autoDeployLib": true
},
"main:1": {
"linkReferences": {},
"autoDeployLib": true
},
"ropsten:3": {
"linkReferences": {},
"autoDeployLib": true
},
"rinkeby:4": {
"linkReferences": {},
"autoDeployLib": true
},
"kovan:42": {
"linkReferences": {},
"autoDeployLib": true
},
"görli:5": {
"linkReferences": {},
"autoDeployLib": true
},
"Custom": {
"linkReferences": {},
"autoDeployLib": true
}
},
"data": {
"bytecode": {
"linkReferences": {},
"object": "",
"opcodes": "",
"sourceMap": ""
},
"deployedBytecode": {
"linkReferences": {},
"object": "",
"opcodes": "",
"sourceMap": ""
},
"gasEstimates": null,
"methodIdentifiers": {}
},
"abi": [
{
"inputs": [],
"payable": false,
"stateMutability": "nonpayable",
"type": "constructor"
}
]
}
{
"compiler": {
"version": "0.5.17+commit.d19bba13"
},
"language": "Solidity",
"output": {
"abi": [
{
"inputs": [],
"payable": false,
"stateMutability": "nonpayable",
"type": "constructor"
}
],
"devdoc": {
"methods": {}
},
"userdoc": {
"methods": {}
}
},
"settings": {
"compilationTarget": {
"Context_flat.sol": "Context"
},
"evmVersion": "istanbul",
"libraries": {},
"optimizer": {
"enabled": false,
"runs": 200
},
"remappings": []
},
"sources": {
"Context_flat.sol": {
"keccak256": "0x99108210f50d78574c30c8c08dadcfe681ab0a2207c5445a5fa63a5743d500dd",
"urls": [
"bzz-raw://23cfbd84667571b45659f9e9e1429efa5480e6f6f49db6e6ad76ccc859b7fc87",
"dweb:/ipfs/QmTVDxepUsxdxLnt89Wqu95rD8tcRYVTjdMqbeLGTvcg3u"
]
}
},
"version": 1
}
{
"deploy": {
"VM:-": {
"linkReferences": {},
"autoDeployLib": true
},
"main:1": {
"linkReferences": {},
"autoDeployLib": true
},
"ropsten:3": {
"linkReferences": {},
"autoDeployLib": true
},
"rinkeby:4": {
"linkReferences": {},
"autoDeployLib": true
},
"kovan:42": {
"linkReferences": {},
"autoDeployLib": true
},
"görli:5": {
"linkReferences": {},
"autoDeployLib": true
},
"Custom": {
"linkReferences": {},
"autoDeployLib": true
}
},
"data": {
"bytecode": {
"linkReferences": {},
"object": "",
"opcodes": "",
"sourceMap": ""
},
"deployedBytecode": {
"linkReferences": {},
"object": "",
"opcodes": "",
"sourceMap": ""
},
"gasEstimates": null,
"methodIdentifiers": {
"allowance(address,address)": "dd62ed3e",
"approve(address,uint256)": "095ea7b3",
"balanceOf(address)": "70a08231",
"totalSupply()": "18160ddd",
"transfer(address,uint256)": "a9059cbb",
"transferFrom(address,address,uint256)": "23b872dd"
}
},
"abi": [
{
"anonymous": false,
"inputs": [
{
"indexed": true,
"internalType": "address",
"name": "owner",
"type": "address"
},
{
"indexed": true,
"internalType": "address",
"name": "spender",
"type": "address"
},
{
"indexed": false,
"internalType": "uint256",
"name": "value",
"type": "uint256"
}
],
"name": "Approval",
"type": "event"
},
{
"anonymous": false,
"inputs": [
{
"indexed": true,
"internalType": "address",
"name": "from",
"type": "address"
},
{
"indexed": true,
"internalType": "address",
"name": "to",
"type": "address"
},
{
"indexed": false,
"internalType": "uint256",
"name": "value",
"type": "uint256"
}
],
"name": "Transfer",
"type": "event"
},
{
"constant": true,
"inputs": [
{
"internalType": "address",
"name": "owner",
"type": "address"
},
{
"internalType": "address",
"name": "spender",
"type": "address"
}
],
"name": "allowance",
"outputs": [
{
"internalType": "uint256",
"name": "",
"type": "uint256"
}
],
"payable": false,
"stateMutability": "view",
"type": "function"
},
{
"constant": false,
"inputs": [
{
"internalType": "address",
"name": "spender",
"type": "address"
},
{
"internalType": "uint256",
"name": "amount",
"type": "uint256"
}
],
"name": "approve",
"outputs": [
{
"internalType": "bool",
"name": "",
"type": "bool"
}
],
"payable": false,
"stateMutability": "nonpayable",
"type": "function"
},
{
"constant": true,
"inputs": [
{
"internalType": "address",
"name": "account",
"type": "address"
}
],
"name": "balanceOf",
"outputs": [
{
"internalType": "uint256",
"name": "",
"type": "uint256"
}
],
"payable": false,
"stateMutability": "view",
"type": "function"
},
{
"constant": true,
"inputs": [],
"name": "totalSupply",
"outputs": [
{
"internalType": "uint256",
"name": "",
"type": "uint256"
}
],
"payable": false,
"stateMutability": "view",
"type": "function"
},
{
"constant": false,
"inputs": [
{
"internalType": "address",
"name": "recipient",
"type": "address"
},
{
"internalType": "uint256",
"name": "amount",
"type": "uint256"
}
],
"name": "transfer",
"outputs": [
{
"internalType": "bool",
"name": "",
"type": "bool"
}
],
"payable": false,
"stateMutability": "nonpayable",
"type": "function"
},
{
"constant": false,
"inputs": [
{
"internalType": "address",
"name": "sender",
"type": "address"
},
{
"internalType": "address",
"name": "recipient",
"type": "address"
},
{
"internalType": "uint256",
"name": "amount",
"type": "uint256"
}
],
"name": "transferFrom",
"outputs": [
{
"internalType": "bool",
"name": "",
"type": "bool"
}
],
"payable": false,
"stateMutability": "nonpayable",
"type": "function"
}
]
}
{
"compiler": {
"version": "0.5.17+commit.d19bba13"
},
"language": "Solidity",
"output": {
"abi": [
{
"anonymous": false,
"inputs": [
{
"indexed": true,
"internalType": "address",
"name": "owner",
"type": "address"
},
{
"indexed": true,
"internalType": "address",
"name": "spender",
"type": "address"
},
{
"indexed": false,
"internalType": "uint256",
"name": "value",
"type": "uint256"
}
],
"name": "Approval",
"type": "event"
},
{
"anonymous": false,
"inputs": [
{
"indexed": true,
"internalType": "address",
"name": "from",
"type": "address"
},
{
"indexed": true,
"internalType": "address",
"name": "to",
"type": "address"
},
{
"indexed": false,
"internalType": "uint256",
"name": "value",
"type": "uint256"
}
],
"name": "Transfer",
"type": "event"
},
{
"constant": true,
"inputs": [
{
"internalType": "address",
"name": "owner",
"type": "address"
},
{
"internalType": "address",
"name": "spender",
"type": "address"
}
],
"name": "allowance",
"outputs": [
{
"internalType": "uint256",
"name": "",
"type": "uint256"
}
],
"payable": false,
"stateMutability": "view",
"type": "function"
},
{
"constant": false,
"inputs": [
{
"internalType": "address",
"name": "spender",
"type": "address"
},
{
"internalType": "uint256",
"name": "amount",
"type": "uint256"
}
],
"name": "approve",
"outputs": [
{
"internalType": "bool",
"name": "",
"type": "bool"
}
],
"payable": false,
"stateMutability": "nonpayable",
"type": "function"
},
{
"constant": true,
"inputs": [
{
"internalType": "address",
"name": "account",
"type": "address"
}
],
"name": "balanceOf",
"outputs": [
{
"internalType": "uint256",
"name": "",
"type": "uint256"
}
],
"payable": false,
"stateMutability": "view",
"type": "function"
},
{
"constant": true,
"inputs": [],
"name": "totalSupply",
"outputs": [
{
"internalType": "uint256",
"name": "",
"type": "uint256"
}
],
"payable": false,
"stateMutability": "view",
"type": "function"
},
{
"constant": false,
"inputs": [
{
"internalType": "address",
"name": "recipient",
"type": "address"
},
{
"internalType": "uint256",
"name": "amount",
"type": "uint256"
}
],
"name": "transfer",
"outputs": [
{
"internalType": "bool",
"name": "",
"type": "bool"
}
],
"payable": false,
"stateMutability": "nonpayable",
"type": "function"
},
{
"constant": false,
"inputs": [
{
"internalType": "address",
"name": "sender",
"type": "address"
},
{
"internalType": "address",
"name": "recipient",
"type": "address"
},
{
"internalType": "uint256",
"name": "amount",
"type": "uint256"
}
],
"name": "transferFrom",
"outputs": [
{
"internalType": "bool",
"name": "",
"type": "bool"
}
],
"payable": false,
"stateMutability": "nonpayable",
"type": "function"
}
],
"devdoc": {
"details": "Interface of the ERC20 standard as defined in the EIP. Does not include the optional functions; to access them see {ERC20Detailed}.",
"methods": {
"allowance(address,address)": {
"details": "Returns the remaining number of tokens that `spender` will be allowed to spend on behalf of `owner` through {transferFrom}. This is zero by default. * This value changes when {approve} or {transferFrom} are called."
},
"approve(address,uint256)": {
"details": "Sets `amount` as the allowance of `spender` over the caller's tokens. * Returns a boolean value indicating whether the operation succeeded. * IMPORTANT: Beware that changing an allowance with this method brings the risk that someone may use both the old and the new allowance by unfortunate transaction ordering. One possible solution to mitigate this race condition is to first reduce the spender's allowance to 0 and set the desired value afterwards: https://github.com/ethereum/EIPs/issues/20#issuecomment-263524729 * Emits an {Approval} event."
},
"balanceOf(address)": {
"details": "Returns the amount of tokens owned by `account`."
},
"totalSupply()": {
"details": "Returns the amount of tokens in existence."
},
"transfer(address,uint256)": {
"details": "Moves `amount` tokens from the caller's account to `recipient`. * Returns a boolean value indicating whether the operation succeeded. * Emits a {Transfer} event."
},
"transferFrom(address,address,uint256)": {
"details": "Moves `amount` tokens from `sender` to `recipient` using the allowance mechanism. `amount` is then deducted from the caller's allowance. * Returns a boolean value indicating whether the operation succeeded. * Emits a {Transfer} event."
}
}
},
"userdoc": {
"methods": {}
}
},
"settings": {
"compilationTarget": {
"IERC20.sol": "IERC20"
},
"evmVersion": "istanbul",
"libraries": {},
"optimizer": {
"enabled": false,
"runs": 200
},
"remappings": []
},
"sources": {
"IERC20.sol": {
"keccak256": "0x694b989b371044e7a6730ce6d4b3da45679b7d5a5ff57cb6d6d84d567add5312",
"urls": [
"bzz-raw://529be491ce5d5ff6de81273a85d17fdd0a7e1f50121b7a8b886f3612ad39caa1",
"dweb:/ipfs/Qmd2KFSZtkSeyUES6z2c2UdZhMQ6AgKLz6DXkqX5ApyfFE"
]
}
},
"version": 1
}
{
"deploy": {
"VM:-": {
"linkReferences": {},
"autoDeployLib": true
},
"main:1": {
"linkReferences": {},
"autoDeployLib": true
},
"ropsten:3": {
"linkReferences": {},
"autoDeployLib": true
},
"rinkeby:4": {
"linkReferences": {},
"autoDeployLib": true
},
"kovan:42": {
"linkReferences": {},
"autoDeployLib": true
},
"görli:5": {
"linkReferences": {},
"autoDeployLib": true
},
"Custom": {
"linkReferences": {},
"autoDeployLib": true
}
},
"data": {
"bytecode": {
"linkReferences": {},
"object": "",
"opcodes": "",
"sourceMap": ""
},
"deployedBytecode": {
"linkReferences": {},
"object": "",
"opcodes": "",
"sourceMap": ""
},
"gasEstimates": null,
"methodIdentifiers": {
"close()": "43d726d6",
"isOwner()": "8f32d59b",
"owner()": "8da5cb5b",
"pause()": "8456cb59",
"paused()": "5c975abb",
"renounceOwnership()": "715018a6",
"transferOwnership(address)": "f2fde38b",
"unpause()": "3f4ba83a"
}
},
"abi": [
{
"inputs": [
{
"internalType": "address payable",
"name": "owner",
"type": "address"
}
],
"payable": false,
"stateMutability": "nonpayable",
"type": "constructor"
},
{
"anonymous": false,
"inputs": [
{
"indexed": true,
"internalType": "address",
"name": "previousOwner",
"type": "address"
},
{
"indexed": true,
"internalType": "address",
"name": "newOwner",
"type": "address"
}
],
"name": "OwnershipTransferred",
"type": "event"
},
{
"anonymous": false,
"inputs": [
{
"indexed": false,
"internalType": "address",
"name": "account",
"type": "address"
}
],
"name": "Paused",
"type": "event"
},
{
"anonymous": false,
"inputs": [
{
"indexed": false,
"internalType": "address",
"name": "account",
"type": "address"
}
],
"name": "Unpaused",
"type": "event"
},
{
"constant": false,
"inputs": [],
"name": "close",
"outputs": [],
"payable": false,
"stateMutability": "nonpayable",
"type": "function"
},
{
"constant": true,
"inputs": [],
"name": "isOwner",
"outputs": [
{
"internalType": "bool",
"name": "",
"type": "bool"
}
],
"payable": false,
"stateMutability": "view",
"type": "function"
},
{
"constant": true,
"inputs": [],
"name": "owner",
"outputs": [
{
"internalType": "address",
"name": "",
"type": "address"
}
],
"payable": false,
"stateMutability": "view",
"type": "function"
},
{
"constant": false,
"inputs": [],
"name": "pause",
"outputs": [],
"payable": false,
"stateMutability": "nonpayable",
"type": "function"
},
{
"constant": true,
"inputs": [],
"name": "paused",
"outputs": [
{
"internalType": "bool",
"name": "",
"type": "bool"
}
],
"payable": false,
"stateMutability": "view",
"type": "function"
},
{
"constant": false,
"inputs": [],
"name": "renounceOwnership",
"outputs": [],
"payable": false,
"stateMutability": "nonpayable",
"type": "function"
},
{
"constant": false,
"inputs": [
{
"internalType": "address payable",
"name": "newOwner",
"type": "address"
}
],
"name": "transferOwnership",
"outputs": [],
"payable": false,
"stateMutability": "nonpayable",
"type": "function"
},
{
"constant": false,
"inputs": [],
"name": "unpause",
"outputs": [],
"payable": false,
"stateMutability": "nonpayable",
"type": "function"
}
]
}
{
"compiler": {
"version": "0.5.17+commit.d19bba13"
},
"language": "Solidity",
"output": {
"abi": [
{
"inputs": [
{
"internalType": "address payable",
"name": "owner",
"type": "address"
}
],
"payable": false,
"stateMutability": "nonpayable",
"type": "constructor"
},
{
"anonymous": false,
"inputs": [
{
"indexed": true,
"internalType": "address",
"name": "previousOwner",
"type": "address"
},
{
"indexed": true,
"internalType": "address",
"name": "newOwner",
"type": "address"
}
],
"name": "OwnershipTransferred",
"type": "event"
},
{
"anonymous": false,
"inputs": [
{
"indexed": false,
"internalType": "address",
"name": "account",
"type": "address"
}
],
"name": "Paused",
"type": "event"
},
{
"anonymous": false,
"inputs": [
{
"indexed": false,
"internalType": "address",
"name": "account",
"type": "address"
}
],
"name": "Unpaused",
"type": "event"
},
{
"constant": false,
"inputs": [],
"name": "close",
"outputs": [],
"payable": false,
"stateMutability": "nonpayable",
"type": "function"
},
{
"constant": true,
"inputs": [],
"name": "isOwner",
"outputs": [
{
"internalType": "bool",
"name": "",
"type": "bool"
}
],
"payable": false,
"stateMutability": "view",
"type": "function"
},
{
"constant": true,
"inputs": [],
"name": "owner",
"outputs": [
{
"internalType": "address",
"name": "",
"type": "address"
}
],
"payable": false,
"stateMutability": "view",
"type": "function"
},
{
"constant": false,
"inputs": [],
"name": "pause",
"outputs": [],
"payable": false,
"stateMutability": "nonpayable",
"type": "function"
},
{
"constant": true,
"inputs": [],
"name": "paused",
"outputs": [
{
"internalType": "bool",
"name": "",
"type": "bool"
}
],
"payable": false,
"stateMutability": "view",
"type": "function"
},
{
"constant": false,
"inputs": [],
"name": "renounceOwnership",
"outputs": [],
"payable": false,
"stateMutability": "nonpayable",
"type": "function"
},
{
"constant": false,
"inputs": [
{
"internalType": "address payable",
"name": "newOwner",
"type": "address"
}
],
"name": "transferOwnership",
"outputs": [],
"payable": false,
"stateMutability": "nonpayable",
"type": "function"
},
{
"constant": false,
"inputs": [],
"name": "unpause",
"outputs": [],
"payable": false,
"stateMutability": "nonpayable",
"type": "function"
}
],
"devdoc": {
"details": "Contract module which provides a basic access control mechanism, where there is an account (an owner) that can be granted exclusive access to specific functions, for now limited to pausing and destructing the contract. * This module is used through inheritance. It will make available the modifier `onlyOwner`, which can be applied to your functions to restrict their use to the owner.",
"methods": {
"close()": {
"details": "Called by the owner to destroy the smart contract from the state. NOTE: Deleting the smart contract from the state will destroy all it's information Information will still be recoverable by full nodes, but this is not recommended Maybe we should add a rollback period for this"
},
"constructor": {
"details": "Initializes the contract setting the deployer as the initial owner."
},
"isOwner()": {
"details": "Returns true if the caller is the current owner."
},
"owner()": {
"details": "Returns the address of the current owner."
},
"pause()": {
"details": "Called by the owner to pause, triggers stopped state."
},
"paused()": {
"details": "Returns true if the contract is paused, and false otherwise."
},
"renounceOwnership()": {
"details": "Leaves the contract without owner. It will not be possible to call `onlyOwner` functions anymore. Can only be called by the current owner. * NOTE: Renouncing ownership will leave the contract without an owner, thereby removing any functionality that is only available to the owner. Maybe we should delete this or ad a rollback period"
},
"transferOwnership(address)": {
"details": "Transfers ownership of the contract to a new account (`newOwner`). Can only be called by the current owner."
},
"unpause()": {
"details": "Called by the owner to unpause, returns to normal state."
}
}
},
"userdoc": {
"methods": {}
}
},
"settings": {
"compilationTarget": {
"Ownable.sol": "Ownable"
},
"evmVersion": "istanbul",
"libraries": {},
"optimizer": {
"enabled": false,
"runs": 200
},
"remappings": []
},
"sources": {
"Context.sol": {
"keccak256": "0x80f1abb873ce86ab49dc816a44f54070318b534c85e7896b7fced09dfa175ace",
"urls": [
"bzz-raw://a24619be18ad5f5f619e0df10d35895661b717848f91e58640cb5b60a77ac5b0",
"dweb:/ipfs/QmUcLCcuSGNtX1fELvU8zb5SRrFyzmJFV2eeQtZDxBBZZ6"
]
},
"Ownable.sol": {
"keccak256": "0x4b3a901d07829cfceaf9dd1c2af117c82b0602816da038b4889d78a53e6a8422",
"urls": [
"bzz-raw://1468661d2a424dd36a6590a446c2db2e7c6dd1a5789f97a5cda7599a23fbcf94",
"dweb:/ipfs/Qma7j89fB2Zb5aJJfDiocMxQkK7Pkox7mRHbETwN2tWVuS"
]
}
},
"version": 1
}
// SPDX-License-Identifier: GPL-3.0
pragma solidity >=0.7.0 <0.9.0;
/**
* @title Storage
* @dev Store & retrieve value in a variable
*/
contract Storage {
uint256 number;
/**
* @dev Store value in variable
* @param num value to store
*/
function store(uint256 num) public {
number = num;
}
/**
* @dev Return value
* @return value of 'number'
*/
function retrieve() public view returns (uint256){
return number;
}
}
// SPDX-License-Identifier: GPL-3.0
pragma solidity >=0.7.0 <0.9.0;
/**
* @title Owner
* @dev Set & change owner
*/
contract Owner {
address private owner;
// event for EVM logging
event OwnerSet(address indexed oldOwner, address indexed newOwner);
// modifier to check if caller is owner
modifier isOwner() {
// If the first argument of 'require' evaluates to 'false', execution terminates and all
// changes to the state and to Ether balances are reverted.
// This used to consume all gas in old EVM versions, but not anymore.
// It is often a good idea to use 'require' to check if functions are called correctly.
// As a second argument, you can also provide an explanation about what went wrong.
require(msg.sender == owner, "Caller is not owner");
_;
}
/**
* @dev Set contract deployer as owner
*/
constructor() {
owner = msg.sender; // 'msg.sender' is sender of current call, contract deployer for a constructor
emit OwnerSet(address(0), owner);
}
/**
* @dev Change owner
* @param newOwner address of new owner
*/
function changeOwner(address newOwner) public isOwner {
emit OwnerSet(owner, newOwner);
owner = newOwner;
}
/**
* @dev Return owner address
* @return address of owner
*/
function getOwner() external view returns (address) {
return owner;
}
}
// SPDX-License-Identifier: GPL-3.0
pragma solidity >=0.7.0 <0.9.0;
/**
* @title Ballot
* @dev Implements voting process along with vote delegation
*/
contract Ballot {
struct Voter {
uint weight; // weight is accumulated by delegation
bool voted; // if true, that person already voted
address delegate; // person delegated to
uint vote; // index of the voted proposal
}
struct Proposal {
// If you can limit the length to a certain number of bytes,
// always use one of bytes1 to bytes32 because they are much cheaper
bytes32 name; // short name (up to 32 bytes)
uint voteCount; // number of accumulated votes
}
address public chairperson;
mapping(address => Voter) public voters;
Proposal[] public proposals;
/**
* @dev Create a new ballot to choose one of 'proposalNames'.
* @param proposalNames names of proposals
*/
constructor(bytes32[] memory proposalNames) {
chairperson = msg.sender;
voters[chairperson].weight = 1;
for (uint i = 0; i < proposalNames.length; i++) {
// 'Proposal({...})' creates a temporary
// Proposal object and 'proposals.push(...)'
// appends it to the end of 'proposals'.
proposals.push(Proposal({
name: proposalNames[i],
voteCount: 0
}));
}
}
/**
* @dev Give 'voter' the right to vote on this ballot. May only be called by 'chairperson'.
* @param voter address of voter
*/
function giveRightToVote(address voter) public {
require(
msg.sender == chairperson,
"Only chairperson can give right to vote."
);
require(
!voters[voter].voted,
"The voter already voted."
);
require(voters[voter].weight == 0);
voters[voter].weight = 1;
}
/**
* @dev Delegate your vote to the voter 'to'.
* @param to address to which vote is delegated
*/
function delegate(address to) public {
Voter storage sender = voters[msg.sender];
require(!sender.voted, "You already voted.");
require(to != msg.sender, "Self-delegation is disallowed.");
while (voters[to].delegate != address(0)) {
to = voters[to].delegate;
// We found a loop in the delegation, not allowed.
require(to != msg.sender, "Found loop in delegation.");
}
sender.voted = true;
sender.delegate = to;
Voter storage delegate_ = voters[to];
if (delegate_.voted) {
// If the delegate already voted,
// directly add to the number of votes
proposals[delegate_.vote].voteCount += sender.weight;
} else {
// If the delegate did not vote yet,
// add to her weight.
delegate_.weight += sender.weight;
}
}
/**
* @dev Give your vote (including votes delegated to you) to proposal 'proposals[proposal].name'.
* @param proposal index of proposal in the proposals array
*/
function vote(uint proposal) public {
Voter storage sender = voters[msg.sender];
require(sender.weight != 0, "Has no right to vote");
require(!sender.voted, "Already voted.");
sender.voted = true;
sender.vote = proposal;
// If 'proposal' is out of the range of the array,
// this will throw automatically and revert all
// changes.
proposals[proposal].voteCount += sender.weight;
}
/**
* @dev Computes the winning proposal taking all previous votes into account.
* @return winningProposal_ index of winning proposal in the proposals array
*/
function winningProposal() public view
returns (uint winningProposal_)
{
uint winningVoteCount = 0;
for (uint p = 0; p < proposals.length; p++) {
if (proposals[p].voteCount > winningVoteCount) {
winningVoteCount = proposals[p].voteCount;
winningProposal_ = p;
}
}
}
/**
* @dev Calls winningProposal() function to get the index of the winner contained in the proposals array and then
* @return winnerName_ the name of the winner
*/
function winnerName() public view
returns (bytes32 winnerName_)
{
winnerName_ = proposals[winningProposal()].name;
}
}
{
"deploy": {
"VM:-": {
"linkReferences": {},
"autoDeployLib": true
},
"main:1": {
"linkReferences": {},
"autoDeployLib": true
},
"ropsten:3": {
"linkReferences": {},
"autoDeployLib": true
},
"rinkeby:4": {
"linkReferences": {},
"autoDeployLib": true
},
"kovan:42": {
"linkReferences": {},
"autoDeployLib": true
},
"görli:5": {
"linkReferences": {},
"autoDeployLib": true
},
"Custom": {
"linkReferences": {},
"autoDeployLib": true
}
},
"data": {
"bytecode": {
"functionDebugData": {
"@_71": {
"entryPoint": null,
"id": 71,
"parameterSlots": 1,
"returnSlots": 0
},
"abi_decode_tuple_t_array$_t_bytes32_$dyn_memory_ptr_fromMemory": {
"entryPoint": 226,
"id": null,
"parameterSlots": 2,
"returnSlots": 1
},
"increment_t_uint256": {
"entryPoint": 437,
"id": null,
"parameterSlots": 1,
"returnSlots": 1
},
"panic_error_0x32": {
"entryPoint": 415,
"id": null,
"parameterSlots": 0,
"returnSlots": 0
},
"panic_error_0x41": {
"entryPoint": 204,
"id": null,
"parameterSlots": 0,
"returnSlots": 0
}
},
"generatedSources": [
{
"ast": {
"nodeType": "YulBlock",
"src": "0:1622:1",
"statements": [
{
"nodeType": "YulBlock",
"src": "6:3:1",
"statements": []
},
{
"body": {
"nodeType": "YulBlock",
"src": "46:95:1",
"statements": [
{
"expression": {
"arguments": [
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "63:1:1",
"type": "",
"value": "0"
},
{
"arguments": [
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "70:3:1",
"type": "",
"value": "224"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "75:10:1",
"type": "",
"value": "0x4e487b71"
}
],
"functionName": {
"name": "shl",
"nodeType": "YulIdentifier",
"src": "66:3:1"
},
"nodeType": "YulFunctionCall",
"src": "66:20:1"
}
],
"functionName": {
"name": "mstore",
"nodeType": "YulIdentifier",
"src": "56:6:1"
},
"nodeType": "YulFunctionCall",
"src": "56:31:1"
},
"nodeType": "YulExpressionStatement",
"src": "56:31:1"
},
{
"expression": {
"arguments": [
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "103:1:1",
"type": "",
"value": "4"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "106:4:1",
"type": "",
"value": "0x41"
}
],
"functionName": {
"name": "mstore",
"nodeType": "YulIdentifier",
"src": "96:6:1"
},
"nodeType": "YulFunctionCall",
"src": "96:15:1"
},
"nodeType": "YulExpressionStatement",
"src": "96:15:1"
},
{
"expression": {
"arguments": [
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "127:1:1",
"type": "",
"value": "0"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "130:4:1",
"type": "",
"value": "0x24"
}
],
"functionName": {
"name": "revert",
"nodeType": "YulIdentifier",
"src": "120:6:1"
},
"nodeType": "YulFunctionCall",
"src": "120:15:1"
},
"nodeType": "YulExpressionStatement",
"src": "120:15:1"
}
]
},
"name": "panic_error_0x41",
"nodeType": "YulFunctionDefinition",
"src": "14:127:1"
},
{
"body": {
"nodeType": "YulBlock",
"src": "252:999:1",
"statements": [
{
"nodeType": "YulVariableDeclaration",
"src": "262:12:1",
"value": {
"kind": "number",
"nodeType": "YulLiteral",
"src": "272:2:1",
"type": "",
"value": "32"
},
"variables": [
{
"name": "_1",
"nodeType": "YulTypedName",
"src": "266:2:1",
"type": ""
}
]
},
{
"body": {
"nodeType": "YulBlock",
"src": "319:16:1",
"statements": [
{
"expression": {
"arguments": [
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "328:1:1",
"type": "",
"value": "0"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "331:1:1",
"type": "",
"value": "0"
}
],
"functionName": {
"name": "revert",
"nodeType": "YulIdentifier",
"src": "321:6:1"
},
"nodeType": "YulFunctionCall",
"src": "321:12:1"
},
"nodeType": "YulExpressionStatement",
"src": "321:12:1"
}
]
},
"condition": {
"arguments": [
{
"arguments": [
{
"name": "dataEnd",
"nodeType": "YulIdentifier",
"src": "294:7:1"
},
{
"name": "headStart",
"nodeType": "YulIdentifier",
"src": "303:9:1"
}
],
"functionName": {
"name": "sub",
"nodeType": "YulIdentifier",
"src": "290:3:1"
},
"nodeType": "YulFunctionCall",
"src": "290:23:1"
},
{
"name": "_1",
"nodeType": "YulIdentifier",
"src": "315:2:1"
}
],
"functionName": {
"name": "slt",
"nodeType": "YulIdentifier",
"src": "286:3:1"
},
"nodeType": "YulFunctionCall",
"src": "286:32:1"
},
"nodeType": "YulIf",
"src": "283:52:1"
},
{
"nodeType": "YulVariableDeclaration",
"src": "344:30:1",
"value": {
"arguments": [
{
"name": "headStart",
"nodeType": "YulIdentifier",
"src": "364:9:1"
}
],
"functionName": {
"name": "mload",
"nodeType": "YulIdentifier",
"src": "358:5:1"
},
"nodeType": "YulFunctionCall",
"src": "358:16:1"
},
"variables": [
{
"name": "offset",
"nodeType": "YulTypedName",
"src": "348:6:1",
"type": ""
}
]
},
{
"nodeType": "YulVariableDeclaration",
"src": "383:28:1",
"value": {
"arguments": [
{
"arguments": [
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "401:2:1",
"type": "",
"value": "64"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "405:1:1",
"type": "",
"value": "1"
}
],
"functionName": {
"name": "shl",
"nodeType": "YulIdentifier",
"src": "397:3:1"
},
"nodeType": "YulFunctionCall",
"src": "397:10:1"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "409:1:1",
"type": "",
"value": "1"
}
],
"functionName": {
"name": "sub",
"nodeType": "YulIdentifier",
"src": "393:3:1"
},
"nodeType": "YulFunctionCall",
"src": "393:18:1"
},
"variables": [
{
"name": "_2",
"nodeType": "YulTypedName",
"src": "387:2:1",
"type": ""
}
]
},
{
"body": {
"nodeType": "YulBlock",
"src": "438:16:1",
"statements": [
{
"expression": {
"arguments": [
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "447:1:1",
"type": "",
"value": "0"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "450:1:1",
"type": "",
"value": "0"
}
],
"functionName": {
"name": "revert",
"nodeType": "YulIdentifier",
"src": "440:6:1"
},
"nodeType": "YulFunctionCall",
"src": "440:12:1"
},
"nodeType": "YulExpressionStatement",
"src": "440:12:1"
}
]
},
"condition": {
"arguments": [
{
"name": "offset",
"nodeType": "YulIdentifier",
"src": "426:6:1"
},
{
"name": "_2",
"nodeType": "YulIdentifier",
"src": "434:2:1"
}
],
"functionName": {
"name": "gt",
"nodeType": "YulIdentifier",
"src": "423:2:1"
},
"nodeType": "YulFunctionCall",
"src": "423:14:1"
},
"nodeType": "YulIf",
"src": "420:34:1"
},
{
"nodeType": "YulVariableDeclaration",
"src": "463:32:1",
"value": {
"arguments": [
{
"name": "headStart",
"nodeType": "YulIdentifier",
"src": "477:9:1"
},
{
"name": "offset",
"nodeType": "YulIdentifier",
"src": "488:6:1"
}
],
"functionName": {
"name": "add",
"nodeType": "YulIdentifier",
"src": "473:3:1"
},
"nodeType": "YulFunctionCall",
"src": "473:22:1"
},
"variables": [
{
"name": "_3",
"nodeType": "YulTypedName",
"src": "467:2:1",
"type": ""
}
]
},
{
"body": {
"nodeType": "YulBlock",
"src": "543:16:1",
"statements": [
{
"expression": {
"arguments": [
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "552:1:1",
"type": "",
"value": "0"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "555:1:1",
"type": "",
"value": "0"
}
],
"functionName": {
"name": "revert",
"nodeType": "YulIdentifier",
"src": "545:6:1"
},
"nodeType": "YulFunctionCall",
"src": "545:12:1"
},
"nodeType": "YulExpressionStatement",
"src": "545:12:1"
}
]
},
"condition": {
"arguments": [
{
"arguments": [
{
"arguments": [
{
"name": "_3",
"nodeType": "YulIdentifier",
"src": "522:2:1"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "526:4:1",
"type": "",
"value": "0x1f"
}
],
"functionName": {
"name": "add",
"nodeType": "YulIdentifier",
"src": "518:3:1"
},
"nodeType": "YulFunctionCall",
"src": "518:13:1"
},
{
"name": "dataEnd",
"nodeType": "YulIdentifier",
"src": "533:7:1"
}
],
"functionName": {
"name": "slt",
"nodeType": "YulIdentifier",
"src": "514:3:1"
},
"nodeType": "YulFunctionCall",
"src": "514:27:1"
}
],
"functionName": {
"name": "iszero",
"nodeType": "YulIdentifier",
"src": "507:6:1"
},
"nodeType": "YulFunctionCall",
"src": "507:35:1"
},
"nodeType": "YulIf",
"src": "504:55:1"
},
{
"nodeType": "YulVariableDeclaration",
"src": "568:19:1",
"value": {
"arguments": [
{
"name": "_3",
"nodeType": "YulIdentifier",
"src": "584:2:1"
}
],
"functionName": {
"name": "mload",
"nodeType": "YulIdentifier",
"src": "578:5:1"
},
"nodeType": "YulFunctionCall",
"src": "578:9:1"
},
"variables": [
{
"name": "_4",
"nodeType": "YulTypedName",
"src": "572:2:1",
"type": ""
}
]
},
{
"body": {
"nodeType": "YulBlock",
"src": "610:22:1",
"statements": [
{
"expression": {
"arguments": [],
"functionName": {
"name": "panic_error_0x41",
"nodeType": "YulIdentifier",
"src": "612:16:1"
},
"nodeType": "YulFunctionCall",
"src": "612:18:1"
},
"nodeType": "YulExpressionStatement",
"src": "612:18:1"
}
]
},
"condition": {
"arguments": [
{
"name": "_4",
"nodeType": "YulIdentifier",
"src": "602:2:1"
},
{
"name": "_2",
"nodeType": "YulIdentifier",
"src": "606:2:1"
}
],
"functionName": {
"name": "gt",
"nodeType": "YulIdentifier",
"src": "599:2:1"
},
"nodeType": "YulFunctionCall",
"src": "599:10:1"
},
"nodeType": "YulIf",
"src": "596:36:1"
},
{
"nodeType": "YulVariableDeclaration",
"src": "641:20:1",
"value": {
"arguments": [
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "655:1:1",
"type": "",
"value": "5"
},
{
"name": "_4",
"nodeType": "YulIdentifier",
"src": "658:2:1"
}
],
"functionName": {
"name": "shl",
"nodeType": "YulIdentifier",
"src": "651:3:1"
},
"nodeType": "YulFunctionCall",
"src": "651:10:1"
},
"variables": [
{
"name": "_5",
"nodeType": "YulTypedName",
"src": "645:2:1",
"type": ""
}
]
},
{
"nodeType": "YulVariableDeclaration",
"src": "670:23:1",
"value": {
"arguments": [
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "690:2:1",
"type": "",
"value": "64"
}
],
"functionName": {
"name": "mload",
"nodeType": "YulIdentifier",
"src": "684:5:1"
},
"nodeType": "YulFunctionCall",
"src": "684:9:1"
},
"variables": [
{
"name": "memPtr",
"nodeType": "YulTypedName",
"src": "674:6:1",
"type": ""
}
]
},
{
"nodeType": "YulVariableDeclaration",
"src": "702:56:1",
"value": {
"arguments": [
{
"name": "memPtr",
"nodeType": "YulIdentifier",
"src": "724:6:1"
},
{
"arguments": [
{
"arguments": [
{
"name": "_5",
"nodeType": "YulIdentifier",
"src": "740:2:1"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "744:2:1",
"type": "",
"value": "63"
}
],
"functionName": {
"name": "add",
"nodeType": "YulIdentifier",
"src": "736:3:1"
},
"nodeType": "YulFunctionCall",
"src": "736:11:1"
},
{
"arguments": [
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "753:2:1",
"type": "",
"value": "31"
}
],
"functionName": {
"name": "not",
"nodeType": "YulIdentifier",
"src": "749:3:1"
},
"nodeType": "YulFunctionCall",
"src": "749:7:1"
}
],
"functionName": {
"name": "and",
"nodeType": "YulIdentifier",
"src": "732:3:1"
},
"nodeType": "YulFunctionCall",
"src": "732:25:1"
}
],
"functionName": {
"name": "add",
"nodeType": "YulIdentifier",
"src": "720:3:1"
},
"nodeType": "YulFunctionCall",
"src": "720:38:1"
},
"variables": [
{
"name": "newFreePtr",
"nodeType": "YulTypedName",
"src": "706:10:1",
"type": ""
}
]
},
{
"body": {
"nodeType": "YulBlock",
"src": "817:22:1",
"statements": [
{
"expression": {
"arguments": [],
"functionName": {
"name": "panic_error_0x41",
"nodeType": "YulIdentifier",
"src": "819:16:1"
},
"nodeType": "YulFunctionCall",
"src": "819:18:1"
},
"nodeType": "YulExpressionStatement",
"src": "819:18:1"
}
]
},
"condition": {
"arguments": [
{
"arguments": [
{
"name": "newFreePtr",
"nodeType": "YulIdentifier",
"src": "776:10:1"
},
{
"name": "_2",
"nodeType": "YulIdentifier",
"src": "788:2:1"
}
],
"functionName": {
"name": "gt",
"nodeType": "YulIdentifier",
"src": "773:2:1"
},
"nodeType": "YulFunctionCall",
"src": "773:18:1"
},
{
"arguments": [
{
"name": "newFreePtr",
"nodeType": "YulIdentifier",
"src": "796:10:1"
},
{
"name": "memPtr",
"nodeType": "YulIdentifier",
"src": "808:6:1"
}
],
"functionName": {
"name": "lt",
"nodeType": "YulIdentifier",
"src": "793:2:1"
},
"nodeType": "YulFunctionCall",
"src": "793:22:1"
}
],
"functionName": {
"name": "or",
"nodeType": "YulIdentifier",
"src": "770:2:1"
},
"nodeType": "YulFunctionCall",
"src": "770:46:1"
},
"nodeType": "YulIf",
"src": "767:72:1"
},
{
"expression": {
"arguments": [
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "855:2:1",
"type": "",
"value": "64"
},
{
"name": "newFreePtr",
"nodeType": "YulIdentifier",
"src": "859:10:1"
}
],
"functionName": {
"name": "mstore",
"nodeType": "YulIdentifier",
"src": "848:6:1"
},
"nodeType": "YulFunctionCall",
"src": "848:22:1"
},
"nodeType": "YulExpressionStatement",
"src": "848:22:1"
},
{
"nodeType": "YulVariableDeclaration",
"src": "879:17:1",
"value": {
"name": "memPtr",
"nodeType": "YulIdentifier",
"src": "890:6:1"
},
"variables": [
{
"name": "dst",
"nodeType": "YulTypedName",
"src": "883:3:1",
"type": ""
}
]
},
{
"expression": {
"arguments": [
{
"name": "memPtr",
"nodeType": "YulIdentifier",
"src": "912:6:1"
},
{
"name": "_4",
"nodeType": "YulIdentifier",
"src": "920:2:1"
}
],
"functionName": {
"name": "mstore",
"nodeType": "YulIdentifier",
"src": "905:6:1"
},
"nodeType": "YulFunctionCall",
"src": "905:18:1"
},
"nodeType": "YulExpressionStatement",
"src": "905:18:1"
},
{
"nodeType": "YulAssignment",
"src": "932:22:1",
"value": {
"arguments": [
{
"name": "memPtr",
"nodeType": "YulIdentifier",
"src": "943:6:1"
},
{
"name": "_1",
"nodeType": "YulIdentifier",
"src": "951:2:1"
}
],
"functionName": {
"name": "add",
"nodeType": "YulIdentifier",
"src": "939:3:1"
},
"nodeType": "YulFunctionCall",
"src": "939:15:1"
},
"variableNames": [
{
"name": "dst",
"nodeType": "YulIdentifier",
"src": "932:3:1"
}
]
},
{
"nodeType": "YulVariableDeclaration",
"src": "963:34:1",
"value": {
"arguments": [
{
"arguments": [
{
"name": "_3",
"nodeType": "YulIdentifier",
"src": "985:2:1"
},
{
"name": "_5",
"nodeType": "YulIdentifier",
"src": "989:2:1"
}
],
"functionName": {
"name": "add",
"nodeType": "YulIdentifier",
"src": "981:3:1"
},
"nodeType": "YulFunctionCall",
"src": "981:11:1"
},
{
"name": "_1",
"nodeType": "YulIdentifier",
"src": "994:2:1"
}
],
"functionName": {
"name": "add",
"nodeType": "YulIdentifier",
"src": "977:3:1"
},
"nodeType": "YulFunctionCall",
"src": "977:20:1"
},
"variables": [
{
"name": "srcEnd",
"nodeType": "YulTypedName",
"src": "967:6:1",
"type": ""
}
]
},
{
"body": {
"nodeType": "YulBlock",
"src": "1029:16:1",
"statements": [
{
"expression": {
"arguments": [
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "1038:1:1",
"type": "",
"value": "0"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "1041:1:1",
"type": "",
"value": "0"
}
],
"functionName": {
"name": "revert",
"nodeType": "YulIdentifier",
"src": "1031:6:1"
},
"nodeType": "YulFunctionCall",
"src": "1031:12:1"
},
"nodeType": "YulExpressionStatement",
"src": "1031:12:1"
}
]
},
"condition": {
"arguments": [
{
"name": "srcEnd",
"nodeType": "YulIdentifier",
"src": "1012:6:1"
},
{
"name": "dataEnd",
"nodeType": "YulIdentifier",
"src": "1020:7:1"
}
],
"functionName": {
"name": "gt",
"nodeType": "YulIdentifier",
"src": "1009:2:1"
},
"nodeType": "YulFunctionCall",
"src": "1009:19:1"
},
"nodeType": "YulIf",
"src": "1006:39:1"
},
{
"nodeType": "YulVariableDeclaration",
"src": "1054:22:1",
"value": {
"arguments": [
{
"name": "_3",
"nodeType": "YulIdentifier",
"src": "1069:2:1"
},
{
"name": "_1",
"nodeType": "YulIdentifier",
"src": "1073:2:1"
}
],
"functionName": {
"name": "add",
"nodeType": "YulIdentifier",
"src": "1065:3:1"
},
"nodeType": "YulFunctionCall",
"src": "1065:11:1"
},
"variables": [
{
"name": "src",
"nodeType": "YulTypedName",
"src": "1058:3:1",
"type": ""
}
]
},
{
"body": {
"nodeType": "YulBlock",
"src": "1141:79:1",
"statements": [
{
"expression": {
"arguments": [
{
"name": "dst",
"nodeType": "YulIdentifier",
"src": "1162:3:1"
},
{
"arguments": [
{
"name": "src",
"nodeType": "YulIdentifier",
"src": "1173:3:1"
}
],
"functionName": {
"name": "mload",
"nodeType": "YulIdentifier",
"src": "1167:5:1"
},
"nodeType": "YulFunctionCall",
"src": "1167:10:1"
}
],
"functionName": {
"name": "mstore",
"nodeType": "YulIdentifier",
"src": "1155:6:1"
},
"nodeType": "YulFunctionCall",
"src": "1155:23:1"
},
"nodeType": "YulExpressionStatement",
"src": "1155:23:1"
},
{
"nodeType": "YulAssignment",
"src": "1191:19:1",
"value": {
"arguments": [
{
"name": "dst",
"nodeType": "YulIdentifier",
"src": "1202:3:1"
},
{
"name": "_1",
"nodeType": "YulIdentifier",
"src": "1207:2:1"
}
],
"functionName": {
"name": "add",
"nodeType": "YulIdentifier",
"src": "1198:3:1"
},
"nodeType": "YulFunctionCall",
"src": "1198:12:1"
},
"variableNames": [
{
"name": "dst",
"nodeType": "YulIdentifier",
"src": "1191:3:1"
}
]
}
]
},
"condition": {
"arguments": [
{
"name": "src",
"nodeType": "YulIdentifier",
"src": "1096:3:1"
},
{
"name": "srcEnd",
"nodeType": "YulIdentifier",
"src": "1101:6:1"
}
],
"functionName": {
"name": "lt",
"nodeType": "YulIdentifier",
"src": "1093:2:1"
},
"nodeType": "YulFunctionCall",
"src": "1093:15:1"
},
"nodeType": "YulForLoop",
"post": {
"nodeType": "YulBlock",
"src": "1109:23:1",
"statements": [
{
"nodeType": "YulAssignment",
"src": "1111:19:1",
"value": {
"arguments": [
{
"name": "src",
"nodeType": "YulIdentifier",
"src": "1122:3:1"
},
{
"name": "_1",
"nodeType": "YulIdentifier",
"src": "1127:2:1"
}
],
"functionName": {
"name": "add",
"nodeType": "YulIdentifier",
"src": "1118:3:1"
},
"nodeType": "YulFunctionCall",
"src": "1118:12:1"
},
"variableNames": [
{
"name": "src",
"nodeType": "YulIdentifier",
"src": "1111:3:1"
}
]
}
]
},
"pre": {
"nodeType": "YulBlock",
"src": "1089:3:1",
"statements": []
},
"src": "1085:135:1"
},
{
"nodeType": "YulAssignment",
"src": "1229:16:1",
"value": {
"name": "memPtr",
"nodeType": "YulIdentifier",
"src": "1239:6:1"
},
"variableNames": [
{
"name": "value0",
"nodeType": "YulIdentifier",
"src": "1229:6:1"
}
]
}
]
},
"name": "abi_decode_tuple_t_array$_t_bytes32_$dyn_memory_ptr_fromMemory",
"nodeType": "YulFunctionDefinition",
"parameters": [
{
"name": "headStart",
"nodeType": "YulTypedName",
"src": "218:9:1",
"type": ""
},
{
"name": "dataEnd",
"nodeType": "YulTypedName",
"src": "229:7:1",
"type": ""
}
],
"returnVariables": [
{
"name": "value0",
"nodeType": "YulTypedName",
"src": "241:6:1",
"type": ""
}
],
"src": "146:1105:1"
},
{
"body": {
"nodeType": "YulBlock",
"src": "1288:95:1",
"statements": [
{
"expression": {
"arguments": [
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "1305:1:1",
"type": "",
"value": "0"
},
{
"arguments": [
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "1312:3:1",
"type": "",
"value": "224"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "1317:10:1",
"type": "",
"value": "0x4e487b71"
}
],
"functionName": {
"name": "shl",
"nodeType": "YulIdentifier",
"src": "1308:3:1"
},
"nodeType": "YulFunctionCall",
"src": "1308:20:1"
}
],
"functionName": {
"name": "mstore",
"nodeType": "YulIdentifier",
"src": "1298:6:1"
},
"nodeType": "YulFunctionCall",
"src": "1298:31:1"
},
"nodeType": "YulExpressionStatement",
"src": "1298:31:1"
},
{
"expression": {
"arguments": [
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "1345:1:1",
"type": "",
"value": "4"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "1348:4:1",
"type": "",
"value": "0x32"
}
],
"functionName": {
"name": "mstore",
"nodeType": "YulIdentifier",
"src": "1338:6:1"
},
"nodeType": "YulFunctionCall",
"src": "1338:15:1"
},
"nodeType": "YulExpressionStatement",
"src": "1338:15:1"
},
{
"expression": {
"arguments": [
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "1369:1:1",
"type": "",
"value": "0"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "1372:4:1",
"type": "",
"value": "0x24"
}
],
"functionName": {
"name": "revert",
"nodeType": "YulIdentifier",
"src": "1362:6:1"
},
"nodeType": "YulFunctionCall",
"src": "1362:15:1"
},
"nodeType": "YulExpressionStatement",
"src": "1362:15:1"
}
]
},
"name": "panic_error_0x32",
"nodeType": "YulFunctionDefinition",
"src": "1256:127:1"
},
{
"body": {
"nodeType": "YulBlock",
"src": "1435:185:1",
"statements": [
{
"body": {
"nodeType": "YulBlock",
"src": "1474:111:1",
"statements": [
{
"expression": {
"arguments": [
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "1495:1:1",
"type": "",
"value": "0"
},
{
"arguments": [
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "1502:3:1",
"type": "",
"value": "224"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "1507:10:1",
"type": "",
"value": "0x4e487b71"
}
],
"functionName": {
"name": "shl",
"nodeType": "YulIdentifier",
"src": "1498:3:1"
},
"nodeType": "YulFunctionCall",
"src": "1498:20:1"
}
],
"functionName": {
"name": "mstore",
"nodeType": "YulIdentifier",
"src": "1488:6:1"
},
"nodeType": "YulFunctionCall",
"src": "1488:31:1"
},
"nodeType": "YulExpressionStatement",
"src": "1488:31:1"
},
{
"expression": {
"arguments": [
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "1539:1:1",
"type": "",
"value": "4"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "1542:4:1",
"type": "",
"value": "0x11"
}
],
"functionName": {
"name": "mstore",
"nodeType": "YulIdentifier",
"src": "1532:6:1"
},
"nodeType": "YulFunctionCall",
"src": "1532:15:1"
},
"nodeType": "YulExpressionStatement",
"src": "1532:15:1"
},
{
"expression": {
"arguments": [
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "1567:1:1",
"type": "",
"value": "0"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "1570:4:1",
"type": "",
"value": "0x24"
}
],
"functionName": {
"name": "revert",
"nodeType": "YulIdentifier",
"src": "1560:6:1"
},
"nodeType": "YulFunctionCall",
"src": "1560:15:1"
},
"nodeType": "YulExpressionStatement",
"src": "1560:15:1"
}
]
},
"condition": {
"arguments": [
{
"name": "value",
"nodeType": "YulIdentifier",
"src": "1451:5:1"
},
{
"arguments": [
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "1462:1:1",
"type": "",
"value": "0"
}
],
"functionName": {
"name": "not",
"nodeType": "YulIdentifier",
"src": "1458:3:1"
},
"nodeType": "YulFunctionCall",
"src": "1458:6:1"
}
],
"functionName": {
"name": "eq",
"nodeType": "YulIdentifier",
"src": "1448:2:1"
},
"nodeType": "YulFunctionCall",
"src": "1448:17:1"
},
"nodeType": "YulIf",
"src": "1445:140:1"
},
{
"nodeType": "YulAssignment",
"src": "1594:20:1",
"value": {
"arguments": [
{
"name": "value",
"nodeType": "YulIdentifier",
"src": "1605:5:1"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "1612:1:1",
"type": "",
"value": "1"
}
],
"functionName": {
"name": "add",
"nodeType": "YulIdentifier",
"src": "1601:3:1"
},
"nodeType": "YulFunctionCall",
"src": "1601:13:1"
},
"variableNames": [
{
"name": "ret",
"nodeType": "YulIdentifier",
"src": "1594:3:1"
}
]
}
]
},
"name": "increment_t_uint256",
"nodeType": "YulFunctionDefinition",
"parameters": [
{
"name": "value",
"nodeType": "YulTypedName",
"src": "1417:5:1",
"type": ""
}
],
"returnVariables": [
{
"name": "ret",
"nodeType": "YulTypedName",
"src": "1427:3:1",
"type": ""
}
],
"src": "1388:232:1"
}
]
},
"contents": "{\n { }\n function panic_error_0x41()\n {\n mstore(0, shl(224, 0x4e487b71))\n mstore(4, 0x41)\n revert(0, 0x24)\n }\n function abi_decode_tuple_t_array$_t_bytes32_$dyn_memory_ptr_fromMemory(headStart, dataEnd) -> value0\n {\n let _1 := 32\n if slt(sub(dataEnd, headStart), _1) { revert(0, 0) }\n let offset := mload(headStart)\n let _2 := sub(shl(64, 1), 1)\n if gt(offset, _2) { revert(0, 0) }\n let _3 := add(headStart, offset)\n if iszero(slt(add(_3, 0x1f), dataEnd)) { revert(0, 0) }\n let _4 := mload(_3)\n if gt(_4, _2) { panic_error_0x41() }\n let _5 := shl(5, _4)\n let memPtr := mload(64)\n let newFreePtr := add(memPtr, and(add(_5, 63), not(31)))\n if or(gt(newFreePtr, _2), lt(newFreePtr, memPtr)) { panic_error_0x41() }\n mstore(64, newFreePtr)\n let dst := memPtr\n mstore(memPtr, _4)\n dst := add(memPtr, _1)\n let srcEnd := add(add(_3, _5), _1)\n if gt(srcEnd, dataEnd) { revert(0, 0) }\n let src := add(_3, _1)\n for { } lt(src, srcEnd) { src := add(src, _1) }\n {\n mstore(dst, mload(src))\n dst := add(dst, _1)\n }\n value0 := memPtr\n }\n function panic_error_0x32()\n {\n mstore(0, shl(224, 0x4e487b71))\n mstore(4, 0x32)\n revert(0, 0x24)\n }\n function increment_t_uint256(value) -> ret\n {\n if eq(value, not(0))\n {\n mstore(0, shl(224, 0x4e487b71))\n mstore(4, 0x11)\n revert(0, 0x24)\n }\n ret := add(value, 1)\n }\n}",
"id": 1,
"language": "Yul",
"name": "#utility.yul"
}
],
"linkReferences": {},
"object": "608060405234801561001057600080fd5b5060405161096638038061096683398101604081905261002f916100e2565b600080546001600160a01b03191633908117825581526001602081905260408220555b81518110156100c5576002604051806040016040528084848151811061007a5761007a61019f565b602090810291909101810151825260009181018290528354600181810186559483529181902083516002909302019182559190910151910155806100bd816101b5565b915050610052565b50506101de565b634e487b7160e01b600052604160045260246000fd5b600060208083850312156100f557600080fd5b82516001600160401b038082111561010c57600080fd5b818501915085601f83011261012057600080fd5b815181811115610132576101326100cc565b8060051b604051601f19603f83011681018181108582111715610157576101576100cc565b60405291825284820192508381018501918883111561017557600080fd5b938501935b828510156101935784518452938501939285019261017a565b98975050505050505050565b634e487b7160e01b600052603260045260246000fd5b60006000198214156101d757634e487b7160e01b600052601160045260246000fd5b5060010190565b610779806101ed6000396000f3fe608060405234801561001057600080fd5b50600436106100885760003560e01c8063609ff1bd1161005b578063609ff1bd1461010d5780639e7b8d6114610123578063a3ec138d14610136578063e2ba53f0146101a757600080fd5b80630121b93f1461008d578063013cf08b146100a25780632e4176cf146100cf5780635c19a95c146100fa575b600080fd5b6100a061009b36600461069b565b6101af565b005b6100b56100b036600461069b565b6102a6565b604080519283526020830191909152015b60405180910390f35b6000546100e2906001600160a01b031681565b6040516001600160a01b0390911681526020016100c6565b6100a06101083660046106b4565b6102d4565b6101156104d3565b6040519081526020016100c6565b6100a06101313660046106b4565b610550565b6101786101443660046106b4565b600160208190526000918252604090912080549181015460029091015460ff82169161010090046001600160a01b03169084565b6040516100c6949392919093845291151560208401526001600160a01b03166040830152606082015260800190565b610115610668565b33600090815260016020526040902080546102085760405162461bcd60e51b8152602060048201526014602482015273486173206e6f20726967687420746f20766f746560601b60448201526064015b60405180910390fd5b600181015460ff161561024e5760405162461bcd60e51b815260206004820152600e60248201526d20b63932b0b23c903b37ba32b21760911b60448201526064016101ff565b6001818101805460ff191690911790556002808201839055815481549091908490811061027d5761027d6106e4565b9060005260206000209060020201600101600082825461029d9190610710565b90915550505050565b600281815481106102b657600080fd5b60009182526020909120600290910201805460019091015490915082565b3360009081526001602081905260409091209081015460ff161561032f5760405162461bcd60e51b81526020600482015260126024820152712cb7ba9030b63932b0b23c903b37ba32b21760711b60448201526064016101ff565b6001600160a01b0382163314156103885760405162461bcd60e51b815260206004820152601e60248201527f53656c662d64656c65676174696f6e20697320646973616c6c6f7765642e000060448201526064016101ff565b6001600160a01b03828116600090815260016020819052604090912001546101009004161561042d576001600160a01b0391821660009081526001602081905260409091200154610100900490911690338214156104285760405162461bcd60e51b815260206004820152601960248201527f466f756e64206c6f6f7020696e2064656c65676174696f6e2e0000000000000060448201526064016101ff565b610388565b600181810180546001600160a81b0319166101006001600160a01b03861690810291909117831790915560009081526020829052604090209081015460ff16156104b457815460028281015481548110610489576104896106e4565b906000526020600020906002020160010160008282546104a99190610710565b909155506104ce9050565b8154815482906000906104c8908490610710565b90915550505b505050565b600080805b60025481101561054b5781600282815481106104f6576104f66106e4565b90600052602060002090600202016001015411156105395760028181548110610521576105216106e4565b90600052602060002090600202016001015491508092505b8061054381610728565b9150506104d8565b505090565b6000546001600160a01b031633146105bb5760405162461bcd60e51b815260206004820152602860248201527f4f6e6c79206368616972706572736f6e2063616e2067697665207269676874206044820152673a37903b37ba329760c11b60648201526084016101ff565b6001600160a01b0381166000908152600160208190526040909120015460ff16156106285760405162461bcd60e51b815260206004820152601860248201527f54686520766f74657220616c726561647920766f7465642e000000000000000060448201526064016101ff565b6001600160a01b0381166000908152600160205260409020541561064b57600080fd5b6001600160a01b0316600090815260016020819052604090912055565b600060026106746104d3565b81548110610684576106846106e4565b906000526020600020906002020160000154905090565b6000602082840312156106ad57600080fd5b5035919050565b6000602082840312156106c657600080fd5b81356001600160a01b03811681146106dd57600080fd5b9392505050565b634e487b7160e01b600052603260045260246000fd5b634e487b7160e01b600052601160045260246000fd5b60008219821115610723576107236106fa565b500190565b600060001982141561073c5761073c6106fa565b506001019056fea26469706673582212201bf4623bcbb72c28c9145dca0d401c6ee5c5b8767788acbb45788bcf43870a3964736f6c63430008090033",
"opcodes": "PUSH1 0x80 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH2 0x10 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x40 MLOAD PUSH2 0x966 CODESIZE SUB DUP1 PUSH2 0x966 DUP4 CODECOPY DUP2 ADD PUSH1 0x40 DUP2 SWAP1 MSTORE PUSH2 0x2F SWAP2 PUSH2 0xE2 JUMP JUMPDEST PUSH1 0x0 DUP1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB NOT AND CALLER SWAP1 DUP2 OR DUP3 SSTORE DUP2 MSTORE PUSH1 0x1 PUSH1 0x20 DUP2 SWAP1 MSTORE PUSH1 0x40 DUP3 KECCAK256 SSTORE JUMPDEST DUP2 MLOAD DUP2 LT ISZERO PUSH2 0xC5 JUMPI PUSH1 0x2 PUSH1 0x40 MLOAD DUP1 PUSH1 0x40 ADD PUSH1 0x40 MSTORE DUP1 DUP5 DUP5 DUP2 MLOAD DUP2 LT PUSH2 0x7A JUMPI PUSH2 0x7A PUSH2 0x19F JUMP JUMPDEST PUSH1 0x20 SWAP1 DUP2 MUL SWAP2 SWAP1 SWAP2 ADD DUP2 ADD MLOAD DUP3 MSTORE PUSH1 0x0 SWAP2 DUP2 ADD DUP3 SWAP1 MSTORE DUP4 SLOAD PUSH1 0x1 DUP2 DUP2 ADD DUP7 SSTORE SWAP5 DUP4 MSTORE SWAP2 DUP2 SWAP1 KECCAK256 DUP4 MLOAD PUSH1 0x2 SWAP1 SWAP4 MUL ADD SWAP2 DUP3 SSTORE SWAP2 SWAP1 SWAP2 ADD MLOAD SWAP2 ADD SSTORE DUP1 PUSH2 0xBD DUP2 PUSH2 0x1B5 JUMP JUMPDEST SWAP2 POP POP PUSH2 0x52 JUMP JUMPDEST POP POP PUSH2 0x1DE JUMP JUMPDEST PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH1 0x0 MSTORE PUSH1 0x41 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP1 DUP4 DUP6 SUB SLT ISZERO PUSH2 0xF5 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB DUP1 DUP3 GT ISZERO PUSH2 0x10C JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 DUP6 ADD SWAP2 POP DUP6 PUSH1 0x1F DUP4 ADD SLT PUSH2 0x120 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 MLOAD DUP2 DUP2 GT ISZERO PUSH2 0x132 JUMPI PUSH2 0x132 PUSH2 0xCC JUMP JUMPDEST DUP1 PUSH1 0x5 SHL PUSH1 0x40 MLOAD PUSH1 0x1F NOT PUSH1 0x3F DUP4 ADD AND DUP2 ADD DUP2 DUP2 LT DUP6 DUP3 GT OR ISZERO PUSH2 0x157 JUMPI PUSH2 0x157 PUSH2 0xCC JUMP JUMPDEST PUSH1 0x40 MSTORE SWAP2 DUP3 MSTORE DUP5 DUP3 ADD SWAP3 POP DUP4 DUP2 ADD DUP6 ADD SWAP2 DUP9 DUP4 GT ISZERO PUSH2 0x175 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST SWAP4 DUP6 ADD SWAP4 JUMPDEST DUP3 DUP6 LT ISZERO PUSH2 0x193 JUMPI DUP5 MLOAD DUP5 MSTORE SWAP4 DUP6 ADD SWAP4 SWAP3 DUP6 ADD SWAP3 PUSH2 0x17A JUMP JUMPDEST SWAP9 SWAP8 POP POP POP POP POP POP POP POP JUMP JUMPDEST PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH1 0x0 MSTORE PUSH1 0x32 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST PUSH1 0x0 PUSH1 0x0 NOT DUP3 EQ ISZERO PUSH2 0x1D7 JUMPI PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH1 0x0 MSTORE PUSH1 0x11 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST POP PUSH1 0x1 ADD SWAP1 JUMP JUMPDEST PUSH2 0x779 DUP1 PUSH2 0x1ED PUSH1 0x0 CODECOPY PUSH1 0x0 RETURN INVALID PUSH1 0x80 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH2 0x10 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x4 CALLDATASIZE LT PUSH2 0x88 JUMPI PUSH1 0x0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0x609FF1BD GT PUSH2 0x5B JUMPI DUP1 PUSH4 0x609FF1BD EQ PUSH2 0x10D JUMPI DUP1 PUSH4 0x9E7B8D61 EQ PUSH2 0x123 JUMPI DUP1 PUSH4 0xA3EC138D EQ PUSH2 0x136 JUMPI DUP1 PUSH4 0xE2BA53F0 EQ PUSH2 0x1A7 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 PUSH4 0x121B93F EQ PUSH2 0x8D JUMPI DUP1 PUSH4 0x13CF08B EQ PUSH2 0xA2 JUMPI DUP1 PUSH4 0x2E4176CF EQ PUSH2 0xCF JUMPI DUP1 PUSH4 0x5C19A95C EQ PUSH2 0xFA JUMPI JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0xA0 PUSH2 0x9B CALLDATASIZE PUSH1 0x4 PUSH2 0x69B JUMP JUMPDEST PUSH2 0x1AF JUMP JUMPDEST STOP JUMPDEST PUSH2 0xB5 PUSH2 0xB0 CALLDATASIZE PUSH1 0x4 PUSH2 0x69B JUMP JUMPDEST PUSH2 0x2A6 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD SWAP3 DUP4 MSTORE PUSH1 0x20 DUP4 ADD SWAP2 SWAP1 SWAP2 MSTORE ADD JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH1 0x0 SLOAD PUSH2 0xE2 SWAP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 SWAP2 AND DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0xC6 JUMP JUMPDEST PUSH2 0xA0 PUSH2 0x108 CALLDATASIZE PUSH1 0x4 PUSH2 0x6B4 JUMP JUMPDEST PUSH2 0x2D4 JUMP JUMPDEST PUSH2 0x115 PUSH2 0x4D3 JUMP JUMPDEST PUSH1 0x40 MLOAD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0xC6 JUMP JUMPDEST PUSH2 0xA0 PUSH2 0x131 CALLDATASIZE PUSH1 0x4 PUSH2 0x6B4 JUMP JUMPDEST PUSH2 0x550 JUMP JUMPDEST PUSH2 0x178 PUSH2 0x144 CALLDATASIZE PUSH1 0x4 PUSH2 0x6B4 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x20 DUP2 SWAP1 MSTORE PUSH1 0x0 SWAP2 DUP3 MSTORE PUSH1 0x40 SWAP1 SWAP2 KECCAK256 DUP1 SLOAD SWAP2 DUP2 ADD SLOAD PUSH1 0x2 SWAP1 SWAP2 ADD SLOAD PUSH1 0xFF DUP3 AND SWAP2 PUSH2 0x100 SWAP1 DIV PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SWAP1 DUP5 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0xC6 SWAP5 SWAP4 SWAP3 SWAP2 SWAP1 SWAP4 DUP5 MSTORE SWAP2 ISZERO ISZERO PUSH1 0x20 DUP5 ADD MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH1 0x40 DUP4 ADD MSTORE PUSH1 0x60 DUP3 ADD MSTORE PUSH1 0x80 ADD SWAP1 JUMP JUMPDEST PUSH2 0x115 PUSH2 0x668 JUMP JUMPDEST CALLER PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x1 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 DUP1 SLOAD PUSH2 0x208 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x14 PUSH1 0x24 DUP3 ADD MSTORE PUSH20 0x486173206E6F20726967687420746F20766F7465 PUSH1 0x60 SHL PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 ADD JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x1 DUP2 ADD SLOAD PUSH1 0xFF AND ISZERO PUSH2 0x24E JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0xE PUSH1 0x24 DUP3 ADD MSTORE PUSH14 0x20B63932B0B23C903B37BA32B217 PUSH1 0x91 SHL PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 ADD PUSH2 0x1FF JUMP JUMPDEST PUSH1 0x1 DUP2 DUP2 ADD DUP1 SLOAD PUSH1 0xFF NOT AND SWAP1 SWAP2 OR SWAP1 SSTORE PUSH1 0x2 DUP1 DUP3 ADD DUP4 SWAP1 SSTORE DUP2 SLOAD DUP2 SLOAD SWAP1 SWAP2 SWAP1 DUP5 SWAP1 DUP2 LT PUSH2 0x27D JUMPI PUSH2 0x27D PUSH2 0x6E4 JUMP JUMPDEST SWAP1 PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 KECCAK256 SWAP1 PUSH1 0x2 MUL ADD PUSH1 0x1 ADD PUSH1 0x0 DUP3 DUP3 SLOAD PUSH2 0x29D SWAP2 SWAP1 PUSH2 0x710 JUMP JUMPDEST SWAP1 SWAP2 SSTORE POP POP POP POP JUMP JUMPDEST PUSH1 0x2 DUP2 DUP2 SLOAD DUP2 LT PUSH2 0x2B6 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 SWAP2 DUP3 MSTORE PUSH1 0x20 SWAP1 SWAP2 KECCAK256 PUSH1 0x2 SWAP1 SWAP2 MUL ADD DUP1 SLOAD PUSH1 0x1 SWAP1 SWAP2 ADD SLOAD SWAP1 SWAP2 POP DUP3 JUMP JUMPDEST CALLER PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x1 PUSH1 0x20 DUP2 SWAP1 MSTORE PUSH1 0x40 SWAP1 SWAP2 KECCAK256 SWAP1 DUP2 ADD SLOAD PUSH1 0xFF AND ISZERO PUSH2 0x32F JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x12 PUSH1 0x24 DUP3 ADD MSTORE PUSH18 0x2CB7BA9030B63932B0B23C903B37BA32B217 PUSH1 0x71 SHL PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 ADD PUSH2 0x1FF JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP3 AND CALLER EQ ISZERO PUSH2 0x388 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x1E PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x53656C662D64656C65676174696F6E20697320646973616C6C6F7765642E0000 PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 ADD PUSH2 0x1FF JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP3 DUP2 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x1 PUSH1 0x20 DUP2 SWAP1 MSTORE PUSH1 0x40 SWAP1 SWAP2 KECCAK256 ADD SLOAD PUSH2 0x100 SWAP1 DIV AND ISZERO PUSH2 0x42D JUMPI PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP2 DUP3 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x1 PUSH1 0x20 DUP2 SWAP1 MSTORE PUSH1 0x40 SWAP1 SWAP2 KECCAK256 ADD SLOAD PUSH2 0x100 SWAP1 DIV SWAP1 SWAP2 AND SWAP1 CALLER DUP3 EQ ISZERO PUSH2 0x428 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x19 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x466F756E64206C6F6F7020696E2064656C65676174696F6E2E00000000000000 PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 ADD PUSH2 0x1FF JUMP JUMPDEST PUSH2 0x388 JUMP JUMPDEST PUSH1 0x1 DUP2 DUP2 ADD DUP1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA8 SHL SUB NOT AND PUSH2 0x100 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP7 AND SWAP1 DUP2 MUL SWAP2 SWAP1 SWAP2 OR DUP4 OR SWAP1 SWAP2 SSTORE PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x20 DUP3 SWAP1 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SWAP1 DUP2 ADD SLOAD PUSH1 0xFF AND ISZERO PUSH2 0x4B4 JUMPI DUP2 SLOAD PUSH1 0x2 DUP3 DUP2 ADD SLOAD DUP2 SLOAD DUP2 LT PUSH2 0x489 JUMPI PUSH2 0x489 PUSH2 0x6E4 JUMP JUMPDEST SWAP1 PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 KECCAK256 SWAP1 PUSH1 0x2 MUL ADD PUSH1 0x1 ADD PUSH1 0x0 DUP3 DUP3 SLOAD PUSH2 0x4A9 SWAP2 SWAP1 PUSH2 0x710 JUMP JUMPDEST SWAP1 SWAP2 SSTORE POP PUSH2 0x4CE SWAP1 POP JUMP JUMPDEST DUP2 SLOAD DUP2 SLOAD DUP3 SWAP1 PUSH1 0x0 SWAP1 PUSH2 0x4C8 SWAP1 DUP5 SWAP1 PUSH2 0x710 JUMP JUMPDEST SWAP1 SWAP2 SSTORE POP POP JUMPDEST POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 DUP1 JUMPDEST PUSH1 0x2 SLOAD DUP2 LT ISZERO PUSH2 0x54B JUMPI DUP2 PUSH1 0x2 DUP3 DUP2 SLOAD DUP2 LT PUSH2 0x4F6 JUMPI PUSH2 0x4F6 PUSH2 0x6E4 JUMP JUMPDEST SWAP1 PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 KECCAK256 SWAP1 PUSH1 0x2 MUL ADD PUSH1 0x1 ADD SLOAD GT ISZERO PUSH2 0x539 JUMPI PUSH1 0x2 DUP2 DUP2 SLOAD DUP2 LT PUSH2 0x521 JUMPI PUSH2 0x521 PUSH2 0x6E4 JUMP JUMPDEST SWAP1 PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 KECCAK256 SWAP1 PUSH1 0x2 MUL ADD PUSH1 0x1 ADD SLOAD SWAP2 POP DUP1 SWAP3 POP JUMPDEST DUP1 PUSH2 0x543 DUP2 PUSH2 0x728 JUMP JUMPDEST SWAP2 POP POP PUSH2 0x4D8 JUMP JUMPDEST POP POP SWAP1 JUMP JUMPDEST PUSH1 0x0 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND CALLER EQ PUSH2 0x5BB JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x28 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x4F6E6C79206368616972706572736F6E2063616E206769766520726967687420 PUSH1 0x44 DUP3 ADD MSTORE PUSH8 0x3A37903B37BA3297 PUSH1 0xC1 SHL PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 ADD PUSH2 0x1FF JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x1 PUSH1 0x20 DUP2 SWAP1 MSTORE PUSH1 0x40 SWAP1 SWAP2 KECCAK256 ADD SLOAD PUSH1 0xFF AND ISZERO PUSH2 0x628 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x18 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x54686520766F74657220616C726561647920766F7465642E0000000000000000 PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 ADD PUSH2 0x1FF JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x1 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD ISZERO PUSH2 0x64B JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x1 PUSH1 0x20 DUP2 SWAP1 MSTORE PUSH1 0x40 SWAP1 SWAP2 KECCAK256 SSTORE JUMP JUMPDEST PUSH1 0x0 PUSH1 0x2 PUSH2 0x674 PUSH2 0x4D3 JUMP JUMPDEST DUP2 SLOAD DUP2 LT PUSH2 0x684 JUMPI PUSH2 0x684 PUSH2 0x6E4 JUMP JUMPDEST SWAP1 PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 KECCAK256 SWAP1 PUSH1 0x2 MUL ADD PUSH1 0x0 ADD SLOAD SWAP1 POP SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x6AD JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x6C6 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND DUP2 EQ PUSH2 0x6DD JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH1 0x0 MSTORE PUSH1 0x32 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH1 0x0 MSTORE PUSH1 0x11 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST PUSH1 0x0 DUP3 NOT DUP3 GT ISZERO PUSH2 0x723 JUMPI PUSH2 0x723 PUSH2 0x6FA JUMP JUMPDEST POP ADD SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x0 NOT DUP3 EQ ISZERO PUSH2 0x73C JUMPI PUSH2 0x73C PUSH2 0x6FA JUMP JUMPDEST POP PUSH1 0x1 ADD SWAP1 JUMP INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 SHL DELEGATECALL PUSH3 0x3BCBB7 0x2C 0x28 0xC9 EQ 0x5D 0xCA 0xD BLOCKHASH SHR PUSH15 0xE5C5B8767788ACBB45788BCF43870A CODECOPY PUSH5 0x736F6C6343 STOP ADDMOD MULMOD STOP CALLER ",
"sourceMap": "157:4362:0:-:0;;;958:481;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;1012:11;:24;;-1:-1:-1;;;;;;1012:24:0;1026:10;1012:24;;;;;1046:19;;1012:24;1046:19;;;;;;;:30;1087:346;1108:13;:20;1104:1;:24;1087:346;;;1312:9;1327:94;;;;;;;;1360:13;1374:1;1360:16;;;;;;;;:::i;:::-;;;;;;;;;;;;1327:94;;1405:1;1327:94;;;;;;1312:110;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1130:3;;;;:::i;:::-;;;;1087:346;;;;958:481;157:4362;;14:127:1;75:10;70:3;66:20;63:1;56:31;106:4;103:1;96:15;130:4;127:1;120:15;146:1105;241:6;272:2;315;303:9;294:7;290:23;286:32;283:52;;;331:1;328;321:12;283:52;358:16;;-1:-1:-1;;;;;423:14:1;;;420:34;;;450:1;447;440:12;420:34;488:6;477:9;473:22;463:32;;533:7;526:4;522:2;518:13;514:27;504:55;;555:1;552;545:12;504:55;584:2;578:9;606:2;602;599:10;596:36;;;612:18;;:::i;:::-;658:2;655:1;651:10;690:2;684:9;753:2;749:7;744:2;740;736:11;732:25;724:6;720:38;808:6;796:10;793:22;788:2;776:10;773:18;770:46;767:72;;;819:18;;:::i;:::-;855:2;848:22;905:18;;;939:15;;;;-1:-1:-1;981:11:1;;;977:20;;;1009:19;;;1006:39;;;1041:1;1038;1031:12;1006:39;1065:11;;;;1085:135;1101:6;1096:3;1093:15;1085:135;;;1167:10;;1155:23;;1118:12;;;;1198;;;;1085:135;;;1239:6;146:1105;-1:-1:-1;;;;;;;;146:1105:1:o;1256:127::-;1317:10;1312:3;1308:20;1305:1;1298:31;1348:4;1345:1;1338:15;1372:4;1369:1;1362:15;1388:232;1427:3;-1:-1:-1;;1448:17:1;;1445:140;;;1507:10;1502:3;1498:20;1495:1;1488:31;1542:4;1539:1;1532:15;1570:4;1567:1;1560:15;1445:140;-1:-1:-1;1612:1:1;1601:13;;1388:232::o;:::-;157:4362:0;;;;;;"
},
"deployedBytecode": {
"functionDebugData": {
"@chairperson_18": {
"entryPoint": null,
"id": 18,
"parameterSlots": 0,
"returnSlots": 0
},
"@delegate_207": {
"entryPoint": 724,
"id": 207,
"parameterSlots": 1,
"returnSlots": 0
},
"@giveRightToVote_111": {
"entryPoint": 1360,
"id": 111,
"parameterSlots": 1,
"returnSlots": 0
},
"@proposals_27": {
"entryPoint": 678,
"id": 27,
"parameterSlots": 0,
"returnSlots": 0
},
"@vote_257": {
"entryPoint": 431,
"id": 257,
"parameterSlots": 1,
"returnSlots": 0
},
"@voters_23": {
"entryPoint": null,
"id": 23,
"parameterSlots": 0,
"returnSlots": 0
},
"@winnerName_315": {
"entryPoint": 1640,
"id": 315,
"parameterSlots": 0,
"returnSlots": 1
},
"@winningProposal_300": {
"entryPoint": 1235,
"id": 300,
"parameterSlots": 0,
"returnSlots": 1
},
"abi_decode_tuple_t_address": {
"entryPoint": 1716,
"id": null,
"parameterSlots": 2,
"returnSlots": 1
},
"abi_decode_tuple_t_uint256": {
"entryPoint": 1691,
"id": null,
"parameterSlots": 2,
"returnSlots": 1
},
"abi_encode_tuple_t_address__to_t_address__fromStack_reversed": {
"entryPoint": null,
"id": null,
"parameterSlots": 2,
"returnSlots": 1
},
"abi_encode_tuple_t_bytes32__to_t_bytes32__fromStack_reversed": {
"entryPoint": null,
"id": null,
"parameterSlots": 2,
"returnSlots": 1
},
"abi_encode_tuple_t_bytes32_t_uint256__to_t_bytes32_t_uint256__fromStack_reversed": {
"entryPoint": null,
"id": null,
"parameterSlots": 3,
"returnSlots": 1
},
"abi_encode_tuple_t_stringliteral_0dc527e8fa9b76c996eb5eda9ddb749b21540f5509781b94e1e37f7027e7f50e__to_t_string_memory_ptr__fromStack_reversed": {
"entryPoint": null,
"id": null,
"parameterSlots": 1,
"returnSlots": 1
},
"abi_encode_tuple_t_stringliteral_56aab92b7164a4ea72a098d2d95a5e763b71d07f265e8d46fc7240404017fa84__to_t_string_memory_ptr__fromStack_reversed": {
"entryPoint": null,
"id": null,
"parameterSlots": 1,
"returnSlots": 1
},
"abi_encode_tuple_t_stringliteral_657c6119c4ed567c60278fba62242b17c2fedf38962e651040dabfb3c9e15a5f__to_t_string_memory_ptr__fromStack_reversed": {
"entryPoint": null,
"id": null,
"parameterSlots": 1,
"returnSlots": 1
},
"abi_encode_tuple_t_stringliteral_80126ce3251ab2b6e4ade14fe5b2bc11f593510cbe9e3550c09bff1989e33b95__to_t_string_memory_ptr__fromStack_reversed": {
"entryPoint": null,
"id": null,
"parameterSlots": 1,
"returnSlots": 1
},
"abi_encode_tuple_t_stringliteral_8bd75322489f7ff7ab0b18506f4dcde935a32eca2a506b00f4d21b0becfa093c__to_t_string_memory_ptr__fromStack_reversed": {
"entryPoint": null,
"id": null,
"parameterSlots": 1,
"returnSlots": 1
},
"abi_encode_tuple_t_stringliteral_d39b1db28626750c546703ffb72f30ea3facdfed1bebd47408e22ef18a76ba2d__to_t_string_memory_ptr__fromStack_reversed": {
"entryPoint": null,
"id": null,
"parameterSlots": 1,
"returnSlots": 1
},
"abi_encode_tuple_t_stringliteral_f37bf1aca80f8fa291a40f639db6aeaa1425ceb0e8c61c8648f0e2efa282a947__to_t_string_memory_ptr__fromStack_reversed": {
"entryPoint": null,
"id": null,
"parameterSlots": 1,
"returnSlots": 1
},
"abi_encode_tuple_t_uint256__to_t_uint256__fromStack_reversed": {
"entryPoint": null,
"id": null,
"parameterSlots": 2,
"returnSlots": 1
},
"abi_encode_tuple_t_uint256_t_bool_t_address_t_uint256__to_t_uint256_t_bool_t_address_t_uint256__fromStack_reversed": {
"entryPoint": null,
"id": null,
"parameterSlots": 5,
"returnSlots": 1
},
"checked_add_t_uint256": {
"entryPoint": 1808,
"id": null,
"parameterSlots": 2,
"returnSlots": 1
},
"increment_t_uint256": {
"entryPoint": 1832,
"id": null,
"parameterSlots": 1,
"returnSlots": 1
},
"panic_error_0x11": {
"entryPoint": 1786,
"id": null,
"parameterSlots": 0,
"returnSlots": 0
},
"panic_error_0x32": {
"entryPoint": 1764,
"id": null,
"parameterSlots": 0,
"returnSlots": 0
}
},
"generatedSources": [
{
"ast": {
"nodeType": "YulBlock",
"src": "0:4795:1",
"statements": [
{
"nodeType": "YulBlock",
"src": "6:3:1",
"statements": []
},
{
"body": {
"nodeType": "YulBlock",
"src": "84:110:1",
"statements": [
{
"body": {
"nodeType": "YulBlock",
"src": "130:16:1",
"statements": [
{
"expression": {
"arguments": [
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "139:1:1",
"type": "",
"value": "0"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "142:1:1",
"type": "",
"value": "0"
}
],
"functionName": {
"name": "revert",
"nodeType": "YulIdentifier",
"src": "132:6:1"
},
"nodeType": "YulFunctionCall",
"src": "132:12:1"
},
"nodeType": "YulExpressionStatement",
"src": "132:12:1"
}
]
},
"condition": {
"arguments": [
{
"arguments": [
{
"name": "dataEnd",
"nodeType": "YulIdentifier",
"src": "105:7:1"
},
{
"name": "headStart",
"nodeType": "YulIdentifier",
"src": "114:9:1"
}
],
"functionName": {
"name": "sub",
"nodeType": "YulIdentifier",
"src": "101:3:1"
},
"nodeType": "YulFunctionCall",
"src": "101:23:1"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "126:2:1",
"type": "",
"value": "32"
}
],
"functionName": {
"name": "slt",
"nodeType": "YulIdentifier",
"src": "97:3:1"
},
"nodeType": "YulFunctionCall",
"src": "97:32:1"
},
"nodeType": "YulIf",
"src": "94:52:1"
},
{
"nodeType": "YulAssignment",
"src": "155:33:1",
"value": {
"arguments": [
{
"name": "headStart",
"nodeType": "YulIdentifier",
"src": "178:9:1"
}
],
"functionName": {
"name": "calldataload",
"nodeType": "YulIdentifier",
"src": "165:12:1"
},
"nodeType": "YulFunctionCall",
"src": "165:23:1"
},
"variableNames": [
{
"name": "value0",
"nodeType": "YulIdentifier",
"src": "155:6:1"
}
]
}
]
},
"name": "abi_decode_tuple_t_uint256",
"nodeType": "YulFunctionDefinition",
"parameters": [
{
"name": "headStart",
"nodeType": "YulTypedName",
"src": "50:9:1",
"type": ""
},
{
"name": "dataEnd",
"nodeType": "YulTypedName",
"src": "61:7:1",
"type": ""
}
],
"returnVariables": [
{
"name": "value0",
"nodeType": "YulTypedName",
"src": "73:6:1",
"type": ""
}
],
"src": "14:180:1"
},
{
"body": {
"nodeType": "YulBlock",
"src": "328:119:1",
"statements": [
{
"nodeType": "YulAssignment",
"src": "338:26:1",
"value": {
"arguments": [
{
"name": "headStart",
"nodeType": "YulIdentifier",
"src": "350:9:1"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "361:2:1",
"type": "",
"value": "64"
}
],
"functionName": {
"name": "add",
"nodeType": "YulIdentifier",
"src": "346:3:1"
},
"nodeType": "YulFunctionCall",
"src": "346:18:1"
},
"variableNames": [
{
"name": "tail",
"nodeType": "YulIdentifier",
"src": "338:4:1"
}
]
},
{
"expression": {
"arguments": [
{
"name": "headStart",
"nodeType": "YulIdentifier",
"src": "380:9:1"
},
{
"name": "value0",
"nodeType": "YulIdentifier",
"src": "391:6:1"
}
],
"functionName": {
"name": "mstore",
"nodeType": "YulIdentifier",
"src": "373:6:1"
},
"nodeType": "YulFunctionCall",
"src": "373:25:1"
},
"nodeType": "YulExpressionStatement",
"src": "373:25:1"
},
{
"expression": {
"arguments": [
{
"arguments": [
{
"name": "headStart",
"nodeType": "YulIdentifier",
"src": "418:9:1"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "429:2:1",
"type": "",
"value": "32"
}
],
"functionName": {
"name": "add",
"nodeType": "YulIdentifier",
"src": "414:3:1"
},
"nodeType": "YulFunctionCall",
"src": "414:18:1"
},
{
"name": "value1",
"nodeType": "YulIdentifier",
"src": "434:6:1"
}
],
"functionName": {
"name": "mstore",
"nodeType": "YulIdentifier",
"src": "407:6:1"
},
"nodeType": "YulFunctionCall",
"src": "407:34:1"
},
"nodeType": "YulExpressionStatement",
"src": "407:34:1"
}
]
},
"name": "abi_encode_tuple_t_bytes32_t_uint256__to_t_bytes32_t_uint256__fromStack_reversed",
"nodeType": "YulFunctionDefinition",
"parameters": [
{
"name": "headStart",
"nodeType": "YulTypedName",
"src": "289:9:1",
"type": ""
},
{
"name": "value1",
"nodeType": "YulTypedName",
"src": "300:6:1",
"type": ""
},
{
"name": "value0",
"nodeType": "YulTypedName",
"src": "308:6:1",
"type": ""
}
],
"returnVariables": [
{
"name": "tail",
"nodeType": "YulTypedName",
"src": "319:4:1",
"type": ""
}
],
"src": "199:248:1"
},
{
"body": {
"nodeType": "YulBlock",
"src": "553:102:1",
"statements": [
{
"nodeType": "YulAssignment",
"src": "563:26:1",
"value": {
"arguments": [
{
"name": "headStart",
"nodeType": "YulIdentifier",
"src": "575:9:1"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "586:2:1",
"type": "",
"value": "32"
}
],
"functionName": {
"name": "add",
"nodeType": "YulIdentifier",
"src": "571:3:1"
},
"nodeType": "YulFunctionCall",
"src": "571:18:1"
},
"variableNames": [
{
"name": "tail",
"nodeType": "YulIdentifier",
"src": "563:4:1"
}
]
},
{
"expression": {
"arguments": [
{
"name": "headStart",
"nodeType": "YulIdentifier",
"src": "605:9:1"
},
{
"arguments": [
{
"name": "value0",
"nodeType": "YulIdentifier",
"src": "620:6:1"
},
{
"arguments": [
{
"arguments": [
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "636:3:1",
"type": "",
"value": "160"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "641:1:1",
"type": "",
"value": "1"
}
],
"functionName": {
"name": "shl",
"nodeType": "YulIdentifier",
"src": "632:3:1"
},
"nodeType": "YulFunctionCall",
"src": "632:11:1"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "645:1:1",
"type": "",
"value": "1"
}
],
"functionName": {
"name": "sub",
"nodeType": "YulIdentifier",
"src": "628:3:1"
},
"nodeType": "YulFunctionCall",
"src": "628:19:1"
}
],
"functionName": {
"name": "and",
"nodeType": "YulIdentifier",
"src": "616:3:1"
},
"nodeType": "YulFunctionCall",
"src": "616:32:1"
}
],
"functionName": {
"name": "mstore",
"nodeType": "YulIdentifier",
"src": "598:6:1"
},
"nodeType": "YulFunctionCall",
"src": "598:51:1"
},
"nodeType": "YulExpressionStatement",
"src": "598:51:1"
}
]
},
"name": "abi_encode_tuple_t_address__to_t_address__fromStack_reversed",
"nodeType": "YulFunctionDefinition",
"parameters": [
{
"name": "headStart",
"nodeType": "YulTypedName",
"src": "522:9:1",
"type": ""
},
{
"name": "value0",
"nodeType": "YulTypedName",
"src": "533:6:1",
"type": ""
}
],
"returnVariables": [
{
"name": "tail",
"nodeType": "YulTypedName",
"src": "544:4:1",
"type": ""
}
],
"src": "452:203:1"
},
{
"body": {
"nodeType": "YulBlock",
"src": "730:216:1",
"statements": [
{
"body": {
"nodeType": "YulBlock",
"src": "776:16:1",
"statements": [
{
"expression": {
"arguments": [
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "785:1:1",
"type": "",
"value": "0"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "788:1:1",
"type": "",
"value": "0"
}
],
"functionName": {
"name": "revert",
"nodeType": "YulIdentifier",
"src": "778:6:1"
},
"nodeType": "YulFunctionCall",
"src": "778:12:1"
},
"nodeType": "YulExpressionStatement",
"src": "778:12:1"
}
]
},
"condition": {
"arguments": [
{
"arguments": [
{
"name": "dataEnd",
"nodeType": "YulIdentifier",
"src": "751:7:1"
},
{
"name": "headStart",
"nodeType": "YulIdentifier",
"src": "760:9:1"
}
],
"functionName": {
"name": "sub",
"nodeType": "YulIdentifier",
"src": "747:3:1"
},
"nodeType": "YulFunctionCall",
"src": "747:23:1"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "772:2:1",
"type": "",
"value": "32"
}
],
"functionName": {
"name": "slt",
"nodeType": "YulIdentifier",
"src": "743:3:1"
},
"nodeType": "YulFunctionCall",
"src": "743:32:1"
},
"nodeType": "YulIf",
"src": "740:52:1"
},
{
"nodeType": "YulVariableDeclaration",
"src": "801:36:1",
"value": {
"arguments": [
{
"name": "headStart",
"nodeType": "YulIdentifier",
"src": "827:9:1"
}
],
"functionName": {
"name": "calldataload",
"nodeType": "YulIdentifier",
"src": "814:12:1"
},
"nodeType": "YulFunctionCall",
"src": "814:23:1"
},
"variables": [
{
"name": "value",
"nodeType": "YulTypedName",
"src": "805:5:1",
"type": ""
}
]
},
{
"body": {
"nodeType": "YulBlock",
"src": "900:16:1",
"statements": [
{
"expression": {
"arguments": [
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "909:1:1",
"type": "",
"value": "0"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "912:1:1",
"type": "",
"value": "0"
}
],
"functionName": {
"name": "revert",
"nodeType": "YulIdentifier",
"src": "902:6:1"
},
"nodeType": "YulFunctionCall",
"src": "902:12:1"
},
"nodeType": "YulExpressionStatement",
"src": "902:12:1"
}
]
},
"condition": {
"arguments": [
{
"arguments": [
{
"name": "value",
"nodeType": "YulIdentifier",
"src": "859:5:1"
},
{
"arguments": [
{
"name": "value",
"nodeType": "YulIdentifier",
"src": "870:5:1"
},
{
"arguments": [
{
"arguments": [
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "885:3:1",
"type": "",
"value": "160"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "890:1:1",
"type": "",
"value": "1"
}
],
"functionName": {
"name": "shl",
"nodeType": "YulIdentifier",
"src": "881:3:1"
},
"nodeType": "YulFunctionCall",
"src": "881:11:1"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "894:1:1",
"type": "",
"value": "1"
}
],
"functionName": {
"name": "sub",
"nodeType": "YulIdentifier",
"src": "877:3:1"
},
"nodeType": "YulFunctionCall",
"src": "877:19:1"
}
],
"functionName": {
"name": "and",
"nodeType": "YulIdentifier",
"src": "866:3:1"
},
"nodeType": "YulFunctionCall",
"src": "866:31:1"
}
],
"functionName": {
"name": "eq",
"nodeType": "YulIdentifier",
"src": "856:2:1"
},
"nodeType": "YulFunctionCall",
"src": "856:42:1"
}
],
"functionName": {
"name": "iszero",
"nodeType": "YulIdentifier",
"src": "849:6:1"
},
"nodeType": "YulFunctionCall",
"src": "849:50:1"
},
"nodeType": "YulIf",
"src": "846:70:1"
},
{
"nodeType": "YulAssignment",
"src": "925:15:1",
"value": {
"name": "value",
"nodeType": "YulIdentifier",
"src": "935:5:1"
},
"variableNames": [
{
"name": "value0",
"nodeType": "YulIdentifier",
"src": "925:6:1"
}
]
}
]
},
"name": "abi_decode_tuple_t_address",
"nodeType": "YulFunctionDefinition",
"parameters": [
{
"name": "headStart",
"nodeType": "YulTypedName",
"src": "696:9:1",
"type": ""
},
{
"name": "dataEnd",
"nodeType": "YulTypedName",
"src": "707:7:1",
"type": ""
}
],
"returnVariables": [
{
"name": "value0",
"nodeType": "YulTypedName",
"src": "719:6:1",
"type": ""
}
],
"src": "660:286:1"
},
{
"body": {
"nodeType": "YulBlock",
"src": "1052:76:1",
"statements": [
{
"nodeType": "YulAssignment",
"src": "1062:26:1",
"value": {
"arguments": [
{
"name": "headStart",
"nodeType": "YulIdentifier",
"src": "1074:9:1"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "1085:2:1",
"type": "",
"value": "32"
}
],
"functionName": {
"name": "add",
"nodeType": "YulIdentifier",
"src": "1070:3:1"
},
"nodeType": "YulFunctionCall",
"src": "1070:18:1"
},
"variableNames": [
{
"name": "tail",
"nodeType": "YulIdentifier",
"src": "1062:4:1"
}
]
},
{
"expression": {
"arguments": [
{
"name": "headStart",
"nodeType": "YulIdentifier",
"src": "1104:9:1"
},
{
"name": "value0",
"nodeType": "YulIdentifier",
"src": "1115:6:1"
}
],
"functionName": {
"name": "mstore",
"nodeType": "YulIdentifier",
"src": "1097:6:1"
},
"nodeType": "YulFunctionCall",
"src": "1097:25:1"
},
"nodeType": "YulExpressionStatement",
"src": "1097:25:1"
}
]
},
"name": "abi_encode_tuple_t_uint256__to_t_uint256__fromStack_reversed",
"nodeType": "YulFunctionDefinition",
"parameters": [
{
"name": "headStart",
"nodeType": "YulTypedName",
"src": "1021:9:1",
"type": ""
},
{
"name": "value0",
"nodeType": "YulTypedName",
"src": "1032:6:1",
"type": ""
}
],
"returnVariables": [
{
"name": "tail",
"nodeType": "YulTypedName",
"src": "1043:4:1",
"type": ""
}
],
"src": "951:177:1"
},
{
"body": {
"nodeType": "YulBlock",
"src": "1312:248:1",
"statements": [
{
"nodeType": "YulAssignment",
"src": "1322:27:1",
"value": {
"arguments": [
{
"name": "headStart",
"nodeType": "YulIdentifier",
"src": "1334:9:1"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "1345:3:1",
"type": "",
"value": "128"
}
],
"functionName": {
"name": "add",
"nodeType": "YulIdentifier",
"src": "1330:3:1"
},
"nodeType": "YulFunctionCall",
"src": "1330:19:1"
},
"variableNames": [
{
"name": "tail",
"nodeType": "YulIdentifier",
"src": "1322:4:1"
}
]
},
{
"expression": {
"arguments": [
{
"name": "headStart",
"nodeType": "YulIdentifier",
"src": "1365:9:1"
},
{
"name": "value0",
"nodeType": "YulIdentifier",
"src": "1376:6:1"
}
],
"functionName": {
"name": "mstore",
"nodeType": "YulIdentifier",
"src": "1358:6:1"
},
"nodeType": "YulFunctionCall",
"src": "1358:25:1"
},
"nodeType": "YulExpressionStatement",
"src": "1358:25:1"
},
{
"expression": {
"arguments": [
{
"arguments": [
{
"name": "headStart",
"nodeType": "YulIdentifier",
"src": "1403:9:1"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "1414:2:1",
"type": "",
"value": "32"
}
],
"functionName": {
"name": "add",
"nodeType": "YulIdentifier",
"src": "1399:3:1"
},
"nodeType": "YulFunctionCall",
"src": "1399:18:1"
},
{
"arguments": [
{
"arguments": [
{
"name": "value1",
"nodeType": "YulIdentifier",
"src": "1433:6:1"
}
],
"functionName": {
"name": "iszero",
"nodeType": "YulIdentifier",
"src": "1426:6:1"
},
"nodeType": "YulFunctionCall",
"src": "1426:14:1"
}
],
"functionName": {
"name": "iszero",
"nodeType": "YulIdentifier",
"src": "1419:6:1"
},
"nodeType": "YulFunctionCall",
"src": "1419:22:1"
}
],
"functionName": {
"name": "mstore",
"nodeType": "YulIdentifier",
"src": "1392:6:1"
},
"nodeType": "YulFunctionCall",
"src": "1392:50:1"
},
"nodeType": "YulExpressionStatement",
"src": "1392:50:1"
},
{
"expression": {
"arguments": [
{
"arguments": [
{
"name": "headStart",
"nodeType": "YulIdentifier",
"src": "1462:9:1"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "1473:2:1",
"type": "",
"value": "64"
}
],
"functionName": {
"name": "add",
"nodeType": "YulIdentifier",
"src": "1458:3:1"
},
"nodeType": "YulFunctionCall",
"src": "1458:18:1"
},
{
"arguments": [
{
"name": "value2",
"nodeType": "YulIdentifier",
"src": "1482:6:1"
},
{
"arguments": [
{
"arguments": [
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "1498:3:1",
"type": "",
"value": "160"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "1503:1:1",
"type": "",
"value": "1"
}
],
"functionName": {
"name": "shl",
"nodeType": "YulIdentifier",
"src": "1494:3:1"
},
"nodeType": "YulFunctionCall",
"src": "1494:11:1"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "1507:1:1",
"type": "",
"value": "1"
}
],
"functionName": {
"name": "sub",
"nodeType": "YulIdentifier",
"src": "1490:3:1"
},
"nodeType": "YulFunctionCall",
"src": "1490:19:1"
}
],
"functionName": {
"name": "and",
"nodeType": "YulIdentifier",
"src": "1478:3:1"
},
"nodeType": "YulFunctionCall",
"src": "1478:32:1"
}
],
"functionName": {
"name": "mstore",
"nodeType": "YulIdentifier",
"src": "1451:6:1"
},
"nodeType": "YulFunctionCall",
"src": "1451:60:1"
},
"nodeType": "YulExpressionStatement",
"src": "1451:60:1"
},
{
"expression": {
"arguments": [
{
"arguments": [
{
"name": "headStart",
"nodeType": "YulIdentifier",
"src": "1531:9:1"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "1542:2:1",
"type": "",
"value": "96"
}
],
"functionName": {
"name": "add",
"nodeType": "YulIdentifier",
"src": "1527:3:1"
},
"nodeType": "YulFunctionCall",
"src": "1527:18:1"
},
{
"name": "value3",
"nodeType": "YulIdentifier",
"src": "1547:6:1"
}
],
"functionName": {
"name": "mstore",
"nodeType": "YulIdentifier",
"src": "1520:6:1"
},
"nodeType": "YulFunctionCall",
"src": "1520:34:1"
},
"nodeType": "YulExpressionStatement",
"src": "1520:34:1"
}
]
},
"name": "abi_encode_tuple_t_uint256_t_bool_t_address_t_uint256__to_t_uint256_t_bool_t_address_t_uint256__fromStack_reversed",
"nodeType": "YulFunctionDefinition",
"parameters": [
{
"name": "headStart",
"nodeType": "YulTypedName",
"src": "1257:9:1",
"type": ""
},
{
"name": "value3",
"nodeType": "YulTypedName",
"src": "1268:6:1",
"type": ""
},
{
"name": "value2",
"nodeType": "YulTypedName",
"src": "1276:6:1",
"type": ""
},
{
"name": "value1",
"nodeType": "YulTypedName",
"src": "1284:6:1",
"type": ""
},
{
"name": "value0",
"nodeType": "YulTypedName",
"src": "1292:6:1",
"type": ""
}
],
"returnVariables": [
{
"name": "tail",
"nodeType": "YulTypedName",
"src": "1303:4:1",
"type": ""
}
],
"src": "1133:427:1"
},
{
"body": {
"nodeType": "YulBlock",
"src": "1666:76:1",
"statements": [
{
"nodeType": "YulAssignment",
"src": "1676:26:1",
"value": {
"arguments": [
{
"name": "headStart",
"nodeType": "YulIdentifier",
"src": "1688:9:1"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "1699:2:1",
"type": "",
"value": "32"
}
],
"functionName": {
"name": "add",
"nodeType": "YulIdentifier",
"src": "1684:3:1"
},
"nodeType": "YulFunctionCall",
"src": "1684:18:1"
},
"variableNames": [
{
"name": "tail",
"nodeType": "YulIdentifier",
"src": "1676:4:1"
}
]
},
{
"expression": {
"arguments": [
{
"name": "headStart",
"nodeType": "YulIdentifier",
"src": "1718:9:1"
},
{
"name": "value0",
"nodeType": "YulIdentifier",
"src": "1729:6:1"
}
],
"functionName": {
"name": "mstore",
"nodeType": "YulIdentifier",
"src": "1711:6:1"
},
"nodeType": "YulFunctionCall",
"src": "1711:25:1"
},
"nodeType": "YulExpressionStatement",
"src": "1711:25:1"
}
]
},
"name": "abi_encode_tuple_t_bytes32__to_t_bytes32__fromStack_reversed",
"nodeType": "YulFunctionDefinition",
"parameters": [
{
"name": "headStart",
"nodeType": "YulTypedName",
"src": "1635:9:1",
"type": ""
},
{
"name": "value0",
"nodeType": "YulTypedName",
"src": "1646:6:1",
"type": ""
}
],
"returnVariables": [
{
"name": "tail",
"nodeType": "YulTypedName",
"src": "1657:4:1",
"type": ""
}
],
"src": "1565:177:1"
},
{
"body": {
"nodeType": "YulBlock",
"src": "1921:170:1",
"statements": [
{
"expression": {
"arguments": [
{
"name": "headStart",
"nodeType": "YulIdentifier",
"src": "1938:9:1"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "1949:2:1",
"type": "",
"value": "32"
}
],
"functionName": {
"name": "mstore",
"nodeType": "YulIdentifier",
"src": "1931:6:1"
},
"nodeType": "YulFunctionCall",
"src": "1931:21:1"
},
"nodeType": "YulExpressionStatement",
"src": "1931:21:1"
},
{
"expression": {
"arguments": [
{
"arguments": [
{
"name": "headStart",
"nodeType": "YulIdentifier",
"src": "1972:9:1"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "1983:2:1",
"type": "",
"value": "32"
}
],
"functionName": {
"name": "add",
"nodeType": "YulIdentifier",
"src": "1968:3:1"
},
"nodeType": "YulFunctionCall",
"src": "1968:18:1"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "1988:2:1",
"type": "",
"value": "20"
}
],
"functionName": {
"name": "mstore",
"nodeType": "YulIdentifier",
"src": "1961:6:1"
},
"nodeType": "YulFunctionCall",
"src": "1961:30:1"
},
"nodeType": "YulExpressionStatement",
"src": "1961:30:1"
},
{
"expression": {
"arguments": [
{
"arguments": [
{
"name": "headStart",
"nodeType": "YulIdentifier",
"src": "2011:9:1"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "2022:2:1",
"type": "",
"value": "64"
}
],
"functionName": {
"name": "add",
"nodeType": "YulIdentifier",
"src": "2007:3:1"
},
"nodeType": "YulFunctionCall",
"src": "2007:18:1"
},
{
"hexValue": "486173206e6f20726967687420746f20766f7465",
"kind": "string",
"nodeType": "YulLiteral",
"src": "2027:22:1",
"type": "",
"value": "Has no right to vote"
}
],
"functionName": {
"name": "mstore",
"nodeType": "YulIdentifier",
"src": "2000:6:1"
},
"nodeType": "YulFunctionCall",
"src": "2000:50:1"
},
"nodeType": "YulExpressionStatement",
"src": "2000:50:1"
},
{
"nodeType": "YulAssignment",
"src": "2059:26:1",
"value": {
"arguments": [
{
"name": "headStart",
"nodeType": "YulIdentifier",
"src": "2071:9:1"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "2082:2:1",
"type": "",
"value": "96"
}
],
"functionName": {
"name": "add",
"nodeType": "YulIdentifier",
"src": "2067:3:1"
},
"nodeType": "YulFunctionCall",
"src": "2067:18:1"
},
"variableNames": [
{
"name": "tail",
"nodeType": "YulIdentifier",
"src": "2059:4:1"
}
]
}
]
},
"name": "abi_encode_tuple_t_stringliteral_0dc527e8fa9b76c996eb5eda9ddb749b21540f5509781b94e1e37f7027e7f50e__to_t_string_memory_ptr__fromStack_reversed",
"nodeType": "YulFunctionDefinition",
"parameters": [
{
"name": "headStart",
"nodeType": "YulTypedName",
"src": "1898:9:1",
"type": ""
}
],
"returnVariables": [
{
"name": "tail",
"nodeType": "YulTypedName",
"src": "1912:4:1",
"type": ""
}
],
"src": "1747:344:1"
},
{
"body": {
"nodeType": "YulBlock",
"src": "2270:164:1",
"statements": [
{
"expression": {
"arguments": [
{
"name": "headStart",
"nodeType": "YulIdentifier",
"src": "2287:9:1"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "2298:2:1",
"type": "",
"value": "32"
}
],
"functionName": {
"name": "mstore",
"nodeType": "YulIdentifier",
"src": "2280:6:1"
},
"nodeType": "YulFunctionCall",
"src": "2280:21:1"
},
"nodeType": "YulExpressionStatement",
"src": "2280:21:1"
},
{
"expression": {
"arguments": [
{
"arguments": [
{
"name": "headStart",
"nodeType": "YulIdentifier",
"src": "2321:9:1"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "2332:2:1",
"type": "",
"value": "32"
}
],
"functionName": {
"name": "add",
"nodeType": "YulIdentifier",
"src": "2317:3:1"
},
"nodeType": "YulFunctionCall",
"src": "2317:18:1"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "2337:2:1",
"type": "",
"value": "14"
}
],
"functionName": {
"name": "mstore",
"nodeType": "YulIdentifier",
"src": "2310:6:1"
},
"nodeType": "YulFunctionCall",
"src": "2310:30:1"
},
"nodeType": "YulExpressionStatement",
"src": "2310:30:1"
},
{
"expression": {
"arguments": [
{
"arguments": [
{
"name": "headStart",
"nodeType": "YulIdentifier",
"src": "2360:9:1"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "2371:2:1",
"type": "",
"value": "64"
}
],
"functionName": {
"name": "add",
"nodeType": "YulIdentifier",
"src": "2356:3:1"
},
"nodeType": "YulFunctionCall",
"src": "2356:18:1"
},
{
"hexValue": "416c726561647920766f7465642e",
"kind": "string",
"nodeType": "YulLiteral",
"src": "2376:16:1",
"type": "",
"value": "Already voted."
}
],
"functionName": {
"name": "mstore",
"nodeType": "YulIdentifier",
"src": "2349:6:1"
},
"nodeType": "YulFunctionCall",
"src": "2349:44:1"
},
"nodeType": "YulExpressionStatement",
"src": "2349:44:1"
},
{
"nodeType": "YulAssignment",
"src": "2402:26:1",
"value": {
"arguments": [
{
"name": "headStart",
"nodeType": "YulIdentifier",
"src": "2414:9:1"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "2425:2:1",
"type": "",
"value": "96"
}
],
"functionName": {
"name": "add",
"nodeType": "YulIdentifier",
"src": "2410:3:1"
},
"nodeType": "YulFunctionCall",
"src": "2410:18:1"
},
"variableNames": [
{
"name": "tail",
"nodeType": "YulIdentifier",
"src": "2402:4:1"
}
]
}
]
},
"name": "abi_encode_tuple_t_stringliteral_56aab92b7164a4ea72a098d2d95a5e763b71d07f265e8d46fc7240404017fa84__to_t_string_memory_ptr__fromStack_reversed",
"nodeType": "YulFunctionDefinition",
"parameters": [
{
"name": "headStart",
"nodeType": "YulTypedName",
"src": "2247:9:1",
"type": ""
}
],
"returnVariables": [
{
"name": "tail",
"nodeType": "YulTypedName",
"src": "2261:4:1",
"type": ""
}
],
"src": "2096:338:1"
},
{
"body": {
"nodeType": "YulBlock",
"src": "2471:95:1",
"statements": [
{
"expression": {
"arguments": [
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "2488:1:1",
"type": "",
"value": "0"
},
{
"arguments": [
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "2495:3:1",
"type": "",
"value": "224"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "2500:10:1",
"type": "",
"value": "0x4e487b71"
}
],
"functionName": {
"name": "shl",
"nodeType": "YulIdentifier",
"src": "2491:3:1"
},
"nodeType": "YulFunctionCall",
"src": "2491:20:1"
}
],
"functionName": {
"name": "mstore",
"nodeType": "YulIdentifier",
"src": "2481:6:1"
},
"nodeType": "YulFunctionCall",
"src": "2481:31:1"
},
"nodeType": "YulExpressionStatement",
"src": "2481:31:1"
},
{
"expression": {
"arguments": [
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "2528:1:1",
"type": "",
"value": "4"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "2531:4:1",
"type": "",
"value": "0x32"
}
],
"functionName": {
"name": "mstore",
"nodeType": "YulIdentifier",
"src": "2521:6:1"
},
"nodeType": "YulFunctionCall",
"src": "2521:15:1"
},
"nodeType": "YulExpressionStatement",
"src": "2521:15:1"
},
{
"expression": {
"arguments": [
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "2552:1:1",
"type": "",
"value": "0"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "2555:4:1",
"type": "",
"value": "0x24"
}
],
"functionName": {
"name": "revert",
"nodeType": "YulIdentifier",
"src": "2545:6:1"
},
"nodeType": "YulFunctionCall",
"src": "2545:15:1"
},
"nodeType": "YulExpressionStatement",
"src": "2545:15:1"
}
]
},
"name": "panic_error_0x32",
"nodeType": "YulFunctionDefinition",
"src": "2439:127:1"
},
{
"body": {
"nodeType": "YulBlock",
"src": "2603:95:1",
"statements": [
{
"expression": {
"arguments": [
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "2620:1:1",
"type": "",
"value": "0"
},
{
"arguments": [
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "2627:3:1",
"type": "",
"value": "224"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "2632:10:1",
"type": "",
"value": "0x4e487b71"
}
],
"functionName": {
"name": "shl",
"nodeType": "YulIdentifier",
"src": "2623:3:1"
},
"nodeType": "YulFunctionCall",
"src": "2623:20:1"
}
],
"functionName": {
"name": "mstore",
"nodeType": "YulIdentifier",
"src": "2613:6:1"
},
"nodeType": "YulFunctionCall",
"src": "2613:31:1"
},
"nodeType": "YulExpressionStatement",
"src": "2613:31:1"
},
{
"expression": {
"arguments": [
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "2660:1:1",
"type": "",
"value": "4"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "2663:4:1",
"type": "",
"value": "0x11"
}
],
"functionName": {
"name": "mstore",
"nodeType": "YulIdentifier",
"src": "2653:6:1"
},
"nodeType": "YulFunctionCall",
"src": "2653:15:1"
},
"nodeType": "YulExpressionStatement",
"src": "2653:15:1"
},
{
"expression": {
"arguments": [
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "2684:1:1",
"type": "",
"value": "0"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "2687:4:1",
"type": "",
"value": "0x24"
}
],
"functionName": {
"name": "revert",
"nodeType": "YulIdentifier",
"src": "2677:6:1"
},
"nodeType": "YulFunctionCall",
"src": "2677:15:1"
},
"nodeType": "YulExpressionStatement",
"src": "2677:15:1"
}
]
},
"name": "panic_error_0x11",
"nodeType": "YulFunctionDefinition",
"src": "2571:127:1"
},
{
"body": {
"nodeType": "YulBlock",
"src": "2751:80:1",
"statements": [
{
"body": {
"nodeType": "YulBlock",
"src": "2778:22:1",
"statements": [
{
"expression": {
"arguments": [],
"functionName": {
"name": "panic_error_0x11",
"nodeType": "YulIdentifier",
"src": "2780:16:1"
},
"nodeType": "YulFunctionCall",
"src": "2780:18:1"
},
"nodeType": "YulExpressionStatement",
"src": "2780:18:1"
}
]
},
"condition": {
"arguments": [
{
"name": "x",
"nodeType": "YulIdentifier",
"src": "2767:1:1"
},
{
"arguments": [
{
"name": "y",
"nodeType": "YulIdentifier",
"src": "2774:1:1"
}
],
"functionName": {
"name": "not",
"nodeType": "YulIdentifier",
"src": "2770:3:1"
},
"nodeType": "YulFunctionCall",
"src": "2770:6:1"
}
],
"functionName": {
"name": "gt",
"nodeType": "YulIdentifier",
"src": "2764:2:1"
},
"nodeType": "YulFunctionCall",
"src": "2764:13:1"
},
"nodeType": "YulIf",
"src": "2761:39:1"
},
{
"nodeType": "YulAssignment",
"src": "2809:16:1",
"value": {
"arguments": [
{
"name": "x",
"nodeType": "YulIdentifier",
"src": "2820:1:1"
},
{
"name": "y",
"nodeType": "YulIdentifier",
"src": "2823:1:1"
}
],
"functionName": {
"name": "add",
"nodeType": "YulIdentifier",
"src": "2816:3:1"
},
"nodeType": "YulFunctionCall",
"src": "2816:9:1"
},
"variableNames": [
{
"name": "sum",
"nodeType": "YulIdentifier",
"src": "2809:3:1"
}
]
}
]
},
"name": "checked_add_t_uint256",
"nodeType": "YulFunctionDefinition",
"parameters": [
{
"name": "x",
"nodeType": "YulTypedName",
"src": "2734:1:1",
"type": ""
},
{
"name": "y",
"nodeType": "YulTypedName",
"src": "2737:1:1",
"type": ""
}
],
"returnVariables": [
{
"name": "sum",
"nodeType": "YulTypedName",
"src": "2743:3:1",
"type": ""
}
],
"src": "2703:128:1"
},
{
"body": {
"nodeType": "YulBlock",
"src": "3010:168:1",
"statements": [
{
"expression": {
"arguments": [
{
"name": "headStart",
"nodeType": "YulIdentifier",
"src": "3027:9:1"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "3038:2:1",
"type": "",
"value": "32"
}
],
"functionName": {
"name": "mstore",
"nodeType": "YulIdentifier",
"src": "3020:6:1"
},
"nodeType": "YulFunctionCall",
"src": "3020:21:1"
},
"nodeType": "YulExpressionStatement",
"src": "3020:21:1"
},
{
"expression": {
"arguments": [
{
"arguments": [
{
"name": "headStart",
"nodeType": "YulIdentifier",
"src": "3061:9:1"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "3072:2:1",
"type": "",
"value": "32"
}
],
"functionName": {
"name": "add",
"nodeType": "YulIdentifier",
"src": "3057:3:1"
},
"nodeType": "YulFunctionCall",
"src": "3057:18:1"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "3077:2:1",
"type": "",
"value": "18"
}
],
"functionName": {
"name": "mstore",
"nodeType": "YulIdentifier",
"src": "3050:6:1"
},
"nodeType": "YulFunctionCall",
"src": "3050:30:1"
},
"nodeType": "YulExpressionStatement",
"src": "3050:30:1"
},
{
"expression": {
"arguments": [
{
"arguments": [
{
"name": "headStart",
"nodeType": "YulIdentifier",
"src": "3100:9:1"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "3111:2:1",
"type": "",
"value": "64"
}
],
"functionName": {
"name": "add",
"nodeType": "YulIdentifier",
"src": "3096:3:1"
},
"nodeType": "YulFunctionCall",
"src": "3096:18:1"
},
{
"hexValue": "596f7520616c726561647920766f7465642e",
"kind": "string",
"nodeType": "YulLiteral",
"src": "3116:20:1",
"type": "",
"value": "You already voted."
}
],
"functionName": {
"name": "mstore",
"nodeType": "YulIdentifier",
"src": "3089:6:1"
},
"nodeType": "YulFunctionCall",
"src": "3089:48:1"
},
"nodeType": "YulExpressionStatement",
"src": "3089:48:1"
},
{
"nodeType": "YulAssignment",
"src": "3146:26:1",
"value": {
"arguments": [
{
"name": "headStart",
"nodeType": "YulIdentifier",
"src": "3158:9:1"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "3169:2:1",
"type": "",
"value": "96"
}
],
"functionName": {
"name": "add",
"nodeType": "YulIdentifier",
"src": "3154:3:1"
},
"nodeType": "YulFunctionCall",
"src": "3154:18:1"
},
"variableNames": [
{
"name": "tail",
"nodeType": "YulIdentifier",
"src": "3146:4:1"
}
]
}
]
},
"name": "abi_encode_tuple_t_stringliteral_657c6119c4ed567c60278fba62242b17c2fedf38962e651040dabfb3c9e15a5f__to_t_string_memory_ptr__fromStack_reversed",
"nodeType": "YulFunctionDefinition",
"parameters": [
{
"name": "headStart",
"nodeType": "YulTypedName",
"src": "2987:9:1",
"type": ""
}
],
"returnVariables": [
{
"name": "tail",
"nodeType": "YulTypedName",
"src": "3001:4:1",
"type": ""
}
],
"src": "2836:342:1"
},
{
"body": {
"nodeType": "YulBlock",
"src": "3357:180:1",
"statements": [
{
"expression": {
"arguments": [
{
"name": "headStart",
"nodeType": "YulIdentifier",
"src": "3374:9:1"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "3385:2:1",
"type": "",
"value": "32"
}
],
"functionName": {
"name": "mstore",
"nodeType": "YulIdentifier",
"src": "3367:6:1"
},
"nodeType": "YulFunctionCall",
"src": "3367:21:1"
},
"nodeType": "YulExpressionStatement",
"src": "3367:21:1"
},
{
"expression": {
"arguments": [
{
"arguments": [
{
"name": "headStart",
"nodeType": "YulIdentifier",
"src": "3408:9:1"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "3419:2:1",
"type": "",
"value": "32"
}
],
"functionName": {
"name": "add",
"nodeType": "YulIdentifier",
"src": "3404:3:1"
},
"nodeType": "YulFunctionCall",
"src": "3404:18:1"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "3424:2:1",
"type": "",
"value": "30"
}
],
"functionName": {
"name": "mstore",
"nodeType": "YulIdentifier",
"src": "3397:6:1"
},
"nodeType": "YulFunctionCall",
"src": "3397:30:1"
},
"nodeType": "YulExpressionStatement",
"src": "3397:30:1"
},
{
"expression": {
"arguments": [
{
"arguments": [
{
"name": "headStart",
"nodeType": "YulIdentifier",
"src": "3447:9:1"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "3458:2:1",
"type": "",
"value": "64"
}
],
"functionName": {
"name": "add",
"nodeType": "YulIdentifier",
"src": "3443:3:1"
},
"nodeType": "YulFunctionCall",
"src": "3443:18:1"
},
{
"hexValue": "53656c662d64656c65676174696f6e20697320646973616c6c6f7765642e",
"kind": "string",
"nodeType": "YulLiteral",
"src": "3463:32:1",
"type": "",
"value": "Self-delegation is disallowed."
}
],
"functionName": {
"name": "mstore",
"nodeType": "YulIdentifier",
"src": "3436:6:1"
},
"nodeType": "YulFunctionCall",
"src": "3436:60:1"
},
"nodeType": "YulExpressionStatement",
"src": "3436:60:1"
},
{
"nodeType": "YulAssignment",
"src": "3505:26:1",
"value": {
"arguments": [
{
"name": "headStart",
"nodeType": "YulIdentifier",
"src": "3517:9:1"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "3528:2:1",
"type": "",
"value": "96"
}
],
"functionName": {
"name": "add",
"nodeType": "YulIdentifier",
"src": "3513:3:1"
},
"nodeType": "YulFunctionCall",
"src": "3513:18:1"
},
"variableNames": [
{
"name": "tail",
"nodeType": "YulIdentifier",
"src": "3505:4:1"
}
]
}
]
},
"name": "abi_encode_tuple_t_stringliteral_f37bf1aca80f8fa291a40f639db6aeaa1425ceb0e8c61c8648f0e2efa282a947__to_t_string_memory_ptr__fromStack_reversed",
"nodeType": "YulFunctionDefinition",
"parameters": [
{
"name": "headStart",
"nodeType": "YulTypedName",
"src": "3334:9:1",
"type": ""
}
],
"returnVariables": [
{
"name": "tail",
"nodeType": "YulTypedName",
"src": "3348:4:1",
"type": ""
}
],
"src": "3183:354:1"
},
{
"body": {
"nodeType": "YulBlock",
"src": "3716:175:1",
"statements": [
{
"expression": {
"arguments": [
{
"name": "headStart",
"nodeType": "YulIdentifier",
"src": "3733:9:1"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "3744:2:1",
"type": "",
"value": "32"
}
],
"functionName": {
"name": "mstore",
"nodeType": "YulIdentifier",
"src": "3726:6:1"
},
"nodeType": "YulFunctionCall",
"src": "3726:21:1"
},
"nodeType": "YulExpressionStatement",
"src": "3726:21:1"
},
{
"expression": {
"arguments": [
{
"arguments": [
{
"name": "headStart",
"nodeType": "YulIdentifier",
"src": "3767:9:1"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "3778:2:1",
"type": "",
"value": "32"
}
],
"functionName": {
"name": "add",
"nodeType": "YulIdentifier",
"src": "3763:3:1"
},
"nodeType": "YulFunctionCall",
"src": "3763:18:1"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "3783:2:1",
"type": "",
"value": "25"
}
],
"functionName": {
"name": "mstore",
"nodeType": "YulIdentifier",
"src": "3756:6:1"
},
"nodeType": "YulFunctionCall",
"src": "3756:30:1"
},
"nodeType": "YulExpressionStatement",
"src": "3756:30:1"
},
{
"expression": {
"arguments": [
{
"arguments": [
{
"name": "headStart",
"nodeType": "YulIdentifier",
"src": "3806:9:1"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "3817:2:1",
"type": "",
"value": "64"
}
],
"functionName": {
"name": "add",
"nodeType": "YulIdentifier",
"src": "3802:3:1"
},
"nodeType": "YulFunctionCall",
"src": "3802:18:1"
},
{
"hexValue": "466f756e64206c6f6f7020696e2064656c65676174696f6e2e",
"kind": "string",
"nodeType": "YulLiteral",
"src": "3822:27:1",
"type": "",
"value": "Found loop in delegation."
}
],
"functionName": {
"name": "mstore",
"nodeType": "YulIdentifier",
"src": "3795:6:1"
},
"nodeType": "YulFunctionCall",
"src": "3795:55:1"
},
"nodeType": "YulExpressionStatement",
"src": "3795:55:1"
},
{
"nodeType": "YulAssignment",
"src": "3859:26:1",
"value": {
"arguments": [
{
"name": "headStart",
"nodeType": "YulIdentifier",
"src": "3871:9:1"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "3882:2:1",
"type": "",
"value": "96"
}
],
"functionName": {
"name": "add",
"nodeType": "YulIdentifier",
"src": "3867:3:1"
},
"nodeType": "YulFunctionCall",
"src": "3867:18:1"
},
"variableNames": [
{
"name": "tail",
"nodeType": "YulIdentifier",
"src": "3859:4:1"
}
]
}
]
},
"name": "abi_encode_tuple_t_stringliteral_8bd75322489f7ff7ab0b18506f4dcde935a32eca2a506b00f4d21b0becfa093c__to_t_string_memory_ptr__fromStack_reversed",
"nodeType": "YulFunctionDefinition",
"parameters": [
{
"name": "headStart",
"nodeType": "YulTypedName",
"src": "3693:9:1",
"type": ""
}
],
"returnVariables": [
{
"name": "tail",
"nodeType": "YulTypedName",
"src": "3707:4:1",
"type": ""
}
],
"src": "3542:349:1"
},
{
"body": {
"nodeType": "YulBlock",
"src": "3943:88:1",
"statements": [
{
"body": {
"nodeType": "YulBlock",
"src": "3974:22:1",
"statements": [
{
"expression": {
"arguments": [],
"functionName": {
"name": "panic_error_0x11",
"nodeType": "YulIdentifier",
"src": "3976:16:1"
},
"nodeType": "YulFunctionCall",
"src": "3976:18:1"
},
"nodeType": "YulExpressionStatement",
"src": "3976:18:1"
}
]
},
"condition": {
"arguments": [
{
"name": "value",
"nodeType": "YulIdentifier",
"src": "3959:5:1"
},
{
"arguments": [
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "3970:1:1",
"type": "",
"value": "0"
}
],
"functionName": {
"name": "not",
"nodeType": "YulIdentifier",
"src": "3966:3:1"
},
"nodeType": "YulFunctionCall",
"src": "3966:6:1"
}
],
"functionName": {
"name": "eq",
"nodeType": "YulIdentifier",
"src": "3956:2:1"
},
"nodeType": "YulFunctionCall",
"src": "3956:17:1"
},
"nodeType": "YulIf",
"src": "3953:43:1"
},
{
"nodeType": "YulAssignment",
"src": "4005:20:1",
"value": {
"arguments": [
{
"name": "value",
"nodeType": "YulIdentifier",
"src": "4016:5:1"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "4023:1:1",
"type": "",
"value": "1"
}
],
"functionName": {
"name": "add",
"nodeType": "YulIdentifier",
"src": "4012:3:1"
},
"nodeType": "YulFunctionCall",
"src": "4012:13:1"
},
"variableNames": [
{
"name": "ret",
"nodeType": "YulIdentifier",
"src": "4005:3:1"
}
]
}
]
},
"name": "increment_t_uint256",
"nodeType": "YulFunctionDefinition",
"parameters": [
{
"name": "value",
"nodeType": "YulTypedName",
"src": "3925:5:1",
"type": ""
}
],
"returnVariables": [
{
"name": "ret",
"nodeType": "YulTypedName",
"src": "3935:3:1",
"type": ""
}
],
"src": "3896:135:1"
},
{
"body": {
"nodeType": "YulBlock",
"src": "4210:230:1",
"statements": [
{
"expression": {
"arguments": [
{
"name": "headStart",
"nodeType": "YulIdentifier",
"src": "4227:9:1"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "4238:2:1",
"type": "",
"value": "32"
}
],
"functionName": {
"name": "mstore",
"nodeType": "YulIdentifier",
"src": "4220:6:1"
},
"nodeType": "YulFunctionCall",
"src": "4220:21:1"
},
"nodeType": "YulExpressionStatement",
"src": "4220:21:1"
},
{
"expression": {
"arguments": [
{
"arguments": [
{
"name": "headStart",
"nodeType": "YulIdentifier",
"src": "4261:9:1"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "4272:2:1",
"type": "",
"value": "32"
}
],
"functionName": {
"name": "add",
"nodeType": "YulIdentifier",
"src": "4257:3:1"
},
"nodeType": "YulFunctionCall",
"src": "4257:18:1"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "4277:2:1",
"type": "",
"value": "40"
}
],
"functionName": {
"name": "mstore",
"nodeType": "YulIdentifier",
"src": "4250:6:1"
},
"nodeType": "YulFunctionCall",
"src": "4250:30:1"
},
"nodeType": "YulExpressionStatement",
"src": "4250:30:1"
},
{
"expression": {
"arguments": [
{
"arguments": [
{
"name": "headStart",
"nodeType": "YulIdentifier",
"src": "4300:9:1"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "4311:2:1",
"type": "",
"value": "64"
}
],
"functionName": {
"name": "add",
"nodeType": "YulIdentifier",
"src": "4296:3:1"
},
"nodeType": "YulFunctionCall",
"src": "4296:18:1"
},
{
"hexValue": "4f6e6c79206368616972706572736f6e2063616e206769766520726967687420",
"kind": "string",
"nodeType": "YulLiteral",
"src": "4316:34:1",
"type": "",
"value": "Only chairperson can give right "
}
],
"functionName": {
"name": "mstore",
"nodeType": "YulIdentifier",
"src": "4289:6:1"
},
"nodeType": "YulFunctionCall",
"src": "4289:62:1"
},
"nodeType": "YulExpressionStatement",
"src": "4289:62:1"
},
{
"expression": {
"arguments": [
{
"arguments": [
{
"name": "headStart",
"nodeType": "YulIdentifier",
"src": "4371:9:1"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "4382:2:1",
"type": "",
"value": "96"
}
],
"functionName": {
"name": "add",
"nodeType": "YulIdentifier",
"src": "4367:3:1"
},
"nodeType": "YulFunctionCall",
"src": "4367:18:1"
},
{
"hexValue": "746f20766f74652e",
"kind": "string",
"nodeType": "YulLiteral",
"src": "4387:10:1",
"type": "",
"value": "to vote."
}
],
"functionName": {
"name": "mstore",
"nodeType": "YulIdentifier",
"src": "4360:6:1"
},
"nodeType": "YulFunctionCall",
"src": "4360:38:1"
},
"nodeType": "YulExpressionStatement",
"src": "4360:38:1"
},
{
"nodeType": "YulAssignment",
"src": "4407:27:1",
"value": {
"arguments": [
{
"name": "headStart",
"nodeType": "YulIdentifier",
"src": "4419:9:1"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "4430:3:1",
"type": "",
"value": "128"
}
],
"functionName": {
"name": "add",
"nodeType": "YulIdentifier",
"src": "4415:3:1"
},
"nodeType": "YulFunctionCall",
"src": "4415:19:1"
},
"variableNames": [
{
"name": "tail",
"nodeType": "YulIdentifier",
"src": "4407:4:1"
}
]
}
]
},
"name": "abi_encode_tuple_t_stringliteral_80126ce3251ab2b6e4ade14fe5b2bc11f593510cbe9e3550c09bff1989e33b95__to_t_string_memory_ptr__fromStack_reversed",
"nodeType": "YulFunctionDefinition",
"parameters": [
{
"name": "headStart",
"nodeType": "YulTypedName",
"src": "4187:9:1",
"type": ""
}
],
"returnVariables": [
{
"name": "tail",
"nodeType": "YulTypedName",
"src": "4201:4:1",
"type": ""
}
],
"src": "4036:404:1"
},
{
"body": {
"nodeType": "YulBlock",
"src": "4619:174:1",
"statements": [
{
"expression": {
"arguments": [
{
"name": "headStart",
"nodeType": "YulIdentifier",
"src": "4636:9:1"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "4647:2:1",
"type": "",
"value": "32"
}
],
"functionName": {
"name": "mstore",
"nodeType": "YulIdentifier",
"src": "4629:6:1"
},
"nodeType": "YulFunctionCall",
"src": "4629:21:1"
},
"nodeType": "YulExpressionStatement",
"src": "4629:21:1"
},
{
"expression": {
"arguments": [
{
"arguments": [
{
"name": "headStart",
"nodeType": "YulIdentifier",
"src": "4670:9:1"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "4681:2:1",
"type": "",
"value": "32"
}
],
"functionName": {
"name": "add",
"nodeType": "YulIdentifier",
"src": "4666:3:1"
},
"nodeType": "YulFunctionCall",
"src": "4666:18:1"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "4686:2:1",
"type": "",
"value": "24"
}
],
"functionName": {
"name": "mstore",
"nodeType": "YulIdentifier",
"src": "4659:6:1"
},
"nodeType": "YulFunctionCall",
"src": "4659:30:1"
},
"nodeType": "YulExpressionStatement",
"src": "4659:30:1"
},
{
"expression": {
"arguments": [
{
"arguments": [
{
"name": "headStart",
"nodeType": "YulIdentifier",
"src": "4709:9:1"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "4720:2:1",
"type": "",
"value": "64"
}
],
"functionName": {
"name": "add",
"nodeType": "YulIdentifier",
"src": "4705:3:1"
},
"nodeType": "YulFunctionCall",
"src": "4705:18:1"
},
{
"hexValue": "54686520766f74657220616c726561647920766f7465642e",
"kind": "string",
"nodeType": "YulLiteral",
"src": "4725:26:1",
"type": "",
"value": "The voter already voted."
}
],
"functionName": {
"name": "mstore",
"nodeType": "YulIdentifier",
"src": "4698:6:1"
},
"nodeType": "YulFunctionCall",
"src": "4698:54:1"
},
"nodeType": "YulExpressionStatement",
"src": "4698:54:1"
},
{
"nodeType": "YulAssignment",
"src": "4761:26:1",
"value": {
"arguments": [
{
"name": "headStart",
"nodeType": "YulIdentifier",
"src": "4773:9:1"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "4784:2:1",
"type": "",
"value": "96"
}
],
"functionName": {
"name": "add",
"nodeType": "YulIdentifier",
"src": "4769:3:1"
},
"nodeType": "YulFunctionCall",
"src": "4769:18:1"
},
"variableNames": [
{
"name": "tail",
"nodeType": "YulIdentifier",
"src": "4761:4:1"
}
]
}
]
},
"name": "abi_encode_tuple_t_stringliteral_d39b1db28626750c546703ffb72f30ea3facdfed1bebd47408e22ef18a76ba2d__to_t_string_memory_ptr__fromStack_reversed",
"nodeType": "YulFunctionDefinition",
"parameters": [
{
"name": "headStart",
"nodeType": "YulTypedName",
"src": "4596:9:1",
"type": ""
}
],
"returnVariables": [
{
"name": "tail",
"nodeType": "YulTypedName",
"src": "4610:4:1",
"type": ""
}
],
"src": "4445:348:1"
}
]
},
"contents": "{\n { }\n function abi_decode_tuple_t_uint256(headStart, dataEnd) -> value0\n {\n if slt(sub(dataEnd, headStart), 32) { revert(0, 0) }\n value0 := calldataload(headStart)\n }\n function abi_encode_tuple_t_bytes32_t_uint256__to_t_bytes32_t_uint256__fromStack_reversed(headStart, value1, value0) -> tail\n {\n tail := add(headStart, 64)\n mstore(headStart, value0)\n mstore(add(headStart, 32), value1)\n }\n function abi_encode_tuple_t_address__to_t_address__fromStack_reversed(headStart, value0) -> tail\n {\n tail := add(headStart, 32)\n mstore(headStart, and(value0, sub(shl(160, 1), 1)))\n }\n function abi_decode_tuple_t_address(headStart, dataEnd) -> value0\n {\n if slt(sub(dataEnd, headStart), 32) { revert(0, 0) }\n let value := calldataload(headStart)\n if iszero(eq(value, and(value, sub(shl(160, 1), 1)))) { revert(0, 0) }\n value0 := value\n }\n function abi_encode_tuple_t_uint256__to_t_uint256__fromStack_reversed(headStart, value0) -> tail\n {\n tail := add(headStart, 32)\n mstore(headStart, value0)\n }\n function abi_encode_tuple_t_uint256_t_bool_t_address_t_uint256__to_t_uint256_t_bool_t_address_t_uint256__fromStack_reversed(headStart, value3, value2, value1, value0) -> tail\n {\n tail := add(headStart, 128)\n mstore(headStart, value0)\n mstore(add(headStart, 32), iszero(iszero(value1)))\n mstore(add(headStart, 64), and(value2, sub(shl(160, 1), 1)))\n mstore(add(headStart, 96), value3)\n }\n function abi_encode_tuple_t_bytes32__to_t_bytes32__fromStack_reversed(headStart, value0) -> tail\n {\n tail := add(headStart, 32)\n mstore(headStart, value0)\n }\n function abi_encode_tuple_t_stringliteral_0dc527e8fa9b76c996eb5eda9ddb749b21540f5509781b94e1e37f7027e7f50e__to_t_string_memory_ptr__fromStack_reversed(headStart) -> tail\n {\n mstore(headStart, 32)\n mstore(add(headStart, 32), 20)\n mstore(add(headStart, 64), \"Has no right to vote\")\n tail := add(headStart, 96)\n }\n function abi_encode_tuple_t_stringliteral_56aab92b7164a4ea72a098d2d95a5e763b71d07f265e8d46fc7240404017fa84__to_t_string_memory_ptr__fromStack_reversed(headStart) -> tail\n {\n mstore(headStart, 32)\n mstore(add(headStart, 32), 14)\n mstore(add(headStart, 64), \"Already voted.\")\n tail := add(headStart, 96)\n }\n function panic_error_0x32()\n {\n mstore(0, shl(224, 0x4e487b71))\n mstore(4, 0x32)\n revert(0, 0x24)\n }\n function panic_error_0x11()\n {\n mstore(0, shl(224, 0x4e487b71))\n mstore(4, 0x11)\n revert(0, 0x24)\n }\n function checked_add_t_uint256(x, y) -> sum\n {\n if gt(x, not(y)) { panic_error_0x11() }\n sum := add(x, y)\n }\n function abi_encode_tuple_t_stringliteral_657c6119c4ed567c60278fba62242b17c2fedf38962e651040dabfb3c9e15a5f__to_t_string_memory_ptr__fromStack_reversed(headStart) -> tail\n {\n mstore(headStart, 32)\n mstore(add(headStart, 32), 18)\n mstore(add(headStart, 64), \"You already voted.\")\n tail := add(headStart, 96)\n }\n function abi_encode_tuple_t_stringliteral_f37bf1aca80f8fa291a40f639db6aeaa1425ceb0e8c61c8648f0e2efa282a947__to_t_string_memory_ptr__fromStack_reversed(headStart) -> tail\n {\n mstore(headStart, 32)\n mstore(add(headStart, 32), 30)\n mstore(add(headStart, 64), \"Self-delegation is disallowed.\")\n tail := add(headStart, 96)\n }\n function abi_encode_tuple_t_stringliteral_8bd75322489f7ff7ab0b18506f4dcde935a32eca2a506b00f4d21b0becfa093c__to_t_string_memory_ptr__fromStack_reversed(headStart) -> tail\n {\n mstore(headStart, 32)\n mstore(add(headStart, 32), 25)\n mstore(add(headStart, 64), \"Found loop in delegation.\")\n tail := add(headStart, 96)\n }\n function increment_t_uint256(value) -> ret\n {\n if eq(value, not(0)) { panic_error_0x11() }\n ret := add(value, 1)\n }\n function abi_encode_tuple_t_stringliteral_80126ce3251ab2b6e4ade14fe5b2bc11f593510cbe9e3550c09bff1989e33b95__to_t_string_memory_ptr__fromStack_reversed(headStart) -> tail\n {\n mstore(headStart, 32)\n mstore(add(headStart, 32), 40)\n mstore(add(headStart, 64), \"Only chairperson can give right \")\n mstore(add(headStart, 96), \"to vote.\")\n tail := add(headStart, 128)\n }\n function abi_encode_tuple_t_stringliteral_d39b1db28626750c546703ffb72f30ea3facdfed1bebd47408e22ef18a76ba2d__to_t_string_memory_ptr__fromStack_reversed(headStart) -> tail\n {\n mstore(headStart, 32)\n mstore(add(headStart, 32), 24)\n mstore(add(headStart, 64), \"The voter already voted.\")\n tail := add(headStart, 96)\n }\n}",
"id": 1,
"language": "Yul",
"name": "#utility.yul"
}
],
"immutableReferences": {},
"linkReferences": {},
"object": "608060405234801561001057600080fd5b50600436106100885760003560e01c8063609ff1bd1161005b578063609ff1bd1461010d5780639e7b8d6114610123578063a3ec138d14610136578063e2ba53f0146101a757600080fd5b80630121b93f1461008d578063013cf08b146100a25780632e4176cf146100cf5780635c19a95c146100fa575b600080fd5b6100a061009b36600461069b565b6101af565b005b6100b56100b036600461069b565b6102a6565b604080519283526020830191909152015b60405180910390f35b6000546100e2906001600160a01b031681565b6040516001600160a01b0390911681526020016100c6565b6100a06101083660046106b4565b6102d4565b6101156104d3565b6040519081526020016100c6565b6100a06101313660046106b4565b610550565b6101786101443660046106b4565b600160208190526000918252604090912080549181015460029091015460ff82169161010090046001600160a01b03169084565b6040516100c6949392919093845291151560208401526001600160a01b03166040830152606082015260800190565b610115610668565b33600090815260016020526040902080546102085760405162461bcd60e51b8152602060048201526014602482015273486173206e6f20726967687420746f20766f746560601b60448201526064015b60405180910390fd5b600181015460ff161561024e5760405162461bcd60e51b815260206004820152600e60248201526d20b63932b0b23c903b37ba32b21760911b60448201526064016101ff565b6001818101805460ff191690911790556002808201839055815481549091908490811061027d5761027d6106e4565b9060005260206000209060020201600101600082825461029d9190610710565b90915550505050565b600281815481106102b657600080fd5b60009182526020909120600290910201805460019091015490915082565b3360009081526001602081905260409091209081015460ff161561032f5760405162461bcd60e51b81526020600482015260126024820152712cb7ba9030b63932b0b23c903b37ba32b21760711b60448201526064016101ff565b6001600160a01b0382163314156103885760405162461bcd60e51b815260206004820152601e60248201527f53656c662d64656c65676174696f6e20697320646973616c6c6f7765642e000060448201526064016101ff565b6001600160a01b03828116600090815260016020819052604090912001546101009004161561042d576001600160a01b0391821660009081526001602081905260409091200154610100900490911690338214156104285760405162461bcd60e51b815260206004820152601960248201527f466f756e64206c6f6f7020696e2064656c65676174696f6e2e0000000000000060448201526064016101ff565b610388565b600181810180546001600160a81b0319166101006001600160a01b03861690810291909117831790915560009081526020829052604090209081015460ff16156104b457815460028281015481548110610489576104896106e4565b906000526020600020906002020160010160008282546104a99190610710565b909155506104ce9050565b8154815482906000906104c8908490610710565b90915550505b505050565b600080805b60025481101561054b5781600282815481106104f6576104f66106e4565b90600052602060002090600202016001015411156105395760028181548110610521576105216106e4565b90600052602060002090600202016001015491508092505b8061054381610728565b9150506104d8565b505090565b6000546001600160a01b031633146105bb5760405162461bcd60e51b815260206004820152602860248201527f4f6e6c79206368616972706572736f6e2063616e2067697665207269676874206044820152673a37903b37ba329760c11b60648201526084016101ff565b6001600160a01b0381166000908152600160208190526040909120015460ff16156106285760405162461bcd60e51b815260206004820152601860248201527f54686520766f74657220616c726561647920766f7465642e000000000000000060448201526064016101ff565b6001600160a01b0381166000908152600160205260409020541561064b57600080fd5b6001600160a01b0316600090815260016020819052604090912055565b600060026106746104d3565b81548110610684576106846106e4565b906000526020600020906002020160000154905090565b6000602082840312156106ad57600080fd5b5035919050565b6000602082840312156106c657600080fd5b81356001600160a01b03811681146106dd57600080fd5b9392505050565b634e487b7160e01b600052603260045260246000fd5b634e487b7160e01b600052601160045260246000fd5b60008219821115610723576107236106fa565b500190565b600060001982141561073c5761073c6106fa565b506001019056fea26469706673582212201bf4623bcbb72c28c9145dca0d401c6ee5c5b8767788acbb45788bcf43870a3964736f6c63430008090033",
"opcodes": "PUSH1 0x80 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH2 0x10 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x4 CALLDATASIZE LT PUSH2 0x88 JUMPI PUSH1 0x0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0x609FF1BD GT PUSH2 0x5B JUMPI DUP1 PUSH4 0x609FF1BD EQ PUSH2 0x10D JUMPI DUP1 PUSH4 0x9E7B8D61 EQ PUSH2 0x123 JUMPI DUP1 PUSH4 0xA3EC138D EQ PUSH2 0x136 JUMPI DUP1 PUSH4 0xE2BA53F0 EQ PUSH2 0x1A7 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 PUSH4 0x121B93F EQ PUSH2 0x8D JUMPI DUP1 PUSH4 0x13CF08B EQ PUSH2 0xA2 JUMPI DUP1 PUSH4 0x2E4176CF EQ PUSH2 0xCF JUMPI DUP1 PUSH4 0x5C19A95C EQ PUSH2 0xFA JUMPI JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0xA0 PUSH2 0x9B CALLDATASIZE PUSH1 0x4 PUSH2 0x69B JUMP JUMPDEST PUSH2 0x1AF JUMP JUMPDEST STOP JUMPDEST PUSH2 0xB5 PUSH2 0xB0 CALLDATASIZE PUSH1 0x4 PUSH2 0x69B JUMP JUMPDEST PUSH2 0x2A6 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD SWAP3 DUP4 MSTORE PUSH1 0x20 DUP4 ADD SWAP2 SWAP1 SWAP2 MSTORE ADD JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH1 0x0 SLOAD PUSH2 0xE2 SWAP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 SWAP2 AND DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0xC6 JUMP JUMPDEST PUSH2 0xA0 PUSH2 0x108 CALLDATASIZE PUSH1 0x4 PUSH2 0x6B4 JUMP JUMPDEST PUSH2 0x2D4 JUMP JUMPDEST PUSH2 0x115 PUSH2 0x4D3 JUMP JUMPDEST PUSH1 0x40 MLOAD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0xC6 JUMP JUMPDEST PUSH2 0xA0 PUSH2 0x131 CALLDATASIZE PUSH1 0x4 PUSH2 0x6B4 JUMP JUMPDEST PUSH2 0x550 JUMP JUMPDEST PUSH2 0x178 PUSH2 0x144 CALLDATASIZE PUSH1 0x4 PUSH2 0x6B4 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x20 DUP2 SWAP1 MSTORE PUSH1 0x0 SWAP2 DUP3 MSTORE PUSH1 0x40 SWAP1 SWAP2 KECCAK256 DUP1 SLOAD SWAP2 DUP2 ADD SLOAD PUSH1 0x2 SWAP1 SWAP2 ADD SLOAD PUSH1 0xFF DUP3 AND SWAP2 PUSH2 0x100 SWAP1 DIV PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SWAP1 DUP5 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0xC6 SWAP5 SWAP4 SWAP3 SWAP2 SWAP1 SWAP4 DUP5 MSTORE SWAP2 ISZERO ISZERO PUSH1 0x20 DUP5 ADD MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH1 0x40 DUP4 ADD MSTORE PUSH1 0x60 DUP3 ADD MSTORE PUSH1 0x80 ADD SWAP1 JUMP JUMPDEST PUSH2 0x115 PUSH2 0x668 JUMP JUMPDEST CALLER PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x1 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 DUP1 SLOAD PUSH2 0x208 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x14 PUSH1 0x24 DUP3 ADD MSTORE PUSH20 0x486173206E6F20726967687420746F20766F7465 PUSH1 0x60 SHL PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 ADD JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x1 DUP2 ADD SLOAD PUSH1 0xFF AND ISZERO PUSH2 0x24E JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0xE PUSH1 0x24 DUP3 ADD MSTORE PUSH14 0x20B63932B0B23C903B37BA32B217 PUSH1 0x91 SHL PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 ADD PUSH2 0x1FF JUMP JUMPDEST PUSH1 0x1 DUP2 DUP2 ADD DUP1 SLOAD PUSH1 0xFF NOT AND SWAP1 SWAP2 OR SWAP1 SSTORE PUSH1 0x2 DUP1 DUP3 ADD DUP4 SWAP1 SSTORE DUP2 SLOAD DUP2 SLOAD SWAP1 SWAP2 SWAP1 DUP5 SWAP1 DUP2 LT PUSH2 0x27D JUMPI PUSH2 0x27D PUSH2 0x6E4 JUMP JUMPDEST SWAP1 PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 KECCAK256 SWAP1 PUSH1 0x2 MUL ADD PUSH1 0x1 ADD PUSH1 0x0 DUP3 DUP3 SLOAD PUSH2 0x29D SWAP2 SWAP1 PUSH2 0x710 JUMP JUMPDEST SWAP1 SWAP2 SSTORE POP POP POP POP JUMP JUMPDEST PUSH1 0x2 DUP2 DUP2 SLOAD DUP2 LT PUSH2 0x2B6 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 SWAP2 DUP3 MSTORE PUSH1 0x20 SWAP1 SWAP2 KECCAK256 PUSH1 0x2 SWAP1 SWAP2 MUL ADD DUP1 SLOAD PUSH1 0x1 SWAP1 SWAP2 ADD SLOAD SWAP1 SWAP2 POP DUP3 JUMP JUMPDEST CALLER PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x1 PUSH1 0x20 DUP2 SWAP1 MSTORE PUSH1 0x40 SWAP1 SWAP2 KECCAK256 SWAP1 DUP2 ADD SLOAD PUSH1 0xFF AND ISZERO PUSH2 0x32F JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x12 PUSH1 0x24 DUP3 ADD MSTORE PUSH18 0x2CB7BA9030B63932B0B23C903B37BA32B217 PUSH1 0x71 SHL PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 ADD PUSH2 0x1FF JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP3 AND CALLER EQ ISZERO PUSH2 0x388 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x1E PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x53656C662D64656C65676174696F6E20697320646973616C6C6F7765642E0000 PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 ADD PUSH2 0x1FF JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP3 DUP2 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x1 PUSH1 0x20 DUP2 SWAP1 MSTORE PUSH1 0x40 SWAP1 SWAP2 KECCAK256 ADD SLOAD PUSH2 0x100 SWAP1 DIV AND ISZERO PUSH2 0x42D JUMPI PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP2 DUP3 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x1 PUSH1 0x20 DUP2 SWAP1 MSTORE PUSH1 0x40 SWAP1 SWAP2 KECCAK256 ADD SLOAD PUSH2 0x100 SWAP1 DIV SWAP1 SWAP2 AND SWAP1 CALLER DUP3 EQ ISZERO PUSH2 0x428 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x19 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x466F756E64206C6F6F7020696E2064656C65676174696F6E2E00000000000000 PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 ADD PUSH2 0x1FF JUMP JUMPDEST PUSH2 0x388 JUMP JUMPDEST PUSH1 0x1 DUP2 DUP2 ADD DUP1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA8 SHL SUB NOT AND PUSH2 0x100 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP7 AND SWAP1 DUP2 MUL SWAP2 SWAP1 SWAP2 OR DUP4 OR SWAP1 SWAP2 SSTORE PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x20 DUP3 SWAP1 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SWAP1 DUP2 ADD SLOAD PUSH1 0xFF AND ISZERO PUSH2 0x4B4 JUMPI DUP2 SLOAD PUSH1 0x2 DUP3 DUP2 ADD SLOAD DUP2 SLOAD DUP2 LT PUSH2 0x489 JUMPI PUSH2 0x489 PUSH2 0x6E4 JUMP JUMPDEST SWAP1 PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 KECCAK256 SWAP1 PUSH1 0x2 MUL ADD PUSH1 0x1 ADD PUSH1 0x0 DUP3 DUP3 SLOAD PUSH2 0x4A9 SWAP2 SWAP1 PUSH2 0x710 JUMP JUMPDEST SWAP1 SWAP2 SSTORE POP PUSH2 0x4CE SWAP1 POP JUMP JUMPDEST DUP2 SLOAD DUP2 SLOAD DUP3 SWAP1 PUSH1 0x0 SWAP1 PUSH2 0x4C8 SWAP1 DUP5 SWAP1 PUSH2 0x710 JUMP JUMPDEST SWAP1 SWAP2 SSTORE POP POP JUMPDEST POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 DUP1 JUMPDEST PUSH1 0x2 SLOAD DUP2 LT ISZERO PUSH2 0x54B JUMPI DUP2 PUSH1 0x2 DUP3 DUP2 SLOAD DUP2 LT PUSH2 0x4F6 JUMPI PUSH2 0x4F6 PUSH2 0x6E4 JUMP JUMPDEST SWAP1 PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 KECCAK256 SWAP1 PUSH1 0x2 MUL ADD PUSH1 0x1 ADD SLOAD GT ISZERO PUSH2 0x539 JUMPI PUSH1 0x2 DUP2 DUP2 SLOAD DUP2 LT PUSH2 0x521 JUMPI PUSH2 0x521 PUSH2 0x6E4 JUMP JUMPDEST SWAP1 PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 KECCAK256 SWAP1 PUSH1 0x2 MUL ADD PUSH1 0x1 ADD SLOAD SWAP2 POP DUP1 SWAP3 POP JUMPDEST DUP1 PUSH2 0x543 DUP2 PUSH2 0x728 JUMP JUMPDEST SWAP2 POP POP PUSH2 0x4D8 JUMP JUMPDEST POP POP SWAP1 JUMP JUMPDEST PUSH1 0x0 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND CALLER EQ PUSH2 0x5BB JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x28 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x4F6E6C79206368616972706572736F6E2063616E206769766520726967687420 PUSH1 0x44 DUP3 ADD MSTORE PUSH8 0x3A37903B37BA3297 PUSH1 0xC1 SHL PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 ADD PUSH2 0x1FF JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x1 PUSH1 0x20 DUP2 SWAP1 MSTORE PUSH1 0x40 SWAP1 SWAP2 KECCAK256 ADD SLOAD PUSH1 0xFF AND ISZERO PUSH2 0x628 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x18 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x54686520766F74657220616C726561647920766F7465642E0000000000000000 PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 ADD PUSH2 0x1FF JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x1 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD ISZERO PUSH2 0x64B JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x1 PUSH1 0x20 DUP2 SWAP1 MSTORE PUSH1 0x40 SWAP1 SWAP2 KECCAK256 SSTORE JUMP JUMPDEST PUSH1 0x0 PUSH1 0x2 PUSH2 0x674 PUSH2 0x4D3 JUMP JUMPDEST DUP2 SLOAD DUP2 LT PUSH2 0x684 JUMPI PUSH2 0x684 PUSH2 0x6E4 JUMP JUMPDEST SWAP1 PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 KECCAK256 SWAP1 PUSH1 0x2 MUL ADD PUSH1 0x0 ADD SLOAD SWAP1 POP SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x6AD JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x6C6 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND DUP2 EQ PUSH2 0x6DD JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH1 0x0 MSTORE PUSH1 0x32 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH1 0x0 MSTORE PUSH1 0x11 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST PUSH1 0x0 DUP3 NOT DUP3 GT ISZERO PUSH2 0x723 JUMPI PUSH2 0x723 PUSH2 0x6FA JUMP JUMPDEST POP ADD SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x0 NOT DUP3 EQ ISZERO PUSH2 0x73C JUMPI PUSH2 0x73C PUSH2 0x6FA JUMP JUMPDEST POP PUSH1 0x1 ADD SWAP1 JUMP INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 SHL DELEGATECALL PUSH3 0x3BCBB7 0x2C 0x28 0xC9 EQ 0x5D 0xCA 0xD BLOCKHASH SHR PUSH15 0xE5C5B8767788ACBB45788BCF43870A CODECOPY PUSH5 0x736F6C6343 STOP ADDMOD MULMOD STOP CALLER ",
"sourceMap": "157:4362:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3173:458;;;;;;:::i;:::-;;:::i;:::-;;794:27;;;;;;:::i;:::-;;:::i;:::-;;;;373:25:1;;;429:2;414:18;;407:34;;;;346:18;794:27:0;;;;;;;;715:26;;;;;-1:-1:-1;;;;;715:26:0;;;;;;-1:-1:-1;;;;;616:32:1;;;598:51;;586:2;571:18;715:26:0;452:203:1;2078:907:0;;;;;;:::i;:::-;;:::i;3817:365::-;;;:::i;:::-;;;1097:25:1;;;1085:2;1070:18;3817:365:0;951:177:1;1599:355:0;;;;;;:::i;:::-;;:::i;748:39::-;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;748:39:0;;;;;;;;;;;;;1358:25:1;;;1426:14;;1419:22;1414:2;1399:18;;1392:50;-1:-1:-1;;;;;1478:32:1;1473:2;1458:18;;1451:60;1542:2;1527:18;;1520:34;1345:3;1330:19;;1133:427;4373:144:0;;;:::i;3173:458::-;3249:10;3219:20;3242:18;;;:6;:18;;;;;3278:13;;3270:51;;;;-1:-1:-1;;;3270:51:0;;1949:2:1;3270:51:0;;;1931:21:1;1988:2;1968:18;;;1961:30;-1:-1:-1;;;2007:18:1;;;2000:50;2067:18;;3270:51:0;;;;;;;;;3340:12;;;;;;3339:13;3331:40;;;;-1:-1:-1;;;3331:40:0;;2298:2:1;3331:40:0;;;2280:21:1;2337:2;2317:18;;;2310:30;-1:-1:-1;;;2356:18:1;;;2349:44;2410:18;;3331:40:0;2096:338:1;3331:40:0;3396:4;3381:12;;;:19;;-1:-1:-1;;3381:19:0;;;;;;3410:11;;;;:22;;;3611:13;;3578:19;;3611:13;;3410:11;3424:8;;3578:19;;;;;;:::i;:::-;;;;;;;;;;;:29;;;:46;;;;;;;:::i;:::-;;;;-1:-1:-1;;;;3173:458:0:o;794:27::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;794:27:0;:::o;2078:907::-;2155:10;2125:20;2148:18;;;:6;:18;;;;;;;;2185:12;;;;;;2184:13;2176:44;;;;-1:-1:-1;;;2176:44:0;;3038:2:1;2176:44:0;;;3020:21:1;3077:2;3057:18;;;3050:30;-1:-1:-1;;;3096:18:1;;;3089:48;3154:18;;2176:44:0;2836:342:1;2176:44:0;-1:-1:-1;;;;;2238:16:0;;2244:10;2238:16;;2230:59;;;;-1:-1:-1;;;2230:59:0;;3385:2:1;2230:59:0;;;3367:21:1;3424:2;3404:18;;;3397:30;3463:32;3443:18;;;3436:60;3513:18;;2230:59:0;3183:354:1;2230:59:0;-1:-1:-1;;;;;2307:10:0;;;2338:1;2307:10;;;:6;:10;;;;;;;;:19;;;;;;:33;2300:223;;-1:-1:-1;;;;;2361:10:0;;;;;;;:6;:10;;;;;;;;:19;;;;;;;;;2472:10;2466:16;;;2458:54;;;;-1:-1:-1;;;2458:54:0;;3744:2:1;2458:54:0;;;3726:21:1;3783:2;3763:18;;;3756:30;3822:27;3802:18;;;3795:55;3867:18;;2458:54:0;3542:349:1;2458:54:0;2300:223;;;2547:4;2532:12;;;:19;;-1:-1:-1;;;;;;2561:20:0;2532:19;-1:-1:-1;;;;;2561:20:0;;;;;;;;;;;;;;-1:-1:-1;2617:10:0;;;;;;;;;;2641:15;;;;2532:19;2641:15;2637:342;;;2808:13;;2769:9;2779:14;;;;2769:25;;;;;;;;:::i;:::-;;;;;;;;;;;:35;;;:52;;;;;;;:::i;:::-;;;;-1:-1:-1;2637:342:0;;-1:-1:-1;2637:342:0;;2955:13;;2935:33;;:9;;2955:13;;2935:33;;2955:13;;2935:33;:::i;:::-;;;;-1:-1:-1;;2637:342:0;2115:870;;2078:907;:::o;3817:365::-;3877:21;;;3949:227;3970:9;:16;3966:20;;3949:227;;;4036:16;4011:9;4021:1;4011:12;;;;;;;;:::i;:::-;;;;;;;;;;;:22;;;:41;4007:159;;;4091:9;4101:1;4091:12;;;;;;;;:::i;:::-;;;;;;;;;;;:22;;;4072:41;;4150:1;4131:20;;4007:159;3988:3;;;;:::i;:::-;;;;3949:227;;;;3904:278;3817:365;:::o;1599:355::-;1691:11;;-1:-1:-1;;;;;1691:11:0;1677:10;:25;1656:112;;;;-1:-1:-1;;;1656:112:0;;4238:2:1;1656:112:0;;;4220:21:1;4277:2;4257:18;;;4250:30;4316:34;4296:18;;;4289:62;-1:-1:-1;;;4367:18:1;;;4360:38;4415:19;;1656:112:0;4036:404:1;1656:112:0;-1:-1:-1;;;;;1800:13:0;;;;;;:6;:13;;;;;;;;:19;;;;1799:20;1778:91;;;;-1:-1:-1;;;1778:91:0;;4647:2:1;1778:91:0;;;4629:21:1;4686:2;4666:18;;;4659:30;4725:26;4705:18;;;4698:54;4769:18;;1778:91:0;4445:348:1;1778:91:0;-1:-1:-1;;;;;1887:13:0;;;;;;:6;:13;;;;;:20;:25;1879:34;;;;;;-1:-1:-1;;;;;1923:13:0;;;;;1946:1;1923:13;;;;;;;;:24;1599:355::o;4373:144::-;4428:19;4477:9;4487:17;:15;:17::i;:::-;4477:28;;;;;;;;:::i;:::-;;;;;;;;;;;:33;;;4463:47;;4373:144;:::o;14:180:1:-;73:6;126:2;114:9;105:7;101:23;97:32;94:52;;;142:1;139;132:12;94:52;-1:-1:-1;165:23:1;;14:180;-1:-1:-1;14:180:1:o;660:286::-;719:6;772:2;760:9;751:7;747:23;743:32;740:52;;;788:1;785;778:12;740:52;814:23;;-1:-1:-1;;;;;866:31:1;;856:42;;846:70;;912:1;909;902:12;846:70;935:5;660:286;-1:-1:-1;;;660:286:1:o;2439:127::-;2500:10;2495:3;2491:20;2488:1;2481:31;2531:4;2528:1;2521:15;2555:4;2552:1;2545:15;2571:127;2632:10;2627:3;2623:20;2620:1;2613:31;2663:4;2660:1;2653:15;2687:4;2684:1;2677:15;2703:128;2743:3;2774:1;2770:6;2767:1;2764:13;2761:39;;;2780:18;;:::i;:::-;-1:-1:-1;2816:9:1;;2703:128::o;3896:135::-;3935:3;-1:-1:-1;;3956:17:1;;3953:43;;;3976:18;;:::i;:::-;-1:-1:-1;4023:1:1;4012:13;;3896:135::o"
},
"gasEstimates": {
"creation": {
"codeDepositCost": "382600",
"executionCost": "infinite",
"totalCost": "infinite"
},
"external": {
"chairperson()": "2382",
"delegate(address)": "infinite",
"giveRightToVote(address)": "29057",
"proposals(uint256)": "6743",
"vote(uint256)": "79501",
"voters(address)": "6895",
"winnerName()": "infinite",
"winningProposal()": "infinite"
}
},
"methodIdentifiers": {
"chairperson()": "2e4176cf",
"delegate(address)": "5c19a95c",
"giveRightToVote(address)": "9e7b8d61",
"proposals(uint256)": "013cf08b",
"vote(uint256)": "0121b93f",
"voters(address)": "a3ec138d",
"winnerName()": "e2ba53f0",
"winningProposal()": "609ff1bd"
}
},
"abi": [
{
"inputs": [
{
"internalType": "bytes32[]",
"name": "proposalNames",
"type": "bytes32[]"
}
],
"stateMutability": "nonpayable",
"type": "constructor"
},
{
"inputs": [],
"name": "chairperson",
"outputs": [
{
"internalType": "address",
"name": "",
"type": "address"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [
{
"internalType": "address",
"name": "to",
"type": "address"
}
],
"name": "delegate",
"outputs": [],
"stateMutability": "nonpayable",
"type": "function"
},
{
"inputs": [
{
"internalType": "address",
"name": "voter",
"type": "address"
}
],
"name": "giveRightToVote",
"outputs": [],
"stateMutability": "nonpayable",
"type": "function"
},
{
"inputs": [
{
"internalType": "uint256",
"name": "",
"type": "uint256"
}
],
"name": "proposals",
"outputs": [
{
"internalType": "bytes32",
"name": "name",
"type": "bytes32"
},
{
"internalType": "uint256",
"name": "voteCount",
"type": "uint256"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [
{
"internalType": "uint256",
"name": "proposal",
"type": "uint256"
}
],
"name": "vote",
"outputs": [],
"stateMutability": "nonpayable",
"type": "function"
},
{
"inputs": [
{
"internalType": "address",
"name": "",
"type": "address"
}
],
"name": "voters",
"outputs": [
{
"internalType": "uint256",
"name": "weight",
"type": "uint256"
},
{
"internalType": "bool",
"name": "voted",
"type": "bool"
},
{
"internalType": "address",
"name": "delegate",
"type": "address"
},
{
"internalType": "uint256",
"name": "vote",
"type": "uint256"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [],
"name": "winnerName",
"outputs": [
{
"internalType": "bytes32",
"name": "winnerName_",
"type": "bytes32"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [],
"name": "winningProposal",
"outputs": [
{
"internalType": "uint256",
"name": "winningProposal_",
"type": "uint256"
}
],
"stateMutability": "view",
"type": "function"
}
]
}
{
"compiler": {
"version": "0.8.9+commit.e5eed63a"
},
"language": "Solidity",
"output": {
"abi": [
{
"inputs": [
{
"internalType": "bytes32[]",
"name": "proposalNames",
"type": "bytes32[]"
}
],
"stateMutability": "nonpayable",
"type": "constructor"
},
{
"inputs": [],
"name": "chairperson",
"outputs": [
{
"internalType": "address",
"name": "",
"type": "address"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [
{
"internalType": "address",
"name": "to",
"type": "address"
}
],
"name": "delegate",
"outputs": [],
"stateMutability": "nonpayable",
"type": "function"
},
{
"inputs": [
{
"internalType": "address",
"name": "voter",
"type": "address"
}
],
"name": "giveRightToVote",
"outputs": [],
"stateMutability": "nonpayable",
"type": "function"
},
{
"inputs": [
{
"internalType": "uint256",
"name": "",
"type": "uint256"
}
],
"name": "proposals",
"outputs": [
{
"internalType": "bytes32",
"name": "name",
"type": "bytes32"
},
{
"internalType": "uint256",
"name": "voteCount",
"type": "uint256"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [
{
"internalType": "uint256",
"name": "proposal",
"type": "uint256"
}
],
"name": "vote",
"outputs": [],
"stateMutability": "nonpayable",
"type": "function"
},
{
"inputs": [
{
"internalType": "address",
"name": "",
"type": "address"
}
],
"name": "voters",
"outputs": [
{
"internalType": "uint256",
"name": "weight",
"type": "uint256"
},
{
"internalType": "bool",
"name": "voted",
"type": "bool"
},
{
"internalType": "address",
"name": "delegate",
"type": "address"
},
{
"internalType": "uint256",
"name": "vote",
"type": "uint256"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [],
"name": "winnerName",
"outputs": [
{
"internalType": "bytes32",
"name": "winnerName_",
"type": "bytes32"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [],
"name": "winningProposal",
"outputs": [
{
"internalType": "uint256",
"name": "winningProposal_",
"type": "uint256"
}
],
"stateMutability": "view",
"type": "function"
}
],
"devdoc": {
"details": "Implements voting process along with vote delegation",
"kind": "dev",
"methods": {
"constructor": {
"details": "Create a new ballot to choose one of 'proposalNames'.",
"params": {
"proposalNames": "names of proposals"
}
},
"delegate(address)": {
"details": "Delegate your vote to the voter 'to'.",
"params": {
"to": "address to which vote is delegated"
}
},
"giveRightToVote(address)": {
"details": "Give 'voter' the right to vote on this ballot. May only be called by 'chairperson'.",
"params": {
"voter": "address of voter"
}
},
"vote(uint256)": {
"details": "Give your vote (including votes delegated to you) to proposal 'proposals[proposal].name'.",
"params": {
"proposal": "index of proposal in the proposals array"
}
},
"winnerName()": {
"details": "Calls winningProposal() function to get the index of the winner contained in the proposals array and then",
"returns": {
"winnerName_": "the name of the winner"
}
},
"winningProposal()": {
"details": "Computes the winning proposal taking all previous votes into account.",
"returns": {
"winningProposal_": "index of winning proposal in the proposals array"
}
}
},
"title": "Ballot",
"version": 1
},
"userdoc": {
"kind": "user",
"methods": {},
"version": 1
}
},
"settings": {
"compilationTarget": {
"contracts/3_Ballot.sol": "Ballot"
},
"evmVersion": "london",
"libraries": {},
"metadata": {
"bytecodeHash": "ipfs"
},
"optimizer": {
"enabled": true,
"runs": 200
},
"remappings": []
},
"sources": {
"contracts/3_Ballot.sol": {
"keccak256": "0xdd897b48a563d1d32369fdb327187dfcd2660159cfcd3787196bb6be6a312c8d",
"license": "GPL-3.0",
"urls": [
"bzz-raw://551d7a6d3e2abc66a7b37fbd8b0e4c07b43c72c3b55958e66ac421348311fed4",
"dweb:/ipfs/Qmd4XV9j79GPfv5cgVsg62vKzaLuf6igx7VSW2BKaUyF3w"
]
}
},
"version": 1
}
{
"deploy": {
"VM:-": {
"linkReferences": {},
"autoDeployLib": true
},
"main:1": {
"linkReferences": {},
"autoDeployLib": true
},
"ropsten:3": {
"linkReferences": {},
"autoDeployLib": true
},
"rinkeby:4": {
"linkReferences": {},
"autoDeployLib": true
},
"kovan:42": {
"linkReferences": {},
"autoDeployLib": true
},
"görli:5": {
"linkReferences": {},
"autoDeployLib": true
},
"Custom": {
"linkReferences": {},
"autoDeployLib": true
}
},
"data": {
"bytecode": {
"functionDebugData": {
"@_5": {
"entryPoint": null,
"id": 5,
"parameterSlots": 0,
"returnSlots": 0
}
},
"generatedSources": [],
"linkReferences": {},
"object": "6080604052348015600f57600080fd5b50607680601d6000396000f3fe6080604052348015600f57600080fd5b506004361060285760003560e01c8063119df25f14602d575b600080fd5b6040805133815290519081900360200190f3fea26469706673582212203978eca217b9e88eedfa0a1071905661f87034eb4cc883ce813d278b5a6eeadc64736f6c63430008090033",
"opcodes": "PUSH1 0x80 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH1 0xF JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x76 DUP1 PUSH1 0x1D PUSH1 0x0 CODECOPY PUSH1 0x0 RETURN INVALID PUSH1 0x80 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH1 0xF JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x4 CALLDATASIZE LT PUSH1 0x28 JUMPI PUSH1 0x0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0x119DF25F EQ PUSH1 0x2D JUMPI JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x40 DUP1 MLOAD CALLER DUP2 MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 RETURN INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 CODECOPY PUSH25 0xECA217B9E88EEDFA0A1071905661F87034EB4CC883CE813D27 DUP12 GAS PUSH15 0xEADC64736F6C634300080900330000 ",
"sourceMap": "562:530:0:-:0;;;739:18;;;;;;;;;;562:530;;;;;;"
},
"deployedBytecode": {
"functionDebugData": {
"@_msgSender_14": {
"entryPoint": null,
"id": 14,
"parameterSlots": 0,
"returnSlots": 1
},
"abi_encode_tuple_t_address__to_t_address__fromStack_reversed": {
"entryPoint": null,
"id": null,
"parameterSlots": 2,
"returnSlots": 1
}
},
"generatedSources": [
{
"ast": {
"nodeType": "YulBlock",
"src": "0:219:1",
"statements": [
{
"nodeType": "YulBlock",
"src": "6:3:1",
"statements": []
},
{
"body": {
"nodeType": "YulBlock",
"src": "115:102:1",
"statements": [
{
"nodeType": "YulAssignment",
"src": "125:26:1",
"value": {
"arguments": [
{
"name": "headStart",
"nodeType": "YulIdentifier",
"src": "137:9:1"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "148:2:1",
"type": "",
"value": "32"
}
],
"functionName": {
"name": "add",
"nodeType": "YulIdentifier",
"src": "133:3:1"
},
"nodeType": "YulFunctionCall",
"src": "133:18:1"
},
"variableNames": [
{
"name": "tail",
"nodeType": "YulIdentifier",
"src": "125:4:1"
}
]
},
{
"expression": {
"arguments": [
{
"name": "headStart",
"nodeType": "YulIdentifier",
"src": "167:9:1"
},
{
"arguments": [
{
"name": "value0",
"nodeType": "YulIdentifier",
"src": "182:6:1"
},
{
"arguments": [
{
"arguments": [
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "198:3:1",
"type": "",
"value": "160"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "203:1:1",
"type": "",
"value": "1"
}
],
"functionName": {
"name": "shl",
"nodeType": "YulIdentifier",
"src": "194:3:1"
},
"nodeType": "YulFunctionCall",
"src": "194:11:1"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "207:1:1",
"type": "",
"value": "1"
}
],
"functionName": {
"name": "sub",
"nodeType": "YulIdentifier",
"src": "190:3:1"
},
"nodeType": "YulFunctionCall",
"src": "190:19:1"
}
],
"functionName": {
"name": "and",
"nodeType": "YulIdentifier",
"src": "178:3:1"
},
"nodeType": "YulFunctionCall",
"src": "178:32:1"
}
],
"functionName": {
"name": "mstore",
"nodeType": "YulIdentifier",
"src": "160:6:1"
},
"nodeType": "YulFunctionCall",
"src": "160:51:1"
},
"nodeType": "YulExpressionStatement",
"src": "160:51:1"
}
]
},
"name": "abi_encode_tuple_t_address__to_t_address__fromStack_reversed",
"nodeType": "YulFunctionDefinition",
"parameters": [
{
"name": "headStart",
"nodeType": "YulTypedName",
"src": "84:9:1",
"type": ""
},
{
"name": "value0",
"nodeType": "YulTypedName",
"src": "95:6:1",
"type": ""
}
],
"returnVariables": [
{
"name": "tail",
"nodeType": "YulTypedName",
"src": "106:4:1",
"type": ""
}
],
"src": "14:203:1"
}
]
},
"contents": "{\n { }\n function abi_encode_tuple_t_address__to_t_address__fromStack_reversed(headStart, value0) -> tail\n {\n tail := add(headStart, 32)\n mstore(headStart, and(value0, sub(shl(160, 1), 1)))\n }\n}",
"id": 1,
"language": "Yul",
"name": "#utility.yul"
}
],
"immutableReferences": {},
"linkReferences": {},
"object": "6080604052348015600f57600080fd5b506004361060285760003560e01c8063119df25f14602d575b600080fd5b6040805133815290519081900360200190f3fea26469706673582212203978eca217b9e88eedfa0a1071905661f87034eb4cc883ce813d278b5a6eeadc64736f6c63430008090033",
"opcodes": "PUSH1 0x80 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH1 0xF JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x4 CALLDATASIZE LT PUSH1 0x28 JUMPI PUSH1 0x0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0x119DF25F EQ PUSH1 0x2D JUMPI JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x40 DUP1 MLOAD CALLER DUP2 MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 RETURN INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 CODECOPY PUSH25 0xECA217B9E88EEDFA0A1071905661F87034EB4CC883CE813D27 DUP12 GAS PUSH15 0xEADC64736F6C634300080900330000 ",
"sourceMap": "562:530:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;816:86;;;;885:10;160:51:1;;816:86:0;;;;;;148:2:1;816:86:0;;"
},
"gasEstimates": {
"creation": {
"codeDepositCost": "23600",
"executionCost": "75",
"totalCost": "23675"
},
"external": {
"_msgSender()": "148"
},
"internal": {
"_msgData()": "infinite"
}
},
"methodIdentifiers": {
"_msgSender()": "119df25f"
}
},
"abi": [
{
"inputs": [],
"stateMutability": "nonpayable",
"type": "constructor"
},
{
"inputs": [],
"name": "_msgSender",
"outputs": [
{
"internalType": "address",
"name": "",
"type": "address"
}
],
"stateMutability": "view",
"type": "function"
}
]
}
{
"compiler": {
"version": "0.8.9+commit.e5eed63a"
},
"language": "Solidity",
"output": {
"abi": [
{
"inputs": [],
"stateMutability": "nonpayable",
"type": "constructor"
},
{
"inputs": [],
"name": "_msgSender",
"outputs": [
{
"internalType": "address",
"name": "",
"type": "address"
}
],
"stateMutability": "view",
"type": "function"
}
],
"devdoc": {
"kind": "dev",
"methods": {},
"version": 1
},
"userdoc": {
"kind": "user",
"methods": {},
"version": 1
}
},
"settings": {
"compilationTarget": {
"contracts/Context.sol": "Context"
},
"evmVersion": "london",
"libraries": {},
"metadata": {
"bytecodeHash": "ipfs"
},
"optimizer": {
"enabled": true,
"runs": 200
},
"remappings": []
},
"sources": {
"contracts/Context.sol": {
"keccak256": "0xc66537adf0c83f301b3dbc3613d250deee744c771e9a247f977cfd0bb5960ebe",
"license": "GPL-3.0",
"urls": [
"bzz-raw://80dac3ba0eeed99e95b346fed84dc43295237f4c22e700b4d976bbe4557bdfc8",
"dweb:/ipfs/QmZXZ9LjCY8p3NiEpUkDjq4UXSCjNGodoWeZd5tDxdfMYq"
]
}
},
"version": 1
}
{
"deploy": {
"VM:-": {
"linkReferences": {},
"autoDeployLib": true
},
"main:1": {
"linkReferences": {},
"autoDeployLib": true
},
"ropsten:3": {
"linkReferences": {},
"autoDeployLib": true
},
"rinkeby:4": {
"linkReferences": {},
"autoDeployLib": true
},
"kovan:42": {
"linkReferences": {},
"autoDeployLib": true
},
"görli:5": {
"linkReferences": {},
"autoDeployLib": true
},
"Custom": {
"linkReferences": {},
"autoDeployLib": true
}
},
"data": {
"bytecode": {
"functionDebugData": {},
"generatedSources": [],
"linkReferences": {},
"object": "",
"opcodes": "",
"sourceMap": ""
},
"deployedBytecode": {
"functionDebugData": {},
"generatedSources": [],
"immutableReferences": {},
"linkReferences": {},
"object": "",
"opcodes": "",
"sourceMap": ""
},
"gasEstimates": null,
"methodIdentifiers": {
"allowance(address,address)": "dd62ed3e",
"approve(address,uint256)": "095ea7b3",
"balanceOf(address)": "70a08231",
"totalSupply()": "18160ddd",
"transfer(address,uint256)": "a9059cbb",
"transferFrom(address,address,uint256)": "23b872dd"
}
},
"abi": [
{
"anonymous": false,
"inputs": [
{
"indexed": true,
"internalType": "address",
"name": "owner",
"type": "address"
},
{
"indexed": true,
"internalType": "address",
"name": "spender",
"type": "address"
},
{
"indexed": false,
"internalType": "uint256",
"name": "value",
"type": "uint256"
}
],
"name": "Approval",
"type": "event"
},
{
"anonymous": false,
"inputs": [
{
"indexed": true,
"internalType": "address",
"name": "from",
"type": "address"
},
{
"indexed": true,
"internalType": "address",
"name": "to",
"type": "address"
},
{
"indexed": false,
"internalType": "uint256",
"name": "value",
"type": "uint256"
}
],
"name": "Transfer",
"type": "event"
},
{
"inputs": [
{
"internalType": "address",
"name": "owner",
"type": "address"
},
{
"internalType": "address",
"name": "spender",
"type": "address"
}
],
"name": "allowance",
"outputs": [
{
"internalType": "uint256",
"name": "",
"type": "uint256"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [
{
"internalType": "address",
"name": "spender",
"type": "address"
},
{
"internalType": "uint256",
"name": "amount",
"type": "uint256"
}
],
"name": "approve",
"outputs": [
{
"internalType": "bool",
"name": "",
"type": "bool"
}
],
"stateMutability": "nonpayable",
"type": "function"
},
{
"inputs": [
{
"internalType": "address",
"name": "account",
"type": "address"
}
],
"name": "balanceOf",
"outputs": [
{
"internalType": "uint256",
"name": "",
"type": "uint256"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [],
"name": "totalSupply",
"outputs": [
{
"internalType": "uint256",
"name": "",
"type": "uint256"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [
{
"internalType": "address",
"name": "recipient",
"type": "address"
},
{
"internalType": "uint256",
"name": "amount",
"type": "uint256"
}
],
"name": "transfer",
"outputs": [
{
"internalType": "bool",
"name": "",
"type": "bool"
}
],
"stateMutability": "nonpayable",
"type": "function"
},
{
"inputs": [
{
"internalType": "address",
"name": "sender",
"type": "address"
},
{
"internalType": "address",
"name": "recipient",
"type": "address"
},
{
"internalType": "uint256",
"name": "amount",
"type": "uint256"
}
],
"name": "transferFrom",
"outputs": [
{
"internalType": "bool",
"name": "",
"type": "bool"
}
],
"stateMutability": "nonpayable",
"type": "function"
}
]
}
{
"compiler": {
"version": "0.8.9+commit.e5eed63a"
},
"language": "Solidity",
"output": {
"abi": [
{
"anonymous": false,
"inputs": [
{
"indexed": true,
"internalType": "address",
"name": "owner",
"type": "address"
},
{
"indexed": true,
"internalType": "address",
"name": "spender",
"type": "address"
},
{
"indexed": false,
"internalType": "uint256",
"name": "value",
"type": "uint256"
}
],
"name": "Approval",
"type": "event"
},
{
"anonymous": false,
"inputs": [
{
"indexed": true,
"internalType": "address",
"name": "from",
"type": "address"
},
{
"indexed": true,
"internalType": "address",
"name": "to",
"type": "address"
},
{
"indexed": false,
"internalType": "uint256",
"name": "value",
"type": "uint256"
}
],
"name": "Transfer",
"type": "event"
},
{
"inputs": [
{
"internalType": "address",
"name": "owner",
"type": "address"
},
{
"internalType": "address",
"name": "spender",
"type": "address"
}
],
"name": "allowance",
"outputs": [
{
"internalType": "uint256",
"name": "",
"type": "uint256"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [
{
"internalType": "address",
"name": "spender",
"type": "address"
},
{
"internalType": "uint256",
"name": "amount",
"type": "uint256"
}
],
"name": "approve",
"outputs": [
{
"internalType": "bool",
"name": "",
"type": "bool"
}
],
"stateMutability": "nonpayable",
"type": "function"
},
{
"inputs": [
{
"internalType": "address",
"name": "account",
"type": "address"
}
],
"name": "balanceOf",
"outputs": [
{
"internalType": "uint256",
"name": "",
"type": "uint256"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [],
"name": "totalSupply",
"outputs": [
{
"internalType": "uint256",
"name": "",
"type": "uint256"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [
{
"internalType": "address",
"name": "recipient",
"type": "address"
},
{
"internalType": "uint256",
"name": "amount",
"type": "uint256"
}
],
"name": "transfer",
"outputs": [
{
"internalType": "bool",
"name": "",
"type": "bool"
}
],
"stateMutability": "nonpayable",
"type": "function"
},
{
"inputs": [
{
"internalType": "address",
"name": "sender",
"type": "address"
},
{
"internalType": "address",
"name": "recipient",
"type": "address"
},
{
"internalType": "uint256",
"name": "amount",
"type": "uint256"
}
],
"name": "transferFrom",
"outputs": [
{
"internalType": "bool",
"name": "",
"type": "bool"
}
],
"stateMutability": "nonpayable",
"type": "function"
}
],
"devdoc": {
"details": "Interface of the ERC20 standard as defined in the EIP. Does not include the optional functions; to access them see {ERC20Detailed}.",
"events": {
"Approval(address,address,uint256)": {
"details": "Emitted when the allowance of a `spender` for an `owner` is set by a call to {approve}. `value` is the new allowance."
},
"Transfer(address,address,uint256)": {
"details": "Emitted when `value` tokens are moved from one account (`from`) to another (`to`). Note that `value` may be zero."
}
},
"kind": "dev",
"methods": {
"allowance(address,address)": {
"details": "Returns the remaining number of tokens that `spender` will be allowed to spend on behalf of `owner` through {transferFrom}. This is zero by default. This value changes when {approve} or {transferFrom} are called."
},
"approve(address,uint256)": {
"details": "Sets `amount` as the allowance of `spender` over the caller's tokens. Returns a boolean value indicating whether the operation succeeded. IMPORTANT: Beware that changing an allowance with this method brings the risk that someone may use both the old and the new allowance by unfortunate transaction ordering. One possible solution to mitigate this race condition is to first reduce the spender's allowance to 0 and set the desired value afterwards: https://github.com/ethereum/EIPs/issues/20#issuecomment-263524729 Emits an {Approval} event."
},
"balanceOf(address)": {
"details": "Returns the amount of tokens owned by `account`."
},
"totalSupply()": {
"details": "Returns the amount of tokens in existence."
},
"transfer(address,uint256)": {
"details": "Moves `amount` tokens from the caller's account to `recipient`. Returns a boolean value indicating whether the operation succeeded. Emits a {Transfer} event."
},
"transferFrom(address,address,uint256)": {
"details": "Moves `amount` tokens from `sender` to `recipient` using the allowance mechanism. `amount` is then deducted from the caller's allowance. Returns a boolean value indicating whether the operation succeeded. Emits a {Transfer} event."
}
},
"version": 1
},
"userdoc": {
"kind": "user",
"methods": {},
"version": 1
}
},
"settings": {
"compilationTarget": {
"contracts/IERC20.sol": "IERC20"
},
"evmVersion": "london",
"libraries": {},
"metadata": {
"bytecodeHash": "ipfs"
},
"optimizer": {
"enabled": true,
"runs": 200
},
"remappings": []
},
"sources": {
"contracts/IERC20.sol": {
"keccak256": "0x5c58a19550aca44abbccbc14e5f05de6606384b852c6feda06b8b3b9314bd2de",
"license": "GPL-3.0",
"urls": [
"bzz-raw://aa1dcab640db95a0a66b86023b585c0cd6d5e434562c8bc8eb76b3b72fda02a9",
"dweb:/ipfs/QmQQ5BdXBUTQ1N4CTpgS2K8FaRgwhQonWxkdgPeac4sine"
]
}
},
"version": 1
}
{
"deploy": {
"VM:-": {
"linkReferences": {},
"autoDeployLib": true
},
"main:1": {
"linkReferences": {},
"autoDeployLib": true
},
"ropsten:3": {
"linkReferences": {},
"autoDeployLib": true
},
"rinkeby:4": {
"linkReferences": {},
"autoDeployLib": true
},
"kovan:42": {
"linkReferences": {},
"autoDeployLib": true
},
"görli:5": {
"linkReferences": {},
"autoDeployLib": true
},
"Custom": {
"linkReferences": {},
"autoDeployLib": true
}
},
"data": {
"bytecode": {
"linkReferences": {},
"object": "608060405234801561001057600080fd5b50600080546001600160a01b031916331790556101b3806100326000396000f3fe608060405234801561001057600080fd5b506004361061004c5760003560e01c80630900f01014610051578063445df0ac146100795780638da5cb5b14610093578063fdacd576146100b7575b600080fd5b6100776004803603602081101561006757600080fd5b50356001600160a01b03166100d4565b005b610081610151565b60408051918252519081900360200190f35b61009b610157565b604080516001600160a01b039092168252519081900360200190f35b610077600480360360208110156100cd57600080fd5b5035610166565b6000546001600160a01b031633141561014e576000819050806001600160a01b031663fdacd5766001546040518263ffffffff1660e01b815260040180828152602001915050600060405180830381600087803b15801561013457600080fd5b505af1158015610148573d6000803e3d6000fd5b50505050505b50565b60015481565b6000546001600160a01b031681565b6000546001600160a01b031633141561014e5760015556fea265627a7a7231582037e9ab14e1e5709c9eceaeef5e863d2d0e2f46845da5160add30eafcaa9af2e764736f6c63430005110032",
"opcodes": "PUSH1 0x80 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH2 0x10 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x0 DUP1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB NOT AND CALLER OR SWAP1 SSTORE PUSH2 0x1B3 DUP1 PUSH2 0x32 PUSH1 0x0 CODECOPY PUSH1 0x0 RETURN INVALID PUSH1 0x80 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH2 0x10 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x4 CALLDATASIZE LT PUSH2 0x4C JUMPI PUSH1 0x0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0x900F010 EQ PUSH2 0x51 JUMPI DUP1 PUSH4 0x445DF0AC EQ PUSH2 0x79 JUMPI DUP1 PUSH4 0x8DA5CB5B EQ PUSH2 0x93 JUMPI DUP1 PUSH4 0xFDACD576 EQ PUSH2 0xB7 JUMPI JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x77 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x67 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0xD4 JUMP JUMPDEST STOP JUMPDEST PUSH2 0x81 PUSH2 0x151 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD SWAP2 DUP3 MSTORE MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 RETURN JUMPDEST PUSH2 0x9B PUSH2 0x157 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 SWAP3 AND DUP3 MSTORE MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 RETURN JUMPDEST PUSH2 0x77 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0xCD JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH2 0x166 JUMP JUMPDEST PUSH1 0x0 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND CALLER EQ ISZERO PUSH2 0x14E JUMPI PUSH1 0x0 DUP2 SWAP1 POP DUP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH4 0xFDACD576 PUSH1 0x1 SLOAD PUSH1 0x40 MLOAD DUP3 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP3 DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP POP PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x134 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x148 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP POP JUMPDEST POP JUMP JUMPDEST PUSH1 0x1 SLOAD DUP2 JUMP JUMPDEST PUSH1 0x0 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 JUMP JUMPDEST PUSH1 0x0 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND CALLER EQ ISZERO PUSH2 0x14E JUMPI PUSH1 0x1 SSTORE JUMP INVALID LOG2 PUSH6 0x627A7A723158 KECCAK256 CALLDATACOPY 0xE9 0xAB EQ 0xE1 0xE5 PUSH17 0x9C9ECEAEEF5E863D2D0E2F46845DA5160A 0xDD ADDRESS 0xEA 0xFC 0xAA SWAP11 CALLCODE 0xE7 PUSH5 0x736F6C6343 STOP SDIV GT STOP ORIGIN ",
"sourceMap": "34:480:0:-;;;123:50;8:9:-1;5:2;;;30:1;27;20:12;5:2;-1:-1;150:5:0;:18;;-1:-1:-1;;;;;;150:18:0;158:10;150:18;;;34:480;;;;;;"
},
"deployedBytecode": {
"linkReferences": {},
"object": "608060405234801561001057600080fd5b506004361061004c5760003560e01c80630900f01014610051578063445df0ac146100795780638da5cb5b14610093578063fdacd576146100b7575b600080fd5b6100776004803603602081101561006757600080fd5b50356001600160a01b03166100d4565b005b610081610151565b60408051918252519081900360200190f35b61009b610157565b604080516001600160a01b039092168252519081900360200190f35b610077600480360360208110156100cd57600080fd5b5035610166565b6000546001600160a01b031633141561014e576000819050806001600160a01b031663fdacd5766001546040518263ffffffff1660e01b815260040180828152602001915050600060405180830381600087803b15801561013457600080fd5b505af1158015610148573d6000803e3d6000fd5b50505050505b50565b60015481565b6000546001600160a01b031681565b6000546001600160a01b031633141561014e5760015556fea265627a7a7231582037e9ab14e1e5709c9eceaeef5e863d2d0e2f46845da5160add30eafcaa9af2e764736f6c63430005110032",
"opcodes": "PUSH1 0x80 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH2 0x10 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x4 CALLDATASIZE LT PUSH2 0x4C JUMPI PUSH1 0x0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0x900F010 EQ PUSH2 0x51 JUMPI DUP1 PUSH4 0x445DF0AC EQ PUSH2 0x79 JUMPI DUP1 PUSH4 0x8DA5CB5B EQ PUSH2 0x93 JUMPI DUP1 PUSH4 0xFDACD576 EQ PUSH2 0xB7 JUMPI JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x77 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x67 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0xD4 JUMP JUMPDEST STOP JUMPDEST PUSH2 0x81 PUSH2 0x151 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD SWAP2 DUP3 MSTORE MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 RETURN JUMPDEST PUSH2 0x9B PUSH2 0x157 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 SWAP3 AND DUP3 MSTORE MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 RETURN JUMPDEST PUSH2 0x77 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0xCD JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH2 0x166 JUMP JUMPDEST PUSH1 0x0 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND CALLER EQ ISZERO PUSH2 0x14E JUMPI PUSH1 0x0 DUP2 SWAP1 POP DUP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH4 0xFDACD576 PUSH1 0x1 SLOAD PUSH1 0x40 MLOAD DUP3 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP3 DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP POP PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x134 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x148 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP POP JUMPDEST POP JUMP JUMPDEST PUSH1 0x1 SLOAD DUP2 JUMP JUMPDEST PUSH1 0x0 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 JUMP JUMPDEST PUSH1 0x0 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND CALLER EQ ISZERO PUSH2 0x14E JUMPI PUSH1 0x1 SSTORE JUMP INVALID LOG2 PUSH6 0x627A7A723158 KECCAK256 CALLDATACOPY 0xE9 0xAB EQ 0xE1 0xE5 PUSH17 0x9C9ECEAEEF5E863D2D0E2F46845DA5160A 0xDD ADDRESS 0xEA 0xFC 0xAA SWAP11 CALLCODE 0xE7 PUSH5 0x736F6C6343 STOP SDIV GT STOP ORIGIN ",
"sourceMap": "34:480:0:-;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;34:480:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;347:165;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;347:165:0;-1:-1:-1;;;;;347:165:0;;:::i;:::-;;82:36;;;:::i;:::-;;;;;;;;;;;;;;;;58:20;;;:::i;:::-;;;;-1:-1:-1;;;;;58:20:0;;;;;;;;;;;;;;240:103;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;240:103:0;;:::i;347:165::-;223:5;;-1:-1:-1;;;;;223:5:0;209:10;:19;205:26;;;409:19;442:11;409:45;;460:8;-1:-1:-1;;;;;460:21:0;;482:24;;460:47;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;460:47:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;460:47:0;;;;230:1;205:26;347:165;:::o;82:36::-;;;;:::o;58:20::-;;;-1:-1:-1;;;;;58:20:0;;:::o;240:103::-;223:5;;-1:-1:-1;;;;;223:5:0;209:10;:19;205:26;;;302:24;:36;240:103::o"
},
"gasEstimates": {
"creation": {
"codeDepositCost": "87000",
"executionCost": "20970",
"totalCost": "107970"
},
"external": {
"last_completed_migration()": "998",
"owner()": "1059",
"setCompleted(uint256)": "21075",
"upgrade(address)": "infinite"
}
},
"methodIdentifiers": {
"last_completed_migration()": "445df0ac",
"owner()": "8da5cb5b",
"setCompleted(uint256)": "fdacd576",
"upgrade(address)": "0900f010"
}
},
"abi": [
{
"inputs": [],
"payable": false,
"stateMutability": "nonpayable",
"type": "constructor"
},
{
"constant": true,
"inputs": [],
"name": "last_completed_migration",
"outputs": [
{
"internalType": "uint256",
"name": "",
"type": "uint256"
}
],
"payable": false,
"stateMutability": "view",
"type": "function"
},
{
"constant": true,
"inputs": [],
"name": "owner",
"outputs": [
{
"internalType": "address",
"name": "",
"type": "address"
}
],
"payable": false,
"stateMutability": "view",
"type": "function"
},
{
"constant": false,
"inputs": [
{
"internalType": "uint256",
"name": "completed",
"type": "uint256"
}
],
"name": "setCompleted",
"outputs": [],
"payable": false,
"stateMutability": "nonpayable",
"type": "function"
},
{
"constant": false,
"inputs": [
{
"internalType": "address",
"name": "new_address",
"type": "address"
}
],
"name": "upgrade",
"outputs": [],
"payable": false,
"stateMutability": "nonpayable",
"type": "function"
}
]
}
{
"compiler": {
"version": "0.5.17+commit.d19bba13"
},
"language": "Solidity",
"output": {
"abi": [
{
"inputs": [],
"payable": false,
"stateMutability": "nonpayable",
"type": "constructor"
},
{
"constant": true,
"inputs": [],
"name": "last_completed_migration",
"outputs": [
{
"internalType": "uint256",
"name": "",
"type": "uint256"
}
],
"payable": false,
"stateMutability": "view",
"type": "function"
},
{
"constant": true,
"inputs": [],
"name": "owner",
"outputs": [
{
"internalType": "address",
"name": "",
"type": "address"
}
],
"payable": false,
"stateMutability": "view",
"type": "function"
},
{
"constant": false,
"inputs": [
{
"internalType": "uint256",
"name": "completed",
"type": "uint256"
}
],
"name": "setCompleted",
"outputs": [],
"payable": false,
"stateMutability": "nonpayable",
"type": "function"
},
{
"constant": false,
"inputs": [
{
"internalType": "address",
"name": "new_address",
"type": "address"
}
],
"name": "upgrade",
"outputs": [],
"payable": false,
"stateMutability": "nonpayable",
"type": "function"
}
],
"devdoc": {
"methods": {}
},
"userdoc": {
"methods": {}
}
},
"settings": {
"compilationTarget": {
"contracts/Migrations.sol": "Migrations"
},
"evmVersion": "istanbul",
"libraries": {},
"optimizer": {
"enabled": true,
"runs": 200
},
"remappings": []
},
"sources": {
"contracts/Migrations.sol": {
"keccak256": "0xa5885b09b08e315fcbb0cae014a812383dacc449cb4667611eaafd070a28b779",
"urls": [
"bzz-raw://96d986f1463e2df64ad796500ec2cdb3ee0e0e3c7025b5f537a532b3b47a982c",
"dweb:/ipfs/QmVWAx7Tdk9UPVsqjpYZnrsChss91cK3YadnLWoMgZhxMu"
]
}
},
"version": 1
}
{
"deploy": {
"VM:-": {
"linkReferences": {},
"autoDeployLib": true
},
"main:1": {
"linkReferences": {},
"autoDeployLib": true
},
"ropsten:3": {
"linkReferences": {},
"autoDeployLib": true
},
"rinkeby:4": {
"linkReferences": {},
"autoDeployLib": true
},
"kovan:42": {
"linkReferences": {},
"autoDeployLib": true
},
"görli:5": {
"linkReferences": {},
"autoDeployLib": true
},
"Custom": {
"linkReferences": {},
"autoDeployLib": true
}
},
"data": {
"bytecode": {
"functionDebugData": {
"@_5": {
"entryPoint": null,
"id": 5,
"parameterSlots": 0,
"returnSlots": 0
},
"@_66": {
"entryPoint": null,
"id": 66,
"parameterSlots": 1,
"returnSlots": 0
},
"@_msgSender_14": {
"entryPoint": null,
"id": 14,
"parameterSlots": 0,
"returnSlots": 1
},
"abi_decode_tuple_t_address_fromMemory": {
"entryPoint": 151,
"id": null,
"parameterSlots": 2,
"returnSlots": 1
}
},
"generatedSources": [
{
"ast": {
"nodeType": "YulBlock",
"src": "0:306:2",
"statements": [
{
"nodeType": "YulBlock",
"src": "6:3:2",
"statements": []
},
{
"body": {
"nodeType": "YulBlock",
"src": "95:209:2",
"statements": [
{
"body": {
"nodeType": "YulBlock",
"src": "141:16:2",
"statements": [
{
"expression": {
"arguments": [
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "150:1:2",
"type": "",
"value": "0"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "153:1:2",
"type": "",
"value": "0"
}
],
"functionName": {
"name": "revert",
"nodeType": "YulIdentifier",
"src": "143:6:2"
},
"nodeType": "YulFunctionCall",
"src": "143:12:2"
},
"nodeType": "YulExpressionStatement",
"src": "143:12:2"
}
]
},
"condition": {
"arguments": [
{
"arguments": [
{
"name": "dataEnd",
"nodeType": "YulIdentifier",
"src": "116:7:2"
},
{
"name": "headStart",
"nodeType": "YulIdentifier",
"src": "125:9:2"
}
],
"functionName": {
"name": "sub",
"nodeType": "YulIdentifier",
"src": "112:3:2"
},
"nodeType": "YulFunctionCall",
"src": "112:23:2"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "137:2:2",
"type": "",
"value": "32"
}
],
"functionName": {
"name": "slt",
"nodeType": "YulIdentifier",
"src": "108:3:2"
},
"nodeType": "YulFunctionCall",
"src": "108:32:2"
},
"nodeType": "YulIf",
"src": "105:52:2"
},
{
"nodeType": "YulVariableDeclaration",
"src": "166:29:2",
"value": {
"arguments": [
{
"name": "headStart",
"nodeType": "YulIdentifier",
"src": "185:9:2"
}
],
"functionName": {
"name": "mload",
"nodeType": "YulIdentifier",
"src": "179:5:2"
},
"nodeType": "YulFunctionCall",
"src": "179:16:2"
},
"variables": [
{
"name": "value",
"nodeType": "YulTypedName",
"src": "170:5:2",
"type": ""
}
]
},
{
"body": {
"nodeType": "YulBlock",
"src": "258:16:2",
"statements": [
{
"expression": {
"arguments": [
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "267:1:2",
"type": "",
"value": "0"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "270:1:2",
"type": "",
"value": "0"
}
],
"functionName": {
"name": "revert",
"nodeType": "YulIdentifier",
"src": "260:6:2"
},
"nodeType": "YulFunctionCall",
"src": "260:12:2"
},
"nodeType": "YulExpressionStatement",
"src": "260:12:2"
}
]
},
"condition": {
"arguments": [
{
"arguments": [
{
"name": "value",
"nodeType": "YulIdentifier",
"src": "217:5:2"
},
{
"arguments": [
{
"name": "value",
"nodeType": "YulIdentifier",
"src": "228:5:2"
},
{
"arguments": [
{
"arguments": [
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "243:3:2",
"type": "",
"value": "160"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "248:1:2",
"type": "",
"value": "1"
}
],
"functionName": {
"name": "shl",
"nodeType": "YulIdentifier",
"src": "239:3:2"
},
"nodeType": "YulFunctionCall",
"src": "239:11:2"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "252:1:2",
"type": "",
"value": "1"
}
],
"functionName": {
"name": "sub",
"nodeType": "YulIdentifier",
"src": "235:3:2"
},
"nodeType": "YulFunctionCall",
"src": "235:19:2"
}
],
"functionName": {
"name": "and",
"nodeType": "YulIdentifier",
"src": "224:3:2"
},
"nodeType": "YulFunctionCall",
"src": "224:31:2"
}
],
"functionName": {
"name": "eq",
"nodeType": "YulIdentifier",
"src": "214:2:2"
},
"nodeType": "YulFunctionCall",
"src": "214:42:2"
}
],
"functionName": {
"name": "iszero",
"nodeType": "YulIdentifier",
"src": "207:6:2"
},
"nodeType": "YulFunctionCall",
"src": "207:50:2"
},
"nodeType": "YulIf",
"src": "204:70:2"
},
{
"nodeType": "YulAssignment",
"src": "283:15:2",
"value": {
"name": "value",
"nodeType": "YulIdentifier",
"src": "293:5:2"
},
"variableNames": [
{
"name": "value0",
"nodeType": "YulIdentifier",
"src": "283:6:2"
}
]
}
]
},
"name": "abi_decode_tuple_t_address_fromMemory",
"nodeType": "YulFunctionDefinition",
"parameters": [
{
"name": "headStart",
"nodeType": "YulTypedName",
"src": "61:9:2",
"type": ""
},
{
"name": "dataEnd",
"nodeType": "YulTypedName",
"src": "72:7:2",
"type": ""
}
],
"returnVariables": [
{
"name": "value0",
"nodeType": "YulTypedName",
"src": "84:6:2",
"type": ""
}
],
"src": "14:290:2"
}
]
},
"contents": "{\n { }\n function abi_decode_tuple_t_address_fromMemory(headStart, dataEnd) -> value0\n {\n if slt(sub(dataEnd, headStart), 32) { revert(0, 0) }\n let value := mload(headStart)\n if iszero(eq(value, and(value, sub(shl(160, 1), 1)))) { revert(0, 0) }\n value0 := value\n }\n}",
"id": 2,
"language": "Yul",
"name": "#utility.yul"
}
],
"linkReferences": {},
"object": "608060405234801561001057600080fd5b5060405161057838038061057883398101604081905261002f91610097565b600080546001600160a81b0319166001600160a01b0383161790556100513390565b6001600160a01b031660006001600160a01b03167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a3506100c7565b6000602082840312156100a957600080fd5b81516001600160a01b03811681146100c057600080fd5b9392505050565b6104a2806100d66000396000f3fe608060405234801561001057600080fd5b50600436106100885760003560e01c80638456cb591161005b5780638456cb59146100dc5780638da5cb5b146100e45780638f32d59b146100f5578063f2fde38b1461010857600080fd5b8063119df25f1461008d5780633f4ba83a146100ac5780635c975abb146100b6578063715018a6146100d4575b600080fd5b335b6040516001600160a01b0390911681526020015b60405180910390f35b6100b461011b565b005b600054600160a01b900460ff165b60405190151581526020016100a3565b6100b46101eb565b6100b461025f565b6000546001600160a01b031661008f565b6000546001600160a01b031633146100c4565b6100b4610116366004610407565b610311565b6000546001600160a01b0316331461014e5760405162461bcd60e51b815260040161014590610437565b60405180910390fd5b600054600160a01b900460ff1661019e5760405162461bcd60e51b815260206004820152601460248201527314185d5cd8589b194e881b9bdd081c185d5cd95960621b6044820152606401610145565b6000805460ff60a01b191690557f5db9ee0a495bf2e6ff9c91a7834c1ba4fdd244a5e8aa4e537bd38aeae4b073aa335b6040516001600160a01b03909116815260200160405180910390a1565b6000546001600160a01b031633146102155760405162461bcd60e51b815260040161014590610437565b600080546040516001600160a01b03909116907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908390a3600080546001600160a01b0319169055565b6000546001600160a01b031633146102895760405162461bcd60e51b815260040161014590610437565b600054600160a01b900460ff16156102d65760405162461bcd60e51b815260206004820152601060248201526f14185d5cd8589b194e881c185d5cd95960821b6044820152606401610145565b6000805460ff60a01b1916600160a01b1790557f62e78cea01bee320cd4e420270b5ea74000d11b0c9f74754ebdbfc544b05a2586101ce3390565b6000546001600160a01b0316331461033b5760405162461bcd60e51b815260040161014590610437565b61034481610347565b50565b6001600160a01b0381166103ac5760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b6064820152608401610145565b600080546040516001600160a01b03808516939216917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e091a3600080546001600160a01b0319166001600160a01b0392909216919091179055565b60006020828403121561041957600080fd5b81356001600160a01b038116811461043057600080fd5b9392505050565b6020808252818101527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657260408201526060019056fea2646970667358221220c7804bd4919204ffaae977ddce129276b51acc645e59b4ec13565c0c79ae96c264736f6c63430008080033",
"opcodes": "PUSH1 0x80 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH2 0x10 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x40 MLOAD PUSH2 0x578 CODESIZE SUB DUP1 PUSH2 0x578 DUP4 CODECOPY DUP2 ADD PUSH1 0x40 DUP2 SWAP1 MSTORE PUSH2 0x2F SWAP2 PUSH2 0x97 JUMP JUMPDEST PUSH1 0x0 DUP1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA8 SHL SUB NOT AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP4 AND OR SWAP1 SSTORE PUSH2 0x51 CALLER SWAP1 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH1 0x0 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH32 0x8BE0079C531659141344CD1FD0A4F28419497F9722A3DAAFE3B4186F6B6457E0 PUSH1 0x40 MLOAD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG3 POP PUSH2 0xC7 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0xA9 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND DUP2 EQ PUSH2 0xC0 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH2 0x4A2 DUP1 PUSH2 0xD6 PUSH1 0x0 CODECOPY PUSH1 0x0 RETURN INVALID PUSH1 0x80 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH2 0x10 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x4 CALLDATASIZE LT PUSH2 0x88 JUMPI PUSH1 0x0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0x8456CB59 GT PUSH2 0x5B JUMPI DUP1 PUSH4 0x8456CB59 EQ PUSH2 0xDC JUMPI DUP1 PUSH4 0x8DA5CB5B EQ PUSH2 0xE4 JUMPI DUP1 PUSH4 0x8F32D59B EQ PUSH2 0xF5 JUMPI DUP1 PUSH4 0xF2FDE38B EQ PUSH2 0x108 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 PUSH4 0x119DF25F EQ PUSH2 0x8D JUMPI DUP1 PUSH4 0x3F4BA83A EQ PUSH2 0xAC JUMPI DUP1 PUSH4 0x5C975ABB EQ PUSH2 0xB6 JUMPI DUP1 PUSH4 0x715018A6 EQ PUSH2 0xD4 JUMPI JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST CALLER JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 SWAP2 AND DUP2 MSTORE PUSH1 0x20 ADD JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0xB4 PUSH2 0x11B JUMP JUMPDEST STOP JUMPDEST PUSH1 0x0 SLOAD PUSH1 0x1 PUSH1 0xA0 SHL SWAP1 DIV PUSH1 0xFF AND JUMPDEST PUSH1 0x40 MLOAD SWAP1 ISZERO ISZERO DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0xA3 JUMP JUMPDEST PUSH2 0xB4 PUSH2 0x1EB JUMP JUMPDEST PUSH2 0xB4 PUSH2 0x25F JUMP JUMPDEST PUSH1 0x0 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0x8F JUMP JUMPDEST PUSH1 0x0 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND CALLER EQ PUSH2 0xC4 JUMP JUMPDEST PUSH2 0xB4 PUSH2 0x116 CALLDATASIZE PUSH1 0x4 PUSH2 0x407 JUMP JUMPDEST PUSH2 0x311 JUMP JUMPDEST PUSH1 0x0 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND CALLER EQ PUSH2 0x14E JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x145 SWAP1 PUSH2 0x437 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x0 SLOAD PUSH1 0x1 PUSH1 0xA0 SHL SWAP1 DIV PUSH1 0xFF AND PUSH2 0x19E JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x14 PUSH1 0x24 DUP3 ADD MSTORE PUSH20 0x14185D5CD8589B194E881B9BDD081C185D5CD959 PUSH1 0x62 SHL PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 ADD PUSH2 0x145 JUMP JUMPDEST PUSH1 0x0 DUP1 SLOAD PUSH1 0xFF PUSH1 0xA0 SHL NOT AND SWAP1 SSTORE PUSH32 0x5DB9EE0A495BF2E6FF9C91A7834C1BA4FDD244A5E8AA4E537BD38AEAE4B073AA CALLER JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 SWAP2 AND DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG1 JUMP JUMPDEST PUSH1 0x0 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND CALLER EQ PUSH2 0x215 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x145 SWAP1 PUSH2 0x437 JUMP JUMPDEST PUSH1 0x0 DUP1 SLOAD PUSH1 0x40 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 SWAP2 AND SWAP1 PUSH32 0x8BE0079C531659141344CD1FD0A4F28419497F9722A3DAAFE3B4186F6B6457E0 SWAP1 DUP4 SWAP1 LOG3 PUSH1 0x0 DUP1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB NOT AND SWAP1 SSTORE JUMP JUMPDEST PUSH1 0x0 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND CALLER EQ PUSH2 0x289 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x145 SWAP1 PUSH2 0x437 JUMP JUMPDEST PUSH1 0x0 SLOAD PUSH1 0x1 PUSH1 0xA0 SHL SWAP1 DIV PUSH1 0xFF AND ISZERO PUSH2 0x2D6 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x10 PUSH1 0x24 DUP3 ADD MSTORE PUSH16 0x14185D5CD8589B194E881C185D5CD959 PUSH1 0x82 SHL PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 ADD PUSH2 0x145 JUMP JUMPDEST PUSH1 0x0 DUP1 SLOAD PUSH1 0xFF PUSH1 0xA0 SHL NOT AND PUSH1 0x1 PUSH1 0xA0 SHL OR SWAP1 SSTORE PUSH32 0x62E78CEA01BEE320CD4E420270B5EA74000D11B0C9F74754EBDBFC544B05A258 PUSH2 0x1CE CALLER SWAP1 JUMP JUMPDEST PUSH1 0x0 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND CALLER EQ PUSH2 0x33B JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x145 SWAP1 PUSH2 0x437 JUMP JUMPDEST PUSH2 0x344 DUP2 PUSH2 0x347 JUMP JUMPDEST POP JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND PUSH2 0x3AC JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x26 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x4F776E61626C653A206E6577206F776E657220697320746865207A65726F2061 PUSH1 0x44 DUP3 ADD MSTORE PUSH6 0x646472657373 PUSH1 0xD0 SHL PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 ADD PUSH2 0x145 JUMP JUMPDEST PUSH1 0x0 DUP1 SLOAD PUSH1 0x40 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP1 DUP6 AND SWAP4 SWAP3 AND SWAP2 PUSH32 0x8BE0079C531659141344CD1FD0A4F28419497F9722A3DAAFE3B4186F6B6457E0 SWAP2 LOG3 PUSH1 0x0 DUP1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB NOT AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP3 SWAP1 SWAP3 AND SWAP2 SWAP1 SWAP2 OR SWAP1 SSTORE JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x419 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND DUP2 EQ PUSH2 0x430 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE DUP2 DUP2 ADD MSTORE PUSH32 0x4F776E61626C653A2063616C6C6572206973206E6F7420746865206F776E6572 PUSH1 0x40 DUP3 ADD MSTORE PUSH1 0x60 ADD SWAP1 JUMP INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 0xC7 DUP1 0x4B 0xD4 SWAP2 SWAP3 DIV SELFDESTRUCT 0xAA 0xE9 PUSH24 0xDDCE129276B51ACC645E59B4EC13565C0C79AE96C264736F PUSH13 0x63430008080033000000000000 ",
"sourceMap": "504:3306:1:-:0;;;781:145;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;819:6;:14;;-1:-1:-1;;;;;;843:15:1;-1:-1:-1;;;;;819:14:1;;843:15;;;906:12;885:10:0;;816:86;906:12:1;-1:-1:-1;;;;;873:46:1;902:1;-1:-1:-1;;;;;873:46:1;;;;;;;;;;;781:145;504:3306;;14:290:2;84:6;137:2;125:9;116:7;112:23;108:32;105:52;;;153:1;150;143:12;105:52;179:16;;-1:-1:-1;;;;;224:31:2;;214:42;;204:70;;270:1;267;260:12;204:70;293:5;14:290;-1:-1:-1;;;14:290:2:o;:::-;504:3306:1;;;;;;"
},
"deployedBytecode": {
"functionDebugData": {
"@_msgSender_14": {
"entryPoint": null,
"id": 14,
"parameterSlots": 0,
"returnSlots": 1
},
"@_transferOwnership_159": {
"entryPoint": 839,
"id": 159,
"parameterSlots": 1,
"returnSlots": 0
},
"@isOwner_98": {
"entryPoint": null,
"id": 98,
"parameterSlots": 0,
"returnSlots": 1
},
"@owner_75": {
"entryPoint": null,
"id": 75,
"parameterSlots": 0,
"returnSlots": 1
},
"@pause_217": {
"entryPoint": 607,
"id": 217,
"parameterSlots": 0,
"returnSlots": 0
},
"@paused_178": {
"entryPoint": null,
"id": 178,
"parameterSlots": 0,
"returnSlots": 1
},
"@renounceOwnership_120": {
"entryPoint": 491,
"id": 120,
"parameterSlots": 0,
"returnSlots": 0
},
"@transferOwnership_133": {
"entryPoint": 785,
"id": 133,
"parameterSlots": 1,
"returnSlots": 0
},
"@unpause_235": {
"entryPoint": 283,
"id": 235,
"parameterSlots": 0,
"returnSlots": 0
},
"abi_decode_tuple_t_address_payable": {
"entryPoint": 1031,
"id": null,
"parameterSlots": 2,
"returnSlots": 1
},
"abi_encode_tuple_t_address__to_t_address__fromStack_reversed": {
"entryPoint": null,
"id": null,
"parameterSlots": 2,
"returnSlots": 1
},
"abi_encode_tuple_t_bool__to_t_bool__fromStack_reversed": {
"entryPoint": null,
"id": null,
"parameterSlots": 2,
"returnSlots": 1
},
"abi_encode_tuple_t_stringliteral_0d1d997348c4b502650619e51f7d09f80514d98b6993be5051d07f703984619a__to_t_string_memory_ptr__fromStack_reversed": {
"entryPoint": null,
"id": null,
"parameterSlots": 1,
"returnSlots": 1
},
"abi_encode_tuple_t_stringliteral_245f15ff17f551913a7a18385165551503906a406f905ac1c2437281a7cd0cfe__to_t_string_memory_ptr__fromStack_reversed": {
"entryPoint": null,
"id": null,
"parameterSlots": 1,
"returnSlots": 1
},
"abi_encode_tuple_t_stringliteral_68571e1369f7a6dcdcd736cb0343b35a58ed0f64d245c2ed839c98d412744f8a__to_t_string_memory_ptr__fromStack_reversed": {
"entryPoint": null,
"id": null,
"parameterSlots": 1,
"returnSlots": 1
},
"abi_encode_tuple_t_stringliteral_9924ebdf1add33d25d4ef888e16131f0a5687b0580a36c21b5c301a6c462effe__to_t_string_memory_ptr__fromStack_reversed": {
"entryPoint": 1079,
"id": null,
"parameterSlots": 1,
"returnSlots": 1
}
},
"generatedSources": [
{
"ast": {
"nodeType": "YulBlock",
"src": "0:2172:2",
"statements": [
{
"nodeType": "YulBlock",
"src": "6:3:2",
"statements": []
},
{
"body": {
"nodeType": "YulBlock",
"src": "115:102:2",
"statements": [
{
"nodeType": "YulAssignment",
"src": "125:26:2",
"value": {
"arguments": [
{
"name": "headStart",
"nodeType": "YulIdentifier",
"src": "137:9:2"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "148:2:2",
"type": "",
"value": "32"
}
],
"functionName": {
"name": "add",
"nodeType": "YulIdentifier",
"src": "133:3:2"
},
"nodeType": "YulFunctionCall",
"src": "133:18:2"
},
"variableNames": [
{
"name": "tail",
"nodeType": "YulIdentifier",
"src": "125:4:2"
}
]
},
{
"expression": {
"arguments": [
{
"name": "headStart",
"nodeType": "YulIdentifier",
"src": "167:9:2"
},
{
"arguments": [
{
"name": "value0",
"nodeType": "YulIdentifier",
"src": "182:6:2"
},
{
"arguments": [
{
"arguments": [
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "198:3:2",
"type": "",
"value": "160"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "203:1:2",
"type": "",
"value": "1"
}
],
"functionName": {
"name": "shl",
"nodeType": "YulIdentifier",
"src": "194:3:2"
},
"nodeType": "YulFunctionCall",
"src": "194:11:2"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "207:1:2",
"type": "",
"value": "1"
}
],
"functionName": {
"name": "sub",
"nodeType": "YulIdentifier",
"src": "190:3:2"
},
"nodeType": "YulFunctionCall",
"src": "190:19:2"
}
],
"functionName": {
"name": "and",
"nodeType": "YulIdentifier",
"src": "178:3:2"
},
"nodeType": "YulFunctionCall",
"src": "178:32:2"
}
],
"functionName": {
"name": "mstore",
"nodeType": "YulIdentifier",
"src": "160:6:2"
},
"nodeType": "YulFunctionCall",
"src": "160:51:2"
},
"nodeType": "YulExpressionStatement",
"src": "160:51:2"
}
]
},
"name": "abi_encode_tuple_t_address__to_t_address__fromStack_reversed",
"nodeType": "YulFunctionDefinition",
"parameters": [
{
"name": "headStart",
"nodeType": "YulTypedName",
"src": "84:9:2",
"type": ""
},
{
"name": "value0",
"nodeType": "YulTypedName",
"src": "95:6:2",
"type": ""
}
],
"returnVariables": [
{
"name": "tail",
"nodeType": "YulTypedName",
"src": "106:4:2",
"type": ""
}
],
"src": "14:203:2"
},
{
"body": {
"nodeType": "YulBlock",
"src": "317:92:2",
"statements": [
{
"nodeType": "YulAssignment",
"src": "327:26:2",
"value": {
"arguments": [
{
"name": "headStart",
"nodeType": "YulIdentifier",
"src": "339:9:2"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "350:2:2",
"type": "",
"value": "32"
}
],
"functionName": {
"name": "add",
"nodeType": "YulIdentifier",
"src": "335:3:2"
},
"nodeType": "YulFunctionCall",
"src": "335:18:2"
},
"variableNames": [
{
"name": "tail",
"nodeType": "YulIdentifier",
"src": "327:4:2"
}
]
},
{
"expression": {
"arguments": [
{
"name": "headStart",
"nodeType": "YulIdentifier",
"src": "369:9:2"
},
{
"arguments": [
{
"arguments": [
{
"name": "value0",
"nodeType": "YulIdentifier",
"src": "394:6:2"
}
],
"functionName": {
"name": "iszero",
"nodeType": "YulIdentifier",
"src": "387:6:2"
},
"nodeType": "YulFunctionCall",
"src": "387:14:2"
}
],
"functionName": {
"name": "iszero",
"nodeType": "YulIdentifier",
"src": "380:6:2"
},
"nodeType": "YulFunctionCall",
"src": "380:22:2"
}
],
"functionName": {
"name": "mstore",
"nodeType": "YulIdentifier",
"src": "362:6:2"
},
"nodeType": "YulFunctionCall",
"src": "362:41:2"
},
"nodeType": "YulExpressionStatement",
"src": "362:41:2"
}
]
},
"name": "abi_encode_tuple_t_bool__to_t_bool__fromStack_reversed",
"nodeType": "YulFunctionDefinition",
"parameters": [
{
"name": "headStart",
"nodeType": "YulTypedName",
"src": "286:9:2",
"type": ""
},
{
"name": "value0",
"nodeType": "YulTypedName",
"src": "297:6:2",
"type": ""
}
],
"returnVariables": [
{
"name": "tail",
"nodeType": "YulTypedName",
"src": "308:4:2",
"type": ""
}
],
"src": "222:187:2"
},
{
"body": {
"nodeType": "YulBlock",
"src": "492:216:2",
"statements": [
{
"body": {
"nodeType": "YulBlock",
"src": "538:16:2",
"statements": [
{
"expression": {
"arguments": [
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "547:1:2",
"type": "",
"value": "0"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "550:1:2",
"type": "",
"value": "0"
}
],
"functionName": {
"name": "revert",
"nodeType": "YulIdentifier",
"src": "540:6:2"
},
"nodeType": "YulFunctionCall",
"src": "540:12:2"
},
"nodeType": "YulExpressionStatement",
"src": "540:12:2"
}
]
},
"condition": {
"arguments": [
{
"arguments": [
{
"name": "dataEnd",
"nodeType": "YulIdentifier",
"src": "513:7:2"
},
{
"name": "headStart",
"nodeType": "YulIdentifier",
"src": "522:9:2"
}
],
"functionName": {
"name": "sub",
"nodeType": "YulIdentifier",
"src": "509:3:2"
},
"nodeType": "YulFunctionCall",
"src": "509:23:2"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "534:2:2",
"type": "",
"value": "32"
}
],
"functionName": {
"name": "slt",
"nodeType": "YulIdentifier",
"src": "505:3:2"
},
"nodeType": "YulFunctionCall",
"src": "505:32:2"
},
"nodeType": "YulIf",
"src": "502:52:2"
},
{
"nodeType": "YulVariableDeclaration",
"src": "563:36:2",
"value": {
"arguments": [
{
"name": "headStart",
"nodeType": "YulIdentifier",
"src": "589:9:2"
}
],
"functionName": {
"name": "calldataload",
"nodeType": "YulIdentifier",
"src": "576:12:2"
},
"nodeType": "YulFunctionCall",
"src": "576:23:2"
},
"variables": [
{
"name": "value",
"nodeType": "YulTypedName",
"src": "567:5:2",
"type": ""
}
]
},
{
"body": {
"nodeType": "YulBlock",
"src": "662:16:2",
"statements": [
{
"expression": {
"arguments": [
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "671:1:2",
"type": "",
"value": "0"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "674:1:2",
"type": "",
"value": "0"
}
],
"functionName": {
"name": "revert",
"nodeType": "YulIdentifier",
"src": "664:6:2"
},
"nodeType": "YulFunctionCall",
"src": "664:12:2"
},
"nodeType": "YulExpressionStatement",
"src": "664:12:2"
}
]
},
"condition": {
"arguments": [
{
"arguments": [
{
"name": "value",
"nodeType": "YulIdentifier",
"src": "621:5:2"
},
{
"arguments": [
{
"name": "value",
"nodeType": "YulIdentifier",
"src": "632:5:2"
},
{
"arguments": [
{
"arguments": [
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "647:3:2",
"type": "",
"value": "160"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "652:1:2",
"type": "",
"value": "1"
}
],
"functionName": {
"name": "shl",
"nodeType": "YulIdentifier",
"src": "643:3:2"
},
"nodeType": "YulFunctionCall",
"src": "643:11:2"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "656:1:2",
"type": "",
"value": "1"
}
],
"functionName": {
"name": "sub",
"nodeType": "YulIdentifier",
"src": "639:3:2"
},
"nodeType": "YulFunctionCall",
"src": "639:19:2"
}
],
"functionName": {
"name": "and",
"nodeType": "YulIdentifier",
"src": "628:3:2"
},
"nodeType": "YulFunctionCall",
"src": "628:31:2"
}
],
"functionName": {
"name": "eq",
"nodeType": "YulIdentifier",
"src": "618:2:2"
},
"nodeType": "YulFunctionCall",
"src": "618:42:2"
}
],
"functionName": {
"name": "iszero",
"nodeType": "YulIdentifier",
"src": "611:6:2"
},
"nodeType": "YulFunctionCall",
"src": "611:50:2"
},
"nodeType": "YulIf",
"src": "608:70:2"
},
{
"nodeType": "YulAssignment",
"src": "687:15:2",
"value": {
"name": "value",
"nodeType": "YulIdentifier",
"src": "697:5:2"
},
"variableNames": [
{
"name": "value0",
"nodeType": "YulIdentifier",
"src": "687:6:2"
}
]
}
]
},
"name": "abi_decode_tuple_t_address_payable",
"nodeType": "YulFunctionDefinition",
"parameters": [
{
"name": "headStart",
"nodeType": "YulTypedName",
"src": "458:9:2",
"type": ""
},
{
"name": "dataEnd",
"nodeType": "YulTypedName",
"src": "469:7:2",
"type": ""
}
],
"returnVariables": [
{
"name": "value0",
"nodeType": "YulTypedName",
"src": "481:6:2",
"type": ""
}
],
"src": "414:294:2"
},
{
"body": {
"nodeType": "YulBlock",
"src": "887:182:2",
"statements": [
{
"expression": {
"arguments": [
{
"name": "headStart",
"nodeType": "YulIdentifier",
"src": "904:9:2"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "915:2:2",
"type": "",
"value": "32"
}
],
"functionName": {
"name": "mstore",
"nodeType": "YulIdentifier",
"src": "897:6:2"
},
"nodeType": "YulFunctionCall",
"src": "897:21:2"
},
"nodeType": "YulExpressionStatement",
"src": "897:21:2"
},
{
"expression": {
"arguments": [
{
"arguments": [
{
"name": "headStart",
"nodeType": "YulIdentifier",
"src": "938:9:2"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "949:2:2",
"type": "",
"value": "32"
}
],
"functionName": {
"name": "add",
"nodeType": "YulIdentifier",
"src": "934:3:2"
},
"nodeType": "YulFunctionCall",
"src": "934:18:2"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "954:2:2",
"type": "",
"value": "32"
}
],
"functionName": {
"name": "mstore",
"nodeType": "YulIdentifier",
"src": "927:6:2"
},
"nodeType": "YulFunctionCall",
"src": "927:30:2"
},
"nodeType": "YulExpressionStatement",
"src": "927:30:2"
},
{
"expression": {
"arguments": [
{
"arguments": [
{
"name": "headStart",
"nodeType": "YulIdentifier",
"src": "977:9:2"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "988:2:2",
"type": "",
"value": "64"
}
],
"functionName": {
"name": "add",
"nodeType": "YulIdentifier",
"src": "973:3:2"
},
"nodeType": "YulFunctionCall",
"src": "973:18:2"
},
{
"hexValue": "4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572",
"kind": "string",
"nodeType": "YulLiteral",
"src": "993:34:2",
"type": "",
"value": "Ownable: caller is not the owner"
}
],
"functionName": {
"name": "mstore",
"nodeType": "YulIdentifier",
"src": "966:6:2"
},
"nodeType": "YulFunctionCall",
"src": "966:62:2"
},
"nodeType": "YulExpressionStatement",
"src": "966:62:2"
},
{
"nodeType": "YulAssignment",
"src": "1037:26:2",
"value": {
"arguments": [
{
"name": "headStart",
"nodeType": "YulIdentifier",
"src": "1049:9:2"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "1060:2:2",
"type": "",
"value": "96"
}
],
"functionName": {
"name": "add",
"nodeType": "YulIdentifier",
"src": "1045:3:2"
},
"nodeType": "YulFunctionCall",
"src": "1045:18:2"
},
"variableNames": [
{
"name": "tail",
"nodeType": "YulIdentifier",
"src": "1037:4:2"
}
]
}
]
},
"name": "abi_encode_tuple_t_stringliteral_9924ebdf1add33d25d4ef888e16131f0a5687b0580a36c21b5c301a6c462effe__to_t_string_memory_ptr__fromStack_reversed",
"nodeType": "YulFunctionDefinition",
"parameters": [
{
"name": "headStart",
"nodeType": "YulTypedName",
"src": "864:9:2",
"type": ""
}
],
"returnVariables": [
{
"name": "tail",
"nodeType": "YulTypedName",
"src": "878:4:2",
"type": ""
}
],
"src": "713:356:2"
},
{
"body": {
"nodeType": "YulBlock",
"src": "1248:170:2",
"statements": [
{
"expression": {
"arguments": [
{
"name": "headStart",
"nodeType": "YulIdentifier",
"src": "1265:9:2"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "1276:2:2",
"type": "",
"value": "32"
}
],
"functionName": {
"name": "mstore",
"nodeType": "YulIdentifier",
"src": "1258:6:2"
},
"nodeType": "YulFunctionCall",
"src": "1258:21:2"
},
"nodeType": "YulExpressionStatement",
"src": "1258:21:2"
},
{
"expression": {
"arguments": [
{
"arguments": [
{
"name": "headStart",
"nodeType": "YulIdentifier",
"src": "1299:9:2"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "1310:2:2",
"type": "",
"value": "32"
}
],
"functionName": {
"name": "add",
"nodeType": "YulIdentifier",
"src": "1295:3:2"
},
"nodeType": "YulFunctionCall",
"src": "1295:18:2"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "1315:2:2",
"type": "",
"value": "20"
}
],
"functionName": {
"name": "mstore",
"nodeType": "YulIdentifier",
"src": "1288:6:2"
},
"nodeType": "YulFunctionCall",
"src": "1288:30:2"
},
"nodeType": "YulExpressionStatement",
"src": "1288:30:2"
},
{
"expression": {
"arguments": [
{
"arguments": [
{
"name": "headStart",
"nodeType": "YulIdentifier",
"src": "1338:9:2"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "1349:2:2",
"type": "",
"value": "64"
}
],
"functionName": {
"name": "add",
"nodeType": "YulIdentifier",
"src": "1334:3:2"
},
"nodeType": "YulFunctionCall",
"src": "1334:18:2"
},
{
"hexValue": "5061757361626c653a206e6f7420706175736564",
"kind": "string",
"nodeType": "YulLiteral",
"src": "1354:22:2",
"type": "",
"value": "Pausable: not paused"
}
],
"functionName": {
"name": "mstore",
"nodeType": "YulIdentifier",
"src": "1327:6:2"
},
"nodeType": "YulFunctionCall",
"src": "1327:50:2"
},
"nodeType": "YulExpressionStatement",
"src": "1327:50:2"
},
{
"nodeType": "YulAssignment",
"src": "1386:26:2",
"value": {
"arguments": [
{
"name": "headStart",
"nodeType": "YulIdentifier",
"src": "1398:9:2"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "1409:2:2",
"type": "",
"value": "96"
}
],
"functionName": {
"name": "add",
"nodeType": "YulIdentifier",
"src": "1394:3:2"
},
"nodeType": "YulFunctionCall",
"src": "1394:18:2"
},
"variableNames": [
{
"name": "tail",
"nodeType": "YulIdentifier",
"src": "1386:4:2"
}
]
}
]
},
"name": "abi_encode_tuple_t_stringliteral_0d1d997348c4b502650619e51f7d09f80514d98b6993be5051d07f703984619a__to_t_string_memory_ptr__fromStack_reversed",
"nodeType": "YulFunctionDefinition",
"parameters": [
{
"name": "headStart",
"nodeType": "YulTypedName",
"src": "1225:9:2",
"type": ""
}
],
"returnVariables": [
{
"name": "tail",
"nodeType": "YulTypedName",
"src": "1239:4:2",
"type": ""
}
],
"src": "1074:344:2"
},
{
"body": {
"nodeType": "YulBlock",
"src": "1597:166:2",
"statements": [
{
"expression": {
"arguments": [
{
"name": "headStart",
"nodeType": "YulIdentifier",
"src": "1614:9:2"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "1625:2:2",
"type": "",
"value": "32"
}
],
"functionName": {
"name": "mstore",
"nodeType": "YulIdentifier",
"src": "1607:6:2"
},
"nodeType": "YulFunctionCall",
"src": "1607:21:2"
},
"nodeType": "YulExpressionStatement",
"src": "1607:21:2"
},
{
"expression": {
"arguments": [
{
"arguments": [
{
"name": "headStart",
"nodeType": "YulIdentifier",
"src": "1648:9:2"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "1659:2:2",
"type": "",
"value": "32"
}
],
"functionName": {
"name": "add",
"nodeType": "YulIdentifier",
"src": "1644:3:2"
},
"nodeType": "YulFunctionCall",
"src": "1644:18:2"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "1664:2:2",
"type": "",
"value": "16"
}
],
"functionName": {
"name": "mstore",
"nodeType": "YulIdentifier",
"src": "1637:6:2"
},
"nodeType": "YulFunctionCall",
"src": "1637:30:2"
},
"nodeType": "YulExpressionStatement",
"src": "1637:30:2"
},
{
"expression": {
"arguments": [
{
"arguments": [
{
"name": "headStart",
"nodeType": "YulIdentifier",
"src": "1687:9:2"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "1698:2:2",
"type": "",
"value": "64"
}
],
"functionName": {
"name": "add",
"nodeType": "YulIdentifier",
"src": "1683:3:2"
},
"nodeType": "YulFunctionCall",
"src": "1683:18:2"
},
{
"hexValue": "5061757361626c653a20706175736564",
"kind": "string",
"nodeType": "YulLiteral",
"src": "1703:18:2",
"type": "",
"value": "Pausable: paused"
}
],
"functionName": {
"name": "mstore",
"nodeType": "YulIdentifier",
"src": "1676:6:2"
},
"nodeType": "YulFunctionCall",
"src": "1676:46:2"
},
"nodeType": "YulExpressionStatement",
"src": "1676:46:2"
},
{
"nodeType": "YulAssignment",
"src": "1731:26:2",
"value": {
"arguments": [
{
"name": "headStart",
"nodeType": "YulIdentifier",
"src": "1743:9:2"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "1754:2:2",
"type": "",
"value": "96"
}
],
"functionName": {
"name": "add",
"nodeType": "YulIdentifier",
"src": "1739:3:2"
},
"nodeType": "YulFunctionCall",
"src": "1739:18:2"
},
"variableNames": [
{
"name": "tail",
"nodeType": "YulIdentifier",
"src": "1731:4:2"
}
]
}
]
},
"name": "abi_encode_tuple_t_stringliteral_68571e1369f7a6dcdcd736cb0343b35a58ed0f64d245c2ed839c98d412744f8a__to_t_string_memory_ptr__fromStack_reversed",
"nodeType": "YulFunctionDefinition",
"parameters": [
{
"name": "headStart",
"nodeType": "YulTypedName",
"src": "1574:9:2",
"type": ""
}
],
"returnVariables": [
{
"name": "tail",
"nodeType": "YulTypedName",
"src": "1588:4:2",
"type": ""
}
],
"src": "1423:340:2"
},
{
"body": {
"nodeType": "YulBlock",
"src": "1942:228:2",
"statements": [
{
"expression": {
"arguments": [
{
"name": "headStart",
"nodeType": "YulIdentifier",
"src": "1959:9:2"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "1970:2:2",
"type": "",
"value": "32"
}
],
"functionName": {
"name": "mstore",
"nodeType": "YulIdentifier",
"src": "1952:6:2"
},
"nodeType": "YulFunctionCall",
"src": "1952:21:2"
},
"nodeType": "YulExpressionStatement",
"src": "1952:21:2"
},
{
"expression": {
"arguments": [
{
"arguments": [
{
"name": "headStart",
"nodeType": "YulIdentifier",
"src": "1993:9:2"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "2004:2:2",
"type": "",
"value": "32"
}
],
"functionName": {
"name": "add",
"nodeType": "YulIdentifier",
"src": "1989:3:2"
},
"nodeType": "YulFunctionCall",
"src": "1989:18:2"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "2009:2:2",
"type": "",
"value": "38"
}
],
"functionName": {
"name": "mstore",
"nodeType": "YulIdentifier",
"src": "1982:6:2"
},
"nodeType": "YulFunctionCall",
"src": "1982:30:2"
},
"nodeType": "YulExpressionStatement",
"src": "1982:30:2"
},
{
"expression": {
"arguments": [
{
"arguments": [
{
"name": "headStart",
"nodeType": "YulIdentifier",
"src": "2032:9:2"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "2043:2:2",
"type": "",
"value": "64"
}
],
"functionName": {
"name": "add",
"nodeType": "YulIdentifier",
"src": "2028:3:2"
},
"nodeType": "YulFunctionCall",
"src": "2028:18:2"
},
{
"hexValue": "4f776e61626c653a206e6577206f776e657220697320746865207a65726f2061",
"kind": "string",
"nodeType": "YulLiteral",
"src": "2048:34:2",
"type": "",
"value": "Ownable: new owner is the zero a"
}
],
"functionName": {
"name": "mstore",
"nodeType": "YulIdentifier",
"src": "2021:6:2"
},
"nodeType": "YulFunctionCall",
"src": "2021:62:2"
},
"nodeType": "YulExpressionStatement",
"src": "2021:62:2"
},
{
"expression": {
"arguments": [
{
"arguments": [
{
"name": "headStart",
"nodeType": "YulIdentifier",
"src": "2103:9:2"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "2114:2:2",
"type": "",
"value": "96"
}
],
"functionName": {
"name": "add",
"nodeType": "YulIdentifier",
"src": "2099:3:2"
},
"nodeType": "YulFunctionCall",
"src": "2099:18:2"
},
{
"hexValue": "646472657373",
"kind": "string",
"nodeType": "YulLiteral",
"src": "2119:8:2",
"type": "",
"value": "ddress"
}
],
"functionName": {
"name": "mstore",
"nodeType": "YulIdentifier",
"src": "2092:6:2"
},
"nodeType": "YulFunctionCall",
"src": "2092:36:2"
},
"nodeType": "YulExpressionStatement",
"src": "2092:36:2"
},
{
"nodeType": "YulAssignment",
"src": "2137:27:2",
"value": {
"arguments": [
{
"name": "headStart",
"nodeType": "YulIdentifier",
"src": "2149:9:2"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "2160:3:2",
"type": "",
"value": "128"
}
],
"functionName": {
"name": "add",
"nodeType": "YulIdentifier",
"src": "2145:3:2"
},
"nodeType": "YulFunctionCall",
"src": "2145:19:2"
},
"variableNames": [
{
"name": "tail",
"nodeType": "YulIdentifier",
"src": "2137:4:2"
}
]
}
]
},
"name": "abi_encode_tuple_t_stringliteral_245f15ff17f551913a7a18385165551503906a406f905ac1c2437281a7cd0cfe__to_t_string_memory_ptr__fromStack_reversed",
"nodeType": "YulFunctionDefinition",
"parameters": [
{
"name": "headStart",
"nodeType": "YulTypedName",
"src": "1919:9:2",
"type": ""
}
],
"returnVariables": [
{
"name": "tail",
"nodeType": "YulTypedName",
"src": "1933:4:2",
"type": ""
}
],
"src": "1768:402:2"
}
]
},
"contents": "{\n { }\n function abi_encode_tuple_t_address__to_t_address__fromStack_reversed(headStart, value0) -> tail\n {\n tail := add(headStart, 32)\n mstore(headStart, and(value0, sub(shl(160, 1), 1)))\n }\n function abi_encode_tuple_t_bool__to_t_bool__fromStack_reversed(headStart, value0) -> tail\n {\n tail := add(headStart, 32)\n mstore(headStart, iszero(iszero(value0)))\n }\n function abi_decode_tuple_t_address_payable(headStart, dataEnd) -> value0\n {\n if slt(sub(dataEnd, headStart), 32) { revert(0, 0) }\n let value := calldataload(headStart)\n if iszero(eq(value, and(value, sub(shl(160, 1), 1)))) { revert(0, 0) }\n value0 := value\n }\n function abi_encode_tuple_t_stringliteral_9924ebdf1add33d25d4ef888e16131f0a5687b0580a36c21b5c301a6c462effe__to_t_string_memory_ptr__fromStack_reversed(headStart) -> tail\n {\n mstore(headStart, 32)\n mstore(add(headStart, 32), 32)\n mstore(add(headStart, 64), \"Ownable: caller is not the owner\")\n tail := add(headStart, 96)\n }\n function abi_encode_tuple_t_stringliteral_0d1d997348c4b502650619e51f7d09f80514d98b6993be5051d07f703984619a__to_t_string_memory_ptr__fromStack_reversed(headStart) -> tail\n {\n mstore(headStart, 32)\n mstore(add(headStart, 32), 20)\n mstore(add(headStart, 64), \"Pausable: not paused\")\n tail := add(headStart, 96)\n }\n function abi_encode_tuple_t_stringliteral_68571e1369f7a6dcdcd736cb0343b35a58ed0f64d245c2ed839c98d412744f8a__to_t_string_memory_ptr__fromStack_reversed(headStart) -> tail\n {\n mstore(headStart, 32)\n mstore(add(headStart, 32), 16)\n mstore(add(headStart, 64), \"Pausable: paused\")\n tail := add(headStart, 96)\n }\n function abi_encode_tuple_t_stringliteral_245f15ff17f551913a7a18385165551503906a406f905ac1c2437281a7cd0cfe__to_t_string_memory_ptr__fromStack_reversed(headStart) -> tail\n {\n mstore(headStart, 32)\n mstore(add(headStart, 32), 38)\n mstore(add(headStart, 64), \"Ownable: new owner is the zero a\")\n mstore(add(headStart, 96), \"ddress\")\n tail := add(headStart, 128)\n }\n}",
"id": 2,
"language": "Yul",
"name": "#utility.yul"
}
],
"immutableReferences": {},
"linkReferences": {},
"object": "608060405234801561001057600080fd5b50600436106100885760003560e01c80638456cb591161005b5780638456cb59146100dc5780638da5cb5b146100e45780638f32d59b146100f5578063f2fde38b1461010857600080fd5b8063119df25f1461008d5780633f4ba83a146100ac5780635c975abb146100b6578063715018a6146100d4575b600080fd5b335b6040516001600160a01b0390911681526020015b60405180910390f35b6100b461011b565b005b600054600160a01b900460ff165b60405190151581526020016100a3565b6100b46101eb565b6100b461025f565b6000546001600160a01b031661008f565b6000546001600160a01b031633146100c4565b6100b4610116366004610407565b610311565b6000546001600160a01b0316331461014e5760405162461bcd60e51b815260040161014590610437565b60405180910390fd5b600054600160a01b900460ff1661019e5760405162461bcd60e51b815260206004820152601460248201527314185d5cd8589b194e881b9bdd081c185d5cd95960621b6044820152606401610145565b6000805460ff60a01b191690557f5db9ee0a495bf2e6ff9c91a7834c1ba4fdd244a5e8aa4e537bd38aeae4b073aa335b6040516001600160a01b03909116815260200160405180910390a1565b6000546001600160a01b031633146102155760405162461bcd60e51b815260040161014590610437565b600080546040516001600160a01b03909116907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908390a3600080546001600160a01b0319169055565b6000546001600160a01b031633146102895760405162461bcd60e51b815260040161014590610437565b600054600160a01b900460ff16156102d65760405162461bcd60e51b815260206004820152601060248201526f14185d5cd8589b194e881c185d5cd95960821b6044820152606401610145565b6000805460ff60a01b1916600160a01b1790557f62e78cea01bee320cd4e420270b5ea74000d11b0c9f74754ebdbfc544b05a2586101ce3390565b6000546001600160a01b0316331461033b5760405162461bcd60e51b815260040161014590610437565b61034481610347565b50565b6001600160a01b0381166103ac5760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b6064820152608401610145565b600080546040516001600160a01b03808516939216917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e091a3600080546001600160a01b0319166001600160a01b0392909216919091179055565b60006020828403121561041957600080fd5b81356001600160a01b038116811461043057600080fd5b9392505050565b6020808252818101527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657260408201526060019056fea2646970667358221220c7804bd4919204ffaae977ddce129276b51acc645e59b4ec13565c0c79ae96c264736f6c63430008080033",
"opcodes": "PUSH1 0x80 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH2 0x10 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x4 CALLDATASIZE LT PUSH2 0x88 JUMPI PUSH1 0x0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0x8456CB59 GT PUSH2 0x5B JUMPI DUP1 PUSH4 0x8456CB59 EQ PUSH2 0xDC JUMPI DUP1 PUSH4 0x8DA5CB5B EQ PUSH2 0xE4 JUMPI DUP1 PUSH4 0x8F32D59B EQ PUSH2 0xF5 JUMPI DUP1 PUSH4 0xF2FDE38B EQ PUSH2 0x108 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 PUSH4 0x119DF25F EQ PUSH2 0x8D JUMPI DUP1 PUSH4 0x3F4BA83A EQ PUSH2 0xAC JUMPI DUP1 PUSH4 0x5C975ABB EQ PUSH2 0xB6 JUMPI DUP1 PUSH4 0x715018A6 EQ PUSH2 0xD4 JUMPI JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST CALLER JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 SWAP2 AND DUP2 MSTORE PUSH1 0x20 ADD JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0xB4 PUSH2 0x11B JUMP JUMPDEST STOP JUMPDEST PUSH1 0x0 SLOAD PUSH1 0x1 PUSH1 0xA0 SHL SWAP1 DIV PUSH1 0xFF AND JUMPDEST PUSH1 0x40 MLOAD SWAP1 ISZERO ISZERO DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0xA3 JUMP JUMPDEST PUSH2 0xB4 PUSH2 0x1EB JUMP JUMPDEST PUSH2 0xB4 PUSH2 0x25F JUMP JUMPDEST PUSH1 0x0 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0x8F JUMP JUMPDEST PUSH1 0x0 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND CALLER EQ PUSH2 0xC4 JUMP JUMPDEST PUSH2 0xB4 PUSH2 0x116 CALLDATASIZE PUSH1 0x4 PUSH2 0x407 JUMP JUMPDEST PUSH2 0x311 JUMP JUMPDEST PUSH1 0x0 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND CALLER EQ PUSH2 0x14E JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x145 SWAP1 PUSH2 0x437 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x0 SLOAD PUSH1 0x1 PUSH1 0xA0 SHL SWAP1 DIV PUSH1 0xFF AND PUSH2 0x19E JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x14 PUSH1 0x24 DUP3 ADD MSTORE PUSH20 0x14185D5CD8589B194E881B9BDD081C185D5CD959 PUSH1 0x62 SHL PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 ADD PUSH2 0x145 JUMP JUMPDEST PUSH1 0x0 DUP1 SLOAD PUSH1 0xFF PUSH1 0xA0 SHL NOT AND SWAP1 SSTORE PUSH32 0x5DB9EE0A495BF2E6FF9C91A7834C1BA4FDD244A5E8AA4E537BD38AEAE4B073AA CALLER JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 SWAP2 AND DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG1 JUMP JUMPDEST PUSH1 0x0 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND CALLER EQ PUSH2 0x215 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x145 SWAP1 PUSH2 0x437 JUMP JUMPDEST PUSH1 0x0 DUP1 SLOAD PUSH1 0x40 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 SWAP2 AND SWAP1 PUSH32 0x8BE0079C531659141344CD1FD0A4F28419497F9722A3DAAFE3B4186F6B6457E0 SWAP1 DUP4 SWAP1 LOG3 PUSH1 0x0 DUP1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB NOT AND SWAP1 SSTORE JUMP JUMPDEST PUSH1 0x0 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND CALLER EQ PUSH2 0x289 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x145 SWAP1 PUSH2 0x437 JUMP JUMPDEST PUSH1 0x0 SLOAD PUSH1 0x1 PUSH1 0xA0 SHL SWAP1 DIV PUSH1 0xFF AND ISZERO PUSH2 0x2D6 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x10 PUSH1 0x24 DUP3 ADD MSTORE PUSH16 0x14185D5CD8589B194E881C185D5CD959 PUSH1 0x82 SHL PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 ADD PUSH2 0x145 JUMP JUMPDEST PUSH1 0x0 DUP1 SLOAD PUSH1 0xFF PUSH1 0xA0 SHL NOT AND PUSH1 0x1 PUSH1 0xA0 SHL OR SWAP1 SSTORE PUSH32 0x62E78CEA01BEE320CD4E420270B5EA74000D11B0C9F74754EBDBFC544B05A258 PUSH2 0x1CE CALLER SWAP1 JUMP JUMPDEST PUSH1 0x0 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND CALLER EQ PUSH2 0x33B JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x145 SWAP1 PUSH2 0x437 JUMP JUMPDEST PUSH2 0x344 DUP2 PUSH2 0x347 JUMP JUMPDEST POP JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND PUSH2 0x3AC JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x26 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x4F776E61626C653A206E6577206F776E657220697320746865207A65726F2061 PUSH1 0x44 DUP3 ADD MSTORE PUSH6 0x646472657373 PUSH1 0xD0 SHL PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 ADD PUSH2 0x145 JUMP JUMPDEST PUSH1 0x0 DUP1 SLOAD PUSH1 0x40 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP1 DUP6 AND SWAP4 SWAP3 AND SWAP2 PUSH32 0x8BE0079C531659141344CD1FD0A4F28419497F9722A3DAAFE3B4186F6B6457E0 SWAP2 LOG3 PUSH1 0x0 DUP1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB NOT AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP3 SWAP1 SWAP3 AND SWAP2 SWAP1 SWAP2 OR SWAP1 SSTORE JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x419 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND DUP2 EQ PUSH2 0x430 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE DUP2 DUP2 ADD MSTORE PUSH32 0x4F776E61626C653A2063616C6C6572206973206E6F7420746865206F776E6572 PUSH1 0x40 DUP3 ADD MSTORE PUSH1 0x60 ADD SWAP1 JUMP INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 0xC7 DUP1 0x4B 0xD4 SWAP2 SWAP3 DIV SELFDESTRUCT 0xAA 0xE9 PUSH24 0xDDCE129276B51ACC645E59B4EC13565C0C79AE96C264736F PUSH13 0x63430008080033000000000000 ",
"sourceMap": "504:3306:1:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;816:86:0;885:10;816:86;;;-1:-1:-1;;;;;178:32:2;;;160:51;;148:2;133:18;816:86:0;;;;;;;;3690:116:1;;;:::i;:::-;;2927:76;2966:4;2989:7;-1:-1:-1;;;2989:7:1;;;;2927:76;;;387:14:2;;380:22;362:41;;350:2;335:18;2927:76:1;222:187:2;1846:137:1;;;:::i;3485:114::-;;;:::i;1002:77::-;1040:7;1066:6;-1:-1:-1;;;;;1066:6:1;1002:77;;1353:92;1393:4;1432:6;-1:-1:-1;;;;;1432:6:1;885:10:0;1416:22:1;1353:92;;2132:115;;;;;;:::i;:::-;;:::i;3690:116::-;1393:4;1432:6;-1:-1:-1;;;;;1432:6:1;885:10:0;1416:22:1;1198:54;;;;-1:-1:-1;;;1198:54:1;;;;;;;:::i;:::-;;;;;;;;;3347:7:::1;::::0;-1:-1:-1;;;3347:7:1;::::1;;;3339:40;;;::::0;-1:-1:-1;;;3339:40:1;;1276:2:2;3339:40:1::1;::::0;::::1;1258:21:2::0;1315:2;1295:18;;;1288:30;-1:-1:-1;;;1334:18:2;;;1327:50;1394:18;;3339:40:1::1;1074:344:2::0;3339:40:1::1;3757:5:::2;3747:15:::0;;-1:-1:-1;;;;3747:15:1::2;::::0;;3777:22:::2;885:10:0::0;3786:12:1::2;3777:22;::::0;-1:-1:-1;;;;;178:32:2;;;160:51;;148:2;133:18;3777:22:1::2;;;;;;;3690:116::o:0;1846:137::-;1393:4;1432:6;-1:-1:-1;;;;;1432:6:1;885:10:0;1416:22:1;1198:54;;;;-1:-1:-1;;;1198:54:1;;;;;;;:::i;:::-;1944:1:::1;1928:6:::0;;1907:40:::1;::::0;-1:-1:-1;;;;;1928:6:1;;::::1;::::0;1907:40:::1;::::0;1944:1;;1907:40:::1;1974:1;1957:19:::0;;-1:-1:-1;;;;;;1957:19:1::1;::::0;;1846:137::o;3485:114::-;1393:4;1432:6;-1:-1:-1;;;;;1432:6:1;885:10:0;1416:22:1;1198:54;;;;-1:-1:-1;;;1198:54:1;;;;;;;:::i;:::-;3156:7:::1;::::0;-1:-1:-1;;;3156:7:1;::::1;;;3155:8;3147:37;;;::::0;-1:-1:-1;;;3147:37:1;;1625:2:2;3147:37:1::1;::::0;::::1;1607:21:2::0;1664:2;1644:18;;;1637:30;-1:-1:-1;;;1683:18:2;;;1676:46;1739:18;;3147:37:1::1;1423:340:2::0;3147:37:1::1;3543:7:::2;:14:::0;;-1:-1:-1;;;;3543:14:1::2;-1:-1:-1::0;;;3543:14:1::2;::::0;;3572:20:::2;3579:12;885:10:0::0;;816:86;2132:115:1;1393:4;1432:6;-1:-1:-1;;;;;1432:6:1;885:10:0;1416:22:1;1198:54;;;;-1:-1:-1;;;1198:54:1;;;;;;;:::i;:::-;2212:28:::1;2231:8;2212:18;:28::i;:::-;2132:115:::0;:::o;2348:233::-;-1:-1:-1;;;;;2429:22:1;;2421:73;;;;-1:-1:-1;;;2421:73:1;;1970:2:2;2421:73:1;;;1952:21:2;2009:2;1989:18;;;1982:30;2048:34;2028:18;;;2021:62;-1:-1:-1;;;2099:18:2;;;2092:36;2145:19;;2421:73:1;1768:402:2;2421:73:1;2530:6;;;2509:38;;-1:-1:-1;;;;;2509:38:1;;;;2530:6;;;2509:38;;;2557:6;:17;;-1:-1:-1;;;;;;2557:17:1;-1:-1:-1;;;;;2557:17:1;;;;;;;;;;2348:233::o;414:294:2:-;481:6;534:2;522:9;513:7;509:23;505:32;502:52;;;550:1;547;540:12;502:52;576:23;;-1:-1:-1;;;;;628:31:2;;618:42;;608:70;;674:1;671;664:12;608:70;697:5;414:294;-1:-1:-1;;;414:294:2:o;713:356::-;915:2;897:21;;;934:18;;;927:30;993:34;988:2;973:18;;966:62;1060:2;1045:18;;713:356::o"
},
"gasEstimates": {
"creation": {
"codeDepositCost": "237200",
"executionCost": "infinite",
"totalCost": "infinite"
},
"external": {
"_msgSender()": "191",
"isOwner()": "2365",
"owner()": "2342",
"pause()": "29755",
"paused()": "2355",
"renounceOwnership()": "30232",
"transferOwnership(address)": "30460",
"unpause()": "29749"
},
"internal": {
"_transferOwnership(address payable)": "infinite"
}
},
"methodIdentifiers": {
"_msgSender()": "119df25f",
"isOwner()": "8f32d59b",
"owner()": "8da5cb5b",
"pause()": "8456cb59",
"paused()": "5c975abb",
"renounceOwnership()": "715018a6",
"transferOwnership(address)": "f2fde38b",
"unpause()": "3f4ba83a"
}
},
"abi": [
{
"inputs": [
{
"internalType": "address",
"name": "owner",
"type": "address"
}
],
"stateMutability": "nonpayable",
"type": "constructor"
},
{
"anonymous": false,
"inputs": [
{
"indexed": true,
"internalType": "address",
"name": "previousOwner",
"type": "address"
},
{
"indexed": true,
"internalType": "address",
"name": "newOwner",
"type": "address"
}
],
"name": "OwnershipTransferred",
"type": "event"
},
{
"anonymous": false,
"inputs": [
{
"indexed": false,
"internalType": "address",
"name": "account",
"type": "address"
}
],
"name": "Paused",
"type": "event"
},
{
"anonymous": false,
"inputs": [
{
"indexed": false,
"internalType": "address",
"name": "account",
"type": "address"
}
],
"name": "Unpaused",
"type": "event"
},
{
"inputs": [],
"name": "_msgSender",
"outputs": [
{
"internalType": "address",
"name": "",
"type": "address"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [],
"name": "isOwner",
"outputs": [
{
"internalType": "bool",
"name": "",
"type": "bool"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [],
"name": "owner",
"outputs": [
{
"internalType": "address",
"name": "",
"type": "address"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [],
"name": "pause",
"outputs": [],
"stateMutability": "nonpayable",
"type": "function"
},
{
"inputs": [],
"name": "paused",
"outputs": [
{
"internalType": "bool",
"name": "",
"type": "bool"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [],
"name": "renounceOwnership",
"outputs": [],
"stateMutability": "nonpayable",
"type": "function"
},
{
"inputs": [
{
"internalType": "address payable",
"name": "newOwner",
"type": "address"
}
],
"name": "transferOwnership",
"outputs": [],
"stateMutability": "nonpayable",
"type": "function"
},
{
"inputs": [],
"name": "unpause",
"outputs": [],
"stateMutability": "nonpayable",
"type": "function"
}
]
}
{
"compiler": {
"version": "0.8.8+commit.dddeac2f"
},
"language": "Solidity",
"output": {
"abi": [
{
"inputs": [
{
"internalType": "address",
"name": "owner",
"type": "address"
}
],
"stateMutability": "nonpayable",
"type": "constructor"
},
{
"anonymous": false,
"inputs": [
{
"indexed": true,
"internalType": "address",
"name": "previousOwner",
"type": "address"
},
{
"indexed": true,
"internalType": "address",
"name": "newOwner",
"type": "address"
}
],
"name": "OwnershipTransferred",
"type": "event"
},
{
"anonymous": false,
"inputs": [
{
"indexed": false,
"internalType": "address",
"name": "account",
"type": "address"
}
],
"name": "Paused",
"type": "event"
},
{
"anonymous": false,
"inputs": [
{
"indexed": false,
"internalType": "address",
"name": "account",
"type": "address"
}
],
"name": "Unpaused",
"type": "event"
},
{
"inputs": [],
"name": "_msgSender",
"outputs": [
{
"internalType": "address",
"name": "",
"type": "address"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [],
"name": "isOwner",
"outputs": [
{
"internalType": "bool",
"name": "",
"type": "bool"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [],
"name": "owner",
"outputs": [
{
"internalType": "address",
"name": "",
"type": "address"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [],
"name": "pause",
"outputs": [],
"stateMutability": "nonpayable",
"type": "function"
},
{
"inputs": [],
"name": "paused",
"outputs": [
{
"internalType": "bool",
"name": "",
"type": "bool"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [],
"name": "renounceOwnership",
"outputs": [],
"stateMutability": "nonpayable",
"type": "function"
},
{
"inputs": [
{
"internalType": "address payable",
"name": "newOwner",
"type": "address"
}
],
"name": "transferOwnership",
"outputs": [],
"stateMutability": "nonpayable",
"type": "function"
},
{
"inputs": [],
"name": "unpause",
"outputs": [],
"stateMutability": "nonpayable",
"type": "function"
}
],
"devdoc": {
"details": "Contract module which provides a basic access control mechanism, where there is an account (an owner) that can be granted exclusive access to specific functions, for now limited to pausing and destructing the contract. This module is used through inheritance. It will make available the modifier `onlyOwner`, which can be applied to your functions to restrict their use to the owner.",
"events": {
"Paused(address)": {
"details": "Emitted when the pause is triggered by the owner (`account`)."
},
"Unpaused(address)": {
"details": "Emitted when the pause is lifted by the owner (`account`)."
}
},
"kind": "dev",
"methods": {
"constructor": {
"details": "Initializes the contract setting the deployer as the initial owner."
},
"isOwner()": {
"details": "Returns true if the caller is the current owner."
},
"owner()": {
"details": "Returns the address of the current owner."
},
"pause()": {
"details": "Called by the owner to pause, triggers stopped state."
},
"paused()": {
"details": "Returns true if the contract is paused, and false otherwise."
},
"renounceOwnership()": {
"details": "Leaves the contract without owner. It will not be possible to call `onlyOwner` functions anymore. Can only be called by the current owner. NOTE: Renouncing ownership will leave the contract without an owner, thereby removing any functionality that is only available to the owner. Maybe we should delete this or ad a rollback period"
},
"transferOwnership(address)": {
"details": "Transfers ownership of the contract to a new account (`newOwner`). Can only be called by the current owner."
},
"unpause()": {
"details": "Called by the owner to unpause, returns to normal state."
}
},
"version": 1
},
"userdoc": {
"kind": "user",
"methods": {},
"version": 1
}
},
"settings": {
"compilationTarget": {
"contracts/Ownable.sol": "Ownable"
},
"evmVersion": "london",
"libraries": {},
"metadata": {
"bytecodeHash": "ipfs"
},
"optimizer": {
"enabled": true,
"runs": 200
},
"remappings": []
},
"sources": {
"contracts/Context.sol": {
"keccak256": "0xc66537adf0c83f301b3dbc3613d250deee744c771e9a247f977cfd0bb5960ebe",
"license": "GPL-3.0",
"urls": [
"bzz-raw://80dac3ba0eeed99e95b346fed84dc43295237f4c22e700b4d976bbe4557bdfc8",
"dweb:/ipfs/QmZXZ9LjCY8p3NiEpUkDjq4UXSCjNGodoWeZd5tDxdfMYq"
]
},
"contracts/Ownable.sol": {
"keccak256": "0x6fb5153c47bf4779f0446cbafb567e606161410bfe7f094e95b9f1676ad5d4f3",
"license": "GPL-3.0",
"urls": [
"bzz-raw://ac570ea641e1aaa561c35add87b50b2dc08ad1c303ddc5ae8aef5c025f7a8cd5",
"dweb:/ipfs/QmQzRimtSYy3kNVj4jBzPudNJSQaGJYi48n1L55kZrCnhu"
]
}
},
"version": 1
}
{
"deploy": {
"VM:-": {
"linkReferences": {},
"autoDeployLib": true
},
"main:1": {
"linkReferences": {},
"autoDeployLib": true
},
"ropsten:3": {
"linkReferences": {},
"autoDeployLib": true
},
"rinkeby:4": {
"linkReferences": {},
"autoDeployLib": true
},
"kovan:42": {
"linkReferences": {},
"autoDeployLib": true
},
"görli:5": {
"linkReferences": {},
"autoDeployLib": true
},
"Custom": {
"linkReferences": {},
"autoDeployLib": true
}
},
"data": {
"bytecode": {
"functionDebugData": {
"@_40": {
"entryPoint": null,
"id": 40,
"parameterSlots": 0,
"returnSlots": 0
}
},
"generatedSources": [],
"linkReferences": {},
"object": "608060405234801561001057600080fd5b50600080546001600160a01b0319163390811782556040519091907f342827c97908e5e2f71151c08502a66d44b6f758e3ac2f1de95f02eb95f0a735908290a36101848061005f6000396000f3fe608060405234801561001057600080fd5b50600436106100365760003560e01c8063893d20e81461003b578063a6f9dae11461005a575b600080fd5b600054604080516001600160a01b039092168252519081900360200190f35b61006d61006836600461011e565b61006f565b005b6000546001600160a01b031633146100c35760405162461bcd60e51b815260206004820152601360248201527221b0b63632b91034b9903737ba1037bbb732b960691b604482015260640160405180910390fd5b600080546040516001600160a01b03808516939216917f342827c97908e5e2f71151c08502a66d44b6f758e3ac2f1de95f02eb95f0a73591a3600080546001600160a01b0319166001600160a01b0392909216919091179055565b60006020828403121561013057600080fd5b81356001600160a01b038116811461014757600080fd5b939250505056fea2646970667358221220cc4c22bc0538928fc09c4b7c092347db6791cdf59ac914893fdb8b12ff5e221364736f6c63430008090033",
"opcodes": "PUSH1 0x80 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH2 0x10 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x0 DUP1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB NOT AND CALLER SWAP1 DUP2 OR DUP3 SSTORE PUSH1 0x40 MLOAD SWAP1 SWAP2 SWAP1 PUSH32 0x342827C97908E5E2F71151C08502A66D44B6F758E3AC2F1DE95F02EB95F0A735 SWAP1 DUP3 SWAP1 LOG3 PUSH2 0x184 DUP1 PUSH2 0x5F PUSH1 0x0 CODECOPY PUSH1 0x0 RETURN INVALID PUSH1 0x80 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH2 0x10 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x4 CALLDATASIZE LT PUSH2 0x36 JUMPI PUSH1 0x0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0x893D20E8 EQ PUSH2 0x3B JUMPI DUP1 PUSH4 0xA6F9DAE1 EQ PUSH2 0x5A JUMPI JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 SLOAD PUSH1 0x40 DUP1 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 SWAP3 AND DUP3 MSTORE MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 RETURN JUMPDEST PUSH2 0x6D PUSH2 0x68 CALLDATASIZE PUSH1 0x4 PUSH2 0x11E JUMP JUMPDEST PUSH2 0x6F JUMP JUMPDEST STOP JUMPDEST PUSH1 0x0 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND CALLER EQ PUSH2 0xC3 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x13 PUSH1 0x24 DUP3 ADD MSTORE PUSH19 0x21B0B63632B91034B9903737BA1037BBB732B9 PUSH1 0x69 SHL PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x0 DUP1 SLOAD PUSH1 0x40 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP1 DUP6 AND SWAP4 SWAP3 AND SWAP2 PUSH32 0x342827C97908E5E2F71151C08502A66D44B6F758E3AC2F1DE95F02EB95F0A735 SWAP2 LOG3 PUSH1 0x0 DUP1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB NOT AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP3 SWAP1 SWAP3 AND SWAP2 SWAP1 SWAP2 OR SWAP1 SSTORE JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x130 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND DUP2 EQ PUSH2 0x147 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST SWAP4 SWAP3 POP POP POP JUMP INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 0xCC 0x4C 0x22 0xBC SDIV CODESIZE SWAP3 DUP16 0xC0 SWAP13 0x4B PUSH29 0x92347DB6791CDF59AC914893FDB8B12FF5E221364736F6C6343000809 STOP CALLER ",
"sourceMap": "121:1361:0:-:0;;;923:170;;;;;;;;;-1:-1:-1;947:5:0;:18;;-1:-1:-1;;;;;;947:18:0;955:10;947:18;;;;;1059:27;;955:10;;947:5;1059:27;;947:5;;1059:27;121:1361;;;;;;"
},
"deployedBytecode": {
"functionDebugData": {
"@changeOwner_58": {
"entryPoint": 111,
"id": 58,
"parameterSlots": 1,
"returnSlots": 0
},
"@getOwner_67": {
"entryPoint": null,
"id": 67,
"parameterSlots": 0,
"returnSlots": 1
},
"abi_decode_tuple_t_address": {
"entryPoint": 286,
"id": null,
"parameterSlots": 2,
"returnSlots": 1
},
"abi_encode_tuple_t_address__to_t_address__fromStack_reversed": {
"entryPoint": null,
"id": null,
"parameterSlots": 2,
"returnSlots": 1
},
"abi_encode_tuple_t_stringliteral_2d10247a65709fdb3c0696b0ed760a0c246e12f8c496efb56291dd2fe3b0275d__to_t_string_memory_ptr__fromStack_reversed": {
"entryPoint": null,
"id": null,
"parameterSlots": 1,
"returnSlots": 1
}
},
"generatedSources": [
{
"ast": {
"nodeType": "YulBlock",
"src": "0:858:1",
"statements": [
{
"nodeType": "YulBlock",
"src": "6:3:1",
"statements": []
},
{
"body": {
"nodeType": "YulBlock",
"src": "115:102:1",
"statements": [
{
"nodeType": "YulAssignment",
"src": "125:26:1",
"value": {
"arguments": [
{
"name": "headStart",
"nodeType": "YulIdentifier",
"src": "137:9:1"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "148:2:1",
"type": "",
"value": "32"
}
],
"functionName": {
"name": "add",
"nodeType": "YulIdentifier",
"src": "133:3:1"
},
"nodeType": "YulFunctionCall",
"src": "133:18:1"
},
"variableNames": [
{
"name": "tail",
"nodeType": "YulIdentifier",
"src": "125:4:1"
}
]
},
{
"expression": {
"arguments": [
{
"name": "headStart",
"nodeType": "YulIdentifier",
"src": "167:9:1"
},
{
"arguments": [
{
"name": "value0",
"nodeType": "YulIdentifier",
"src": "182:6:1"
},
{
"arguments": [
{
"arguments": [
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "198:3:1",
"type": "",
"value": "160"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "203:1:1",
"type": "",
"value": "1"
}
],
"functionName": {
"name": "shl",
"nodeType": "YulIdentifier",
"src": "194:3:1"
},
"nodeType": "YulFunctionCall",
"src": "194:11:1"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "207:1:1",
"type": "",
"value": "1"
}
],
"functionName": {
"name": "sub",
"nodeType": "YulIdentifier",
"src": "190:3:1"
},
"nodeType": "YulFunctionCall",
"src": "190:19:1"
}
],
"functionName": {
"name": "and",
"nodeType": "YulIdentifier",
"src": "178:3:1"
},
"nodeType": "YulFunctionCall",
"src": "178:32:1"
}
],
"functionName": {
"name": "mstore",
"nodeType": "YulIdentifier",
"src": "160:6:1"
},
"nodeType": "YulFunctionCall",
"src": "160:51:1"
},
"nodeType": "YulExpressionStatement",
"src": "160:51:1"
}
]
},
"name": "abi_encode_tuple_t_address__to_t_address__fromStack_reversed",
"nodeType": "YulFunctionDefinition",
"parameters": [
{
"name": "headStart",
"nodeType": "YulTypedName",
"src": "84:9:1",
"type": ""
},
{
"name": "value0",
"nodeType": "YulTypedName",
"src": "95:6:1",
"type": ""
}
],
"returnVariables": [
{
"name": "tail",
"nodeType": "YulTypedName",
"src": "106:4:1",
"type": ""
}
],
"src": "14:203:1"
},
{
"body": {
"nodeType": "YulBlock",
"src": "292:216:1",
"statements": [
{
"body": {
"nodeType": "YulBlock",
"src": "338:16:1",
"statements": [
{
"expression": {
"arguments": [
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "347:1:1",
"type": "",
"value": "0"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "350:1:1",
"type": "",
"value": "0"
}
],
"functionName": {
"name": "revert",
"nodeType": "YulIdentifier",
"src": "340:6:1"
},
"nodeType": "YulFunctionCall",
"src": "340:12:1"
},
"nodeType": "YulExpressionStatement",
"src": "340:12:1"
}
]
},
"condition": {
"arguments": [
{
"arguments": [
{
"name": "dataEnd",
"nodeType": "YulIdentifier",
"src": "313:7:1"
},
{
"name": "headStart",
"nodeType": "YulIdentifier",
"src": "322:9:1"
}
],
"functionName": {
"name": "sub",
"nodeType": "YulIdentifier",
"src": "309:3:1"
},
"nodeType": "YulFunctionCall",
"src": "309:23:1"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "334:2:1",
"type": "",
"value": "32"
}
],
"functionName": {
"name": "slt",
"nodeType": "YulIdentifier",
"src": "305:3:1"
},
"nodeType": "YulFunctionCall",
"src": "305:32:1"
},
"nodeType": "YulIf",
"src": "302:52:1"
},
{
"nodeType": "YulVariableDeclaration",
"src": "363:36:1",
"value": {
"arguments": [
{
"name": "headStart",
"nodeType": "YulIdentifier",
"src": "389:9:1"
}
],
"functionName": {
"name": "calldataload",
"nodeType": "YulIdentifier",
"src": "376:12:1"
},
"nodeType": "YulFunctionCall",
"src": "376:23:1"
},
"variables": [
{
"name": "value",
"nodeType": "YulTypedName",
"src": "367:5:1",
"type": ""
}
]
},
{
"body": {
"nodeType": "YulBlock",
"src": "462:16:1",
"statements": [
{
"expression": {
"arguments": [
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "471:1:1",
"type": "",
"value": "0"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "474:1:1",
"type": "",
"value": "0"
}
],
"functionName": {
"name": "revert",
"nodeType": "YulIdentifier",
"src": "464:6:1"
},
"nodeType": "YulFunctionCall",
"src": "464:12:1"
},
"nodeType": "YulExpressionStatement",
"src": "464:12:1"
}
]
},
"condition": {
"arguments": [
{
"arguments": [
{
"name": "value",
"nodeType": "YulIdentifier",
"src": "421:5:1"
},
{
"arguments": [
{
"name": "value",
"nodeType": "YulIdentifier",
"src": "432:5:1"
},
{
"arguments": [
{
"arguments": [
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "447:3:1",
"type": "",
"value": "160"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "452:1:1",
"type": "",
"value": "1"
}
],
"functionName": {
"name": "shl",
"nodeType": "YulIdentifier",
"src": "443:3:1"
},
"nodeType": "YulFunctionCall",
"src": "443:11:1"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "456:1:1",
"type": "",
"value": "1"
}
],
"functionName": {
"name": "sub",
"nodeType": "YulIdentifier",
"src": "439:3:1"
},
"nodeType": "YulFunctionCall",
"src": "439:19:1"
}
],
"functionName": {
"name": "and",
"nodeType": "YulIdentifier",
"src": "428:3:1"
},
"nodeType": "YulFunctionCall",
"src": "428:31:1"
}
],
"functionName": {
"name": "eq",
"nodeType": "YulIdentifier",
"src": "418:2:1"
},
"nodeType": "YulFunctionCall",
"src": "418:42:1"
}
],
"functionName": {
"name": "iszero",
"nodeType": "YulIdentifier",
"src": "411:6:1"
},
"nodeType": "YulFunctionCall",
"src": "411:50:1"
},
"nodeType": "YulIf",
"src": "408:70:1"
},
{
"nodeType": "YulAssignment",
"src": "487:15:1",
"value": {
"name": "value",
"nodeType": "YulIdentifier",
"src": "497:5:1"
},
"variableNames": [
{
"name": "value0",
"nodeType": "YulIdentifier",
"src": "487:6:1"
}
]
}
]
},
"name": "abi_decode_tuple_t_address",
"nodeType": "YulFunctionDefinition",
"parameters": [
{
"name": "headStart",
"nodeType": "YulTypedName",
"src": "258:9:1",
"type": ""
},
{
"name": "dataEnd",
"nodeType": "YulTypedName",
"src": "269:7:1",
"type": ""
}
],
"returnVariables": [
{
"name": "value0",
"nodeType": "YulTypedName",
"src": "281:6:1",
"type": ""
}
],
"src": "222:286:1"
},
{
"body": {
"nodeType": "YulBlock",
"src": "687:169:1",
"statements": [
{
"expression": {
"arguments": [
{
"name": "headStart",
"nodeType": "YulIdentifier",
"src": "704:9:1"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "715:2:1",
"type": "",
"value": "32"
}
],
"functionName": {
"name": "mstore",
"nodeType": "YulIdentifier",
"src": "697:6:1"
},
"nodeType": "YulFunctionCall",
"src": "697:21:1"
},
"nodeType": "YulExpressionStatement",
"src": "697:21:1"
},
{
"expression": {
"arguments": [
{
"arguments": [
{
"name": "headStart",
"nodeType": "YulIdentifier",
"src": "738:9:1"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "749:2:1",
"type": "",
"value": "32"
}
],
"functionName": {
"name": "add",
"nodeType": "YulIdentifier",
"src": "734:3:1"
},
"nodeType": "YulFunctionCall",
"src": "734:18:1"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "754:2:1",
"type": "",
"value": "19"
}
],
"functionName": {
"name": "mstore",
"nodeType": "YulIdentifier",
"src": "727:6:1"
},
"nodeType": "YulFunctionCall",
"src": "727:30:1"
},
"nodeType": "YulExpressionStatement",
"src": "727:30:1"
},
{
"expression": {
"arguments": [
{
"arguments": [
{
"name": "headStart",
"nodeType": "YulIdentifier",
"src": "777:9:1"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "788:2:1",
"type": "",
"value": "64"
}
],
"functionName": {
"name": "add",
"nodeType": "YulIdentifier",
"src": "773:3:1"
},
"nodeType": "YulFunctionCall",
"src": "773:18:1"
},
{
"hexValue": "43616c6c6572206973206e6f74206f776e6572",
"kind": "string",
"nodeType": "YulLiteral",
"src": "793:21:1",
"type": "",
"value": "Caller is not owner"
}
],
"functionName": {
"name": "mstore",
"nodeType": "YulIdentifier",
"src": "766:6:1"
},
"nodeType": "YulFunctionCall",
"src": "766:49:1"
},
"nodeType": "YulExpressionStatement",
"src": "766:49:1"
},
{
"nodeType": "YulAssignment",
"src": "824:26:1",
"value": {
"arguments": [
{
"name": "headStart",
"nodeType": "YulIdentifier",
"src": "836:9:1"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "847:2:1",
"type": "",
"value": "96"
}
],
"functionName": {
"name": "add",
"nodeType": "YulIdentifier",
"src": "832:3:1"
},
"nodeType": "YulFunctionCall",
"src": "832:18:1"
},
"variableNames": [
{
"name": "tail",
"nodeType": "YulIdentifier",
"src": "824:4:1"
}
]
}
]
},
"name": "abi_encode_tuple_t_stringliteral_2d10247a65709fdb3c0696b0ed760a0c246e12f8c496efb56291dd2fe3b0275d__to_t_string_memory_ptr__fromStack_reversed",
"nodeType": "YulFunctionDefinition",
"parameters": [
{
"name": "headStart",
"nodeType": "YulTypedName",
"src": "664:9:1",
"type": ""
}
],
"returnVariables": [
{
"name": "tail",
"nodeType": "YulTypedName",
"src": "678:4:1",
"type": ""
}
],
"src": "513:343:1"
}
]
},
"contents": "{\n { }\n function abi_encode_tuple_t_address__to_t_address__fromStack_reversed(headStart, value0) -> tail\n {\n tail := add(headStart, 32)\n mstore(headStart, and(value0, sub(shl(160, 1), 1)))\n }\n function abi_decode_tuple_t_address(headStart, dataEnd) -> value0\n {\n if slt(sub(dataEnd, headStart), 32) { revert(0, 0) }\n let value := calldataload(headStart)\n if iszero(eq(value, and(value, sub(shl(160, 1), 1)))) { revert(0, 0) }\n value0 := value\n }\n function abi_encode_tuple_t_stringliteral_2d10247a65709fdb3c0696b0ed760a0c246e12f8c496efb56291dd2fe3b0275d__to_t_string_memory_ptr__fromStack_reversed(headStart) -> tail\n {\n mstore(headStart, 32)\n mstore(add(headStart, 32), 19)\n mstore(add(headStart, 64), \"Caller is not owner\")\n tail := add(headStart, 96)\n }\n}",
"id": 1,
"language": "Yul",
"name": "#utility.yul"
}
],
"immutableReferences": {},
"linkReferences": {},
"object": "608060405234801561001057600080fd5b50600436106100365760003560e01c8063893d20e81461003b578063a6f9dae11461005a575b600080fd5b600054604080516001600160a01b039092168252519081900360200190f35b61006d61006836600461011e565b61006f565b005b6000546001600160a01b031633146100c35760405162461bcd60e51b815260206004820152601360248201527221b0b63632b91034b9903737ba1037bbb732b960691b604482015260640160405180910390fd5b600080546040516001600160a01b03808516939216917f342827c97908e5e2f71151c08502a66d44b6f758e3ac2f1de95f02eb95f0a73591a3600080546001600160a01b0319166001600160a01b0392909216919091179055565b60006020828403121561013057600080fd5b81356001600160a01b038116811461014757600080fd5b939250505056fea2646970667358221220cc4c22bc0538928fc09c4b7c092347db6791cdf59ac914893fdb8b12ff5e221364736f6c63430008090033",
"opcodes": "PUSH1 0x80 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH2 0x10 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x4 CALLDATASIZE LT PUSH2 0x36 JUMPI PUSH1 0x0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0x893D20E8 EQ PUSH2 0x3B JUMPI DUP1 PUSH4 0xA6F9DAE1 EQ PUSH2 0x5A JUMPI JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 SLOAD PUSH1 0x40 DUP1 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 SWAP3 AND DUP3 MSTORE MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 RETURN JUMPDEST PUSH2 0x6D PUSH2 0x68 CALLDATASIZE PUSH1 0x4 PUSH2 0x11E JUMP JUMPDEST PUSH2 0x6F JUMP JUMPDEST STOP JUMPDEST PUSH1 0x0 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND CALLER EQ PUSH2 0xC3 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x13 PUSH1 0x24 DUP3 ADD MSTORE PUSH19 0x21B0B63632B91034B9903737BA1037BBB732B9 PUSH1 0x69 SHL PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x0 DUP1 SLOAD PUSH1 0x40 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP1 DUP6 AND SWAP4 SWAP3 AND SWAP2 PUSH32 0x342827C97908E5E2F71151C08502A66D44B6F758E3AC2F1DE95F02EB95F0A735 SWAP2 LOG3 PUSH1 0x0 DUP1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB NOT AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP3 SWAP1 SWAP3 AND SWAP2 SWAP1 SWAP2 OR SWAP1 SSTORE JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x130 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND DUP2 EQ PUSH2 0x147 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST SWAP4 SWAP3 POP POP POP JUMP INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 0xCC 0x4C 0x22 0xBC SDIV CODESIZE SWAP3 DUP16 0xC0 SWAP13 0x4B PUSH29 0x92347DB6791CDF59AC914893FDB8B12FF5E221364736F6C6343000809 STOP CALLER ",
"sourceMap": "121:1361:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1399:81;1442:7;1468:5;1399:81;;;-1:-1:-1;;;;;1468:5:0;;;160:51:1;;1399:81:0;;;;;148:2:1;1399:81:0;;;1184:127;;;;;;:::i;:::-;;:::i;:::-;;;807:5;;-1:-1:-1;;;;;807:5:0;793:10;:19;785:51;;;;-1:-1:-1;;;785:51:0;;715:2:1;785:51:0;;;697:21:1;754:2;734:18;;;727:30;-1:-1:-1;;;773:18:1;;;766:49;832:18;;785:51:0;;;;;;;;1262:5:::1;::::0;;1253:25:::1;::::0;-1:-1:-1;;;;;1253:25:0;;::::1;::::0;1262:5;::::1;::::0;1253:25:::1;::::0;::::1;1288:5;:16:::0;;-1:-1:-1;;;;;;1288:16:0::1;-1:-1:-1::0;;;;;1288:16:0;;;::::1;::::0;;;::::1;::::0;;1184:127::o;222:286:1:-;281:6;334:2;322:9;313:7;309:23;305:32;302:52;;;350:1;347;340:12;302:52;376:23;;-1:-1:-1;;;;;428:31:1;;418:42;;408:70;;474:1;471;464:12;408:70;497:5;222:286;-1:-1:-1;;;222:286:1:o"
},
"gasEstimates": {
"creation": {
"codeDepositCost": "77600",
"executionCost": "25897",
"totalCost": "103497"
},
"external": {
"changeOwner(address)": "30330",
"getOwner()": "2270"
}
},
"methodIdentifiers": {
"changeOwner(address)": "a6f9dae1",
"getOwner()": "893d20e8"
}
},
"abi": [
{
"inputs": [],
"stateMutability": "nonpayable",
"type": "constructor"
},
{
"anonymous": false,
"inputs": [
{
"indexed": true,
"internalType": "address",
"name": "oldOwner",
"type": "address"
},
{
"indexed": true,
"internalType": "address",
"name": "newOwner",
"type": "address"
}
],
"name": "OwnerSet",
"type": "event"
},
{
"inputs": [
{
"internalType": "address",
"name": "newOwner",
"type": "address"
}
],
"name": "changeOwner",
"outputs": [],
"stateMutability": "nonpayable",
"type": "function"
},
{
"inputs": [],
"name": "getOwner",
"outputs": [
{
"internalType": "address",
"name": "",
"type": "address"
}
],
"stateMutability": "view",
"type": "function"
}
]
}
{
"compiler": {
"version": "0.8.9+commit.e5eed63a"
},
"language": "Solidity",
"output": {
"abi": [
{
"inputs": [],
"stateMutability": "nonpayable",
"type": "constructor"
},
{
"anonymous": false,
"inputs": [
{
"indexed": true,
"internalType": "address",
"name": "oldOwner",
"type": "address"
},
{
"indexed": true,
"internalType": "address",
"name": "newOwner",
"type": "address"
}
],
"name": "OwnerSet",
"type": "event"
},
{
"inputs": [
{
"internalType": "address",
"name": "newOwner",
"type": "address"
}
],
"name": "changeOwner",
"outputs": [],
"stateMutability": "nonpayable",
"type": "function"
},
{
"inputs": [],
"name": "getOwner",
"outputs": [
{
"internalType": "address",
"name": "",
"type": "address"
}
],
"stateMutability": "view",
"type": "function"
}
],
"devdoc": {
"details": "Set & change owner",
"kind": "dev",
"methods": {
"changeOwner(address)": {
"details": "Change owner",
"params": {
"newOwner": "address of new owner"
}
},
"constructor": {
"details": "Set contract deployer as owner"
},
"getOwner()": {
"details": "Return owner address ",
"returns": {
"_0": "address of owner"
}
}
},
"title": "Owner",
"version": 1
},
"userdoc": {
"kind": "user",
"methods": {},
"version": 1
}
},
"settings": {
"compilationTarget": {
"contracts/2_Owner.sol": "Owner"
},
"evmVersion": "london",
"libraries": {},
"metadata": {
"bytecodeHash": "ipfs"
},
"optimizer": {
"enabled": true,
"runs": 200
},
"remappings": []
},
"sources": {
"contracts/2_Owner.sol": {
"keccak256": "0x1e624ada939528fff73575187024d951aa6d33d4cbaad97ecf1f3e2a7d717583",
"license": "GPL-3.0",
"urls": [
"bzz-raw://e3f3c6ab93acd1a8bd389f852149d59b6d713efc51458ff95bba42c3329fb0d1",
"dweb:/ipfs/QmP7NEPrSbYRM4DzpJ31YUC2KNXUX4USuQk3jMNRUdzVyV"
]
}
},
"version": 1
}
{
"deploy": {
"VM:-": {
"linkReferences": {},
"autoDeployLib": true
},
"main:1": {
"linkReferences": {},
"autoDeployLib": true
},
"ropsten:3": {
"linkReferences": {},
"autoDeployLib": true
},
"rinkeby:4": {
"linkReferences": {},
"autoDeployLib": true
},
"kovan:42": {
"linkReferences": {},
"autoDeployLib": true
},
"görli:5": {
"linkReferences": {},
"autoDeployLib": true
},
"Custom": {
"linkReferences": {},
"autoDeployLib": true
}
},
"data": {
"bytecode": {
"functionDebugData": {},
"generatedSources": [],
"linkReferences": {},
"object": "",
"opcodes": "",
"sourceMap": ""
},
"deployedBytecode": {
"functionDebugData": {},
"generatedSources": [],
"immutableReferences": {},
"linkReferences": {},
"object": "",
"opcodes": "",
"sourceMap": ""
},
"gasEstimates": null,
"methodIdentifiers": {}
},
"abi": [
{
"stateMutability": "payable",
"type": "fallback"
},
{
"stateMutability": "payable",
"type": "receive"
}
]
}
{
"compiler": {
"version": "0.8.9+commit.e5eed63a"
},
"language": "Solidity",
"output": {
"abi": [
{
"stateMutability": "payable",
"type": "fallback"
},
{
"stateMutability": "payable",
"type": "receive"
}
],
"devdoc": {
"details": "This abstract contract provides a fallback function that delegates all calls to another contract using the EVM instruction `delegatecall`. We refer to the second contract as the _implementation_ behind the proxy, and it has to be specified by overriding the virtual {_implementation} function. Additionally, delegation to the implementation can be triggered manually through the {_fallback} function, or to a different contract through the {_delegate} function. The success and return data of the delegated call will be returned back to the caller of the proxy.",
"kind": "dev",
"methods": {},
"version": 1
},
"userdoc": {
"kind": "user",
"methods": {},
"version": 1
}
},
"settings": {
"compilationTarget": {
"contracts/Proxy.sol": "Proxy"
},
"evmVersion": "london",
"libraries": {},
"metadata": {
"bytecodeHash": "ipfs"
},
"optimizer": {
"enabled": true,
"runs": 200
},
"remappings": []
},
"sources": {
"contracts/Proxy.sol": {
"keccak256": "0x9b3a3935fe1a062dedd388b8eebcb69ba4aca9965bda67055296bcc535fcc081",
"license": "MIT",
"urls": [
"bzz-raw://1ca657a00b3691c7751da4f7a62673d37a1b28886f747ec58a949323e40c35c8",
"dweb:/ipfs/Qmc2dRG738K7xz6mzF1fY5y1hYBgsrP8J6hpy6k64er8Vi"
]
}
},
"version": 1
}
{
"deploy": {
"VM:-": {
"linkReferences": {},
"autoDeployLib": true
},
"main:1": {
"linkReferences": {},
"autoDeployLib": true
},
"ropsten:3": {
"linkReferences": {},
"autoDeployLib": true
},
"rinkeby:4": {
"linkReferences": {},
"autoDeployLib": true
},
"kovan:42": {
"linkReferences": {},
"autoDeployLib": true
},
"görli:5": {
"linkReferences": {},
"autoDeployLib": true
},
"Custom": {
"linkReferences": {},
"autoDeployLib": true
}
},
"data": {
"bytecode": {
"functionDebugData": {},
"generatedSources": [],
"linkReferences": {},
"object": "60566037600b82828239805160001a607314602a57634e487b7160e01b600052600060045260246000fd5b30600052607381538281f3fe73000000000000000000000000000000000000000030146080604052600080fdfea2646970667358221220577867a5fa511baf1bda1f0bb5c1d488a93b67d9460e7bbc7d58b5adf15dac2264736f6c63430008090033",
"opcodes": "PUSH1 0x56 PUSH1 0x37 PUSH1 0xB DUP3 DUP3 DUP3 CODECOPY DUP1 MLOAD PUSH1 0x0 BYTE PUSH1 0x73 EQ PUSH1 0x2A JUMPI PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH1 0x0 MSTORE PUSH1 0x0 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST ADDRESS PUSH1 0x0 MSTORE PUSH1 0x73 DUP2 MSTORE8 DUP3 DUP2 RETURN INVALID PUSH20 0x0 ADDRESS EQ PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x0 DUP1 REVERT INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 JUMPI PUSH25 0x67A5FA511BAF1BDA1F0BB5C1D488A93B67D9460E7BBC7D58B5 0xAD CALL 0x5D 0xAC 0x22 PUSH5 0x736F6C6343 STOP ADDMOD MULMOD STOP CALLER ",
"sourceMap": "398:6301:0:-:0;;;;;;;;;;;;;;;-1:-1:-1;;;398:6301:0;;;;;;;;;;;;;;;;;"
},
"deployedBytecode": {
"functionDebugData": {},
"generatedSources": [],
"immutableReferences": {},
"linkReferences": {},
"object": "73000000000000000000000000000000000000000030146080604052600080fdfea2646970667358221220577867a5fa511baf1bda1f0bb5c1d488a93b67d9460e7bbc7d58b5adf15dac2264736f6c63430008090033",
"opcodes": "PUSH20 0x0 ADDRESS EQ PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x0 DUP1 REVERT INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 JUMPI PUSH25 0x67A5FA511BAF1BDA1F0BB5C1D488A93B67D9460E7BBC7D58B5 0xAD CALL 0x5D 0xAC 0x22 PUSH5 0x736F6C6343 STOP ADDMOD MULMOD STOP CALLER ",
"sourceMap": "398:6301:0:-:0;;;;;;;;"
},
"gasEstimates": {
"creation": {
"codeDepositCost": "17200",
"executionCost": "103",
"totalCost": "17303"
},
"internal": {
"add(uint256,uint256)": "infinite",
"div(uint256,uint256)": "infinite",
"div(uint256,uint256,string memory)": "infinite",
"mod(uint256,uint256)": "infinite",
"mod(uint256,uint256,string memory)": "infinite",
"mul(uint256,uint256)": "infinite",
"sub(uint256,uint256)": "infinite",
"sub(uint256,uint256,string memory)": "infinite",
"tryAdd(uint256,uint256)": "infinite",
"tryDiv(uint256,uint256)": "infinite",
"tryMod(uint256,uint256)": "infinite",
"tryMul(uint256,uint256)": "infinite",
"trySub(uint256,uint256)": "infinite"
}
},
"methodIdentifiers": {}
},
"abi": []
}
{
"compiler": {
"version": "0.8.9+commit.e5eed63a"
},
"language": "Solidity",
"output": {
"abi": [],
"devdoc": {
"details": "Wrappers over Solidity's arithmetic operations. NOTE: `SafeMath` is no longer needed starting with Solidity 0.8. The compiler now has built in overflow checking.",
"kind": "dev",
"methods": {},
"version": 1
},
"userdoc": {
"kind": "user",
"methods": {},
"version": 1
}
},
"settings": {
"compilationTarget": {
"contracts/SafeMath.sol": "SafeMath"
},
"evmVersion": "london",
"libraries": {},
"metadata": {
"bytecodeHash": "ipfs"
},
"optimizer": {
"enabled": true,
"runs": 200
},
"remappings": []
},
"sources": {
"contracts/SafeMath.sol": {
"keccak256": "0x7408e0b6e09c3e683d0666d319daaf6f2b4e2b1c063dd9f857c4af5158491021",
"license": "MIT",
"urls": [
"bzz-raw://55a9f1585597d72b8b18578a6e6c13f8716e00bd806325babb42db1d12361429",
"dweb:/ipfs/QmfYUash3a9F22mQWAmH2ZW94nm66hJe8s7jy5xyq5o1q8"
]
}
},
"version": 1
}
{
"deploy": {
"VM:-": {
"linkReferences": {},
"autoDeployLib": true
},
"main:1": {
"linkReferences": {},
"autoDeployLib": true
},
"ropsten:3": {
"linkReferences": {},
"autoDeployLib": true
},
"rinkeby:4": {
"linkReferences": {},
"autoDeployLib": true
},
"kovan:42": {
"linkReferences": {},
"autoDeployLib": true
},
"görli:5": {
"linkReferences": {},
"autoDeployLib": true
},
"Custom": {
"linkReferences": {},
"autoDeployLib": true
}
},
"data": {
"bytecode": {
"linkReferences": {},
"object": "60c0604052601260808190527f53696d706c6520455243323020546f6b656e000000000000000000000000000060a090815261003e91600191906100ff565b506040805180820190915260038082527f53455400000000000000000000000000000000000000000000000000000000006020909201918252610083916002916100ff565b5060038054601260ff19909116179081905560ff16600a0a620f4240026004553480156100af57600080fd5b5060045433600081815260208181526040808320859055805194855251929391927fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9281900390910190a361019a565b828054600181600116156101000203166002900490600052602060002090601f016020900481019282601f1061014057805160ff191683800117855561016d565b8280016001018555821561016d579182015b8281111561016d578251825591602001919060010190610152565b5061017992915061017d565b5090565b61019791905b808211156101795760008155600101610183565b90565b610576806101a96000396000f3006080604052600436106100985763ffffffff7c010000000000000000000000000000000000000000000000000000000060003504166306fdde03811461009d578063095ea7b31461012757806318160ddd1461015f57806323b872dd14610186578063313ce567146101b057806370a08231146101db57806395d89b41146101fc578063a9059cbb14610211578063dd62ed3e14610235575b600080fd5b3480156100a957600080fd5b506100b261025c565b6040805160208082528351818301528351919283929083019185019080838360005b838110156100ec5781810151838201526020016100d4565b50505050905090810190601f1680156101195780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b34801561013357600080fd5b5061014b600160a060020a03600435166024356102e9565b604080519115158252519081900360200190f35b34801561016b57600080fd5b5061017461034f565b60408051918252519081900360200190f35b34801561019257600080fd5b5061014b600160a060020a0360043581169060243516604435610355565b3480156101bc57600080fd5b506101c5610432565b6040805160ff9092168252519081900360200190f35b3480156101e757600080fd5b50610174600160a060020a036004351661043b565b34801561020857600080fd5b506100b261044d565b34801561021d57600080fd5b5061014b600160a060020a03600435166024356104a5565b34801561024157600080fd5b50610174600160a060020a036004358116906024351661052d565b60018054604080516020600284861615610100026000190190941693909304601f810184900484028201840190925281815292918301828280156102e15780601f106102b6576101008083540402835291602001916102e1565b820191906000526020600020905b8154815290600101906020018083116102c457829003601f168201915b505050505081565b336000818152600560209081526040808320600160a060020a038716808552908352818420869055815186815291519394909390927f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925928290030190a350600192915050565b60045481565b600160a060020a03831660009081526020819052604081205482111561037a57600080fd5b600160a060020a03841660009081526005602090815260408083203384529091529020548211156103aa57600080fd5b600160a060020a038085166000818152602081815260408083208054889003905593871680835284832080548801905583835260058252848320338452825291849020805487900390558351868152935191937fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef929081900390910190a35060019392505050565b60035460ff1681565b60006020819052908152604090205481565b6002805460408051602060018416156101000260001901909316849004601f810184900484028201840190925281815292918301828280156102e15780601f106102b6576101008083540402835291602001916102e1565b336000908152602081905260408120548211156104c157600080fd5b3360008181526020818152604080832080548790039055600160a060020a03871680845292819020805487019055805186815290519293927fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef929181900390910190a350600192915050565b6005602090815260009283526040808420909152908252902054815600a165627a7a72305820d3b6bf69b2fb29070a3cd896ce84095a04cd89dc5ed6de6626ebdefd089f0f8e0029",
"opcodes": "PUSH1 0xC0 PUSH1 0x40 MSTORE PUSH1 0x12 PUSH1 0x80 DUP2 SWAP1 MSTORE PUSH32 0x53696D706C6520455243323020546F6B656E0000000000000000000000000000 PUSH1 0xA0 SWAP1 DUP2 MSTORE PUSH2 0x3E SWAP2 PUSH1 0x1 SWAP2 SWAP1 PUSH2 0xFF JUMP JUMPDEST POP PUSH1 0x40 DUP1 MLOAD DUP1 DUP3 ADD SWAP1 SWAP2 MSTORE PUSH1 0x3 DUP1 DUP3 MSTORE PUSH32 0x5345540000000000000000000000000000000000000000000000000000000000 PUSH1 0x20 SWAP1 SWAP3 ADD SWAP2 DUP3 MSTORE PUSH2 0x83 SWAP2 PUSH1 0x2 SWAP2 PUSH2 0xFF JUMP JUMPDEST POP PUSH1 0x3 DUP1 SLOAD PUSH1 0x12 PUSH1 0xFF NOT SWAP1 SWAP2 AND OR SWAP1 DUP2 SWAP1 SSTORE PUSH1 0xFF AND PUSH1 0xA EXP PUSH3 0xF4240 MUL PUSH1 0x4 SSTORE CALLVALUE DUP1 ISZERO PUSH2 0xAF JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x4 SLOAD CALLER PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0x20 DUP2 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 DUP6 SWAP1 SSTORE DUP1 MLOAD SWAP5 DUP6 MSTORE MLOAD SWAP3 SWAP4 SWAP2 SWAP3 PUSH32 0xDDF252AD1BE2C89B69C2B068FC378DAA952BA7F163C4A11628F55A4DF523B3EF SWAP3 DUP2 SWAP1 SUB SWAP1 SWAP2 ADD SWAP1 LOG3 PUSH2 0x19A JUMP JUMPDEST DUP3 DUP1 SLOAD PUSH1 0x1 DUP2 PUSH1 0x1 AND ISZERO PUSH2 0x100 MUL SUB AND PUSH1 0x2 SWAP1 DIV SWAP1 PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 KECCAK256 SWAP1 PUSH1 0x1F ADD PUSH1 0x20 SWAP1 DIV DUP2 ADD SWAP3 DUP3 PUSH1 0x1F LT PUSH2 0x140 JUMPI DUP1 MLOAD PUSH1 0xFF NOT AND DUP4 DUP1 ADD OR DUP6 SSTORE PUSH2 0x16D JUMP JUMPDEST DUP3 DUP1 ADD PUSH1 0x1 ADD DUP6 SSTORE DUP3 ISZERO PUSH2 0x16D JUMPI SWAP2 DUP3 ADD JUMPDEST DUP3 DUP2 GT ISZERO PUSH2 0x16D JUMPI DUP3 MLOAD DUP3 SSTORE SWAP2 PUSH1 0x20 ADD SWAP2 SWAP1 PUSH1 0x1 ADD SWAP1 PUSH2 0x152 JUMP JUMPDEST POP PUSH2 0x179 SWAP3 SWAP2 POP PUSH2 0x17D JUMP JUMPDEST POP SWAP1 JUMP JUMPDEST PUSH2 0x197 SWAP2 SWAP1 JUMPDEST DUP1 DUP3 GT ISZERO PUSH2 0x179 JUMPI PUSH1 0x0 DUP2 SSTORE PUSH1 0x1 ADD PUSH2 0x183 JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0x576 DUP1 PUSH2 0x1A9 PUSH1 0x0 CODECOPY PUSH1 0x0 RETURN STOP PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x4 CALLDATASIZE LT PUSH2 0x98 JUMPI PUSH4 0xFFFFFFFF PUSH29 0x100000000000000000000000000000000000000000000000000000000 PUSH1 0x0 CALLDATALOAD DIV AND PUSH4 0x6FDDE03 DUP2 EQ PUSH2 0x9D JUMPI DUP1 PUSH4 0x95EA7B3 EQ PUSH2 0x127 JUMPI DUP1 PUSH4 0x18160DDD EQ PUSH2 0x15F JUMPI DUP1 PUSH4 0x23B872DD EQ PUSH2 0x186 JUMPI DUP1 PUSH4 0x313CE567 EQ PUSH2 0x1B0 JUMPI DUP1 PUSH4 0x70A08231 EQ PUSH2 0x1DB JUMPI DUP1 PUSH4 0x95D89B41 EQ PUSH2 0x1FC JUMPI DUP1 PUSH4 0xA9059CBB EQ PUSH2 0x211 JUMPI DUP1 PUSH4 0xDD62ED3E EQ PUSH2 0x235 JUMPI JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0xA9 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0xB2 PUSH2 0x25C JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0x20 DUP1 DUP3 MSTORE DUP4 MLOAD DUP2 DUP4 ADD MSTORE DUP4 MLOAD SWAP2 SWAP3 DUP4 SWAP3 SWAP1 DUP4 ADD SWAP2 DUP6 ADD SWAP1 DUP1 DUP4 DUP4 PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0xEC JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH2 0xD4 JUMP JUMPDEST POP POP POP POP SWAP1 POP SWAP1 DUP2 ADD SWAP1 PUSH1 0x1F AND DUP1 ISZERO PUSH2 0x119 JUMPI DUP1 DUP3 SUB DUP1 MLOAD PUSH1 0x1 DUP4 PUSH1 0x20 SUB PUSH2 0x100 EXP SUB NOT AND DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP JUMPDEST POP SWAP3 POP POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x133 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x14B PUSH1 0x1 PUSH1 0xA0 PUSH1 0x2 EXP SUB PUSH1 0x4 CALLDATALOAD AND PUSH1 0x24 CALLDATALOAD PUSH2 0x2E9 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD SWAP2 ISZERO ISZERO DUP3 MSTORE MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 RETURN JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x16B JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x174 PUSH2 0x34F JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD SWAP2 DUP3 MSTORE MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 RETURN JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x192 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x14B PUSH1 0x1 PUSH1 0xA0 PUSH1 0x2 EXP SUB PUSH1 0x4 CALLDATALOAD DUP2 AND SWAP1 PUSH1 0x24 CALLDATALOAD AND PUSH1 0x44 CALLDATALOAD PUSH2 0x355 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x1BC JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x1C5 PUSH2 0x432 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0xFF SWAP1 SWAP3 AND DUP3 MSTORE MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 RETURN JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x1E7 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x174 PUSH1 0x1 PUSH1 0xA0 PUSH1 0x2 EXP SUB PUSH1 0x4 CALLDATALOAD AND PUSH2 0x43B JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x208 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0xB2 PUSH2 0x44D JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x21D JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x14B PUSH1 0x1 PUSH1 0xA0 PUSH1 0x2 EXP SUB PUSH1 0x4 CALLDATALOAD AND PUSH1 0x24 CALLDATALOAD PUSH2 0x4A5 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x241 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x174 PUSH1 0x1 PUSH1 0xA0 PUSH1 0x2 EXP SUB PUSH1 0x4 CALLDATALOAD DUP2 AND SWAP1 PUSH1 0x24 CALLDATALOAD AND PUSH2 0x52D JUMP JUMPDEST PUSH1 0x1 DUP1 SLOAD PUSH1 0x40 DUP1 MLOAD PUSH1 0x20 PUSH1 0x2 DUP5 DUP7 AND ISZERO PUSH2 0x100 MUL PUSH1 0x0 NOT ADD SWAP1 SWAP5 AND SWAP4 SWAP1 SWAP4 DIV PUSH1 0x1F DUP2 ADD DUP5 SWAP1 DIV DUP5 MUL DUP3 ADD DUP5 ADD SWAP1 SWAP3 MSTORE DUP2 DUP2 MSTORE SWAP3 SWAP2 DUP4 ADD DUP3 DUP3 DUP1 ISZERO PUSH2 0x2E1 JUMPI DUP1 PUSH1 0x1F LT PUSH2 0x2B6 JUMPI PUSH2 0x100 DUP1 DUP4 SLOAD DIV MUL DUP4 MSTORE SWAP2 PUSH1 0x20 ADD SWAP2 PUSH2 0x2E1 JUMP JUMPDEST DUP3 ADD SWAP2 SWAP1 PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 KECCAK256 SWAP1 JUMPDEST DUP2 SLOAD DUP2 MSTORE SWAP1 PUSH1 0x1 ADD SWAP1 PUSH1 0x20 ADD DUP1 DUP4 GT PUSH2 0x2C4 JUMPI DUP3 SWAP1 SUB PUSH1 0x1F AND DUP3 ADD SWAP2 JUMPDEST POP POP POP POP POP DUP2 JUMP JUMPDEST CALLER PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0x5 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 PUSH1 0x1 PUSH1 0xA0 PUSH1 0x2 EXP SUB DUP8 AND DUP1 DUP6 MSTORE SWAP1 DUP4 MSTORE DUP2 DUP5 KECCAK256 DUP7 SWAP1 SSTORE DUP2 MLOAD DUP7 DUP2 MSTORE SWAP2 MLOAD SWAP4 SWAP5 SWAP1 SWAP4 SWAP1 SWAP3 PUSH32 0x8C5BE1E5EBEC7D5BD14F71427D1E84F3DD0314C0F7B2291E5B200AC8C7C3B925 SWAP3 DUP3 SWAP1 SUB ADD SWAP1 LOG3 POP PUSH1 0x1 SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x4 SLOAD DUP2 JUMP JUMPDEST PUSH1 0x1 PUSH1 0xA0 PUSH1 0x2 EXP SUB DUP4 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x20 DUP2 SWAP1 MSTORE PUSH1 0x40 DUP2 KECCAK256 SLOAD DUP3 GT ISZERO PUSH2 0x37A JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x1 PUSH1 0xA0 PUSH1 0x2 EXP SUB DUP5 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x5 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 CALLER DUP5 MSTORE SWAP1 SWAP2 MSTORE SWAP1 KECCAK256 SLOAD DUP3 GT ISZERO PUSH2 0x3AA JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x1 PUSH1 0xA0 PUSH1 0x2 EXP SUB DUP1 DUP6 AND PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0x20 DUP2 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 DUP1 SLOAD DUP9 SWAP1 SUB SWAP1 SSTORE SWAP4 DUP8 AND DUP1 DUP4 MSTORE DUP5 DUP4 KECCAK256 DUP1 SLOAD DUP9 ADD SWAP1 SSTORE DUP4 DUP4 MSTORE PUSH1 0x5 DUP3 MSTORE DUP5 DUP4 KECCAK256 CALLER DUP5 MSTORE DUP3 MSTORE SWAP2 DUP5 SWAP1 KECCAK256 DUP1 SLOAD DUP8 SWAP1 SUB SWAP1 SSTORE DUP4 MLOAD DUP7 DUP2 MSTORE SWAP4 MLOAD SWAP2 SWAP4 PUSH32 0xDDF252AD1BE2C89B69C2B068FC378DAA952BA7F163C4A11628F55A4DF523B3EF SWAP3 SWAP1 DUP2 SWAP1 SUB SWAP1 SWAP2 ADD SWAP1 LOG3 POP PUSH1 0x1 SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x3 SLOAD PUSH1 0xFF AND DUP2 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP2 SWAP1 MSTORE SWAP1 DUP2 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD DUP2 JUMP JUMPDEST PUSH1 0x2 DUP1 SLOAD PUSH1 0x40 DUP1 MLOAD PUSH1 0x20 PUSH1 0x1 DUP5 AND ISZERO PUSH2 0x100 MUL PUSH1 0x0 NOT ADD SWAP1 SWAP4 AND DUP5 SWAP1 DIV PUSH1 0x1F DUP2 ADD DUP5 SWAP1 DIV DUP5 MUL DUP3 ADD DUP5 ADD SWAP1 SWAP3 MSTORE DUP2 DUP2 MSTORE SWAP3 SWAP2 DUP4 ADD DUP3 DUP3 DUP1 ISZERO PUSH2 0x2E1 JUMPI DUP1 PUSH1 0x1F LT PUSH2 0x2B6 JUMPI PUSH2 0x100 DUP1 DUP4 SLOAD DIV MUL DUP4 MSTORE SWAP2 PUSH1 0x20 ADD SWAP2 PUSH2 0x2E1 JUMP JUMPDEST CALLER PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x20 DUP2 SWAP1 MSTORE PUSH1 0x40 DUP2 KECCAK256 SLOAD DUP3 GT ISZERO PUSH2 0x4C1 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST CALLER PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0x20 DUP2 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 DUP1 SLOAD DUP8 SWAP1 SUB SWAP1 SSTORE PUSH1 0x1 PUSH1 0xA0 PUSH1 0x2 EXP SUB DUP8 AND DUP1 DUP5 MSTORE SWAP3 DUP2 SWAP1 KECCAK256 DUP1 SLOAD DUP8 ADD SWAP1 SSTORE DUP1 MLOAD DUP7 DUP2 MSTORE SWAP1 MLOAD SWAP3 SWAP4 SWAP3 PUSH32 0xDDF252AD1BE2C89B69C2B068FC378DAA952BA7F163C4A11628F55A4DF523B3EF SWAP3 SWAP2 DUP2 SWAP1 SUB SWAP1 SWAP2 ADD SWAP1 LOG3 POP PUSH1 0x1 SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x5 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x0 SWAP3 DUP4 MSTORE PUSH1 0x40 DUP1 DUP5 KECCAK256 SWAP1 SWAP2 MSTORE SWAP1 DUP3 MSTORE SWAP1 KECCAK256 SLOAD DUP2 JUMP STOP LOG1 PUSH6 0x627A7A723058 KECCAK256 0xd3 0xb6 0xbf PUSH10 0xB2FB29070A3CD896CE84 MULMOD GAS DIV 0xcd DUP10 0xdc 0x5e 0xd6 0xde PUSH7 0x26EBDEFD089F0F DUP15 STOP 0x29 ",
"sourceMap": "172:41:0:-;28:1791;172:41;;28:1791;172:41;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1;220:28:0;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1;255:26:0;;;279:2;-1:-1:-1;;255:26:0;;;;;;;;;345:8;338:2;330:23;319:7;:35;290:64;;443:203;5:2:-1;;;;30:1;27;20:12;5:2;-1:-1;566:11:0;;552:10;542:9;:21;;;;;;;;;;;:35;;;593:45;;;;;;552:10;;542:9;;593:45;;;;;;;;;;28:1791;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;28:1791:0;;;-1:-1:-1;28:1791:0;:::i;:::-;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;:::o;:::-;;;;;;;"
},
"deployedBytecode": {
"linkReferences": {},
"object": "6080604052600436106100985763ffffffff7c010000000000000000000000000000000000000000000000000000000060003504166306fdde03811461009d578063095ea7b31461012757806318160ddd1461015f57806323b872dd14610186578063313ce567146101b057806370a08231146101db57806395d89b41146101fc578063a9059cbb14610211578063dd62ed3e14610235575b600080fd5b3480156100a957600080fd5b506100b261025c565b6040805160208082528351818301528351919283929083019185019080838360005b838110156100ec5781810151838201526020016100d4565b50505050905090810190601f1680156101195780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b34801561013357600080fd5b5061014b600160a060020a03600435166024356102e9565b604080519115158252519081900360200190f35b34801561016b57600080fd5b5061017461034f565b60408051918252519081900360200190f35b34801561019257600080fd5b5061014b600160a060020a0360043581169060243516604435610355565b3480156101bc57600080fd5b506101c5610432565b6040805160ff9092168252519081900360200190f35b3480156101e757600080fd5b50610174600160a060020a036004351661043b565b34801561020857600080fd5b506100b261044d565b34801561021d57600080fd5b5061014b600160a060020a03600435166024356104a5565b34801561024157600080fd5b50610174600160a060020a036004358116906024351661052d565b60018054604080516020600284861615610100026000190190941693909304601f810184900484028201840190925281815292918301828280156102e15780601f106102b6576101008083540402835291602001916102e1565b820191906000526020600020905b8154815290600101906020018083116102c457829003601f168201915b505050505081565b336000818152600560209081526040808320600160a060020a038716808552908352818420869055815186815291519394909390927f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925928290030190a350600192915050565b60045481565b600160a060020a03831660009081526020819052604081205482111561037a57600080fd5b600160a060020a03841660009081526005602090815260408083203384529091529020548211156103aa57600080fd5b600160a060020a038085166000818152602081815260408083208054889003905593871680835284832080548801905583835260058252848320338452825291849020805487900390558351868152935191937fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef929081900390910190a35060019392505050565b60035460ff1681565b60006020819052908152604090205481565b6002805460408051602060018416156101000260001901909316849004601f810184900484028201840190925281815292918301828280156102e15780601f106102b6576101008083540402835291602001916102e1565b336000908152602081905260408120548211156104c157600080fd5b3360008181526020818152604080832080548790039055600160a060020a03871680845292819020805487019055805186815290519293927fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef929181900390910190a350600192915050565b6005602090815260009283526040808420909152908252902054815600a165627a7a72305820d3b6bf69b2fb29070a3cd896ce84095a04cd89dc5ed6de6626ebdefd089f0f8e0029",
"opcodes": "PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x4 CALLDATASIZE LT PUSH2 0x98 JUMPI PUSH4 0xFFFFFFFF PUSH29 0x100000000000000000000000000000000000000000000000000000000 PUSH1 0x0 CALLDATALOAD DIV AND PUSH4 0x6FDDE03 DUP2 EQ PUSH2 0x9D JUMPI DUP1 PUSH4 0x95EA7B3 EQ PUSH2 0x127 JUMPI DUP1 PUSH4 0x18160DDD EQ PUSH2 0x15F JUMPI DUP1 PUSH4 0x23B872DD EQ PUSH2 0x186 JUMPI DUP1 PUSH4 0x313CE567 EQ PUSH2 0x1B0 JUMPI DUP1 PUSH4 0x70A08231 EQ PUSH2 0x1DB JUMPI DUP1 PUSH4 0x95D89B41 EQ PUSH2 0x1FC JUMPI DUP1 PUSH4 0xA9059CBB EQ PUSH2 0x211 JUMPI DUP1 PUSH4 0xDD62ED3E EQ PUSH2 0x235 JUMPI JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0xA9 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0xB2 PUSH2 0x25C JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0x20 DUP1 DUP3 MSTORE DUP4 MLOAD DUP2 DUP4 ADD MSTORE DUP4 MLOAD SWAP2 SWAP3 DUP4 SWAP3 SWAP1 DUP4 ADD SWAP2 DUP6 ADD SWAP1 DUP1 DUP4 DUP4 PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0xEC JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH2 0xD4 JUMP JUMPDEST POP POP POP POP SWAP1 POP SWAP1 DUP2 ADD SWAP1 PUSH1 0x1F AND DUP1 ISZERO PUSH2 0x119 JUMPI DUP1 DUP3 SUB DUP1 MLOAD PUSH1 0x1 DUP4 PUSH1 0x20 SUB PUSH2 0x100 EXP SUB NOT AND DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP JUMPDEST POP SWAP3 POP POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x133 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x14B PUSH1 0x1 PUSH1 0xA0 PUSH1 0x2 EXP SUB PUSH1 0x4 CALLDATALOAD AND PUSH1 0x24 CALLDATALOAD PUSH2 0x2E9 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD SWAP2 ISZERO ISZERO DUP3 MSTORE MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 RETURN JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x16B JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x174 PUSH2 0x34F JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD SWAP2 DUP3 MSTORE MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 RETURN JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x192 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x14B PUSH1 0x1 PUSH1 0xA0 PUSH1 0x2 EXP SUB PUSH1 0x4 CALLDATALOAD DUP2 AND SWAP1 PUSH1 0x24 CALLDATALOAD AND PUSH1 0x44 CALLDATALOAD PUSH2 0x355 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x1BC JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x1C5 PUSH2 0x432 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0xFF SWAP1 SWAP3 AND DUP3 MSTORE MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 RETURN JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x1E7 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x174 PUSH1 0x1 PUSH1 0xA0 PUSH1 0x2 EXP SUB PUSH1 0x4 CALLDATALOAD AND PUSH2 0x43B JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x208 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0xB2 PUSH2 0x44D JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x21D JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x14B PUSH1 0x1 PUSH1 0xA0 PUSH1 0x2 EXP SUB PUSH1 0x4 CALLDATALOAD AND PUSH1 0x24 CALLDATALOAD PUSH2 0x4A5 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x241 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x174 PUSH1 0x1 PUSH1 0xA0 PUSH1 0x2 EXP SUB PUSH1 0x4 CALLDATALOAD DUP2 AND SWAP1 PUSH1 0x24 CALLDATALOAD AND PUSH2 0x52D JUMP JUMPDEST PUSH1 0x1 DUP1 SLOAD PUSH1 0x40 DUP1 MLOAD PUSH1 0x20 PUSH1 0x2 DUP5 DUP7 AND ISZERO PUSH2 0x100 MUL PUSH1 0x0 NOT ADD SWAP1 SWAP5 AND SWAP4 SWAP1 SWAP4 DIV PUSH1 0x1F DUP2 ADD DUP5 SWAP1 DIV DUP5 MUL DUP3 ADD DUP5 ADD SWAP1 SWAP3 MSTORE DUP2 DUP2 MSTORE SWAP3 SWAP2 DUP4 ADD DUP3 DUP3 DUP1 ISZERO PUSH2 0x2E1 JUMPI DUP1 PUSH1 0x1F LT PUSH2 0x2B6 JUMPI PUSH2 0x100 DUP1 DUP4 SLOAD DIV MUL DUP4 MSTORE SWAP2 PUSH1 0x20 ADD SWAP2 PUSH2 0x2E1 JUMP JUMPDEST DUP3 ADD SWAP2 SWAP1 PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 KECCAK256 SWAP1 JUMPDEST DUP2 SLOAD DUP2 MSTORE SWAP1 PUSH1 0x1 ADD SWAP1 PUSH1 0x20 ADD DUP1 DUP4 GT PUSH2 0x2C4 JUMPI DUP3 SWAP1 SUB PUSH1 0x1F AND DUP3 ADD SWAP2 JUMPDEST POP POP POP POP POP DUP2 JUMP JUMPDEST CALLER PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0x5 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 PUSH1 0x1 PUSH1 0xA0 PUSH1 0x2 EXP SUB DUP8 AND DUP1 DUP6 MSTORE SWAP1 DUP4 MSTORE DUP2 DUP5 KECCAK256 DUP7 SWAP1 SSTORE DUP2 MLOAD DUP7 DUP2 MSTORE SWAP2 MLOAD SWAP4 SWAP5 SWAP1 SWAP4 SWAP1 SWAP3 PUSH32 0x8C5BE1E5EBEC7D5BD14F71427D1E84F3DD0314C0F7B2291E5B200AC8C7C3B925 SWAP3 DUP3 SWAP1 SUB ADD SWAP1 LOG3 POP PUSH1 0x1 SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x4 SLOAD DUP2 JUMP JUMPDEST PUSH1 0x1 PUSH1 0xA0 PUSH1 0x2 EXP SUB DUP4 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x20 DUP2 SWAP1 MSTORE PUSH1 0x40 DUP2 KECCAK256 SLOAD DUP3 GT ISZERO PUSH2 0x37A JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x1 PUSH1 0xA0 PUSH1 0x2 EXP SUB DUP5 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x5 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 CALLER DUP5 MSTORE SWAP1 SWAP2 MSTORE SWAP1 KECCAK256 SLOAD DUP3 GT ISZERO PUSH2 0x3AA JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x1 PUSH1 0xA0 PUSH1 0x2 EXP SUB DUP1 DUP6 AND PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0x20 DUP2 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 DUP1 SLOAD DUP9 SWAP1 SUB SWAP1 SSTORE SWAP4 DUP8 AND DUP1 DUP4 MSTORE DUP5 DUP4 KECCAK256 DUP1 SLOAD DUP9 ADD SWAP1 SSTORE DUP4 DUP4 MSTORE PUSH1 0x5 DUP3 MSTORE DUP5 DUP4 KECCAK256 CALLER DUP5 MSTORE DUP3 MSTORE SWAP2 DUP5 SWAP1 KECCAK256 DUP1 SLOAD DUP8 SWAP1 SUB SWAP1 SSTORE DUP4 MLOAD DUP7 DUP2 MSTORE SWAP4 MLOAD SWAP2 SWAP4 PUSH32 0xDDF252AD1BE2C89B69C2B068FC378DAA952BA7F163C4A11628F55A4DF523B3EF SWAP3 SWAP1 DUP2 SWAP1 SUB SWAP1 SWAP2 ADD SWAP1 LOG3 POP PUSH1 0x1 SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x3 SLOAD PUSH1 0xFF AND DUP2 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP2 SWAP1 MSTORE SWAP1 DUP2 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD DUP2 JUMP JUMPDEST PUSH1 0x2 DUP1 SLOAD PUSH1 0x40 DUP1 MLOAD PUSH1 0x20 PUSH1 0x1 DUP5 AND ISZERO PUSH2 0x100 MUL PUSH1 0x0 NOT ADD SWAP1 SWAP4 AND DUP5 SWAP1 DIV PUSH1 0x1F DUP2 ADD DUP5 SWAP1 DIV DUP5 MUL DUP3 ADD DUP5 ADD SWAP1 SWAP3 MSTORE DUP2 DUP2 MSTORE SWAP3 SWAP2 DUP4 ADD DUP3 DUP3 DUP1 ISZERO PUSH2 0x2E1 JUMPI DUP1 PUSH1 0x1F LT PUSH2 0x2B6 JUMPI PUSH2 0x100 DUP1 DUP4 SLOAD DIV MUL DUP4 MSTORE SWAP2 PUSH1 0x20 ADD SWAP2 PUSH2 0x2E1 JUMP JUMPDEST CALLER PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x20 DUP2 SWAP1 MSTORE PUSH1 0x40 DUP2 KECCAK256 SLOAD DUP3 GT ISZERO PUSH2 0x4C1 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST CALLER PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0x20 DUP2 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 DUP1 SLOAD DUP8 SWAP1 SUB SWAP1 SSTORE PUSH1 0x1 PUSH1 0xA0 PUSH1 0x2 EXP SUB DUP8 AND DUP1 DUP5 MSTORE SWAP3 DUP2 SWAP1 KECCAK256 DUP1 SLOAD DUP8 ADD SWAP1 SSTORE DUP1 MLOAD DUP7 DUP2 MSTORE SWAP1 MLOAD SWAP3 SWAP4 SWAP3 PUSH32 0xDDF252AD1BE2C89B69C2B068FC378DAA952BA7F163C4A11628F55A4DF523B3EF SWAP3 SWAP2 DUP2 SWAP1 SUB SWAP1 SWAP2 ADD SWAP1 LOG3 POP PUSH1 0x1 SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x5 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x0 SWAP3 DUP4 MSTORE PUSH1 0x40 DUP1 DUP5 KECCAK256 SWAP1 SWAP2 MSTORE SWAP1 DUP3 MSTORE SWAP1 KECCAK256 SLOAD DUP2 JUMP STOP LOG1 PUSH6 0x627A7A723058 KECCAK256 0xd3 0xb6 0xbf PUSH10 0xB2FB29070A3CD896CE84 MULMOD GAS DIV 0xcd DUP10 0xdc 0x5e 0xd6 0xde PUSH7 0x26EBDEFD089F0F DUP15 STOP 0x29 ",
"sourceMap": "28:1791:0:-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;172:41;;8:9:-1;5:2;;;30:1;27;20:12;5:2;172:41:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8:100:-1;33:3;30:1;27:10;8:100;;;90:11;;;84:18;71:11;;;64:39;52:2;45:10;8:100;;;12:14;172:41:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1171:233;;8:9:-1;5:2;;;30:1;27;20:12;5:2;-1:-1;1171:233:0;-1:-1:-1;;;;;1171:233:0;;;;;;;;;;;;;;;;;;;;;;;;;290:64;;8:9:-1;5:2;;;30:1;27;20:12;5:2;290:64:0;;;;;;;;;;;;;;;;;;;;1412:404;;8:9:-1;5:2;;;30:1;27;20:12;5:2;-1:-1;1412:404:0;-1:-1:-1;;;;;1412:404:0;;;;;;;;;;;;255:26;;8:9:-1;5:2;;;30:1;27;20:12;5:2;255:26:0;;;;;;;;;;;;;;;;;;;;;;;118:45;;8:9:-1;5:2;;;30:1;27;20:12;5:2;-1:-1;118:45:0;-1:-1:-1;;;;;118:45:0;;;;;220:28;;8:9:-1;5:2;;;30:1;27;20:12;5:2;220:28:0;;;;654:350;;8:9:-1;5:2;;;30:1;27;20:12;5:2;-1:-1;654:350:0;-1:-1:-1;;;;;654:350:0;;;;;;;1098:64;;8:9:-1;5:2;;;30:1;27;20:12;5:2;-1:-1;1098:64:0;-1:-1:-1;;;;;1098:64:0;;;;;;;;;;172:41;;;;;;;;;;;;;;;-1:-1:-1;;172:41:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;1171:233::-;1294:10;1254:12;1284:21;;;:9;:21;;;;;;;;-1:-1:-1;;;;;1284:30:0;;;;;;;;;;;:38;;;1338:36;;;;;;;1254:12;;1284:30;;1294:10;;1338:36;;;;;;;;-1:-1:-1;1392:4:0;1171:233;;;;:::o;290:64::-;;;;:::o;1412:404::-;-1:-1:-1;;;;;1556:15:0;;1509:12;1556:15;;;;;;;;;;;1547:24;;;1539:33;;;;;;-1:-1:-1;;;;;1600:15:0;;;;;;:9;:15;;;;;;;;1616:10;1600:27;;;;;;;;1591:36;;;1583:45;;;;;;-1:-1:-1;;;;;1641:15:0;;;:9;:15;;;;;;;;;;;:24;;;;;;;1676:13;;;;;;;;;:22;;;;;;1709:15;;;:9;:15;;;;;1725:10;1709:27;;;;;;;;:36;;;;;;;1761:25;;;;;;;1676:13;;1761:25;;;;;;;;;;;-1:-1:-1;1804:4:0;1412:404;;;;;:::o;255:26::-;;;;;;:::o;118:45::-;;;;;;;;;;;;;;:::o;220:28::-;;;;;;;;;;;;;;-1:-1:-1;;220:28:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;654:350;758:10;715:12;748:21;;;;;;;;;;;:30;-1:-1:-1;748:30:0;740:39;;;;;;802:10;792:9;:21;;;;;;;;;;;:30;;;;;;;-1:-1:-1;;;;;866:13:0;;;;;;;;;:22;;;;;;943:31;;;;;;;866:13;;802:10;943:31;;;;;;;;;;;-1:-1:-1;992:4:0;654:350;;;;:::o;1098:64::-;;;;;;;;;;;;;;;;;;;;;;;;:::o"
},
"gasEstimates": {
"creation": {
"codeDepositCost": "279600",
"executionCost": "infinite",
"totalCost": "infinite"
},
"external": {
"allowance(address,address)": "794",
"approve(address,uint256)": "22354",
"balanceOf(address)": "644",
"decimals()": "487",
"name()": "infinite",
"symbol()": "infinite",
"totalSupply()": "428",
"transfer(address,uint256)": "43195",
"transferFrom(address,address,uint256)": "63991"
}
},
"methodIdentifiers": {
"allowance(address,address)": "dd62ed3e",
"approve(address,uint256)": "095ea7b3",
"balanceOf(address)": "70a08231",
"decimals()": "313ce567",
"name()": "06fdde03",
"symbol()": "95d89b41",
"totalSupply()": "18160ddd",
"transfer(address,uint256)": "a9059cbb",
"transferFrom(address,address,uint256)": "23b872dd"
}
},
"abi": [
{
"constant": true,
"inputs": [],
"name": "name",
"outputs": [
{
"name": "",
"type": "string"
}
],
"payable": false,
"stateMutability": "view",
"type": "function"
},
{
"constant": false,
"inputs": [
{
"name": "spender",
"type": "address"
},
{
"name": "value",
"type": "uint256"
}
],
"name": "approve",
"outputs": [
{
"name": "success",
"type": "bool"
}
],
"payable": false,
"stateMutability": "nonpayable",
"type": "function"
},
{
"constant": true,
"inputs": [],
"name": "totalSupply",
"outputs": [
{
"name": "",
"type": "uint256"
}
],
"payable": false,
"stateMutability": "view",
"type": "function"
},
{
"constant": false,
"inputs": [
{
"name": "from",
"type": "address"
},
{
"name": "to",
"type": "address"
},
{
"name": "value",
"type": "uint256"
}
],
"name": "transferFrom",
"outputs": [
{
"name": "success",
"type": "bool"
}
],
"payable": false,
"stateMutability": "nonpayable",
"type": "function"
},
{
"constant": true,
"inputs": [],
"name": "decimals",
"outputs": [
{
"name": "",
"type": "uint8"
}
],
"payable": false,
"stateMutability": "view",
"type": "function"
},
{
"constant": true,
"inputs": [
{
"name": "",
"type": "address"
}
],
"name": "balanceOf",
"outputs": [
{
"name": "",
"type": "uint256"
}
],
"payable": false,
"stateMutability": "view",
"type": "function"
},
{
"constant": true,
"inputs": [],
"name": "symbol",
"outputs": [
{
"name": "",
"type": "string"
}
],
"payable": false,
"stateMutability": "view",
"type": "function"
},
{
"constant": false,
"inputs": [
{
"name": "to",
"type": "address"
},
{
"name": "value",
"type": "uint256"
}
],
"name": "transfer",
"outputs": [
{
"name": "success",
"type": "bool"
}
],
"payable": false,
"stateMutability": "nonpayable",
"type": "function"
},
{
"constant": true,
"inputs": [
{
"name": "",
"type": "address"
},
{
"name": "",
"type": "address"
}
],
"name": "allowance",
"outputs": [
{
"name": "",
"type": "uint256"
}
],
"payable": false,
"stateMutability": "view",
"type": "function"
},
{
"inputs": [],
"payable": false,
"stateMutability": "nonpayable",
"type": "constructor"
},
{
"anonymous": false,
"inputs": [
{
"indexed": true,
"name": "from",
"type": "address"
},
{
"indexed": true,
"name": "to",
"type": "address"
},
{
"indexed": false,
"name": "value",
"type": "uint256"
}
],
"name": "Transfer",
"type": "event"
},
{
"anonymous": false,
"inputs": [
{
"indexed": true,
"name": "owner",
"type": "address"
},
{
"indexed": true,
"name": "spender",
"type": "address"
},
{
"indexed": false,
"name": "value",
"type": "uint256"
}
],
"name": "Approval",
"type": "event"
}
]
}
{
"compiler": {
"version": "0.4.26+commit.4563c3fc"
},
"language": "Solidity",
"output": {
"abi": [
{
"constant": true,
"inputs": [],
"name": "name",
"outputs": [
{
"name": "",
"type": "string"
}
],
"payable": false,
"stateMutability": "view",
"type": "function"
},
{
"constant": false,
"inputs": [
{
"name": "spender",
"type": "address"
},
{
"name": "value",
"type": "uint256"
}
],
"name": "approve",
"outputs": [
{
"name": "success",
"type": "bool"
}
],
"payable": false,
"stateMutability": "nonpayable",
"type": "function"
},
{
"constant": true,
"inputs": [],
"name": "totalSupply",
"outputs": [
{
"name": "",
"type": "uint256"
}
],
"payable": false,
"stateMutability": "view",
"type": "function"
},
{
"constant": false,
"inputs": [
{
"name": "from",
"type": "address"
},
{
"name": "to",
"type": "address"
},
{
"name": "value",
"type": "uint256"
}
],
"name": "transferFrom",
"outputs": [
{
"name": "success",
"type": "bool"
}
],
"payable": false,
"stateMutability": "nonpayable",
"type": "function"
},
{
"constant": true,
"inputs": [],
"name": "decimals",
"outputs": [
{
"name": "",
"type": "uint8"
}
],
"payable": false,
"stateMutability": "view",
"type": "function"
},
{
"constant": true,
"inputs": [
{
"name": "",
"type": "address"
}
],
"name": "balanceOf",
"outputs": [
{
"name": "",
"type": "uint256"
}
],
"payable": false,
"stateMutability": "view",
"type": "function"
},
{
"constant": true,
"inputs": [],
"name": "symbol",
"outputs": [
{
"name": "",
"type": "string"
}
],
"payable": false,
"stateMutability": "view",
"type": "function"
},
{
"constant": false,
"inputs": [
{
"name": "to",
"type": "address"
},
{
"name": "value",
"type": "uint256"
}
],
"name": "transfer",
"outputs": [
{
"name": "success",
"type": "bool"
}
],
"payable": false,
"stateMutability": "nonpayable",
"type": "function"
},
{
"constant": true,
"inputs": [
{
"name": "",
"type": "address"
},
{
"name": "",
"type": "address"
}
],
"name": "allowance",
"outputs": [
{
"name": "",
"type": "uint256"
}
],
"payable": false,
"stateMutability": "view",
"type": "function"
},
{
"inputs": [],
"payable": false,
"stateMutability": "nonpayable",
"type": "constructor"
},
{
"anonymous": false,
"inputs": [
{
"indexed": true,
"name": "from",
"type": "address"
},
{
"indexed": true,
"name": "to",
"type": "address"
},
{
"indexed": false,
"name": "value",
"type": "uint256"
}
],
"name": "Transfer",
"type": "event"
},
{
"anonymous": false,
"inputs": [
{
"indexed": true,
"name": "owner",
"type": "address"
},
{
"indexed": true,
"name": "spender",
"type": "address"
},
{
"indexed": false,
"name": "value",
"type": "uint256"
}
],
"name": "Approval",
"type": "event"
}
],
"devdoc": {
"methods": {}
},
"userdoc": {
"methods": {}
}
},
"settings": {
"compilationTarget": {
"contracts/simpleERC20.sol": "SimpleERC20Token"
},
"evmVersion": "byzantium",
"libraries": {},
"optimizer": {
"enabled": true,
"runs": 200
},
"remappings": []
},
"sources": {
"contracts/simpleERC20.sol": {
"keccak256": "0x46fa33b46c3d13952266ba16fe38d887d2fe2edcf4a97da592a9eb49eeaf9b12",
"urls": [
"bzzr://e5e881d049b18994236f1fde815e5343df20553edf2f00bf625c23782d30b349"
]
}
},
"version": 1
}
{
"deploy": {
"VM:-": {
"linkReferences": {},
"autoDeployLib": true
},
"main:1": {
"linkReferences": {},
"autoDeployLib": true
},
"ropsten:3": {
"linkReferences": {},
"autoDeployLib": true
},
"rinkeby:4": {
"linkReferences": {},
"autoDeployLib": true
},
"kovan:42": {
"linkReferences": {},
"autoDeployLib": true
},
"görli:5": {
"linkReferences": {},
"autoDeployLib": true
},
"Custom": {
"linkReferences": {},
"autoDeployLib": true
}
},
"data": {
"bytecode": {
"functionDebugData": {},
"generatedSources": [],
"linkReferences": {},
"object": "6080604052348015600f57600080fd5b5060ac8061001e6000396000f3fe6080604052348015600f57600080fd5b506004361060325760003560e01c80632e64cec11460375780636057361d14604c575b600080fd5b60005460405190815260200160405180910390f35b605c6057366004605e565b600055565b005b600060208284031215606f57600080fd5b503591905056fea2646970667358221220952ab5ad06ad1bed55983f69ce3bc96512c73fd8808cbf3cc5ac8bec071ec2e264736f6c63430008090033",
"opcodes": "PUSH1 0x80 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH1 0xF JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0xAC DUP1 PUSH2 0x1E PUSH1 0x0 CODECOPY PUSH1 0x0 RETURN INVALID PUSH1 0x80 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH1 0xF JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x4 CALLDATASIZE LT PUSH1 0x32 JUMPI PUSH1 0x0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0x2E64CEC1 EQ PUSH1 0x37 JUMPI DUP1 PUSH4 0x6057361D EQ PUSH1 0x4C JUMPI JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 SLOAD PUSH1 0x40 MLOAD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH1 0x5C PUSH1 0x57 CALLDATASIZE PUSH1 0x4 PUSH1 0x5E JUMP JUMPDEST PUSH1 0x0 SSTORE JUMP JUMPDEST STOP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH1 0x6F JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD SWAP2 SWAP1 POP JUMP INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 SWAP6 0x2A 0xB5 0xAD MOD 0xAD SHL 0xED SSTORE SWAP9 EXTCODEHASH PUSH10 0xCE3BC96512C73FD8808C 0xBF EXTCODECOPY 0xC5 0xAC DUP12 0xEC SMOD 0x1E 0xC2 0xE2 PUSH5 0x736F6C6343 STOP ADDMOD MULMOD STOP CALLER ",
"sourceMap": "141:356:0:-:0;;;;;;;;;;;;;;;;;;;"
},
"deployedBytecode": {
"functionDebugData": {
"@retrieve_24": {
"entryPoint": null,
"id": 24,
"parameterSlots": 0,
"returnSlots": 1
},
"@store_15": {
"entryPoint": null,
"id": 15,
"parameterSlots": 1,
"returnSlots": 0
},
"abi_decode_tuple_t_uint256": {
"entryPoint": 94,
"id": null,
"parameterSlots": 2,
"returnSlots": 1
},
"abi_encode_tuple_t_uint256__to_t_uint256__fromStack_reversed": {
"entryPoint": null,
"id": null,
"parameterSlots": 2,
"returnSlots": 1
}
},
"generatedSources": [
{
"ast": {
"nodeType": "YulBlock",
"src": "0:378:1",
"statements": [
{
"nodeType": "YulBlock",
"src": "6:3:1",
"statements": []
},
{
"body": {
"nodeType": "YulBlock",
"src": "115:76:1",
"statements": [
{
"nodeType": "YulAssignment",
"src": "125:26:1",
"value": {
"arguments": [
{
"name": "headStart",
"nodeType": "YulIdentifier",
"src": "137:9:1"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "148:2:1",
"type": "",
"value": "32"
}
],
"functionName": {
"name": "add",
"nodeType": "YulIdentifier",
"src": "133:3:1"
},
"nodeType": "YulFunctionCall",
"src": "133:18:1"
},
"variableNames": [
{
"name": "tail",
"nodeType": "YulIdentifier",
"src": "125:4:1"
}
]
},
{
"expression": {
"arguments": [
{
"name": "headStart",
"nodeType": "YulIdentifier",
"src": "167:9:1"
},
{
"name": "value0",
"nodeType": "YulIdentifier",
"src": "178:6:1"
}
],
"functionName": {
"name": "mstore",
"nodeType": "YulIdentifier",
"src": "160:6:1"
},
"nodeType": "YulFunctionCall",
"src": "160:25:1"
},
"nodeType": "YulExpressionStatement",
"src": "160:25:1"
}
]
},
"name": "abi_encode_tuple_t_uint256__to_t_uint256__fromStack_reversed",
"nodeType": "YulFunctionDefinition",
"parameters": [
{
"name": "headStart",
"nodeType": "YulTypedName",
"src": "84:9:1",
"type": ""
},
{
"name": "value0",
"nodeType": "YulTypedName",
"src": "95:6:1",
"type": ""
}
],
"returnVariables": [
{
"name": "tail",
"nodeType": "YulTypedName",
"src": "106:4:1",
"type": ""
}
],
"src": "14:177:1"
},
{
"body": {
"nodeType": "YulBlock",
"src": "266:110:1",
"statements": [
{
"body": {
"nodeType": "YulBlock",
"src": "312:16:1",
"statements": [
{
"expression": {
"arguments": [
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "321:1:1",
"type": "",
"value": "0"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "324:1:1",
"type": "",
"value": "0"
}
],
"functionName": {
"name": "revert",
"nodeType": "YulIdentifier",
"src": "314:6:1"
},
"nodeType": "YulFunctionCall",
"src": "314:12:1"
},
"nodeType": "YulExpressionStatement",
"src": "314:12:1"
}
]
},
"condition": {
"arguments": [
{
"arguments": [
{
"name": "dataEnd",
"nodeType": "YulIdentifier",
"src": "287:7:1"
},
{
"name": "headStart",
"nodeType": "YulIdentifier",
"src": "296:9:1"
}
],
"functionName": {
"name": "sub",
"nodeType": "YulIdentifier",
"src": "283:3:1"
},
"nodeType": "YulFunctionCall",
"src": "283:23:1"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "308:2:1",
"type": "",
"value": "32"
}
],
"functionName": {
"name": "slt",
"nodeType": "YulIdentifier",
"src": "279:3:1"
},
"nodeType": "YulFunctionCall",
"src": "279:32:1"
},
"nodeType": "YulIf",
"src": "276:52:1"
},
{
"nodeType": "YulAssignment",
"src": "337:33:1",
"value": {
"arguments": [
{
"name": "headStart",
"nodeType": "YulIdentifier",
"src": "360:9:1"
}
],
"functionName": {
"name": "calldataload",
"nodeType": "YulIdentifier",
"src": "347:12:1"
},
"nodeType": "YulFunctionCall",
"src": "347:23:1"
},
"variableNames": [
{
"name": "value0",
"nodeType": "YulIdentifier",
"src": "337:6:1"
}
]
}
]
},
"name": "abi_decode_tuple_t_uint256",
"nodeType": "YulFunctionDefinition",
"parameters": [
{
"name": "headStart",
"nodeType": "YulTypedName",
"src": "232:9:1",
"type": ""
},
{
"name": "dataEnd",
"nodeType": "YulTypedName",
"src": "243:7:1",
"type": ""
}
],
"returnVariables": [
{
"name": "value0",
"nodeType": "YulTypedName",
"src": "255:6:1",
"type": ""
}
],
"src": "196:180:1"
}
]
},
"contents": "{\n { }\n function abi_encode_tuple_t_uint256__to_t_uint256__fromStack_reversed(headStart, value0) -> tail\n {\n tail := add(headStart, 32)\n mstore(headStart, value0)\n }\n function abi_decode_tuple_t_uint256(headStart, dataEnd) -> value0\n {\n if slt(sub(dataEnd, headStart), 32) { revert(0, 0) }\n value0 := calldataload(headStart)\n }\n}",
"id": 1,
"language": "Yul",
"name": "#utility.yul"
}
],
"immutableReferences": {},
"linkReferences": {},
"object": "6080604052348015600f57600080fd5b506004361060325760003560e01c80632e64cec11460375780636057361d14604c575b600080fd5b60005460405190815260200160405180910390f35b605c6057366004605e565b600055565b005b600060208284031215606f57600080fd5b503591905056fea2646970667358221220952ab5ad06ad1bed55983f69ce3bc96512c73fd8808cbf3cc5ac8bec071ec2e264736f6c63430008090033",
"opcodes": "PUSH1 0x80 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH1 0xF JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x4 CALLDATASIZE LT PUSH1 0x32 JUMPI PUSH1 0x0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0x2E64CEC1 EQ PUSH1 0x37 JUMPI DUP1 PUSH4 0x6057361D EQ PUSH1 0x4C JUMPI JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 SLOAD PUSH1 0x40 MLOAD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH1 0x5C PUSH1 0x57 CALLDATASIZE PUSH1 0x4 PUSH1 0x5E JUMP JUMPDEST PUSH1 0x0 SSTORE JUMP JUMPDEST STOP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH1 0x6F JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD SWAP2 SWAP1 POP JUMP INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 SWAP6 0x2A 0xB5 0xAD MOD 0xAD SHL 0xED SSTORE SWAP9 EXTCODEHASH PUSH10 0xCE3BC96512C73FD8808C 0xBF EXTCODECOPY 0xC5 0xAC DUP12 0xEC SMOD 0x1E 0xC2 0xE2 PUSH5 0x736F6C6343 STOP ADDMOD MULMOD STOP CALLER ",
"sourceMap": "141:356:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;416:79;457:7;482:6;416:79;;160:25:1;;;148:2;133:18;416:79:0;;;;;;;271:64;;;;;;:::i;:::-;316:6;:12;271:64;;;196:180:1;255:6;308:2;296:9;287:7;283:23;279:32;276:52;;;324:1;321;314:12;276:52;-1:-1:-1;347:23:1;;196:180;-1:-1:-1;196:180:1:o"
},
"gasEstimates": {
"creation": {
"codeDepositCost": "34400",
"executionCost": "87",
"totalCost": "34487"
},
"external": {
"retrieve()": "2246",
"store(uint256)": "22312"
}
},
"methodIdentifiers": {
"retrieve()": "2e64cec1",
"store(uint256)": "6057361d"
}
},
"abi": [
{
"inputs": [],
"name": "retrieve",
"outputs": [
{
"internalType": "uint256",
"name": "",
"type": "uint256"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [
{
"internalType": "uint256",
"name": "num",
"type": "uint256"
}
],
"name": "store",
"outputs": [],
"stateMutability": "nonpayable",
"type": "function"
}
]
}
{
"compiler": {
"version": "0.8.9+commit.e5eed63a"
},
"language": "Solidity",
"output": {
"abi": [
{
"inputs": [],
"name": "retrieve",
"outputs": [
{
"internalType": "uint256",
"name": "",
"type": "uint256"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [
{
"internalType": "uint256",
"name": "num",
"type": "uint256"
}
],
"name": "store",
"outputs": [],
"stateMutability": "nonpayable",
"type": "function"
}
],
"devdoc": {
"details": "Store & retrieve value in a variable",
"kind": "dev",
"methods": {
"retrieve()": {
"details": "Return value ",
"returns": {
"_0": "value of 'number'"
}
},
"store(uint256)": {
"details": "Store value in variable",
"params": {
"num": "value to store"
}
}
},
"title": "Storage",
"version": 1
},
"userdoc": {
"kind": "user",
"methods": {},
"version": 1
}
},
"settings": {
"compilationTarget": {
"contracts/1_Storage.sol": "Storage"
},
"evmVersion": "london",
"libraries": {},
"metadata": {
"bytecodeHash": "ipfs"
},
"optimizer": {
"enabled": true,
"runs": 200
},
"remappings": []
},
"sources": {
"contracts/1_Storage.sol": {
"keccak256": "0xb6ee9d528b336942dd70d3b41e2811be10a473776352009fd73f85604f5ed206",
"license": "GPL-3.0",
"urls": [
"bzz-raw://fe52c6e3c04ba5d83ede6cc1a43c45fa43caa435b207f64707afb17d3af1bcf1",
"dweb:/ipfs/QmawU3NM1WNWkBauRudYCiFvuFE1tTLHB98akyBvb9UWwA"
]
}
},
"version": 1
}
{
"deploy": {
"VM:-": {
"linkReferences": {},
"autoDeployLib": true
},
"main:1": {
"linkReferences": {},
"autoDeployLib": true
},
"ropsten:3": {
"linkReferences": {},
"autoDeployLib": true
},
"rinkeby:4": {
"linkReferences": {},
"autoDeployLib": true
},
"kovan:42": {
"linkReferences": {},
"autoDeployLib": true
},
"görli:5": {
"linkReferences": {},
"autoDeployLib": true
},
"Custom": {
"linkReferences": {},
"autoDeployLib": true
}
},
"data": {
"bytecode": {
"functionDebugData": {
"@_144": {
"entryPoint": null,
"id": 144,
"parameterSlots": 1,
"returnSlots": 0
},
"@_5": {
"entryPoint": null,
"id": 5,
"parameterSlots": 0,
"returnSlots": 0
},
"@_676": {
"entryPoint": null,
"id": 676,
"parameterSlots": 5,
"returnSlots": 0
},
"@_msgSender_14": {
"entryPoint": null,
"id": 14,
"parameterSlots": 0,
"returnSlots": 1
},
"abi_decode_string_fromMemory": {
"entryPoint": 445,
"id": null,
"parameterSlots": 2,
"returnSlots": 1
},
"abi_decode_tuple_t_address_payablet_uint256t_uint8t_string_memory_ptrt_string_memory_ptr_fromMemory": {
"entryPoint": 628,
"id": null,
"parameterSlots": 2,
"returnSlots": 5
},
"extract_byte_array_length": {
"entryPoint": 803,
"id": null,
"parameterSlots": 1,
"returnSlots": 1
},
"panic_error_0x41": {
"entryPoint": 423,
"id": null,
"parameterSlots": 0,
"returnSlots": 0
}
},
"generatedSources": [
{
"ast": {
"nodeType": "YulBlock",
"src": "0:2381:5",
"statements": [
{
"nodeType": "YulBlock",
"src": "6:3:5",
"statements": []
},
{
"body": {
"nodeType": "YulBlock",
"src": "46:95:5",
"statements": [
{
"expression": {
"arguments": [
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "63:1:5",
"type": "",
"value": "0"
},
{
"arguments": [
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "70:3:5",
"type": "",
"value": "224"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "75:10:5",
"type": "",
"value": "0x4e487b71"
}
],
"functionName": {
"name": "shl",
"nodeType": "YulIdentifier",
"src": "66:3:5"
},
"nodeType": "YulFunctionCall",
"src": "66:20:5"
}
],
"functionName": {
"name": "mstore",
"nodeType": "YulIdentifier",
"src": "56:6:5"
},
"nodeType": "YulFunctionCall",
"src": "56:31:5"
},
"nodeType": "YulExpressionStatement",
"src": "56:31:5"
},
{
"expression": {
"arguments": [
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "103:1:5",
"type": "",
"value": "4"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "106:4:5",
"type": "",
"value": "0x41"
}
],
"functionName": {
"name": "mstore",
"nodeType": "YulIdentifier",
"src": "96:6:5"
},
"nodeType": "YulFunctionCall",
"src": "96:15:5"
},
"nodeType": "YulExpressionStatement",
"src": "96:15:5"
},
{
"expression": {
"arguments": [
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "127:1:5",
"type": "",
"value": "0"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "130:4:5",
"type": "",
"value": "0x24"
}
],
"functionName": {
"name": "revert",
"nodeType": "YulIdentifier",
"src": "120:6:5"
},
"nodeType": "YulFunctionCall",
"src": "120:15:5"
},
"nodeType": "YulExpressionStatement",
"src": "120:15:5"
}
]
},
"name": "panic_error_0x41",
"nodeType": "YulFunctionDefinition",
"src": "14:127:5"
},
{
"body": {
"nodeType": "YulBlock",
"src": "210:821:5",
"statements": [
{
"body": {
"nodeType": "YulBlock",
"src": "259:16:5",
"statements": [
{
"expression": {
"arguments": [
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "268:1:5",
"type": "",
"value": "0"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "271:1:5",
"type": "",
"value": "0"
}
],
"functionName": {
"name": "revert",
"nodeType": "YulIdentifier",
"src": "261:6:5"
},
"nodeType": "YulFunctionCall",
"src": "261:12:5"
},
"nodeType": "YulExpressionStatement",
"src": "261:12:5"
}
]
},
"condition": {
"arguments": [
{
"arguments": [
{
"arguments": [
{
"name": "offset",
"nodeType": "YulIdentifier",
"src": "238:6:5"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "246:4:5",
"type": "",
"value": "0x1f"
}
],
"functionName": {
"name": "add",
"nodeType": "YulIdentifier",
"src": "234:3:5"
},
"nodeType": "YulFunctionCall",
"src": "234:17:5"
},
{
"name": "end",
"nodeType": "YulIdentifier",
"src": "253:3:5"
}
],
"functionName": {
"name": "slt",
"nodeType": "YulIdentifier",
"src": "230:3:5"
},
"nodeType": "YulFunctionCall",
"src": "230:27:5"
}
],
"functionName": {
"name": "iszero",
"nodeType": "YulIdentifier",
"src": "223:6:5"
},
"nodeType": "YulFunctionCall",
"src": "223:35:5"
},
"nodeType": "YulIf",
"src": "220:55:5"
},
{
"nodeType": "YulVariableDeclaration",
"src": "284:23:5",
"value": {
"arguments": [
{
"name": "offset",
"nodeType": "YulIdentifier",
"src": "300:6:5"
}
],
"functionName": {
"name": "mload",
"nodeType": "YulIdentifier",
"src": "294:5:5"
},
"nodeType": "YulFunctionCall",
"src": "294:13:5"
},
"variables": [
{
"name": "_1",
"nodeType": "YulTypedName",
"src": "288:2:5",
"type": ""
}
]
},
{
"nodeType": "YulVariableDeclaration",
"src": "316:28:5",
"value": {
"arguments": [
{
"arguments": [
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "334:2:5",
"type": "",
"value": "64"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "338:1:5",
"type": "",
"value": "1"
}
],
"functionName": {
"name": "shl",
"nodeType": "YulIdentifier",
"src": "330:3:5"
},
"nodeType": "YulFunctionCall",
"src": "330:10:5"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "342:1:5",
"type": "",
"value": "1"
}
],
"functionName": {
"name": "sub",
"nodeType": "YulIdentifier",
"src": "326:3:5"
},
"nodeType": "YulFunctionCall",
"src": "326:18:5"
},
"variables": [
{
"name": "_2",
"nodeType": "YulTypedName",
"src": "320:2:5",
"type": ""
}
]
},
{
"body": {
"nodeType": "YulBlock",
"src": "367:22:5",
"statements": [
{
"expression": {
"arguments": [],
"functionName": {
"name": "panic_error_0x41",
"nodeType": "YulIdentifier",
"src": "369:16:5"
},
"nodeType": "YulFunctionCall",
"src": "369:18:5"
},
"nodeType": "YulExpressionStatement",
"src": "369:18:5"
}
]
},
"condition": {
"arguments": [
{
"name": "_1",
"nodeType": "YulIdentifier",
"src": "359:2:5"
},
{
"name": "_2",
"nodeType": "YulIdentifier",
"src": "363:2:5"
}
],
"functionName": {
"name": "gt",
"nodeType": "YulIdentifier",
"src": "356:2:5"
},
"nodeType": "YulFunctionCall",
"src": "356:10:5"
},
"nodeType": "YulIf",
"src": "353:36:5"
},
{
"nodeType": "YulVariableDeclaration",
"src": "398:17:5",
"value": {
"arguments": [
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "412:2:5",
"type": "",
"value": "31"
}
],
"functionName": {
"name": "not",
"nodeType": "YulIdentifier",
"src": "408:3:5"
},
"nodeType": "YulFunctionCall",
"src": "408:7:5"
},
"variables": [
{
"name": "_3",
"nodeType": "YulTypedName",
"src": "402:2:5",
"type": ""
}
]
},
{
"nodeType": "YulVariableDeclaration",
"src": "424:23:5",
"value": {
"arguments": [
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "444:2:5",
"type": "",
"value": "64"
}
],
"functionName": {
"name": "mload",
"nodeType": "YulIdentifier",
"src": "438:5:5"
},
"nodeType": "YulFunctionCall",
"src": "438:9:5"
},
"variables": [
{
"name": "memPtr",
"nodeType": "YulTypedName",
"src": "428:6:5",
"type": ""
}
]
},
{
"nodeType": "YulVariableDeclaration",
"src": "456:71:5",
"value": {
"arguments": [
{
"name": "memPtr",
"nodeType": "YulIdentifier",
"src": "478:6:5"
},
{
"arguments": [
{
"arguments": [
{
"arguments": [
{
"arguments": [
{
"name": "_1",
"nodeType": "YulIdentifier",
"src": "502:2:5"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "506:4:5",
"type": "",
"value": "0x1f"
}
],
"functionName": {
"name": "add",
"nodeType": "YulIdentifier",
"src": "498:3:5"
},
"nodeType": "YulFunctionCall",
"src": "498:13:5"
},
{
"name": "_3",
"nodeType": "YulIdentifier",
"src": "513:2:5"
}
],
"functionName": {
"name": "and",
"nodeType": "YulIdentifier",
"src": "494:3:5"
},
"nodeType": "YulFunctionCall",
"src": "494:22:5"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "518:2:5",
"type": "",
"value": "63"
}
],
"functionName": {
"name": "add",
"nodeType": "YulIdentifier",
"src": "490:3:5"
},
"nodeType": "YulFunctionCall",
"src": "490:31:5"
},
{
"name": "_3",
"nodeType": "YulIdentifier",
"src": "523:2:5"
}
],
"functionName": {
"name": "and",
"nodeType": "YulIdentifier",
"src": "486:3:5"
},
"nodeType": "YulFunctionCall",
"src": "486:40:5"
}
],
"functionName": {
"name": "add",
"nodeType": "YulIdentifier",
"src": "474:3:5"
},
"nodeType": "YulFunctionCall",
"src": "474:53:5"
},
"variables": [
{
"name": "newFreePtr",
"nodeType": "YulTypedName",
"src": "460:10:5",
"type": ""
}
]
},
{
"body": {
"nodeType": "YulBlock",
"src": "586:22:5",
"statements": [
{
"expression": {
"arguments": [],
"functionName": {
"name": "panic_error_0x41",
"nodeType": "YulIdentifier",
"src": "588:16:5"
},
"nodeType": "YulFunctionCall",
"src": "588:18:5"
},
"nodeType": "YulExpressionStatement",
"src": "588:18:5"
}
]
},
"condition": {
"arguments": [
{
"arguments": [
{
"name": "newFreePtr",
"nodeType": "YulIdentifier",
"src": "545:10:5"
},
{
"name": "_2",
"nodeType": "YulIdentifier",
"src": "557:2:5"
}
],
"functionName": {
"name": "gt",
"nodeType": "YulIdentifier",
"src": "542:2:5"
},
"nodeType": "YulFunctionCall",
"src": "542:18:5"
},
{
"arguments": [
{
"name": "newFreePtr",
"nodeType": "YulIdentifier",
"src": "565:10:5"
},
{
"name": "memPtr",
"nodeType": "YulIdentifier",
"src": "577:6:5"
}
],
"functionName": {
"name": "lt",
"nodeType": "YulIdentifier",
"src": "562:2:5"
},
"nodeType": "YulFunctionCall",
"src": "562:22:5"
}
],
"functionName": {
"name": "or",
"nodeType": "YulIdentifier",
"src": "539:2:5"
},
"nodeType": "YulFunctionCall",
"src": "539:46:5"
},
"nodeType": "YulIf",
"src": "536:72:5"
},
{
"expression": {
"arguments": [
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "624:2:5",
"type": "",
"value": "64"
},
{
"name": "newFreePtr",
"nodeType": "YulIdentifier",
"src": "628:10:5"
}
],
"functionName": {
"name": "mstore",
"nodeType": "YulIdentifier",
"src": "617:6:5"
},
"nodeType": "YulFunctionCall",
"src": "617:22:5"
},
"nodeType": "YulExpressionStatement",
"src": "617:22:5"
},
{
"expression": {
"arguments": [
{
"name": "memPtr",
"nodeType": "YulIdentifier",
"src": "655:6:5"
},
{
"name": "_1",
"nodeType": "YulIdentifier",
"src": "663:2:5"
}
],
"functionName": {
"name": "mstore",
"nodeType": "YulIdentifier",
"src": "648:6:5"
},
"nodeType": "YulFunctionCall",
"src": "648:18:5"
},
"nodeType": "YulExpressionStatement",
"src": "648:18:5"
},
{
"nodeType": "YulVariableDeclaration",
"src": "675:14:5",
"value": {
"kind": "number",
"nodeType": "YulLiteral",
"src": "685:4:5",
"type": "",
"value": "0x20"
},
"variables": [
{
"name": "_4",
"nodeType": "YulTypedName",
"src": "679:2:5",
"type": ""
}
]
},
{
"body": {
"nodeType": "YulBlock",
"src": "735:16:5",
"statements": [
{
"expression": {
"arguments": [
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "744:1:5",
"type": "",
"value": "0"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "747:1:5",
"type": "",
"value": "0"
}
],
"functionName": {
"name": "revert",
"nodeType": "YulIdentifier",
"src": "737:6:5"
},
"nodeType": "YulFunctionCall",
"src": "737:12:5"
},
"nodeType": "YulExpressionStatement",
"src": "737:12:5"
}
]
},
"condition": {
"arguments": [
{
"arguments": [
{
"arguments": [
{
"name": "offset",
"nodeType": "YulIdentifier",
"src": "712:6:5"
},
{
"name": "_1",
"nodeType": "YulIdentifier",
"src": "720:2:5"
}
],
"functionName": {
"name": "add",
"nodeType": "YulIdentifier",
"src": "708:3:5"
},
"nodeType": "YulFunctionCall",
"src": "708:15:5"
},
{
"name": "_4",
"nodeType": "YulIdentifier",
"src": "725:2:5"
}
],
"functionName": {
"name": "add",
"nodeType": "YulIdentifier",
"src": "704:3:5"
},
"nodeType": "YulFunctionCall",
"src": "704:24:5"
},
{
"name": "end",
"nodeType": "YulIdentifier",
"src": "730:3:5"
}
],
"functionName": {
"name": "gt",
"nodeType": "YulIdentifier",
"src": "701:2:5"
},
"nodeType": "YulFunctionCall",
"src": "701:33:5"
},
"nodeType": "YulIf",
"src": "698:53:5"
},
{
"nodeType": "YulVariableDeclaration",
"src": "760:10:5",
"value": {
"kind": "number",
"nodeType": "YulLiteral",
"src": "769:1:5",
"type": "",
"value": "0"
},
"variables": [
{
"name": "i",
"nodeType": "YulTypedName",
"src": "764:1:5",
"type": ""
}
]
},
{
"body": {
"nodeType": "YulBlock",
"src": "825:87:5",
"statements": [
{
"expression": {
"arguments": [
{
"arguments": [
{
"arguments": [
{
"name": "memPtr",
"nodeType": "YulIdentifier",
"src": "854:6:5"
},
{
"name": "i",
"nodeType": "YulIdentifier",
"src": "862:1:5"
}
],
"functionName": {
"name": "add",
"nodeType": "YulIdentifier",
"src": "850:3:5"
},
"nodeType": "YulFunctionCall",
"src": "850:14:5"
},
{
"name": "_4",
"nodeType": "YulIdentifier",
"src": "866:2:5"
}
],
"functionName": {
"name": "add",
"nodeType": "YulIdentifier",
"src": "846:3:5"
},
"nodeType": "YulFunctionCall",
"src": "846:23:5"
},
{
"arguments": [
{
"arguments": [
{
"arguments": [
{
"name": "offset",
"nodeType": "YulIdentifier",
"src": "885:6:5"
},
{
"name": "i",
"nodeType": "YulIdentifier",
"src": "893:1:5"
}
],
"functionName": {
"name": "add",
"nodeType": "YulIdentifier",
"src": "881:3:5"
},
"nodeType": "YulFunctionCall",
"src": "881:14:5"
},
{
"name": "_4",
"nodeType": "YulIdentifier",
"src": "897:2:5"
}
],
"functionName": {
"name": "add",
"nodeType": "YulIdentifier",
"src": "877:3:5"
},
"nodeType": "YulFunctionCall",
"src": "877:23:5"
}
],
"functionName": {
"name": "mload",
"nodeType": "YulIdentifier",
"src": "871:5:5"
},
"nodeType": "YulFunctionCall",
"src": "871:30:5"
}
],
"functionName": {
"name": "mstore",
"nodeType": "YulIdentifier",
"src": "839:6:5"
},
"nodeType": "YulFunctionCall",
"src": "839:63:5"
},
"nodeType": "YulExpressionStatement",
"src": "839:63:5"
}
]
},
"condition": {
"arguments": [
{
"name": "i",
"nodeType": "YulIdentifier",
"src": "790:1:5"
},
{
"name": "_1",
"nodeType": "YulIdentifier",
"src": "793:2:5"
}
],
"functionName": {
"name": "lt",
"nodeType": "YulIdentifier",
"src": "787:2:5"
},
"nodeType": "YulFunctionCall",
"src": "787:9:5"
},
"nodeType": "YulForLoop",
"post": {
"nodeType": "YulBlock",
"src": "797:19:5",
"statements": [
{
"nodeType": "YulAssignment",
"src": "799:15:5",
"value": {
"arguments": [
{
"name": "i",
"nodeType": "YulIdentifier",
"src": "808:1:5"
},
{
"name": "_4",
"nodeType": "YulIdentifier",
"src": "811:2:5"
}
],
"functionName": {
"name": "add",
"nodeType": "YulIdentifier",
"src": "804:3:5"
},
"nodeType": "YulFunctionCall",
"src": "804:10:5"
},
"variableNames": [
{
"name": "i",
"nodeType": "YulIdentifier",
"src": "799:1:5"
}
]
}
]
},
"pre": {
"nodeType": "YulBlock",
"src": "783:3:5",
"statements": []
},
"src": "779:133:5"
},
{
"body": {
"nodeType": "YulBlock",
"src": "942:59:5",
"statements": [
{
"expression": {
"arguments": [
{
"arguments": [
{
"arguments": [
{
"name": "memPtr",
"nodeType": "YulIdentifier",
"src": "971:6:5"
},
{
"name": "_1",
"nodeType": "YulIdentifier",
"src": "979:2:5"
}
],
"functionName": {
"name": "add",
"nodeType": "YulIdentifier",
"src": "967:3:5"
},
"nodeType": "YulFunctionCall",
"src": "967:15:5"
},
{
"name": "_4",
"nodeType": "YulIdentifier",
"src": "984:2:5"
}
],
"functionName": {
"name": "add",
"nodeType": "YulIdentifier",
"src": "963:3:5"
},
"nodeType": "YulFunctionCall",
"src": "963:24:5"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "989:1:5",
"type": "",
"value": "0"
}
],
"functionName": {
"name": "mstore",
"nodeType": "YulIdentifier",
"src": "956:6:5"
},
"nodeType": "YulFunctionCall",
"src": "956:35:5"
},
"nodeType": "YulExpressionStatement",
"src": "956:35:5"
}
]
},
"condition": {
"arguments": [
{
"name": "i",
"nodeType": "YulIdentifier",
"src": "927:1:5"
},
{
"name": "_1",
"nodeType": "YulIdentifier",
"src": "930:2:5"
}
],
"functionName": {
"name": "gt",
"nodeType": "YulIdentifier",
"src": "924:2:5"
},
"nodeType": "YulFunctionCall",
"src": "924:9:5"
},
"nodeType": "YulIf",
"src": "921:80:5"
},
{
"nodeType": "YulAssignment",
"src": "1010:15:5",
"value": {
"name": "memPtr",
"nodeType": "YulIdentifier",
"src": "1019:6:5"
},
"variableNames": [
{
"name": "array",
"nodeType": "YulIdentifier",
"src": "1010:5:5"
}
]
}
]
},
"name": "abi_decode_string_fromMemory",
"nodeType": "YulFunctionDefinition",
"parameters": [
{
"name": "offset",
"nodeType": "YulTypedName",
"src": "184:6:5",
"type": ""
},
{
"name": "end",
"nodeType": "YulTypedName",
"src": "192:3:5",
"type": ""
}
],
"returnVariables": [
{
"name": "array",
"nodeType": "YulTypedName",
"src": "200:5:5",
"type": ""
}
],
"src": "146:885:5"
},
{
"body": {
"nodeType": "YulBlock",
"src": "1211:783:5",
"statements": [
{
"body": {
"nodeType": "YulBlock",
"src": "1258:16:5",
"statements": [
{
"expression": {
"arguments": [
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "1267:1:5",
"type": "",
"value": "0"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "1270:1:5",
"type": "",
"value": "0"
}
],
"functionName": {
"name": "revert",
"nodeType": "YulIdentifier",
"src": "1260:6:5"
},
"nodeType": "YulFunctionCall",
"src": "1260:12:5"
},
"nodeType": "YulExpressionStatement",
"src": "1260:12:5"
}
]
},
"condition": {
"arguments": [
{
"arguments": [
{
"name": "dataEnd",
"nodeType": "YulIdentifier",
"src": "1232:7:5"
},
{
"name": "headStart",
"nodeType": "YulIdentifier",
"src": "1241:9:5"
}
],
"functionName": {
"name": "sub",
"nodeType": "YulIdentifier",
"src": "1228:3:5"
},
"nodeType": "YulFunctionCall",
"src": "1228:23:5"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "1253:3:5",
"type": "",
"value": "160"
}
],
"functionName": {
"name": "slt",
"nodeType": "YulIdentifier",
"src": "1224:3:5"
},
"nodeType": "YulFunctionCall",
"src": "1224:33:5"
},
"nodeType": "YulIf",
"src": "1221:53:5"
},
{
"nodeType": "YulVariableDeclaration",
"src": "1283:29:5",
"value": {
"arguments": [
{
"name": "headStart",
"nodeType": "YulIdentifier",
"src": "1302:9:5"
}
],
"functionName": {
"name": "mload",
"nodeType": "YulIdentifier",
"src": "1296:5:5"
},
"nodeType": "YulFunctionCall",
"src": "1296:16:5"
},
"variables": [
{
"name": "value",
"nodeType": "YulTypedName",
"src": "1287:5:5",
"type": ""
}
]
},
{
"body": {
"nodeType": "YulBlock",
"src": "1375:16:5",
"statements": [
{
"expression": {
"arguments": [
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "1384:1:5",
"type": "",
"value": "0"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "1387:1:5",
"type": "",
"value": "0"
}
],
"functionName": {
"name": "revert",
"nodeType": "YulIdentifier",
"src": "1377:6:5"
},
"nodeType": "YulFunctionCall",
"src": "1377:12:5"
},
"nodeType": "YulExpressionStatement",
"src": "1377:12:5"
}
]
},
"condition": {
"arguments": [
{
"arguments": [
{
"name": "value",
"nodeType": "YulIdentifier",
"src": "1334:5:5"
},
{
"arguments": [
{
"name": "value",
"nodeType": "YulIdentifier",
"src": "1345:5:5"
},
{
"arguments": [
{
"arguments": [
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "1360:3:5",
"type": "",
"value": "160"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "1365:1:5",
"type": "",
"value": "1"
}
],
"functionName": {
"name": "shl",
"nodeType": "YulIdentifier",
"src": "1356:3:5"
},
"nodeType": "YulFunctionCall",
"src": "1356:11:5"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "1369:1:5",
"type": "",
"value": "1"
}
],
"functionName": {
"name": "sub",
"nodeType": "YulIdentifier",
"src": "1352:3:5"
},
"nodeType": "YulFunctionCall",
"src": "1352:19:5"
}
],
"functionName": {
"name": "and",
"nodeType": "YulIdentifier",
"src": "1341:3:5"
},
"nodeType": "YulFunctionCall",
"src": "1341:31:5"
}
],
"functionName": {
"name": "eq",
"nodeType": "YulIdentifier",
"src": "1331:2:5"
},
"nodeType": "YulFunctionCall",
"src": "1331:42:5"
}
],
"functionName": {
"name": "iszero",
"nodeType": "YulIdentifier",
"src": "1324:6:5"
},
"nodeType": "YulFunctionCall",
"src": "1324:50:5"
},
"nodeType": "YulIf",
"src": "1321:70:5"
},
{
"nodeType": "YulAssignment",
"src": "1400:15:5",
"value": {
"name": "value",
"nodeType": "YulIdentifier",
"src": "1410:5:5"
},
"variableNames": [
{
"name": "value0",
"nodeType": "YulIdentifier",
"src": "1400:6:5"
}
]
},
{
"nodeType": "YulAssignment",
"src": "1424:35:5",
"value": {
"arguments": [
{
"arguments": [
{
"name": "headStart",
"nodeType": "YulIdentifier",
"src": "1444:9:5"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "1455:2:5",
"type": "",
"value": "32"
}
],
"functionName": {
"name": "add",
"nodeType": "YulIdentifier",
"src": "1440:3:5"
},
"nodeType": "YulFunctionCall",
"src": "1440:18:5"
}
],
"functionName": {
"name": "mload",
"nodeType": "YulIdentifier",
"src": "1434:5:5"
},
"nodeType": "YulFunctionCall",
"src": "1434:25:5"
},
"variableNames": [
{
"name": "value1",
"nodeType": "YulIdentifier",
"src": "1424:6:5"
}
]
},
{
"nodeType": "YulVariableDeclaration",
"src": "1468:40:5",
"value": {
"arguments": [
{
"arguments": [
{
"name": "headStart",
"nodeType": "YulIdentifier",
"src": "1493:9:5"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "1504:2:5",
"type": "",
"value": "64"
}
],
"functionName": {
"name": "add",
"nodeType": "YulIdentifier",
"src": "1489:3:5"
},
"nodeType": "YulFunctionCall",
"src": "1489:18:5"
}
],
"functionName": {
"name": "mload",
"nodeType": "YulIdentifier",
"src": "1483:5:5"
},
"nodeType": "YulFunctionCall",
"src": "1483:25:5"
},
"variables": [
{
"name": "value_1",
"nodeType": "YulTypedName",
"src": "1472:7:5",
"type": ""
}
]
},
{
"body": {
"nodeType": "YulBlock",
"src": "1560:16:5",
"statements": [
{
"expression": {
"arguments": [
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "1569:1:5",
"type": "",
"value": "0"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "1572:1:5",
"type": "",
"value": "0"
}
],
"functionName": {
"name": "revert",
"nodeType": "YulIdentifier",
"src": "1562:6:5"
},
"nodeType": "YulFunctionCall",
"src": "1562:12:5"
},
"nodeType": "YulExpressionStatement",
"src": "1562:12:5"
}
]
},
"condition": {
"arguments": [
{
"arguments": [
{
"name": "value_1",
"nodeType": "YulIdentifier",
"src": "1530:7:5"
},
{
"arguments": [
{
"name": "value_1",
"nodeType": "YulIdentifier",
"src": "1543:7:5"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "1552:4:5",
"type": "",
"value": "0xff"
}
],
"functionName": {
"name": "and",
"nodeType": "YulIdentifier",
"src": "1539:3:5"
},
"nodeType": "YulFunctionCall",
"src": "1539:18:5"
}
],
"functionName": {
"name": "eq",
"nodeType": "YulIdentifier",
"src": "1527:2:5"
},
"nodeType": "YulFunctionCall",
"src": "1527:31:5"
}
],
"functionName": {
"name": "iszero",
"nodeType": "YulIdentifier",
"src": "1520:6:5"
},
"nodeType": "YulFunctionCall",
"src": "1520:39:5"
},
"nodeType": "YulIf",
"src": "1517:59:5"
},
{
"nodeType": "YulAssignment",
"src": "1585:17:5",
"value": {
"name": "value_1",
"nodeType": "YulIdentifier",
"src": "1595:7:5"
},
"variableNames": [
{
"name": "value2",
"nodeType": "YulIdentifier",
"src": "1585:6:5"
}
]
},
{
"nodeType": "YulVariableDeclaration",
"src": "1611:39:5",
"value": {
"arguments": [
{
"arguments": [
{
"name": "headStart",
"nodeType": "YulIdentifier",
"src": "1635:9:5"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "1646:2:5",
"type": "",
"value": "96"
}
],
"functionName": {
"name": "add",
"nodeType": "YulIdentifier",
"src": "1631:3:5"
},
"nodeType": "YulFunctionCall",
"src": "1631:18:5"
}
],
"functionName": {
"name": "mload",
"nodeType": "YulIdentifier",
"src": "1625:5:5"
},
"nodeType": "YulFunctionCall",
"src": "1625:25:5"
},
"variables": [
{
"name": "offset",
"nodeType": "YulTypedName",
"src": "1615:6:5",
"type": ""
}
]
},
{
"nodeType": "YulVariableDeclaration",
"src": "1659:28:5",
"value": {
"arguments": [
{
"arguments": [
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "1677:2:5",
"type": "",
"value": "64"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "1681:1:5",
"type": "",
"value": "1"
}
],
"functionName": {
"name": "shl",
"nodeType": "YulIdentifier",
"src": "1673:3:5"
},
"nodeType": "YulFunctionCall",
"src": "1673:10:5"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "1685:1:5",
"type": "",
"value": "1"
}
],
"functionName": {
"name": "sub",
"nodeType": "YulIdentifier",
"src": "1669:3:5"
},
"nodeType": "YulFunctionCall",
"src": "1669:18:5"
},
"variables": [
{
"name": "_1",
"nodeType": "YulTypedName",
"src": "1663:2:5",
"type": ""
}
]
},
{
"body": {
"nodeType": "YulBlock",
"src": "1714:16:5",
"statements": [
{
"expression": {
"arguments": [
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "1723:1:5",
"type": "",
"value": "0"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "1726:1:5",
"type": "",
"value": "0"
}
],
"functionName": {
"name": "revert",
"nodeType": "YulIdentifier",
"src": "1716:6:5"
},
"nodeType": "YulFunctionCall",
"src": "1716:12:5"
},
"nodeType": "YulExpressionStatement",
"src": "1716:12:5"
}
]
},
"condition": {
"arguments": [
{
"name": "offset",
"nodeType": "YulIdentifier",
"src": "1702:6:5"
},
{
"name": "_1",
"nodeType": "YulIdentifier",
"src": "1710:2:5"
}
],
"functionName": {
"name": "gt",
"nodeType": "YulIdentifier",
"src": "1699:2:5"
},
"nodeType": "YulFunctionCall",
"src": "1699:14:5"
},
"nodeType": "YulIf",
"src": "1696:34:5"
},
{
"nodeType": "YulAssignment",
"src": "1739:71:5",
"value": {
"arguments": [
{
"arguments": [
{
"name": "headStart",
"nodeType": "YulIdentifier",
"src": "1782:9:5"
},
{
"name": "offset",
"nodeType": "YulIdentifier",
"src": "1793:6:5"
}
],
"functionName": {
"name": "add",
"nodeType": "YulIdentifier",
"src": "1778:3:5"
},
"nodeType": "YulFunctionCall",
"src": "1778:22:5"
},
{
"name": "dataEnd",
"nodeType": "YulIdentifier",
"src": "1802:7:5"
}
],
"functionName": {
"name": "abi_decode_string_fromMemory",
"nodeType": "YulIdentifier",
"src": "1749:28:5"
},
"nodeType": "YulFunctionCall",
"src": "1749:61:5"
},
"variableNames": [
{
"name": "value3",
"nodeType": "YulIdentifier",
"src": "1739:6:5"
}
]
},
{
"nodeType": "YulVariableDeclaration",
"src": "1819:42:5",
"value": {
"arguments": [
{
"arguments": [
{
"name": "headStart",
"nodeType": "YulIdentifier",
"src": "1845:9:5"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "1856:3:5",
"type": "",
"value": "128"
}
],
"functionName": {
"name": "add",
"nodeType": "YulIdentifier",
"src": "1841:3:5"
},
"nodeType": "YulFunctionCall",
"src": "1841:19:5"
}
],
"functionName": {
"name": "mload",
"nodeType": "YulIdentifier",
"src": "1835:5:5"
},
"nodeType": "YulFunctionCall",
"src": "1835:26:5"
},
"variables": [
{
"name": "offset_1",
"nodeType": "YulTypedName",
"src": "1823:8:5",
"type": ""
}
]
},
{
"body": {
"nodeType": "YulBlock",
"src": "1890:16:5",
"statements": [
{
"expression": {
"arguments": [
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "1899:1:5",
"type": "",
"value": "0"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "1902:1:5",
"type": "",
"value": "0"
}
],
"functionName": {
"name": "revert",
"nodeType": "YulIdentifier",
"src": "1892:6:5"
},
"nodeType": "YulFunctionCall",
"src": "1892:12:5"
},
"nodeType": "YulExpressionStatement",
"src": "1892:12:5"
}
]
},
"condition": {
"arguments": [
{
"name": "offset_1",
"nodeType": "YulIdentifier",
"src": "1876:8:5"
},
{
"name": "_1",
"nodeType": "YulIdentifier",
"src": "1886:2:5"
}
],
"functionName": {
"name": "gt",
"nodeType": "YulIdentifier",
"src": "1873:2:5"
},
"nodeType": "YulFunctionCall",
"src": "1873:16:5"
},
"nodeType": "YulIf",
"src": "1870:36:5"
},
{
"nodeType": "YulAssignment",
"src": "1915:73:5",
"value": {
"arguments": [
{
"arguments": [
{
"name": "headStart",
"nodeType": "YulIdentifier",
"src": "1958:9:5"
},
{
"name": "offset_1",
"nodeType": "YulIdentifier",
"src": "1969:8:5"
}
],
"functionName": {
"name": "add",
"nodeType": "YulIdentifier",
"src": "1954:3:5"
},
"nodeType": "YulFunctionCall",
"src": "1954:24:5"
},
{
"name": "dataEnd",
"nodeType": "YulIdentifier",
"src": "1980:7:5"
}
],
"functionName": {
"name": "abi_decode_string_fromMemory",
"nodeType": "YulIdentifier",
"src": "1925:28:5"
},
"nodeType": "YulFunctionCall",
"src": "1925:63:5"
},
"variableNames": [
{
"name": "value4",
"nodeType": "YulIdentifier",
"src": "1915:6:5"
}
]
}
]
},
"name": "abi_decode_tuple_t_address_payablet_uint256t_uint8t_string_memory_ptrt_string_memory_ptr_fromMemory",
"nodeType": "YulFunctionDefinition",
"parameters": [
{
"name": "headStart",
"nodeType": "YulTypedName",
"src": "1145:9:5",
"type": ""
},
{
"name": "dataEnd",
"nodeType": "YulTypedName",
"src": "1156:7:5",
"type": ""
}
],
"returnVariables": [
{
"name": "value0",
"nodeType": "YulTypedName",
"src": "1168:6:5",
"type": ""
},
{
"name": "value1",
"nodeType": "YulTypedName",
"src": "1176:6:5",
"type": ""
},
{
"name": "value2",
"nodeType": "YulTypedName",
"src": "1184:6:5",
"type": ""
},
{
"name": "value3",
"nodeType": "YulTypedName",
"src": "1192:6:5",
"type": ""
},
{
"name": "value4",
"nodeType": "YulTypedName",
"src": "1200:6:5",
"type": ""
}
],
"src": "1036:958:5"
},
{
"body": {
"nodeType": "YulBlock",
"src": "2054:325:5",
"statements": [
{
"nodeType": "YulAssignment",
"src": "2064:22:5",
"value": {
"arguments": [
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "2078:1:5",
"type": "",
"value": "1"
},
{
"name": "data",
"nodeType": "YulIdentifier",
"src": "2081:4:5"
}
],
"functionName": {
"name": "shr",
"nodeType": "YulIdentifier",
"src": "2074:3:5"
},
"nodeType": "YulFunctionCall",
"src": "2074:12:5"
},
"variableNames": [
{
"name": "length",
"nodeType": "YulIdentifier",
"src": "2064:6:5"
}
]
},
{
"nodeType": "YulVariableDeclaration",
"src": "2095:38:5",
"value": {
"arguments": [
{
"name": "data",
"nodeType": "YulIdentifier",
"src": "2125:4:5"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "2131:1:5",
"type": "",
"value": "1"
}
],
"functionName": {
"name": "and",
"nodeType": "YulIdentifier",
"src": "2121:3:5"
},
"nodeType": "YulFunctionCall",
"src": "2121:12:5"
},
"variables": [
{
"name": "outOfPlaceEncoding",
"nodeType": "YulTypedName",
"src": "2099:18:5",
"type": ""
}
]
},
{
"body": {
"nodeType": "YulBlock",
"src": "2172:31:5",
"statements": [
{
"nodeType": "YulAssignment",
"src": "2174:27:5",
"value": {
"arguments": [
{
"name": "length",
"nodeType": "YulIdentifier",
"src": "2188:6:5"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "2196:4:5",
"type": "",
"value": "0x7f"
}
],
"functionName": {
"name": "and",
"nodeType": "YulIdentifier",
"src": "2184:3:5"
},
"nodeType": "YulFunctionCall",
"src": "2184:17:5"
},
"variableNames": [
{
"name": "length",
"nodeType": "YulIdentifier",
"src": "2174:6:5"
}
]
}
]
},
"condition": {
"arguments": [
{
"name": "outOfPlaceEncoding",
"nodeType": "YulIdentifier",
"src": "2152:18:5"
}
],
"functionName": {
"name": "iszero",
"nodeType": "YulIdentifier",
"src": "2145:6:5"
},
"nodeType": "YulFunctionCall",
"src": "2145:26:5"
},
"nodeType": "YulIf",
"src": "2142:61:5"
},
{
"body": {
"nodeType": "YulBlock",
"src": "2262:111:5",
"statements": [
{
"expression": {
"arguments": [
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "2283:1:5",
"type": "",
"value": "0"
},
{
"arguments": [
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "2290:3:5",
"type": "",
"value": "224"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "2295:10:5",
"type": "",
"value": "0x4e487b71"
}
],
"functionName": {
"name": "shl",
"nodeType": "YulIdentifier",
"src": "2286:3:5"
},
"nodeType": "YulFunctionCall",
"src": "2286:20:5"
}
],
"functionName": {
"name": "mstore",
"nodeType": "YulIdentifier",
"src": "2276:6:5"
},
"nodeType": "YulFunctionCall",
"src": "2276:31:5"
},
"nodeType": "YulExpressionStatement",
"src": "2276:31:5"
},
{
"expression": {
"arguments": [
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "2327:1:5",
"type": "",
"value": "4"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "2330:4:5",
"type": "",
"value": "0x22"
}
],
"functionName": {
"name": "mstore",
"nodeType": "YulIdentifier",
"src": "2320:6:5"
},
"nodeType": "YulFunctionCall",
"src": "2320:15:5"
},
"nodeType": "YulExpressionStatement",
"src": "2320:15:5"
},
{
"expression": {
"arguments": [
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "2355:1:5",
"type": "",
"value": "0"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "2358:4:5",
"type": "",
"value": "0x24"
}
],
"functionName": {
"name": "revert",
"nodeType": "YulIdentifier",
"src": "2348:6:5"
},
"nodeType": "YulFunctionCall",
"src": "2348:15:5"
},
"nodeType": "YulExpressionStatement",
"src": "2348:15:5"
}
]
},
"condition": {
"arguments": [
{
"name": "outOfPlaceEncoding",
"nodeType": "YulIdentifier",
"src": "2218:18:5"
},
{
"arguments": [
{
"name": "length",
"nodeType": "YulIdentifier",
"src": "2241:6:5"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "2249:2:5",
"type": "",
"value": "32"
}
],
"functionName": {
"name": "lt",
"nodeType": "YulIdentifier",
"src": "2238:2:5"
},
"nodeType": "YulFunctionCall",
"src": "2238:14:5"
}
],
"functionName": {
"name": "eq",
"nodeType": "YulIdentifier",
"src": "2215:2:5"
},
"nodeType": "YulFunctionCall",
"src": "2215:38:5"
},
"nodeType": "YulIf",
"src": "2212:161:5"
}
]
},
"name": "extract_byte_array_length",
"nodeType": "YulFunctionDefinition",
"parameters": [
{
"name": "data",
"nodeType": "YulTypedName",
"src": "2034:4:5",
"type": ""
}
],
"returnVariables": [
{
"name": "length",
"nodeType": "YulTypedName",
"src": "2043:6:5",
"type": ""
}
],
"src": "1999:380:5"
}
]
},
"contents": "{\n { }\n function panic_error_0x41()\n {\n mstore(0, shl(224, 0x4e487b71))\n mstore(4, 0x41)\n revert(0, 0x24)\n }\n function abi_decode_string_fromMemory(offset, end) -> array\n {\n if iszero(slt(add(offset, 0x1f), end)) { revert(0, 0) }\n let _1 := mload(offset)\n let _2 := sub(shl(64, 1), 1)\n if gt(_1, _2) { panic_error_0x41() }\n let _3 := not(31)\n let memPtr := mload(64)\n let newFreePtr := add(memPtr, and(add(and(add(_1, 0x1f), _3), 63), _3))\n if or(gt(newFreePtr, _2), lt(newFreePtr, memPtr)) { panic_error_0x41() }\n mstore(64, newFreePtr)\n mstore(memPtr, _1)\n let _4 := 0x20\n if gt(add(add(offset, _1), _4), end) { revert(0, 0) }\n let i := 0\n for { } lt(i, _1) { i := add(i, _4) }\n {\n mstore(add(add(memPtr, i), _4), mload(add(add(offset, i), _4)))\n }\n if gt(i, _1)\n {\n mstore(add(add(memPtr, _1), _4), 0)\n }\n array := memPtr\n }\n function abi_decode_tuple_t_address_payablet_uint256t_uint8t_string_memory_ptrt_string_memory_ptr_fromMemory(headStart, dataEnd) -> value0, value1, value2, value3, value4\n {\n if slt(sub(dataEnd, headStart), 160) { revert(0, 0) }\n let value := mload(headStart)\n if iszero(eq(value, and(value, sub(shl(160, 1), 1)))) { revert(0, 0) }\n value0 := value\n value1 := mload(add(headStart, 32))\n let value_1 := mload(add(headStart, 64))\n if iszero(eq(value_1, and(value_1, 0xff))) { revert(0, 0) }\n value2 := value_1\n let offset := mload(add(headStart, 96))\n let _1 := sub(shl(64, 1), 1)\n if gt(offset, _1) { revert(0, 0) }\n value3 := abi_decode_string_fromMemory(add(headStart, offset), dataEnd)\n let offset_1 := mload(add(headStart, 128))\n if gt(offset_1, _1) { revert(0, 0) }\n value4 := abi_decode_string_fromMemory(add(headStart, offset_1), dataEnd)\n }\n function extract_byte_array_length(data) -> length\n {\n length := shr(1, data)\n let outOfPlaceEncoding := and(data, 1)\n if iszero(outOfPlaceEncoding) { length := and(length, 0x7f) }\n if eq(outOfPlaceEncoding, lt(length, 32))\n {\n mstore(0, shl(224, 0x4e487b71))\n mstore(4, 0x22)\n revert(0, 0x24)\n }\n }\n}",
"id": 5,
"language": "Yul",
"name": "#utility.yul"
}
],
"linkReferences": {},
"object": "60806040523480156200001157600080fd5b50604051620016e8380380620016e8833981016040819052620000349162000274565b600080546001600160a81b0319166001600160a01b03871617905584620000583390565b6001600160a01b031660006001600160a01b03167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35060038490556001600160a01b03851660009081526001602090815260409091208590556004805460ff191660ff86161790558251620000df916005919085019062000101565b508051620000f590600690602084019062000101565b50505050505062000360565b8280546200010f9062000323565b90600052602060002090601f0160209004810192826200013357600085556200017e565b82601f106200014e57805160ff19168380011785556200017e565b828001600101855582156200017e579182015b828111156200017e57825182559160200191906001019062000161565b506200018c92915062000190565b5090565b5b808211156200018c576000815560010162000191565b634e487b7160e01b600052604160045260246000fd5b600082601f830112620001cf57600080fd5b81516001600160401b0380821115620001ec57620001ec620001a7565b604051601f8301601f19908116603f01168101908282118183101715620002175762000217620001a7565b816040528381526020925086838588010111156200023457600080fd5b600091505b8382101562000258578582018301518183018401529082019062000239565b838211156200026a5760008385830101525b9695505050505050565b600080600080600060a086880312156200028d57600080fd5b85516001600160a01b0381168114620002a557600080fd5b60208701516040880151919650945060ff81168114620002c457600080fd5b60608701519093506001600160401b0380821115620002e257600080fd5b620002f089838a01620001bd565b935060808801519150808211156200030757600080fd5b506200031688828901620001bd565b9150509295509295909350565b600181811c908216806200033857607f821691505b602082108114156200035a57634e487b7160e01b600052602260045260246000fd5b50919050565b61137880620003706000396000f3fe608060405234801561001057600080fd5b506004361061014d5760003560e01c8063715018a6116100c3578063a457c2d71161007c578063a457c2d7146102e6578063a9059cbb146102f9578063b9a600381461030c578063c01a8c8414610314578063dd62ed3e14610327578063f2fde38b1461036057600080fd5b8063715018a6146102525780638456cb591461025a5780638da5cb5b146102625780638f32d59b1461027357806395d89b41146102865780639ace38c21461028e57600080fd5b806323b872dd1161011557806323b872dd146101d4578063313ce567146101e757806339509351146101fc5780633f4ba83a1461020f5780635c975abb1461021757806370a082311461022957600080fd5b806305bf37aa1461015257806306fdde0314610167578063095ea7b314610185578063119df25f146101a857806318160ddd146101c2575b600080fd5b610165610160366004610fcc565b610373565b005b61016f61048c565b60405161017c9190610fe5565b60405180910390f35b61019861019336600461104f565b61051e565b604051901515815260200161017c565b335b6040516001600160a01b03909116815260200161017c565b6003545b60405190815260200161017c565b6101986101e236600461107b565b610535565b60045460405160ff909116815260200161017c565b61019861020a36600461104f565b61059f565b6101656105d5565b600054600160a01b900460ff16610198565b6101c66102373660046110bc565b6001600160a01b031660009081526001602052604090205490565b61016561069c565b610165610710565b6000546001600160a01b03166101aa565b6000546001600160a01b03163314610198565b61016f61079f565b6102d661029c366004610fcc565b60009081526007602052604090208054600182015460028301546003909301546001600160a01b039283169492909116929160ff90911690565b60405161017c94939291906110ef565b6101986102f436600461104f565b6107ae565b61019861030736600461104f565b6107fd565b6008546101c6565b610165610322366004610fcc565b61083a565b6101c661033536600461113b565b6001600160a01b03918216600090815260026020908152604080832093909416825291909152205490565b61016561036e3660046110bc565b61094a565b600054600160a01b900460ff16156103a65760405162461bcd60e51b815260040161039d90611174565b60405180910390fd5b6000546001600160a01b031633146103d05760405162461bcd60e51b815260040161039d9061119e565b60008181526007602052604090206001015481906001600160a01b03166104095760405162461bcd60e51b815260040161039d906111d3565b816000808281526007602052604090206003015460ff166002811115610431576104316110d9565b1461044e5760405162461bcd60e51b815260040161039d9061121b565b610459836002610980565b50604051839033907f310fda14a1b3763badba87b2ca73948d00cc14d8fa2d6ee19a67ac90fa9afa6790600090a3505050565b60606005805461049b9061126e565b80601f01602080910402602001604051908101604052809291908181526020018280546104c79061126e565b80156105145780601f106104e957610100808354040283529160200191610514565b820191906000526020600020905b8154815290600101906020018083116104f757829003601f168201915b5050505050905090565b600061052b338484610af7565b5060015b92915050565b6000610542848484610c1b565b506105958433610590856040518060600160405280602881526020016112f6602891396001600160a01b038a1660009081526002602090815260408083203384529091529020549190610c3f565b610af7565b5060019392505050565b3360008181526002602090815260408083206001600160a01b0387168452909152812054909161052b9185906105909086610c6b565b6000546001600160a01b031633146105ff5760405162461bcd60e51b815260040161039d9061119e565b600054600160a01b900460ff1661064f5760405162461bcd60e51b815260206004820152601460248201527314185d5cd8589b194e881b9bdd081c185d5cd95960621b604482015260640161039d565b6000805460ff60a01b191690557f5db9ee0a495bf2e6ff9c91a7834c1ba4fdd244a5e8aa4e537bd38aeae4b073aa335b6040516001600160a01b03909116815260200160405180910390a1565b6000546001600160a01b031633146106c65760405162461bcd60e51b815260040161039d9061119e565b600080546040516001600160a01b03909116907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908390a3600080546001600160a01b0319169055565b6000546001600160a01b0316331461073a5760405162461bcd60e51b815260040161039d9061119e565b600054600160a01b900460ff16156107645760405162461bcd60e51b815260040161039d90611174565b6000805460ff60a01b1916600160a01b1790557f62e78cea01bee320cd4e420270b5ea74000d11b0c9f74754ebdbfc544b05a25861067f3390565b60606006805461049b9061126e565b600061052b33846105908560405180606001604052806025815260200161131e602591393360009081526002602090815260408083206001600160a01b038d1684529091529020549190610c3f565b60008054600160a01b900460ff16156108285760405162461bcd60e51b815260040161039d90611174565b610833338484610c1b565b9392505050565b600054600160a01b900460ff16156108645760405162461bcd60e51b815260040161039d90611174565b6000546001600160a01b0316331461088e5760405162461bcd60e51b815260040161039d9061119e565b60008181526007602052604090206001015481906001600160a01b03166108c75760405162461bcd60e51b815260040161039d906111d3565b816000808281526007602052604090206003015460ff1660028111156108ef576108ef6110d9565b1461090c5760405162461bcd60e51b815260040161039d9061121b565b610917836001610980565b50604051839033907f4a504a94899432a9846e1aa406dceb1bcfd538bb839071d49d1e5e23f5be30ef90600090a3505050565b6000546001600160a01b031633146109745760405162461bcd60e51b815260040161039d9061119e565b61097d81610c77565b50565b6000828152600760209081526040808320815160808101835281546001600160a01b03908116825260018301541693810193909352600280820154928401929092526003810154849392606084019160ff16908111156109e2576109e26110d9565b60028111156109f3576109f36110d9565b905250905060608101836002811115610a0e57610a0e6110d9565b90816002811115610a2157610a216110d9565b905250600084815260076020908152604091829020835181546001600160a01b039182166001600160a01b0319918216178355928501516001808401805492909316919094161790559183015160028084019190915560608401516003840180548695949293919260ff19909116918490811115610aa157610aa16110d9565b021790555060019150610ab19050565b836002811115610ac357610ac36110d9565b1415610ae457610adc3082602001518360400151610d37565b91505061052f565b610adc3082600001518360400151610d37565b6001600160a01b038316610b595760405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f206164646044820152637265737360e01b606482015260840161039d565b6001600160a01b038216610bba5760405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f206164647265604482015261737360f01b606482015260840161039d565b6001600160a01b0383811660008181526002602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b6000610c28843084610d37565b50610c34848484610ed1565b506001949350505050565b60008184841115610c635760405162461bcd60e51b815260040161039d9190610fe5565b505050900390565b600061083382846112a9565b6001600160a01b038116610cdc5760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b606482015260840161039d565b600080546040516001600160a01b03808516939216917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e091a3600080546001600160a01b0319166001600160a01b0392909216919091179055565b60006001600160a01b038416610d9d5760405162461bcd60e51b815260206004820152602560248201527f45524332303a207472616e736665722066726f6d20746865207a65726f206164604482015264647265737360d81b606482015260840161039d565b6001600160a01b038316610dff5760405162461bcd60e51b815260206004820152602360248201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260448201526265737360e81b606482015260840161039d565b610e3c826040518060600160405280602681526020016112d0602691396001600160a01b0387166000908152600160205260409020549190610c3f565b6001600160a01b038086166000908152600160205260408082209390935590851681522054610e6b9083610c6b565b6001600160a01b0380851660008181526001602052604090819020939093559151908616907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef90610ebf9086815260200190565b60405180910390a35060019392505050565b600854604080516080810182526001600160a01b038087168252851660208201529081018390526060810160009052600082815260076020908152604091829020835181546001600160a01b039182166001600160a01b0319918216178355928501516001808401805492909316919094161790559183015160028084019190915560608401516003840180549193909260ff19909216918490811115610f7a57610f7a6110d9565b0217905550905050600160086000828254610f9591906112a9565b909155505060405181907fc0ba8fe4b176c1714197d43b9cc6bcf797a4a7461c5fe8d0ef6e184ae7601e5190600090a29392505050565b600060208284031215610fde57600080fd5b5035919050565b600060208083528351808285015260005b8181101561101257858101830151858201604001528201610ff6565b81811115611024576000604083870101525b50601f01601f1916929092016040019392505050565b6001600160a01b038116811461097d57600080fd5b6000806040838503121561106257600080fd5b823561106d8161103a565b946020939093013593505050565b60008060006060848603121561109057600080fd5b833561109b8161103a565b925060208401356110ab8161103a565b929592945050506040919091013590565b6000602082840312156110ce57600080fd5b81356108338161103a565b634e487b7160e01b600052602160045260246000fd5b6001600160a01b0385811682528416602082015260408101839052608081016003831061112c57634e487b7160e01b600052602160045260246000fd5b82606083015295945050505050565b6000806040838503121561114e57600080fd5b82356111598161103a565b915060208301356111698161103a565b809150509250929050565b60208082526010908201526f14185d5cd8589b194e881c185d5cd95960821b604082015260600190565b6020808252818101527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604082015260600190565b60208082526028908201527f576869746e6579546f6b656e3a205472616e73616374696f6e20646f6573206e6040820152671bdd08195e1a5cdd60c21b606082015260800190565b60208082526033908201527f576869746e6579546f6b656e3a205472616e73616374696f6e2068617320616c6040820152721c9958591e481899595b88195e1958dd5d1959606a1b606082015260800190565b600181811c9082168061128257607f821691505b602082108114156112a357634e487b7160e01b600052602260045260246000fd5b50919050565b600082198211156112ca57634e487b7160e01b600052601160045260246000fd5b50019056fe45524332303a207472616e7366657220616d6f756e7420657863656564732062616c616e636545524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e636545524332303a2064656372656173656420616c6c6f77616e63652062656c6f77207a65726fa26469706673582212209c85f1b49146b725d71eaad76b4738a0061e8728b62de672488df4a0f3a864e064736f6c63430008080033",
"opcodes": "PUSH1 0x80 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH3 0x11 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x40 MLOAD PUSH3 0x16E8 CODESIZE SUB DUP1 PUSH3 0x16E8 DUP4 CODECOPY DUP2 ADD PUSH1 0x40 DUP2 SWAP1 MSTORE PUSH3 0x34 SWAP2 PUSH3 0x274 JUMP JUMPDEST PUSH1 0x0 DUP1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA8 SHL SUB NOT AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP8 AND OR SWAP1 SSTORE DUP5 PUSH3 0x58 CALLER SWAP1 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH1 0x0 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH32 0x8BE0079C531659141344CD1FD0A4F28419497F9722A3DAAFE3B4186F6B6457E0 PUSH1 0x40 MLOAD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG3 POP PUSH1 0x3 DUP5 SWAP1 SSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP6 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x1 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 SWAP1 SWAP2 KECCAK256 DUP6 SWAP1 SSTORE PUSH1 0x4 DUP1 SLOAD PUSH1 0xFF NOT AND PUSH1 0xFF DUP7 AND OR SWAP1 SSTORE DUP3 MLOAD PUSH3 0xDF SWAP2 PUSH1 0x5 SWAP2 SWAP1 DUP6 ADD SWAP1 PUSH3 0x101 JUMP JUMPDEST POP DUP1 MLOAD PUSH3 0xF5 SWAP1 PUSH1 0x6 SWAP1 PUSH1 0x20 DUP5 ADD SWAP1 PUSH3 0x101 JUMP JUMPDEST POP POP POP POP POP POP PUSH3 0x360 JUMP JUMPDEST DUP3 DUP1 SLOAD PUSH3 0x10F SWAP1 PUSH3 0x323 JUMP JUMPDEST SWAP1 PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 KECCAK256 SWAP1 PUSH1 0x1F ADD PUSH1 0x20 SWAP1 DIV DUP2 ADD SWAP3 DUP3 PUSH3 0x133 JUMPI PUSH1 0x0 DUP6 SSTORE PUSH3 0x17E JUMP JUMPDEST DUP3 PUSH1 0x1F LT PUSH3 0x14E JUMPI DUP1 MLOAD PUSH1 0xFF NOT AND DUP4 DUP1 ADD OR DUP6 SSTORE PUSH3 0x17E JUMP JUMPDEST DUP3 DUP1 ADD PUSH1 0x1 ADD DUP6 SSTORE DUP3 ISZERO PUSH3 0x17E JUMPI SWAP2 DUP3 ADD JUMPDEST DUP3 DUP2 GT ISZERO PUSH3 0x17E JUMPI DUP3 MLOAD DUP3 SSTORE SWAP2 PUSH1 0x20 ADD SWAP2 SWAP1 PUSH1 0x1 ADD SWAP1 PUSH3 0x161 JUMP JUMPDEST POP PUSH3 0x18C SWAP3 SWAP2 POP PUSH3 0x190 JUMP JUMPDEST POP SWAP1 JUMP JUMPDEST JUMPDEST DUP1 DUP3 GT ISZERO PUSH3 0x18C JUMPI PUSH1 0x0 DUP2 SSTORE PUSH1 0x1 ADD PUSH3 0x191 JUMP JUMPDEST PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH1 0x0 MSTORE PUSH1 0x41 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST PUSH1 0x0 DUP3 PUSH1 0x1F DUP4 ADD SLT PUSH3 0x1CF JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB DUP1 DUP3 GT ISZERO PUSH3 0x1EC JUMPI PUSH3 0x1EC PUSH3 0x1A7 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x1F DUP4 ADD PUSH1 0x1F NOT SWAP1 DUP2 AND PUSH1 0x3F ADD AND DUP2 ADD SWAP1 DUP3 DUP3 GT DUP2 DUP4 LT OR ISZERO PUSH3 0x217 JUMPI PUSH3 0x217 PUSH3 0x1A7 JUMP JUMPDEST DUP2 PUSH1 0x40 MSTORE DUP4 DUP2 MSTORE PUSH1 0x20 SWAP3 POP DUP7 DUP4 DUP6 DUP9 ADD ADD GT ISZERO PUSH3 0x234 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 SWAP2 POP JUMPDEST DUP4 DUP3 LT ISZERO PUSH3 0x258 JUMPI DUP6 DUP3 ADD DUP4 ADD MLOAD DUP2 DUP4 ADD DUP5 ADD MSTORE SWAP1 DUP3 ADD SWAP1 PUSH3 0x239 JUMP JUMPDEST DUP4 DUP3 GT ISZERO PUSH3 0x26A JUMPI PUSH1 0x0 DUP4 DUP6 DUP4 ADD ADD MSTORE JUMPDEST SWAP7 SWAP6 POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0x0 PUSH1 0xA0 DUP7 DUP9 SUB SLT ISZERO PUSH3 0x28D JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP6 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND DUP2 EQ PUSH3 0x2A5 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x20 DUP8 ADD MLOAD PUSH1 0x40 DUP9 ADD MLOAD SWAP2 SWAP7 POP SWAP5 POP PUSH1 0xFF DUP2 AND DUP2 EQ PUSH3 0x2C4 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x60 DUP8 ADD MLOAD SWAP1 SWAP4 POP PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB DUP1 DUP3 GT ISZERO PUSH3 0x2E2 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH3 0x2F0 DUP10 DUP4 DUP11 ADD PUSH3 0x1BD JUMP JUMPDEST SWAP4 POP PUSH1 0x80 DUP9 ADD MLOAD SWAP2 POP DUP1 DUP3 GT ISZERO PUSH3 0x307 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH3 0x316 DUP9 DUP3 DUP10 ADD PUSH3 0x1BD JUMP JUMPDEST SWAP2 POP POP SWAP3 SWAP6 POP SWAP3 SWAP6 SWAP1 SWAP4 POP JUMP JUMPDEST PUSH1 0x1 DUP2 DUP2 SHR SWAP1 DUP3 AND DUP1 PUSH3 0x338 JUMPI PUSH1 0x7F DUP3 AND SWAP2 POP JUMPDEST PUSH1 0x20 DUP3 LT DUP2 EQ ISZERO PUSH3 0x35A JUMPI PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH1 0x0 MSTORE PUSH1 0x22 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH2 0x1378 DUP1 PUSH3 0x370 PUSH1 0x0 CODECOPY PUSH1 0x0 RETURN INVALID PUSH1 0x80 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH2 0x10 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x4 CALLDATASIZE LT PUSH2 0x14D JUMPI PUSH1 0x0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0x715018A6 GT PUSH2 0xC3 JUMPI DUP1 PUSH4 0xA457C2D7 GT PUSH2 0x7C JUMPI DUP1 PUSH4 0xA457C2D7 EQ PUSH2 0x2E6 JUMPI DUP1 PUSH4 0xA9059CBB EQ PUSH2 0x2F9 JUMPI DUP1 PUSH4 0xB9A60038 EQ PUSH2 0x30C JUMPI DUP1 PUSH4 0xC01A8C84 EQ PUSH2 0x314 JUMPI DUP1 PUSH4 0xDD62ED3E EQ PUSH2 0x327 JUMPI DUP1 PUSH4 0xF2FDE38B EQ PUSH2 0x360 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 PUSH4 0x715018A6 EQ PUSH2 0x252 JUMPI DUP1 PUSH4 0x8456CB59 EQ PUSH2 0x25A JUMPI DUP1 PUSH4 0x8DA5CB5B EQ PUSH2 0x262 JUMPI DUP1 PUSH4 0x8F32D59B EQ PUSH2 0x273 JUMPI DUP1 PUSH4 0x95D89B41 EQ PUSH2 0x286 JUMPI DUP1 PUSH4 0x9ACE38C2 EQ PUSH2 0x28E JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 PUSH4 0x23B872DD GT PUSH2 0x115 JUMPI DUP1 PUSH4 0x23B872DD EQ PUSH2 0x1D4 JUMPI DUP1 PUSH4 0x313CE567 EQ PUSH2 0x1E7 JUMPI DUP1 PUSH4 0x39509351 EQ PUSH2 0x1FC JUMPI DUP1 PUSH4 0x3F4BA83A EQ PUSH2 0x20F JUMPI DUP1 PUSH4 0x5C975ABB EQ PUSH2 0x217 JUMPI DUP1 PUSH4 0x70A08231 EQ PUSH2 0x229 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 PUSH4 0x5BF37AA EQ PUSH2 0x152 JUMPI DUP1 PUSH4 0x6FDDE03 EQ PUSH2 0x167 JUMPI DUP1 PUSH4 0x95EA7B3 EQ PUSH2 0x185 JUMPI DUP1 PUSH4 0x119DF25F EQ PUSH2 0x1A8 JUMPI DUP1 PUSH4 0x18160DDD EQ PUSH2 0x1C2 JUMPI JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x165 PUSH2 0x160 CALLDATASIZE PUSH1 0x4 PUSH2 0xFCC JUMP JUMPDEST PUSH2 0x373 JUMP JUMPDEST STOP JUMPDEST PUSH2 0x16F PUSH2 0x48C JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x17C SWAP2 SWAP1 PUSH2 0xFE5 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0x198 PUSH2 0x193 CALLDATASIZE PUSH1 0x4 PUSH2 0x104F JUMP JUMPDEST PUSH2 0x51E JUMP JUMPDEST PUSH1 0x40 MLOAD SWAP1 ISZERO ISZERO DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0x17C JUMP JUMPDEST CALLER JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 SWAP2 AND DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0x17C JUMP JUMPDEST PUSH1 0x3 SLOAD JUMPDEST PUSH1 0x40 MLOAD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0x17C JUMP JUMPDEST PUSH2 0x198 PUSH2 0x1E2 CALLDATASIZE PUSH1 0x4 PUSH2 0x107B JUMP JUMPDEST PUSH2 0x535 JUMP JUMPDEST PUSH1 0x4 SLOAD PUSH1 0x40 MLOAD PUSH1 0xFF SWAP1 SWAP2 AND DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0x17C JUMP JUMPDEST PUSH2 0x198 PUSH2 0x20A CALLDATASIZE PUSH1 0x4 PUSH2 0x104F JUMP JUMPDEST PUSH2 0x59F JUMP JUMPDEST PUSH2 0x165 PUSH2 0x5D5 JUMP JUMPDEST PUSH1 0x0 SLOAD PUSH1 0x1 PUSH1 0xA0 SHL SWAP1 DIV PUSH1 0xFF AND PUSH2 0x198 JUMP JUMPDEST PUSH2 0x1C6 PUSH2 0x237 CALLDATASIZE PUSH1 0x4 PUSH2 0x10BC JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x1 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD SWAP1 JUMP JUMPDEST PUSH2 0x165 PUSH2 0x69C JUMP JUMPDEST PUSH2 0x165 PUSH2 0x710 JUMP JUMPDEST PUSH1 0x0 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0x1AA JUMP JUMPDEST PUSH1 0x0 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND CALLER EQ PUSH2 0x198 JUMP JUMPDEST PUSH2 0x16F PUSH2 0x79F JUMP JUMPDEST PUSH2 0x2D6 PUSH2 0x29C CALLDATASIZE PUSH1 0x4 PUSH2 0xFCC JUMP JUMPDEST PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x7 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 DUP1 SLOAD PUSH1 0x1 DUP3 ADD SLOAD PUSH1 0x2 DUP4 ADD SLOAD PUSH1 0x3 SWAP1 SWAP4 ADD SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP3 DUP4 AND SWAP5 SWAP3 SWAP1 SWAP2 AND SWAP3 SWAP2 PUSH1 0xFF SWAP1 SWAP2 AND SWAP1 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x17C SWAP5 SWAP4 SWAP3 SWAP2 SWAP1 PUSH2 0x10EF JUMP JUMPDEST PUSH2 0x198 PUSH2 0x2F4 CALLDATASIZE PUSH1 0x4 PUSH2 0x104F JUMP JUMPDEST PUSH2 0x7AE JUMP JUMPDEST PUSH2 0x198 PUSH2 0x307 CALLDATASIZE PUSH1 0x4 PUSH2 0x104F JUMP JUMPDEST PUSH2 0x7FD JUMP JUMPDEST PUSH1 0x8 SLOAD PUSH2 0x1C6 JUMP JUMPDEST PUSH2 0x165 PUSH2 0x322 CALLDATASIZE PUSH1 0x4 PUSH2 0xFCC JUMP JUMPDEST PUSH2 0x83A JUMP JUMPDEST PUSH2 0x1C6 PUSH2 0x335 CALLDATASIZE PUSH1 0x4 PUSH2 0x113B JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP2 DUP3 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x2 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 SWAP4 SWAP1 SWAP5 AND DUP3 MSTORE SWAP2 SWAP1 SWAP2 MSTORE KECCAK256 SLOAD SWAP1 JUMP JUMPDEST PUSH2 0x165 PUSH2 0x36E CALLDATASIZE PUSH1 0x4 PUSH2 0x10BC JUMP JUMPDEST PUSH2 0x94A JUMP JUMPDEST PUSH1 0x0 SLOAD PUSH1 0x1 PUSH1 0xA0 SHL SWAP1 DIV PUSH1 0xFF AND ISZERO PUSH2 0x3A6 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x39D SWAP1 PUSH2 0x1174 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x0 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND CALLER EQ PUSH2 0x3D0 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x39D SWAP1 PUSH2 0x119E JUMP JUMPDEST PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0x7 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 PUSH1 0x1 ADD SLOAD DUP2 SWAP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0x409 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x39D SWAP1 PUSH2 0x11D3 JUMP JUMPDEST DUP2 PUSH1 0x0 DUP1 DUP3 DUP2 MSTORE PUSH1 0x7 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 PUSH1 0x3 ADD SLOAD PUSH1 0xFF AND PUSH1 0x2 DUP2 GT ISZERO PUSH2 0x431 JUMPI PUSH2 0x431 PUSH2 0x10D9 JUMP JUMPDEST EQ PUSH2 0x44E JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x39D SWAP1 PUSH2 0x121B JUMP JUMPDEST PUSH2 0x459 DUP4 PUSH1 0x2 PUSH2 0x980 JUMP JUMPDEST POP PUSH1 0x40 MLOAD DUP4 SWAP1 CALLER SWAP1 PUSH32 0x310FDA14A1B3763BADBA87B2CA73948D00CC14D8FA2D6EE19A67AC90FA9AFA67 SWAP1 PUSH1 0x0 SWAP1 LOG3 POP POP POP JUMP JUMPDEST PUSH1 0x60 PUSH1 0x5 DUP1 SLOAD PUSH2 0x49B SWAP1 PUSH2 0x126E JUMP JUMPDEST DUP1 PUSH1 0x1F ADD PUSH1 0x20 DUP1 SWAP2 DIV MUL PUSH1 0x20 ADD PUSH1 0x40 MLOAD SWAP1 DUP2 ADD PUSH1 0x40 MSTORE DUP1 SWAP3 SWAP2 SWAP1 DUP2 DUP2 MSTORE PUSH1 0x20 ADD DUP3 DUP1 SLOAD PUSH2 0x4C7 SWAP1 PUSH2 0x126E JUMP JUMPDEST DUP1 ISZERO PUSH2 0x514 JUMPI DUP1 PUSH1 0x1F LT PUSH2 0x4E9 JUMPI PUSH2 0x100 DUP1 DUP4 SLOAD DIV MUL DUP4 MSTORE SWAP2 PUSH1 0x20 ADD SWAP2 PUSH2 0x514 JUMP JUMPDEST DUP3 ADD SWAP2 SWAP1 PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 KECCAK256 SWAP1 JUMPDEST DUP2 SLOAD DUP2 MSTORE SWAP1 PUSH1 0x1 ADD SWAP1 PUSH1 0x20 ADD DUP1 DUP4 GT PUSH2 0x4F7 JUMPI DUP3 SWAP1 SUB PUSH1 0x1F AND DUP3 ADD SWAP2 JUMPDEST POP POP POP POP POP SWAP1 POP SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x52B CALLER DUP5 DUP5 PUSH2 0xAF7 JUMP JUMPDEST POP PUSH1 0x1 JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x542 DUP5 DUP5 DUP5 PUSH2 0xC1B JUMP JUMPDEST POP PUSH2 0x595 DUP5 CALLER PUSH2 0x590 DUP6 PUSH1 0x40 MLOAD DUP1 PUSH1 0x60 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x28 DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0x12F6 PUSH1 0x28 SWAP2 CODECOPY PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP11 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x2 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 CALLER DUP5 MSTORE SWAP1 SWAP2 MSTORE SWAP1 KECCAK256 SLOAD SWAP2 SWAP1 PUSH2 0xC3F JUMP JUMPDEST PUSH2 0xAF7 JUMP JUMPDEST POP PUSH1 0x1 SWAP4 SWAP3 POP POP POP JUMP JUMPDEST CALLER PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0x2 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP8 AND DUP5 MSTORE SWAP1 SWAP2 MSTORE DUP2 KECCAK256 SLOAD SWAP1 SWAP2 PUSH2 0x52B SWAP2 DUP6 SWAP1 PUSH2 0x590 SWAP1 DUP7 PUSH2 0xC6B JUMP JUMPDEST PUSH1 0x0 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND CALLER EQ PUSH2 0x5FF JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x39D SWAP1 PUSH2 0x119E JUMP JUMPDEST PUSH1 0x0 SLOAD PUSH1 0x1 PUSH1 0xA0 SHL SWAP1 DIV PUSH1 0xFF AND PUSH2 0x64F JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x14 PUSH1 0x24 DUP3 ADD MSTORE PUSH20 0x14185D5CD8589B194E881B9BDD081C185D5CD959 PUSH1 0x62 SHL PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 ADD PUSH2 0x39D JUMP JUMPDEST PUSH1 0x0 DUP1 SLOAD PUSH1 0xFF PUSH1 0xA0 SHL NOT AND SWAP1 SSTORE PUSH32 0x5DB9EE0A495BF2E6FF9C91A7834C1BA4FDD244A5E8AA4E537BD38AEAE4B073AA CALLER JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 SWAP2 AND DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG1 JUMP JUMPDEST PUSH1 0x0 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND CALLER EQ PUSH2 0x6C6 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x39D SWAP1 PUSH2 0x119E JUMP JUMPDEST PUSH1 0x0 DUP1 SLOAD PUSH1 0x40 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 SWAP2 AND SWAP1 PUSH32 0x8BE0079C531659141344CD1FD0A4F28419497F9722A3DAAFE3B4186F6B6457E0 SWAP1 DUP4 SWAP1 LOG3 PUSH1 0x0 DUP1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB NOT AND SWAP1 SSTORE JUMP JUMPDEST PUSH1 0x0 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND CALLER EQ PUSH2 0x73A JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x39D SWAP1 PUSH2 0x119E JUMP JUMPDEST PUSH1 0x0 SLOAD PUSH1 0x1 PUSH1 0xA0 SHL SWAP1 DIV PUSH1 0xFF AND ISZERO PUSH2 0x764 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x39D SWAP1 PUSH2 0x1174 JUMP JUMPDEST PUSH1 0x0 DUP1 SLOAD PUSH1 0xFF PUSH1 0xA0 SHL NOT AND PUSH1 0x1 PUSH1 0xA0 SHL OR SWAP1 SSTORE PUSH32 0x62E78CEA01BEE320CD4E420270B5EA74000D11B0C9F74754EBDBFC544B05A258 PUSH2 0x67F CALLER SWAP1 JUMP JUMPDEST PUSH1 0x60 PUSH1 0x6 DUP1 SLOAD PUSH2 0x49B SWAP1 PUSH2 0x126E JUMP JUMPDEST PUSH1 0x0 PUSH2 0x52B CALLER DUP5 PUSH2 0x590 DUP6 PUSH1 0x40 MLOAD DUP1 PUSH1 0x60 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x25 DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0x131E PUSH1 0x25 SWAP2 CODECOPY CALLER PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x2 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP14 AND DUP5 MSTORE SWAP1 SWAP2 MSTORE SWAP1 KECCAK256 SLOAD SWAP2 SWAP1 PUSH2 0xC3F JUMP JUMPDEST PUSH1 0x0 DUP1 SLOAD PUSH1 0x1 PUSH1 0xA0 SHL SWAP1 DIV PUSH1 0xFF AND ISZERO PUSH2 0x828 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x39D SWAP1 PUSH2 0x1174 JUMP JUMPDEST PUSH2 0x833 CALLER DUP5 DUP5 PUSH2 0xC1B JUMP JUMPDEST SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x0 SLOAD PUSH1 0x1 PUSH1 0xA0 SHL SWAP1 DIV PUSH1 0xFF AND ISZERO PUSH2 0x864 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x39D SWAP1 PUSH2 0x1174 JUMP JUMPDEST PUSH1 0x0 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND CALLER EQ PUSH2 0x88E JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x39D SWAP1 PUSH2 0x119E JUMP JUMPDEST PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0x7 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 PUSH1 0x1 ADD SLOAD DUP2 SWAP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0x8C7 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x39D SWAP1 PUSH2 0x11D3 JUMP JUMPDEST DUP2 PUSH1 0x0 DUP1 DUP3 DUP2 MSTORE PUSH1 0x7 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 PUSH1 0x3 ADD SLOAD PUSH1 0xFF AND PUSH1 0x2 DUP2 GT ISZERO PUSH2 0x8EF JUMPI PUSH2 0x8EF PUSH2 0x10D9 JUMP JUMPDEST EQ PUSH2 0x90C JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x39D SWAP1 PUSH2 0x121B JUMP JUMPDEST PUSH2 0x917 DUP4 PUSH1 0x1 PUSH2 0x980 JUMP JUMPDEST POP PUSH1 0x40 MLOAD DUP4 SWAP1 CALLER SWAP1 PUSH32 0x4A504A94899432A9846E1AA406DCEB1BCFD538BB839071D49D1E5E23F5BE30EF SWAP1 PUSH1 0x0 SWAP1 LOG3 POP POP POP JUMP JUMPDEST PUSH1 0x0 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND CALLER EQ PUSH2 0x974 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x39D SWAP1 PUSH2 0x119E JUMP JUMPDEST PUSH2 0x97D DUP2 PUSH2 0xC77 JUMP JUMPDEST POP JUMP JUMPDEST PUSH1 0x0 DUP3 DUP2 MSTORE PUSH1 0x7 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 DUP2 MLOAD PUSH1 0x80 DUP2 ADD DUP4 MSTORE DUP2 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 DUP2 AND DUP3 MSTORE PUSH1 0x1 DUP4 ADD SLOAD AND SWAP4 DUP2 ADD SWAP4 SWAP1 SWAP4 MSTORE PUSH1 0x2 DUP1 DUP3 ADD SLOAD SWAP3 DUP5 ADD SWAP3 SWAP1 SWAP3 MSTORE PUSH1 0x3 DUP2 ADD SLOAD DUP5 SWAP4 SWAP3 PUSH1 0x60 DUP5 ADD SWAP2 PUSH1 0xFF AND SWAP1 DUP2 GT ISZERO PUSH2 0x9E2 JUMPI PUSH2 0x9E2 PUSH2 0x10D9 JUMP JUMPDEST PUSH1 0x2 DUP2 GT ISZERO PUSH2 0x9F3 JUMPI PUSH2 0x9F3 PUSH2 0x10D9 JUMP JUMPDEST SWAP1 MSTORE POP SWAP1 POP PUSH1 0x60 DUP2 ADD DUP4 PUSH1 0x2 DUP2 GT ISZERO PUSH2 0xA0E JUMPI PUSH2 0xA0E PUSH2 0x10D9 JUMP JUMPDEST SWAP1 DUP2 PUSH1 0x2 DUP2 GT ISZERO PUSH2 0xA21 JUMPI PUSH2 0xA21 PUSH2 0x10D9 JUMP JUMPDEST SWAP1 MSTORE POP PUSH1 0x0 DUP5 DUP2 MSTORE PUSH1 0x7 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 SWAP2 DUP3 SWAP1 KECCAK256 DUP4 MLOAD DUP2 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP2 DUP3 AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB NOT SWAP2 DUP3 AND OR DUP4 SSTORE SWAP3 DUP6 ADD MLOAD PUSH1 0x1 DUP1 DUP5 ADD DUP1 SLOAD SWAP3 SWAP1 SWAP4 AND SWAP2 SWAP1 SWAP5 AND OR SWAP1 SSTORE SWAP2 DUP4 ADD MLOAD PUSH1 0x2 DUP1 DUP5 ADD SWAP2 SWAP1 SWAP2 SSTORE PUSH1 0x60 DUP5 ADD MLOAD PUSH1 0x3 DUP5 ADD DUP1 SLOAD DUP7 SWAP6 SWAP5 SWAP3 SWAP4 SWAP2 SWAP3 PUSH1 0xFF NOT SWAP1 SWAP2 AND SWAP2 DUP5 SWAP1 DUP2 GT ISZERO PUSH2 0xAA1 JUMPI PUSH2 0xAA1 PUSH2 0x10D9 JUMP JUMPDEST MUL OR SWAP1 SSTORE POP PUSH1 0x1 SWAP2 POP PUSH2 0xAB1 SWAP1 POP JUMP JUMPDEST DUP4 PUSH1 0x2 DUP2 GT ISZERO PUSH2 0xAC3 JUMPI PUSH2 0xAC3 PUSH2 0x10D9 JUMP JUMPDEST EQ ISZERO PUSH2 0xAE4 JUMPI PUSH2 0xADC ADDRESS DUP3 PUSH1 0x20 ADD MLOAD DUP4 PUSH1 0x40 ADD MLOAD PUSH2 0xD37 JUMP JUMPDEST SWAP2 POP POP PUSH2 0x52F JUMP JUMPDEST PUSH2 0xADC ADDRESS DUP3 PUSH1 0x0 ADD MLOAD DUP4 PUSH1 0x40 ADD MLOAD PUSH2 0xD37 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP4 AND PUSH2 0xB59 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x24 DUP1 DUP3 ADD MSTORE PUSH32 0x45524332303A20617070726F76652066726F6D20746865207A65726F20616464 PUSH1 0x44 DUP3 ADD MSTORE PUSH4 0x72657373 PUSH1 0xE0 SHL PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 ADD PUSH2 0x39D JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP3 AND PUSH2 0xBBA JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x22 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x45524332303A20617070726F766520746F20746865207A65726F206164647265 PUSH1 0x44 DUP3 ADD MSTORE PUSH2 0x7373 PUSH1 0xF0 SHL PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 ADD PUSH2 0x39D JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP4 DUP2 AND PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0x2 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 SWAP5 DUP8 AND DUP1 DUP5 MSTORE SWAP5 DUP3 MSTORE SWAP2 DUP3 SWAP1 KECCAK256 DUP6 SWAP1 SSTORE SWAP1 MLOAD DUP5 DUP2 MSTORE PUSH32 0x8C5BE1E5EBEC7D5BD14F71427D1E84F3DD0314C0F7B2291E5B200AC8C7C3B925 SWAP2 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG3 POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0xC28 DUP5 ADDRESS DUP5 PUSH2 0xD37 JUMP JUMPDEST POP PUSH2 0xC34 DUP5 DUP5 DUP5 PUSH2 0xED1 JUMP JUMPDEST POP PUSH1 0x1 SWAP5 SWAP4 POP POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP2 DUP5 DUP5 GT ISZERO PUSH2 0xC63 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x39D SWAP2 SWAP1 PUSH2 0xFE5 JUMP JUMPDEST POP POP POP SWAP1 SUB SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x833 DUP3 DUP5 PUSH2 0x12A9 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND PUSH2 0xCDC JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x26 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x4F776E61626C653A206E6577206F776E657220697320746865207A65726F2061 PUSH1 0x44 DUP3 ADD MSTORE PUSH6 0x646472657373 PUSH1 0xD0 SHL PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 ADD PUSH2 0x39D JUMP JUMPDEST PUSH1 0x0 DUP1 SLOAD PUSH1 0x40 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP1 DUP6 AND SWAP4 SWAP3 AND SWAP2 PUSH32 0x8BE0079C531659141344CD1FD0A4F28419497F9722A3DAAFE3B4186F6B6457E0 SWAP2 LOG3 PUSH1 0x0 DUP1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB NOT AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP3 SWAP1 SWAP3 AND SWAP2 SWAP1 SWAP2 OR SWAP1 SSTORE JUMP JUMPDEST PUSH1 0x0 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP5 AND PUSH2 0xD9D JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x25 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x45524332303A207472616E736665722066726F6D20746865207A65726F206164 PUSH1 0x44 DUP3 ADD MSTORE PUSH5 0x6472657373 PUSH1 0xD8 SHL PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 ADD PUSH2 0x39D JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP4 AND PUSH2 0xDFF JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x23 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x45524332303A207472616E7366657220746F20746865207A65726F2061646472 PUSH1 0x44 DUP3 ADD MSTORE PUSH3 0x657373 PUSH1 0xE8 SHL PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 ADD PUSH2 0x39D JUMP JUMPDEST PUSH2 0xE3C DUP3 PUSH1 0x40 MLOAD DUP1 PUSH1 0x60 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x26 DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0x12D0 PUSH1 0x26 SWAP2 CODECOPY PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP8 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x1 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD SWAP2 SWAP1 PUSH2 0xC3F JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP1 DUP7 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x1 PUSH1 0x20 MSTORE PUSH1 0x40 DUP1 DUP3 KECCAK256 SWAP4 SWAP1 SWAP4 SSTORE SWAP1 DUP6 AND DUP2 MSTORE KECCAK256 SLOAD PUSH2 0xE6B SWAP1 DUP4 PUSH2 0xC6B JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP1 DUP6 AND PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0x1 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 DUP2 SWAP1 KECCAK256 SWAP4 SWAP1 SWAP4 SSTORE SWAP2 MLOAD SWAP1 DUP7 AND SWAP1 PUSH32 0xDDF252AD1BE2C89B69C2B068FC378DAA952BA7F163C4A11628F55A4DF523B3EF SWAP1 PUSH2 0xEBF SWAP1 DUP7 DUP2 MSTORE PUSH1 0x20 ADD SWAP1 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG3 POP PUSH1 0x1 SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x8 SLOAD PUSH1 0x40 DUP1 MLOAD PUSH1 0x80 DUP2 ADD DUP3 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP1 DUP8 AND DUP3 MSTORE DUP6 AND PUSH1 0x20 DUP3 ADD MSTORE SWAP1 DUP2 ADD DUP4 SWAP1 MSTORE PUSH1 0x60 DUP2 ADD PUSH1 0x0 SWAP1 MSTORE PUSH1 0x0 DUP3 DUP2 MSTORE PUSH1 0x7 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 SWAP2 DUP3 SWAP1 KECCAK256 DUP4 MLOAD DUP2 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP2 DUP3 AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB NOT SWAP2 DUP3 AND OR DUP4 SSTORE SWAP3 DUP6 ADD MLOAD PUSH1 0x1 DUP1 DUP5 ADD DUP1 SLOAD SWAP3 SWAP1 SWAP4 AND SWAP2 SWAP1 SWAP5 AND OR SWAP1 SSTORE SWAP2 DUP4 ADD MLOAD PUSH1 0x2 DUP1 DUP5 ADD SWAP2 SWAP1 SWAP2 SSTORE PUSH1 0x60 DUP5 ADD MLOAD PUSH1 0x3 DUP5 ADD DUP1 SLOAD SWAP2 SWAP4 SWAP1 SWAP3 PUSH1 0xFF NOT SWAP1 SWAP3 AND SWAP2 DUP5 SWAP1 DUP2 GT ISZERO PUSH2 0xF7A JUMPI PUSH2 0xF7A PUSH2 0x10D9 JUMP JUMPDEST MUL OR SWAP1 SSTORE POP SWAP1 POP POP PUSH1 0x1 PUSH1 0x8 PUSH1 0x0 DUP3 DUP3 SLOAD PUSH2 0xF95 SWAP2 SWAP1 PUSH2 0x12A9 JUMP JUMPDEST SWAP1 SWAP2 SSTORE POP POP PUSH1 0x40 MLOAD DUP2 SWAP1 PUSH32 0xC0BA8FE4B176C1714197D43B9CC6BCF797A4A7461C5FE8D0EF6E184AE7601E51 SWAP1 PUSH1 0x0 SWAP1 LOG2 SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0xFDE JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP1 DUP4 MSTORE DUP4 MLOAD DUP1 DUP3 DUP6 ADD MSTORE PUSH1 0x0 JUMPDEST DUP2 DUP2 LT ISZERO PUSH2 0x1012 JUMPI DUP6 DUP2 ADD DUP4 ADD MLOAD DUP6 DUP3 ADD PUSH1 0x40 ADD MSTORE DUP3 ADD PUSH2 0xFF6 JUMP JUMPDEST DUP2 DUP2 GT ISZERO PUSH2 0x1024 JUMPI PUSH1 0x0 PUSH1 0x40 DUP4 DUP8 ADD ADD MSTORE JUMPDEST POP PUSH1 0x1F ADD PUSH1 0x1F NOT AND SWAP3 SWAP1 SWAP3 ADD PUSH1 0x40 ADD SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND DUP2 EQ PUSH2 0x97D JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH2 0x1062 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 CALLDATALOAD PUSH2 0x106D DUP2 PUSH2 0x103A JUMP JUMPDEST SWAP5 PUSH1 0x20 SWAP4 SWAP1 SWAP4 ADD CALLDATALOAD SWAP4 POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 PUSH1 0x60 DUP5 DUP7 SUB SLT ISZERO PUSH2 0x1090 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP4 CALLDATALOAD PUSH2 0x109B DUP2 PUSH2 0x103A JUMP JUMPDEST SWAP3 POP PUSH1 0x20 DUP5 ADD CALLDATALOAD PUSH2 0x10AB DUP2 PUSH2 0x103A JUMP JUMPDEST SWAP3 SWAP6 SWAP3 SWAP5 POP POP POP PUSH1 0x40 SWAP2 SWAP1 SWAP2 ADD CALLDATALOAD SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x10CE JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 CALLDATALOAD PUSH2 0x833 DUP2 PUSH2 0x103A JUMP JUMPDEST PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH1 0x0 MSTORE PUSH1 0x21 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP6 DUP2 AND DUP3 MSTORE DUP5 AND PUSH1 0x20 DUP3 ADD MSTORE PUSH1 0x40 DUP2 ADD DUP4 SWAP1 MSTORE PUSH1 0x80 DUP2 ADD PUSH1 0x3 DUP4 LT PUSH2 0x112C JUMPI PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH1 0x0 MSTORE PUSH1 0x21 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST DUP3 PUSH1 0x60 DUP4 ADD MSTORE SWAP6 SWAP5 POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH2 0x114E JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 CALLDATALOAD PUSH2 0x1159 DUP2 PUSH2 0x103A JUMP JUMPDEST SWAP2 POP PUSH1 0x20 DUP4 ADD CALLDATALOAD PUSH2 0x1169 DUP2 PUSH2 0x103A JUMP JUMPDEST DUP1 SWAP2 POP POP SWAP3 POP SWAP3 SWAP1 POP JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE PUSH1 0x10 SWAP1 DUP3 ADD MSTORE PUSH16 0x14185D5CD8589B194E881C185D5CD959 PUSH1 0x82 SHL PUSH1 0x40 DUP3 ADD MSTORE PUSH1 0x60 ADD SWAP1 JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE DUP2 DUP2 ADD MSTORE PUSH32 0x4F776E61626C653A2063616C6C6572206973206E6F7420746865206F776E6572 PUSH1 0x40 DUP3 ADD MSTORE PUSH1 0x60 ADD SWAP1 JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE PUSH1 0x28 SWAP1 DUP3 ADD MSTORE PUSH32 0x576869746E6579546F6B656E3A205472616E73616374696F6E20646F6573206E PUSH1 0x40 DUP3 ADD MSTORE PUSH8 0x1BDD08195E1A5CDD PUSH1 0xC2 SHL PUSH1 0x60 DUP3 ADD MSTORE PUSH1 0x80 ADD SWAP1 JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE PUSH1 0x33 SWAP1 DUP3 ADD MSTORE PUSH32 0x576869746E6579546F6B656E3A205472616E73616374696F6E2068617320616C PUSH1 0x40 DUP3 ADD MSTORE PUSH19 0x1C9958591E481899595B88195E1958DD5D1959 PUSH1 0x6A SHL PUSH1 0x60 DUP3 ADD MSTORE PUSH1 0x80 ADD SWAP1 JUMP JUMPDEST PUSH1 0x1 DUP2 DUP2 SHR SWAP1 DUP3 AND DUP1 PUSH2 0x1282 JUMPI PUSH1 0x7F DUP3 AND SWAP2 POP JUMPDEST PUSH1 0x20 DUP3 LT DUP2 EQ ISZERO PUSH2 0x12A3 JUMPI PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH1 0x0 MSTORE PUSH1 0x22 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP3 NOT DUP3 GT ISZERO PUSH2 0x12CA JUMPI PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH1 0x0 MSTORE PUSH1 0x11 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST POP ADD SWAP1 JUMP INVALID GASLIMIT MSTORE NUMBER ORIGIN ADDRESS GASPRICE KECCAK256 PUSH21 0x72616E7366657220616D6F756E7420657863656564 PUSH20 0x2062616C616E636545524332303A207472616E73 PUSH7 0x657220616D6F75 PUSH15 0x74206578636565647320616C6C6F77 PUSH2 0x6E63 PUSH6 0x45524332303A KECCAK256 PUSH5 0x6563726561 PUSH20 0x656420616C6C6F77616E63652062656C6F77207A PUSH6 0x726FA2646970 PUSH7 0x73582212209C85 CALL 0xB4 SWAP2 CHAINID 0xB7 0x25 0xD7 0x1E 0xAA 0xD7 PUSH12 0x4738A0061E8728B62DE67248 DUP14 DELEGATECALL LOG0 RETURN 0xA8 PUSH5 0xE064736F6C PUSH4 0x43000808 STOP CALLER ",
"sourceMap": "381:11921:4:-:0;;;525:313;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;819:6:2;:14;;-1:-1:-1;;;;;;843:15:2;-1:-1:-1;;;;;819:14:2;;843:15;;;665:5:4;906:12:2;885:10:0;;816:86;906:12:2;-1:-1:-1;;;;;873:46:2;902:1;-1:-1:-1;;;;;873:46:2;;;;;;;;;;;-1:-1:-1;686:12:4::1;:26:::0;;;-1:-1:-1;;;;;722:16:4;::::1;;::::0;;;:9:::1;:16;::::0;;;;;;;:31;;;763:9:::1;:20:::0;;-1:-1:-1;;763:20:4::1;;::::0;::::1;;::::0;;793:12;;::::1;::::0;:5:::1;::::0;:12;;::::1;::::0;::::1;:::i;:::-;-1:-1:-1::0;815:16:4;;::::1;::::0;:7:::1;::::0;:16:::1;::::0;::::1;::::0;::::1;:::i;:::-;;525:313:::0;;;;;381:11921;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;381:11921:4;;;-1:-1:-1;381:11921:4;:::i;:::-;;;:::o;:::-;;;;;;;;;;;;;;;14:127:5;75:10;70:3;66:20;63:1;56:31;106:4;103:1;96:15;130:4;127:1;120:15;146:885;200:5;253:3;246:4;238:6;234:17;230:27;220:55;;271:1;268;261:12;220:55;294:13;;-1:-1:-1;;;;;356:10:5;;;353:36;;;369:18;;:::i;:::-;444:2;438:9;412:2;498:13;;-1:-1:-1;;494:22:5;;;518:2;490:31;486:40;474:53;;;542:18;;;562:22;;;539:46;536:72;;;588:18;;:::i;:::-;628:10;624:2;617:22;663:2;655:6;648:18;685:4;675:14;;730:3;725:2;720;712:6;708:15;704:24;701:33;698:53;;;747:1;744;737:12;698:53;769:1;760:10;;779:133;793:2;790:1;787:9;779:133;;;881:14;;;877:23;;871:30;850:14;;;846:23;;839:63;804:10;;;;779:133;;;930:2;927:1;924:9;921:80;;;989:1;984:2;979;971:6;967:15;963:24;956:35;921:80;1019:6;146:885;-1:-1:-1;;;;;;146:885:5:o;1036:958::-;1168:6;1176;1184;1192;1200;1253:3;1241:9;1232:7;1228:23;1224:33;1221:53;;;1270:1;1267;1260:12;1221:53;1296:16;;-1:-1:-1;;;;;1341:31:5;;1331:42;;1321:70;;1387:1;1384;1377:12;1321:70;1455:2;1440:18;;1434:25;1504:2;1489:18;;1483:25;1410:5;;-1:-1:-1;1434:25:5;-1:-1:-1;1552:4:5;1539:18;;1527:31;;1517:59;;1572:1;1569;1562:12;1517:59;1646:2;1631:18;;1625:25;1595:7;;-1:-1:-1;;;;;;1699:14:5;;;1696:34;;;1726:1;1723;1716:12;1696:34;1749:61;1802:7;1793:6;1782:9;1778:22;1749:61;:::i;:::-;1739:71;;1856:3;1845:9;1841:19;1835:26;1819:42;;1886:2;1876:8;1873:16;1870:36;;;1902:1;1899;1892:12;1870:36;;1925:63;1980:7;1969:8;1958:9;1954:24;1925:63;:::i;:::-;1915:73;;;1036:958;;;;;;;;:::o;1999:380::-;2078:1;2074:12;;;;2121;;;2142:61;;2196:4;2188:6;2184:17;2174:27;;2142:61;2249:2;2241:6;2238:14;2218:18;2215:38;2212:161;;;2295:10;2290:3;2286:20;2283:1;2276:31;2330:4;2327:1;2320:15;2358:4;2355:1;2348:15;2212:161;;1999:380;;;:::o;:::-;381:11921:4;;;;;;"
},
"deployedBytecode": {
"functionDebugData": {
"@_addTransaction_1274": {
"entryPoint": 3793,
"id": 1274,
"parameterSlots": 3,
"returnSlots": 1
},
"@_approve_1177": {
"entryPoint": 2807,
"id": 1177,
"parameterSlots": 3,
"returnSlots": 0
},
"@_msgSender_14": {
"entryPoint": null,
"id": 14,
"parameterSlots": 0,
"returnSlots": 1
},
"@_processTransaction_1237": {
"entryPoint": 2432,
"id": 1237,
"parameterSlots": 2,
"returnSlots": 1
},
"@_transferOwnership_237": {
"entryPoint": 3191,
"id": 237,
"parameterSlots": 1,
"returnSlots": 0
},
"@_transfer_1132": {
"entryPoint": 3383,
"id": 1132,
"parameterSlots": 3,
"returnSlots": 1
},
"@_whitneyTransfer_1068": {
"entryPoint": 3099,
"id": 1068,
"parameterSlots": 3,
"returnSlots": 1
},
"@add_490": {
"entryPoint": 3179,
"id": 490,
"parameterSlots": 2,
"returnSlots": 1
},
"@allowance_904": {
"entryPoint": null,
"id": 904,
"parameterSlots": 2,
"returnSlots": 1
},
"@approve_924": {
"entryPoint": 1310,
"id": 924,
"parameterSlots": 2,
"returnSlots": 1
},
"@balanceOf_819": {
"entryPoint": null,
"id": 819,
"parameterSlots": 1,
"returnSlots": 1
},
"@confirmTransaction_858": {
"entryPoint": 2106,
"id": 858,
"parameterSlots": 1,
"returnSlots": 0
},
"@decimals_745": {
"entryPoint": null,
"id": 745,
"parameterSlots": 0,
"returnSlots": 1
},
"@decreaseAllowance_1038": {
"entryPoint": 1966,
"id": 1038,
"parameterSlots": 2,
"returnSlots": 1
},
"@increaseAllowance_1009": {
"entryPoint": 1439,
"id": 1009,
"parameterSlots": 2,
"returnSlots": 1
},
"@isOwner_176": {
"entryPoint": null,
"id": 176,
"parameterSlots": 0,
"returnSlots": 1
},
"@name_754": {
"entryPoint": 1164,
"id": 754,
"parameterSlots": 0,
"returnSlots": 1
},
"@owner_153": {
"entryPoint": null,
"id": 153,
"parameterSlots": 0,
"returnSlots": 1
},
"@pause_295": {
"entryPoint": 1808,
"id": 295,
"parameterSlots": 0,
"returnSlots": 0
},
"@paused_256": {
"entryPoint": null,
"id": 256,
"parameterSlots": 0,
"returnSlots": 1
},
"@rejectTransaction_887": {
"entryPoint": 883,
"id": 887,
"parameterSlots": 1,
"returnSlots": 0
},
"@renounceOwnership_198": {
"entryPoint": 1692,
"id": 198,
"parameterSlots": 0,
"returnSlots": 0
},
"@sub_575": {
"entryPoint": 3135,
"id": 575,
"parameterSlots": 3,
"returnSlots": 1
},
"@symbol_763": {
"entryPoint": 1951,
"id": 763,
"parameterSlots": 0,
"returnSlots": 1
},
"@totalSupply_736": {
"entryPoint": null,
"id": 736,
"parameterSlots": 0,
"returnSlots": 1
},
"@totalTransactions_806": {
"entryPoint": null,
"id": 806,
"parameterSlots": 0,
"returnSlots": 1
},
"@transactions_797": {
"entryPoint": null,
"id": 797,
"parameterSlots": 1,
"returnSlots": 4
},
"@transferFrom_981": {
"entryPoint": 1333,
"id": 981,
"parameterSlots": 3,
"returnSlots": 1
},
"@transferOwnership_211": {
"entryPoint": 2378,
"id": 211,
"parameterSlots": 1,
"returnSlots": 0
},
"@transfer_944": {
"entryPoint": 2045,
"id": 944,
"parameterSlots": 2,
"returnSlots": 1
},
"@unpause_313": {
"entryPoint": 1493,
"id": 313,
"parameterSlots": 0,
"returnSlots": 0
},
"abi_decode_tuple_t_address": {
"entryPoint": 4284,
"id": null,
"parameterSlots": 2,
"returnSlots": 1
},
"abi_decode_tuple_t_address_payable": {
"entryPoint": null,
"id": null,
"parameterSlots": 2,
"returnSlots": 1
},
"abi_decode_tuple_t_addresst_address": {
"entryPoint": 4411,
"id": null,
"parameterSlots": 2,
"returnSlots": 2
},
"abi_decode_tuple_t_addresst_addresst_uint256": {
"entryPoint": 4219,
"id": null,
"parameterSlots": 2,
"returnSlots": 3
},
"abi_decode_tuple_t_addresst_uint256": {
"entryPoint": 4175,
"id": null,
"parameterSlots": 2,
"returnSlots": 2
},
"abi_decode_tuple_t_uint256": {
"entryPoint": 4044,
"id": null,
"parameterSlots": 2,
"returnSlots": 1
},
"abi_encode_tuple_t_address__to_t_address__fromStack_reversed": {
"entryPoint": null,
"id": null,
"parameterSlots": 2,
"returnSlots": 1
},
"abi_encode_tuple_t_address_t_address_t_uint256_t_enum$_transactionState_$727__to_t_address_t_address_t_uint256_t_uint8__fromStack_reversed": {
"entryPoint": 4335,
"id": null,
"parameterSlots": 5,
"returnSlots": 1
},
"abi_encode_tuple_t_bool__to_t_bool__fromStack_reversed": {
"entryPoint": null,
"id": null,
"parameterSlots": 2,
"returnSlots": 1
},
"abi_encode_tuple_t_string_memory_ptr__to_t_string_memory_ptr__fromStack_reversed": {
"entryPoint": 4069,
"id": null,
"parameterSlots": 2,
"returnSlots": 1
},
"abi_encode_tuple_t_stringliteral_0557e210f7a69a685100a7e4e3d0a7024c546085cee28910fd17d0b081d9516f__to_t_string_memory_ptr__fromStack_reversed": {
"entryPoint": null,
"id": null,
"parameterSlots": 1,
"returnSlots": 1
},
"abi_encode_tuple_t_stringliteral_0d1d997348c4b502650619e51f7d09f80514d98b6993be5051d07f703984619a__to_t_string_memory_ptr__fromStack_reversed": {
"entryPoint": null,
"id": null,
"parameterSlots": 1,
"returnSlots": 1
},
"abi_encode_tuple_t_stringliteral_245f15ff17f551913a7a18385165551503906a406f905ac1c2437281a7cd0cfe__to_t_string_memory_ptr__fromStack_reversed": {
"entryPoint": null,
"id": null,
"parameterSlots": 1,
"returnSlots": 1
},
"abi_encode_tuple_t_stringliteral_24883cc5fe64ace9d0df1893501ecb93c77180f0ff69cca79affb3c316dc8029__to_t_string_memory_ptr__fromStack_reversed": {
"entryPoint": null,
"id": null,
"parameterSlots": 1,
"returnSlots": 1
},
"abi_encode_tuple_t_stringliteral_68571e1369f7a6dcdcd736cb0343b35a58ed0f64d245c2ed839c98d412744f8a__to_t_string_memory_ptr__fromStack_reversed": {
"entryPoint": 4468,
"id": null,
"parameterSlots": 1,
"returnSlots": 1
},
"abi_encode_tuple_t_stringliteral_9924ebdf1add33d25d4ef888e16131f0a5687b0580a36c21b5c301a6c462effe__to_t_string_memory_ptr__fromStack_reversed": {
"entryPoint": 4510,
"id": null,
"parameterSlots": 1,
"returnSlots": 1
},
"abi_encode_tuple_t_stringliteral_baecc556b46f4ed0f2b4cb599d60785ac8563dd2dc0a5bf12edea1c39e5e1fea__to_t_string_memory_ptr__fromStack_reversed": {
"entryPoint": null,
"id": null,
"parameterSlots": 1,
"returnSlots": 1
},
"abi_encode_tuple_t_stringliteral_c953f4879035ed60e766b34720f656aab5c697b141d924c283124ecedb91c208__to_t_string_memory_ptr__fromStack_reversed": {
"entryPoint": null,
"id": null,
"parameterSlots": 1,
"returnSlots": 1
},
"abi_encode_tuple_t_stringliteral_f61ee3e6b757b1ace2293ab31484417882dac7dc5830b655ca2d0df8898482c8__to_t_string_memory_ptr__fromStack_reversed": {
"entryPoint": 4635,
"id": null,
"parameterSlots": 1,
"returnSlots": 1
},
"abi_encode_tuple_t_stringliteral_fa9bdc579a4d97dca9a0796811b4d662caa2610457642ec6096d99a2f12986c0__to_t_string_memory_ptr__fromStack_reversed": {
"entryPoint": 4563,
"id": null,
"parameterSlots": 1,
"returnSlots": 1
},
"abi_encode_tuple_t_uint256__to_t_uint256__fromStack_reversed": {
"entryPoint": null,
"id": null,
"parameterSlots": 2,
"returnSlots": 1
},
"abi_encode_tuple_t_uint8__to_t_uint8__fromStack_reversed": {
"entryPoint": null,
"id": null,
"parameterSlots": 2,
"returnSlots": 1
},
"checked_add_t_uint256": {
"entryPoint": 4777,
"id": null,
"parameterSlots": 2,
"returnSlots": 1
},
"extract_byte_array_length": {
"entryPoint": 4718,
"id": null,
"parameterSlots": 1,
"returnSlots": 1
},
"panic_error_0x21": {
"entryPoint": 4313,
"id": null,
"parameterSlots": 0,
"returnSlots": 0
},
"validator_revert_address": {
"entryPoint": 4154,
"id": null,
"parameterSlots": 1,
"returnSlots": 0
}
},
"generatedSources": [
{
"ast": {
"nodeType": "YulBlock",
"src": "0:8670:5",
"statements": [
{
"nodeType": "YulBlock",
"src": "6:3:5",
"statements": []
},
{
"body": {
"nodeType": "YulBlock",
"src": "84:110:5",
"statements": [
{
"body": {
"nodeType": "YulBlock",
"src": "130:16:5",
"statements": [
{
"expression": {
"arguments": [
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "139:1:5",
"type": "",
"value": "0"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "142:1:5",
"type": "",
"value": "0"
}
],
"functionName": {
"name": "revert",
"nodeType": "YulIdentifier",
"src": "132:6:5"
},
"nodeType": "YulFunctionCall",
"src": "132:12:5"
},
"nodeType": "YulExpressionStatement",
"src": "132:12:5"
}
]
},
"condition": {
"arguments": [
{
"arguments": [
{
"name": "dataEnd",
"nodeType": "YulIdentifier",
"src": "105:7:5"
},
{
"name": "headStart",
"nodeType": "YulIdentifier",
"src": "114:9:5"
}
],
"functionName": {
"name": "sub",
"nodeType": "YulIdentifier",
"src": "101:3:5"
},
"nodeType": "YulFunctionCall",
"src": "101:23:5"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "126:2:5",
"type": "",
"value": "32"
}
],
"functionName": {
"name": "slt",
"nodeType": "YulIdentifier",
"src": "97:3:5"
},
"nodeType": "YulFunctionCall",
"src": "97:32:5"
},
"nodeType": "YulIf",
"src": "94:52:5"
},
{
"nodeType": "YulAssignment",
"src": "155:33:5",
"value": {
"arguments": [
{
"name": "headStart",
"nodeType": "YulIdentifier",
"src": "178:9:5"
}
],
"functionName": {
"name": "calldataload",
"nodeType": "YulIdentifier",
"src": "165:12:5"
},
"nodeType": "YulFunctionCall",
"src": "165:23:5"
},
"variableNames": [
{
"name": "value0",
"nodeType": "YulIdentifier",
"src": "155:6:5"
}
]
}
]
},
"name": "abi_decode_tuple_t_uint256",
"nodeType": "YulFunctionDefinition",
"parameters": [
{
"name": "headStart",
"nodeType": "YulTypedName",
"src": "50:9:5",
"type": ""
},
{
"name": "dataEnd",
"nodeType": "YulTypedName",
"src": "61:7:5",
"type": ""
}
],
"returnVariables": [
{
"name": "value0",
"nodeType": "YulTypedName",
"src": "73:6:5",
"type": ""
}
],
"src": "14:180:5"
},
{
"body": {
"nodeType": "YulBlock",
"src": "320:476:5",
"statements": [
{
"nodeType": "YulVariableDeclaration",
"src": "330:12:5",
"value": {
"kind": "number",
"nodeType": "YulLiteral",
"src": "340:2:5",
"type": "",
"value": "32"
},
"variables": [
{
"name": "_1",
"nodeType": "YulTypedName",
"src": "334:2:5",
"type": ""
}
]
},
{
"expression": {
"arguments": [
{
"name": "headStart",
"nodeType": "YulIdentifier",
"src": "358:9:5"
},
{
"name": "_1",
"nodeType": "YulIdentifier",
"src": "369:2:5"
}
],
"functionName": {
"name": "mstore",
"nodeType": "YulIdentifier",
"src": "351:6:5"
},
"nodeType": "YulFunctionCall",
"src": "351:21:5"
},
"nodeType": "YulExpressionStatement",
"src": "351:21:5"
},
{
"nodeType": "YulVariableDeclaration",
"src": "381:27:5",
"value": {
"arguments": [
{
"name": "value0",
"nodeType": "YulIdentifier",
"src": "401:6:5"
}
],
"functionName": {
"name": "mload",
"nodeType": "YulIdentifier",
"src": "395:5:5"
},
"nodeType": "YulFunctionCall",
"src": "395:13:5"
},
"variables": [
{
"name": "length",
"nodeType": "YulTypedName",
"src": "385:6:5",
"type": ""
}
]
},
{
"expression": {
"arguments": [
{
"arguments": [
{
"name": "headStart",
"nodeType": "YulIdentifier",
"src": "428:9:5"
},
{
"name": "_1",
"nodeType": "YulIdentifier",
"src": "439:2:5"
}
],
"functionName": {
"name": "add",
"nodeType": "YulIdentifier",
"src": "424:3:5"
},
"nodeType": "YulFunctionCall",
"src": "424:18:5"
},
{
"name": "length",
"nodeType": "YulIdentifier",
"src": "444:6:5"
}
],
"functionName": {
"name": "mstore",
"nodeType": "YulIdentifier",
"src": "417:6:5"
},
"nodeType": "YulFunctionCall",
"src": "417:34:5"
},
"nodeType": "YulExpressionStatement",
"src": "417:34:5"
},
{
"nodeType": "YulVariableDeclaration",
"src": "460:10:5",
"value": {
"kind": "number",
"nodeType": "YulLiteral",
"src": "469:1:5",
"type": "",
"value": "0"
},
"variables": [
{
"name": "i",
"nodeType": "YulTypedName",
"src": "464:1:5",
"type": ""
}
]
},
{
"body": {
"nodeType": "YulBlock",
"src": "529:90:5",
"statements": [
{
"expression": {
"arguments": [
{
"arguments": [
{
"arguments": [
{
"name": "headStart",
"nodeType": "YulIdentifier",
"src": "558:9:5"
},
{
"name": "i",
"nodeType": "YulIdentifier",
"src": "569:1:5"
}
],
"functionName": {
"name": "add",
"nodeType": "YulIdentifier",
"src": "554:3:5"
},
"nodeType": "YulFunctionCall",
"src": "554:17:5"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "573:2:5",
"type": "",
"value": "64"
}
],
"functionName": {
"name": "add",
"nodeType": "YulIdentifier",
"src": "550:3:5"
},
"nodeType": "YulFunctionCall",
"src": "550:26:5"
},
{
"arguments": [
{
"arguments": [
{
"arguments": [
{
"name": "value0",
"nodeType": "YulIdentifier",
"src": "592:6:5"
},
{
"name": "i",
"nodeType": "YulIdentifier",
"src": "600:1:5"
}
],
"functionName": {
"name": "add",
"nodeType": "YulIdentifier",
"src": "588:3:5"
},
"nodeType": "YulFunctionCall",
"src": "588:14:5"
},
{
"name": "_1",
"nodeType": "YulIdentifier",
"src": "604:2:5"
}
],
"functionName": {
"name": "add",
"nodeType": "YulIdentifier",
"src": "584:3:5"
},
"nodeType": "YulFunctionCall",
"src": "584:23:5"
}
],
"functionName": {
"name": "mload",
"nodeType": "YulIdentifier",
"src": "578:5:5"
},
"nodeType": "YulFunctionCall",
"src": "578:30:5"
}
],
"functionName": {
"name": "mstore",
"nodeType": "YulIdentifier",
"src": "543:6:5"
},
"nodeType": "YulFunctionCall",
"src": "543:66:5"
},
"nodeType": "YulExpressionStatement",
"src": "543:66:5"
}
]
},
"condition": {
"arguments": [
{
"name": "i",
"nodeType": "YulIdentifier",
"src": "490:1:5"
},
{
"name": "length",
"nodeType": "YulIdentifier",
"src": "493:6:5"
}
],
"functionName": {
"name": "lt",
"nodeType": "YulIdentifier",
"src": "487:2:5"
},
"nodeType": "YulFunctionCall",
"src": "487:13:5"
},
"nodeType": "YulForLoop",
"post": {
"nodeType": "YulBlock",
"src": "501:19:5",
"statements": [
{
"nodeType": "YulAssignment",
"src": "503:15:5",
"value": {
"arguments": [
{
"name": "i",
"nodeType": "YulIdentifier",
"src": "512:1:5"
},
{
"name": "_1",
"nodeType": "YulIdentifier",
"src": "515:2:5"
}
],
"functionName": {
"name": "add",
"nodeType": "YulIdentifier",
"src": "508:3:5"
},
"nodeType": "YulFunctionCall",
"src": "508:10:5"
},
"variableNames": [
{
"name": "i",
"nodeType": "YulIdentifier",
"src": "503:1:5"
}
]
}
]
},
"pre": {
"nodeType": "YulBlock",
"src": "483:3:5",
"statements": []
},
"src": "479:140:5"
},
{
"body": {
"nodeType": "YulBlock",
"src": "653:66:5",
"statements": [
{
"expression": {
"arguments": [
{
"arguments": [
{
"arguments": [
{
"name": "headStart",
"nodeType": "YulIdentifier",
"src": "682:9:5"
},
{
"name": "length",
"nodeType": "YulIdentifier",
"src": "693:6:5"
}
],
"functionName": {
"name": "add",
"nodeType": "YulIdentifier",
"src": "678:3:5"
},
"nodeType": "YulFunctionCall",
"src": "678:22:5"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "702:2:5",
"type": "",
"value": "64"
}
],
"functionName": {
"name": "add",
"nodeType": "YulIdentifier",
"src": "674:3:5"
},
"nodeType": "YulFunctionCall",
"src": "674:31:5"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "707:1:5",
"type": "",
"value": "0"
}
],
"functionName": {
"name": "mstore",
"nodeType": "YulIdentifier",
"src": "667:6:5"
},
"nodeType": "YulFunctionCall",
"src": "667:42:5"
},
"nodeType": "YulExpressionStatement",
"src": "667:42:5"
}
]
},
"condition": {
"arguments": [
{
"name": "i",
"nodeType": "YulIdentifier",
"src": "634:1:5"
},
{
"name": "length",
"nodeType": "YulIdentifier",
"src": "637:6:5"
}
],
"functionName": {
"name": "gt",
"nodeType": "YulIdentifier",
"src": "631:2:5"
},
"nodeType": "YulFunctionCall",
"src": "631:13:5"
},
"nodeType": "YulIf",
"src": "628:91:5"
},
{
"nodeType": "YulAssignment",
"src": "728:62:5",
"value": {
"arguments": [
{
"arguments": [
{
"name": "headStart",
"nodeType": "YulIdentifier",
"src": "744:9:5"
},
{
"arguments": [
{
"arguments": [
{
"name": "length",
"nodeType": "YulIdentifier",
"src": "763:6:5"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "771:2:5",
"type": "",
"value": "31"
}
],
"functionName": {
"name": "add",
"nodeType": "YulIdentifier",
"src": "759:3:5"
},
"nodeType": "YulFunctionCall",
"src": "759:15:5"
},
{
"arguments": [
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "780:2:5",
"type": "",
"value": "31"
}
],
"functionName": {
"name": "not",
"nodeType": "YulIdentifier",
"src": "776:3:5"
},
"nodeType": "YulFunctionCall",
"src": "776:7:5"
}
],
"functionName": {
"name": "and",
"nodeType": "YulIdentifier",
"src": "755:3:5"
},
"nodeType": "YulFunctionCall",
"src": "755:29:5"
}
],
"functionName": {
"name": "add",
"nodeType": "YulIdentifier",
"src": "740:3:5"
},
"nodeType": "YulFunctionCall",
"src": "740:45:5"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "787:2:5",
"type": "",
"value": "64"
}
],
"functionName": {
"name": "add",
"nodeType": "YulIdentifier",
"src": "736:3:5"
},
"nodeType": "YulFunctionCall",
"src": "736:54:5"
},
"variableNames": [
{
"name": "tail",
"nodeType": "YulIdentifier",
"src": "728:4:5"
}
]
}
]
},
"name": "abi_encode_tuple_t_string_memory_ptr__to_t_string_memory_ptr__fromStack_reversed",
"nodeType": "YulFunctionDefinition",
"parameters": [
{
"name": "headStart",
"nodeType": "YulTypedName",
"src": "289:9:5",
"type": ""
},
{
"name": "value0",
"nodeType": "YulTypedName",
"src": "300:6:5",
"type": ""
}
],
"returnVariables": [
{
"name": "tail",
"nodeType": "YulTypedName",
"src": "311:4:5",
"type": ""
}
],
"src": "199:597:5"
},
{
"body": {
"nodeType": "YulBlock",
"src": "846:86:5",
"statements": [
{
"body": {
"nodeType": "YulBlock",
"src": "910:16:5",
"statements": [
{
"expression": {
"arguments": [
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "919:1:5",
"type": "",
"value": "0"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "922:1:5",
"type": "",
"value": "0"
}
],
"functionName": {
"name": "revert",
"nodeType": "YulIdentifier",
"src": "912:6:5"
},
"nodeType": "YulFunctionCall",
"src": "912:12:5"
},
"nodeType": "YulExpressionStatement",
"src": "912:12:5"
}
]
},
"condition": {
"arguments": [
{
"arguments": [
{
"name": "value",
"nodeType": "YulIdentifier",
"src": "869:5:5"
},
{
"arguments": [
{
"name": "value",
"nodeType": "YulIdentifier",
"src": "880:5:5"
},
{
"arguments": [
{
"arguments": [
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "895:3:5",
"type": "",
"value": "160"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "900:1:5",
"type": "",
"value": "1"
}
],
"functionName": {
"name": "shl",
"nodeType": "YulIdentifier",
"src": "891:3:5"
},
"nodeType": "YulFunctionCall",
"src": "891:11:5"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "904:1:5",
"type": "",
"value": "1"
}
],
"functionName": {
"name": "sub",
"nodeType": "YulIdentifier",
"src": "887:3:5"
},
"nodeType": "YulFunctionCall",
"src": "887:19:5"
}
],
"functionName": {
"name": "and",
"nodeType": "YulIdentifier",
"src": "876:3:5"
},
"nodeType": "YulFunctionCall",
"src": "876:31:5"
}
],
"functionName": {
"name": "eq",
"nodeType": "YulIdentifier",
"src": "866:2:5"
},
"nodeType": "YulFunctionCall",
"src": "866:42:5"
}
],
"functionName": {
"name": "iszero",
"nodeType": "YulIdentifier",
"src": "859:6:5"
},
"nodeType": "YulFunctionCall",
"src": "859:50:5"
},
"nodeType": "YulIf",
"src": "856:70:5"
}
]
},
"name": "validator_revert_address",
"nodeType": "YulFunctionDefinition",
"parameters": [
{
"name": "value",
"nodeType": "YulTypedName",
"src": "835:5:5",
"type": ""
}
],
"src": "801:131:5"
},
{
"body": {
"nodeType": "YulBlock",
"src": "1024:228:5",
"statements": [
{
"body": {
"nodeType": "YulBlock",
"src": "1070:16:5",
"statements": [
{
"expression": {
"arguments": [
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "1079:1:5",
"type": "",
"value": "0"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "1082:1:5",
"type": "",
"value": "0"
}
],
"functionName": {
"name": "revert",
"nodeType": "YulIdentifier",
"src": "1072:6:5"
},
"nodeType": "YulFunctionCall",
"src": "1072:12:5"
},
"nodeType": "YulExpressionStatement",
"src": "1072:12:5"
}
]
},
"condition": {
"arguments": [
{
"arguments": [
{
"name": "dataEnd",
"nodeType": "YulIdentifier",
"src": "1045:7:5"
},
{
"name": "headStart",
"nodeType": "YulIdentifier",
"src": "1054:9:5"
}
],
"functionName": {
"name": "sub",
"nodeType": "YulIdentifier",
"src": "1041:3:5"
},
"nodeType": "YulFunctionCall",
"src": "1041:23:5"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "1066:2:5",
"type": "",
"value": "64"
}
],
"functionName": {
"name": "slt",
"nodeType": "YulIdentifier",
"src": "1037:3:5"
},
"nodeType": "YulFunctionCall",
"src": "1037:32:5"
},
"nodeType": "YulIf",
"src": "1034:52:5"
},
{
"nodeType": "YulVariableDeclaration",
"src": "1095:36:5",
"value": {
"arguments": [
{
"name": "headStart",
"nodeType": "YulIdentifier",
"src": "1121:9:5"
}
],
"functionName": {
"name": "calldataload",
"nodeType": "YulIdentifier",
"src": "1108:12:5"
},
"nodeType": "YulFunctionCall",
"src": "1108:23:5"
},
"variables": [
{
"name": "value",
"nodeType": "YulTypedName",
"src": "1099:5:5",
"type": ""
}
]
},
{
"expression": {
"arguments": [
{
"name": "value",
"nodeType": "YulIdentifier",
"src": "1165:5:5"
}
],
"functionName": {
"name": "validator_revert_address",
"nodeType": "YulIdentifier",
"src": "1140:24:5"
},
"nodeType": "YulFunctionCall",
"src": "1140:31:5"
},
"nodeType": "YulExpressionStatement",
"src": "1140:31:5"
},
{
"nodeType": "YulAssignment",
"src": "1180:15:5",
"value": {
"name": "value",
"nodeType": "YulIdentifier",
"src": "1190:5:5"
},
"variableNames": [
{
"name": "value0",
"nodeType": "YulIdentifier",
"src": "1180:6:5"
}
]
},
{
"nodeType": "YulAssignment",
"src": "1204:42:5",
"value": {
"arguments": [
{
"arguments": [
{
"name": "headStart",
"nodeType": "YulIdentifier",
"src": "1231:9:5"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "1242:2:5",
"type": "",
"value": "32"
}
],
"functionName": {
"name": "add",
"nodeType": "YulIdentifier",
"src": "1227:3:5"
},
"nodeType": "YulFunctionCall",
"src": "1227:18:5"
}
],
"functionName": {
"name": "calldataload",
"nodeType": "YulIdentifier",
"src": "1214:12:5"
},
"nodeType": "YulFunctionCall",
"src": "1214:32:5"
},
"variableNames": [
{
"name": "value1",
"nodeType": "YulIdentifier",
"src": "1204:6:5"
}
]
}
]
},
"name": "abi_decode_tuple_t_addresst_uint256",
"nodeType": "YulFunctionDefinition",
"parameters": [
{
"name": "headStart",
"nodeType": "YulTypedName",
"src": "982:9:5",
"type": ""
},
{
"name": "dataEnd",
"nodeType": "YulTypedName",
"src": "993:7:5",
"type": ""
}
],
"returnVariables": [
{
"name": "value0",
"nodeType": "YulTypedName",
"src": "1005:6:5",
"type": ""
},
{
"name": "value1",
"nodeType": "YulTypedName",
"src": "1013:6:5",
"type": ""
}
],
"src": "937:315:5"
},
{
"body": {
"nodeType": "YulBlock",
"src": "1352:92:5",
"statements": [
{
"nodeType": "YulAssignment",
"src": "1362:26:5",
"value": {
"arguments": [
{
"name": "headStart",
"nodeType": "YulIdentifier",
"src": "1374:9:5"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "1385:2:5",
"type": "",
"value": "32"
}
],
"functionName": {
"name": "add",
"nodeType": "YulIdentifier",
"src": "1370:3:5"
},
"nodeType": "YulFunctionCall",
"src": "1370:18:5"
},
"variableNames": [
{
"name": "tail",
"nodeType": "YulIdentifier",
"src": "1362:4:5"
}
]
},
{
"expression": {
"arguments": [
{
"name": "headStart",
"nodeType": "YulIdentifier",
"src": "1404:9:5"
},
{
"arguments": [
{
"arguments": [
{
"name": "value0",
"nodeType": "YulIdentifier",
"src": "1429:6:5"
}
],
"functionName": {
"name": "iszero",
"nodeType": "YulIdentifier",
"src": "1422:6:5"
},
"nodeType": "YulFunctionCall",
"src": "1422:14:5"
}
],
"functionName": {
"name": "iszero",
"nodeType": "YulIdentifier",
"src": "1415:6:5"
},
"nodeType": "YulFunctionCall",
"src": "1415:22:5"
}
],
"functionName": {
"name": "mstore",
"nodeType": "YulIdentifier",
"src": "1397:6:5"
},
"nodeType": "YulFunctionCall",
"src": "1397:41:5"
},
"nodeType": "YulExpressionStatement",
"src": "1397:41:5"
}
]
},
"name": "abi_encode_tuple_t_bool__to_t_bool__fromStack_reversed",
"nodeType": "YulFunctionDefinition",
"parameters": [
{
"name": "headStart",
"nodeType": "YulTypedName",
"src": "1321:9:5",
"type": ""
},
{
"name": "value0",
"nodeType": "YulTypedName",
"src": "1332:6:5",
"type": ""
}
],
"returnVariables": [
{
"name": "tail",
"nodeType": "YulTypedName",
"src": "1343:4:5",
"type": ""
}
],
"src": "1257:187:5"
},
{
"body": {
"nodeType": "YulBlock",
"src": "1550:102:5",
"statements": [
{
"nodeType": "YulAssignment",
"src": "1560:26:5",
"value": {
"arguments": [
{
"name": "headStart",
"nodeType": "YulIdentifier",
"src": "1572:9:5"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "1583:2:5",
"type": "",
"value": "32"
}
],
"functionName": {
"name": "add",
"nodeType": "YulIdentifier",
"src": "1568:3:5"
},
"nodeType": "YulFunctionCall",
"src": "1568:18:5"
},
"variableNames": [
{
"name": "tail",
"nodeType": "YulIdentifier",
"src": "1560:4:5"
}
]
},
{
"expression": {
"arguments": [
{
"name": "headStart",
"nodeType": "YulIdentifier",
"src": "1602:9:5"
},
{
"arguments": [
{
"name": "value0",
"nodeType": "YulIdentifier",
"src": "1617:6:5"
},
{
"arguments": [
{
"arguments": [
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "1633:3:5",
"type": "",
"value": "160"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "1638:1:5",
"type": "",
"value": "1"
}
],
"functionName": {
"name": "shl",
"nodeType": "YulIdentifier",
"src": "1629:3:5"
},
"nodeType": "YulFunctionCall",
"src": "1629:11:5"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "1642:1:5",
"type": "",
"value": "1"
}
],
"functionName": {
"name": "sub",
"nodeType": "YulIdentifier",
"src": "1625:3:5"
},
"nodeType": "YulFunctionCall",
"src": "1625:19:5"
}
],
"functionName": {
"name": "and",
"nodeType": "YulIdentifier",
"src": "1613:3:5"
},
"nodeType": "YulFunctionCall",
"src": "1613:32:5"
}
],
"functionName": {
"name": "mstore",
"nodeType": "YulIdentifier",
"src": "1595:6:5"
},
"nodeType": "YulFunctionCall",
"src": "1595:51:5"
},
"nodeType": "YulExpressionStatement",
"src": "1595:51:5"
}
]
},
"name": "abi_encode_tuple_t_address__to_t_address__fromStack_reversed",
"nodeType": "YulFunctionDefinition",
"parameters": [
{
"name": "headStart",
"nodeType": "YulTypedName",
"src": "1519:9:5",
"type": ""
},
{
"name": "value0",
"nodeType": "YulTypedName",
"src": "1530:6:5",
"type": ""
}
],
"returnVariables": [
{
"name": "tail",
"nodeType": "YulTypedName",
"src": "1541:4:5",
"type": ""
}
],
"src": "1449:203:5"
},
{
"body": {
"nodeType": "YulBlock",
"src": "1758:76:5",
"statements": [
{
"nodeType": "YulAssignment",
"src": "1768:26:5",
"value": {
"arguments": [
{
"name": "headStart",
"nodeType": "YulIdentifier",
"src": "1780:9:5"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "1791:2:5",
"type": "",
"value": "32"
}
],
"functionName": {
"name": "add",
"nodeType": "YulIdentifier",
"src": "1776:3:5"
},
"nodeType": "YulFunctionCall",
"src": "1776:18:5"
},
"variableNames": [
{
"name": "tail",
"nodeType": "YulIdentifier",
"src": "1768:4:5"
}
]
},
{
"expression": {
"arguments": [
{
"name": "headStart",
"nodeType": "YulIdentifier",
"src": "1810:9:5"
},
{
"name": "value0",
"nodeType": "YulIdentifier",
"src": "1821:6:5"
}
],
"functionName": {
"name": "mstore",
"nodeType": "YulIdentifier",
"src": "1803:6:5"
},
"nodeType": "YulFunctionCall",
"src": "1803:25:5"
},
"nodeType": "YulExpressionStatement",
"src": "1803:25:5"
}
]
},
"name": "abi_encode_tuple_t_uint256__to_t_uint256__fromStack_reversed",
"nodeType": "YulFunctionDefinition",
"parameters": [
{
"name": "headStart",
"nodeType": "YulTypedName",
"src": "1727:9:5",
"type": ""
},
{
"name": "value0",
"nodeType": "YulTypedName",
"src": "1738:6:5",
"type": ""
}
],
"returnVariables": [
{
"name": "tail",
"nodeType": "YulTypedName",
"src": "1749:4:5",
"type": ""
}
],
"src": "1657:177:5"
},
{
"body": {
"nodeType": "YulBlock",
"src": "1943:352:5",
"statements": [
{
"body": {
"nodeType": "YulBlock",
"src": "1989:16:5",
"statements": [
{
"expression": {
"arguments": [
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "1998:1:5",
"type": "",
"value": "0"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "2001:1:5",
"type": "",
"value": "0"
}
],
"functionName": {
"name": "revert",
"nodeType": "YulIdentifier",
"src": "1991:6:5"
},
"nodeType": "YulFunctionCall",
"src": "1991:12:5"
},
"nodeType": "YulExpressionStatement",
"src": "1991:12:5"
}
]
},
"condition": {
"arguments": [
{
"arguments": [
{
"name": "dataEnd",
"nodeType": "YulIdentifier",
"src": "1964:7:5"
},
{
"name": "headStart",
"nodeType": "YulIdentifier",
"src": "1973:9:5"
}
],
"functionName": {
"name": "sub",
"nodeType": "YulIdentifier",
"src": "1960:3:5"
},
"nodeType": "YulFunctionCall",
"src": "1960:23:5"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "1985:2:5",
"type": "",
"value": "96"
}
],
"functionName": {
"name": "slt",
"nodeType": "YulIdentifier",
"src": "1956:3:5"
},
"nodeType": "YulFunctionCall",
"src": "1956:32:5"
},
"nodeType": "YulIf",
"src": "1953:52:5"
},
{
"nodeType": "YulVariableDeclaration",
"src": "2014:36:5",
"value": {
"arguments": [
{
"name": "headStart",
"nodeType": "YulIdentifier",
"src": "2040:9:5"
}
],
"functionName": {
"name": "calldataload",
"nodeType": "YulIdentifier",
"src": "2027:12:5"
},
"nodeType": "YulFunctionCall",
"src": "2027:23:5"
},
"variables": [
{
"name": "value",
"nodeType": "YulTypedName",
"src": "2018:5:5",
"type": ""
}
]
},
{
"expression": {
"arguments": [
{
"name": "value",
"nodeType": "YulIdentifier",
"src": "2084:5:5"
}
],
"functionName": {
"name": "validator_revert_address",
"nodeType": "YulIdentifier",
"src": "2059:24:5"
},
"nodeType": "YulFunctionCall",
"src": "2059:31:5"
},
"nodeType": "YulExpressionStatement",
"src": "2059:31:5"
},
{
"nodeType": "YulAssignment",
"src": "2099:15:5",
"value": {
"name": "value",
"nodeType": "YulIdentifier",
"src": "2109:5:5"
},
"variableNames": [
{
"name": "value0",
"nodeType": "YulIdentifier",
"src": "2099:6:5"
}
]
},
{
"nodeType": "YulVariableDeclaration",
"src": "2123:47:5",
"value": {
"arguments": [
{
"arguments": [
{
"name": "headStart",
"nodeType": "YulIdentifier",
"src": "2155:9:5"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "2166:2:5",
"type": "",
"value": "32"
}
],
"functionName": {
"name": "add",
"nodeType": "YulIdentifier",
"src": "2151:3:5"
},
"nodeType": "YulFunctionCall",
"src": "2151:18:5"
}
],
"functionName": {
"name": "calldataload",
"nodeType": "YulIdentifier",
"src": "2138:12:5"
},
"nodeType": "YulFunctionCall",
"src": "2138:32:5"
},
"variables": [
{
"name": "value_1",
"nodeType": "YulTypedName",
"src": "2127:7:5",
"type": ""
}
]
},
{
"expression": {
"arguments": [
{
"name": "value_1",
"nodeType": "YulIdentifier",
"src": "2204:7:5"
}
],
"functionName": {
"name": "validator_revert_address",
"nodeType": "YulIdentifier",
"src": "2179:24:5"
},
"nodeType": "YulFunctionCall",
"src": "2179:33:5"
},
"nodeType": "YulExpressionStatement",
"src": "2179:33:5"
},
{
"nodeType": "YulAssignment",
"src": "2221:17:5",
"value": {
"name": "value_1",
"nodeType": "YulIdentifier",
"src": "2231:7:5"
},
"variableNames": [
{
"name": "value1",
"nodeType": "YulIdentifier",
"src": "2221:6:5"
}
]
},
{
"nodeType": "YulAssignment",
"src": "2247:42:5",
"value": {
"arguments": [
{
"arguments": [
{
"name": "headStart",
"nodeType": "YulIdentifier",
"src": "2274:9:5"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "2285:2:5",
"type": "",
"value": "64"
}
],
"functionName": {
"name": "add",
"nodeType": "YulIdentifier",
"src": "2270:3:5"
},
"nodeType": "YulFunctionCall",
"src": "2270:18:5"
}
],
"functionName": {
"name": "calldataload",
"nodeType": "YulIdentifier",
"src": "2257:12:5"
},
"nodeType": "YulFunctionCall",
"src": "2257:32:5"
},
"variableNames": [
{
"name": "value2",
"nodeType": "YulIdentifier",
"src": "2247:6:5"
}
]
}
]
},
"name": "abi_decode_tuple_t_addresst_addresst_uint256",
"nodeType": "YulFunctionDefinition",
"parameters": [
{
"name": "headStart",
"nodeType": "YulTypedName",
"src": "1893:9:5",
"type": ""
},
{
"name": "dataEnd",
"nodeType": "YulTypedName",
"src": "1904:7:5",
"type": ""
}
],
"returnVariables": [
{
"name": "value0",
"nodeType": "YulTypedName",
"src": "1916:6:5",
"type": ""
},
{
"name": "value1",
"nodeType": "YulTypedName",
"src": "1924:6:5",
"type": ""
},
{
"name": "value2",
"nodeType": "YulTypedName",
"src": "1932:6:5",
"type": ""
}
],
"src": "1839:456:5"
},
{
"body": {
"nodeType": "YulBlock",
"src": "2397:87:5",
"statements": [
{
"nodeType": "YulAssignment",
"src": "2407:26:5",
"value": {
"arguments": [
{
"name": "headStart",
"nodeType": "YulIdentifier",
"src": "2419:9:5"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "2430:2:5",
"type": "",
"value": "32"
}
],
"functionName": {
"name": "add",
"nodeType": "YulIdentifier",
"src": "2415:3:5"
},
"nodeType": "YulFunctionCall",
"src": "2415:18:5"
},
"variableNames": [
{
"name": "tail",
"nodeType": "YulIdentifier",
"src": "2407:4:5"
}
]
},
{
"expression": {
"arguments": [
{
"name": "headStart",
"nodeType": "YulIdentifier",
"src": "2449:9:5"
},
{
"arguments": [
{
"name": "value0",
"nodeType": "YulIdentifier",
"src": "2464:6:5"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "2472:4:5",
"type": "",
"value": "0xff"
}
],
"functionName": {
"name": "and",
"nodeType": "YulIdentifier",
"src": "2460:3:5"
},
"nodeType": "YulFunctionCall",
"src": "2460:17:5"
}
],
"functionName": {
"name": "mstore",
"nodeType": "YulIdentifier",
"src": "2442:6:5"
},
"nodeType": "YulFunctionCall",
"src": "2442:36:5"
},
"nodeType": "YulExpressionStatement",
"src": "2442:36:5"
}
]
},
"name": "abi_encode_tuple_t_uint8__to_t_uint8__fromStack_reversed",
"nodeType": "YulFunctionDefinition",
"parameters": [
{
"name": "headStart",
"nodeType": "YulTypedName",
"src": "2366:9:5",
"type": ""
},
{
"name": "value0",
"nodeType": "YulTypedName",
"src": "2377:6:5",
"type": ""
}
],
"returnVariables": [
{
"name": "tail",
"nodeType": "YulTypedName",
"src": "2388:4:5",
"type": ""
}
],
"src": "2300:184:5"
},
{
"body": {
"nodeType": "YulBlock",
"src": "2559:177:5",
"statements": [
{
"body": {
"nodeType": "YulBlock",
"src": "2605:16:5",
"statements": [
{
"expression": {
"arguments": [
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "2614:1:5",
"type": "",
"value": "0"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "2617:1:5",
"type": "",
"value": "0"
}
],
"functionName": {
"name": "revert",
"nodeType": "YulIdentifier",
"src": "2607:6:5"
},
"nodeType": "YulFunctionCall",
"src": "2607:12:5"
},
"nodeType": "YulExpressionStatement",
"src": "2607:12:5"
}
]
},
"condition": {
"arguments": [
{
"arguments": [
{
"name": "dataEnd",
"nodeType": "YulIdentifier",
"src": "2580:7:5"
},
{
"name": "headStart",
"nodeType": "YulIdentifier",
"src": "2589:9:5"
}
],
"functionName": {
"name": "sub",
"nodeType": "YulIdentifier",
"src": "2576:3:5"
},
"nodeType": "YulFunctionCall",
"src": "2576:23:5"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "2601:2:5",
"type": "",
"value": "32"
}
],
"functionName": {
"name": "slt",
"nodeType": "YulIdentifier",
"src": "2572:3:5"
},
"nodeType": "YulFunctionCall",
"src": "2572:32:5"
},
"nodeType": "YulIf",
"src": "2569:52:5"
},
{
"nodeType": "YulVariableDeclaration",
"src": "2630:36:5",
"value": {
"arguments": [
{
"name": "headStart",
"nodeType": "YulIdentifier",
"src": "2656:9:5"
}
],
"functionName": {
"name": "calldataload",
"nodeType": "YulIdentifier",
"src": "2643:12:5"
},
"nodeType": "YulFunctionCall",
"src": "2643:23:5"
},
"variables": [
{
"name": "value",
"nodeType": "YulTypedName",
"src": "2634:5:5",
"type": ""
}
]
},
{
"expression": {
"arguments": [
{
"name": "value",
"nodeType": "YulIdentifier",
"src": "2700:5:5"
}
],
"functionName": {
"name": "validator_revert_address",
"nodeType": "YulIdentifier",
"src": "2675:24:5"
},
"nodeType": "YulFunctionCall",
"src": "2675:31:5"
},
"nodeType": "YulExpressionStatement",
"src": "2675:31:5"
},
{
"nodeType": "YulAssignment",
"src": "2715:15:5",
"value": {
"name": "value",
"nodeType": "YulIdentifier",
"src": "2725:5:5"
},
"variableNames": [
{
"name": "value0",
"nodeType": "YulIdentifier",
"src": "2715:6:5"
}
]
}
]
},
"name": "abi_decode_tuple_t_address",
"nodeType": "YulFunctionDefinition",
"parameters": [
{
"name": "headStart",
"nodeType": "YulTypedName",
"src": "2525:9:5",
"type": ""
},
{
"name": "dataEnd",
"nodeType": "YulTypedName",
"src": "2536:7:5",
"type": ""
}
],
"returnVariables": [
{
"name": "value0",
"nodeType": "YulTypedName",
"src": "2548:6:5",
"type": ""
}
],
"src": "2489:247:5"
},
{
"body": {
"nodeType": "YulBlock",
"src": "2773:95:5",
"statements": [
{
"expression": {
"arguments": [
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "2790:1:5",
"type": "",
"value": "0"
},
{
"arguments": [
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "2797:3:5",
"type": "",
"value": "224"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "2802:10:5",
"type": "",
"value": "0x4e487b71"
}
],
"functionName": {
"name": "shl",
"nodeType": "YulIdentifier",
"src": "2793:3:5"
},
"nodeType": "YulFunctionCall",
"src": "2793:20:5"
}
],
"functionName": {
"name": "mstore",
"nodeType": "YulIdentifier",
"src": "2783:6:5"
},
"nodeType": "YulFunctionCall",
"src": "2783:31:5"
},
"nodeType": "YulExpressionStatement",
"src": "2783:31:5"
},
{
"expression": {
"arguments": [
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "2830:1:5",
"type": "",
"value": "4"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "2833:4:5",
"type": "",
"value": "0x21"
}
],
"functionName": {
"name": "mstore",
"nodeType": "YulIdentifier",
"src": "2823:6:5"
},
"nodeType": "YulFunctionCall",
"src": "2823:15:5"
},
"nodeType": "YulExpressionStatement",
"src": "2823:15:5"
},
{
"expression": {
"arguments": [
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "2854:1:5",
"type": "",
"value": "0"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "2857:4:5",
"type": "",
"value": "0x24"
}
],
"functionName": {
"name": "revert",
"nodeType": "YulIdentifier",
"src": "2847:6:5"
},
"nodeType": "YulFunctionCall",
"src": "2847:15:5"
},
"nodeType": "YulExpressionStatement",
"src": "2847:15:5"
}
]
},
"name": "panic_error_0x21",
"nodeType": "YulFunctionDefinition",
"src": "2741:127:5"
},
{
"body": {
"nodeType": "YulBlock",
"src": "3076:415:5",
"statements": [
{
"nodeType": "YulAssignment",
"src": "3086:27:5",
"value": {
"arguments": [
{
"name": "headStart",
"nodeType": "YulIdentifier",
"src": "3098:9:5"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "3109:3:5",
"type": "",
"value": "128"
}
],
"functionName": {
"name": "add",
"nodeType": "YulIdentifier",
"src": "3094:3:5"
},
"nodeType": "YulFunctionCall",
"src": "3094:19:5"
},
"variableNames": [
{
"name": "tail",
"nodeType": "YulIdentifier",
"src": "3086:4:5"
}
]
},
{
"nodeType": "YulVariableDeclaration",
"src": "3122:29:5",
"value": {
"arguments": [
{
"arguments": [
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "3140:3:5",
"type": "",
"value": "160"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "3145:1:5",
"type": "",
"value": "1"
}
],
"functionName": {
"name": "shl",
"nodeType": "YulIdentifier",
"src": "3136:3:5"
},
"nodeType": "YulFunctionCall",
"src": "3136:11:5"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "3149:1:5",
"type": "",
"value": "1"
}
],
"functionName": {
"name": "sub",
"nodeType": "YulIdentifier",
"src": "3132:3:5"
},
"nodeType": "YulFunctionCall",
"src": "3132:19:5"
},
"variables": [
{
"name": "_1",
"nodeType": "YulTypedName",
"src": "3126:2:5",
"type": ""
}
]
},
{
"expression": {
"arguments": [
{
"name": "headStart",
"nodeType": "YulIdentifier",
"src": "3167:9:5"
},
{
"arguments": [
{
"name": "value0",
"nodeType": "YulIdentifier",
"src": "3182:6:5"
},
{
"name": "_1",
"nodeType": "YulIdentifier",
"src": "3190:2:5"
}
],
"functionName": {
"name": "and",
"nodeType": "YulIdentifier",
"src": "3178:3:5"
},
"nodeType": "YulFunctionCall",
"src": "3178:15:5"
}
],
"functionName": {
"name": "mstore",
"nodeType": "YulIdentifier",
"src": "3160:6:5"
},
"nodeType": "YulFunctionCall",
"src": "3160:34:5"
},
"nodeType": "YulExpressionStatement",
"src": "3160:34:5"
},
{
"expression": {
"arguments": [
{
"arguments": [
{
"name": "headStart",
"nodeType": "YulIdentifier",
"src": "3214:9:5"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "3225:2:5",
"type": "",
"value": "32"
}
],
"functionName": {
"name": "add",
"nodeType": "YulIdentifier",
"src": "3210:3:5"
},
"nodeType": "YulFunctionCall",
"src": "3210:18:5"
},
{
"arguments": [
{
"name": "value1",
"nodeType": "YulIdentifier",
"src": "3234:6:5"
},
{
"name": "_1",
"nodeType": "YulIdentifier",
"src": "3242:2:5"
}
],
"functionName": {
"name": "and",
"nodeType": "YulIdentifier",
"src": "3230:3:5"
},
"nodeType": "YulFunctionCall",
"src": "3230:15:5"
}
],
"functionName": {
"name": "mstore",
"nodeType": "YulIdentifier",
"src": "3203:6:5"
},
"nodeType": "YulFunctionCall",
"src": "3203:43:5"
},
"nodeType": "YulExpressionStatement",
"src": "3203:43:5"
},
{
"expression": {
"arguments": [
{
"arguments": [
{
"name": "headStart",
"nodeType": "YulIdentifier",
"src": "3266:9:5"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "3277:2:5",
"type": "",
"value": "64"
}
],
"functionName": {
"name": "add",
"nodeType": "YulIdentifier",
"src": "3262:3:5"
},
"nodeType": "YulFunctionCall",
"src": "3262:18:5"
},
{
"name": "value2",
"nodeType": "YulIdentifier",
"src": "3282:6:5"
}
],
"functionName": {
"name": "mstore",
"nodeType": "YulIdentifier",
"src": "3255:6:5"
},
"nodeType": "YulFunctionCall",
"src": "3255:34:5"
},
"nodeType": "YulExpressionStatement",
"src": "3255:34:5"
},
{
"body": {
"nodeType": "YulBlock",
"src": "3331:111:5",
"statements": [
{
"expression": {
"arguments": [
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "3352:1:5",
"type": "",
"value": "0"
},
{
"arguments": [
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "3359:3:5",
"type": "",
"value": "224"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "3364:10:5",
"type": "",
"value": "0x4e487b71"
}
],
"functionName": {
"name": "shl",
"nodeType": "YulIdentifier",
"src": "3355:3:5"
},
"nodeType": "YulFunctionCall",
"src": "3355:20:5"
}
],
"functionName": {
"name": "mstore",
"nodeType": "YulIdentifier",
"src": "3345:6:5"
},
"nodeType": "YulFunctionCall",
"src": "3345:31:5"
},
"nodeType": "YulExpressionStatement",
"src": "3345:31:5"
},
{
"expression": {
"arguments": [
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "3396:1:5",
"type": "",
"value": "4"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "3399:4:5",
"type": "",
"value": "0x21"
}
],
"functionName": {
"name": "mstore",
"nodeType": "YulIdentifier",
"src": "3389:6:5"
},
"nodeType": "YulFunctionCall",
"src": "3389:15:5"
},
"nodeType": "YulExpressionStatement",
"src": "3389:15:5"
},
{
"expression": {
"arguments": [
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "3424:1:5",
"type": "",
"value": "0"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "3427:4:5",
"type": "",
"value": "0x24"
}
],
"functionName": {
"name": "revert",
"nodeType": "YulIdentifier",
"src": "3417:6:5"
},
"nodeType": "YulFunctionCall",
"src": "3417:15:5"
},
"nodeType": "YulExpressionStatement",
"src": "3417:15:5"
}
]
},
"condition": {
"arguments": [
{
"arguments": [
{
"name": "value3",
"nodeType": "YulIdentifier",
"src": "3311:6:5"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "3319:1:5",
"type": "",
"value": "3"
}
],
"functionName": {
"name": "lt",
"nodeType": "YulIdentifier",
"src": "3308:2:5"
},
"nodeType": "YulFunctionCall",
"src": "3308:13:5"
}
],
"functionName": {
"name": "iszero",
"nodeType": "YulIdentifier",
"src": "3301:6:5"
},
"nodeType": "YulFunctionCall",
"src": "3301:21:5"
},
"nodeType": "YulIf",
"src": "3298:144:5"
},
{
"expression": {
"arguments": [
{
"arguments": [
{
"name": "headStart",
"nodeType": "YulIdentifier",
"src": "3462:9:5"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "3473:2:5",
"type": "",
"value": "96"
}
],
"functionName": {
"name": "add",
"nodeType": "YulIdentifier",
"src": "3458:3:5"
},
"nodeType": "YulFunctionCall",
"src": "3458:18:5"
},
{
"name": "value3",
"nodeType": "YulIdentifier",
"src": "3478:6:5"
}
],
"functionName": {
"name": "mstore",
"nodeType": "YulIdentifier",
"src": "3451:6:5"
},
"nodeType": "YulFunctionCall",
"src": "3451:34:5"
},
"nodeType": "YulExpressionStatement",
"src": "3451:34:5"
}
]
},
"name": "abi_encode_tuple_t_address_t_address_t_uint256_t_enum$_transactionState_$727__to_t_address_t_address_t_uint256_t_uint8__fromStack_reversed",
"nodeType": "YulFunctionDefinition",
"parameters": [
{
"name": "headStart",
"nodeType": "YulTypedName",
"src": "3021:9:5",
"type": ""
},
{
"name": "value3",
"nodeType": "YulTypedName",
"src": "3032:6:5",
"type": ""
},
{
"name": "value2",
"nodeType": "YulTypedName",
"src": "3040:6:5",
"type": ""
},
{
"name": "value1",
"nodeType": "YulTypedName",
"src": "3048:6:5",
"type": ""
},
{
"name": "value0",
"nodeType": "YulTypedName",
"src": "3056:6:5",
"type": ""
}
],
"returnVariables": [
{
"name": "tail",
"nodeType": "YulTypedName",
"src": "3067:4:5",
"type": ""
}
],
"src": "2873:618:5"
},
{
"body": {
"nodeType": "YulBlock",
"src": "3583:301:5",
"statements": [
{
"body": {
"nodeType": "YulBlock",
"src": "3629:16:5",
"statements": [
{
"expression": {
"arguments": [
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "3638:1:5",
"type": "",
"value": "0"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "3641:1:5",
"type": "",
"value": "0"
}
],
"functionName": {
"name": "revert",
"nodeType": "YulIdentifier",
"src": "3631:6:5"
},
"nodeType": "YulFunctionCall",
"src": "3631:12:5"
},
"nodeType": "YulExpressionStatement",
"src": "3631:12:5"
}
]
},
"condition": {
"arguments": [
{
"arguments": [
{
"name": "dataEnd",
"nodeType": "YulIdentifier",
"src": "3604:7:5"
},
{
"name": "headStart",
"nodeType": "YulIdentifier",
"src": "3613:9:5"
}
],
"functionName": {
"name": "sub",
"nodeType": "YulIdentifier",
"src": "3600:3:5"
},
"nodeType": "YulFunctionCall",
"src": "3600:23:5"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "3625:2:5",
"type": "",
"value": "64"
}
],
"functionName": {
"name": "slt",
"nodeType": "YulIdentifier",
"src": "3596:3:5"
},
"nodeType": "YulFunctionCall",
"src": "3596:32:5"
},
"nodeType": "YulIf",
"src": "3593:52:5"
},
{
"nodeType": "YulVariableDeclaration",
"src": "3654:36:5",
"value": {
"arguments": [
{
"name": "headStart",
"nodeType": "YulIdentifier",
"src": "3680:9:5"
}
],
"functionName": {
"name": "calldataload",
"nodeType": "YulIdentifier",
"src": "3667:12:5"
},
"nodeType": "YulFunctionCall",
"src": "3667:23:5"
},
"variables": [
{
"name": "value",
"nodeType": "YulTypedName",
"src": "3658:5:5",
"type": ""
}
]
},
{
"expression": {
"arguments": [
{
"name": "value",
"nodeType": "YulIdentifier",
"src": "3724:5:5"
}
],
"functionName": {
"name": "validator_revert_address",
"nodeType": "YulIdentifier",
"src": "3699:24:5"
},
"nodeType": "YulFunctionCall",
"src": "3699:31:5"
},
"nodeType": "YulExpressionStatement",
"src": "3699:31:5"
},
{
"nodeType": "YulAssignment",
"src": "3739:15:5",
"value": {
"name": "value",
"nodeType": "YulIdentifier",
"src": "3749:5:5"
},
"variableNames": [
{
"name": "value0",
"nodeType": "YulIdentifier",
"src": "3739:6:5"
}
]
},
{
"nodeType": "YulVariableDeclaration",
"src": "3763:47:5",
"value": {
"arguments": [
{
"arguments": [
{
"name": "headStart",
"nodeType": "YulIdentifier",
"src": "3795:9:5"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "3806:2:5",
"type": "",
"value": "32"
}
],
"functionName": {
"name": "add",
"nodeType": "YulIdentifier",
"src": "3791:3:5"
},
"nodeType": "YulFunctionCall",
"src": "3791:18:5"
}
],
"functionName": {
"name": "calldataload",
"nodeType": "YulIdentifier",
"src": "3778:12:5"
},
"nodeType": "YulFunctionCall",
"src": "3778:32:5"
},
"variables": [
{
"name": "value_1",
"nodeType": "YulTypedName",
"src": "3767:7:5",
"type": ""
}
]
},
{
"expression": {
"arguments": [
{
"name": "value_1",
"nodeType": "YulIdentifier",
"src": "3844:7:5"
}
],
"functionName": {
"name": "validator_revert_address",
"nodeType": "YulIdentifier",
"src": "3819:24:5"
},
"nodeType": "YulFunctionCall",
"src": "3819:33:5"
},
"nodeType": "YulExpressionStatement",
"src": "3819:33:5"
},
{
"nodeType": "YulAssignment",
"src": "3861:17:5",
"value": {
"name": "value_1",
"nodeType": "YulIdentifier",
"src": "3871:7:5"
},
"variableNames": [
{
"name": "value1",
"nodeType": "YulIdentifier",
"src": "3861:6:5"
}
]
}
]
},
"name": "abi_decode_tuple_t_addresst_address",
"nodeType": "YulFunctionDefinition",
"parameters": [
{
"name": "headStart",
"nodeType": "YulTypedName",
"src": "3541:9:5",
"type": ""
},
{
"name": "dataEnd",
"nodeType": "YulTypedName",
"src": "3552:7:5",
"type": ""
}
],
"returnVariables": [
{
"name": "value0",
"nodeType": "YulTypedName",
"src": "3564:6:5",
"type": ""
},
{
"name": "value1",
"nodeType": "YulTypedName",
"src": "3572:6:5",
"type": ""
}
],
"src": "3496:388:5"
},
{
"body": {
"nodeType": "YulBlock",
"src": "3967:177:5",
"statements": [
{
"body": {
"nodeType": "YulBlock",
"src": "4013:16:5",
"statements": [
{
"expression": {
"arguments": [
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "4022:1:5",
"type": "",
"value": "0"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "4025:1:5",
"type": "",
"value": "0"
}
],
"functionName": {
"name": "revert",
"nodeType": "YulIdentifier",
"src": "4015:6:5"
},
"nodeType": "YulFunctionCall",
"src": "4015:12:5"
},
"nodeType": "YulExpressionStatement",
"src": "4015:12:5"
}
]
},
"condition": {
"arguments": [
{
"arguments": [
{
"name": "dataEnd",
"nodeType": "YulIdentifier",
"src": "3988:7:5"
},
{
"name": "headStart",
"nodeType": "YulIdentifier",
"src": "3997:9:5"
}
],
"functionName": {
"name": "sub",
"nodeType": "YulIdentifier",
"src": "3984:3:5"
},
"nodeType": "YulFunctionCall",
"src": "3984:23:5"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "4009:2:5",
"type": "",
"value": "32"
}
],
"functionName": {
"name": "slt",
"nodeType": "YulIdentifier",
"src": "3980:3:5"
},
"nodeType": "YulFunctionCall",
"src": "3980:32:5"
},
"nodeType": "YulIf",
"src": "3977:52:5"
},
{
"nodeType": "YulVariableDeclaration",
"src": "4038:36:5",
"value": {
"arguments": [
{
"name": "headStart",
"nodeType": "YulIdentifier",
"src": "4064:9:5"
}
],
"functionName": {
"name": "calldataload",
"nodeType": "YulIdentifier",
"src": "4051:12:5"
},
"nodeType": "YulFunctionCall",
"src": "4051:23:5"
},
"variables": [
{
"name": "value",
"nodeType": "YulTypedName",
"src": "4042:5:5",
"type": ""
}
]
},
{
"expression": {
"arguments": [
{
"name": "value",
"nodeType": "YulIdentifier",
"src": "4108:5:5"
}
],
"functionName": {
"name": "validator_revert_address",
"nodeType": "YulIdentifier",
"src": "4083:24:5"
},
"nodeType": "YulFunctionCall",
"src": "4083:31:5"
},
"nodeType": "YulExpressionStatement",
"src": "4083:31:5"
},
{
"nodeType": "YulAssignment",
"src": "4123:15:5",
"value": {
"name": "value",
"nodeType": "YulIdentifier",
"src": "4133:5:5"
},
"variableNames": [
{
"name": "value0",
"nodeType": "YulIdentifier",
"src": "4123:6:5"
}
]
}
]
},
"name": "abi_decode_tuple_t_address_payable",
"nodeType": "YulFunctionDefinition",
"parameters": [
{
"name": "headStart",
"nodeType": "YulTypedName",
"src": "3933:9:5",
"type": ""
},
{
"name": "dataEnd",
"nodeType": "YulTypedName",
"src": "3944:7:5",
"type": ""
}
],
"returnVariables": [
{
"name": "value0",
"nodeType": "YulTypedName",
"src": "3956:6:5",
"type": ""
}
],
"src": "3889:255:5"
},
{
"body": {
"nodeType": "YulBlock",
"src": "4323:166:5",
"statements": [
{
"expression": {
"arguments": [
{
"name": "headStart",
"nodeType": "YulIdentifier",
"src": "4340:9:5"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "4351:2:5",
"type": "",
"value": "32"
}
],
"functionName": {
"name": "mstore",
"nodeType": "YulIdentifier",
"src": "4333:6:5"
},
"nodeType": "YulFunctionCall",
"src": "4333:21:5"
},
"nodeType": "YulExpressionStatement",
"src": "4333:21:5"
},
{
"expression": {
"arguments": [
{
"arguments": [
{
"name": "headStart",
"nodeType": "YulIdentifier",
"src": "4374:9:5"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "4385:2:5",
"type": "",
"value": "32"
}
],
"functionName": {
"name": "add",
"nodeType": "YulIdentifier",
"src": "4370:3:5"
},
"nodeType": "YulFunctionCall",
"src": "4370:18:5"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "4390:2:5",
"type": "",
"value": "16"
}
],
"functionName": {
"name": "mstore",
"nodeType": "YulIdentifier",
"src": "4363:6:5"
},
"nodeType": "YulFunctionCall",
"src": "4363:30:5"
},
"nodeType": "YulExpressionStatement",
"src": "4363:30:5"
},
{
"expression": {
"arguments": [
{
"arguments": [
{
"name": "headStart",
"nodeType": "YulIdentifier",
"src": "4413:9:5"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "4424:2:5",
"type": "",
"value": "64"
}
],
"functionName": {
"name": "add",
"nodeType": "YulIdentifier",
"src": "4409:3:5"
},
"nodeType": "YulFunctionCall",
"src": "4409:18:5"
},
{
"hexValue": "5061757361626c653a20706175736564",
"kind": "string",
"nodeType": "YulLiteral",
"src": "4429:18:5",
"type": "",
"value": "Pausable: paused"
}
],
"functionName": {
"name": "mstore",
"nodeType": "YulIdentifier",
"src": "4402:6:5"
},
"nodeType": "YulFunctionCall",
"src": "4402:46:5"
},
"nodeType": "YulExpressionStatement",
"src": "4402:46:5"
},
{
"nodeType": "YulAssignment",
"src": "4457:26:5",
"value": {
"arguments": [
{
"name": "headStart",
"nodeType": "YulIdentifier",
"src": "4469:9:5"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "4480:2:5",
"type": "",
"value": "96"
}
],
"functionName": {
"name": "add",
"nodeType": "YulIdentifier",
"src": "4465:3:5"
},
"nodeType": "YulFunctionCall",
"src": "4465:18:5"
},
"variableNames": [
{
"name": "tail",
"nodeType": "YulIdentifier",
"src": "4457:4:5"
}
]
}
]
},
"name": "abi_encode_tuple_t_stringliteral_68571e1369f7a6dcdcd736cb0343b35a58ed0f64d245c2ed839c98d412744f8a__to_t_string_memory_ptr__fromStack_reversed",
"nodeType": "YulFunctionDefinition",
"parameters": [
{
"name": "headStart",
"nodeType": "YulTypedName",
"src": "4300:9:5",
"type": ""
}
],
"returnVariables": [
{
"name": "tail",
"nodeType": "YulTypedName",
"src": "4314:4:5",
"type": ""
}
],
"src": "4149:340:5"
},
{
"body": {
"nodeType": "YulBlock",
"src": "4668:182:5",
"statements": [
{
"expression": {
"arguments": [
{
"name": "headStart",
"nodeType": "YulIdentifier",
"src": "4685:9:5"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "4696:2:5",
"type": "",
"value": "32"
}
],
"functionName": {
"name": "mstore",
"nodeType": "YulIdentifier",
"src": "4678:6:5"
},
"nodeType": "YulFunctionCall",
"src": "4678:21:5"
},
"nodeType": "YulExpressionStatement",
"src": "4678:21:5"
},
{
"expression": {
"arguments": [
{
"arguments": [
{
"name": "headStart",
"nodeType": "YulIdentifier",
"src": "4719:9:5"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "4730:2:5",
"type": "",
"value": "32"
}
],
"functionName": {
"name": "add",
"nodeType": "YulIdentifier",
"src": "4715:3:5"
},
"nodeType": "YulFunctionCall",
"src": "4715:18:5"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "4735:2:5",
"type": "",
"value": "32"
}
],
"functionName": {
"name": "mstore",
"nodeType": "YulIdentifier",
"src": "4708:6:5"
},
"nodeType": "YulFunctionCall",
"src": "4708:30:5"
},
"nodeType": "YulExpressionStatement",
"src": "4708:30:5"
},
{
"expression": {
"arguments": [
{
"arguments": [
{
"name": "headStart",
"nodeType": "YulIdentifier",
"src": "4758:9:5"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "4769:2:5",
"type": "",
"value": "64"
}
],
"functionName": {
"name": "add",
"nodeType": "YulIdentifier",
"src": "4754:3:5"
},
"nodeType": "YulFunctionCall",
"src": "4754:18:5"
},
{
"hexValue": "4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572",
"kind": "string",
"nodeType": "YulLiteral",
"src": "4774:34:5",
"type": "",
"value": "Ownable: caller is not the owner"
}
],
"functionName": {
"name": "mstore",
"nodeType": "YulIdentifier",
"src": "4747:6:5"
},
"nodeType": "YulFunctionCall",
"src": "4747:62:5"
},
"nodeType": "YulExpressionStatement",
"src": "4747:62:5"
},
{
"nodeType": "YulAssignment",
"src": "4818:26:5",
"value": {
"arguments": [
{
"name": "headStart",
"nodeType": "YulIdentifier",
"src": "4830:9:5"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "4841:2:5",
"type": "",
"value": "96"
}
],
"functionName": {
"name": "add",
"nodeType": "YulIdentifier",
"src": "4826:3:5"
},
"nodeType": "YulFunctionCall",
"src": "4826:18:5"
},
"variableNames": [
{
"name": "tail",
"nodeType": "YulIdentifier",
"src": "4818:4:5"
}
]
}
]
},
"name": "abi_encode_tuple_t_stringliteral_9924ebdf1add33d25d4ef888e16131f0a5687b0580a36c21b5c301a6c462effe__to_t_string_memory_ptr__fromStack_reversed",
"nodeType": "YulFunctionDefinition",
"parameters": [
{
"name": "headStart",
"nodeType": "YulTypedName",
"src": "4645:9:5",
"type": ""
}
],
"returnVariables": [
{
"name": "tail",
"nodeType": "YulTypedName",
"src": "4659:4:5",
"type": ""
}
],
"src": "4494:356:5"
},
{
"body": {
"nodeType": "YulBlock",
"src": "5029:230:5",
"statements": [
{
"expression": {
"arguments": [
{
"name": "headStart",
"nodeType": "YulIdentifier",
"src": "5046:9:5"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "5057:2:5",
"type": "",
"value": "32"
}
],
"functionName": {
"name": "mstore",
"nodeType": "YulIdentifier",
"src": "5039:6:5"
},
"nodeType": "YulFunctionCall",
"src": "5039:21:5"
},
"nodeType": "YulExpressionStatement",
"src": "5039:21:5"
},
{
"expression": {
"arguments": [
{
"arguments": [
{
"name": "headStart",
"nodeType": "YulIdentifier",
"src": "5080:9:5"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "5091:2:5",
"type": "",
"value": "32"
}
],
"functionName": {
"name": "add",
"nodeType": "YulIdentifier",
"src": "5076:3:5"
},
"nodeType": "YulFunctionCall",
"src": "5076:18:5"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "5096:2:5",
"type": "",
"value": "40"
}
],
"functionName": {
"name": "mstore",
"nodeType": "YulIdentifier",
"src": "5069:6:5"
},
"nodeType": "YulFunctionCall",
"src": "5069:30:5"
},
"nodeType": "YulExpressionStatement",
"src": "5069:30:5"
},
{
"expression": {
"arguments": [
{
"arguments": [
{
"name": "headStart",
"nodeType": "YulIdentifier",
"src": "5119:9:5"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "5130:2:5",
"type": "",
"value": "64"
}
],
"functionName": {
"name": "add",
"nodeType": "YulIdentifier",
"src": "5115:3:5"
},
"nodeType": "YulFunctionCall",
"src": "5115:18:5"
},
{
"hexValue": "576869746e6579546f6b656e3a205472616e73616374696f6e20646f6573206e",
"kind": "string",
"nodeType": "YulLiteral",
"src": "5135:34:5",
"type": "",
"value": "WhitneyToken: Transaction does n"
}
],
"functionName": {
"name": "mstore",
"nodeType": "YulIdentifier",
"src": "5108:6:5"
},
"nodeType": "YulFunctionCall",
"src": "5108:62:5"
},
"nodeType": "YulExpressionStatement",
"src": "5108:62:5"
},
{
"expression": {
"arguments": [
{
"arguments": [
{
"name": "headStart",
"nodeType": "YulIdentifier",
"src": "5190:9:5"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "5201:2:5",
"type": "",
"value": "96"
}
],
"functionName": {
"name": "add",
"nodeType": "YulIdentifier",
"src": "5186:3:5"
},
"nodeType": "YulFunctionCall",
"src": "5186:18:5"
},
{
"hexValue": "6f74206578697374",
"kind": "string",
"nodeType": "YulLiteral",
"src": "5206:10:5",
"type": "",
"value": "ot exist"
}
],
"functionName": {
"name": "mstore",
"nodeType": "YulIdentifier",
"src": "5179:6:5"
},
"nodeType": "YulFunctionCall",
"src": "5179:38:5"
},
"nodeType": "YulExpressionStatement",
"src": "5179:38:5"
},
{
"nodeType": "YulAssignment",
"src": "5226:27:5",
"value": {
"arguments": [
{
"name": "headStart",
"nodeType": "YulIdentifier",
"src": "5238:9:5"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "5249:3:5",
"type": "",
"value": "128"
}
],
"functionName": {
"name": "add",
"nodeType": "YulIdentifier",
"src": "5234:3:5"
},
"nodeType": "YulFunctionCall",
"src": "5234:19:5"
},
"variableNames": [
{
"name": "tail",
"nodeType": "YulIdentifier",
"src": "5226:4:5"
}
]
}
]
},
"name": "abi_encode_tuple_t_stringliteral_fa9bdc579a4d97dca9a0796811b4d662caa2610457642ec6096d99a2f12986c0__to_t_string_memory_ptr__fromStack_reversed",
"nodeType": "YulFunctionDefinition",
"parameters": [
{
"name": "headStart",
"nodeType": "YulTypedName",
"src": "5006:9:5",
"type": ""
}
],
"returnVariables": [
{
"name": "tail",
"nodeType": "YulTypedName",
"src": "5020:4:5",
"type": ""
}
],
"src": "4855:404:5"
},
{
"body": {
"nodeType": "YulBlock",
"src": "5438:241:5",
"statements": [
{
"expression": {
"arguments": [
{
"name": "headStart",
"nodeType": "YulIdentifier",
"src": "5455:9:5"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "5466:2:5",
"type": "",
"value": "32"
}
],
"functionName": {
"name": "mstore",
"nodeType": "YulIdentifier",
"src": "5448:6:5"
},
"nodeType": "YulFunctionCall",
"src": "5448:21:5"
},
"nodeType": "YulExpressionStatement",
"src": "5448:21:5"
},
{
"expression": {
"arguments": [
{
"arguments": [
{
"name": "headStart",
"nodeType": "YulIdentifier",
"src": "5489:9:5"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "5500:2:5",
"type": "",
"value": "32"
}
],
"functionName": {
"name": "add",
"nodeType": "YulIdentifier",
"src": "5485:3:5"
},
"nodeType": "YulFunctionCall",
"src": "5485:18:5"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "5505:2:5",
"type": "",
"value": "51"
}
],
"functionName": {
"name": "mstore",
"nodeType": "YulIdentifier",
"src": "5478:6:5"
},
"nodeType": "YulFunctionCall",
"src": "5478:30:5"
},
"nodeType": "YulExpressionStatement",
"src": "5478:30:5"
},
{
"expression": {
"arguments": [
{
"arguments": [
{
"name": "headStart",
"nodeType": "YulIdentifier",
"src": "5528:9:5"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "5539:2:5",
"type": "",
"value": "64"
}
],
"functionName": {
"name": "add",
"nodeType": "YulIdentifier",
"src": "5524:3:5"
},
"nodeType": "YulFunctionCall",
"src": "5524:18:5"
},
{
"hexValue": "576869746e6579546f6b656e3a205472616e73616374696f6e2068617320616c",
"kind": "string",
"nodeType": "YulLiteral",
"src": "5544:34:5",
"type": "",
"value": "WhitneyToken: Transaction has al"
}
],
"functionName": {
"name": "mstore",
"nodeType": "YulIdentifier",
"src": "5517:6:5"
},
"nodeType": "YulFunctionCall",
"src": "5517:62:5"
},
"nodeType": "YulExpressionStatement",
"src": "5517:62:5"
},
{
"expression": {
"arguments": [
{
"arguments": [
{
"name": "headStart",
"nodeType": "YulIdentifier",
"src": "5599:9:5"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "5610:2:5",
"type": "",
"value": "96"
}
],
"functionName": {
"name": "add",
"nodeType": "YulIdentifier",
"src": "5595:3:5"
},
"nodeType": "YulFunctionCall",
"src": "5595:18:5"
},
{
"hexValue": "7265616479206265656e206578656375746564",
"kind": "string",
"nodeType": "YulLiteral",
"src": "5615:21:5",
"type": "",
"value": "ready been executed"
}
],
"functionName": {
"name": "mstore",
"nodeType": "YulIdentifier",
"src": "5588:6:5"
},
"nodeType": "YulFunctionCall",
"src": "5588:49:5"
},
"nodeType": "YulExpressionStatement",
"src": "5588:49:5"
},
{
"nodeType": "YulAssignment",
"src": "5646:27:5",
"value": {
"arguments": [
{
"name": "headStart",
"nodeType": "YulIdentifier",
"src": "5658:9:5"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "5669:3:5",
"type": "",
"value": "128"
}
],
"functionName": {
"name": "add",
"nodeType": "YulIdentifier",
"src": "5654:3:5"
},
"nodeType": "YulFunctionCall",
"src": "5654:19:5"
},
"variableNames": [
{
"name": "tail",
"nodeType": "YulIdentifier",
"src": "5646:4:5"
}
]
}
]
},
"name": "abi_encode_tuple_t_stringliteral_f61ee3e6b757b1ace2293ab31484417882dac7dc5830b655ca2d0df8898482c8__to_t_string_memory_ptr__fromStack_reversed",
"nodeType": "YulFunctionDefinition",
"parameters": [
{
"name": "headStart",
"nodeType": "YulTypedName",
"src": "5415:9:5",
"type": ""
}
],
"returnVariables": [
{
"name": "tail",
"nodeType": "YulTypedName",
"src": "5429:4:5",
"type": ""
}
],
"src": "5264:415:5"
},
{
"body": {
"nodeType": "YulBlock",
"src": "5739:325:5",
"statements": [
{
"nodeType": "YulAssignment",
"src": "5749:22:5",
"value": {
"arguments": [
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "5763:1:5",
"type": "",
"value": "1"
},
{
"name": "data",
"nodeType": "YulIdentifier",
"src": "5766:4:5"
}
],
"functionName": {
"name": "shr",
"nodeType": "YulIdentifier",
"src": "5759:3:5"
},
"nodeType": "YulFunctionCall",
"src": "5759:12:5"
},
"variableNames": [
{
"name": "length",
"nodeType": "YulIdentifier",
"src": "5749:6:5"
}
]
},
{
"nodeType": "YulVariableDeclaration",
"src": "5780:38:5",
"value": {
"arguments": [
{
"name": "data",
"nodeType": "YulIdentifier",
"src": "5810:4:5"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "5816:1:5",
"type": "",
"value": "1"
}
],
"functionName": {
"name": "and",
"nodeType": "YulIdentifier",
"src": "5806:3:5"
},
"nodeType": "YulFunctionCall",
"src": "5806:12:5"
},
"variables": [
{
"name": "outOfPlaceEncoding",
"nodeType": "YulTypedName",
"src": "5784:18:5",
"type": ""
}
]
},
{
"body": {
"nodeType": "YulBlock",
"src": "5857:31:5",
"statements": [
{
"nodeType": "YulAssignment",
"src": "5859:27:5",
"value": {
"arguments": [
{
"name": "length",
"nodeType": "YulIdentifier",
"src": "5873:6:5"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "5881:4:5",
"type": "",
"value": "0x7f"
}
],
"functionName": {
"name": "and",
"nodeType": "YulIdentifier",
"src": "5869:3:5"
},
"nodeType": "YulFunctionCall",
"src": "5869:17:5"
},
"variableNames": [
{
"name": "length",
"nodeType": "YulIdentifier",
"src": "5859:6:5"
}
]
}
]
},
"condition": {
"arguments": [
{
"name": "outOfPlaceEncoding",
"nodeType": "YulIdentifier",
"src": "5837:18:5"
}
],
"functionName": {
"name": "iszero",
"nodeType": "YulIdentifier",
"src": "5830:6:5"
},
"nodeType": "YulFunctionCall",
"src": "5830:26:5"
},
"nodeType": "YulIf",
"src": "5827:61:5"
},
{
"body": {
"nodeType": "YulBlock",
"src": "5947:111:5",
"statements": [
{
"expression": {
"arguments": [
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "5968:1:5",
"type": "",
"value": "0"
},
{
"arguments": [
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "5975:3:5",
"type": "",
"value": "224"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "5980:10:5",
"type": "",
"value": "0x4e487b71"
}
],
"functionName": {
"name": "shl",
"nodeType": "YulIdentifier",
"src": "5971:3:5"
},
"nodeType": "YulFunctionCall",
"src": "5971:20:5"
}
],
"functionName": {
"name": "mstore",
"nodeType": "YulIdentifier",
"src": "5961:6:5"
},
"nodeType": "YulFunctionCall",
"src": "5961:31:5"
},
"nodeType": "YulExpressionStatement",
"src": "5961:31:5"
},
{
"expression": {
"arguments": [
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "6012:1:5",
"type": "",
"value": "4"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "6015:4:5",
"type": "",
"value": "0x22"
}
],
"functionName": {
"name": "mstore",
"nodeType": "YulIdentifier",
"src": "6005:6:5"
},
"nodeType": "YulFunctionCall",
"src": "6005:15:5"
},
"nodeType": "YulExpressionStatement",
"src": "6005:15:5"
},
{
"expression": {
"arguments": [
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "6040:1:5",
"type": "",
"value": "0"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "6043:4:5",
"type": "",
"value": "0x24"
}
],
"functionName": {
"name": "revert",
"nodeType": "YulIdentifier",
"src": "6033:6:5"
},
"nodeType": "YulFunctionCall",
"src": "6033:15:5"
},
"nodeType": "YulExpressionStatement",
"src": "6033:15:5"
}
]
},
"condition": {
"arguments": [
{
"name": "outOfPlaceEncoding",
"nodeType": "YulIdentifier",
"src": "5903:18:5"
},
{
"arguments": [
{
"name": "length",
"nodeType": "YulIdentifier",
"src": "5926:6:5"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "5934:2:5",
"type": "",
"value": "32"
}
],
"functionName": {
"name": "lt",
"nodeType": "YulIdentifier",
"src": "5923:2:5"
},
"nodeType": "YulFunctionCall",
"src": "5923:14:5"
}
],
"functionName": {
"name": "eq",
"nodeType": "YulIdentifier",
"src": "5900:2:5"
},
"nodeType": "YulFunctionCall",
"src": "5900:38:5"
},
"nodeType": "YulIf",
"src": "5897:161:5"
}
]
},
"name": "extract_byte_array_length",
"nodeType": "YulFunctionDefinition",
"parameters": [
{
"name": "data",
"nodeType": "YulTypedName",
"src": "5719:4:5",
"type": ""
}
],
"returnVariables": [
{
"name": "length",
"nodeType": "YulTypedName",
"src": "5728:6:5",
"type": ""
}
],
"src": "5684:380:5"
},
{
"body": {
"nodeType": "YulBlock",
"src": "6243:170:5",
"statements": [
{
"expression": {
"arguments": [
{
"name": "headStart",
"nodeType": "YulIdentifier",
"src": "6260:9:5"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "6271:2:5",
"type": "",
"value": "32"
}
],
"functionName": {
"name": "mstore",
"nodeType": "YulIdentifier",
"src": "6253:6:5"
},
"nodeType": "YulFunctionCall",
"src": "6253:21:5"
},
"nodeType": "YulExpressionStatement",
"src": "6253:21:5"
},
{
"expression": {
"arguments": [
{
"arguments": [
{
"name": "headStart",
"nodeType": "YulIdentifier",
"src": "6294:9:5"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "6305:2:5",
"type": "",
"value": "32"
}
],
"functionName": {
"name": "add",
"nodeType": "YulIdentifier",
"src": "6290:3:5"
},
"nodeType": "YulFunctionCall",
"src": "6290:18:5"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "6310:2:5",
"type": "",
"value": "20"
}
],
"functionName": {
"name": "mstore",
"nodeType": "YulIdentifier",
"src": "6283:6:5"
},
"nodeType": "YulFunctionCall",
"src": "6283:30:5"
},
"nodeType": "YulExpressionStatement",
"src": "6283:30:5"
},
{
"expression": {
"arguments": [
{
"arguments": [
{
"name": "headStart",
"nodeType": "YulIdentifier",
"src": "6333:9:5"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "6344:2:5",
"type": "",
"value": "64"
}
],
"functionName": {
"name": "add",
"nodeType": "YulIdentifier",
"src": "6329:3:5"
},
"nodeType": "YulFunctionCall",
"src": "6329:18:5"
},
{
"hexValue": "5061757361626c653a206e6f7420706175736564",
"kind": "string",
"nodeType": "YulLiteral",
"src": "6349:22:5",
"type": "",
"value": "Pausable: not paused"
}
],
"functionName": {
"name": "mstore",
"nodeType": "YulIdentifier",
"src": "6322:6:5"
},
"nodeType": "YulFunctionCall",
"src": "6322:50:5"
},
"nodeType": "YulExpressionStatement",
"src": "6322:50:5"
},
{
"nodeType": "YulAssignment",
"src": "6381:26:5",
"value": {
"arguments": [
{
"name": "headStart",
"nodeType": "YulIdentifier",
"src": "6393:9:5"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "6404:2:5",
"type": "",
"value": "96"
}
],
"functionName": {
"name": "add",
"nodeType": "YulIdentifier",
"src": "6389:3:5"
},
"nodeType": "YulFunctionCall",
"src": "6389:18:5"
},
"variableNames": [
{
"name": "tail",
"nodeType": "YulIdentifier",
"src": "6381:4:5"
}
]
}
]
},
"name": "abi_encode_tuple_t_stringliteral_0d1d997348c4b502650619e51f7d09f80514d98b6993be5051d07f703984619a__to_t_string_memory_ptr__fromStack_reversed",
"nodeType": "YulFunctionDefinition",
"parameters": [
{
"name": "headStart",
"nodeType": "YulTypedName",
"src": "6220:9:5",
"type": ""
}
],
"returnVariables": [
{
"name": "tail",
"nodeType": "YulTypedName",
"src": "6234:4:5",
"type": ""
}
],
"src": "6069:344:5"
},
{
"body": {
"nodeType": "YulBlock",
"src": "6592:226:5",
"statements": [
{
"expression": {
"arguments": [
{
"name": "headStart",
"nodeType": "YulIdentifier",
"src": "6609:9:5"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "6620:2:5",
"type": "",
"value": "32"
}
],
"functionName": {
"name": "mstore",
"nodeType": "YulIdentifier",
"src": "6602:6:5"
},
"nodeType": "YulFunctionCall",
"src": "6602:21:5"
},
"nodeType": "YulExpressionStatement",
"src": "6602:21:5"
},
{
"expression": {
"arguments": [
{
"arguments": [
{
"name": "headStart",
"nodeType": "YulIdentifier",
"src": "6643:9:5"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "6654:2:5",
"type": "",
"value": "32"
}
],
"functionName": {
"name": "add",
"nodeType": "YulIdentifier",
"src": "6639:3:5"
},
"nodeType": "YulFunctionCall",
"src": "6639:18:5"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "6659:2:5",
"type": "",
"value": "36"
}
],
"functionName": {
"name": "mstore",
"nodeType": "YulIdentifier",
"src": "6632:6:5"
},
"nodeType": "YulFunctionCall",
"src": "6632:30:5"
},
"nodeType": "YulExpressionStatement",
"src": "6632:30:5"
},
{
"expression": {
"arguments": [
{
"arguments": [
{
"name": "headStart",
"nodeType": "YulIdentifier",
"src": "6682:9:5"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "6693:2:5",
"type": "",
"value": "64"
}
],
"functionName": {
"name": "add",
"nodeType": "YulIdentifier",
"src": "6678:3:5"
},
"nodeType": "YulFunctionCall",
"src": "6678:18:5"
},
{
"hexValue": "45524332303a20617070726f76652066726f6d20746865207a65726f20616464",
"kind": "string",
"nodeType": "YulLiteral",
"src": "6698:34:5",
"type": "",
"value": "ERC20: approve from the zero add"
}
],
"functionName": {
"name": "mstore",
"nodeType": "YulIdentifier",
"src": "6671:6:5"
},
"nodeType": "YulFunctionCall",
"src": "6671:62:5"
},
"nodeType": "YulExpressionStatement",
"src": "6671:62:5"
},
{
"expression": {
"arguments": [
{
"arguments": [
{
"name": "headStart",
"nodeType": "YulIdentifier",
"src": "6753:9:5"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "6764:2:5",
"type": "",
"value": "96"
}
],
"functionName": {
"name": "add",
"nodeType": "YulIdentifier",
"src": "6749:3:5"
},
"nodeType": "YulFunctionCall",
"src": "6749:18:5"
},
{
"hexValue": "72657373",
"kind": "string",
"nodeType": "YulLiteral",
"src": "6769:6:5",
"type": "",
"value": "ress"
}
],
"functionName": {
"name": "mstore",
"nodeType": "YulIdentifier",
"src": "6742:6:5"
},
"nodeType": "YulFunctionCall",
"src": "6742:34:5"
},
"nodeType": "YulExpressionStatement",
"src": "6742:34:5"
},
{
"nodeType": "YulAssignment",
"src": "6785:27:5",
"value": {
"arguments": [
{
"name": "headStart",
"nodeType": "YulIdentifier",
"src": "6797:9:5"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "6808:3:5",
"type": "",
"value": "128"
}
],
"functionName": {
"name": "add",
"nodeType": "YulIdentifier",
"src": "6793:3:5"
},
"nodeType": "YulFunctionCall",
"src": "6793:19:5"
},
"variableNames": [
{
"name": "tail",
"nodeType": "YulIdentifier",
"src": "6785:4:5"
}
]
}
]
},
"name": "abi_encode_tuple_t_stringliteral_c953f4879035ed60e766b34720f656aab5c697b141d924c283124ecedb91c208__to_t_string_memory_ptr__fromStack_reversed",
"nodeType": "YulFunctionDefinition",
"parameters": [
{
"name": "headStart",
"nodeType": "YulTypedName",
"src": "6569:9:5",
"type": ""
}
],
"returnVariables": [
{
"name": "tail",
"nodeType": "YulTypedName",
"src": "6583:4:5",
"type": ""
}
],
"src": "6418:400:5"
},
{
"body": {
"nodeType": "YulBlock",
"src": "6997:224:5",
"statements": [
{
"expression": {
"arguments": [
{
"name": "headStart",
"nodeType": "YulIdentifier",
"src": "7014:9:5"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "7025:2:5",
"type": "",
"value": "32"
}
],
"functionName": {
"name": "mstore",
"nodeType": "YulIdentifier",
"src": "7007:6:5"
},
"nodeType": "YulFunctionCall",
"src": "7007:21:5"
},
"nodeType": "YulExpressionStatement",
"src": "7007:21:5"
},
{
"expression": {
"arguments": [
{
"arguments": [
{
"name": "headStart",
"nodeType": "YulIdentifier",
"src": "7048:9:5"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "7059:2:5",
"type": "",
"value": "32"
}
],
"functionName": {
"name": "add",
"nodeType": "YulIdentifier",
"src": "7044:3:5"
},
"nodeType": "YulFunctionCall",
"src": "7044:18:5"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "7064:2:5",
"type": "",
"value": "34"
}
],
"functionName": {
"name": "mstore",
"nodeType": "YulIdentifier",
"src": "7037:6:5"
},
"nodeType": "YulFunctionCall",
"src": "7037:30:5"
},
"nodeType": "YulExpressionStatement",
"src": "7037:30:5"
},
{
"expression": {
"arguments": [
{
"arguments": [
{
"name": "headStart",
"nodeType": "YulIdentifier",
"src": "7087:9:5"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "7098:2:5",
"type": "",
"value": "64"
}
],
"functionName": {
"name": "add",
"nodeType": "YulIdentifier",
"src": "7083:3:5"
},
"nodeType": "YulFunctionCall",
"src": "7083:18:5"
},
{
"hexValue": "45524332303a20617070726f766520746f20746865207a65726f206164647265",
"kind": "string",
"nodeType": "YulLiteral",
"src": "7103:34:5",
"type": "",
"value": "ERC20: approve to the zero addre"
}
],
"functionName": {
"name": "mstore",
"nodeType": "YulIdentifier",
"src": "7076:6:5"
},
"nodeType": "YulFunctionCall",
"src": "7076:62:5"
},
"nodeType": "YulExpressionStatement",
"src": "7076:62:5"
},
{
"expression": {
"arguments": [
{
"arguments": [
{
"name": "headStart",
"nodeType": "YulIdentifier",
"src": "7158:9:5"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "7169:2:5",
"type": "",
"value": "96"
}
],
"functionName": {
"name": "add",
"nodeType": "YulIdentifier",
"src": "7154:3:5"
},
"nodeType": "YulFunctionCall",
"src": "7154:18:5"
},
{
"hexValue": "7373",
"kind": "string",
"nodeType": "YulLiteral",
"src": "7174:4:5",
"type": "",
"value": "ss"
}
],
"functionName": {
"name": "mstore",
"nodeType": "YulIdentifier",
"src": "7147:6:5"
},
"nodeType": "YulFunctionCall",
"src": "7147:32:5"
},
"nodeType": "YulExpressionStatement",
"src": "7147:32:5"
},
{
"nodeType": "YulAssignment",
"src": "7188:27:5",
"value": {
"arguments": [
{
"name": "headStart",
"nodeType": "YulIdentifier",
"src": "7200:9:5"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "7211:3:5",
"type": "",
"value": "128"
}
],
"functionName": {
"name": "add",
"nodeType": "YulIdentifier",
"src": "7196:3:5"
},
"nodeType": "YulFunctionCall",
"src": "7196:19:5"
},
"variableNames": [
{
"name": "tail",
"nodeType": "YulIdentifier",
"src": "7188:4:5"
}
]
}
]
},
"name": "abi_encode_tuple_t_stringliteral_24883cc5fe64ace9d0df1893501ecb93c77180f0ff69cca79affb3c316dc8029__to_t_string_memory_ptr__fromStack_reversed",
"nodeType": "YulFunctionDefinition",
"parameters": [
{
"name": "headStart",
"nodeType": "YulTypedName",
"src": "6974:9:5",
"type": ""
}
],
"returnVariables": [
{
"name": "tail",
"nodeType": "YulTypedName",
"src": "6988:4:5",
"type": ""
}
],
"src": "6823:398:5"
},
{
"body": {
"nodeType": "YulBlock",
"src": "7274:177:5",
"statements": [
{
"body": {
"nodeType": "YulBlock",
"src": "7309:111:5",
"statements": [
{
"expression": {
"arguments": [
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "7330:1:5",
"type": "",
"value": "0"
},
{
"arguments": [
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "7337:3:5",
"type": "",
"value": "224"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "7342:10:5",
"type": "",
"value": "0x4e487b71"
}
],
"functionName": {
"name": "shl",
"nodeType": "YulIdentifier",
"src": "7333:3:5"
},
"nodeType": "YulFunctionCall",
"src": "7333:20:5"
}
],
"functionName": {
"name": "mstore",
"nodeType": "YulIdentifier",
"src": "7323:6:5"
},
"nodeType": "YulFunctionCall",
"src": "7323:31:5"
},
"nodeType": "YulExpressionStatement",
"src": "7323:31:5"
},
{
"expression": {
"arguments": [
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "7374:1:5",
"type": "",
"value": "4"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "7377:4:5",
"type": "",
"value": "0x11"
}
],
"functionName": {
"name": "mstore",
"nodeType": "YulIdentifier",
"src": "7367:6:5"
},
"nodeType": "YulFunctionCall",
"src": "7367:15:5"
},
"nodeType": "YulExpressionStatement",
"src": "7367:15:5"
},
{
"expression": {
"arguments": [
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "7402:1:5",
"type": "",
"value": "0"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "7405:4:5",
"type": "",
"value": "0x24"
}
],
"functionName": {
"name": "revert",
"nodeType": "YulIdentifier",
"src": "7395:6:5"
},
"nodeType": "YulFunctionCall",
"src": "7395:15:5"
},
"nodeType": "YulExpressionStatement",
"src": "7395:15:5"
}
]
},
"condition": {
"arguments": [
{
"name": "x",
"nodeType": "YulIdentifier",
"src": "7290:1:5"
},
{
"arguments": [
{
"name": "y",
"nodeType": "YulIdentifier",
"src": "7297:1:5"
}
],
"functionName": {
"name": "not",
"nodeType": "YulIdentifier",
"src": "7293:3:5"
},
"nodeType": "YulFunctionCall",
"src": "7293:6:5"
}
],
"functionName": {
"name": "gt",
"nodeType": "YulIdentifier",
"src": "7287:2:5"
},
"nodeType": "YulFunctionCall",
"src": "7287:13:5"
},
"nodeType": "YulIf",
"src": "7284:136:5"
},
{
"nodeType": "YulAssignment",
"src": "7429:16:5",
"value": {
"arguments": [
{
"name": "x",
"nodeType": "YulIdentifier",
"src": "7440:1:5"
},
{
"name": "y",
"nodeType": "YulIdentifier",
"src": "7443:1:5"
}
],
"functionName": {
"name": "add",
"nodeType": "YulIdentifier",
"src": "7436:3:5"
},
"nodeType": "YulFunctionCall",
"src": "7436:9:5"
},
"variableNames": [
{
"name": "sum",
"nodeType": "YulIdentifier",
"src": "7429:3:5"
}
]
}
]
},
"name": "checked_add_t_uint256",
"nodeType": "YulFunctionDefinition",
"parameters": [
{
"name": "x",
"nodeType": "YulTypedName",
"src": "7257:1:5",
"type": ""
},
{
"name": "y",
"nodeType": "YulTypedName",
"src": "7260:1:5",
"type": ""
}
],
"returnVariables": [
{
"name": "sum",
"nodeType": "YulTypedName",
"src": "7266:3:5",
"type": ""
}
],
"src": "7226:225:5"
},
{
"body": {
"nodeType": "YulBlock",
"src": "7630:228:5",
"statements": [
{
"expression": {
"arguments": [
{
"name": "headStart",
"nodeType": "YulIdentifier",
"src": "7647:9:5"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "7658:2:5",
"type": "",
"value": "32"
}
],
"functionName": {
"name": "mstore",
"nodeType": "YulIdentifier",
"src": "7640:6:5"
},
"nodeType": "YulFunctionCall",
"src": "7640:21:5"
},
"nodeType": "YulExpressionStatement",
"src": "7640:21:5"
},
{
"expression": {
"arguments": [
{
"arguments": [
{
"name": "headStart",
"nodeType": "YulIdentifier",
"src": "7681:9:5"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "7692:2:5",
"type": "",
"value": "32"
}
],
"functionName": {
"name": "add",
"nodeType": "YulIdentifier",
"src": "7677:3:5"
},
"nodeType": "YulFunctionCall",
"src": "7677:18:5"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "7697:2:5",
"type": "",
"value": "38"
}
],
"functionName": {
"name": "mstore",
"nodeType": "YulIdentifier",
"src": "7670:6:5"
},
"nodeType": "YulFunctionCall",
"src": "7670:30:5"
},
"nodeType": "YulExpressionStatement",
"src": "7670:30:5"
},
{
"expression": {
"arguments": [
{
"arguments": [
{
"name": "headStart",
"nodeType": "YulIdentifier",
"src": "7720:9:5"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "7731:2:5",
"type": "",
"value": "64"
}
],
"functionName": {
"name": "add",
"nodeType": "YulIdentifier",
"src": "7716:3:5"
},
"nodeType": "YulFunctionCall",
"src": "7716:18:5"
},
{
"hexValue": "4f776e61626c653a206e6577206f776e657220697320746865207a65726f2061",
"kind": "string",
"nodeType": "YulLiteral",
"src": "7736:34:5",
"type": "",
"value": "Ownable: new owner is the zero a"
}
],
"functionName": {
"name": "mstore",
"nodeType": "YulIdentifier",
"src": "7709:6:5"
},
"nodeType": "YulFunctionCall",
"src": "7709:62:5"
},
"nodeType": "YulExpressionStatement",
"src": "7709:62:5"
},
{
"expression": {
"arguments": [
{
"arguments": [
{
"name": "headStart",
"nodeType": "YulIdentifier",
"src": "7791:9:5"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "7802:2:5",
"type": "",
"value": "96"
}
],
"functionName": {
"name": "add",
"nodeType": "YulIdentifier",
"src": "7787:3:5"
},
"nodeType": "YulFunctionCall",
"src": "7787:18:5"
},
{
"hexValue": "646472657373",
"kind": "string",
"nodeType": "YulLiteral",
"src": "7807:8:5",
"type": "",
"value": "ddress"
}
],
"functionName": {
"name": "mstore",
"nodeType": "YulIdentifier",
"src": "7780:6:5"
},
"nodeType": "YulFunctionCall",
"src": "7780:36:5"
},
"nodeType": "YulExpressionStatement",
"src": "7780:36:5"
},
{
"nodeType": "YulAssignment",
"src": "7825:27:5",
"value": {
"arguments": [
{
"name": "headStart",
"nodeType": "YulIdentifier",
"src": "7837:9:5"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "7848:3:5",
"type": "",
"value": "128"
}
],
"functionName": {
"name": "add",
"nodeType": "YulIdentifier",
"src": "7833:3:5"
},
"nodeType": "YulFunctionCall",
"src": "7833:19:5"
},
"variableNames": [
{
"name": "tail",
"nodeType": "YulIdentifier",
"src": "7825:4:5"
}
]
}
]
},
"name": "abi_encode_tuple_t_stringliteral_245f15ff17f551913a7a18385165551503906a406f905ac1c2437281a7cd0cfe__to_t_string_memory_ptr__fromStack_reversed",
"nodeType": "YulFunctionDefinition",
"parameters": [
{
"name": "headStart",
"nodeType": "YulTypedName",
"src": "7607:9:5",
"type": ""
}
],
"returnVariables": [
{
"name": "tail",
"nodeType": "YulTypedName",
"src": "7621:4:5",
"type": ""
}
],
"src": "7456:402:5"
},
{
"body": {
"nodeType": "YulBlock",
"src": "8037:227:5",
"statements": [
{
"expression": {
"arguments": [
{
"name": "headStart",
"nodeType": "YulIdentifier",
"src": "8054:9:5"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "8065:2:5",
"type": "",
"value": "32"
}
],
"functionName": {
"name": "mstore",
"nodeType": "YulIdentifier",
"src": "8047:6:5"
},
"nodeType": "YulFunctionCall",
"src": "8047:21:5"
},
"nodeType": "YulExpressionStatement",
"src": "8047:21:5"
},
{
"expression": {
"arguments": [
{
"arguments": [
{
"name": "headStart",
"nodeType": "YulIdentifier",
"src": "8088:9:5"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "8099:2:5",
"type": "",
"value": "32"
}
],
"functionName": {
"name": "add",
"nodeType": "YulIdentifier",
"src": "8084:3:5"
},
"nodeType": "YulFunctionCall",
"src": "8084:18:5"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "8104:2:5",
"type": "",
"value": "37"
}
],
"functionName": {
"name": "mstore",
"nodeType": "YulIdentifier",
"src": "8077:6:5"
},
"nodeType": "YulFunctionCall",
"src": "8077:30:5"
},
"nodeType": "YulExpressionStatement",
"src": "8077:30:5"
},
{
"expression": {
"arguments": [
{
"arguments": [
{
"name": "headStart",
"nodeType": "YulIdentifier",
"src": "8127:9:5"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "8138:2:5",
"type": "",
"value": "64"
}
],
"functionName": {
"name": "add",
"nodeType": "YulIdentifier",
"src": "8123:3:5"
},
"nodeType": "YulFunctionCall",
"src": "8123:18:5"
},
{
"hexValue": "45524332303a207472616e736665722066726f6d20746865207a65726f206164",
"kind": "string",
"nodeType": "YulLiteral",
"src": "8143:34:5",
"type": "",
"value": "ERC20: transfer from the zero ad"
}
],
"functionName": {
"name": "mstore",
"nodeType": "YulIdentifier",
"src": "8116:6:5"
},
"nodeType": "YulFunctionCall",
"src": "8116:62:5"
},
"nodeType": "YulExpressionStatement",
"src": "8116:62:5"
},
{
"expression": {
"arguments": [
{
"arguments": [
{
"name": "headStart",
"nodeType": "YulIdentifier",
"src": "8198:9:5"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "8209:2:5",
"type": "",
"value": "96"
}
],
"functionName": {
"name": "add",
"nodeType": "YulIdentifier",
"src": "8194:3:5"
},
"nodeType": "YulFunctionCall",
"src": "8194:18:5"
},
{
"hexValue": "6472657373",
"kind": "string",
"nodeType": "YulLiteral",
"src": "8214:7:5",
"type": "",
"value": "dress"
}
],
"functionName": {
"name": "mstore",
"nodeType": "YulIdentifier",
"src": "8187:6:5"
},
"nodeType": "YulFunctionCall",
"src": "8187:35:5"
},
"nodeType": "YulExpressionStatement",
"src": "8187:35:5"
},
{
"nodeType": "YulAssignment",
"src": "8231:27:5",
"value": {
"arguments": [
{
"name": "headStart",
"nodeType": "YulIdentifier",
"src": "8243:9:5"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "8254:3:5",
"type": "",
"value": "128"
}
],
"functionName": {
"name": "add",
"nodeType": "YulIdentifier",
"src": "8239:3:5"
},
"nodeType": "YulFunctionCall",
"src": "8239:19:5"
},
"variableNames": [
{
"name": "tail",
"nodeType": "YulIdentifier",
"src": "8231:4:5"
}
]
}
]
},
"name": "abi_encode_tuple_t_stringliteral_baecc556b46f4ed0f2b4cb599d60785ac8563dd2dc0a5bf12edea1c39e5e1fea__to_t_string_memory_ptr__fromStack_reversed",
"nodeType": "YulFunctionDefinition",
"parameters": [
{
"name": "headStart",
"nodeType": "YulTypedName",
"src": "8014:9:5",
"type": ""
}
],
"returnVariables": [
{
"name": "tail",
"nodeType": "YulTypedName",
"src": "8028:4:5",
"type": ""
}
],
"src": "7863:401:5"
},
{
"body": {
"nodeType": "YulBlock",
"src": "8443:225:5",
"statements": [
{
"expression": {
"arguments": [
{
"name": "headStart",
"nodeType": "YulIdentifier",
"src": "8460:9:5"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "8471:2:5",
"type": "",
"value": "32"
}
],
"functionName": {
"name": "mstore",
"nodeType": "YulIdentifier",
"src": "8453:6:5"
},
"nodeType": "YulFunctionCall",
"src": "8453:21:5"
},
"nodeType": "YulExpressionStatement",
"src": "8453:21:5"
},
{
"expression": {
"arguments": [
{
"arguments": [
{
"name": "headStart",
"nodeType": "YulIdentifier",
"src": "8494:9:5"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "8505:2:5",
"type": "",
"value": "32"
}
],
"functionName": {
"name": "add",
"nodeType": "YulIdentifier",
"src": "8490:3:5"
},
"nodeType": "YulFunctionCall",
"src": "8490:18:5"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "8510:2:5",
"type": "",
"value": "35"
}
],
"functionName": {
"name": "mstore",
"nodeType": "YulIdentifier",
"src": "8483:6:5"
},
"nodeType": "YulFunctionCall",
"src": "8483:30:5"
},
"nodeType": "YulExpressionStatement",
"src": "8483:30:5"
},
{
"expression": {
"arguments": [
{
"arguments": [
{
"name": "headStart",
"nodeType": "YulIdentifier",
"src": "8533:9:5"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "8544:2:5",
"type": "",
"value": "64"
}
],
"functionName": {
"name": "add",
"nodeType": "YulIdentifier",
"src": "8529:3:5"
},
"nodeType": "YulFunctionCall",
"src": "8529:18:5"
},
{
"hexValue": "45524332303a207472616e7366657220746f20746865207a65726f2061646472",
"kind": "string",
"nodeType": "YulLiteral",
"src": "8549:34:5",
"type": "",
"value": "ERC20: transfer to the zero addr"
}
],
"functionName": {
"name": "mstore",
"nodeType": "YulIdentifier",
"src": "8522:6:5"
},
"nodeType": "YulFunctionCall",
"src": "8522:62:5"
},
"nodeType": "YulExpressionStatement",
"src": "8522:62:5"
},
{
"expression": {
"arguments": [
{
"arguments": [
{
"name": "headStart",
"nodeType": "YulIdentifier",
"src": "8604:9:5"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "8615:2:5",
"type": "",
"value": "96"
}
],
"functionName": {
"name": "add",
"nodeType": "YulIdentifier",
"src": "8600:3:5"
},
"nodeType": "YulFunctionCall",
"src": "8600:18:5"
},
{
"hexValue": "657373",
"kind": "string",
"nodeType": "YulLiteral",
"src": "8620:5:5",
"type": "",
"value": "ess"
}
],
"functionName": {
"name": "mstore",
"nodeType": "YulIdentifier",
"src": "8593:6:5"
},
"nodeType": "YulFunctionCall",
"src": "8593:33:5"
},
"nodeType": "YulExpressionStatement",
"src": "8593:33:5"
},
{
"nodeType": "YulAssignment",
"src": "8635:27:5",
"value": {
"arguments": [
{
"name": "headStart",
"nodeType": "YulIdentifier",
"src": "8647:9:5"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "8658:3:5",
"type": "",
"value": "128"
}
],
"functionName": {
"name": "add",
"nodeType": "YulIdentifier",
"src": "8643:3:5"
},
"nodeType": "YulFunctionCall",
"src": "8643:19:5"
},
"variableNames": [
{
"name": "tail",
"nodeType": "YulIdentifier",
"src": "8635:4:5"
}
]
}
]
},
"name": "abi_encode_tuple_t_stringliteral_0557e210f7a69a685100a7e4e3d0a7024c546085cee28910fd17d0b081d9516f__to_t_string_memory_ptr__fromStack_reversed",
"nodeType": "YulFunctionDefinition",
"parameters": [
{
"name": "headStart",
"nodeType": "YulTypedName",
"src": "8420:9:5",
"type": ""
}
],
"returnVariables": [
{
"name": "tail",
"nodeType": "YulTypedName",
"src": "8434:4:5",
"type": ""
}
],
"src": "8269:399:5"
}
]
},
"contents": "{\n { }\n function abi_decode_tuple_t_uint256(headStart, dataEnd) -> value0\n {\n if slt(sub(dataEnd, headStart), 32) { revert(0, 0) }\n value0 := calldataload(headStart)\n }\n function abi_encode_tuple_t_string_memory_ptr__to_t_string_memory_ptr__fromStack_reversed(headStart, value0) -> tail\n {\n let _1 := 32\n mstore(headStart, _1)\n let length := mload(value0)\n mstore(add(headStart, _1), length)\n let i := 0\n for { } lt(i, length) { i := add(i, _1) }\n {\n mstore(add(add(headStart, i), 64), mload(add(add(value0, i), _1)))\n }\n if gt(i, length)\n {\n mstore(add(add(headStart, length), 64), 0)\n }\n tail := add(add(headStart, and(add(length, 31), not(31))), 64)\n }\n function validator_revert_address(value)\n {\n if iszero(eq(value, and(value, sub(shl(160, 1), 1)))) { revert(0, 0) }\n }\n function abi_decode_tuple_t_addresst_uint256(headStart, dataEnd) -> value0, value1\n {\n if slt(sub(dataEnd, headStart), 64) { revert(0, 0) }\n let value := calldataload(headStart)\n validator_revert_address(value)\n value0 := value\n value1 := calldataload(add(headStart, 32))\n }\n function abi_encode_tuple_t_bool__to_t_bool__fromStack_reversed(headStart, value0) -> tail\n {\n tail := add(headStart, 32)\n mstore(headStart, iszero(iszero(value0)))\n }\n function abi_encode_tuple_t_address__to_t_address__fromStack_reversed(headStart, value0) -> tail\n {\n tail := add(headStart, 32)\n mstore(headStart, and(value0, sub(shl(160, 1), 1)))\n }\n function abi_encode_tuple_t_uint256__to_t_uint256__fromStack_reversed(headStart, value0) -> tail\n {\n tail := add(headStart, 32)\n mstore(headStart, value0)\n }\n function abi_decode_tuple_t_addresst_addresst_uint256(headStart, dataEnd) -> value0, value1, value2\n {\n if slt(sub(dataEnd, headStart), 96) { revert(0, 0) }\n let value := calldataload(headStart)\n validator_revert_address(value)\n value0 := value\n let value_1 := calldataload(add(headStart, 32))\n validator_revert_address(value_1)\n value1 := value_1\n value2 := calldataload(add(headStart, 64))\n }\n function abi_encode_tuple_t_uint8__to_t_uint8__fromStack_reversed(headStart, value0) -> tail\n {\n tail := add(headStart, 32)\n mstore(headStart, and(value0, 0xff))\n }\n function abi_decode_tuple_t_address(headStart, dataEnd) -> value0\n {\n if slt(sub(dataEnd, headStart), 32) { revert(0, 0) }\n let value := calldataload(headStart)\n validator_revert_address(value)\n value0 := value\n }\n function panic_error_0x21()\n {\n mstore(0, shl(224, 0x4e487b71))\n mstore(4, 0x21)\n revert(0, 0x24)\n }\n function abi_encode_tuple_t_address_t_address_t_uint256_t_enum$_transactionState_$727__to_t_address_t_address_t_uint256_t_uint8__fromStack_reversed(headStart, value3, value2, value1, value0) -> tail\n {\n tail := add(headStart, 128)\n let _1 := sub(shl(160, 1), 1)\n mstore(headStart, and(value0, _1))\n mstore(add(headStart, 32), and(value1, _1))\n mstore(add(headStart, 64), value2)\n if iszero(lt(value3, 3))\n {\n mstore(0, shl(224, 0x4e487b71))\n mstore(4, 0x21)\n revert(0, 0x24)\n }\n mstore(add(headStart, 96), value3)\n }\n function abi_decode_tuple_t_addresst_address(headStart, dataEnd) -> value0, value1\n {\n if slt(sub(dataEnd, headStart), 64) { revert(0, 0) }\n let value := calldataload(headStart)\n validator_revert_address(value)\n value0 := value\n let value_1 := calldataload(add(headStart, 32))\n validator_revert_address(value_1)\n value1 := value_1\n }\n function abi_decode_tuple_t_address_payable(headStart, dataEnd) -> value0\n {\n if slt(sub(dataEnd, headStart), 32) { revert(0, 0) }\n let value := calldataload(headStart)\n validator_revert_address(value)\n value0 := value\n }\n function abi_encode_tuple_t_stringliteral_68571e1369f7a6dcdcd736cb0343b35a58ed0f64d245c2ed839c98d412744f8a__to_t_string_memory_ptr__fromStack_reversed(headStart) -> tail\n {\n mstore(headStart, 32)\n mstore(add(headStart, 32), 16)\n mstore(add(headStart, 64), \"Pausable: paused\")\n tail := add(headStart, 96)\n }\n function abi_encode_tuple_t_stringliteral_9924ebdf1add33d25d4ef888e16131f0a5687b0580a36c21b5c301a6c462effe__to_t_string_memory_ptr__fromStack_reversed(headStart) -> tail\n {\n mstore(headStart, 32)\n mstore(add(headStart, 32), 32)\n mstore(add(headStart, 64), \"Ownable: caller is not the owner\")\n tail := add(headStart, 96)\n }\n function abi_encode_tuple_t_stringliteral_fa9bdc579a4d97dca9a0796811b4d662caa2610457642ec6096d99a2f12986c0__to_t_string_memory_ptr__fromStack_reversed(headStart) -> tail\n {\n mstore(headStart, 32)\n mstore(add(headStart, 32), 40)\n mstore(add(headStart, 64), \"WhitneyToken: Transaction does n\")\n mstore(add(headStart, 96), \"ot exist\")\n tail := add(headStart, 128)\n }\n function abi_encode_tuple_t_stringliteral_f61ee3e6b757b1ace2293ab31484417882dac7dc5830b655ca2d0df8898482c8__to_t_string_memory_ptr__fromStack_reversed(headStart) -> tail\n {\n mstore(headStart, 32)\n mstore(add(headStart, 32), 51)\n mstore(add(headStart, 64), \"WhitneyToken: Transaction has al\")\n mstore(add(headStart, 96), \"ready been executed\")\n tail := add(headStart, 128)\n }\n function extract_byte_array_length(data) -> length\n {\n length := shr(1, data)\n let outOfPlaceEncoding := and(data, 1)\n if iszero(outOfPlaceEncoding) { length := and(length, 0x7f) }\n if eq(outOfPlaceEncoding, lt(length, 32))\n {\n mstore(0, shl(224, 0x4e487b71))\n mstore(4, 0x22)\n revert(0, 0x24)\n }\n }\n function abi_encode_tuple_t_stringliteral_0d1d997348c4b502650619e51f7d09f80514d98b6993be5051d07f703984619a__to_t_string_memory_ptr__fromStack_reversed(headStart) -> tail\n {\n mstore(headStart, 32)\n mstore(add(headStart, 32), 20)\n mstore(add(headStart, 64), \"Pausable: not paused\")\n tail := add(headStart, 96)\n }\n function abi_encode_tuple_t_stringliteral_c953f4879035ed60e766b34720f656aab5c697b141d924c283124ecedb91c208__to_t_string_memory_ptr__fromStack_reversed(headStart) -> tail\n {\n mstore(headStart, 32)\n mstore(add(headStart, 32), 36)\n mstore(add(headStart, 64), \"ERC20: approve from the zero add\")\n mstore(add(headStart, 96), \"ress\")\n tail := add(headStart, 128)\n }\n function abi_encode_tuple_t_stringliteral_24883cc5fe64ace9d0df1893501ecb93c77180f0ff69cca79affb3c316dc8029__to_t_string_memory_ptr__fromStack_reversed(headStart) -> tail\n {\n mstore(headStart, 32)\n mstore(add(headStart, 32), 34)\n mstore(add(headStart, 64), \"ERC20: approve to the zero addre\")\n mstore(add(headStart, 96), \"ss\")\n tail := add(headStart, 128)\n }\n function checked_add_t_uint256(x, y) -> sum\n {\n if gt(x, not(y))\n {\n mstore(0, shl(224, 0x4e487b71))\n mstore(4, 0x11)\n revert(0, 0x24)\n }\n sum := add(x, y)\n }\n function abi_encode_tuple_t_stringliteral_245f15ff17f551913a7a18385165551503906a406f905ac1c2437281a7cd0cfe__to_t_string_memory_ptr__fromStack_reversed(headStart) -> tail\n {\n mstore(headStart, 32)\n mstore(add(headStart, 32), 38)\n mstore(add(headStart, 64), \"Ownable: new owner is the zero a\")\n mstore(add(headStart, 96), \"ddress\")\n tail := add(headStart, 128)\n }\n function abi_encode_tuple_t_stringliteral_baecc556b46f4ed0f2b4cb599d60785ac8563dd2dc0a5bf12edea1c39e5e1fea__to_t_string_memory_ptr__fromStack_reversed(headStart) -> tail\n {\n mstore(headStart, 32)\n mstore(add(headStart, 32), 37)\n mstore(add(headStart, 64), \"ERC20: transfer from the zero ad\")\n mstore(add(headStart, 96), \"dress\")\n tail := add(headStart, 128)\n }\n function abi_encode_tuple_t_stringliteral_0557e210f7a69a685100a7e4e3d0a7024c546085cee28910fd17d0b081d9516f__to_t_string_memory_ptr__fromStack_reversed(headStart) -> tail\n {\n mstore(headStart, 32)\n mstore(add(headStart, 32), 35)\n mstore(add(headStart, 64), \"ERC20: transfer to the zero addr\")\n mstore(add(headStart, 96), \"ess\")\n tail := add(headStart, 128)\n }\n}",
"id": 5,
"language": "Yul",
"name": "#utility.yul"
}
],
"immutableReferences": {},
"linkReferences": {},
"object": "608060405234801561001057600080fd5b506004361061014d5760003560e01c8063715018a6116100c3578063a457c2d71161007c578063a457c2d7146102e6578063a9059cbb146102f9578063b9a600381461030c578063c01a8c8414610314578063dd62ed3e14610327578063f2fde38b1461036057600080fd5b8063715018a6146102525780638456cb591461025a5780638da5cb5b146102625780638f32d59b1461027357806395d89b41146102865780639ace38c21461028e57600080fd5b806323b872dd1161011557806323b872dd146101d4578063313ce567146101e757806339509351146101fc5780633f4ba83a1461020f5780635c975abb1461021757806370a082311461022957600080fd5b806305bf37aa1461015257806306fdde0314610167578063095ea7b314610185578063119df25f146101a857806318160ddd146101c2575b600080fd5b610165610160366004610fcc565b610373565b005b61016f61048c565b60405161017c9190610fe5565b60405180910390f35b61019861019336600461104f565b61051e565b604051901515815260200161017c565b335b6040516001600160a01b03909116815260200161017c565b6003545b60405190815260200161017c565b6101986101e236600461107b565b610535565b60045460405160ff909116815260200161017c565b61019861020a36600461104f565b61059f565b6101656105d5565b600054600160a01b900460ff16610198565b6101c66102373660046110bc565b6001600160a01b031660009081526001602052604090205490565b61016561069c565b610165610710565b6000546001600160a01b03166101aa565b6000546001600160a01b03163314610198565b61016f61079f565b6102d661029c366004610fcc565b60009081526007602052604090208054600182015460028301546003909301546001600160a01b039283169492909116929160ff90911690565b60405161017c94939291906110ef565b6101986102f436600461104f565b6107ae565b61019861030736600461104f565b6107fd565b6008546101c6565b610165610322366004610fcc565b61083a565b6101c661033536600461113b565b6001600160a01b03918216600090815260026020908152604080832093909416825291909152205490565b61016561036e3660046110bc565b61094a565b600054600160a01b900460ff16156103a65760405162461bcd60e51b815260040161039d90611174565b60405180910390fd5b6000546001600160a01b031633146103d05760405162461bcd60e51b815260040161039d9061119e565b60008181526007602052604090206001015481906001600160a01b03166104095760405162461bcd60e51b815260040161039d906111d3565b816000808281526007602052604090206003015460ff166002811115610431576104316110d9565b1461044e5760405162461bcd60e51b815260040161039d9061121b565b610459836002610980565b50604051839033907f310fda14a1b3763badba87b2ca73948d00cc14d8fa2d6ee19a67ac90fa9afa6790600090a3505050565b60606005805461049b9061126e565b80601f01602080910402602001604051908101604052809291908181526020018280546104c79061126e565b80156105145780601f106104e957610100808354040283529160200191610514565b820191906000526020600020905b8154815290600101906020018083116104f757829003601f168201915b5050505050905090565b600061052b338484610af7565b5060015b92915050565b6000610542848484610c1b565b506105958433610590856040518060600160405280602881526020016112f6602891396001600160a01b038a1660009081526002602090815260408083203384529091529020549190610c3f565b610af7565b5060019392505050565b3360008181526002602090815260408083206001600160a01b0387168452909152812054909161052b9185906105909086610c6b565b6000546001600160a01b031633146105ff5760405162461bcd60e51b815260040161039d9061119e565b600054600160a01b900460ff1661064f5760405162461bcd60e51b815260206004820152601460248201527314185d5cd8589b194e881b9bdd081c185d5cd95960621b604482015260640161039d565b6000805460ff60a01b191690557f5db9ee0a495bf2e6ff9c91a7834c1ba4fdd244a5e8aa4e537bd38aeae4b073aa335b6040516001600160a01b03909116815260200160405180910390a1565b6000546001600160a01b031633146106c65760405162461bcd60e51b815260040161039d9061119e565b600080546040516001600160a01b03909116907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908390a3600080546001600160a01b0319169055565b6000546001600160a01b0316331461073a5760405162461bcd60e51b815260040161039d9061119e565b600054600160a01b900460ff16156107645760405162461bcd60e51b815260040161039d90611174565b6000805460ff60a01b1916600160a01b1790557f62e78cea01bee320cd4e420270b5ea74000d11b0c9f74754ebdbfc544b05a25861067f3390565b60606006805461049b9061126e565b600061052b33846105908560405180606001604052806025815260200161131e602591393360009081526002602090815260408083206001600160a01b038d1684529091529020549190610c3f565b60008054600160a01b900460ff16156108285760405162461bcd60e51b815260040161039d90611174565b610833338484610c1b565b9392505050565b600054600160a01b900460ff16156108645760405162461bcd60e51b815260040161039d90611174565b6000546001600160a01b0316331461088e5760405162461bcd60e51b815260040161039d9061119e565b60008181526007602052604090206001015481906001600160a01b03166108c75760405162461bcd60e51b815260040161039d906111d3565b816000808281526007602052604090206003015460ff1660028111156108ef576108ef6110d9565b1461090c5760405162461bcd60e51b815260040161039d9061121b565b610917836001610980565b50604051839033907f4a504a94899432a9846e1aa406dceb1bcfd538bb839071d49d1e5e23f5be30ef90600090a3505050565b6000546001600160a01b031633146109745760405162461bcd60e51b815260040161039d9061119e565b61097d81610c77565b50565b6000828152600760209081526040808320815160808101835281546001600160a01b03908116825260018301541693810193909352600280820154928401929092526003810154849392606084019160ff16908111156109e2576109e26110d9565b60028111156109f3576109f36110d9565b905250905060608101836002811115610a0e57610a0e6110d9565b90816002811115610a2157610a216110d9565b905250600084815260076020908152604091829020835181546001600160a01b039182166001600160a01b0319918216178355928501516001808401805492909316919094161790559183015160028084019190915560608401516003840180548695949293919260ff19909116918490811115610aa157610aa16110d9565b021790555060019150610ab19050565b836002811115610ac357610ac36110d9565b1415610ae457610adc3082602001518360400151610d37565b91505061052f565b610adc3082600001518360400151610d37565b6001600160a01b038316610b595760405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f206164646044820152637265737360e01b606482015260840161039d565b6001600160a01b038216610bba5760405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f206164647265604482015261737360f01b606482015260840161039d565b6001600160a01b0383811660008181526002602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b6000610c28843084610d37565b50610c34848484610ed1565b506001949350505050565b60008184841115610c635760405162461bcd60e51b815260040161039d9190610fe5565b505050900390565b600061083382846112a9565b6001600160a01b038116610cdc5760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b606482015260840161039d565b600080546040516001600160a01b03808516939216917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e091a3600080546001600160a01b0319166001600160a01b0392909216919091179055565b60006001600160a01b038416610d9d5760405162461bcd60e51b815260206004820152602560248201527f45524332303a207472616e736665722066726f6d20746865207a65726f206164604482015264647265737360d81b606482015260840161039d565b6001600160a01b038316610dff5760405162461bcd60e51b815260206004820152602360248201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260448201526265737360e81b606482015260840161039d565b610e3c826040518060600160405280602681526020016112d0602691396001600160a01b0387166000908152600160205260409020549190610c3f565b6001600160a01b038086166000908152600160205260408082209390935590851681522054610e6b9083610c6b565b6001600160a01b0380851660008181526001602052604090819020939093559151908616907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef90610ebf9086815260200190565b60405180910390a35060019392505050565b600854604080516080810182526001600160a01b038087168252851660208201529081018390526060810160009052600082815260076020908152604091829020835181546001600160a01b039182166001600160a01b0319918216178355928501516001808401805492909316919094161790559183015160028084019190915560608401516003840180549193909260ff19909216918490811115610f7a57610f7a6110d9565b0217905550905050600160086000828254610f9591906112a9565b909155505060405181907fc0ba8fe4b176c1714197d43b9cc6bcf797a4a7461c5fe8d0ef6e184ae7601e5190600090a29392505050565b600060208284031215610fde57600080fd5b5035919050565b600060208083528351808285015260005b8181101561101257858101830151858201604001528201610ff6565b81811115611024576000604083870101525b50601f01601f1916929092016040019392505050565b6001600160a01b038116811461097d57600080fd5b6000806040838503121561106257600080fd5b823561106d8161103a565b946020939093013593505050565b60008060006060848603121561109057600080fd5b833561109b8161103a565b925060208401356110ab8161103a565b929592945050506040919091013590565b6000602082840312156110ce57600080fd5b81356108338161103a565b634e487b7160e01b600052602160045260246000fd5b6001600160a01b0385811682528416602082015260408101839052608081016003831061112c57634e487b7160e01b600052602160045260246000fd5b82606083015295945050505050565b6000806040838503121561114e57600080fd5b82356111598161103a565b915060208301356111698161103a565b809150509250929050565b60208082526010908201526f14185d5cd8589b194e881c185d5cd95960821b604082015260600190565b6020808252818101527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604082015260600190565b60208082526028908201527f576869746e6579546f6b656e3a205472616e73616374696f6e20646f6573206e6040820152671bdd08195e1a5cdd60c21b606082015260800190565b60208082526033908201527f576869746e6579546f6b656e3a205472616e73616374696f6e2068617320616c6040820152721c9958591e481899595b88195e1958dd5d1959606a1b606082015260800190565b600181811c9082168061128257607f821691505b602082108114156112a357634e487b7160e01b600052602260045260246000fd5b50919050565b600082198211156112ca57634e487b7160e01b600052601160045260246000fd5b50019056fe45524332303a207472616e7366657220616d6f756e7420657863656564732062616c616e636545524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e636545524332303a2064656372656173656420616c6c6f77616e63652062656c6f77207a65726fa26469706673582212209c85f1b49146b725d71eaad76b4738a0061e8728b62de672488df4a0f3a864e064736f6c63430008080033",
"opcodes": "PUSH1 0x80 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH2 0x10 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x4 CALLDATASIZE LT PUSH2 0x14D JUMPI PUSH1 0x0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0x715018A6 GT PUSH2 0xC3 JUMPI DUP1 PUSH4 0xA457C2D7 GT PUSH2 0x7C JUMPI DUP1 PUSH4 0xA457C2D7 EQ PUSH2 0x2E6 JUMPI DUP1 PUSH4 0xA9059CBB EQ PUSH2 0x2F9 JUMPI DUP1 PUSH4 0xB9A60038 EQ PUSH2 0x30C JUMPI DUP1 PUSH4 0xC01A8C84 EQ PUSH2 0x314 JUMPI DUP1 PUSH4 0xDD62ED3E EQ PUSH2 0x327 JUMPI DUP1 PUSH4 0xF2FDE38B EQ PUSH2 0x360 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 PUSH4 0x715018A6 EQ PUSH2 0x252 JUMPI DUP1 PUSH4 0x8456CB59 EQ PUSH2 0x25A JUMPI DUP1 PUSH4 0x8DA5CB5B EQ PUSH2 0x262 JUMPI DUP1 PUSH4 0x8F32D59B EQ PUSH2 0x273 JUMPI DUP1 PUSH4 0x95D89B41 EQ PUSH2 0x286 JUMPI DUP1 PUSH4 0x9ACE38C2 EQ PUSH2 0x28E JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 PUSH4 0x23B872DD GT PUSH2 0x115 JUMPI DUP1 PUSH4 0x23B872DD EQ PUSH2 0x1D4 JUMPI DUP1 PUSH4 0x313CE567 EQ PUSH2 0x1E7 JUMPI DUP1 PUSH4 0x39509351 EQ PUSH2 0x1FC JUMPI DUP1 PUSH4 0x3F4BA83A EQ PUSH2 0x20F JUMPI DUP1 PUSH4 0x5C975ABB EQ PUSH2 0x217 JUMPI DUP1 PUSH4 0x70A08231 EQ PUSH2 0x229 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 PUSH4 0x5BF37AA EQ PUSH2 0x152 JUMPI DUP1 PUSH4 0x6FDDE03 EQ PUSH2 0x167 JUMPI DUP1 PUSH4 0x95EA7B3 EQ PUSH2 0x185 JUMPI DUP1 PUSH4 0x119DF25F EQ PUSH2 0x1A8 JUMPI DUP1 PUSH4 0x18160DDD EQ PUSH2 0x1C2 JUMPI JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x165 PUSH2 0x160 CALLDATASIZE PUSH1 0x4 PUSH2 0xFCC JUMP JUMPDEST PUSH2 0x373 JUMP JUMPDEST STOP JUMPDEST PUSH2 0x16F PUSH2 0x48C JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x17C SWAP2 SWAP1 PUSH2 0xFE5 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0x198 PUSH2 0x193 CALLDATASIZE PUSH1 0x4 PUSH2 0x104F JUMP JUMPDEST PUSH2 0x51E JUMP JUMPDEST PUSH1 0x40 MLOAD SWAP1 ISZERO ISZERO DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0x17C JUMP JUMPDEST CALLER JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 SWAP2 AND DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0x17C JUMP JUMPDEST PUSH1 0x3 SLOAD JUMPDEST PUSH1 0x40 MLOAD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0x17C JUMP JUMPDEST PUSH2 0x198 PUSH2 0x1E2 CALLDATASIZE PUSH1 0x4 PUSH2 0x107B JUMP JUMPDEST PUSH2 0x535 JUMP JUMPDEST PUSH1 0x4 SLOAD PUSH1 0x40 MLOAD PUSH1 0xFF SWAP1 SWAP2 AND DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0x17C JUMP JUMPDEST PUSH2 0x198 PUSH2 0x20A CALLDATASIZE PUSH1 0x4 PUSH2 0x104F JUMP JUMPDEST PUSH2 0x59F JUMP JUMPDEST PUSH2 0x165 PUSH2 0x5D5 JUMP JUMPDEST PUSH1 0x0 SLOAD PUSH1 0x1 PUSH1 0xA0 SHL SWAP1 DIV PUSH1 0xFF AND PUSH2 0x198 JUMP JUMPDEST PUSH2 0x1C6 PUSH2 0x237 CALLDATASIZE PUSH1 0x4 PUSH2 0x10BC JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x1 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD SWAP1 JUMP JUMPDEST PUSH2 0x165 PUSH2 0x69C JUMP JUMPDEST PUSH2 0x165 PUSH2 0x710 JUMP JUMPDEST PUSH1 0x0 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0x1AA JUMP JUMPDEST PUSH1 0x0 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND CALLER EQ PUSH2 0x198 JUMP JUMPDEST PUSH2 0x16F PUSH2 0x79F JUMP JUMPDEST PUSH2 0x2D6 PUSH2 0x29C CALLDATASIZE PUSH1 0x4 PUSH2 0xFCC JUMP JUMPDEST PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x7 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 DUP1 SLOAD PUSH1 0x1 DUP3 ADD SLOAD PUSH1 0x2 DUP4 ADD SLOAD PUSH1 0x3 SWAP1 SWAP4 ADD SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP3 DUP4 AND SWAP5 SWAP3 SWAP1 SWAP2 AND SWAP3 SWAP2 PUSH1 0xFF SWAP1 SWAP2 AND SWAP1 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x17C SWAP5 SWAP4 SWAP3 SWAP2 SWAP1 PUSH2 0x10EF JUMP JUMPDEST PUSH2 0x198 PUSH2 0x2F4 CALLDATASIZE PUSH1 0x4 PUSH2 0x104F JUMP JUMPDEST PUSH2 0x7AE JUMP JUMPDEST PUSH2 0x198 PUSH2 0x307 CALLDATASIZE PUSH1 0x4 PUSH2 0x104F JUMP JUMPDEST PUSH2 0x7FD JUMP JUMPDEST PUSH1 0x8 SLOAD PUSH2 0x1C6 JUMP JUMPDEST PUSH2 0x165 PUSH2 0x322 CALLDATASIZE PUSH1 0x4 PUSH2 0xFCC JUMP JUMPDEST PUSH2 0x83A JUMP JUMPDEST PUSH2 0x1C6 PUSH2 0x335 CALLDATASIZE PUSH1 0x4 PUSH2 0x113B JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP2 DUP3 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x2 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 SWAP4 SWAP1 SWAP5 AND DUP3 MSTORE SWAP2 SWAP1 SWAP2 MSTORE KECCAK256 SLOAD SWAP1 JUMP JUMPDEST PUSH2 0x165 PUSH2 0x36E CALLDATASIZE PUSH1 0x4 PUSH2 0x10BC JUMP JUMPDEST PUSH2 0x94A JUMP JUMPDEST PUSH1 0x0 SLOAD PUSH1 0x1 PUSH1 0xA0 SHL SWAP1 DIV PUSH1 0xFF AND ISZERO PUSH2 0x3A6 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x39D SWAP1 PUSH2 0x1174 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x0 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND CALLER EQ PUSH2 0x3D0 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x39D SWAP1 PUSH2 0x119E JUMP JUMPDEST PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0x7 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 PUSH1 0x1 ADD SLOAD DUP2 SWAP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0x409 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x39D SWAP1 PUSH2 0x11D3 JUMP JUMPDEST DUP2 PUSH1 0x0 DUP1 DUP3 DUP2 MSTORE PUSH1 0x7 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 PUSH1 0x3 ADD SLOAD PUSH1 0xFF AND PUSH1 0x2 DUP2 GT ISZERO PUSH2 0x431 JUMPI PUSH2 0x431 PUSH2 0x10D9 JUMP JUMPDEST EQ PUSH2 0x44E JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x39D SWAP1 PUSH2 0x121B JUMP JUMPDEST PUSH2 0x459 DUP4 PUSH1 0x2 PUSH2 0x980 JUMP JUMPDEST POP PUSH1 0x40 MLOAD DUP4 SWAP1 CALLER SWAP1 PUSH32 0x310FDA14A1B3763BADBA87B2CA73948D00CC14D8FA2D6EE19A67AC90FA9AFA67 SWAP1 PUSH1 0x0 SWAP1 LOG3 POP POP POP JUMP JUMPDEST PUSH1 0x60 PUSH1 0x5 DUP1 SLOAD PUSH2 0x49B SWAP1 PUSH2 0x126E JUMP JUMPDEST DUP1 PUSH1 0x1F ADD PUSH1 0x20 DUP1 SWAP2 DIV MUL PUSH1 0x20 ADD PUSH1 0x40 MLOAD SWAP1 DUP2 ADD PUSH1 0x40 MSTORE DUP1 SWAP3 SWAP2 SWAP1 DUP2 DUP2 MSTORE PUSH1 0x20 ADD DUP3 DUP1 SLOAD PUSH2 0x4C7 SWAP1 PUSH2 0x126E JUMP JUMPDEST DUP1 ISZERO PUSH2 0x514 JUMPI DUP1 PUSH1 0x1F LT PUSH2 0x4E9 JUMPI PUSH2 0x100 DUP1 DUP4 SLOAD DIV MUL DUP4 MSTORE SWAP2 PUSH1 0x20 ADD SWAP2 PUSH2 0x514 JUMP JUMPDEST DUP3 ADD SWAP2 SWAP1 PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 KECCAK256 SWAP1 JUMPDEST DUP2 SLOAD DUP2 MSTORE SWAP1 PUSH1 0x1 ADD SWAP1 PUSH1 0x20 ADD DUP1 DUP4 GT PUSH2 0x4F7 JUMPI DUP3 SWAP1 SUB PUSH1 0x1F AND DUP3 ADD SWAP2 JUMPDEST POP POP POP POP POP SWAP1 POP SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x52B CALLER DUP5 DUP5 PUSH2 0xAF7 JUMP JUMPDEST POP PUSH1 0x1 JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x542 DUP5 DUP5 DUP5 PUSH2 0xC1B JUMP JUMPDEST POP PUSH2 0x595 DUP5 CALLER PUSH2 0x590 DUP6 PUSH1 0x40 MLOAD DUP1 PUSH1 0x60 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x28 DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0x12F6 PUSH1 0x28 SWAP2 CODECOPY PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP11 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x2 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 CALLER DUP5 MSTORE SWAP1 SWAP2 MSTORE SWAP1 KECCAK256 SLOAD SWAP2 SWAP1 PUSH2 0xC3F JUMP JUMPDEST PUSH2 0xAF7 JUMP JUMPDEST POP PUSH1 0x1 SWAP4 SWAP3 POP POP POP JUMP JUMPDEST CALLER PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0x2 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP8 AND DUP5 MSTORE SWAP1 SWAP2 MSTORE DUP2 KECCAK256 SLOAD SWAP1 SWAP2 PUSH2 0x52B SWAP2 DUP6 SWAP1 PUSH2 0x590 SWAP1 DUP7 PUSH2 0xC6B JUMP JUMPDEST PUSH1 0x0 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND CALLER EQ PUSH2 0x5FF JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x39D SWAP1 PUSH2 0x119E JUMP JUMPDEST PUSH1 0x0 SLOAD PUSH1 0x1 PUSH1 0xA0 SHL SWAP1 DIV PUSH1 0xFF AND PUSH2 0x64F JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x14 PUSH1 0x24 DUP3 ADD MSTORE PUSH20 0x14185D5CD8589B194E881B9BDD081C185D5CD959 PUSH1 0x62 SHL PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 ADD PUSH2 0x39D JUMP JUMPDEST PUSH1 0x0 DUP1 SLOAD PUSH1 0xFF PUSH1 0xA0 SHL NOT AND SWAP1 SSTORE PUSH32 0x5DB9EE0A495BF2E6FF9C91A7834C1BA4FDD244A5E8AA4E537BD38AEAE4B073AA CALLER JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 SWAP2 AND DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG1 JUMP JUMPDEST PUSH1 0x0 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND CALLER EQ PUSH2 0x6C6 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x39D SWAP1 PUSH2 0x119E JUMP JUMPDEST PUSH1 0x0 DUP1 SLOAD PUSH1 0x40 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 SWAP2 AND SWAP1 PUSH32 0x8BE0079C531659141344CD1FD0A4F28419497F9722A3DAAFE3B4186F6B6457E0 SWAP1 DUP4 SWAP1 LOG3 PUSH1 0x0 DUP1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB NOT AND SWAP1 SSTORE JUMP JUMPDEST PUSH1 0x0 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND CALLER EQ PUSH2 0x73A JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x39D SWAP1 PUSH2 0x119E JUMP JUMPDEST PUSH1 0x0 SLOAD PUSH1 0x1 PUSH1 0xA0 SHL SWAP1 DIV PUSH1 0xFF AND ISZERO PUSH2 0x764 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x39D SWAP1 PUSH2 0x1174 JUMP JUMPDEST PUSH1 0x0 DUP1 SLOAD PUSH1 0xFF PUSH1 0xA0 SHL NOT AND PUSH1 0x1 PUSH1 0xA0 SHL OR SWAP1 SSTORE PUSH32 0x62E78CEA01BEE320CD4E420270B5EA74000D11B0C9F74754EBDBFC544B05A258 PUSH2 0x67F CALLER SWAP1 JUMP JUMPDEST PUSH1 0x60 PUSH1 0x6 DUP1 SLOAD PUSH2 0x49B SWAP1 PUSH2 0x126E JUMP JUMPDEST PUSH1 0x0 PUSH2 0x52B CALLER DUP5 PUSH2 0x590 DUP6 PUSH1 0x40 MLOAD DUP1 PUSH1 0x60 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x25 DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0x131E PUSH1 0x25 SWAP2 CODECOPY CALLER PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x2 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP14 AND DUP5 MSTORE SWAP1 SWAP2 MSTORE SWAP1 KECCAK256 SLOAD SWAP2 SWAP1 PUSH2 0xC3F JUMP JUMPDEST PUSH1 0x0 DUP1 SLOAD PUSH1 0x1 PUSH1 0xA0 SHL SWAP1 DIV PUSH1 0xFF AND ISZERO PUSH2 0x828 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x39D SWAP1 PUSH2 0x1174 JUMP JUMPDEST PUSH2 0x833 CALLER DUP5 DUP5 PUSH2 0xC1B JUMP JUMPDEST SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x0 SLOAD PUSH1 0x1 PUSH1 0xA0 SHL SWAP1 DIV PUSH1 0xFF AND ISZERO PUSH2 0x864 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x39D SWAP1 PUSH2 0x1174 JUMP JUMPDEST PUSH1 0x0 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND CALLER EQ PUSH2 0x88E JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x39D SWAP1 PUSH2 0x119E JUMP JUMPDEST PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0x7 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 PUSH1 0x1 ADD SLOAD DUP2 SWAP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0x8C7 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x39D SWAP1 PUSH2 0x11D3 JUMP JUMPDEST DUP2 PUSH1 0x0 DUP1 DUP3 DUP2 MSTORE PUSH1 0x7 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 PUSH1 0x3 ADD SLOAD PUSH1 0xFF AND PUSH1 0x2 DUP2 GT ISZERO PUSH2 0x8EF JUMPI PUSH2 0x8EF PUSH2 0x10D9 JUMP JUMPDEST EQ PUSH2 0x90C JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x39D SWAP1 PUSH2 0x121B JUMP JUMPDEST PUSH2 0x917 DUP4 PUSH1 0x1 PUSH2 0x980 JUMP JUMPDEST POP PUSH1 0x40 MLOAD DUP4 SWAP1 CALLER SWAP1 PUSH32 0x4A504A94899432A9846E1AA406DCEB1BCFD538BB839071D49D1E5E23F5BE30EF SWAP1 PUSH1 0x0 SWAP1 LOG3 POP POP POP JUMP JUMPDEST PUSH1 0x0 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND CALLER EQ PUSH2 0x974 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x39D SWAP1 PUSH2 0x119E JUMP JUMPDEST PUSH2 0x97D DUP2 PUSH2 0xC77 JUMP JUMPDEST POP JUMP JUMPDEST PUSH1 0x0 DUP3 DUP2 MSTORE PUSH1 0x7 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 DUP2 MLOAD PUSH1 0x80 DUP2 ADD DUP4 MSTORE DUP2 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 DUP2 AND DUP3 MSTORE PUSH1 0x1 DUP4 ADD SLOAD AND SWAP4 DUP2 ADD SWAP4 SWAP1 SWAP4 MSTORE PUSH1 0x2 DUP1 DUP3 ADD SLOAD SWAP3 DUP5 ADD SWAP3 SWAP1 SWAP3 MSTORE PUSH1 0x3 DUP2 ADD SLOAD DUP5 SWAP4 SWAP3 PUSH1 0x60 DUP5 ADD SWAP2 PUSH1 0xFF AND SWAP1 DUP2 GT ISZERO PUSH2 0x9E2 JUMPI PUSH2 0x9E2 PUSH2 0x10D9 JUMP JUMPDEST PUSH1 0x2 DUP2 GT ISZERO PUSH2 0x9F3 JUMPI PUSH2 0x9F3 PUSH2 0x10D9 JUMP JUMPDEST SWAP1 MSTORE POP SWAP1 POP PUSH1 0x60 DUP2 ADD DUP4 PUSH1 0x2 DUP2 GT ISZERO PUSH2 0xA0E JUMPI PUSH2 0xA0E PUSH2 0x10D9 JUMP JUMPDEST SWAP1 DUP2 PUSH1 0x2 DUP2 GT ISZERO PUSH2 0xA21 JUMPI PUSH2 0xA21 PUSH2 0x10D9 JUMP JUMPDEST SWAP1 MSTORE POP PUSH1 0x0 DUP5 DUP2 MSTORE PUSH1 0x7 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 SWAP2 DUP3 SWAP1 KECCAK256 DUP4 MLOAD DUP2 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP2 DUP3 AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB NOT SWAP2 DUP3 AND OR DUP4 SSTORE SWAP3 DUP6 ADD MLOAD PUSH1 0x1 DUP1 DUP5 ADD DUP1 SLOAD SWAP3 SWAP1 SWAP4 AND SWAP2 SWAP1 SWAP5 AND OR SWAP1 SSTORE SWAP2 DUP4 ADD MLOAD PUSH1 0x2 DUP1 DUP5 ADD SWAP2 SWAP1 SWAP2 SSTORE PUSH1 0x60 DUP5 ADD MLOAD PUSH1 0x3 DUP5 ADD DUP1 SLOAD DUP7 SWAP6 SWAP5 SWAP3 SWAP4 SWAP2 SWAP3 PUSH1 0xFF NOT SWAP1 SWAP2 AND SWAP2 DUP5 SWAP1 DUP2 GT ISZERO PUSH2 0xAA1 JUMPI PUSH2 0xAA1 PUSH2 0x10D9 JUMP JUMPDEST MUL OR SWAP1 SSTORE POP PUSH1 0x1 SWAP2 POP PUSH2 0xAB1 SWAP1 POP JUMP JUMPDEST DUP4 PUSH1 0x2 DUP2 GT ISZERO PUSH2 0xAC3 JUMPI PUSH2 0xAC3 PUSH2 0x10D9 JUMP JUMPDEST EQ ISZERO PUSH2 0xAE4 JUMPI PUSH2 0xADC ADDRESS DUP3 PUSH1 0x20 ADD MLOAD DUP4 PUSH1 0x40 ADD MLOAD PUSH2 0xD37 JUMP JUMPDEST SWAP2 POP POP PUSH2 0x52F JUMP JUMPDEST PUSH2 0xADC ADDRESS DUP3 PUSH1 0x0 ADD MLOAD DUP4 PUSH1 0x40 ADD MLOAD PUSH2 0xD37 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP4 AND PUSH2 0xB59 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x24 DUP1 DUP3 ADD MSTORE PUSH32 0x45524332303A20617070726F76652066726F6D20746865207A65726F20616464 PUSH1 0x44 DUP3 ADD MSTORE PUSH4 0x72657373 PUSH1 0xE0 SHL PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 ADD PUSH2 0x39D JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP3 AND PUSH2 0xBBA JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x22 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x45524332303A20617070726F766520746F20746865207A65726F206164647265 PUSH1 0x44 DUP3 ADD MSTORE PUSH2 0x7373 PUSH1 0xF0 SHL PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 ADD PUSH2 0x39D JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP4 DUP2 AND PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0x2 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 SWAP5 DUP8 AND DUP1 DUP5 MSTORE SWAP5 DUP3 MSTORE SWAP2 DUP3 SWAP1 KECCAK256 DUP6 SWAP1 SSTORE SWAP1 MLOAD DUP5 DUP2 MSTORE PUSH32 0x8C5BE1E5EBEC7D5BD14F71427D1E84F3DD0314C0F7B2291E5B200AC8C7C3B925 SWAP2 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG3 POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0xC28 DUP5 ADDRESS DUP5 PUSH2 0xD37 JUMP JUMPDEST POP PUSH2 0xC34 DUP5 DUP5 DUP5 PUSH2 0xED1 JUMP JUMPDEST POP PUSH1 0x1 SWAP5 SWAP4 POP POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP2 DUP5 DUP5 GT ISZERO PUSH2 0xC63 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x39D SWAP2 SWAP1 PUSH2 0xFE5 JUMP JUMPDEST POP POP POP SWAP1 SUB SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x833 DUP3 DUP5 PUSH2 0x12A9 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND PUSH2 0xCDC JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x26 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x4F776E61626C653A206E6577206F776E657220697320746865207A65726F2061 PUSH1 0x44 DUP3 ADD MSTORE PUSH6 0x646472657373 PUSH1 0xD0 SHL PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 ADD PUSH2 0x39D JUMP JUMPDEST PUSH1 0x0 DUP1 SLOAD PUSH1 0x40 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP1 DUP6 AND SWAP4 SWAP3 AND SWAP2 PUSH32 0x8BE0079C531659141344CD1FD0A4F28419497F9722A3DAAFE3B4186F6B6457E0 SWAP2 LOG3 PUSH1 0x0 DUP1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB NOT AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP3 SWAP1 SWAP3 AND SWAP2 SWAP1 SWAP2 OR SWAP1 SSTORE JUMP JUMPDEST PUSH1 0x0 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP5 AND PUSH2 0xD9D JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x25 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x45524332303A207472616E736665722066726F6D20746865207A65726F206164 PUSH1 0x44 DUP3 ADD MSTORE PUSH5 0x6472657373 PUSH1 0xD8 SHL PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 ADD PUSH2 0x39D JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP4 AND PUSH2 0xDFF JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x23 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x45524332303A207472616E7366657220746F20746865207A65726F2061646472 PUSH1 0x44 DUP3 ADD MSTORE PUSH3 0x657373 PUSH1 0xE8 SHL PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 ADD PUSH2 0x39D JUMP JUMPDEST PUSH2 0xE3C DUP3 PUSH1 0x40 MLOAD DUP1 PUSH1 0x60 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x26 DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0x12D0 PUSH1 0x26 SWAP2 CODECOPY PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP8 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x1 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD SWAP2 SWAP1 PUSH2 0xC3F JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP1 DUP7 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x1 PUSH1 0x20 MSTORE PUSH1 0x40 DUP1 DUP3 KECCAK256 SWAP4 SWAP1 SWAP4 SSTORE SWAP1 DUP6 AND DUP2 MSTORE KECCAK256 SLOAD PUSH2 0xE6B SWAP1 DUP4 PUSH2 0xC6B JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP1 DUP6 AND PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0x1 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 DUP2 SWAP1 KECCAK256 SWAP4 SWAP1 SWAP4 SSTORE SWAP2 MLOAD SWAP1 DUP7 AND SWAP1 PUSH32 0xDDF252AD1BE2C89B69C2B068FC378DAA952BA7F163C4A11628F55A4DF523B3EF SWAP1 PUSH2 0xEBF SWAP1 DUP7 DUP2 MSTORE PUSH1 0x20 ADD SWAP1 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG3 POP PUSH1 0x1 SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x8 SLOAD PUSH1 0x40 DUP1 MLOAD PUSH1 0x80 DUP2 ADD DUP3 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP1 DUP8 AND DUP3 MSTORE DUP6 AND PUSH1 0x20 DUP3 ADD MSTORE SWAP1 DUP2 ADD DUP4 SWAP1 MSTORE PUSH1 0x60 DUP2 ADD PUSH1 0x0 SWAP1 MSTORE PUSH1 0x0 DUP3 DUP2 MSTORE PUSH1 0x7 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 SWAP2 DUP3 SWAP1 KECCAK256 DUP4 MLOAD DUP2 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP2 DUP3 AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB NOT SWAP2 DUP3 AND OR DUP4 SSTORE SWAP3 DUP6 ADD MLOAD PUSH1 0x1 DUP1 DUP5 ADD DUP1 SLOAD SWAP3 SWAP1 SWAP4 AND SWAP2 SWAP1 SWAP5 AND OR SWAP1 SSTORE SWAP2 DUP4 ADD MLOAD PUSH1 0x2 DUP1 DUP5 ADD SWAP2 SWAP1 SWAP2 SSTORE PUSH1 0x60 DUP5 ADD MLOAD PUSH1 0x3 DUP5 ADD DUP1 SLOAD SWAP2 SWAP4 SWAP1 SWAP3 PUSH1 0xFF NOT SWAP1 SWAP3 AND SWAP2 DUP5 SWAP1 DUP2 GT ISZERO PUSH2 0xF7A JUMPI PUSH2 0xF7A PUSH2 0x10D9 JUMP JUMPDEST MUL OR SWAP1 SSTORE POP SWAP1 POP POP PUSH1 0x1 PUSH1 0x8 PUSH1 0x0 DUP3 DUP3 SLOAD PUSH2 0xF95 SWAP2 SWAP1 PUSH2 0x12A9 JUMP JUMPDEST SWAP1 SWAP2 SSTORE POP POP PUSH1 0x40 MLOAD DUP2 SWAP1 PUSH32 0xC0BA8FE4B176C1714197D43B9CC6BCF797A4A7461C5FE8D0EF6E184AE7601E51 SWAP1 PUSH1 0x0 SWAP1 LOG2 SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0xFDE JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP1 DUP4 MSTORE DUP4 MLOAD DUP1 DUP3 DUP6 ADD MSTORE PUSH1 0x0 JUMPDEST DUP2 DUP2 LT ISZERO PUSH2 0x1012 JUMPI DUP6 DUP2 ADD DUP4 ADD MLOAD DUP6 DUP3 ADD PUSH1 0x40 ADD MSTORE DUP3 ADD PUSH2 0xFF6 JUMP JUMPDEST DUP2 DUP2 GT ISZERO PUSH2 0x1024 JUMPI PUSH1 0x0 PUSH1 0x40 DUP4 DUP8 ADD ADD MSTORE JUMPDEST POP PUSH1 0x1F ADD PUSH1 0x1F NOT AND SWAP3 SWAP1 SWAP3 ADD PUSH1 0x40 ADD SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND DUP2 EQ PUSH2 0x97D JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH2 0x1062 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 CALLDATALOAD PUSH2 0x106D DUP2 PUSH2 0x103A JUMP JUMPDEST SWAP5 PUSH1 0x20 SWAP4 SWAP1 SWAP4 ADD CALLDATALOAD SWAP4 POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 PUSH1 0x60 DUP5 DUP7 SUB SLT ISZERO PUSH2 0x1090 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP4 CALLDATALOAD PUSH2 0x109B DUP2 PUSH2 0x103A JUMP JUMPDEST SWAP3 POP PUSH1 0x20 DUP5 ADD CALLDATALOAD PUSH2 0x10AB DUP2 PUSH2 0x103A JUMP JUMPDEST SWAP3 SWAP6 SWAP3 SWAP5 POP POP POP PUSH1 0x40 SWAP2 SWAP1 SWAP2 ADD CALLDATALOAD SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x10CE JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 CALLDATALOAD PUSH2 0x833 DUP2 PUSH2 0x103A JUMP JUMPDEST PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH1 0x0 MSTORE PUSH1 0x21 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP6 DUP2 AND DUP3 MSTORE DUP5 AND PUSH1 0x20 DUP3 ADD MSTORE PUSH1 0x40 DUP2 ADD DUP4 SWAP1 MSTORE PUSH1 0x80 DUP2 ADD PUSH1 0x3 DUP4 LT PUSH2 0x112C JUMPI PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH1 0x0 MSTORE PUSH1 0x21 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST DUP3 PUSH1 0x60 DUP4 ADD MSTORE SWAP6 SWAP5 POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH2 0x114E JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 CALLDATALOAD PUSH2 0x1159 DUP2 PUSH2 0x103A JUMP JUMPDEST SWAP2 POP PUSH1 0x20 DUP4 ADD CALLDATALOAD PUSH2 0x1169 DUP2 PUSH2 0x103A JUMP JUMPDEST DUP1 SWAP2 POP POP SWAP3 POP SWAP3 SWAP1 POP JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE PUSH1 0x10 SWAP1 DUP3 ADD MSTORE PUSH16 0x14185D5CD8589B194E881C185D5CD959 PUSH1 0x82 SHL PUSH1 0x40 DUP3 ADD MSTORE PUSH1 0x60 ADD SWAP1 JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE DUP2 DUP2 ADD MSTORE PUSH32 0x4F776E61626C653A2063616C6C6572206973206E6F7420746865206F776E6572 PUSH1 0x40 DUP3 ADD MSTORE PUSH1 0x60 ADD SWAP1 JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE PUSH1 0x28 SWAP1 DUP3 ADD MSTORE PUSH32 0x576869746E6579546F6B656E3A205472616E73616374696F6E20646F6573206E PUSH1 0x40 DUP3 ADD MSTORE PUSH8 0x1BDD08195E1A5CDD PUSH1 0xC2 SHL PUSH1 0x60 DUP3 ADD MSTORE PUSH1 0x80 ADD SWAP1 JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE PUSH1 0x33 SWAP1 DUP3 ADD MSTORE PUSH32 0x576869746E6579546F6B656E3A205472616E73616374696F6E2068617320616C PUSH1 0x40 DUP3 ADD MSTORE PUSH19 0x1C9958591E481899595B88195E1958DD5D1959 PUSH1 0x6A SHL PUSH1 0x60 DUP3 ADD MSTORE PUSH1 0x80 ADD SWAP1 JUMP JUMPDEST PUSH1 0x1 DUP2 DUP2 SHR SWAP1 DUP3 AND DUP1 PUSH2 0x1282 JUMPI PUSH1 0x7F DUP3 AND SWAP2 POP JUMPDEST PUSH1 0x20 DUP3 LT DUP2 EQ ISZERO PUSH2 0x12A3 JUMPI PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH1 0x0 MSTORE PUSH1 0x22 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP3 NOT DUP3 GT ISZERO PUSH2 0x12CA JUMPI PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH1 0x0 MSTORE PUSH1 0x11 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST POP ADD SWAP1 JUMP INVALID GASLIMIT MSTORE NUMBER ORIGIN ADDRESS GASPRICE KECCAK256 PUSH21 0x72616E7366657220616D6F756E7420657863656564 PUSH20 0x2062616C616E636545524332303A207472616E73 PUSH7 0x657220616D6F75 PUSH15 0x74206578636565647320616C6C6F77 PUSH2 0x6E63 PUSH6 0x45524332303A KECCAK256 PUSH5 0x6563726561 PUSH20 0x656420616C6C6F77616E63652062656C6F77207A PUSH6 0x726FA2646970 PUSH7 0x73582212209C85 CALL 0xB4 SWAP2 CHAINID 0xB7 0x25 0xD7 0x1E 0xAA 0xD7 PUSH12 0x4738A0061E8728B62DE67248 DUP14 DELEGATECALL LOG0 RETURN 0xA8 PUSH5 0xE064736F6C PUSH4 0x43000808 STOP CALLER ",
"sourceMap": "381:11921:4:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4545:312;;;;;;:::i;:::-;;:::i;:::-;;2201:81;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;5185:149;;;;;;:::i;:::-;;:::i;:::-;;;1422:14:5;;1415:22;1397:41;;1385:2;1370:18;5185:149:4;1257:187:5;816:86:0;885:10;816:86;;;-1:-1:-1;;;;;1613:32:5;;;1595:51;;1583:2;1568:18;816:86:0;1449:203:5;1857:89:4;1927:12;;1857:89;;;1803:25:5;;;1791:2;1776:18;1857:89:4;1657:177:5;6157:319:4;;;;;;:::i;:::-;;:::i;2033:81::-;2098:9;;2033:81;;2098:9;;;;2442:36:5;;2430:2;2415:18;2033:81:4;2300:184:5;6871:207:4;;;;;;:::i;:::-;;:::i;3690:116:2:-;;;:::i;2927:76::-;2966:4;2989:7;-1:-1:-1;;;2989:7:2;;;;2927:76;;3053:108:4;;;;;;:::i;:::-;-1:-1:-1;;;;;3136:18:4;3110:7;3136:18;;;:9;:18;;;;;;;3053:108;1846:137:2;;;:::i;3485:114::-;;;:::i;1002:77::-;1040:7;1066:6;-1:-1:-1;;;;;1066:6:2;1002:77;;1353:92;1393:4;1432:6;-1:-1:-1;;;;;1432:6:2;885:10:0;1416:22:2;1353:92;;2369:85:4;;;:::i;2533:286::-;;;;;;:::i;:::-;2596:7;2656:28;;;:13;:28;;;;;:35;;;2693:38;;;2741:34;;;;2777;;;;;-1:-1:-1;;;;;2656:35:4;;;;2693:38;;;;;2741:34;2777;;;;;2533:286;;;;;;;;;;;:::i;7565:270::-;;;;;;:::i;:::-;;:::i;5537:162::-;;;;;;:::i;:::-;;:::i;2898:97::-;2971:17;;2898:97;;3844:317;;;;;;:::i;:::-;;:::i;4915:132::-;;;;;;:::i;:::-;-1:-1:-1;;;;;5013:18:4;;;4987:7;5013:18;;;:11;:18;;;;;;;;:27;;;;;;;;;;;;;4915:132;2132:115:2;;;;;;:::i;:::-;;:::i;4545:312:4:-;3156:7:2;;-1:-1:-1;;;3156:7:2;;;;3155:8;3147:37;;;;-1:-1:-1;;;3147:37:2;;;;;;;:::i;:::-;;;;;;;;;1393:4;1432:6;-1:-1:-1;;;;;1432:6:2;885:10:0;1416:22:2;1198:54:::1;;;;-1:-1:-1::0;;;1198:54:2::1;;;;;;;:::i;:::-;11926:1:4::2;11876:28:::0;;;:13:::2;:28;::::0;;;;:38:::2;;::::0;4673:13;;-1:-1:-1;;;;;11876:38:4::2;11868:117;;;;-1:-1:-1::0;;;11868:117:4::2;;;;;;;:::i;:::-;4709:13:::0;12189:25:::3;12151:28:::0;;;;:13:::3;:28;::::0;;;;:34:::3;;::::0;::::3;;:63;::::0;::::3;;;;;;:::i;:::-;;12143:139;;;;-1:-1:-1::0;;;12143:139:4::3;;;;;;;:::i;:::-;4738:61:::4;4758:13;4773:25;4738:19;:61::i;:::-;-1:-1:-1::0;4814:36:4::4;::::0;4836:13;;4824:10:::4;::::0;4814:36:::4;::::0;;;::::4;11995:1:::3;1262::2::2;4545:312:4::0;:::o;2201:81::-;2238:13;2270:5;2263:12;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2201:81;:::o;5185:149::-;5251:4;5267:39;885:10:0;5290:7:4;5299:6;5267:8;:39::i;:::-;-1:-1:-1;5323:4:4;5185:149;;;;;:::o;6157:319::-;6246:4;6262:43;6279:6;6287:9;6298:6;6262:16;:43::i;:::-;-1:-1:-1;6315:133:4;6324:6;885:10:0;6346:101:4;6384:6;6346:101;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;6346:19:4;;;;;;:11;:19;;;;;;;;885:10:0;6346:33:4;;;;;;;;;;:37;:101::i;:::-;6315:8;:133::i;:::-;-1:-1:-1;6465:4:4;6157:319;;;;;:::o;6871:207::-;885:10:0;6951:4:4;6999:25;;;:11;:25;;;;;;;;-1:-1:-1;;;;;6999:34:4;;;;;;;;;;6951:4;;6967:83;;6990:7;;6999:50;;7038:10;6999:38;:50::i;3690:116:2:-;1393:4;1432:6;-1:-1:-1;;;;;1432:6:2;885:10:0;1416:22:2;1198:54;;;;-1:-1:-1;;;1198:54:2;;;;;;;:::i;:::-;3347:7:::1;::::0;-1:-1:-1;;;3347:7:2;::::1;;;3339:40;;;::::0;-1:-1:-1;;;3339:40:2;;6271:2:5;3339:40:2::1;::::0;::::1;6253:21:5::0;6310:2;6290:18;;;6283:30;-1:-1:-1;;;6329:18:5;;;6322:50;6389:18;;3339:40:2::1;6069:344:5::0;3339:40:2::1;3757:5:::2;3747:15:::0;;-1:-1:-1;;;;3747:15:2::2;::::0;;3777:22:::2;885:10:0::0;3786:12:2::2;3777:22;::::0;-1:-1:-1;;;;;1613:32:5;;;1595:51;;1583:2;1568:18;3777:22:2::2;;;;;;;3690:116::o:0;1846:137::-;1393:4;1432:6;-1:-1:-1;;;;;1432:6:2;885:10:0;1416:22:2;1198:54;;;;-1:-1:-1;;;1198:54:2;;;;;;;:::i;:::-;1944:1:::1;1928:6:::0;;1907:40:::1;::::0;-1:-1:-1;;;;;1928:6:2;;::::1;::::0;1907:40:::1;::::0;1944:1;;1907:40:::1;1974:1;1957:19:::0;;-1:-1:-1;;;;;;1957:19:2::1;::::0;;1846:137::o;3485:114::-;1393:4;1432:6;-1:-1:-1;;;;;1432:6:2;885:10:0;1416:22:2;1198:54;;;;-1:-1:-1;;;1198:54:2;;;;;;;:::i;:::-;3156:7:::1;::::0;-1:-1:-1;;;3156:7:2;::::1;;;3155:8;3147:37;;;;-1:-1:-1::0;;;3147:37:2::1;;;;;;;:::i;:::-;3543:7:::2;:14:::0;;-1:-1:-1;;;;3543:14:2::2;-1:-1:-1::0;;;3543:14:2::2;::::0;;3572:20:::2;3579:12;885:10:0::0;;816:86;2369:85:4;2408:13;2440:7;2433:14;;;;;:::i;7565:270::-;7650:4;7666:141;885:10:0;7689:7:4;7698:108;7737:15;7698:108;;;;;;;;;;;;;;;;;885:10:0;7698:25:4;;;;:11;:25;;;;;;;;-1:-1:-1;;;;;7698:34:4;;;;;;;;;;;;:38;:108::i;5537:162::-;5620:4;3156:7:2;;-1:-1:-1;;;3156:7:2;;;;3155:8;3147:37;;;;-1:-1:-1;;;3147:37:2;;;;;;;:::i;:::-;5643:49:4::1;885:10:0::0;5674:9:4::1;5685:6;5643:16;:49::i;:::-;5636:56:::0;5537:162;-1:-1:-1;;;5537:162:4:o;3844:317::-;3156:7:2;;-1:-1:-1;;;3156:7:2;;;;3155:8;3147:37;;;;-1:-1:-1;;;3147:37:2;;;;;;;:::i;:::-;1393:4;1432:6;-1:-1:-1;;;;;1432:6:2;885:10:0;1416:22:2;1198:54:::1;;;;-1:-1:-1::0;;;1198:54:2::1;;;;;;;:::i;:::-;11926:1:4::2;11876:28:::0;;;:13:::2;:28;::::0;;;;:38:::2;;::::0;3973:13;;-1:-1:-1;;;;;11876:38:4::2;11868:117;;;;-1:-1:-1::0;;;11868:117:4::2;;;;;;;:::i;:::-;4009:13:::0;12189:25:::3;12151:28:::0;;;;:13:::3;:28;::::0;;;;:34:::3;;::::0;::::3;;:63;::::0;::::3;;;;;;:::i;:::-;;12143:139;;;;-1:-1:-1::0;;;12143:139:4::3;;;;;;;:::i;:::-;4038:62:::4;4058:13;4073:26;4038:19;:62::i;:::-;-1:-1:-1::0;4115:39:4::4;::::0;4140:13;;4128:10:::4;::::0;4115:39:::4;::::0;;;::::4;11995:1:::3;1262::2::2;3844:317:4::0;:::o;2132:115:2:-;1393:4;1432:6;-1:-1:-1;;;;;1432:6:2;885:10:0;1416:22:2;1198:54;;;;-1:-1:-1;;;1198:54:2;;;;;;;:::i;:::-;2212:28:::1;2231:8;2212:18;:28::i;:::-;2132:115:::0;:::o;10557:506:4:-;10649:4;10697:28;;;:13;:28;;;;;;;;10664:61;;;;;;;;;-1:-1:-1;;;;;10664:61:4;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;10649:4;;10664:61;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;:::i;:::-;;;-1:-1:-1;10664:61:4;-1:-1:-1;10735:17:4;;;10755:5;10735:25;;;;;;;;:::i;:::-;;;;;;;;;;;:::i;:::-;;;-1:-1:-1;10770:28:4;;;;:13;:28;;;;;;;;;:42;;;;-1:-1:-1;;;;;10770:42:4;;;-1:-1:-1;;;;;;10770:42:4;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;10801:11;;10770:28;:42;;;;-1:-1:-1;;10770:42:4;;;;;;;;;;;;;:::i;:::-;;;;;-1:-1:-1;10833:26:4;;-1:-1:-1;10826:33:4;;-1:-1:-1;10826:33:4;;:5;:33;;;;;;;;:::i;:::-;;10822:235;;;10881:66;10899:4;10906:11;:21;;;10929:11;:17;;;10881:9;:66::i;:::-;10874:73;;;;;10822:235;10983:63;11001:4;11008:11;:18;;;11028:11;:17;;;10983:9;:63::i;9864:332::-;-1:-1:-1;;;;;9957:19:4;;9949:68;;;;-1:-1:-1;;;9949:68:4;;6620:2:5;9949:68:4;;;6602:21:5;6659:2;6639:18;;;6632:30;6698:34;6678:18;;;6671:62;-1:-1:-1;;;6749:18:5;;;6742:34;6793:19;;9949:68:4;6418:400:5;9949:68:4;-1:-1:-1;;;;;10035:21:4;;10027:68;;;;-1:-1:-1;;;10027:68:4;;7025:2:5;10027:68:4;;;7007:21:5;7064:2;7044:18;;;7037:30;7103:34;7083:18;;;7076:62;-1:-1:-1;;;7154:18:5;;;7147:32;7196:19;;10027:68:4;6823:398:5;10027:68:4;-1:-1:-1;;;;;10106:18:4;;;;;;;:11;:18;;;;;;;;:27;;;;;;;;;;;;;:36;;;10157:32;;1803:25:5;;;10157:32:4;;1776:18:5;10157:32:4;;;;;;;9864:332;;;:::o;8289:231::-;8384:4;8400:40;8410:6;8426:4;8433:6;8400:9;:40::i;:::-;;8450:42;8466:6;8474:9;8485:6;8450:15;:42::i;:::-;-1:-1:-1;8509:4:4;;8289:231;-1:-1:-1;;;;8289:231:4:o;4876::3:-;4992:7;5051:12;5043:6;;;;5035:29;;;;-1:-1:-1;;;5035:29:3;;;;;;;;:::i;:::-;-1:-1:-1;;;5085:5:3;;;4876:231::o;2672:96::-;2730:7;2756:5;2760:1;2756;:5;:::i;2348:233:2:-;-1:-1:-1;;;;;2429:22:2;;2421:73;;;;-1:-1:-1;;;2421:73:2;;7658:2:5;2421:73:2;;;7640:21:5;7697:2;7677:18;;;7670:30;7736:34;7716:18;;;7709:62;-1:-1:-1;;;7787:18:5;;;7780:36;7833:19;;2421:73:2;7456:402:5;2421:73:2;2530:6;;;2509:38;;-1:-1:-1;;;;;2509:38:2;;;;2530:6;;;2509:38;;;2557:6;:17;;-1:-1:-1;;;;;;2557:17:2;-1:-1:-1;;;;;2557:17:2;;;;;;;;;;2348:233::o;8939:500:4:-;9027:4;-1:-1:-1;;;;;9051:20:4;;9043:70;;;;-1:-1:-1;;;9043:70:4;;8065:2:5;9043:70:4;;;8047:21:5;8104:2;8084:18;;;8077:30;8143:34;8123:18;;;8116:62;-1:-1:-1;;;8194:18:5;;;8187:35;8239:19;;9043:70:4;7863:401:5;9043:70:4;-1:-1:-1;;;;;9131:23:4;;9123:71;;;;-1:-1:-1;;;9123:71:4;;8471:2:5;9123:71:4;;;8453:21:5;8510:2;8490:18;;;8483:30;8549:34;8529:18;;;8522:62;-1:-1:-1;;;8600:18:5;;;8593:33;8643:19;;9123:71:4;8269:399:5;9123:71:4;9225;9247:6;9225:71;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;9225:17:4;;;;;;:9;:17;;;;;;;:71;:21;:71::i;:::-;-1:-1:-1;;;;;9205:17:4;;;;;;;:9;:17;;;;;;:91;;;;9329:20;;;;;;;:32;;9354:6;9329:24;:32::i;:::-;-1:-1:-1;;;;;9306:20:4;;;;;;;:9;:20;;;;;;;:55;;;;9376:35;;;;;;;;;;9404:6;1803:25:5;;1791:2;1776:18;;1657:177;9376:35:4;;;;;;;;-1:-1:-1;9428:4:4;8939:500;;;;;:::o;11299:442::-;11445:17;;11503:159;;;;;;;;-1:-1:-1;;;;;11503:159:4;;;;;;;;;;;;;;;;;;;;11395:18;11503:159;;11472:28;;;;:13;:28;;;;;;;;;:190;;;;-1:-1:-1;;;;;11472:190:4;;;-1:-1:-1;;;;;;11472:190:4;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;11472:190:4;;;;;;;;;;;;;:::i;:::-;;;;;;;;;11693:1;11672:17;;:22;;;;;;;:::i;:::-;;;;-1:-1:-1;;11709:25:4;;11720:13;;11709:25;;;;;11299:442;;;;;:::o;14:180:5:-;73:6;126:2;114:9;105:7;101:23;97:32;94:52;;;142:1;139;132:12;94:52;-1:-1:-1;165:23:5;;14:180;-1:-1:-1;14:180:5:o;199:597::-;311:4;340:2;369;358:9;351:21;401:6;395:13;444:6;439:2;428:9;424:18;417:34;469:1;479:140;493:6;490:1;487:13;479:140;;;588:14;;;584:23;;578:30;554:17;;;573:2;550:26;543:66;508:10;;479:140;;;637:6;634:1;631:13;628:91;;;707:1;702:2;693:6;682:9;678:22;674:31;667:42;628:91;-1:-1:-1;780:2:5;759:15;-1:-1:-1;;755:29:5;740:45;;;;787:2;736:54;;199:597;-1:-1:-1;;;199:597:5:o;801:131::-;-1:-1:-1;;;;;876:31:5;;866:42;;856:70;;922:1;919;912:12;937:315;1005:6;1013;1066:2;1054:9;1045:7;1041:23;1037:32;1034:52;;;1082:1;1079;1072:12;1034:52;1121:9;1108:23;1140:31;1165:5;1140:31;:::i;:::-;1190:5;1242:2;1227:18;;;;1214:32;;-1:-1:-1;;;937:315:5:o;1839:456::-;1916:6;1924;1932;1985:2;1973:9;1964:7;1960:23;1956:32;1953:52;;;2001:1;1998;1991:12;1953:52;2040:9;2027:23;2059:31;2084:5;2059:31;:::i;:::-;2109:5;-1:-1:-1;2166:2:5;2151:18;;2138:32;2179:33;2138:32;2179:33;:::i;:::-;1839:456;;2231:7;;-1:-1:-1;;;2285:2:5;2270:18;;;;2257:32;;1839:456::o;2489:247::-;2548:6;2601:2;2589:9;2580:7;2576:23;2572:32;2569:52;;;2617:1;2614;2607:12;2569:52;2656:9;2643:23;2675:31;2700:5;2675:31;:::i;2741:127::-;2802:10;2797:3;2793:20;2790:1;2783:31;2833:4;2830:1;2823:15;2857:4;2854:1;2847:15;2873:618;-1:-1:-1;;;;;3178:15:5;;;3160:34;;3230:15;;3225:2;3210:18;;3203:43;3277:2;3262:18;;3255:34;;;3109:3;3094:19;;3319:1;3308:13;;3298:144;;3364:10;3359:3;3355:20;3352:1;3345:31;3399:4;3396:1;3389:15;3427:4;3424:1;3417:15;3298:144;3478:6;3473:2;3462:9;3458:18;3451:34;2873:618;;;;;;;:::o;3496:388::-;3564:6;3572;3625:2;3613:9;3604:7;3600:23;3596:32;3593:52;;;3641:1;3638;3631:12;3593:52;3680:9;3667:23;3699:31;3724:5;3699:31;:::i;:::-;3749:5;-1:-1:-1;3806:2:5;3791:18;;3778:32;3819:33;3778:32;3819:33;:::i;:::-;3871:7;3861:17;;;3496:388;;;;;:::o;4149:340::-;4351:2;4333:21;;;4390:2;4370:18;;;4363:30;-1:-1:-1;;;4424:2:5;4409:18;;4402:46;4480:2;4465:18;;4149:340::o;4494:356::-;4696:2;4678:21;;;4715:18;;;4708:30;4774:34;4769:2;4754:18;;4747:62;4841:2;4826:18;;4494:356::o;4855:404::-;5057:2;5039:21;;;5096:2;5076:18;;;5069:30;5135:34;5130:2;5115:18;;5108:62;-1:-1:-1;;;5201:2:5;5186:18;;5179:38;5249:3;5234:19;;4855:404::o;5264:415::-;5466:2;5448:21;;;5505:2;5485:18;;;5478:30;5544:34;5539:2;5524:18;;5517:62;-1:-1:-1;;;5610:2:5;5595:18;;5588:49;5669:3;5654:19;;5264:415::o;5684:380::-;5763:1;5759:12;;;;5806;;;5827:61;;5881:4;5873:6;5869:17;5859:27;;5827:61;5934:2;5926:6;5923:14;5903:18;5900:38;5897:161;;;5980:10;5975:3;5971:20;5968:1;5961:31;6015:4;6012:1;6005:15;6043:4;6040:1;6033:15;5897:161;;5684:380;;;:::o;7226:225::-;7266:3;7297:1;7293:6;7290:1;7287:13;7284:136;;;7342:10;7337:3;7333:20;7330:1;7323:31;7377:4;7374:1;7367:15;7405:4;7402:1;7395:15;7284:136;-1:-1:-1;7436:9:5;;7226:225::o"
},
"gasEstimates": {
"creation": {
"codeDepositCost": "996800",
"executionCost": "infinite",
"totalCost": "infinite"
},
"external": {
"_msgSender()": "291",
"allowance(address,address)": "infinite",
"approve(address,uint256)": "24659",
"balanceOf(address)": "2664",
"confirmTransaction(uint256)": "infinite",
"decimals()": "2334",
"decreaseAllowance(address,uint256)": "infinite",
"increaseAllowance(address,uint256)": "27038",
"isOwner()": "2410",
"name()": "infinite",
"owner()": "2398",
"pause()": "29800",
"paused()": "2432",
"rejectTransaction(uint256)": "infinite",
"renounceOwnership()": "30188",
"symbol()": "infinite",
"totalSupply()": "2393",
"totalTransactions()": "2358",
"transactions(uint256)": "9111",
"transfer(address,uint256)": "infinite",
"transferFrom(address,address,uint256)": "infinite",
"transferOwnership(address)": "infinite",
"unpause()": "29815"
},
"internal": {
"_addTransaction(address,address,uint256)": "infinite",
"_approve(address,address,uint256)": "infinite",
"_processTransaction(uint256,enum WhitneyToken.transactionState)": "infinite",
"_transfer(address,address,uint256)": "infinite",
"_whitneyTransfer(address,address,uint256)": "infinite"
}
},
"methodIdentifiers": {
"_msgSender()": "119df25f",
"allowance(address,address)": "dd62ed3e",
"approve(address,uint256)": "095ea7b3",
"balanceOf(address)": "70a08231",
"confirmTransaction(uint256)": "c01a8c84",
"decimals()": "313ce567",
"decreaseAllowance(address,uint256)": "a457c2d7",
"increaseAllowance(address,uint256)": "39509351",
"isOwner()": "8f32d59b",
"name()": "06fdde03",
"owner()": "8da5cb5b",
"pause()": "8456cb59",
"paused()": "5c975abb",
"rejectTransaction(uint256)": "05bf37aa",
"renounceOwnership()": "715018a6",
"symbol()": "95d89b41",
"totalSupply()": "18160ddd",
"totalTransactions()": "b9a60038",
"transactions(uint256)": "9ace38c2",
"transfer(address,uint256)": "a9059cbb",
"transferFrom(address,address,uint256)": "23b872dd",
"transferOwnership(address)": "f2fde38b",
"unpause()": "3f4ba83a"
}
},
"abi": [
{
"inputs": [
{
"internalType": "address payable",
"name": "owner",
"type": "address"
},
{
"internalType": "uint256",
"name": "totalSupply",
"type": "uint256"
},
{
"internalType": "uint8",
"name": "decimals",
"type": "uint8"
},
{
"internalType": "string",
"name": "name",
"type": "string"
},
{
"internalType": "string",
"name": "symbol",
"type": "string"
}
],
"stateMutability": "nonpayable",
"type": "constructor"
},
{
"anonymous": false,
"inputs": [
{
"indexed": true,
"internalType": "address",
"name": "owner",
"type": "address"
},
{
"indexed": true,
"internalType": "address",
"name": "spender",
"type": "address"
},
{
"indexed": false,
"internalType": "uint256",
"name": "value",
"type": "uint256"
}
],
"name": "Approval",
"type": "event"
},
{
"anonymous": false,
"inputs": [
{
"indexed": true,
"internalType": "address",
"name": "sender",
"type": "address"
},
{
"indexed": true,
"internalType": "uint256",
"name": "transactionId",
"type": "uint256"
}
],
"name": "Confirmation",
"type": "event"
},
{
"anonymous": false,
"inputs": [
{
"indexed": true,
"internalType": "address",
"name": "previousOwner",
"type": "address"
},
{
"indexed": true,
"internalType": "address",
"name": "newOwner",
"type": "address"
}
],
"name": "OwnershipTransferred",
"type": "event"
},
{
"anonymous": false,
"inputs": [
{
"indexed": false,
"internalType": "address",
"name": "account",
"type": "address"
}
],
"name": "Paused",
"type": "event"
},
{
"anonymous": false,
"inputs": [
{
"indexed": true,
"internalType": "address",
"name": "sender",
"type": "address"
},
{
"indexed": true,
"internalType": "uint256",
"name": "transactionId",
"type": "uint256"
}
],
"name": "Rejection",
"type": "event"
},
{
"anonymous": false,
"inputs": [
{
"indexed": true,
"internalType": "uint256",
"name": "transactionId",
"type": "uint256"
}
],
"name": "Submission",
"type": "event"
},
{
"anonymous": false,
"inputs": [
{
"indexed": true,
"internalType": "address",
"name": "from",
"type": "address"
},
{
"indexed": true,
"internalType": "address",
"name": "to",
"type": "address"
},
{
"indexed": false,
"internalType": "uint256",
"name": "value",
"type": "uint256"
}
],
"name": "Transfer",
"type": "event"
},
{
"anonymous": false,
"inputs": [
{
"indexed": false,
"internalType": "address",
"name": "account",
"type": "address"
}
],
"name": "Unpaused",
"type": "event"
},
{
"inputs": [],
"name": "_msgSender",
"outputs": [
{
"internalType": "address",
"name": "",
"type": "address"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [
{
"internalType": "address",
"name": "owner",
"type": "address"
},
{
"internalType": "address",
"name": "spender",
"type": "address"
}
],
"name": "allowance",
"outputs": [
{
"internalType": "uint256",
"name": "",
"type": "uint256"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [
{
"internalType": "address",
"name": "spender",
"type": "address"
},
{
"internalType": "uint256",
"name": "amount",
"type": "uint256"
}
],
"name": "approve",
"outputs": [
{
"internalType": "bool",
"name": "",
"type": "bool"
}
],
"stateMutability": "nonpayable",
"type": "function"
},
{
"inputs": [
{
"internalType": "address",
"name": "account",
"type": "address"
}
],
"name": "balanceOf",
"outputs": [
{
"internalType": "uint256",
"name": "",
"type": "uint256"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [
{
"internalType": "uint256",
"name": "transactionId",
"type": "uint256"
}
],
"name": "confirmTransaction",
"outputs": [],
"stateMutability": "nonpayable",
"type": "function"
},
{
"inputs": [],
"name": "decimals",
"outputs": [
{
"internalType": "uint8",
"name": "",
"type": "uint8"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [
{
"internalType": "address",
"name": "spender",
"type": "address"
},
{
"internalType": "uint256",
"name": "subtractedValue",
"type": "uint256"
}
],
"name": "decreaseAllowance",
"outputs": [
{
"internalType": "bool",
"name": "",
"type": "bool"
}
],
"stateMutability": "nonpayable",
"type": "function"
},
{
"inputs": [
{
"internalType": "address",
"name": "spender",
"type": "address"
},
{
"internalType": "uint256",
"name": "addedValue",
"type": "uint256"
}
],
"name": "increaseAllowance",
"outputs": [
{
"internalType": "bool",
"name": "",
"type": "bool"
}
],
"stateMutability": "nonpayable",
"type": "function"
},
{
"inputs": [],
"name": "isOwner",
"outputs": [
{
"internalType": "bool",
"name": "",
"type": "bool"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [],
"name": "name",
"outputs": [
{
"internalType": "string",
"name": "",
"type": "string"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [],
"name": "owner",
"outputs": [
{
"internalType": "address",
"name": "",
"type": "address"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [],
"name": "pause",
"outputs": [],
"stateMutability": "nonpayable",
"type": "function"
},
{
"inputs": [],
"name": "paused",
"outputs": [
{
"internalType": "bool",
"name": "",
"type": "bool"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [
{
"internalType": "uint256",
"name": "transactionId",
"type": "uint256"
}
],
"name": "rejectTransaction",
"outputs": [],
"stateMutability": "nonpayable",
"type": "function"
},
{
"inputs": [],
"name": "renounceOwnership",
"outputs": [],
"stateMutability": "nonpayable",
"type": "function"
},
{
"inputs": [],
"name": "symbol",
"outputs": [
{
"internalType": "string",
"name": "",
"type": "string"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [],
"name": "totalSupply",
"outputs": [
{
"internalType": "uint256",
"name": "",
"type": "uint256"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [],
"name": "totalTransactions",
"outputs": [
{
"internalType": "uint256",
"name": "",
"type": "uint256"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [
{
"internalType": "uint256",
"name": "transactionId",
"type": "uint256"
}
],
"name": "transactions",
"outputs": [
{
"internalType": "address",
"name": "",
"type": "address"
},
{
"internalType": "address",
"name": "",
"type": "address"
},
{
"internalType": "uint256",
"name": "",
"type": "uint256"
},
{
"internalType": "enum WhitneyToken.transactionState",
"name": "",
"type": "uint8"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [
{
"internalType": "address",
"name": "recipient",
"type": "address"
},
{
"internalType": "uint256",
"name": "amount",
"type": "uint256"
}
],
"name": "transfer",
"outputs": [
{
"internalType": "bool",
"name": "",
"type": "bool"
}
],
"stateMutability": "nonpayable",
"type": "function"
},
{
"inputs": [
{
"internalType": "address",
"name": "sender",
"type": "address"
},
{
"internalType": "address",
"name": "recipient",
"type": "address"
},
{
"internalType": "uint256",
"name": "amount",
"type": "uint256"
}
],
"name": "transferFrom",
"outputs": [
{
"internalType": "bool",
"name": "",
"type": "bool"
}
],
"stateMutability": "nonpayable",
"type": "function"
},
{
"inputs": [
{
"internalType": "address payable",
"name": "newOwner",
"type": "address"
}
],
"name": "transferOwnership",
"outputs": [],
"stateMutability": "nonpayable",
"type": "function"
},
{
"inputs": [],
"name": "unpause",
"outputs": [],
"stateMutability": "nonpayable",
"type": "function"
}
]
}
{
"compiler": {
"version": "0.8.8+commit.dddeac2f"
},
"language": "Solidity",
"output": {
"abi": [
{
"inputs": [
{
"internalType": "address payable",
"name": "owner",
"type": "address"
},
{
"internalType": "uint256",
"name": "totalSupply",
"type": "uint256"
},
{
"internalType": "uint8",
"name": "decimals",
"type": "uint8"
},
{
"internalType": "string",
"name": "name",
"type": "string"
},
{
"internalType": "string",
"name": "symbol",
"type": "string"
}
],
"stateMutability": "nonpayable",
"type": "constructor"
},
{
"anonymous": false,
"inputs": [
{
"indexed": true,
"internalType": "address",
"name": "owner",
"type": "address"
},
{
"indexed": true,
"internalType": "address",
"name": "spender",
"type": "address"
},
{
"indexed": false,
"internalType": "uint256",
"name": "value",
"type": "uint256"
}
],
"name": "Approval",
"type": "event"
},
{
"anonymous": false,
"inputs": [
{
"indexed": true,
"internalType": "address",
"name": "sender",
"type": "address"
},
{
"indexed": true,
"internalType": "uint256",
"name": "transactionId",
"type": "uint256"
}
],
"name": "Confirmation",
"type": "event"
},
{
"anonymous": false,
"inputs": [
{
"indexed": true,
"internalType": "address",
"name": "previousOwner",
"type": "address"
},
{
"indexed": true,
"internalType": "address",
"name": "newOwner",
"type": "address"
}
],
"name": "OwnershipTransferred",
"type": "event"
},
{
"anonymous": false,
"inputs": [
{
"indexed": false,
"internalType": "address",
"name": "account",
"type": "address"
}
],
"name": "Paused",
"type": "event"
},
{
"anonymous": false,
"inputs": [
{
"indexed": true,
"internalType": "address",
"name": "sender",
"type": "address"
},
{
"indexed": true,
"internalType": "uint256",
"name": "transactionId",
"type": "uint256"
}
],
"name": "Rejection",
"type": "event"
},
{
"anonymous": false,
"inputs": [
{
"indexed": true,
"internalType": "uint256",
"name": "transactionId",
"type": "uint256"
}
],
"name": "Submission",
"type": "event"
},
{
"anonymous": false,
"inputs": [
{
"indexed": true,
"internalType": "address",
"name": "from",
"type": "address"
},
{
"indexed": true,
"internalType": "address",
"name": "to",
"type": "address"
},
{
"indexed": false,
"internalType": "uint256",
"name": "value",
"type": "uint256"
}
],
"name": "Transfer",
"type": "event"
},
{
"anonymous": false,
"inputs": [
{
"indexed": false,
"internalType": "address",
"name": "account",
"type": "address"
}
],
"name": "Unpaused",
"type": "event"
},
{
"inputs": [],
"name": "_msgSender",
"outputs": [
{
"internalType": "address",
"name": "",
"type": "address"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [
{
"internalType": "address",
"name": "owner",
"type": "address"
},
{
"internalType": "address",
"name": "spender",
"type": "address"
}
],
"name": "allowance",
"outputs": [
{
"internalType": "uint256",
"name": "",
"type": "uint256"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [
{
"internalType": "address",
"name": "spender",
"type": "address"
},
{
"internalType": "uint256",
"name": "amount",
"type": "uint256"
}
],
"name": "approve",
"outputs": [
{
"internalType": "bool",
"name": "",
"type": "bool"
}
],
"stateMutability": "nonpayable",
"type": "function"
},
{
"inputs": [
{
"internalType": "address",
"name": "account",
"type": "address"
}
],
"name": "balanceOf",
"outputs": [
{
"internalType": "uint256",
"name": "",
"type": "uint256"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [
{
"internalType": "uint256",
"name": "transactionId",
"type": "uint256"
}
],
"name": "confirmTransaction",
"outputs": [],
"stateMutability": "nonpayable",
"type": "function"
},
{
"inputs": [],
"name": "decimals",
"outputs": [
{
"internalType": "uint8",
"name": "",
"type": "uint8"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [
{
"internalType": "address",
"name": "spender",
"type": "address"
},
{
"internalType": "uint256",
"name": "subtractedValue",
"type": "uint256"
}
],
"name": "decreaseAllowance",
"outputs": [
{
"internalType": "bool",
"name": "",
"type": "bool"
}
],
"stateMutability": "nonpayable",
"type": "function"
},
{
"inputs": [
{
"internalType": "address",
"name": "spender",
"type": "address"
},
{
"internalType": "uint256",
"name": "addedValue",
"type": "uint256"
}
],
"name": "increaseAllowance",
"outputs": [
{
"internalType": "bool",
"name": "",
"type": "bool"
}
],
"stateMutability": "nonpayable",
"type": "function"
},
{
"inputs": [],
"name": "isOwner",
"outputs": [
{
"internalType": "bool",
"name": "",
"type": "bool"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [],
"name": "name",
"outputs": [
{
"internalType": "string",
"name": "",
"type": "string"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [],
"name": "owner",
"outputs": [
{
"internalType": "address",
"name": "",
"type": "address"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [],
"name": "pause",
"outputs": [],
"stateMutability": "nonpayable",
"type": "function"
},
{
"inputs": [],
"name": "paused",
"outputs": [
{
"internalType": "bool",
"name": "",
"type": "bool"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [
{
"internalType": "uint256",
"name": "transactionId",
"type": "uint256"
}
],
"name": "rejectTransaction",
"outputs": [],
"stateMutability": "nonpayable",
"type": "function"
},
{
"inputs": [],
"name": "renounceOwnership",
"outputs": [],
"stateMutability": "nonpayable",
"type": "function"
},
{
"inputs": [],
"name": "symbol",
"outputs": [
{
"internalType": "string",
"name": "",
"type": "string"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [],
"name": "totalSupply",
"outputs": [
{
"internalType": "uint256",
"name": "",
"type": "uint256"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [],
"name": "totalTransactions",
"outputs": [
{
"internalType": "uint256",
"name": "",
"type": "uint256"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [
{
"internalType": "uint256",
"name": "transactionId",
"type": "uint256"
}
],
"name": "transactions",
"outputs": [
{
"internalType": "address",
"name": "",
"type": "address"
},
{
"internalType": "address",
"name": "",
"type": "address"
},
{
"internalType": "uint256",
"name": "",
"type": "uint256"
},
{
"internalType": "enum WhitneyToken.transactionState",
"name": "",
"type": "uint8"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [
{
"internalType": "address",
"name": "recipient",
"type": "address"
},
{
"internalType": "uint256",
"name": "amount",
"type": "uint256"
}
],
"name": "transfer",
"outputs": [
{
"internalType": "bool",
"name": "",
"type": "bool"
}
],
"stateMutability": "nonpayable",
"type": "function"
},
{
"inputs": [
{
"internalType": "address",
"name": "sender",
"type": "address"
},
{
"internalType": "address",
"name": "recipient",
"type": "address"
},
{
"internalType": "uint256",
"name": "amount",
"type": "uint256"
}
],
"name": "transferFrom",
"outputs": [
{
"internalType": "bool",
"name": "",
"type": "bool"
}
],
"stateMutability": "nonpayable",
"type": "function"
},
{
"inputs": [
{
"internalType": "address payable",
"name": "newOwner",
"type": "address"
}
],
"name": "transferOwnership",
"outputs": [],
"stateMutability": "nonpayable",
"type": "function"
},
{
"inputs": [],
"name": "unpause",
"outputs": [],
"stateMutability": "nonpayable",
"type": "function"
}
],
"devdoc": {
"details": "ERC20 compatible token which requires an external oracle to explicitally aprove transactions for them to be executed. Useful to have an external agency to verify the legal validity of transactions",
"events": {
"Confirmation(address,uint256)": {
"details": "Emitted when the owner confirms a transaction and it's successfully state"
},
"Rejection(address,uint256)": {
"details": "Emitted when the owner denies a transaction and the funds are sent back to the user"
},
"Submission(uint256)": {
"details": "Emitted when the token owner submits a transaction for approval"
}
},
"kind": "dev",
"methods": {
"allowance(address,address)": {
"details": "See {IERC20-allowance}."
},
"approve(address,uint256)": {
"details": "See {IERC20-approve}. Requirements: - `spender` cannot be the zero address."
},
"balanceOf(address)": {
"details": "See {IERC20-balanceOf}."
},
"confirmTransaction(uint256)": {
"details": "Allows the `owner` of confirm a specific transaction. This function will confirm and execute the original transaction Emits a {Confirmation} event. Requirements: Only the contract owner can execute, contract must not be paused, transaction must exists, transaction must be non-executed"
},
"constructor": {
"details": "Initializes the contract setting the deployer as the initial owner."
},
"decimals()": {
"details": "Optional value for standarization with most wallets."
},
"decreaseAllowance(address,uint256)": {
"details": "Atomically decreases the allowance granted to `spender` by the caller. This is an alternative to {approve} that can be used as a mitigation for problems described in {IERC20-approve}. Emits an {Approval} event indicating the updated allowance. Requirements: - `spender` cannot be the zero address. - `spender` must have allowance for the caller of at least `subtractedValue`."
},
"increaseAllowance(address,uint256)": {
"details": "Atomically increases the allowance granted to `spender` by the caller. This is an alternative to {approve} that can be used as a mitigation for problems described in {IERC20-approve}. Emits an {Approval} event indicating the updated allowance. Requirements: - `spender` cannot be the zero address."
},
"isOwner()": {
"details": "Returns true if the caller is the current owner."
},
"name()": {
"details": "Optional value for standarization with most wallets."
},
"owner()": {
"details": "Returns the address of the current owner."
},
"pause()": {
"details": "Called by the owner to pause, triggers stopped state."
},
"paused()": {
"details": "Returns true if the contract is paused, and false otherwise."
},
"rejectTransaction(uint256)": {
"details": "Allows the `owner` of deny a specific transaction. This function will confirm and execute the original transaction Emits a {Rejection} event. Requirements: Only the contract owner can execute, contract must not be paused, transaction must exists, transaction must be non-executed"
},
"renounceOwnership()": {
"details": "Leaves the contract without owner. It will not be possible to call `onlyOwner` functions anymore. Can only be called by the current owner. NOTE: Renouncing ownership will leave the contract without an owner, thereby removing any functionality that is only available to the owner. Maybe we should delete this or ad a rollback period"
},
"symbol()": {
"details": "Optional value for standarization with most wallets."
},
"totalSupply()": {
"details": "See {IERC20-totalSupply}."
},
"totalTransactions()": {
"details": "function to query for specific transactions."
},
"transactions(uint256)": {
"details": "function to query for specific transactions."
},
"transfer(address,uint256)": {
"details": "See {IERC20-transfer}. Requirements: - `recipient` cannot be the zero address. - the caller must have a balance of at least `amount`."
},
"transferFrom(address,address,uint256)": {
"details": "See {IERC20-transferFrom}. Emits an {Approval} event indicating the updated allowance. This is not required by the EIP. See the note at the beginning of {ERC20}; Requirements: - `sender` and `recipient` cannot be the zero address. - `sender` must have a balance of at least `amount`. - the caller must have allowance for `sender`'s tokens of at least `amount`."
},
"transferOwnership(address)": {
"details": "Transfers ownership of the contract to a new account (`newOwner`). Can only be called by the current owner."
},
"unpause()": {
"details": "Called by the owner to unpause, returns to normal state."
}
},
"title": "Whitney token",
"version": 1
},
"userdoc": {
"kind": "user",
"methods": {},
"version": 1
}
},
"settings": {
"compilationTarget": {
"contracts/WhitneyToken.sol": "WhitneyToken"
},
"evmVersion": "london",
"libraries": {},
"metadata": {
"bytecodeHash": "ipfs"
},
"optimizer": {
"enabled": true,
"runs": 200
},
"remappings": []
},
"sources": {
"contracts/Context.sol": {
"keccak256": "0xc66537adf0c83f301b3dbc3613d250deee744c771e9a247f977cfd0bb5960ebe",
"license": "GPL-3.0",
"urls": [
"bzz-raw://80dac3ba0eeed99e95b346fed84dc43295237f4c22e700b4d976bbe4557bdfc8",
"dweb:/ipfs/QmZXZ9LjCY8p3NiEpUkDjq4UXSCjNGodoWeZd5tDxdfMYq"
]
},
"contracts/IERC20.sol": {
"keccak256": "0x5c58a19550aca44abbccbc14e5f05de6606384b852c6feda06b8b3b9314bd2de",
"license": "GPL-3.0",
"urls": [
"bzz-raw://aa1dcab640db95a0a66b86023b585c0cd6d5e434562c8bc8eb76b3b72fda02a9",
"dweb:/ipfs/QmQQ5BdXBUTQ1N4CTpgS2K8FaRgwhQonWxkdgPeac4sine"
]
},
"contracts/Ownable.sol": {
"keccak256": "0x6fb5153c47bf4779f0446cbafb567e606161410bfe7f094e95b9f1676ad5d4f3",
"license": "GPL-3.0",
"urls": [
"bzz-raw://ac570ea641e1aaa561c35add87b50b2dc08ad1c303ddc5ae8aef5c025f7a8cd5",
"dweb:/ipfs/QmQzRimtSYy3kNVj4jBzPudNJSQaGJYi48n1L55kZrCnhu"
]
},
"contracts/SafeMath.sol": {
"keccak256": "0x7408e0b6e09c3e683d0666d319daaf6f2b4e2b1c063dd9f857c4af5158491021",
"license": "MIT",
"urls": [
"bzz-raw://55a9f1585597d72b8b18578a6e6c13f8716e00bd806325babb42db1d12361429",
"dweb:/ipfs/QmfYUash3a9F22mQWAmH2ZW94nm66hJe8s7jy5xyq5o1q8"
]
},
"contracts/WhitneyToken.sol": {
"keccak256": "0x6fd446416182ef4287efac449d83bb4139ee702b820f84b27be92d37b6ede19d",
"license": "GPL-3.0",
"urls": [
"bzz-raw://4f695e57193411cafe54c4cd77819402ef10b2bce0a07fa6c0e947e0606b1468",
"dweb:/ipfs/QmUMhVwjnnT3q4bZvmENPkt5t7zqxEbBMdEXbRzdgaXacr"
]
}
},
"version": 1
}
// SPDX-License-Identifier: GPL-3.0
pragma solidity ^0.8.0;
/*
* @dev Provides information about the current execution context, including the
* sender of the transaction and its data. While these are generally available
* via msg.sender and msg.data, they should not be accessed in such a direct
* manner, since when dealing with GSN meta-transactions the account sending and
* paying for execution may not be the actual sender (as far as an application
* is concerned).
*
* This contract is only required for intermediate, library-like contracts.
*/
contract Context {
// Empty internal constructor, to prevent people from mistakenly deploying
// an instance of this contract, which should be used via inheritance.
constructor () { }
// solhint-disable-previous-line no-empty-blocks
function _msgSender() public view returns (address) {
return msg.sender;
}
function _msgData() internal view returns (bytes memory) {
this;// silence state mutability warning without generating any additional byte code
return msg.data;
}
}
// SPDX-License-Identifier: GPL-3.0
pragma solidity ^0.8.0;
/**
* @dev Interface of the ERC20 standard as defined in the EIP. Does not include
* the optional functions; to access them see {ERC20Detailed}.
*/
interface IERC20 {
/**
* @dev Returns the amount of tokens in existence.
*/
function totalSupply() external view returns (uint256);
/**
* @dev Returns the amount of tokens owned by `account`.
*/
function balanceOf(address account) external view returns (uint256);
/**
* @dev Moves `amount` tokens from the caller's account to `recipient`.
*
* Returns a boolean value indicating whether the operation succeeded.
*
* Emits a {Transfer} event.
*/
function transfer(address recipient, uint256 amount) external returns (bool);
/**
* @dev Returns the remaining number of tokens that `spender` will be
* allowed to spend on behalf of `owner` through {transferFrom}. This is
* zero by default.
*
* This value changes when {approve} or {transferFrom} are called.
*/
function allowance(address owner, address spender) external view returns (uint256);
/**
* @dev Sets `amount` as the allowance of `spender` over the caller's tokens.
*
* Returns a boolean value indicating whether the operation succeeded.
*
* IMPORTANT: Beware that changing an allowance with this method brings the risk
* that someone may use both the old and the new allowance by unfortunate
* transaction ordering. One possible solution to mitigate this race
* condition is to first reduce the spender's allowance to 0 and set the
* desired value afterwards:
* https://github.com/ethereum/EIPs/issues/20#issuecomment-263524729
*
* Emits an {Approval} event.
*/
function approve(address spender, uint256 amount) external returns (bool);
/**
* @dev Moves `amount` tokens from `sender` to `recipient` using the
* allowance mechanism. `amount` is then deducted from the caller's
* allowance.
*
* Returns a boolean value indicating whether the operation succeeded.
*
* Emits a {Transfer} event.
*/
function transferFrom(address sender, address recipient, uint256 amount) external returns (bool);
/**
* @dev Emitted when `value` tokens are moved from one account (`from`) to
* another (`to`).
*
* Note that `value` may be zero.
*/
event Transfer(address indexed from, address indexed to, uint256 value);
/**
* @dev Emitted when the allowance of a `spender` for an `owner` is set by
* a call to {approve}. `value` is the new allowance.
*/
event Approval(address indexed owner, address indexed spender, uint256 value);
}
// SPDX-License-Identifier: GPL-3.0
pragma solidity >=0.4.21 <0.6.0;
contract Migrations {
address public owner;
uint public last_completed_migration;
constructor() public {
owner = msg.sender;
}
modifier restricted() {
if (msg.sender == owner) _;
}
function setCompleted(uint completed) public restricted {
last_completed_migration = completed;
}
function upgrade(address new_address) public restricted {
Migrations upgraded = Migrations(new_address);
upgraded.setCompleted(last_completed_migration);
}
}
// SPDX-License-Identifier: GPL-3.0
pragma solidity ^0.8.0;
import "./Context.sol";
/**
* @dev Contract module which provides a basic access control mechanism, where
* there is an account (an owner) that can be granted exclusive access to
* specific functions, for now limited to pausing and destructing the contract.
*
* This module is used through inheritance. It will make available the modifier
* `onlyOwner`, which can be applied to your functions to restrict their use to
* the owner.
*/
contract Ownable is Context {
address private _owner;
bool private _paused;
event OwnershipTransferred(address indexed previousOwner, address indexed newOwner);
/**
* @dev Initializes the contract setting the deployer as the initial owner.
*/
constructor (address owner) {
_owner = owner;
_paused = false;
emit OwnershipTransferred(address(0), _msgSender());
}
/**
* @dev Returns the address of the current owner.
*/
function owner() public view returns (address) {
return _owner;
}
/**
* @dev Throws if called by any account other than the owner.
*/
modifier onlyOwner() {
require(isOwner(), "Ownable: caller is not the owner");
_;
}
/**
* @dev Returns true if the caller is the current owner.
*/
function isOwner() public view returns (bool) {
return _msgSender() == _owner;
}
/**
* @dev Leaves the contract without owner. It will not be possible to call
* `onlyOwner` functions anymore. Can only be called by the current owner.
*
* NOTE: Renouncing ownership will leave the contract without an owner,
* thereby removing any functionality that is only available to the owner.
* Maybe we should delete this or ad a rollback period
*/
function renounceOwnership() public onlyOwner {
emit OwnershipTransferred(_owner, address(0));
_owner = address(0);
}
/**
* @dev Transfers ownership of the contract to a new account (`newOwner`).
* Can only be called by the current owner.
*/
function transferOwnership(address payable newOwner) public onlyOwner {
_transferOwnership(newOwner);
}
/**
* @dev Transfers ownership of the contract to a new account (`newOwner`).
*/
function _transferOwnership(address payable newOwner) internal {
require(newOwner != address(0), "Ownable: new owner is the zero address");
emit OwnershipTransferred(_owner, newOwner);
_owner = newOwner;
}
/**
* @dev Emitted when the pause is triggered by the owner (`account`).
*/
event Paused(address account);
/**
* @dev Emitted when the pause is lifted by the owner (`account`).
*/
event Unpaused(address account);
/**
* @dev Returns true if the contract is paused, and false otherwise.
*/
function paused() public view returns (bool) {
return _paused;
}
/**
* @dev Modifier to make a function callable only when the contract is not paused.
*/
modifier whenNotPaused() {
require(!_paused, "Pausable: paused");
_;
}
/**
* @dev Modifier to make a function callable only when the contract is paused.
*/
modifier whenPaused() {
require(_paused, "Pausable: not paused");
_;
}
/**
* @dev Called by the owner to pause, triggers stopped state.
*/
function pause() public onlyOwner whenNotPaused {
_paused = true;
emit Paused(_msgSender());
}
/**
* @dev Called by the owner to unpause, returns to normal state.
*/
function unpause() public onlyOwner whenPaused {
_paused = false;
emit Unpaused(_msgSender());
}
}
// SPDX-License-Identifier: MIT
pragma solidity ^0.8.0;
// CAUTION
// This version of SafeMath should only be used with Solidity 0.8 or later,
// because it relies on the compiler's built in overflow checks.
/**
* @dev Wrappers over Solidity's arithmetic operations.
*
* NOTE: `SafeMath` is no longer needed starting with Solidity 0.8. The compiler
* now has built in overflow checking.
*/
library SafeMath {
/**
* @dev Returns the addition of two unsigned integers, with an overflow flag.
*
* _Available since v3.4._
*/
function tryAdd(uint256 a, uint256 b) internal pure returns (bool, uint256) {
unchecked {
uint256 c = a + b;
if (c < a) return (false, 0);
return (true, c);
}
}
/**
* @dev Returns the substraction of two unsigned integers, with an overflow flag.
*
* _Available since v3.4._
*/
function trySub(uint256 a, uint256 b) internal pure returns (bool, uint256) {
unchecked {
if (b > a) return (false, 0);
return (true, a - b);
}
}
/**
* @dev Returns the multiplication of two unsigned integers, with an overflow flag.
*
* _Available since v3.4._
*/
function tryMul(uint256 a, uint256 b) internal pure returns (bool, uint256) {
unchecked {
// Gas optimization: this is cheaper than requiring 'a' not being zero, but the
// benefit is lost if 'b' is also tested.
// See: https://github.com/OpenZeppelin/openzeppelin-contracts/pull/522
if (a == 0) return (true, 0);
uint256 c = a * b;
if (c / a != b) return (false, 0);
return (true, c);
}
}
/**
* @dev Returns the division of two unsigned integers, with a division by zero flag.
*
* _Available since v3.4._
*/
function tryDiv(uint256 a, uint256 b) internal pure returns (bool, uint256) {
unchecked {
if (b == 0) return (false, 0);
return (true, a / b);
}
}
/**
* @dev Returns the remainder of dividing two unsigned integers, with a division by zero flag.
*
* _Available since v3.4._
*/
function tryMod(uint256 a, uint256 b) internal pure returns (bool, uint256) {
unchecked {
if (b == 0) return (false, 0);
return (true, a % b);
}
}
/**
* @dev Returns the addition of two unsigned integers, reverting on
* overflow.
*
* Counterpart to Solidity's `+` operator.
*
* Requirements:
*
* - Addition cannot overflow.
*/
function add(uint256 a, uint256 b) internal pure returns (uint256) {
return a + b;
}
/**
* @dev Returns the subtraction of two unsigned integers, reverting on
* overflow (when the result is negative).
*
* Counterpart to Solidity's `-` operator.
*
* Requirements:
*
* - Subtraction cannot overflow.
*/
function sub(uint256 a, uint256 b) internal pure returns (uint256) {
return a - b;
}
/**
* @dev Returns the multiplication of two unsigned integers, reverting on
* overflow.
*
* Counterpart to Solidity's `*` operator.
*
* Requirements:
*
* - Multiplication cannot overflow.
*/
function mul(uint256 a, uint256 b) internal pure returns (uint256) {
return a * b;
}
/**
* @dev Returns the integer division of two unsigned integers, reverting on
* division by zero. The result is rounded towards zero.
*
* Counterpart to Solidity's `/` operator.
*
* Requirements:
*
* - The divisor cannot be zero.
*/
function div(uint256 a, uint256 b) internal pure returns (uint256) {
return a / b;
}
/**
* @dev Returns the remainder of dividing two unsigned integers. (unsigned integer modulo),
* reverting when dividing by zero.
*
* Counterpart to Solidity's `%` operator. This function uses a `revert`
* opcode (which leaves remaining gas untouched) while Solidity uses an
* invalid opcode to revert (consuming all remaining gas).
*
* Requirements:
*
* - The divisor cannot be zero.
*/
function mod(uint256 a, uint256 b) internal pure returns (uint256) {
return a % b;
}
/**
* @dev Returns the subtraction of two unsigned integers, reverting with custom message on
* overflow (when the result is negative).
*
* CAUTION: This function is deprecated because it requires allocating memory for the error
* message unnecessarily. For custom revert reasons use {trySub}.
*
* Counterpart to Solidity's `-` operator.
*
* Requirements:
*
* - Subtraction cannot overflow.
*/
function sub(
uint256 a,
uint256 b,
string memory errorMessage
) internal pure returns (uint256) {
unchecked {
require(b <= a, errorMessage);
return a - b;
}
}
/**
* @dev Returns the integer division of two unsigned integers, reverting with custom message on
* division by zero. The result is rounded towards zero.
*
* Counterpart to Solidity's `/` operator. Note: this function uses a
* `revert` opcode (which leaves remaining gas untouched) while Solidity
* uses an invalid opcode to revert (consuming all remaining gas).
*
* Requirements:
*
* - The divisor cannot be zero.
*/
function div(
uint256 a,
uint256 b,
string memory errorMessage
) internal pure returns (uint256) {
unchecked {
require(b > 0, errorMessage);
return a / b;
}
}
/**
* @dev Returns the remainder of dividing two unsigned integers. (unsigned integer modulo),
* reverting with custom message when dividing by zero.
*
* CAUTION: This function is deprecated because it requires allocating memory for the error
* message unnecessarily. For custom revert reasons use {tryMod}.
*
* Counterpart to Solidity's `%` operator. This function uses a `revert`
* opcode (which leaves remaining gas untouched) while Solidity uses an
* invalid opcode to revert (consuming all remaining gas).
*
* Requirements:
*
* - The divisor cannot be zero.
*/
function mod(
uint256 a,
uint256 b,
string memory errorMessage
) internal pure returns (uint256) {
unchecked {
require(b > 0, errorMessage);
return a % b;
}
}
}
pragma solidity ^0.4.21;
contract SimpleERC20Token {
// Track how many tokens are owned by each address.
mapping (address => uint256) public balanceOf;
string public name = "Simple ERC20 Token";
string public symbol = "SET";
uint8 public decimals = 18;
uint256 public totalSupply = 1000000 * (uint256(10) ** decimals);
event Transfer(address indexed from, address indexed to, uint256 value);
constructor() public {
// Initially assign all tokens to the contract's creator.
balanceOf[msg.sender] = totalSupply;
emit Transfer(address(0), msg.sender, totalSupply);
}
function transfer(address to, uint256 value) public returns (bool success) {
require(balanceOf[msg.sender] >= value);
balanceOf[msg.sender] -= value; // deduct from sender's balance
balanceOf[to] += value; // add to recipient's balance
emit Transfer(msg.sender, to, value);
return true;
}
event Approval(address indexed owner, address indexed spender, uint256 value);
mapping(address => mapping(address => uint256)) public allowance;
function approve(address spender, uint256 value)
public
returns (bool success)
{
allowance[msg.sender][spender] = value;
emit Approval(msg.sender, spender, value);
return true;
}
function transferFrom(address from, address to, uint256 value)
public
returns (bool success)
{
require(value <= balanceOf[from]);
require(value <= allowance[from][msg.sender]);
balanceOf[from] -= value;
balanceOf[to] += value;
allowance[from][msg.sender] -= value;
emit Transfer(from, to, value);
return true;
}
}
// SPDX-License-Identifier: GPL-3.0
pragma solidity ^0.8.0;
import "./IERC20.sol";
import "./Ownable.sol";
import "./SafeMath.sol";
/**
* @title Whitney token
* @dev ERC20 compatible token which requires an external oracle to explicitally
* aprove transactions for them to be executed.
*
* Useful to have an external agency to verify the legal validity of transactions
*/
contract WhitneyToken is IERC20, Ownable {
/**
* @dev Initializes the contract setting the deployer as the initial owner.
*/
constructor (address payable owner, uint256 totalSupply, uint8 decimals,
string memory name, string memory symbol)
Ownable(owner)
{
_totalSupply = totalSupply;
_balances[owner] = _totalSupply;
_decimals = decimals;
_name = name;
_symbol = symbol;
}
/**
* @dev Emitted when the owner confirms a transaction and it's successfully state
*/
event Confirmation(address indexed sender, uint indexed transactionId);
/**
* @dev Emitted when the owner denies a transaction and the funds are sent back to the user
*/
event Rejection(address indexed sender, uint indexed transactionId);
/**
* @dev Emitted when the token owner submits a transaction for approval
*/
event Submission(uint indexed transactionId);
using SafeMath for uint256;
mapping (address => uint256) internal _balances;
mapping (address => mapping (address => uint256)) internal _allowances;
uint256 internal _totalSupply;
uint8 internal _decimals;
string internal _name;
string internal _symbol;
mapping (uint256 => Transaction) internal _transactions;
uint256 internal _transactionCount;
enum transactionState { Submited, Confirmed, Rejected }
/**
* @dev See {IERC20-totalSupply}.
*/
function totalSupply() public view returns (uint256) {
return _totalSupply;
}
/**
* @dev Optional value for standarization with most wallets.
*/
function decimals() public view returns (uint8) {
return _decimals;
}
/**
* @dev Optional value for standarization with most wallets.
*/
function name() public view returns (string memory) {
return _name;
}
/**
* @dev Optional value for standarization with most wallets.
*/
function symbol() public view returns (string memory) {
return _symbol;
}
/**
* @dev function to query for specific transactions.
*/
function transactions(uint transactionId) public view returns (address, address, uint, transactionState) {
return (_transactions[transactionId].sender, _transactions[transactionId].recipient,
_transactions[transactionId].value, _transactions[transactionId].state);
}
/**
* @dev function to query for specific transactions.
*/
function totalTransactions() public view returns (uint) {
return _transactionCount;
}
/**
* @dev See {IERC20-balanceOf}.
*/
function balanceOf(address account) public view returns (uint256) {
return _balances[account];
}
/**
* @dev Data structure which represents a whitney transaction, the state is defined
* as an enum: { Submited, Confirmed, Rejected }
*/
struct Transaction {
address sender;
address recipient;
uint value;
transactionState state;
}
/**
* @dev Allows the `owner` of confirm a specific transaction.
*
* This function will confirm and execute the original transaction
*
* Emits a {Confirmation} event.
*
* Requirements:
*
* Only the contract owner can execute, contract must not be paused,
* transaction must exists, transaction must be non-executed
*
*/
function confirmTransaction(uint transactionId)
public
whenNotPaused
onlyOwner
transactionExists(transactionId)
notProcessed(transactionId)
{
_processTransaction(transactionId, transactionState.Confirmed);
emit Confirmation(msg.sender, transactionId);
}
/**
* @dev Allows the `owner` of deny a specific transaction.
*
* This function will confirm and execute the original transaction
*
* Emits a {Rejection} event.
*
* Requirements:
*
* Only the contract owner can execute, contract must not be paused,
* transaction must exists, transaction must be non-executed
*
*/
function rejectTransaction(uint transactionId)
public
whenNotPaused
onlyOwner
transactionExists(transactionId)
notProcessed(transactionId)
{
_processTransaction(transactionId, transactionState.Rejected);
emit Rejection(msg.sender, transactionId);
}
/**
* @dev See {IERC20-allowance}.
*/
function allowance(address owner, address spender) public view returns (uint256) {
return _allowances[owner][spender];
}
/**
* @dev See {IERC20-approve}.
*
* Requirements:
*
* - `spender` cannot be the zero address.
*/
function approve(address spender, uint256 amount) public returns (bool) {
_approve(_msgSender(), spender, amount);
return true;
}
/**
* @dev See {IERC20-transfer}.
*
* Requirements:
*
* - `recipient` cannot be the zero address.
* - the caller must have a balance of at least `amount`.
*/
function transfer(address recipient, uint256 amount) public whenNotPaused returns (bool) {
return _whitneyTransfer(_msgSender(), recipient, amount);
}
/**
* @dev See {IERC20-transferFrom}.
*
* Emits an {Approval} event indicating the updated allowance. This is not
* required by the EIP. See the note at the beginning of {ERC20};
*
* Requirements:
* - `sender` and `recipient` cannot be the zero address.
* - `sender` must have a balance of at least `amount`.
* - the caller must have allowance for `sender`'s tokens of at least
* `amount`.
*/
function transferFrom(address sender, address recipient, uint256 amount) public returns (bool) {
_whitneyTransfer(sender, recipient, amount);
_approve(sender, _msgSender(), _allowances[sender][_msgSender()].sub(amount,
"ERC20: transfer amount exceeds allowance"));
return true;
}
/**
* @dev Atomically increases the allowance granted to `spender` by the caller.
*
* This is an alternative to {approve} that can be used as a mitigation for
* problems described in {IERC20-approve}.
*
* Emits an {Approval} event indicating the updated allowance.
*
* Requirements:
*
* - `spender` cannot be the zero address.
*/
function increaseAllowance(address spender, uint256 addedValue) public returns (bool) {
_approve(_msgSender(), spender, _allowances[_msgSender()][spender].add(addedValue));
return true;
}
/**
* @dev Atomically decreases the allowance granted to `spender` by the caller.
*
* This is an alternative to {approve} that can be used as a mitigation for
* problems described in {IERC20-approve}.
*
* Emits an {Approval} event indicating the updated allowance.
*
* Requirements:
*
* - `spender` cannot be the zero address.
* - `spender` must have allowance for the caller of at least
* `subtractedValue`.
*/
function decreaseAllowance(address spender, uint256 subtractedValue) public returns (bool) {
_approve(_msgSender(), spender, _allowances[_msgSender()][spender].sub(subtractedValue,
"ERC20: decreased allowance below zero"));
return true;
}
/**
* @dev Allows a token holder to submit a transaction for aproval.
*
* This function will put the assets on escrow until the transaction is
* aproved or denied by the owner
*
* Emits an {Submission} event.
*
* Requirements:
*
* - `sender` cannot be the zero address.
* - `recipient` cannot be the zero address.
* - `sender` must have a balance of at least `amount`.
*
*/
function _whitneyTransfer(address sender, address recipient, uint256 amount) internal returns (bool) {
_transfer(sender, address(this), amount);
_addTransaction(sender, recipient, amount);
return true;
}
/**
* @dev Performs a token transfer
*
* This function will put the assets on escrow until the transaction is
* aproved or denied by the owner
*
* Emits an {Transfer} event.
*
* Requirements:
*
* - `sender` cannot be the zero address.
* - `recipient` cannot be the zero address.
* - `sender` must have a balance of at least `amount`.
*
*/
function _transfer(address sender, address recipient, uint256 amount) internal returns (bool) {
require(sender != address(0), "ERC20: transfer from the zero address");
require(recipient != address(0), "ERC20: transfer to the zero address");
_balances[sender] = _balances[sender].sub(amount, "ERC20: transfer amount exceeds balance");
_balances[recipient] = _balances[recipient].add(amount);
emit Transfer(sender, recipient, amount);
return true;
}
/**
* @dev Sets `amount` as the allowance of `spender` over the `owner`s tokens.
*
* This is internal function is equivalent to `approve`, and can be used to
* e.g. set automatic allowances for certain subsystems, etc.
*
* Emits an {Approval} event.
*
* Requirements:
*
* - `owner` cannot be the zero address.
* - `spender` cannot be the zero address.
*/
function _approve(address owner, address spender, uint256 amount) internal {
require(owner != address(0), "ERC20: approve from the zero address");
require(spender != address(0), "ERC20: approve to the zero address");
_allowances[owner][spender] = amount;
emit Approval(owner, spender, amount);
}
/**
* @dev Processes a Whitney transfer liberating the escrowed assets.
*
* This is internal function processes a transaction submited by the user
* sets the transaction as processed with it's correct state and sends
* the escrowed assets back to the user if denied or to the defined
* sender if confirmed
*
*/
function _processTransaction (uint transactionId, transactionState state) internal returns (bool){
Transaction memory transaction = _transactions[transactionId];
transaction.state = state;
_transactions[transactionId] = transaction;
if (state==transactionState.Confirmed){
return _transfer(address(this), transaction.recipient, transaction.value);
}else{
return _transfer(address(this), transaction.sender, transaction.value);
}
}
/**
* @dev Adds a transaction to the Whitney transaction data structure.
*
* Creates a transaction, assigns an ID, adds it to the
* data structure, and updates the total transactions counter
*
*/
function _addTransaction(address origin, address destination, uint value) internal
returns (uint transactionId)
{
transactionId = _transactionCount;
_transactions[transactionId] = Transaction({
sender: origin,
recipient: destination,
value: value,
state: transactionState.Submited
});
_transactionCount += 1;
emit Submission(transactionId);
}
/**
* @dev Throws if transaction doesn't exist
*/
modifier transactionExists(uint transactionId) {
require(_transactions[transactionId].recipient != address(0),
"WhitneyToken: Transaction does not exist");
_;
}
/**
* @dev Throws if the transaction has already been processed.
*/
modifier notProcessed(uint transactionId) {
require(_transactions[transactionId].state == transactionState.Submited,
"WhitneyToken: Transaction has already been executed");
_;
}
}
// SPDX-License-Identifier: MIT
pragma solidity ^0.8.2;
import "../IBeacon.sol";
import "../../utils/Address.sol";
import "../../utils/StorageSlot.sol";
/**
* @dev This abstract contract provides getters and event emitting update functions for
* https://eips.ethereum.org/EIPS/eip-1967[EIP1967] slots.
*
* _Available since v4.1._
*
* @custom:oz-upgrades-unsafe-allow delegatecall
*/
abstract contract ERC1967Upgrade {
// This is the keccak-256 hash of "eip1967.proxy.rollback" subtracted by 1
bytes32 private constant _ROLLBACK_SLOT = 0x4910fdfa16fed3260ed0e7147f7cc6da11a60208b5b9406d12a635614ffd9143;
/**
* @dev Storage slot with the address of the current implementation.
* This is the keccak-256 hash of "eip1967.proxy.implementation" subtracted by 1, and is
* validated in the constructor.
*/
bytes32 internal constant _IMPLEMENTATION_SLOT = 0x360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc;
/**
* @dev Emitted when the implementation is upgraded.
*/
event Upgraded(address indexed implementation);
/**
* @dev Returns the current implementation address.
*/
function _getImplementation() internal view returns (address) {
return StorageSlot.getAddressSlot(_IMPLEMENTATION_SLOT).value;
}
/**
* @dev Stores a new address in the EIP1967 implementation slot.
*/
function _setImplementation(address newImplementation) private {
require(Address.isContract(newImplementation), "ERC1967: new implementation is not a contract");
StorageSlot.getAddressSlot(_IMPLEMENTATION_SLOT).value = newImplementation;
}
/**
* @dev Perform implementation upgrade
*
* Emits an {Upgraded} event.
*/
function _upgradeTo(address newImplementation) internal {
_setImplementation(newImplementation);
emit Upgraded(newImplementation);
}
/**
* @dev Perform implementation upgrade with additional setup call.
*
* Emits an {Upgraded} event.
*/
function _upgradeToAndCall(
address newImplementation,
bytes memory data,
bool forceCall
) internal {
_upgradeTo(newImplementation);
if (data.length > 0 || forceCall) {
Address.functionDelegateCall(newImplementation, data);
}
}
/**
* @dev Perform implementation upgrade with security checks for UUPS proxies, and additional setup call.
*
* Emits an {Upgraded} event.
*/
function _upgradeToAndCallSecure(
address newImplementation,
bytes memory data,
bool forceCall
) internal {
address oldImplementation = _getImplementation();
// Initial upgrade and setup call
_setImplementation(newImplementation);
if (data.length > 0 || forceCall) {
Address.functionDelegateCall(newImplementation, data);
}
// Perform rollback test if not already in progress
StorageSlot.BooleanSlot storage rollbackTesting = StorageSlot.getBooleanSlot(_ROLLBACK_SLOT);
if (!rollbackTesting.value) {
// Trigger rollback using upgradeTo from the new implementation
rollbackTesting.value = true;
Address.functionDelegateCall(
newImplementation,
abi.encodeWithSignature("upgradeTo(address)", oldImplementation)
);
rollbackTesting.value = false;
// Check rollback was effective
require(oldImplementation == _getImplementation(), "ERC1967Upgrade: upgrade breaks further upgrades");
// Finally reset to the new implementation and log the upgrade
_upgradeTo(newImplementation);
}
}
/**
* @dev Storage slot with the admin of the contract.
* This is the keccak-256 hash of "eip1967.proxy.admin" subtracted by 1, and is
* validated in the constructor.
*/
bytes32 internal constant _ADMIN_SLOT = 0xb53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d6103;
/**
* @dev Emitted when the admin account has changed.
*/
event AdminChanged(address previousAdmin, address newAdmin);
/**
* @dev Returns the current admin.
*/
function _getAdmin() internal view returns (address) {
return StorageSlot.getAddressSlot(_ADMIN_SLOT).value;
}
/**
* @dev Stores a new address in the EIP1967 admin slot.
*/
function _setAdmin(address newAdmin) private {
require(newAdmin != address(0), "ERC1967: new admin is the zero address");
StorageSlot.getAddressSlot(_ADMIN_SLOT).value = newAdmin;
}
/**
* @dev Changes the admin of the proxy.
*
* Emits an {AdminChanged} event.
*/
function _changeAdmin(address newAdmin) internal {
emit AdminChanged(_getAdmin(), newAdmin);
_setAdmin(newAdmin);
}
/**
* @dev The storage slot of the UpgradeableBeacon contract which defines the implementation for this proxy.
* This is bytes32(uint256(keccak256('eip1967.proxy.beacon')) - 1)) and is validated in the constructor.
*/
bytes32 internal constant _BEACON_SLOT = 0xa3f0ad74e5423aebfd80d3ef4346578335a9a72aeaee59ff6cb3582b35133d50;
/**
* @dev Emitted when the beacon is upgraded.
*/
event BeaconUpgraded(address indexed beacon);
/**
* @dev Returns the current beacon.
*/
function _getBeacon() internal view returns (address) {
return StorageSlot.getAddressSlot(_BEACON_SLOT).value;
}
/**
* @dev Stores a new beacon in the EIP1967 beacon slot.
*/
function _setBeacon(address newBeacon) private {
require(Address.isContract(newBeacon), "ERC1967: new beacon is not a contract");
require(
Address.isContract(IBeacon(newBeacon).implementation()),
"ERC1967: beacon implementation is not a contract"
);
StorageSlot.getAddressSlot(_BEACON_SLOT).value = newBeacon;
}
/**
* @dev Perform beacon upgrade with additional setup call. Note: This upgrades the address of the beacon, it does
* not upgrade the implementation contained in the beacon (see {UpgradeableBeacon-_setImplementation} for that).
*
* Emits a {BeaconUpgraded} event.
*/
function _upgradeBeaconToAndCall(
address newBeacon,
bytes memory data,
bool forceCall
) internal {
_setBeacon(newBeacon);
emit BeaconUpgraded(newBeacon);
if (data.length > 0 || forceCall) {
Address.functionDelegateCall(IBeacon(newBeacon).implementation(), data);
}
}
}
// Right click on the script name and hit "Run" to execute
(async () => {
try {
console.log('Running deployWithEthers script...')
const contractName = 'Storage' // Change this for other contract
const constructorArgs = [] // Put constructor args (if any) here for your contract
// Note that the script needs the ABI which is generated from the compilation artifact.
// Make sure contract is compiled and artifacts are generated
const artifactsPath = `browser/contracts/artifacts/${contractName}.json` // Change this for different path
const metadata = JSON.parse(await remix.call('fileManager', 'getFile', artifactsPath))
// 'web3Provider' is a remix global variable object
const signer = (new ethers.providers.Web3Provider(web3Provider)).getSigner()
let factory = new ethers.ContractFactory(metadata.abi, metadata.data.bytecode.object, signer);
let contract = await factory.deploy(...constructorArgs);
console.log('Contract Address: ', contract.address);
// The contract is NOT deployed yet; we must wait until it is mined
await contract.deployed()
console.log('Deployment successful.')
} catch (e) {
console.log(e.message)
}
})()
// Right click on the script name and hit "Run" to execute
(async () => {
try {
console.log('Running deployWithWeb3 script...')
const contractName = 'Storage' // Change this for other contract
const constructorArgs = [] // Put constructor args (if any) here for your contract
// Note that the script needs the ABI which is generated from the compilation artifact.
// Make sure contract is compiled and artifacts are generated
const artifactsPath = `browser/contracts/artifacts/${contractName}.json` // Change this for different path
const metadata = JSON.parse(await remix.call('fileManager', 'getFile', artifactsPath))
const accounts = await web3.eth.getAccounts()
let contract = new web3.eth.Contract(metadata.abi)
contract = contract.deploy({
data: metadata.data.bytecode.object,
arguments: constructorArgs
})
const newContractInstance = await contract.send({
from: accounts[0],
gas: 1500000,
gasPrice: '30000000000'
})
console.log('Contract deployed at address: ', newContractInstance.options.address)
} catch (e) {
console.log(e.message)
}
})()
// SPDX-License-Identifier: GPL-3.0
pragma solidity >=0.7.0 <0.9.0;
import "remix_tests.sol"; // this import is automatically injected by Remix.
import "../contracts/3_Ballot.sol";
contract BallotTest {
bytes32[] proposalNames;
Ballot ballotToTest;
function beforeAll () public {
proposalNames.push(bytes32("candidate1"));
ballotToTest = new Ballot(proposalNames);
}
function checkWinningProposal () public {
ballotToTest.vote(0);
Assert.equal(ballotToTest.winningProposal(), uint(0), "proposal at index 0 should be the winning proposal");
Assert.equal(ballotToTest.winnerName(), bytes32("candidate1"), "candidate1 should be the winner name");
}
function checkWinninProposalWithReturnValue () public view returns (bool) {
return ballotToTest.winningProposal() == 0;
}
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment