From d2f1a781ce593f2124b6d7a02facbc1082b7fecd Mon Sep 17 00:00:00 2001 From: notlongfen Date: Thu, 10 Apr 2025 00:09:50 +0700 Subject: [PATCH 1/3] Done challenge-1(Ready to deploy to Westend) --- challenge-1-vesting/.gitignore | 1 + .../contracts/TokenVesting.sol | 92 +- challenge-1-vesting/pnpm-lock.yaml | 4497 +++++++++++++++++ 3 files changed, 4582 insertions(+), 8 deletions(-) create mode 100644 challenge-1-vesting/pnpm-lock.yaml diff --git a/challenge-1-vesting/.gitignore b/challenge-1-vesting/.gitignore index e8c12ff..5ec3fb0 100644 --- a/challenge-1-vesting/.gitignore +++ b/challenge-1-vesting/.gitignore @@ -15,3 +15,4 @@ node_modules # Hardhat Ignition default folder for deployments against a local node ignition/deployments/chain-31337 +.qodo diff --git a/challenge-1-vesting/contracts/TokenVesting.sol b/challenge-1-vesting/contracts/TokenVesting.sol index 43d4c3a..9119791 100644 --- a/challenge-1-vesting/contracts/TokenVesting.sol +++ b/challenge-1-vesting/contracts/TokenVesting.sol @@ -24,24 +24,33 @@ Here's your starter code: pragma solidity ^0.8.0; import "@openzeppelin/contracts/token/ERC20/IERC20.sol"; +import "@openzeppelin/contracts/token/ERC20/utils/SafeERC20.sol"; import "@openzeppelin/contracts/access/Ownable.sol"; import "@openzeppelin/contracts/utils/Pausable.sol"; import "@openzeppelin/contracts/utils/ReentrancyGuard.sol"; contract TokenVesting is Ownable(msg.sender), Pausable, ReentrancyGuard { struct VestingSchedule { - // TODO: Define the vesting schedule struct + // TODO: Define the vesting schedule struct + uint256 totalAmount; + uint256 startTime; + uint256 cliffDuration; + uint256 vestingDuration; + uint256 amountClaimed; + bool revoked; } // Token being vested - // TODO: Add state variables - + using SafeERC20 for IERC20; + IERC20 public token; // Mapping from beneficiary to vesting schedule // TODO: Add state variables + mapping(address => VestingSchedule) public vestingSchedules; // Whitelist of beneficiaries // TODO: Add state variables + mapping(address => bool) public whitelist; // Events event VestingScheduleCreated(address indexed beneficiary, uint256 amount); @@ -51,8 +60,9 @@ contract TokenVesting is Ownable(msg.sender), Pausable, ReentrancyGuard { event BeneficiaryRemovedFromWhitelist(address indexed beneficiary); constructor(address tokenAddress) { - // TODO: Initialize the contract - + // TODO: Initialize the contract + require(tokenAddress != address(0), "Invalid token address"); + token = IERC20(tokenAddress); } // Modifier to check if beneficiary is whitelisted @@ -80,21 +90,87 @@ contract TokenVesting is Ownable(msg.sender), Pausable, ReentrancyGuard { uint256 startTime ) external onlyOwner onlyWhitelisted(beneficiary) whenNotPaused { // TODO: Implement vesting schedule creation + require( + startTime > block.timestamp, + "Start time must be in the future" + ); + require(cliffDuration > 0, "Cliff duration must be greater than 0"); + require(vestingDuration > 0, "Vesting duration must be greater than 0"); + require(amount > 0, "Amount must be greater than 0"); + require( + vestingDuration > cliffDuration, + "Vesting duration must be greater than cliff duration" + ); + + VestingSchedule memory schedule = VestingSchedule( + amount, + startTime, + cliffDuration, + vestingDuration, + 0, + false + ); + vestingSchedules[beneficiary] = schedule; + + token.safeTransferFrom(owner(), address(this), amount); + + emit VestingScheduleCreated(beneficiary, amount); } function calculateVestedAmount( address beneficiary ) public view returns (uint256) { // TODO: Implement vested amount calculation + VestingSchedule memory schedule = vestingSchedules[beneficiary]; + require(!schedule.revoked, "Vesting schedule revoked"); + + if( schedule.startTime + schedule.cliffDuration < block.timestamp) { + return 0; + } + + uint256 vestedDuration = block.timestamp - schedule.startTime; + uint256 vestedAmount = (schedule.totalAmount * vestedDuration) / schedule.vestingDuration; + + return vestedAmount; } function claimVestedTokens() external nonReentrant whenNotPaused { - // TODO: Implement token claiming + // TODO: Implement token claiming + address beneficiary = msg.sender; + VestingSchedule storage schedule = vestingSchedules[beneficiary]; + + require(!schedule.revoked, "Vesting schedule revoked"); + require(schedule.totalAmount > 0, "Total amount must be larger than 0"); + + uint256 vestedAmount = calculateVestedAmount(msg.sender); + uint256 receivableAmount = vestedAmount - schedule.amountClaimed; + schedule.amountClaimed += vestedAmount; + + token.safeTransfer(beneficiary, receivableAmount); + + emit TokensClaimed(beneficiary, vestedAmount); + } function revokeVesting(address beneficiary) external onlyOwner { // TODO: Implement vesting revocation - + VestingSchedule memory schedule = vestingSchedules[beneficiary]; + require(!schedule.revoked, "Vesting schedule revoked"); + + schedule.revoked = true; + vestingSchedules[beneficiary] = schedule; + emit VestingRevoked(beneficiary); + + uint256 vestedAmount = calculateVestedAmount(beneficiary); + uint256 unclaimedAmount = vestedAmount - schedule.amountClaimed; + uint256 unvestedAmount = schedule.totalAmount - vestedAmount; + + if (unclaimedAmount > 0) { + token.safeTransfer(beneficiary, unclaimedAmount); + } + if (unvestedAmount > 0) { + token.safeTransfer(owner(), unvestedAmount); + } } function pause() external onlyOwner { @@ -145,4 +221,4 @@ Solution template (key points to implement): - Calculate and transfer unvested tokens back - Mark schedule as revoked - Emit event -*/ \ No newline at end of file +*/ diff --git a/challenge-1-vesting/pnpm-lock.yaml b/challenge-1-vesting/pnpm-lock.yaml new file mode 100644 index 0000000..8948a73 --- /dev/null +++ b/challenge-1-vesting/pnpm-lock.yaml @@ -0,0 +1,4497 @@ +lockfileVersion: '9.0' + +settings: + autoInstallPeers: true + excludeLinksFromLockfile: false + +importers: + + .: + dependencies: + '@nomicfoundation/hardhat-ignition': + specifier: ^0.15.8 + version: 0.15.10(@nomicfoundation/hardhat-verify@2.0.13(hardhat@2.22.19(ts-node@10.9.2(@types/node@22.14.0)(typescript@5.8.3))(typescript@5.8.3)))(hardhat@2.22.19(ts-node@10.9.2(@types/node@22.14.0)(typescript@5.8.3))(typescript@5.8.3)) + '@openzeppelin/contracts': + specifier: ^5.1.0 + version: 5.2.0 + dotenv: + specifier: ^16.4.7 + version: 16.4.7 + devDependencies: + '@nomicfoundation/hardhat-toolbox': + specifier: ^5.0.0 + version: 5.0.0(b97983278a443d774ac498131468112c) + hardhat: + specifier: ^2.22.17 + version: 2.22.19(ts-node@10.9.2(@types/node@22.14.0)(typescript@5.8.3))(typescript@5.8.3) + +packages: + + '@adraffy/ens-normalize@1.10.1': + resolution: {integrity: sha512-96Z2IP3mYmF1Xg2cDm8f1gWGf/HUVedQ3FMifV4kG/PQ4yEP51xDtRAEfhVNt5f/uzpNkZHwWQuUcu6D6K+Ekw==} + + '@cspotcode/source-map-support@0.8.1': + resolution: {integrity: sha512-IchNf6dN4tHoMFIn/7OE8LWZ19Y6q/67Bmf6vnGREv8RSbBVb9LPJxEcnwrcwX6ixSvaiGoomAUvu4YSxXrVgw==} + engines: {node: '>=12'} + + '@ethereumjs/rlp@4.0.1': + resolution: {integrity: sha512-tqsQiBQDQdmPWE1xkkBq4rlSW5QZpLOUJ5RJh2/9fug+q9tnUhuZoVLk7s0scUIKTOzEtR72DFBXI4WiZcMpvw==} + engines: {node: '>=14'} + hasBin: true + + '@ethereumjs/util@8.1.0': + resolution: {integrity: sha512-zQ0IqbdX8FZ9aw11vP+dZkKDkS+kgIvQPHnSAXzP9pLu+Rfu3D3XEeLbicvoXJTYnhZiPmsZUxgdzXwNKxRPbA==} + engines: {node: '>=14'} + + '@ethersproject/abi@5.8.0': + resolution: {integrity: sha512-b9YS/43ObplgyV6SlyQsG53/vkSal0MNA1fskSC4mbnCMi8R+NkcH8K9FPYNESf6jUefBUniE4SOKms0E/KK1Q==} + + '@ethersproject/abstract-provider@5.8.0': + resolution: {integrity: sha512-wC9SFcmh4UK0oKuLJQItoQdzS/qZ51EJegK6EmAWlh+OptpQ/npECOR3QqECd8iGHC0RJb4WKbVdSfif4ammrg==} + + '@ethersproject/abstract-signer@5.8.0': + resolution: {integrity: sha512-N0XhZTswXcmIZQdYtUnd79VJzvEwXQw6PK0dTl9VoYrEBxxCPXqS0Eod7q5TNKRxe1/5WUMuR0u0nqTF/avdCA==} + + '@ethersproject/address@5.6.1': + resolution: {integrity: sha512-uOgF0kS5MJv9ZvCz7x6T2EXJSzotiybApn4XlOgoTX0xdtyVIJ7pF+6cGPxiEq/dpBiTfMiw7Yc81JcwhSYA0Q==} + + '@ethersproject/address@5.8.0': + resolution: {integrity: sha512-GhH/abcC46LJwshoN+uBNoKVFPxUuZm6dA257z0vZkKmU1+t8xTn8oK7B9qrj8W2rFRMch4gbJl6PmVxjxBEBA==} + + '@ethersproject/base64@5.8.0': + resolution: {integrity: sha512-lN0oIwfkYj9LbPx4xEkie6rAMJtySbpOAFXSDVQaBnAzYfB4X2Qr+FXJGxMoc3Bxp2Sm8OwvzMrywxyw0gLjIQ==} + + '@ethersproject/basex@5.8.0': + resolution: {integrity: sha512-PIgTszMlDRmNwW9nhS6iqtVfdTAKosA7llYXNmGPw4YAI1PUyMv28988wAb41/gHF/WqGdoLv0erHaRcHRKW2Q==} + + '@ethersproject/bignumber@5.8.0': + resolution: {integrity: sha512-ZyaT24bHaSeJon2tGPKIiHszWjD/54Sz8t57Toch475lCLljC6MgPmxk7Gtzz+ddNN5LuHea9qhAe0x3D+uYPA==} + + '@ethersproject/bytes@5.8.0': + resolution: {integrity: sha512-vTkeohgJVCPVHu5c25XWaWQOZ4v+DkGoC42/TS2ond+PARCxTJvgTFUNDZovyQ/uAQ4EcpqqowKydcdmRKjg7A==} + + '@ethersproject/constants@5.8.0': + resolution: {integrity: sha512-wigX4lrf5Vu+axVTIvNsuL6YrV4O5AXl5ubcURKMEME5TnWBouUh0CDTWxZ2GpnRn1kcCgE7l8O5+VbV9QTTcg==} + + '@ethersproject/contracts@5.8.0': + resolution: {integrity: sha512-0eFjGz9GtuAi6MZwhb4uvUM216F38xiuR0yYCjKJpNfSEy4HUM8hvqqBj9Jmm0IUz8l0xKEhWwLIhPgxNY0yvQ==} + + '@ethersproject/hash@5.8.0': + resolution: {integrity: sha512-ac/lBcTbEWW/VGJij0CNSw/wPcw9bSRgCB0AIBz8CvED/jfvDoV9hsIIiWfvWmFEi8RcXtlNwp2jv6ozWOsooA==} + + '@ethersproject/hdnode@5.8.0': + resolution: {integrity: sha512-4bK1VF6E83/3/Im0ERnnUeWOY3P1BZml4ZD3wcH8Ys0/d1h1xaFt6Zc+Dh9zXf9TapGro0T4wvO71UTCp3/uoA==} + + '@ethersproject/json-wallets@5.8.0': + resolution: {integrity: sha512-HxblNck8FVUtNxS3VTEYJAcwiKYsBIF77W15HufqlBF9gGfhmYOJtYZp8fSDZtn9y5EaXTE87zDwzxRoTFk11w==} + + '@ethersproject/keccak256@5.8.0': + resolution: {integrity: sha512-A1pkKLZSz8pDaQ1ftutZoaN46I6+jvuqugx5KYNeQOPqq+JZ0Txm7dlWesCHB5cndJSu5vP2VKptKf7cksERng==} + + '@ethersproject/logger@5.8.0': + resolution: {integrity: sha512-Qe6knGmY+zPPWTC+wQrpitodgBfH7XoceCGL5bJVejmH+yCS3R8jJm8iiWuvWbG76RUmyEG53oqv6GMVWqunjA==} + + '@ethersproject/networks@5.8.0': + resolution: {integrity: sha512-egPJh3aPVAzbHwq8DD7Po53J4OUSsA1MjQp8Vf/OZPav5rlmWUaFLiq8cvQiGK0Z5K6LYzm29+VA/p4RL1FzNg==} + + '@ethersproject/pbkdf2@5.8.0': + resolution: {integrity: sha512-wuHiv97BrzCmfEaPbUFpMjlVg/IDkZThp9Ri88BpjRleg4iePJaj2SW8AIyE8cXn5V1tuAaMj6lzvsGJkGWskg==} + + '@ethersproject/properties@5.8.0': + resolution: {integrity: sha512-PYuiEoQ+FMaZZNGrStmN7+lWjlsoufGIHdww7454FIaGdbe/p5rnaCXTr5MtBYl3NkeoVhHZuyzChPeGeKIpQw==} + + '@ethersproject/providers@5.8.0': + resolution: {integrity: sha512-3Il3oTzEx3o6kzcg9ZzbE+oCZYyY+3Zh83sKkn4s1DZfTUjIegHnN2Cm0kbn9YFy45FDVcuCLLONhU7ny0SsCw==} + + '@ethersproject/random@5.8.0': + resolution: {integrity: sha512-E4I5TDl7SVqyg4/kkA/qTfuLWAQGXmSOgYyO01So8hLfwgKvYK5snIlzxJMk72IFdG/7oh8yuSqY2KX7MMwg+A==} + + '@ethersproject/rlp@5.8.0': + resolution: {integrity: sha512-LqZgAznqDbiEunaUvykH2JAoXTT9NV0Atqk8rQN9nx9SEgThA/WMx5DnW8a9FOufo//6FZOCHZ+XiClzgbqV9Q==} + + '@ethersproject/sha2@5.8.0': + resolution: {integrity: sha512-dDOUrXr9wF/YFltgTBYS0tKslPEKr6AekjqDW2dbn1L1xmjGR+9GiKu4ajxovnrDbwxAKdHjW8jNcwfz8PAz4A==} + + '@ethersproject/signing-key@5.8.0': + resolution: {integrity: sha512-LrPW2ZxoigFi6U6aVkFN/fa9Yx/+4AtIUe4/HACTvKJdhm0eeb107EVCIQcrLZkxaSIgc/eCrX8Q1GtbH+9n3w==} + + '@ethersproject/solidity@5.8.0': + resolution: {integrity: sha512-4CxFeCgmIWamOHwYN9d+QWGxye9qQLilpgTU0XhYs1OahkclF+ewO+3V1U0mvpiuQxm5EHHmv8f7ClVII8EHsA==} + + '@ethersproject/strings@5.8.0': + resolution: {integrity: sha512-qWEAk0MAvl0LszjdfnZ2uC8xbR2wdv4cDabyHiBh3Cldq/T8dPH3V4BbBsAYJUeonwD+8afVXld274Ls+Y1xXg==} + + '@ethersproject/transactions@5.8.0': + resolution: {integrity: sha512-UglxSDjByHG0TuU17bDfCemZ3AnKO2vYrL5/2n2oXvKzvb7Cz+W9gOWXKARjp2URVwcWlQlPOEQyAviKwT4AHg==} + + '@ethersproject/units@5.8.0': + resolution: {integrity: sha512-lxq0CAnc5kMGIiWW4Mr041VT8IhNM+Pn5T3haO74XZWFulk7wH1Gv64HqE96hT4a7iiNMdOCFEBgaxWuk8ETKQ==} + + '@ethersproject/wallet@5.8.0': + resolution: {integrity: sha512-G+jnzmgg6UxurVKRKvw27h0kvG75YKXZKdlLYmAHeF32TGUzHkOFd7Zn6QHOTYRFWnfjtSSFjBowKo7vfrXzPA==} + + '@ethersproject/web@5.8.0': + resolution: {integrity: sha512-j7+Ksi/9KfGviws6Qtf9Q7KCqRhpwrYKQPs+JBA/rKVFF/yaWLHJEH3zfVP2plVu+eys0d2DlFmhoQJayFewcw==} + + '@ethersproject/wordlists@5.8.0': + resolution: {integrity: sha512-2df9bbXicZws2Sb5S6ET493uJ0Z84Fjr3pC4tu/qlnZERibZCeUVuqdtt+7Tv9xxhUxHoIekIA7avrKUWHrezg==} + + '@fastify/busboy@2.1.1': + resolution: {integrity: sha512-vBZP4NlzfOlerQTnba4aqZoMhE/a9HY7HRqoOPaETQcSQuWEIyZMHGfVu6w9wGtGK5fED5qRs2DteVCjOH60sA==} + engines: {node: '>=14'} + + '@jridgewell/resolve-uri@3.1.2': + resolution: {integrity: sha512-bRISgCIjP20/tbWSPWMEi54QVPRZExkuD9lJL+UIxUKtwVJA8wW1Trb1jMs1RFXo1CBTNZ/5hpC9QvmKWdopKw==} + engines: {node: '>=6.0.0'} + + '@jridgewell/sourcemap-codec@1.5.0': + resolution: {integrity: sha512-gv3ZRaISU3fjPAgNsriBRqGWQL6quFx04YMPW/zD8XMLsU32mhCCbfbO6KZFLjvYpCZ8zyDEgqsgf+PwPaM7GQ==} + + '@jridgewell/trace-mapping@0.3.9': + resolution: {integrity: sha512-3Belt6tdc8bPgAtbcmdtNJlirVoTmEb5e2gC94PnkwEW9jI6CAHUeoG85tjWP5WquqfavoMtMwiG4P926ZKKuQ==} + + '@metamask/eth-sig-util@4.0.1': + resolution: {integrity: sha512-tghyZKLHZjcdlDqCA3gNZmLeR0XvOE9U1qoQO9ohyAZT6Pya+H9vkBPcsyXytmYLNgVoin7CKCmweo/R43V+tQ==} + engines: {node: '>=12.0.0'} + + '@noble/curves@1.2.0': + resolution: {integrity: sha512-oYclrNgRaM9SsBUBVbb8M6DTV7ZHRTKugureoYEncY5c65HOmRzvSiTE3y5CYaPYJA/GVkrhXEoF0M3Ya9PMnw==} + + '@noble/curves@1.4.2': + resolution: {integrity: sha512-TavHr8qycMChk8UwMld0ZDRvatedkzWfH8IiaeGCfymOP5i0hSCozz9vHOL0nkwk7HRMlFnAiKpS2jrUmSybcw==} + + '@noble/hashes@1.2.0': + resolution: {integrity: sha512-FZfhjEDbT5GRswV3C6uvLPHMiVD6lQBmpoX5+eSiPaMTXte/IKqI5dykDxzZB/WBeK/CDuQRBWarPdi3FNY2zQ==} + + '@noble/hashes@1.3.2': + resolution: {integrity: sha512-MVC8EAQp7MvEcm30KWENFjgR+Mkmf+D189XJTkFIlwohU5hcBbn1ZkKq7KVTi2Hme3PMGF390DaL52beVrIihQ==} + engines: {node: '>= 16'} + + '@noble/hashes@1.4.0': + resolution: {integrity: sha512-V1JJ1WTRUqHHrOSh597hURcMqVKVGL/ea3kv0gSnEdsEZ0/+VyPghM1lMNGc00z7CIQorSvbKpuJkxvuHbvdbg==} + engines: {node: '>= 16'} + + '@noble/hashes@1.7.1': + resolution: {integrity: sha512-B8XBPsn4vT/KJAGqDzbwztd+6Yte3P4V7iafm24bxgDe/mlRuK6xmWPuCNrKt2vDafZ8MfJLlchDG/vYafQEjQ==} + engines: {node: ^14.21.3 || >=16} + + '@noble/secp256k1@1.7.1': + resolution: {integrity: sha512-hOUk6AyBFmqVrv7k5WAw/LpszxVbj9gGN4JRkIX52fdFAj1UA61KXmZDvqVEm+pOyec3+fIeZB02LYa/pWOArw==} + + '@nodelib/fs.scandir@2.1.5': + resolution: {integrity: sha512-vq24Bq3ym5HEQm2NKCr3yXDwjc7vTsEThRDnkp2DK9p1uqLR+DHurm/NOTo0KG7HYHU7eppKZj3MyqYuMBf62g==} + engines: {node: '>= 8'} + + '@nodelib/fs.stat@2.0.5': + resolution: {integrity: sha512-RkhPPp2zrqDAQA/2jNhnztcPAlv64XdhIp7a7454A5ovI7Bukxgt7MX7udwAu3zg1DcpPU0rz3VV1SeaqvY4+A==} + engines: {node: '>= 8'} + + '@nodelib/fs.walk@1.2.8': + resolution: {integrity: sha512-oGB+UxlgWcgQkgwo8GcEGwemoTFt3FIO9ababBmaGwXIoBKZ+GTy0pP185beGg7Llih/NSHSV2XAs1lnznocSg==} + engines: {node: '>= 8'} + + '@nomicfoundation/edr-darwin-arm64@0.8.0': + resolution: {integrity: sha512-sKTmOu/P5YYhxT0ThN2Pe3hmCE/5Ag6K/eYoiavjLWbR7HEb5ZwPu2rC3DpuUk1H+UKJqt7o4/xIgJxqw9wu6A==} + engines: {node: '>= 18'} + + '@nomicfoundation/edr-darwin-x64@0.8.0': + resolution: {integrity: sha512-8ymEtWw1xf1Id1cc42XIeE+9wyo3Dpn9OD/X8GiaMz9R70Ebmj2g+FrbETu8o6UM+aL28sBZQCiCzjlft2yWAg==} + engines: {node: '>= 18'} + + '@nomicfoundation/edr-linux-arm64-gnu@0.8.0': + resolution: {integrity: sha512-h/wWzS2EyQuycz+x/SjMRbyA+QMCCVmotRsgM1WycPARvVZWIVfwRRsKoXKdCftsb3S8NTprqBdJlOmsFyETFA==} + engines: {node: '>= 18'} + + '@nomicfoundation/edr-linux-arm64-musl@0.8.0': + resolution: {integrity: sha512-gnWxDgdkka0O9GpPX/gZT3REeKYV28Guyg13+Vj/bbLpmK1HmGh6Kx+fMhWv+Ht/wEmGDBGMCW1wdyT/CftJaQ==} + engines: {node: '>= 18'} + + '@nomicfoundation/edr-linux-x64-gnu@0.8.0': + resolution: {integrity: sha512-DTMiAkgAx+nyxcxKyxFZk1HPakXXUCgrmei7r5G7kngiggiGp/AUuBBWFHi8xvl2y04GYhro5Wp+KprnLVoAPA==} + engines: {node: '>= 18'} + + '@nomicfoundation/edr-linux-x64-musl@0.8.0': + resolution: {integrity: sha512-iTITWe0Zj8cNqS0xTblmxPbHVWwEtMiDC+Yxwr64d7QBn/1W0ilFQ16J8gB6RVVFU3GpfNyoeg3tUoMpSnrm6Q==} + engines: {node: '>= 18'} + + '@nomicfoundation/edr-win32-x64-msvc@0.8.0': + resolution: {integrity: sha512-mNRDyd/C3j7RMcwapifzv2K57sfA5xOw8g2U84ZDvgSrXVXLC99ZPxn9kmolb+dz8VMm9FONTZz9ESS6v8DTnA==} + engines: {node: '>= 18'} + + '@nomicfoundation/edr@0.8.0': + resolution: {integrity: sha512-dwWRrghSVBQDpt0wP+6RXD8BMz2i/9TI34TcmZqeEAZuCLei3U9KZRgGTKVAM1rMRvrpf5ROfPqrWNetKVUTag==} + engines: {node: '>= 18'} + + '@nomicfoundation/ethereumjs-common@4.0.4': + resolution: {integrity: sha512-9Rgb658lcWsjiicr5GzNCjI1llow/7r0k50dLL95OJ+6iZJcVbi15r3Y0xh2cIO+zgX0WIHcbzIu6FeQf9KPrg==} + + '@nomicfoundation/ethereumjs-rlp@5.0.4': + resolution: {integrity: sha512-8H1S3s8F6QueOc/X92SdrA4RDenpiAEqMg5vJH99kcQaCy/a3Q6fgseo75mgWlbanGJXSlAPtnCeG9jvfTYXlw==} + engines: {node: '>=18'} + hasBin: true + + '@nomicfoundation/ethereumjs-tx@5.0.4': + resolution: {integrity: sha512-Xjv8wAKJGMrP1f0n2PeyfFCCojHd7iS3s/Ab7qzF1S64kxZ8Z22LCMynArYsVqiFx6rzYy548HNVEyI+AYN/kw==} + engines: {node: '>=18'} + peerDependencies: + c-kzg: ^2.1.2 + peerDependenciesMeta: + c-kzg: + optional: true + + '@nomicfoundation/ethereumjs-util@9.0.4': + resolution: {integrity: sha512-sLOzjnSrlx9Bb9EFNtHzK/FJFsfg2re6bsGqinFinH1gCqVfz9YYlXiMWwDM4C/L4ywuHFCYwfKTVr/QHQcU0Q==} + engines: {node: '>=18'} + peerDependencies: + c-kzg: ^2.1.2 + peerDependenciesMeta: + c-kzg: + optional: true + + '@nomicfoundation/hardhat-chai-matchers@2.0.8': + resolution: {integrity: sha512-Z5PiCXH4xhNLASROlSUOADfhfpfhYO6D7Hn9xp8PddmHey0jq704cr6kfU8TRrQ4PUZbpfsZadPj+pCfZdjPIg==} + peerDependencies: + '@nomicfoundation/hardhat-ethers': ^3.0.0 + chai: ^4.2.0 + ethers: ^6.1.0 + hardhat: ^2.9.4 + + '@nomicfoundation/hardhat-ethers@3.0.8': + resolution: {integrity: sha512-zhOZ4hdRORls31DTOqg+GmEZM0ujly8GGIuRY7t7szEk2zW/arY1qDug/py8AEktT00v5K+b6RvbVog+va51IA==} + peerDependencies: + ethers: ^6.1.0 + hardhat: ^2.0.0 + + '@nomicfoundation/hardhat-ignition-ethers@0.15.10': + resolution: {integrity: sha512-P90glRiBbR4mnMKP/LePovfUJjYT2YWJjx7118i7yxssUwcaW9wFohb4bFh+236N1tqM4q7aGx9cBvHNgve3zA==} + peerDependencies: + '@nomicfoundation/hardhat-ethers': ^3.0.4 + '@nomicfoundation/hardhat-ignition': ^0.15.10 + '@nomicfoundation/ignition-core': ^0.15.10 + ethers: ^6.7.0 + hardhat: ^2.18.0 + + '@nomicfoundation/hardhat-ignition@0.15.10': + resolution: {integrity: sha512-UScXyLLG5rEm+ANchQYCDOsskdXl6ux3oCPgC24PKE/QMJEib5crGZIo8spAyzdK6vOnRW6i4FG+1qvoO0AGWA==} + peerDependencies: + '@nomicfoundation/hardhat-verify': ^2.0.1 + hardhat: ^2.18.0 + + '@nomicfoundation/hardhat-network-helpers@1.0.12': + resolution: {integrity: sha512-xTNQNI/9xkHvjmCJnJOTyqDSl8uq1rKb2WOVmixQxFtRd7Oa3ecO8zM0cyC2YmOK+jHB9WPZ+F/ijkHg1CoORA==} + peerDependencies: + hardhat: ^2.9.5 + + '@nomicfoundation/hardhat-toolbox@5.0.0': + resolution: {integrity: sha512-FnUtUC5PsakCbwiVNsqlXVIWG5JIb5CEZoSXbJUsEBun22Bivx2jhF1/q9iQbzuaGpJKFQyOhemPB2+XlEE6pQ==} + peerDependencies: + '@nomicfoundation/hardhat-chai-matchers': ^2.0.0 + '@nomicfoundation/hardhat-ethers': ^3.0.0 + '@nomicfoundation/hardhat-ignition-ethers': ^0.15.0 + '@nomicfoundation/hardhat-network-helpers': ^1.0.0 + '@nomicfoundation/hardhat-verify': ^2.0.0 + '@typechain/ethers-v6': ^0.5.0 + '@typechain/hardhat': ^9.0.0 + '@types/chai': ^4.2.0 + '@types/mocha': '>=9.1.0' + '@types/node': '>=18.0.0' + chai: ^4.2.0 + ethers: ^6.4.0 + hardhat: ^2.11.0 + hardhat-gas-reporter: ^1.0.8 + solidity-coverage: ^0.8.1 + ts-node: '>=8.0.0' + typechain: ^8.3.0 + typescript: '>=4.5.0' + + '@nomicfoundation/hardhat-verify@2.0.13': + resolution: {integrity: sha512-i57GX1sC0kYGyRVnbQrjjyBTpWTKgrvKC+jH8CMKV6gHp959Upb8lKaZ58WRHIU0espkulTxLnacYeUDirwJ2g==} + peerDependencies: + hardhat: ^2.0.4 + + '@nomicfoundation/ignition-core@0.15.10': + resolution: {integrity: sha512-AWvCviNlBkPT8EKcg34N+yUdQTYFiC/HdpfFZdw8oMFuAs9SMZE0zQA9gJQSCay41GbuyXt2Kietp5/1/nlBIA==} + + '@nomicfoundation/ignition-ui@0.15.10': + resolution: {integrity: sha512-82XQPF+1fvxTimDUPgDVwpTjHjfjFgFs84rERbBiMLQbz6sPtgTlV8HHrlbMx8tT/JKCI/SCU4gxV8xA4CPfcg==} + + '@nomicfoundation/solidity-analyzer-darwin-arm64@0.1.2': + resolution: {integrity: sha512-JaqcWPDZENCvm++lFFGjrDd8mxtf+CtLd2MiXvMNTBD33dContTZ9TWETwNFwg7JTJT5Q9HEecH7FA+HTSsIUw==} + engines: {node: '>= 12'} + + '@nomicfoundation/solidity-analyzer-darwin-x64@0.1.2': + resolution: {integrity: sha512-fZNmVztrSXC03e9RONBT+CiksSeYcxI1wlzqyr0L7hsQlK1fzV+f04g2JtQ1c/Fe74ZwdV6aQBdd6Uwl1052sw==} + engines: {node: '>= 12'} + + '@nomicfoundation/solidity-analyzer-linux-arm64-gnu@0.1.2': + resolution: {integrity: sha512-3d54oc+9ZVBuB6nbp8wHylk4xh0N0Gc+bk+/uJae+rUgbOBwQSfuGIbAZt1wBXs5REkSmynEGcqx6DutoK0tPA==} + engines: {node: '>= 12'} + + '@nomicfoundation/solidity-analyzer-linux-arm64-musl@0.1.2': + resolution: {integrity: sha512-iDJfR2qf55vgsg7BtJa7iPiFAsYf2d0Tv/0B+vhtnI16+wfQeTbP7teookbGvAo0eJo7aLLm0xfS/GTkvHIucA==} + engines: {node: '>= 12'} + + '@nomicfoundation/solidity-analyzer-linux-x64-gnu@0.1.2': + resolution: {integrity: sha512-9dlHMAt5/2cpWyuJ9fQNOUXFB/vgSFORg1jpjX1Mh9hJ/MfZXlDdHQ+DpFCs32Zk5pxRBb07yGvSHk9/fezL+g==} + engines: {node: '>= 12'} + + '@nomicfoundation/solidity-analyzer-linux-x64-musl@0.1.2': + resolution: {integrity: sha512-GzzVeeJob3lfrSlDKQw2bRJ8rBf6mEYaWY+gW0JnTDHINA0s2gPR4km5RLIj1xeZZOYz4zRw+AEeYgLRqB2NXg==} + engines: {node: '>= 12'} + + '@nomicfoundation/solidity-analyzer-win32-x64-msvc@0.1.2': + resolution: {integrity: sha512-Fdjli4DCcFHb4Zgsz0uEJXZ2K7VEO+w5KVv7HmT7WO10iODdU9csC2az4jrhEsRtiR9Gfd74FlG0NYlw1BMdyA==} + engines: {node: '>= 12'} + + '@nomicfoundation/solidity-analyzer@0.1.2': + resolution: {integrity: sha512-q4n32/FNKIhQ3zQGGw5CvPF6GTvDCpYwIf7bEY/dZTZbgfDsHyjJwURxUJf3VQuuJj+fDIFl4+KkBVbw4Ef6jA==} + engines: {node: '>= 12'} + + '@openzeppelin/contracts@5.2.0': + resolution: {integrity: sha512-bxjNie5z89W1Ea0NZLZluFh8PrFNn9DH8DQlujEok2yjsOlraUPKID5p1Wk3qdNbf6XkQ1Os2RvfiHrrXLHWKA==} + + '@scure/base@1.1.9': + resolution: {integrity: sha512-8YKhl8GHiNI/pU2VMaofa2Tor7PJRAjwQLBBuilkJ9L5+13yVbC7JO/wS7piioAvPSwR3JKM1IJ/u4xQzbcXKg==} + + '@scure/bip32@1.1.5': + resolution: {integrity: sha512-XyNh1rB0SkEqd3tXcXMi+Xe1fvg+kUIcoRIEujP1Jgv7DqW2r9lg3Ah0NkFaCs9sTkQAQA8kw7xiRXzENi9Rtw==} + + '@scure/bip32@1.4.0': + resolution: {integrity: sha512-sVUpc0Vq3tXCkDGYVWGIZTRfnvu8LoTDaev7vbwh0omSvVORONr960MQWdKqJDCReIEmTj3PAr73O3aoxz7OPg==} + + '@scure/bip39@1.1.1': + resolution: {integrity: sha512-t+wDck2rVkh65Hmv280fYdVdY25J9YeEUIgn2LG1WM6gxFkGzcksoDiUkWVpVp3Oex9xGC68JU2dSbUfwZ2jPg==} + + '@scure/bip39@1.3.0': + resolution: {integrity: sha512-disdg7gHuTDZtY+ZdkmLpPCk7fxZSu3gBiEGuoC1XYxv9cGx3Z6cpTggCgW6odSOOIXCiDjuGejW+aJKCY/pIQ==} + + '@sentry/core@5.30.0': + resolution: {integrity: sha512-TmfrII8w1PQZSZgPpUESqjB+jC6MvZJZdLtE/0hZ+SrnKhW3x5WlYLvTXZpcWePYBku7rl2wn1RZu6uT0qCTeg==} + engines: {node: '>=6'} + + '@sentry/hub@5.30.0': + resolution: {integrity: sha512-2tYrGnzb1gKz2EkMDQcfLrDTvmGcQPuWxLnJKXJvYTQDGLlEvi2tWz1VIHjunmOvJrB5aIQLhm+dcMRwFZDCqQ==} + engines: {node: '>=6'} + + '@sentry/minimal@5.30.0': + resolution: {integrity: sha512-BwWb/owZKtkDX+Sc4zCSTNcvZUq7YcH3uAVlmh/gtR9rmUvbzAA3ewLuB3myi4wWRAMEtny6+J/FN/x+2wn9Xw==} + engines: {node: '>=6'} + + '@sentry/node@5.30.0': + resolution: {integrity: sha512-Br5oyVBF0fZo6ZS9bxbJZG4ApAjRqAnqFFurMVJJdunNb80brh7a5Qva2kjhm+U6r9NJAB5OmDyPkA1Qnt+QVg==} + engines: {node: '>=6'} + + '@sentry/tracing@5.30.0': + resolution: {integrity: sha512-dUFowCr0AIMwiLD7Fs314Mdzcug+gBVo/+NCMyDw8tFxJkwWAKl7Qa2OZxLQ0ZHjakcj1hNKfCQJ9rhyfOl4Aw==} + engines: {node: '>=6'} + + '@sentry/types@5.30.0': + resolution: {integrity: sha512-R8xOqlSTZ+htqrfteCWU5Nk0CDN5ApUTvrlvBuiH1DyP6czDZ4ktbZB0hAgBlVcK0U+qpD3ag3Tqqpa5Q67rPw==} + engines: {node: '>=6'} + + '@sentry/utils@5.30.0': + resolution: {integrity: sha512-zaYmoH0NWWtvnJjC9/CBseXMtKHm/tm40sz3YfJRxeQjyzRqNQPgivpd9R/oDJCYj999mzdW382p/qi2ypjLww==} + engines: {node: '>=6'} + + '@solidity-parser/parser@0.14.5': + resolution: {integrity: sha512-6dKnHZn7fg/iQATVEzqyUOyEidbn05q7YA2mQ9hC0MMXhhV3/JrsxmFSYZAcr7j1yUP700LLhTruvJ3MiQmjJg==} + + '@solidity-parser/parser@0.19.0': + resolution: {integrity: sha512-RV16k/qIxW/wWc+mLzV3ARyKUaMUTBy9tOLMzFhtNSKYeTAanQ3a5MudJKf/8arIFnA2L27SNjarQKmFg0w/jA==} + + '@tsconfig/node10@1.0.11': + resolution: {integrity: sha512-DcRjDCujK/kCk/cUe8Xz8ZSpm8mS3mNNpta+jGCA6USEDfktlNvm1+IuZ9eTcDbNk41BHwpHHeW+N1lKCz4zOw==} + + '@tsconfig/node12@1.0.11': + resolution: {integrity: sha512-cqefuRsh12pWyGsIoBKJA9luFu3mRxCA+ORZvA4ktLSzIuCUtWVxGIuXigEwO5/ywWFMZ2QEGKWvkZG1zDMTag==} + + '@tsconfig/node14@1.0.3': + resolution: {integrity: sha512-ysT8mhdixWK6Hw3i1V2AeRqZ5WfXg1G43mqoYlM2nc6388Fq5jcXyr5mRsqViLx/GJYdoL0bfXD8nmF+Zn/Iow==} + + '@tsconfig/node16@1.0.4': + resolution: {integrity: sha512-vxhUy4J8lyeyinH7Azl1pdd43GJhZH/tP2weN8TntQblOY+A0XbT8DJk1/oCPuOOyg/Ja757rG0CgHcWC8OfMA==} + + '@typechain/ethers-v6@0.5.1': + resolution: {integrity: sha512-F+GklO8jBWlsaVV+9oHaPh5NJdd6rAKN4tklGfInX1Q7h0xPgVLP39Jl3eCulPB5qexI71ZFHwbljx4ZXNfouA==} + peerDependencies: + ethers: 6.x + typechain: ^8.3.2 + typescript: '>=4.7.0' + + '@typechain/hardhat@9.1.0': + resolution: {integrity: sha512-mtaUlzLlkqTlfPwB3FORdejqBskSnh+Jl8AIJGjXNAQfRQ4ofHADPl1+oU7Z3pAJzmZbUXII8MhOLQltcHgKnA==} + peerDependencies: + '@typechain/ethers-v6': ^0.5.1 + ethers: ^6.1.0 + hardhat: ^2.9.9 + typechain: ^8.3.2 + + '@types/bn.js@4.11.6': + resolution: {integrity: sha512-pqr857jrp2kPuO9uRjZ3PwnJTjoQy+fcdxvBTvHm6dkmEL9q+hDD/2j/0ELOBPtPnS8LjCX0gI9nbl8lVkadpg==} + + '@types/bn.js@5.1.6': + resolution: {integrity: sha512-Xh8vSwUeMKeYYrj3cX4lGQgFSF/N03r+tv4AiLl1SucqV+uTQpxRcnM8AkXKHwYP9ZPXOYXRr2KPXpVlIvqh9w==} + + '@types/chai-as-promised@7.1.8': + resolution: {integrity: sha512-ThlRVIJhr69FLlh6IctTXFkmhtP3NpMZ2QGq69StYLyKZFp/HOp1VdKZj7RvfNWYYcJ1xlbLGLLWj1UvP5u/Gw==} + + '@types/chai@4.3.20': + resolution: {integrity: sha512-/pC9HAB5I/xMlc5FP77qjCnI16ChlJfW0tGa0IUcFn38VJrTV6DeZ60NU5KZBtaOZqjdpwTWohz5HU1RrhiYxQ==} + + '@types/concat-stream@1.6.1': + resolution: {integrity: sha512-eHE4cQPoj6ngxBZMvVf6Hw7Mh4jMW4U9lpGmS5GBPB9RYxlFg+CHaVN7ErNY4W9XfLIEn20b4VDYaIrbq0q4uA==} + + '@types/form-data@0.0.33': + resolution: {integrity: sha512-8BSvG1kGm83cyJITQMZSulnl6QV8jqAGreJsc5tPu1Jq0vTSOiY/k24Wx82JRpWwZSqrala6sd5rWi6aNXvqcw==} + + '@types/glob@7.2.0': + resolution: {integrity: sha512-ZUxbzKl0IfJILTS6t7ip5fQQM/J3TJYubDm3nMbgubNNYS62eXeUpoLUC8/7fJNiFYHTrGPQn7hspDUzIHX3UA==} + + '@types/lru-cache@5.1.1': + resolution: {integrity: sha512-ssE3Vlrys7sdIzs5LOxCzTVMsU7i9oa/IaW92wF32JFb3CVczqOkru2xspuKczHEbG3nvmPY7IFqVmGGHdNbYw==} + + '@types/minimatch@5.1.2': + resolution: {integrity: sha512-K0VQKziLUWkVKiRVrx4a40iPaxTUefQmjtkQofBkYRcoaaL/8rhwDWww9qWbrgicNOgnpIsMxyNIUM4+n6dUIA==} + + '@types/mocha@10.0.10': + resolution: {integrity: sha512-xPyYSz1cMPnJQhl0CLMH68j3gprKZaTjG3s5Vi+fDgx+uhG9NOXwbVt52eFS8ECyXhyKcjDLCBEqBExKuiZb7Q==} + + '@types/node@10.17.60': + resolution: {integrity: sha512-F0KIgDJfy2nA3zMLmWGKxcH2ZVEtCZXHHdOQs2gSaQ27+lNeEfGxzkIw90aXswATX7AZ33tahPbzy6KAfUreVw==} + + '@types/node@22.14.0': + resolution: {integrity: sha512-Kmpl+z84ILoG+3T/zQFyAJsU6EPTmOCj8/2+83fSN6djd6I4o7uOuGIH6vq3PrjY5BGitSbFuMN18j3iknubbA==} + + '@types/node@22.7.5': + resolution: {integrity: sha512-jML7s2NAzMWc//QSJ1a3prpk78cOPchGvXJsC3C6R6PSMoooztvRVQEz89gmBTBY1SPMaqo5teB4uNHPdetShQ==} + + '@types/node@8.10.66': + resolution: {integrity: sha512-tktOkFUA4kXx2hhhrB8bIFb5TbwzS4uOhKEmwiD+NoiL0qtP2OQ9mFldbgD4dV1djrlBYP6eBuQZiWjuHUpqFw==} + + '@types/pbkdf2@3.1.2': + resolution: {integrity: sha512-uRwJqmiXmh9++aSu1VNEn3iIxWOhd8AHXNSdlaLfdAAdSTY9jYVeGWnzejM3dvrkbqE3/hyQkQQ29IFATEGlew==} + + '@types/prettier@2.7.3': + resolution: {integrity: sha512-+68kP9yzs4LMp7VNh8gdzMSPZFL44MLGqiHWvttYJe+6qnuVr4Ek9wSBQoveqY/r+LwjCcU29kNVkidwim+kYA==} + + '@types/qs@6.9.18': + resolution: {integrity: sha512-kK7dgTYDyGqS+e2Q4aK9X3D7q234CIZ1Bv0q/7Z5IwRDoADNU81xXJK/YVyLbLTZCoIwUoDoffFeF+p/eIklAA==} + + '@types/secp256k1@4.0.6': + resolution: {integrity: sha512-hHxJU6PAEUn0TP4S/ZOzuTUvJWuZ6eIKeNKb5RBpODvSl6hp1Wrw4s7ATY50rklRCScUDpHzVA/DQdSjJ3UoYQ==} + + abbrev@1.0.9: + resolution: {integrity: sha512-LEyx4aLEC3x6T0UguF6YILf+ntvmOaWsVfENmIW0E9H09vKlLDGelMjjSm0jkDHALj8A8quZ/HapKNigzwge+Q==} + + acorn-walk@8.3.4: + resolution: {integrity: sha512-ueEepnujpqee2o5aIYnvHU6C0A42MNdsIDeqy5BydrkuC5R1ZuUFnm27EeFJGoEHJQgn3uleRvmTXaJgfXbt4g==} + engines: {node: '>=0.4.0'} + + acorn@8.14.1: + resolution: {integrity: sha512-OvQ/2pUDKmgfCg++xsTX1wGxfTaszcHVcTctW4UJB4hibJx2HXxxO5UmVgyjMa+ZDsiaf5wWLXYpRWMmBI0QHg==} + engines: {node: '>=0.4.0'} + hasBin: true + + adm-zip@0.4.16: + resolution: {integrity: sha512-TFi4HBKSGfIKsK5YCkKaaFG2m4PEDyViZmEwof3MTIgzimHLto6muaHVpbrljdIvIrFZzEq/p4nafOeLcYegrg==} + engines: {node: '>=0.3.0'} + + aes-js@3.0.0: + resolution: {integrity: sha512-H7wUZRn8WpTq9jocdxQ2c8x2sKo9ZVmzfRE13GiNJXfp7NcKYEdvl3vspKjXox6RIG2VtaRe4JFvxG4rqp2Zuw==} + + aes-js@4.0.0-beta.5: + resolution: {integrity: sha512-G965FqalsNyrPqgEGON7nIx1e/OVENSgiEIzyC63haUMuvNnwIgIjMs52hlTCKhkBny7A2ORNlfY9Zu+jmGk1Q==} + + agent-base@6.0.2: + resolution: {integrity: sha512-RZNwNclF7+MS/8bDg70amg32dyeZGZxiDuQmZxKLAlQjr3jGyLx+4Kkk58UO7D2QdgFIQCovuSuZESne6RG6XQ==} + engines: {node: '>= 6.0.0'} + + aggregate-error@3.1.0: + resolution: {integrity: sha512-4I7Td01quW/RpocfNayFdFVk1qSuoh0E7JrbRJ16nH01HhKFQ88INq9Sd+nd72zqRySlr9BmDA8xlEJ6vJMrYA==} + engines: {node: '>=8'} + + ajv@8.17.1: + resolution: {integrity: sha512-B/gBuNg5SiMTrPkC+A2+cW0RszwxYmn6VYxB/inlBStS5nx6xHIt/ehKRhIMhqusl7a8LjQoZnjCs5vhwxOQ1g==} + + amdefine@1.0.1: + resolution: {integrity: sha512-S2Hw0TtNkMJhIabBwIojKL9YHO5T0n5eNqWJ7Lrlel/zDbftQpxpapi8tZs3X1HWa+u+QeydGmzzNU0m09+Rcg==} + engines: {node: '>=0.4.2'} + + ansi-align@3.0.1: + resolution: {integrity: sha512-IOfwwBF5iczOjp/WeY4YxyjqAFMQoZufdQWDd19SEExbVLNXqvpzSJ/M7Za4/sCPmQ0+GRquoA7bGcINcxew6w==} + + ansi-colors@4.1.3: + resolution: {integrity: sha512-/6w/C21Pm1A7aZitlI5Ni/2J6FFQN8i1Cvz3kHABAAbw93v/NlvKdVOqz7CCWz/3iv/JplRSEEZ83XION15ovw==} + engines: {node: '>=6'} + + ansi-escapes@4.3.2: + resolution: {integrity: sha512-gKXj5ALrKWQLsYG9jlTRmR/xKluxHV+Z9QEwNIgCfM1/uwPMCuzVVnh5mwTd+OuBZcwSIMbqssNWRm1lE51QaQ==} + engines: {node: '>=8'} + + ansi-regex@3.0.1: + resolution: {integrity: sha512-+O9Jct8wf++lXxxFc4hc8LsjaSq0HFzzL7cVsw8pRDIPdjKD2mT4ytDZlLuSBZ4cLKZFXIrMGO7DbQCtMJJMKw==} + engines: {node: '>=4'} + + ansi-regex@5.0.1: + resolution: {integrity: sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==} + engines: {node: '>=8'} + + ansi-styles@3.2.1: + resolution: {integrity: sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==} + engines: {node: '>=4'} + + ansi-styles@4.3.0: + resolution: {integrity: sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==} + engines: {node: '>=8'} + + antlr4ts@0.5.0-alpha.4: + resolution: {integrity: sha512-WPQDt1B74OfPv/IMS2ekXAKkTZIHl88uMetg6q3OTqgFxZ/dxDXI0EWLyZid/1Pe6hTftyg5N7gel5wNAGxXyQ==} + + anymatch@3.1.3: + resolution: {integrity: sha512-KMReFUr0B4t+D+OBkjR3KYqvocp2XaSzO55UcB6mgQMd3KbcE+mWTyvVV7D/zsdEbNnV6acZUutkiHQXvTr1Rw==} + engines: {node: '>= 8'} + + arg@4.1.3: + resolution: {integrity: sha512-58S9QDqG0Xx27YwPSt9fJxivjYl432YCwfDMfZ+71RAqUrZef7LrKQZ3LHLOwCS4FLNBplP533Zx895SeOCHvA==} + + argparse@1.0.10: + resolution: {integrity: sha512-o5Roy6tNG4SL/FOkCAN6RzjiakZS25RLYFrcMttJqbdd8BWrnA+fGz57iN5Pb06pvBGvl5gQ0B48dJlslXvoTg==} + + argparse@2.0.1: + resolution: {integrity: sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q==} + + array-back@3.1.0: + resolution: {integrity: sha512-TkuxA4UCOvxuDK6NZYXCalszEzj+TLszyASooky+i742l9TqsOdYCMJJupxRic61hwquNtppB3hgcuq9SVSH1Q==} + engines: {node: '>=6'} + + array-back@4.0.2: + resolution: {integrity: sha512-NbdMezxqf94cnNfWLL7V/im0Ub+Anbb0IoZhvzie8+4HJ4nMQuzHuy49FkGYCJK2yAloZ3meiB6AVMClbrI1vg==} + engines: {node: '>=8'} + + array-union@2.1.0: + resolution: {integrity: sha512-HGyxoOTYUyCM6stUe6EJgnd4EoewAI7zMdfqO+kGjnlZmBDz/cR5pf8r/cR4Wq60sL/p0IkcjUEEPwS3GFrIyw==} + engines: {node: '>=8'} + + array-uniq@1.0.3: + resolution: {integrity: sha512-MNha4BWQ6JbwhFhj03YK552f7cb3AzoE8SzeljgChvL1dl3IcvggXVz1DilzySZkCja+CXuZbdW7yATchWn8/Q==} + engines: {node: '>=0.10.0'} + + asap@2.0.6: + resolution: {integrity: sha512-BSHWgDSAiKs50o2Re8ppvp3seVHXSRM44cdSsT9FfNEUUZLOGWVCsiWaRPWM1Znn+mqZ1OfVZ3z3DWEzSp7hRA==} + + assertion-error@1.1.0: + resolution: {integrity: sha512-jgsaNduz+ndvGyFt3uSuWqvy4lCnIJiovtouQN5JZHOKCS2QuhEdbcQHFhVksz2N2U9hXJo8odG7ETyWlEeuDw==} + + astral-regex@2.0.0: + resolution: {integrity: sha512-Z7tMw1ytTXt5jqMcOP+OQteU1VuNK9Y02uuJtKQ1Sv69jXQKKg5cibLwGJow8yzZP+eAc18EmLGPal0bp36rvQ==} + engines: {node: '>=8'} + + async@1.5.2: + resolution: {integrity: sha512-nSVgobk4rv61R9PUSDtYt7mPVB2olxNR5RWJcAsH676/ef11bUZwvu7+RGYrYauVdDPcO519v68wRhXQtxsV9w==} + + asynckit@0.4.0: + resolution: {integrity: sha512-Oei9OH4tRh0YqU3GxhX79dM/mwVgvbZJaSNaRk+bshkj0S5cfHcgYakreBjrHwatXKbz+IoIdYLxrKim2MjW0Q==} + + at-least-node@1.0.0: + resolution: {integrity: sha512-+q/t7Ekv1EDY2l6Gda6LLiX14rU9TV20Wa3ofeQmwPFZbOMo9DXrLbOjFaaclkXKWidIaopwAObQDqwWtGUjqg==} + engines: {node: '>= 4.0.0'} + + axios@1.8.4: + resolution: {integrity: sha512-eBSYY4Y68NNlHbHBMdeDmKNtDgXWhQsJcGqzO3iLUM0GraQFSS9cVgPX5I9b3lbdFKyYoAEGAZF1DwhTaljNAw==} + + balanced-match@1.0.2: + resolution: {integrity: sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==} + + base-x@3.0.11: + resolution: {integrity: sha512-xz7wQ8xDhdyP7tQxwdteLYeFfS68tSMNCZ/Y37WJ4bhGfKPpqEIlmIyueQHqOyoPhE6xNUqjzRr8ra0eF9VRvA==} + + bech32@1.1.4: + resolution: {integrity: sha512-s0IrSOzLlbvX7yp4WBfPITzpAU8sqQcpsmwXDiKwrG4r491vwCO/XpejasRNl0piBMe/DvP4Tz0mIS/X1DPJBQ==} + + binary-extensions@2.3.0: + resolution: {integrity: sha512-Ceh+7ox5qe7LJuLHoY0feh3pHuUDHAcRUeyL2VYghZwfpkNIy/+8Ocg0a3UuSoYzavmylwuLWQOf3hl0jjMMIw==} + engines: {node: '>=8'} + + blakejs@1.2.1: + resolution: {integrity: sha512-QXUSXI3QVc/gJME0dBpXrag1kbzOqCjCX8/b54ntNyW6sjtoqxqRk3LTmXzaJoh71zMsDCjM+47jS7XiwN/+fQ==} + + bn.js@4.11.6: + resolution: {integrity: sha512-XWwnNNFCuuSQ0m3r3C4LE3EiORltHd9M05pq6FOlVeiophzRbMo50Sbz1ehl8K3Z+jw9+vmgnXefY1hz8X+2wA==} + + bn.js@4.12.1: + resolution: {integrity: sha512-k8TVBiPkPJT9uHLdOKfFpqcfprwBFOAAXXozRubr7R7PfIuKvQlzcI4M0pALeqXN09vdaMbUdUj+pass+uULAg==} + + bn.js@5.2.1: + resolution: {integrity: sha512-eXRvHzWyYPBuB4NBy0cmYQjGitUrtqwbvlzP3G6VFnNRbsZQIxQ10PbKKHt8gZ/HW/D/747aDl+QkDqg3KQLMQ==} + + boxen@5.1.2: + resolution: {integrity: sha512-9gYgQKXx+1nP8mP7CzFyaUARhg7D3n1dF/FnErWmu9l6JvGpNUN278h0aSb+QjoiKSWG+iZ3uHrcqk0qrY9RQQ==} + engines: {node: '>=10'} + + brace-expansion@1.1.11: + resolution: {integrity: sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==} + + brace-expansion@2.0.1: + resolution: {integrity: sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA==} + + braces@3.0.3: + resolution: {integrity: sha512-yQbXgO/OSZVD2IsiLlro+7Hf6Q18EJrKSEsdoMzKePKXct3gvD8oLcOQdIzGupr5Fj+EDe8gO/lxc1BzfMpxvA==} + engines: {node: '>=8'} + + brorand@1.1.0: + resolution: {integrity: sha512-cKV8tMCEpQs4hK/ik71d6LrPOnpkpGBR0wzxqr68g2m/LB2GxVYQroAjMJZRVM1Y4BCjCKc3vAamxSzOY2RP+w==} + + browser-stdout@1.3.1: + resolution: {integrity: sha512-qhAVI1+Av2X7qelOfAIYwXONood6XlZE/fXaBSmW/T5SzLAmCgzi+eiWE7fUvbHaeNBQH13UftjpXxsfLkMpgw==} + + browserify-aes@1.2.0: + resolution: {integrity: sha512-+7CHXqGuspUn/Sl5aO7Ea0xWGAtETPXNSAjHo48JfLdPWcMng33Xe4znFvQweqc/uzk5zSOI3H52CYnjCfb5hA==} + + bs58@4.0.1: + resolution: {integrity: sha512-Ok3Wdf5vOIlBrgCvTq96gBkJw+JUEzdBgyaza5HLtPm7yTHkjRy8+JzNyHF7BHa0bNWOQIp3m5YF0nnFcOIKLw==} + + bs58check@2.1.2: + resolution: {integrity: sha512-0TS1jicxdU09dwJMNZtVAfzPi6Q6QeN0pM1Fkzrjn+XYHvzMKPU3pHVpva+769iNVSfIYWf7LJ6WR+BuuMf8cA==} + + buffer-from@1.1.2: + resolution: {integrity: sha512-E+XQCRwSbaaiChtv6k6Dwgc+bx+Bs6vuKJHHl5kox/BaKbhiXzqQOwK4cO22yElGp2OCmjwVhT3HmxgyPGnJfQ==} + + buffer-xor@1.0.3: + resolution: {integrity: sha512-571s0T7nZWK6vB67HI5dyUF7wXiNcfaPPPTl6zYCNApANjIvYJTg7hlud/+cJpdAhS7dVzqMLmfhfHR3rAcOjQ==} + + bytes@3.1.2: + resolution: {integrity: sha512-/Nf7TyzTx6S3yRJObOAV7956r8cr2+Oj8AC5dt8wSP3BQAoeX58NoHyCU8P8zGkNXStjTSi6fzO6F0pBdcYbEg==} + engines: {node: '>= 0.8'} + + call-bind-apply-helpers@1.0.2: + resolution: {integrity: sha512-Sp1ablJ0ivDkSzjcaJdxEunN5/XvksFJ2sMBFfq6x0ryhQV/2b/KwFe21cMpmHtPOSij8K99/wSfoEuTObmuMQ==} + engines: {node: '>= 0.4'} + + call-bound@1.0.4: + resolution: {integrity: sha512-+ys997U96po4Kx/ABpBCqhA9EuxJaQWDQg7295H4hBphv3IZg0boBKuwYpt4YXp6MZ5AmZQnU/tyMTlRpaSejg==} + engines: {node: '>= 0.4'} + + camelcase@6.3.0: + resolution: {integrity: sha512-Gmy6FhYlCY7uOElZUSbxo2UCDH8owEk996gkbrpsgGtrJLM3J7jGxl9Ic7Qwwj4ivOE5AWZWRMecDdF7hqGjFA==} + engines: {node: '>=10'} + + caseless@0.12.0: + resolution: {integrity: sha512-4tYFyifaFfGacoiObjJegolkwSU4xQNGbVgUiNYVUxbQ2x2lUsFvY4hVgVzGiIe6WLOPqycWXA40l+PWsxthUw==} + + cbor@8.1.0: + resolution: {integrity: sha512-DwGjNW9omn6EwP70aXsn7FQJx5kO12tX0bZkaTjzdVFM6/7nhA4t0EENocKGx6D2Bch9PE2KzCUf5SceBdeijg==} + engines: {node: '>=12.19'} + + cbor@9.0.2: + resolution: {integrity: sha512-JPypkxsB10s9QOWwa6zwPzqE1Md3vqpPc+cai4sAecuCsRyAtAl/pMyhPlMbT/xtPnm2dznJZYRLui57qiRhaQ==} + engines: {node: '>=16'} + + chai-as-promised@7.1.2: + resolution: {integrity: sha512-aBDHZxRzYnUYuIAIPBH2s511DjlKPzXNlXSGFC8CwmroWQLfrW0LtE1nK3MAwwNhJPa9raEjNCmRoFpG0Hurdw==} + peerDependencies: + chai: '>= 2.1.2 < 6' + + chai@4.5.0: + resolution: {integrity: sha512-RITGBfijLkBddZvnn8jdqoTypxvqbOLYQkGGxXzeFjVHvudaPw0HNFD9x928/eUwYWd2dPCugVqspGALTZZQKw==} + engines: {node: '>=4'} + + chalk@2.4.2: + resolution: {integrity: sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==} + engines: {node: '>=4'} + + chalk@4.1.2: + resolution: {integrity: sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==} + engines: {node: '>=10'} + + charenc@0.0.2: + resolution: {integrity: sha512-yrLQ/yVUFXkzg7EDQsPieE/53+0RlaWTs+wBrvW36cyilJ2SaDWfl4Yj7MtLTXleV9uEKefbAGUPv2/iWSooRA==} + + check-error@1.0.3: + resolution: {integrity: sha512-iKEoDYaRmd1mxM90a2OEfWhjsjPpYPuQ+lMYsoxB126+t8fw7ySEO48nmDg5COTjxDI65/Y2OWpeEHk3ZOe8zg==} + + chokidar@3.6.0: + resolution: {integrity: sha512-7VT13fmjotKpGipCW9JEQAusEPE+Ei8nl6/g4FBAmIm0GOOLMua9NDDo/DWp0ZAxCr3cPq5ZpBqmPAQgDda2Pw==} + engines: {node: '>= 8.10.0'} + + chokidar@4.0.3: + resolution: {integrity: sha512-Qgzu8kfBvo+cA4962jnP1KkS6Dop5NS6g7R5LFYJr4b8Ub94PPQXUksCw9PvXoeXPRRddRNC5C1JQUR2SMGtnA==} + engines: {node: '>= 14.16.0'} + + ci-info@2.0.0: + resolution: {integrity: sha512-5tK7EtrZ0N+OLFMthtqOj4fI2Jeb88C4CAZPu25LDVUgXJ0A3Js4PMGqrn0JU1W0Mh1/Z8wZzYPxqUrXeBboCQ==} + + cipher-base@1.0.6: + resolution: {integrity: sha512-3Ek9H3X6pj5TgenXYtNWdaBon1tgYCaebd+XPg0keyjEbEfkD4KkmAxkQ/i1vYvxdcT5nscLBfq9VJRmCBcFSw==} + engines: {node: '>= 0.10'} + + clean-stack@2.2.0: + resolution: {integrity: sha512-4diC9HaTE+KRAMWhDhrGOECgWZxoevMc5TlkObMqNSsVU62PYzXZ/SMTjzyGAFF1YusgxGcSWTEXBhp0CPwQ1A==} + engines: {node: '>=6'} + + cli-boxes@2.2.1: + resolution: {integrity: sha512-y4coMcylgSCdVinjiDBuR8PCC2bLjyGTwEmPb9NHR/QaNU6EUOXcTY/s6VjGMD6ENSEaeQYHCY0GNGS5jfMwPw==} + engines: {node: '>=6'} + + cli-table3@0.5.1: + resolution: {integrity: sha512-7Qg2Jrep1S/+Q3EceiZtQcDPWxhAvBw+ERf1162v4sikJrvojMHFqXt8QIVha8UlH9rgU0BeWPytZ9/TzYqlUw==} + engines: {node: '>=6'} + + cliui@7.0.4: + resolution: {integrity: sha512-OcRE68cOsVMXp1Yvonl/fzkQOyjLSu/8bhPDfQt0e0/Eb283TKP20Fs2MqoPsr9SwA595rRCA+QMzYc9nBP+JQ==} + + color-convert@1.9.3: + resolution: {integrity: sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==} + + color-convert@2.0.1: + resolution: {integrity: sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==} + engines: {node: '>=7.0.0'} + + color-name@1.1.3: + resolution: {integrity: sha512-72fSenhMw2HZMTVHeCA9KCmpEIbzWiQsjN+BHcBbS9vr1mtt+vJjPdksIBNUmKAW8TFUDPJK5SUU3QhE9NEXDw==} + + color-name@1.1.4: + resolution: {integrity: sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==} + + colors@1.4.0: + resolution: {integrity: sha512-a+UqTh4kgZg/SlGvfbzDHpgRu7AAQOmmqRHJnxhRZICKFUT91brVhNNt58CMWU9PsBbv3PDCZUHbVxuDiH2mtA==} + engines: {node: '>=0.1.90'} + + combined-stream@1.0.8: + resolution: {integrity: sha512-FQN4MRfuJeHf7cBbBMJFXhKSDq+2kAArBlmRBvcvFE5BB1HZKXtSFASDhdlz9zOYwxh8lDdnvmMOe/+5cdoEdg==} + engines: {node: '>= 0.8'} + + command-exists@1.2.9: + resolution: {integrity: sha512-LTQ/SGc+s0Xc0Fu5WaKnR0YiygZkm9eKFvyS+fRsU7/ZWFF8ykFM6Pc9aCVf1+xasOOZpO3BAVgVrKvsqKHV7w==} + + command-line-args@5.2.1: + resolution: {integrity: sha512-H4UfQhZyakIjC74I9d34fGYDwk3XpSr17QhEd0Q3I9Xq1CETHo4Hcuo87WyWHpAF1aSLjLRf5lD9ZGX2qStUvg==} + engines: {node: '>=4.0.0'} + + command-line-usage@6.1.3: + resolution: {integrity: sha512-sH5ZSPr+7UStsloltmDh7Ce5fb8XPlHyoPzTpyyMuYCtervL65+ubVZ6Q61cFtFl62UyJlc8/JwERRbAFPUqgw==} + engines: {node: '>=8.0.0'} + + commander@8.3.0: + resolution: {integrity: sha512-OkTL9umf+He2DZkUq8f8J9of7yL6RJKI24dVITBmNfZBmri9zYZQrKkuXiKhyfPSu8tUhnVBB1iKXevvnlR4Ww==} + engines: {node: '>= 12'} + + concat-map@0.0.1: + resolution: {integrity: sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg==} + + concat-stream@1.6.2: + resolution: {integrity: sha512-27HBghJxjiZtIk3Ycvn/4kbJk/1uZuJFfuPEns6LaEvpvG1f0hTea8lilrouyo9mVc2GWdcEZ8OLoGmSADlrCw==} + engines: {'0': node >= 0.8} + + cookie@0.4.2: + resolution: {integrity: sha512-aSWTXFzaKWkvHO1Ny/s+ePFpvKsPnjc551iI41v3ny/ow6tBG5Vd+FuqGNhh1LxOmVzOlGUriIlOaokOvhaStA==} + engines: {node: '>= 0.6'} + + core-util-is@1.0.3: + resolution: {integrity: sha512-ZQBvi1DcpJ4GDqanjucZ2Hj3wEO5pZDS89BWbkcrvdxksJorwUDDZamX9ldFkp9aw2lmBDLgkObEA4DWNJ9FYQ==} + + create-hash@1.2.0: + resolution: {integrity: sha512-z00bCGNHDG8mHAkP7CtT1qVu+bFQUPjYq/4Iv3C3kWjTFV10zIjfSoeqXo9Asws8gwSHDGj/hl2u4OGIjapeCg==} + + create-hmac@1.1.7: + resolution: {integrity: sha512-MJG9liiZ+ogc4TzUwuvbER1JRdgvUFSB5+VR/g5h82fGaIRWMWddtKBHi7/sVhfjQZ6SehlyhvQYrcYkaUIpLg==} + + create-require@1.1.1: + resolution: {integrity: sha512-dcKFX3jn0MpIaXjisoRvexIJVEKzaq7z2rZKxf+MSr9TkdmHmsU4m2lcLojrj/FHl8mk5VxMmYA+ftRkP/3oKQ==} + + crypt@0.0.2: + resolution: {integrity: sha512-mCxBlsHFYh9C+HVpiEacem8FEBnMXgU9gy4zmNC+SXAZNB/1idgp/aulFJ4FgCi7GPEVbfyng092GqL2k2rmow==} + + death@1.1.0: + resolution: {integrity: sha512-vsV6S4KVHvTGxbEcij7hkWRv0It+sGGWVOM67dQde/o5Xjnr+KmLjxWJii2uEObIrt1CcM9w0Yaovx+iOlIL+w==} + + debug@4.4.0: + resolution: {integrity: sha512-6WTZ/IxCY/T6BALoZHaE4ctp9xm+Z5kY/pzYaCHRFeyVhojxlrm+46y68HA6hr0TcwEssoxNiDEUJQjfPZ/RYA==} + engines: {node: '>=6.0'} + peerDependencies: + supports-color: '*' + peerDependenciesMeta: + supports-color: + optional: true + + decamelize@4.0.0: + resolution: {integrity: sha512-9iE1PgSik9HeIIw2JO94IidnE3eBoQrFJ3w7sFuzSX4DpmZ3v5sZpUiV5Swcf6mQEF+Y0ru8Neo+p+nyh2J+hQ==} + engines: {node: '>=10'} + + deep-eql@4.1.4: + resolution: {integrity: sha512-SUwdGfqdKOwxCPeVYjwSyRpJ7Z+fhpwIAtmCUdZIWZ/YP5R9WAsyuSgpLVDi9bjWoN2LXHNss/dk3urXtdQxGg==} + engines: {node: '>=6'} + + deep-extend@0.6.0: + resolution: {integrity: sha512-LOHxIOaPYdHlJRtCQfDIVZtfw/ufM8+rVj649RIHzcm/vGwQRXFt6OPqIFWsm2XEMrNIEtWR64sY1LEKD2vAOA==} + engines: {node: '>=4.0.0'} + + deep-is@0.1.4: + resolution: {integrity: sha512-oIPzksmTg4/MriiaYGO+okXDT7ztn/w3Eptv/+gSIdMdKsJo0u4CfYNFJPy+4SKMuCqGw2wxnA+URMg3t8a/bQ==} + + delayed-stream@1.0.0: + resolution: {integrity: sha512-ZySD7Nf91aLB0RxL4KGrKHBXl7Eds1DAmEdcoVawXnLD7SDhpNgtuII2aAkg7a7QS41jxPSZ17p4VdGnMHk3MQ==} + engines: {node: '>=0.4.0'} + + depd@2.0.0: + resolution: {integrity: sha512-g7nH6P6dyDioJogAAGprGpCtVImJhpPk/roCzdb3fIh61/s/nPsfR6onyMwkCAR/OlC3yBC0lESvUoQEAssIrw==} + engines: {node: '>= 0.8'} + + diff@4.0.2: + resolution: {integrity: sha512-58lmxKSA4BNyLz+HHMUzlOEpg09FV+ev6ZMe3vJihgdxzgcwZ8VoEEPmALCZG9LmqfVoNMMKpttIYTVG6uDY7A==} + engines: {node: '>=0.3.1'} + + diff@5.2.0: + resolution: {integrity: sha512-uIFDxqpRZGZ6ThOk84hEfqWoHx2devRFvpTZcTHur85vImfaxUbTW9Ryh4CpCuDnToOP1CEtXKIgytHBPVff5A==} + engines: {node: '>=0.3.1'} + + difflib@0.2.4: + resolution: {integrity: sha512-9YVwmMb0wQHQNr5J9m6BSj6fk4pfGITGQOOs+D9Fl+INODWFOfvhIU1hNv6GgR1RBoC/9NJcwu77zShxV0kT7w==} + + dir-glob@3.0.1: + resolution: {integrity: sha512-WkrWp9GR4KXfKGYzOLmTuGVi1UWFfws377n9cc55/tb6DuqyF6pcQ5AbiHEshaDpY9v6oaSr2XCDidGmMwdzIA==} + engines: {node: '>=8'} + + dotenv@16.4.7: + resolution: {integrity: sha512-47qPchRCykZC03FhkYAhrvwU4xDBFIj1QPqaarj6mdM/hgUzfPHcpkHJOn3mJAufFeeAxAzeGsr5X0M4k6fLZQ==} + engines: {node: '>=12'} + + dunder-proto@1.0.1: + resolution: {integrity: sha512-KIN/nDJBQRcXw0MLVhZE9iQHmG68qAVIBg9CqmUYjmQIhgij9U5MFvrqkUL5FbtyyzZuOeOt0zdeRe4UY7ct+A==} + engines: {node: '>= 0.4'} + + elliptic@6.6.1: + resolution: {integrity: sha512-RaddvvMatK2LJHqFJ+YA4WysVN5Ita9E35botqIYspQ4TkRAlCicdzKOjlyv/1Za5RyTNn7di//eEV0uTAfe3g==} + + emoji-regex@8.0.0: + resolution: {integrity: sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==} + + enquirer@2.4.1: + resolution: {integrity: sha512-rRqJg/6gd538VHvR3PSrdRBb/1Vy2YfzHqzvbhGIQpDRKIa4FgV/54b5Q1xYSxOOwKvjXweS26E0Q+nAMwp2pQ==} + engines: {node: '>=8.6'} + + env-paths@2.2.1: + resolution: {integrity: sha512-+h1lkLKhZMTYjog1VEpJNG7NZJWcuc2DDk/qsqSTRRCOXiLjeQ1d1/udrUGhqMxUgAlwKNZ0cf2uqan5GLuS2A==} + engines: {node: '>=6'} + + es-define-property@1.0.1: + resolution: {integrity: sha512-e3nRfgfUZ4rNGL232gUgX06QNyyez04KdjFrF+LTRoOXmrOgFKDg4BCdsjW8EnT69eqdYGmRpJwiPVYNrCaW3g==} + engines: {node: '>= 0.4'} + + es-errors@1.3.0: + resolution: {integrity: sha512-Zf5H2Kxt2xjTvbJvP2ZWLEICxA6j+hAmMzIlypy4xcBg1vKVnx89Wy0GbS+kf5cwCVFFzdCFh2XSCFNULS6csw==} + engines: {node: '>= 0.4'} + + es-object-atoms@1.1.1: + resolution: {integrity: sha512-FGgH2h8zKNim9ljj7dankFPcICIK9Cp5bm+c2gQSYePhpaG5+esrLODihIorn+Pe6FGJzWhXQotPv73jTaldXA==} + engines: {node: '>= 0.4'} + + es-set-tostringtag@2.1.0: + resolution: {integrity: sha512-j6vWzfrGVfyXxge+O0x5sh6cvxAog0a/4Rdd2K36zCMV5eJ+/+tOAngRO8cODMNWbVRdVlmGZQL2YS3yR8bIUA==} + engines: {node: '>= 0.4'} + + escalade@3.2.0: + resolution: {integrity: sha512-WUj2qlxaQtO4g6Pq5c29GTcWGDyd8itL8zTlipgECz3JesAiiOKotd8JU6otB3PACgG6xkJUyVhboMS+bje/jA==} + engines: {node: '>=6'} + + escape-string-regexp@1.0.5: + resolution: {integrity: sha512-vbRorB5FUQWvla16U8R/qgaFIya2qGzwDrNmCZuYKrbdSUMG6I1ZCGQRefkRVhuOkIGVne7BQ35DSfo1qvJqFg==} + engines: {node: '>=0.8.0'} + + escape-string-regexp@4.0.0: + resolution: {integrity: sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA==} + engines: {node: '>=10'} + + escodegen@1.8.1: + resolution: {integrity: sha512-yhi5S+mNTOuRvyW4gWlg5W1byMaQGWWSYHXsuFZ7GBo7tpyOwi2EdzMP/QWxh9hwkD2m+wDVHJsxhRIj+v/b/A==} + engines: {node: '>=0.12.0'} + hasBin: true + + esprima@2.7.3: + resolution: {integrity: sha512-OarPfz0lFCiW4/AV2Oy1Rp9qu0iusTKqykwTspGCZtPxmF81JR4MmIebvF1F9+UOKth2ZubLQ4XGGaU+hSn99A==} + engines: {node: '>=0.10.0'} + hasBin: true + + esprima@4.0.1: + resolution: {integrity: sha512-eGuFFw7Upda+g4p+QHvnW0RyTX/SVeJBDM/gCtMARO0cLuT2HcEKnTPvhjV6aGeqrCB/sbNop0Kszm0jsaWU4A==} + engines: {node: '>=4'} + hasBin: true + + estraverse@1.9.3: + resolution: {integrity: sha512-25w1fMXQrGdoquWnScXZGckOv+Wes+JDnuN/+7ex3SauFRS72r2lFDec0EKPt2YD1wUJ/IrfEex+9yp4hfSOJA==} + engines: {node: '>=0.10.0'} + + esutils@2.0.3: + resolution: {integrity: sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g==} + engines: {node: '>=0.10.0'} + + eth-gas-reporter@0.2.27: + resolution: {integrity: sha512-femhvoAM7wL0GcI8ozTdxfuBtBFJ9qsyIAsmKVjlWAHUbdnnXHt+lKzz/kmldM5lA9jLuNHGwuIxorNpLbR1Zw==} + peerDependencies: + '@codechecks/client': ^0.1.0 + peerDependenciesMeta: + '@codechecks/client': + optional: true + + ethereum-bloom-filters@1.2.0: + resolution: {integrity: sha512-28hyiE7HVsWubqhpVLVmZXFd4ITeHi+BUu05o9isf0GUpMtzBUi+8/gFrGaGYzvGAJQmJ3JKj77Mk9G98T84rA==} + + ethereum-cryptography@0.1.3: + resolution: {integrity: sha512-w8/4x1SGGzc+tO97TASLja6SLd3fRIK2tLVcV2Gx4IB21hE19atll5Cq9o3d0ZmAYC/8aw0ipieTSiekAea4SQ==} + + ethereum-cryptography@1.2.0: + resolution: {integrity: sha512-6yFQC9b5ug6/17CQpCyE3k9eKBMdhyVjzUy1WkiuY/E4vj/SXDBbCw8QEIaXqf0Mf2SnY6RmpDcwlUmBSS0EJw==} + + ethereum-cryptography@2.2.1: + resolution: {integrity: sha512-r/W8lkHSiTLxUxW8Rf3u4HGB0xQweG2RyETjywylKZSzLWoWAijRz8WCuOtJ6wah+avllXBqZuk29HCCvhEIRg==} + + ethereumjs-abi@0.6.8: + resolution: {integrity: sha512-Tx0r/iXI6r+lRsdvkFDlut0N08jWMnKRZ6Gkq+Nmw75lZe4e6o3EkSnkaBP5NF6+m5PTGAr9JP43N3LyeoglsA==} + deprecated: This library has been deprecated and usage is discouraged. + + ethereumjs-util@6.2.1: + resolution: {integrity: sha512-W2Ktez4L01Vexijrm5EB6w7dg4n/TgpoYU4avuT5T3Vmnw/eCRtiBrJfQYS/DCSvDIOLn2k57GcHdeBcgVxAqw==} + + ethereumjs-util@7.1.5: + resolution: {integrity: sha512-SDl5kKrQAudFBUe5OJM9Ac6WmMyYmXX/6sTmLZ3ffG2eY6ZIGBes3pEDxNN6V72WyOw4CPD5RomKdsa8DAAwLg==} + engines: {node: '>=10.0.0'} + + ethers@5.8.0: + resolution: {integrity: sha512-DUq+7fHrCg1aPDFCHx6UIPb3nmt2XMpM7Y/g2gLhsl3lIBqeAfOJIl1qEvRf2uq3BiKxmh6Fh5pfp2ieyek7Kg==} + + ethers@6.13.5: + resolution: {integrity: sha512-+knKNieu5EKRThQJWwqaJ10a6HE9sSehGeqWN65//wE7j47ZpFhKAnHB/JJFibwwg61I/koxaPsXbXpD/skNOQ==} + engines: {node: '>=14.0.0'} + + ethjs-unit@0.1.6: + resolution: {integrity: sha512-/Sn9Y0oKl0uqQuvgFk/zQgR7aw1g36qX/jzSQ5lSwlO0GigPymk4eGQfeNTD03w1dPOqfz8V77Cy43jH56pagw==} + engines: {node: '>=6.5.0', npm: '>=3'} + + ethjs-util@0.1.6: + resolution: {integrity: sha512-CUnVOQq7gSpDHZVVrQW8ExxUETWrnrvXYvYz55wOU8Uj4VCgw56XC2B/fVqQN+f7gmrnRHSLVnFAwsCuNwji8w==} + engines: {node: '>=6.5.0', npm: '>=3'} + + evp_bytestokey@1.0.3: + resolution: {integrity: sha512-/f2Go4TognH/KvCISP7OUsHn85hT9nUkxxA9BEWxFn+Oj9o8ZNLm/40hdlgSLyuOimsrTKLUMEorQexp/aPQeA==} + + fast-deep-equal@3.1.3: + resolution: {integrity: sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==} + + fast-glob@3.3.3: + resolution: {integrity: sha512-7MptL8U0cqcFdzIzwOTHoilX9x5BrNqye7Z/LuC7kCMRio1EMSyqRK3BEAUD7sXRq4iT4AzTVuZdhgQ2TCvYLg==} + engines: {node: '>=8.6.0'} + + fast-levenshtein@2.0.6: + resolution: {integrity: sha512-DCXu6Ifhqcks7TZKY3Hxp3y6qphY5SJZmrWMDrKcERSOXWQdMhU9Ig/PYrzyw/ul9jOIyh0N4M0tbC5hodg8dw==} + + fast-uri@3.0.6: + resolution: {integrity: sha512-Atfo14OibSv5wAp4VWNsFYE1AchQRTv9cBGWET4pZWHzYshFSS9NQI6I57rdKn9croWVMbYFbLhJ+yJvmZIIHw==} + + fastq@1.19.1: + resolution: {integrity: sha512-GwLTyxkCXjXbxqIhTsMI2Nui8huMPtnxg7krajPJAjnEG/iiOS7i+zCtWGZR9G0NBKbXKh6X9m9UIsYX/N6vvQ==} + + fdir@6.4.3: + resolution: {integrity: sha512-PMXmW2y1hDDfTSRc9gaXIuCCRpuoz3Kaz8cUelp3smouvfT632ozg2vrT6lJsHKKOF59YLbOGfAWGUcKEfRMQw==} + peerDependencies: + picomatch: ^3 || ^4 + peerDependenciesMeta: + picomatch: + optional: true + + fill-range@7.1.1: + resolution: {integrity: sha512-YsGpe3WHLK8ZYi4tWDg2Jy3ebRz2rXowDxnld4bkQB00cc/1Zw9AWnC0i9ztDJitivtQvaI9KaLyKrc+hBW0yg==} + engines: {node: '>=8'} + + find-replace@3.0.0: + resolution: {integrity: sha512-6Tb2myMioCAgv5kfvP5/PkZZ/ntTpVK39fHY7WkWBgvbeE+VHd/tZuZ4mrC+bxh4cfOZeYKVPaJIZtZXV7GNCQ==} + engines: {node: '>=4.0.0'} + + find-up@5.0.0: + resolution: {integrity: sha512-78/PXT1wlLLDgTzDs7sjq9hzz0vXD+zn+7wypEe4fXQxCmdmqfGsEPQxmiCSQI3ajFV91bVSsvNtrJRiW6nGng==} + engines: {node: '>=10'} + + flat@5.0.2: + resolution: {integrity: sha512-b6suED+5/3rTpUBdG1gupIl8MPFCAMA0QXwmljLhvCUKcUvdE4gWky9zpuGCcXHOsz4J9wPGNWq6OKpmIzz3hQ==} + hasBin: true + + follow-redirects@1.15.9: + resolution: {integrity: sha512-gew4GsXizNgdoRyqmyfMHyAmXsZDk6mHkSxZFCzW9gwlbtOW44CDtYavM+y+72qD/Vq2l550kMF52DT8fOLJqQ==} + engines: {node: '>=4.0'} + peerDependencies: + debug: '*' + peerDependenciesMeta: + debug: + optional: true + + form-data@2.5.3: + resolution: {integrity: sha512-XHIrMD0NpDrNM/Ckf7XJiBbLl57KEhT3+i3yY+eWm+cqYZJQTZrKo8Y8AWKnuV5GT4scfuUGt9LzNoIx3dU1nQ==} + engines: {node: '>= 0.12'} + + form-data@4.0.2: + resolution: {integrity: sha512-hGfm/slu0ZabnNt4oaRZ6uREyfCj6P4fT/n6A1rGV+Z0VdGXjfOhVUpkn6qVQONHGIFwmveGXyDs75+nr6FM8w==} + engines: {node: '>= 6'} + + fp-ts@1.19.3: + resolution: {integrity: sha512-H5KQDspykdHuztLTg+ajGN0Z2qUjcEf3Ybxc6hLt0k7/zPkn29XnKnxlBPyW2XIddWrGaJBzBl4VLYOtk39yZg==} + + fs-extra@10.1.0: + resolution: {integrity: sha512-oRXApq54ETRj4eMiFzGnHWGy+zo5raudjuxN0b8H7s/RU2oW0Wvsx9O0ACRN/kRq9E8Vu/ReskGB5o3ji+FzHQ==} + engines: {node: '>=12'} + + fs-extra@7.0.1: + resolution: {integrity: sha512-YJDaCJZEnBmcbw13fvdAM9AwNOJwOzrE4pqMqBq5nFiEqXUqHwlK4B+3pUw6JNvfSPtX05xFHtYy/1ni01eGCw==} + engines: {node: '>=6 <7 || >=8'} + + fs-extra@8.1.0: + resolution: {integrity: sha512-yhlQgA6mnOJUKOsRUFsgJdQCvkKhcz8tlZG5HBQfReYZy46OwLcY+Zia0mtdHsOo9y/hP+CxMN0TU9QxoOtG4g==} + engines: {node: '>=6 <7 || >=8'} + + fs-extra@9.1.0: + resolution: {integrity: sha512-hcg3ZmepS30/7BSFqRvoo3DOMQu7IjqxO5nCDt+zM9XWjb33Wg7ziNT+Qvqbuc3+gWpzO02JubVyk2G4Zvo1OQ==} + engines: {node: '>=10'} + + fs-readdir-recursive@1.1.0: + resolution: {integrity: sha512-GNanXlVr2pf02+sPN40XN8HG+ePaNcvM0q5mZBd668Obwb0yD5GiUbZOFgwn8kGMY6I3mdyDJzieUy3PTYyTRA==} + + fs.realpath@1.0.0: + resolution: {integrity: sha512-OO0pH2lK6a0hZnAdau5ItzHPI6pUlvI7jMVnxUQRtw4owF2wk8lOSabtGDCTP4Ggrg2MbGnWO9X8K1t4+fGMDw==} + + fsevents@2.3.3: + resolution: {integrity: sha512-5xoDfX+fL7faATnagmWPpbFtwh/R77WmMMqqHGS65C3vvB0YHrgF+B1YmZ3441tMj5n63k0212XNoJwzlhffQw==} + engines: {node: ^8.16.0 || ^10.6.0 || >=11.0.0} + os: [darwin] + + function-bind@1.1.2: + resolution: {integrity: sha512-7XHNxH7qX9xG5mIwxkhumTox/MIRNcOgDrxWsMt2pAr23WHp6MrRlN7FBSFpCpr+oVO0F744iUgR82nJMfG2SA==} + + get-caller-file@2.0.5: + resolution: {integrity: sha512-DyFP3BM/3YHTQOCUL/w0OZHR0lpKeGrxotcHWcqNEdnltqFwXVfhEBQ94eIo34AfQpo0rGki4cyIiftY06h2Fg==} + engines: {node: 6.* || 8.* || >= 10.*} + + get-func-name@2.0.2: + resolution: {integrity: sha512-8vXOvuE167CtIc3OyItco7N/dpRtBbYOsPsXCz7X/PMnlGjYjSGuZJgM1Y7mmew7BKf9BqvLX2tnOVy1BBUsxQ==} + + get-intrinsic@1.3.0: + resolution: {integrity: sha512-9fSjSaos/fRIVIp+xSJlE6lfwhES7LNtKaCBIamHsjr2na1BiABJPo0mOjjz8GJDURarmCPGqaiVg5mfjb98CQ==} + engines: {node: '>= 0.4'} + + get-port@3.2.0: + resolution: {integrity: sha512-x5UJKlgeUiNT8nyo/AcnwLnZuZNcSjSw0kogRB+Whd1fjjFq4B1hySFxSFWWSn4mIBzg3sRNUDFYc4g5gjPoLg==} + engines: {node: '>=4'} + + get-proto@1.0.1: + resolution: {integrity: sha512-sTSfBjoXBp89JvIKIefqw7U2CCebsc74kiY6awiGogKtoSGbgjYE/G/+l9sF3MWFPNc9IcoOC4ODfKHfxFmp0g==} + engines: {node: '>= 0.4'} + + ghost-testrpc@0.0.2: + resolution: {integrity: sha512-i08dAEgJ2g8z5buJIrCTduwPIhih3DP+hOCTyyryikfV8T0bNvHnGXO67i0DD1H4GBDETTclPy9njZbfluQYrQ==} + hasBin: true + + glob-parent@5.1.2: + resolution: {integrity: sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==} + engines: {node: '>= 6'} + + glob@5.0.15: + resolution: {integrity: sha512-c9IPMazfRITpmAAKi22dK1VKxGDX9ehhqfABDriL/lzO92xcUKEJPQHrVA/2YHSNFB4iFlykVmWvwo48nr3OxA==} + deprecated: Glob versions prior to v9 are no longer supported + + glob@7.1.7: + resolution: {integrity: sha512-OvD9ENzPLbegENnYP5UUfJIirTg4+XwMWGaQfQTY0JenxNvvIKP3U3/tAQSPIu/lHxXYSZmpXlUHeqAIdKzBLQ==} + deprecated: Glob versions prior to v9 are no longer supported + + glob@7.2.3: + resolution: {integrity: sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q==} + deprecated: Glob versions prior to v9 are no longer supported + + glob@8.1.0: + resolution: {integrity: sha512-r8hpEjiQEYlF2QU0df3dS+nxxSIreXQS1qRhMJM0Q5NDdR386C7jb7Hwwod8Fgiuex+k0GFjgft18yvxm5XoCQ==} + engines: {node: '>=12'} + deprecated: Glob versions prior to v9 are no longer supported + + global-modules@2.0.0: + resolution: {integrity: sha512-NGbfmJBp9x8IxyJSd1P+otYK8vonoJactOogrVfFRIAEY1ukil8RSKDz2Yo7wh1oihl51l/r6W4epkeKJHqL8A==} + engines: {node: '>=6'} + + global-prefix@3.0.0: + resolution: {integrity: sha512-awConJSVCHVGND6x3tmMaKcQvwXLhjdkmomy2W+Goaui8YPgYgXJZewhg3fWC+DlfqqQuWg8AwqjGTD2nAPVWg==} + engines: {node: '>=6'} + + globby@10.0.2: + resolution: {integrity: sha512-7dUi7RvCoT/xast/o/dLN53oqND4yk0nsHkhRgn9w65C4PofCLOoJ39iSOg+qVDdWQPIEj+eszMHQ+aLVwwQSg==} + engines: {node: '>=8'} + + gopd@1.2.0: + resolution: {integrity: sha512-ZUKRh6/kUFoAiTAtTYPZJ3hw9wNxx+BIBOijnlG9PnrJsCcSjs1wyyD6vJpaYtgnzDrKYRSqf3OO6Rfa93xsRg==} + engines: {node: '>= 0.4'} + + graceful-fs@4.2.11: + resolution: {integrity: sha512-RbJ5/jmFcNNCcDV5o9eTnBLJ/HszWV0P73bc+Ff4nS/rJj+YaS6IGyiOL0VoBYX+l1Wrl3k63h/KrH+nhJ0XvQ==} + + handlebars@4.7.8: + resolution: {integrity: sha512-vafaFqs8MZkRrSX7sFVUdo3ap/eNiLnb4IakshzvP56X5Nr1iGKAIqdX6tMlm6HcNRIkr6AxO5jFEoJzzpT8aQ==} + engines: {node: '>=0.4.7'} + hasBin: true + + hardhat-gas-reporter@1.0.10: + resolution: {integrity: sha512-02N4+So/fZrzJ88ci54GqwVA3Zrf0C9duuTyGt0CFRIh/CdNwbnTgkXkRfojOMLBQ+6t+lBIkgbsOtqMvNwikA==} + peerDependencies: + hardhat: ^2.0.2 + + hardhat@2.22.19: + resolution: {integrity: sha512-jptJR5o6MCgNbhd7eKa3mrteR+Ggq1exmE5RUL5ydQEVKcZm0sss5laa86yZ0ixIavIvF4zzS7TdGDuyopj0sQ==} + hasBin: true + peerDependencies: + ts-node: '*' + typescript: '*' + peerDependenciesMeta: + ts-node: + optional: true + typescript: + optional: true + + has-flag@1.0.0: + resolution: {integrity: sha512-DyYHfIYwAJmjAjSSPKANxI8bFY9YtFrgkAfinBojQ8YJTOuOuav64tMUJv584SES4xl74PmuaevIyaLESHdTAA==} + engines: {node: '>=0.10.0'} + + has-flag@3.0.0: + resolution: {integrity: sha512-sKJf1+ceQBr4SMkvQnBDNDtf4TXpVhVGateu0t918bl30FnbE2m4vNLX+VWe/dpjlb+HugGYzW7uQXH98HPEYw==} + engines: {node: '>=4'} + + has-flag@4.0.0: + resolution: {integrity: sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==} + engines: {node: '>=8'} + + has-symbols@1.1.0: + resolution: {integrity: sha512-1cDNdwJ2Jaohmb3sg4OmKaMBwuC48sYni5HUw2DvsC8LjGTLK9h+eb1X6RyuOHe4hT0ULCW68iomhjUoKUqlPQ==} + engines: {node: '>= 0.4'} + + has-tostringtag@1.0.2: + resolution: {integrity: sha512-NqADB8VjPFLM2V0VvHUewwwsw0ZWBaIdgo+ieHtK3hasLz4qeCRjYcqfB6AQrBggRKppKF8L52/VqdVsO47Dlw==} + engines: {node: '>= 0.4'} + + hash-base@3.1.0: + resolution: {integrity: sha512-1nmYp/rhMDiE7AYkDw+lLwlAzz0AntGIe51F3RfFfEqyQ3feY2eI/NcwC6umIQVOASPMsWJLJScWKSSvzL9IVA==} + engines: {node: '>=4'} + + hash.js@1.1.7: + resolution: {integrity: sha512-taOaskGt4z4SOANNseOviYDvjEJinIkRgmp7LbKP2YTTmVxWBl87s/uzK9r+44BclBSp2X7K1hqeNfz9JbBeXA==} + + hasown@2.0.2: + resolution: {integrity: sha512-0hJU9SCPvmMzIBdZFqNPXWa6dqh7WdH0cII9y+CyS8rG3nL48Bclra9HmKhVVUHyPWNH5Y7xDwAB7bfgSjkUMQ==} + engines: {node: '>= 0.4'} + + he@1.2.0: + resolution: {integrity: sha512-F/1DnUGPopORZi0ni+CvrCgHQ5FyEAHRLSApuYWMmrbSwoN2Mn/7k+Gl38gJnR7yyDZk6WLXwiGod1JOWNDKGw==} + hasBin: true + + heap@0.2.7: + resolution: {integrity: sha512-2bsegYkkHO+h/9MGbn6KWcE45cHZgPANo5LXF7EvWdT0yT2EguSVO1nDgU5c8+ZOPwp2vMNa7YFsJhVcDR9Sdg==} + + hmac-drbg@1.0.1: + resolution: {integrity: sha512-Tti3gMqLdZfhOQY1Mzf/AanLiqh1WTiJgEj26ZuYQ9fbkLomzGchCws4FyrSd4VkpBfiNhaE1On+lOz894jvXg==} + + http-basic@8.1.3: + resolution: {integrity: sha512-/EcDMwJZh3mABI2NhGfHOGOeOZITqfkEO4p/xK+l3NpyncIHUQBoMvCSF/b5GqvKtySC2srL/GGG3+EtlqlmCw==} + engines: {node: '>=6.0.0'} + + http-errors@2.0.0: + resolution: {integrity: sha512-FtwrG/euBzaEjYeRqOgly7G0qviiXoJWnvEH2Z1plBdXgbyjv34pHTSb9zoeHMyDy33+DWy5Wt9Wo+TURtOYSQ==} + engines: {node: '>= 0.8'} + + http-response-object@3.0.2: + resolution: {integrity: sha512-bqX0XTF6fnXSQcEJ2Iuyr75yVakyjIDCqroJQ/aHfSdlM743Cwqoi2nDYMzLGWUcuTWGWy8AAvOKXTfiv6q9RA==} + + https-proxy-agent@5.0.1: + resolution: {integrity: sha512-dFcAjpTQFgoLMzC2VwU+C/CbS7uRL0lWmxDITmqm7C+7F0Odmj6s9l6alZc6AELXhrnggM2CeWSXHGOdX2YtwA==} + engines: {node: '>= 6'} + + iconv-lite@0.4.24: + resolution: {integrity: sha512-v3MXnZAcvnywkTUEZomIActle7RXXeedOR31wwl7VlyoXO4Qi9arvSenNQWne1TcRwhCL1HwLI21bEqdpj8/rA==} + engines: {node: '>=0.10.0'} + + ignore@5.3.2: + resolution: {integrity: sha512-hsBTNUqQTDwkWtcdYI2i06Y/nUBEsNEDJKjWdigLvegy8kDuJAS8uRlpkkcQpyEXL0Z/pjDy5HBmMjRCJ2gq+g==} + engines: {node: '>= 4'} + + immer@10.0.2: + resolution: {integrity: sha512-Rx3CqeqQ19sxUtYV9CU911Vhy8/721wRFnJv3REVGWUmoAcIwzifTsdmJte/MV+0/XpM35LZdQMBGkRIoLPwQA==} + + immutable@4.3.7: + resolution: {integrity: sha512-1hqclzwYwjRDFLjcFxOM5AYkkG0rpFPpr1RLPMEuGczoS7YA8gLhy8SWXYRAA/XwfEHpfo3cw5JGioS32fnMRw==} + + indent-string@4.0.0: + resolution: {integrity: sha512-EdDDZu4A2OyIK7Lr/2zG+w5jmbuk1DVBnEwREQvBzspBJkCEbRa8GxU1lghYcaGJCnRWibjDXlq779X1/y5xwg==} + engines: {node: '>=8'} + + inflight@1.0.6: + resolution: {integrity: sha512-k92I/b08q4wvFscXCLvqfsHCrjrF7yiXsQuIVvVE7N82W3+aqpzuUdBbfhWcy/FZR3/4IgflMgKLOsvPDrGCJA==} + deprecated: This module is not supported, and leaks memory. Do not use it. Check out lru-cache if you want a good and tested way to coalesce async requests by a key value, which is much more comprehensive and powerful. + + inherits@2.0.4: + resolution: {integrity: sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==} + + ini@1.3.8: + resolution: {integrity: sha512-JV/yugV2uzW5iMRSiZAyDtQd+nxtUnjeLt0acNdw98kKLrvuRVyB80tsREOE7yvGVgalhZ6RNXCmEHkUKBKxew==} + + interpret@1.4.0: + resolution: {integrity: sha512-agE4QfB2Lkp9uICn7BAqoscw4SZP9kTE2hxiFI3jBPmXJfdqiahTbUuKGsMoN2GtqL9AxhYioAcVvgsb1HvRbA==} + engines: {node: '>= 0.10'} + + io-ts@1.10.4: + resolution: {integrity: sha512-b23PteSnYXSONJ6JQXRAlvJhuw8KOtkqa87W4wDtvMrud/DTJd5X+NpOOI+O/zZwVq6v0VLAaJ+1EDViKEuN9g==} + + is-binary-path@2.1.0: + resolution: {integrity: sha512-ZMERYes6pDydyuGidse7OsHxtbI7WVeUEozgR/g7rd0xUimYNlvZRE/K2MgZTjWy725IfelLeVcEM97mmtRGXw==} + engines: {node: '>=8'} + + is-core-module@2.16.1: + resolution: {integrity: sha512-UfoeMA6fIJ8wTYFEUjelnaGI67v6+N7qXJEvQuIGa99l4xsCruSYOVSQ0uPANn4dAzm8lkYPaKLrrijLq7x23w==} + engines: {node: '>= 0.4'} + + is-extglob@2.1.1: + resolution: {integrity: sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ==} + engines: {node: '>=0.10.0'} + + is-fullwidth-code-point@2.0.0: + resolution: {integrity: sha512-VHskAKYM8RfSFXwee5t5cbN5PZeq1Wrh6qd5bkyiXIf6UQcN6w/A0eXM9r6t8d+GYOh+o6ZhiEnb88LN/Y8m2w==} + engines: {node: '>=4'} + + is-fullwidth-code-point@3.0.0: + resolution: {integrity: sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==} + engines: {node: '>=8'} + + is-glob@4.0.3: + resolution: {integrity: sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg==} + engines: {node: '>=0.10.0'} + + is-hex-prefixed@1.0.0: + resolution: {integrity: sha512-WvtOiug1VFrE9v1Cydwm+FnXd3+w9GaeVUss5W4v/SLy3UW00vP+6iNF2SdnfiBoLy4bTqVdkftNGTUeOFVsbA==} + engines: {node: '>=6.5.0', npm: '>=3'} + + is-number@7.0.0: + resolution: {integrity: sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==} + engines: {node: '>=0.12.0'} + + is-plain-obj@2.1.0: + resolution: {integrity: sha512-YWnfyRwxL/+SsrWYfOpUtz5b3YD+nyfkHvjbcanzk8zgyO4ASD67uVMRt8k5bM4lLMDnXfriRhOpemw+NfT1eA==} + engines: {node: '>=8'} + + is-unicode-supported@0.1.0: + resolution: {integrity: sha512-knxG2q4UC3u8stRGyAVJCOdxFmv5DZiRcdlIaAQXAbSfJya+OhopNotLQrstBhququ4ZpuKbDc/8S6mgXgPFPw==} + engines: {node: '>=10'} + + isarray@1.0.0: + resolution: {integrity: sha512-VLghIWNM6ELQzo7zwmcg0NmTVyWKYjvIeM83yjp0wRDTmUnrM678fQbcKBo6n2CJEF0szoG//ytg+TKla89ALQ==} + + isexe@2.0.0: + resolution: {integrity: sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw==} + + js-sha3@0.8.0: + resolution: {integrity: sha512-gF1cRrHhIzNfToc802P800N8PpXS+evLLXfsVpowqmAFR9uwbi89WvXg2QspOmXL8QL86J4T1EpFu+yUkwJY3Q==} + + js-yaml@3.14.1: + resolution: {integrity: sha512-okMH7OXXJ7YrN9Ok3/SXrnu4iX9yOk+25nqX4imS2npuvTYDmo/QEZoqwZkYaIDk3jVvBOTOIEgEhaLOynBS9g==} + hasBin: true + + js-yaml@4.1.0: + resolution: {integrity: sha512-wpxZs9NoxZaJESJGIZTyDEaYpl0FKSA+FB9aJiyemKhMwkxQg63h4T1KJgUGHpTqPDNRcmmYLugrRjJlBtWvRA==} + hasBin: true + + json-schema-traverse@1.0.0: + resolution: {integrity: sha512-NM8/P9n3XjXhIZn1lLhkFaACTOURQXjWhV4BA/RnOv8xvgqtqpAX9IO4mRQxSx1Rlo4tqzeqb0sOlruaOy3dug==} + + json-stream-stringify@3.1.6: + resolution: {integrity: sha512-x7fpwxOkbhFCaJDJ8vb1fBY3DdSa4AlITaz+HHILQJzdPMnHEFjxPwVUi1ALIbcIxDE0PNe/0i7frnY8QnBQog==} + engines: {node: '>=7.10.1'} + + json-stringify-safe@5.0.1: + resolution: {integrity: sha512-ZClg6AaYvamvYEE82d3Iyd3vSSIjQ+odgjaTzRuO3s7toCdFKczob2i0zCh7JE8kWn17yvAWhUVxvqGwUalsRA==} + + json5@2.2.3: + resolution: {integrity: sha512-XmOWe7eyHYH14cLdVPoyg+GOH3rYX++KpzrylJwSW98t3Nk+U8XOl8FWKOgwtzdb8lXGf6zYwDUzeHMWfxasyg==} + engines: {node: '>=6'} + hasBin: true + + jsonfile@4.0.0: + resolution: {integrity: sha512-m6F1R3z8jjlf2imQHS2Qez5sjKWQzbuuhuJ/FKYFRZvPE3PuHcSMVZzfsLhGVOkfd20obL5SWEBew5ShlquNxg==} + + jsonfile@6.1.0: + resolution: {integrity: sha512-5dgndWOriYSm5cnYaJNhalLNDKOqFwyDB/rr1E9ZsGciGvKPs8R2xYGCacuf3z6K1YKDz182fd+fY3cn3pMqXQ==} + + jsonschema@1.5.0: + resolution: {integrity: sha512-K+A9hhqbn0f3pJX17Q/7H6yQfD/5OXgdrR5UE12gMXCiN9D5Xq2o5mddV2QEcX/bjla99ASsAAQUyMCCRWAEhw==} + + keccak@3.0.4: + resolution: {integrity: sha512-3vKuW0jV8J3XNTzvfyicFR5qvxrSAGl7KIhvgOu5cmWwM7tZRj3fMbj/pfIf4be7aznbc+prBWGjywox/g2Y6Q==} + engines: {node: '>=10.0.0'} + + kind-of@6.0.3: + resolution: {integrity: sha512-dcS1ul+9tmeD95T+x28/ehLgd9mENa3LsvDTtzm3vyBEO7RPptvAD+t44WVXaUjTBRcrpFeFlC8WCruUR456hw==} + engines: {node: '>=0.10.0'} + + kleur@3.0.3: + resolution: {integrity: sha512-eTIzlVOSUR+JxdDFepEYcBMtZ9Qqdef+rnzWdRZuMbOywu5tO2w2N7rqjoANZ5k9vywhL6Br1VRjUIgTQx4E8w==} + engines: {node: '>=6'} + + levn@0.3.0: + resolution: {integrity: sha512-0OO4y2iOHix2W6ujICbKIaEQXvFQHue65vUG3pb5EUomzPI90z9hsA1VsO/dbIIpC53J8gxM9Q4Oho0jrCM/yA==} + engines: {node: '>= 0.8.0'} + + locate-path@6.0.0: + resolution: {integrity: sha512-iPZK6eYjbxRu3uB4/WZ3EsEIMJFMqAoopl3R+zuq0UjcAm/MO6KCweDgPfP3elTztoKP3KtnVHxTn2NHBSDVUw==} + engines: {node: '>=10'} + + lodash.camelcase@4.3.0: + resolution: {integrity: sha512-TwuEnCnxbc3rAvhf/LbG7tJUDzhqXyFnv3dtzLOPgCG/hODL7WFnsbwktkD7yUV0RrreP/l1PALq/YSg6VvjlA==} + + lodash.clonedeep@4.5.0: + resolution: {integrity: sha512-H5ZhCF25riFd9uB5UCkVKo61m3S/xZk1x4wA6yp/L3RFP6Z/eHH1ymQcGLo7J3GMPfm0V/7m1tryHuGVxpqEBQ==} + + lodash.isequal@4.5.0: + resolution: {integrity: sha512-pDo3lu8Jhfjqls6GkMgpahsF9kCyayhgykjyLMNFTKWrpVdAQtYyB4muAMWozBB4ig/dtWAmsMxLEI8wuz+DYQ==} + deprecated: This package is deprecated. Use require('node:util').isDeepStrictEqual instead. + + lodash.truncate@4.4.2: + resolution: {integrity: sha512-jttmRe7bRse52OsWIMDLaXxWqRAmtIUccAQ3garviCqJjafXOfNMO0yMfNpdD6zbGaTU0P5Nz7e7gAT6cKmJRw==} + + lodash@4.17.21: + resolution: {integrity: sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg==} + + log-symbols@4.1.0: + resolution: {integrity: sha512-8XPvpAA8uyhfteu8pIvQxpJZ7SYYdpUivZpGy6sFsBuKRY/7rQGavedeB8aK+Zkyq6upMFVL/9AW6vOYzfRyLg==} + engines: {node: '>=10'} + + loupe@2.3.7: + resolution: {integrity: sha512-zSMINGVYkdpYSOBmLi0D1Uo7JU9nVdQKrHxC8eYlV+9YKK9WePqAlL7lSlorG/U2Fw1w0hTBmaa/jrQ3UbPHtA==} + + lru_map@0.3.3: + resolution: {integrity: sha512-Pn9cox5CsMYngeDbmChANltQl+5pi6XmTrraMSzhPmMBbmgcxmqWry0U3PGapCU1yB4/LqCcom7qhHZiF/jGfQ==} + + make-error@1.3.6: + resolution: {integrity: sha512-s8UhlNe7vPKomQhC1qFelMokr/Sc3AgNbso3n74mVPA5LTZwkB9NlXf4XPamLxJE8h0gh73rM94xvwRT2CVInw==} + + markdown-table@1.1.3: + resolution: {integrity: sha512-1RUZVgQlpJSPWYbFSpmudq5nHY1doEIv89gBtF0s4gW1GF2XorxcA/70M5vq7rLv0a6mhOUccRsqkwhwLCIQ2Q==} + + math-intrinsics@1.1.0: + resolution: {integrity: sha512-/IXtbwEk5HTPyEwyKX6hGkYXxM9nbj64B+ilVJnC/R6B0pH5G4V3b0pVbL7DBj4tkhBAppbQUlf6F6Xl9LHu1g==} + engines: {node: '>= 0.4'} + + md5.js@1.3.5: + resolution: {integrity: sha512-xitP+WxNPcTTOgnTJcrhM0xvdPepipPSf3I8EIpGKeFLjt3PlJLIDG3u8EX53ZIubkb+5U2+3rELYpEhHhzdkg==} + + memorystream@0.3.1: + resolution: {integrity: sha512-S3UwM3yj5mtUSEfP41UZmt/0SCoVYUcU1rkXv+BQ5Ig8ndL4sPoJNBUJERafdPb5jjHJGuMgytgKvKIf58XNBw==} + engines: {node: '>= 0.10.0'} + + merge2@1.4.1: + resolution: {integrity: sha512-8q7VEgMJW4J8tcfVPy8g09NcQwZdbwFEqhe/WZkoIzjn/3TGDwtOCYtXGxA3O8tPzpczCCDgv+P2P5y00ZJOOg==} + engines: {node: '>= 8'} + + micro-ftch@0.3.1: + resolution: {integrity: sha512-/0LLxhzP0tfiR5hcQebtudP56gUurs2CLkGarnCiB/OqEyUFQ6U3paQi/tgLv0hBJYt2rnr9MNpxz4fiiugstg==} + + micromatch@4.0.8: + resolution: {integrity: sha512-PXwfBhYu0hBCPw8Dn0E+WDYb7af3dSLVWKi3HGv84IdF4TyFoC0ysxFd0Goxw7nSv4T/PzEJQxsYsEiFCKo2BA==} + engines: {node: '>=8.6'} + + mime-db@1.52.0: + resolution: {integrity: sha512-sPU4uV7dYlvtWJxwwxHD0PuihVNiE7TyAbQ5SWxDCB9mUYvOgroQOwYQQOKPJ8CIbE+1ETVlOoK1UC2nU3gYvg==} + engines: {node: '>= 0.6'} + + mime-types@2.1.35: + resolution: {integrity: sha512-ZDY+bPm5zTTF+YpCrAU9nK0UgICYPT0QtT1NZWFv4s++TNkcgVaT0g6+4R2uI4MjQjzysHB1zxuWL50hzaeXiw==} + engines: {node: '>= 0.6'} + + minimalistic-assert@1.0.1: + resolution: {integrity: sha512-UtJcAD4yEaGtjPezWuO9wC4nwUnVH/8/Im3yEHQP4b67cXlD/Qr9hdITCU1xDbSEXg2XKNaP8jsReV7vQd00/A==} + + minimalistic-crypto-utils@1.0.1: + resolution: {integrity: sha512-JIYlbt6g8i5jKfJ3xz7rF0LXmv2TkDxBLUkiBeZ7bAx4GnnNMr8xFpGnOxn6GhTEHx3SjRrZEoU+j04prX1ktg==} + + minimatch@3.1.2: + resolution: {integrity: sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==} + + minimatch@5.1.6: + resolution: {integrity: sha512-lKwV/1brpG6mBUFHtb7NUmtABCb2WZZmm2wNiOA5hAb8VdCS4B3dtMWyvcoViccwAW/COERjXLt0zP1zXUN26g==} + engines: {node: '>=10'} + + minimist@1.2.8: + resolution: {integrity: sha512-2yyAR8qBkN3YuheJanUpWC5U3bb5osDywNB8RzDVlDwDHbocAJveqqj1u8+SVD7jkWT4yvsHCpWqqWqAxb0zCA==} + + mkdirp@0.5.6: + resolution: {integrity: sha512-FP+p8RB8OWpF3YZBCrP5gtADmtXApB5AMLn+vdyA+PyxCjrCs00mjyUozssO33cwDeT3wNGdLxJ5M//YqtHAJw==} + hasBin: true + + mkdirp@1.0.4: + resolution: {integrity: sha512-vVqVZQyf3WLx2Shd0qJ9xuvqgAyKPLAiqITEtqW0oIUjzo3PePDd6fW9iFz30ef7Ysp/oiWqbhszeGWW2T6Gzw==} + engines: {node: '>=10'} + hasBin: true + + mnemonist@0.38.5: + resolution: {integrity: sha512-bZTFT5rrPKtPJxj8KSV0WkPyNxl72vQepqqVUAW2ARUpUSF2qXMB6jZj7hW5/k7C1rtpzqbD/IIbJwLXUjCHeg==} + + mocha@10.8.2: + resolution: {integrity: sha512-VZlYo/WE8t1tstuRmqgeyBgCbJc/lEdopaa+axcKzTBJ+UIdlAB9XnmvTCAH4pwR4ElNInaedhEBmZD8iCSVEg==} + engines: {node: '>= 14.0.0'} + hasBin: true + + ms@2.1.3: + resolution: {integrity: sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==} + + ndjson@2.0.0: + resolution: {integrity: sha512-nGl7LRGrzugTtaFcJMhLbpzJM6XdivmbkdlaGcrk/LXg2KL/YBC6z1g70xh0/al+oFuVFP8N8kiWRucmeEH/qQ==} + engines: {node: '>=10'} + hasBin: true + + neo-async@2.6.2: + resolution: {integrity: sha512-Yd3UES5mWCSqR+qNT93S3UoYUkqAZ9lLg8a7g9rimsWmYGK8cVToA4/sF3RrshdyV3sAGMXVUmpMYOw+dLpOuw==} + + node-addon-api@2.0.2: + resolution: {integrity: sha512-Ntyt4AIXyaLIuMHF6IOoTakB3K+RWxwtsHNRxllEoA6vPwP9o4866g6YWDLUdnucilZhmkxiHwHr11gAENw+QA==} + + node-addon-api@5.1.0: + resolution: {integrity: sha512-eh0GgfEkpnoWDq+VY8OyvYhFEzBk6jIYbRKdIlyTiAXIVJ8PyBaKb0rp7oDtoddbdoHWhq8wwr+XZ81F1rpNdA==} + + node-emoji@1.11.0: + resolution: {integrity: sha512-wo2DpQkQp7Sjm2A0cq+sN7EHKO6Sl0ctXeBdFZrL9T9+UywORbufTcTZxom8YqpLQt/FqNMUkOpkZrJVYSKD3A==} + + node-gyp-build@4.8.4: + resolution: {integrity: sha512-LA4ZjwlnUblHVgq0oBF3Jl/6h/Nvs5fzBLwdEF4nuxnFdsfajde4WfxtJr3CaiH+F6ewcIB/q4jQ4UzPyid+CQ==} + hasBin: true + + nofilter@3.1.0: + resolution: {integrity: sha512-l2NNj07e9afPnhAhvgVrCD/oy2Ai1yfLpuo3EpiO1jFTsB4sFz6oIfAfSZyQzVpkZQ9xS8ZS5g1jCBgq4Hwo0g==} + engines: {node: '>=12.19'} + + nopt@3.0.6: + resolution: {integrity: sha512-4GUt3kSEYmk4ITxzB/b9vaIDfUVWN/Ml1Fwl11IlnIG2iaJ9O6WXZ9SrYM9NLI8OCBieN2Y8SWC2oJV0RQ7qYg==} + hasBin: true + + normalize-path@3.0.0: + resolution: {integrity: sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA==} + engines: {node: '>=0.10.0'} + + number-to-bn@1.7.0: + resolution: {integrity: sha512-wsJ9gfSz1/s4ZsJN01lyonwuxA1tml6X1yBDnfpMglypcBRFZZkus26EdPSlqS5GJfYddVZa22p3VNb3z5m5Ig==} + engines: {node: '>=6.5.0', npm: '>=3'} + + object-assign@4.1.1: + resolution: {integrity: sha512-rJgTQnkUnH1sFw8yT6VSU3zD3sWmu6sZhIseY8VX+GRu3P6F7Fu+JNDoXfklElbLJSnc3FUQHVe4cU5hj+BcUg==} + engines: {node: '>=0.10.0'} + + object-inspect@1.13.4: + resolution: {integrity: sha512-W67iLl4J2EXEGTbfeHCffrjDfitvLANg0UlX3wFUUSTx92KXRFegMHUVgSqE+wvhAbi4WqjGg9czysTV2Epbew==} + engines: {node: '>= 0.4'} + + obliterator@2.0.5: + resolution: {integrity: sha512-42CPE9AhahZRsMNslczq0ctAEtqk8Eka26QofnqC346BZdHDySk3LWka23LI7ULIw11NmltpiLagIq8gBozxTw==} + + once@1.4.0: + resolution: {integrity: sha512-lNaJgI+2Q5URQBkccEKHTQOPaXdUxnZZElQTZY0MFUAuaEqe1E+Nyvgdz/aIyNi6Z9MzO5dv1H8n58/GELp3+w==} + + optionator@0.8.3: + resolution: {integrity: sha512-+IW9pACdk3XWmmTXG8m3upGUJst5XRGzxMRjXzAuJ1XnIFNvfhjjIuYkDvysnPQ7qzqVzLt78BCruntqRhWQbA==} + engines: {node: '>= 0.8.0'} + + ordinal@1.0.3: + resolution: {integrity: sha512-cMddMgb2QElm8G7vdaa02jhUNbTSrhsgAGUz1OokD83uJTwSUn+nKoNoKVVaRa08yF6sgfO7Maou1+bgLd9rdQ==} + + os-tmpdir@1.0.2: + resolution: {integrity: sha512-D2FR03Vir7FIu45XBY20mTb+/ZSWB00sjU9jdQXt83gDrI4Ztz5Fs7/yy74g2N5SVQY4xY1qDr4rNddwYRVX0g==} + engines: {node: '>=0.10.0'} + + p-limit@3.1.0: + resolution: {integrity: sha512-TYOanM3wGwNGsZN2cVTYPArw454xnXj5qmWF1bEoAc4+cU/ol7GVh7odevjp1FNHduHc3KZMcFduxU5Xc6uJRQ==} + engines: {node: '>=10'} + + p-locate@5.0.0: + resolution: {integrity: sha512-LaNjtRWUBY++zB5nE/NwcaoMylSPk+S+ZHNB1TzdbMJMny6dynpAGt7X/tl/QYq3TIeE6nxHppbo2LGymrG5Pw==} + engines: {node: '>=10'} + + p-map@4.0.0: + resolution: {integrity: sha512-/bjOqmgETBYB5BoEeGVea8dmvHb2m9GLy1E9W43yeyfP6QQCZGFNa+XRceJEuDB6zqr+gKpIAmlLebMpykw/MQ==} + engines: {node: '>=10'} + + parse-cache-control@1.0.1: + resolution: {integrity: sha512-60zvsJReQPX5/QP0Kzfd/VrpjScIQ7SHBW6bFCYfEP+fp0Eppr1SHhIO5nd1PjZtvclzSzES9D/p5nFJurwfWg==} + + path-exists@4.0.0: + resolution: {integrity: sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w==} + engines: {node: '>=8'} + + path-is-absolute@1.0.1: + resolution: {integrity: sha512-AVbw3UJ2e9bq64vSaS9Am0fje1Pa8pbGqTTsmXfaIiMpnr5DlDhfJOuLj9Sf95ZPVDAUerDfEk88MPmPe7UCQg==} + engines: {node: '>=0.10.0'} + + path-parse@1.0.7: + resolution: {integrity: sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw==} + + path-type@4.0.0: + resolution: {integrity: sha512-gDKb8aZMDeD/tZWs9P6+q0J9Mwkdl6xMV8TjnGP3qJVJ06bdMgkbBlLU8IdfOsIsFz2BW1rNVT3XuNEl8zPAvw==} + engines: {node: '>=8'} + + pathval@1.1.1: + resolution: {integrity: sha512-Dp6zGqpTdETdR63lehJYPeIOqpiNBNtc7BpWSLrOje7UaIsE5aY92r/AunQA7rsXvet3lrJ3JnZX29UPTKXyKQ==} + + pbkdf2@3.1.2: + resolution: {integrity: sha512-iuh7L6jA7JEGu2WxDwtQP1ddOpaJNC4KlDEFfdQajSGgGPNi4OyDc2R7QnbY2bR9QjBVGwgvTdNJZoE7RaxUMA==} + engines: {node: '>=0.12'} + + picocolors@1.1.1: + resolution: {integrity: sha512-xceH2snhtb5M9liqDsmEw56le376mTZkEX/jEb/RxNFyegNul7eNslCXP9FDj/Lcu0X8KEyMceP2ntpaHrDEVA==} + + picomatch@2.3.1: + resolution: {integrity: sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==} + engines: {node: '>=8.6'} + + picomatch@4.0.2: + resolution: {integrity: sha512-M7BAV6Rlcy5u+m6oPhAPFgJTzAioX/6B0DxyvDlo9l8+T3nLKbrczg2WLUyzd45L8RqfUMyGPzekbMvX2Ldkwg==} + engines: {node: '>=12'} + + pify@4.0.1: + resolution: {integrity: sha512-uB80kBFb/tfd68bVleG9T5GGsGPjJrLAUpR5PZIrhBnIaRTQRjqdJSsIKkOP6OAIFbj7GOrcudc5pNjZ+geV2g==} + engines: {node: '>=6'} + + prelude-ls@1.1.2: + resolution: {integrity: sha512-ESF23V4SKG6lVSGZgYNpbsiaAkdab6ZgOxe52p7+Kid3W3u3bxR4Vfd/o21dmN7jSt0IwgZ4v5MUd26FEtXE9w==} + engines: {node: '>= 0.8.0'} + + prettier@2.8.8: + resolution: {integrity: sha512-tdN8qQGvNjw4CHbY+XXk0JgCXn9QiF21a55rBe5LJAU+kDyC4WQn4+awm2Xfk2lQMk5fKup9XgzTZtGkjBdP9Q==} + engines: {node: '>=10.13.0'} + hasBin: true + + process-nextick-args@2.0.1: + resolution: {integrity: sha512-3ouUOpQhtgrbOa17J7+uxOTpITYWaGP7/AhoR3+A+/1e9skrzelGi/dXzEYyvbxubEF6Wn2ypscTKiKJFFn1ag==} + + promise@8.3.0: + resolution: {integrity: sha512-rZPNPKTOYVNEEKFaq1HqTgOwZD+4/YHS5ukLzQCypkj+OkYx7iv0mA91lJlpPPZ8vMau3IIGj5Qlwrx+8iiSmg==} + + prompts@2.4.2: + resolution: {integrity: sha512-NxNv/kLguCA7p3jE8oL2aEBsrJWgAakBpgmgK6lpPWV+WuOmY6r2/zbAVnP+T8bQlA0nzHXSJSJW0Hq7ylaD2Q==} + engines: {node: '>= 6'} + + proxy-from-env@1.1.0: + resolution: {integrity: sha512-D+zkORCbA9f1tdWRK0RaCR3GPv50cMxcrz4X8k5LTSUD1Dkw47mKJEZQNunItRTkWwgtaUSo1RVFRIG9ZXiFYg==} + + qs@6.14.0: + resolution: {integrity: sha512-YWWTjgABSKcvs/nWBi9PycY/JiPJqOD4JA6o9Sej2AtvSGarXxKC3OQSk4pAarbdQlKAh5D4FCQkJNkW+GAn3w==} + engines: {node: '>=0.6'} + + queue-microtask@1.2.3: + resolution: {integrity: sha512-NuaNSa6flKT5JaSYQzJok04JzTL1CA6aGhv5rfLW3PgqA+M2ChpZQnAC8h8i4ZFkBS8X5RqkDBHA7r4hej3K9A==} + + randombytes@2.1.0: + resolution: {integrity: sha512-vYl3iOX+4CKUWuxGi9Ukhie6fsqXqS9FE2Zaic4tNFD2N2QQaXOMFbuKK4QmDHC0JO6B1Zp41J0LpT0oR68amQ==} + + raw-body@2.5.2: + resolution: {integrity: sha512-8zGqypfENjCIqGhgXToC8aB2r7YrBX+AQAfIPs/Mlk+BtPTztOvTS01NRW/3Eh60J+a48lt8qsCzirQ6loCVfA==} + engines: {node: '>= 0.8'} + + readable-stream@2.3.8: + resolution: {integrity: sha512-8p0AUk4XODgIewSi0l8Epjs+EVnWiK7NoDIEGU0HhE7+ZyY8D1IMY7odu5lRrFXGg71L15KG8QrPmum45RTtdA==} + + readable-stream@3.6.2: + resolution: {integrity: sha512-9u/sniCrY3D5WdsERHzHE4G2YCXqoG5FTHUiCC4SIbr6XcLZBY05ya9EKjYek9O5xOAwjGq+1JdGBAS7Q9ScoA==} + engines: {node: '>= 6'} + + readdirp@3.6.0: + resolution: {integrity: sha512-hOS089on8RduqdbhvQ5Z37A0ESjsqz6qnRcffsMU3495FuTdqSm+7bhJ29JvIOsBDEEnan5DPu9t3To9VRlMzA==} + engines: {node: '>=8.10.0'} + + readdirp@4.1.2: + resolution: {integrity: sha512-GDhwkLfywWL2s6vEjyhri+eXmfH6j1L7JE27WhqLeYzoh/A3DBaYGEj2H/HFZCn/kMfim73FXxEJTw06WtxQwg==} + engines: {node: '>= 14.18.0'} + + rechoir@0.6.2: + resolution: {integrity: sha512-HFM8rkZ+i3zrV+4LQjwQ0W+ez98pApMGM3HUrN04j3CqzPOzl9nmP15Y8YXNm8QHGv/eacOVEjqhmWpkRV0NAw==} + engines: {node: '>= 0.10'} + + recursive-readdir@2.2.3: + resolution: {integrity: sha512-8HrF5ZsXk5FAH9dgsx3BlUer73nIhuj+9OrQwEbLTPOBzGkL1lsFCR01am+v+0m2Cmbs1nP12hLDl5FA7EszKA==} + engines: {node: '>=6.0.0'} + + reduce-flatten@2.0.0: + resolution: {integrity: sha512-EJ4UNY/U1t2P/2k6oqotuX2Cc3T6nxJwsM0N0asT7dhrtH1ltUxDn4NalSYmPE2rCkVpcf/X6R0wDwcFpzhd4w==} + engines: {node: '>=6'} + + req-cwd@2.0.0: + resolution: {integrity: sha512-ueoIoLo1OfB6b05COxAA9UpeoscNpYyM+BqYlA7H6LVF4hKGPXQQSSaD2YmvDVJMkk4UDpAHIeU1zG53IqjvlQ==} + engines: {node: '>=4'} + + req-from@2.0.0: + resolution: {integrity: sha512-LzTfEVDVQHBRfjOUMgNBA+V6DWsSnoeKzf42J7l0xa/B4jyPOuuF5MlNSmomLNGemWTnV2TIdjSSLnEn95fOQA==} + engines: {node: '>=4'} + + require-directory@2.1.1: + resolution: {integrity: sha512-fGxEI7+wsG9xrvdjsrlmL22OMTTiHRwAMroiEeMgq8gzoLC/PQr7RsRDSTLUg/bZAZtF+TVIkHc6/4RIKrui+Q==} + engines: {node: '>=0.10.0'} + + require-from-string@2.0.2: + resolution: {integrity: sha512-Xf0nWe6RseziFMu+Ap9biiUbmplq6S9/p+7w7YXP/JBHhrUDDUhwa+vANyubuqfZWTveU//DYVGsDG7RKL/vEw==} + engines: {node: '>=0.10.0'} + + resolve-from@3.0.0: + resolution: {integrity: sha512-GnlH6vxLymXJNMBo7XP1fJIzBFbdYt49CuTwmB/6N53t+kMPRMFKz783LlQ4tv28XoQfMWinAJX6WCGf2IlaIw==} + engines: {node: '>=4'} + + resolve@1.1.7: + resolution: {integrity: sha512-9znBF0vBcaSN3W2j7wKvdERPwqTxSpCq+if5C0WoTCyV9n24rua28jeuQ2pL/HOf+yUe/Mef+H/5p60K0Id3bg==} + + resolve@1.17.0: + resolution: {integrity: sha512-ic+7JYiV8Vi2yzQGFWOkiZD5Z9z7O2Zhm9XMaTxdJExKasieFCr+yXZ/WmXsckHiKl12ar0y6XiXDx3m4RHn1w==} + + resolve@1.22.10: + resolution: {integrity: sha512-NPRy+/ncIMeDlTAsuqwKIiferiawhefFJtkNSW0qZJEqMEb+qBt/77B/jGeeek+F0uOeN05CDa6HXbbIgtVX4w==} + engines: {node: '>= 0.4'} + hasBin: true + + reusify@1.1.0: + resolution: {integrity: sha512-g6QUff04oZpHs0eG5p83rFLhHeV00ug/Yf9nZM6fLeUrPguBTkTQOdpAWWspMh55TZfVQDPaN3NQJfbVRAxdIw==} + engines: {iojs: '>=1.0.0', node: '>=0.10.0'} + + ripemd160@2.0.2: + resolution: {integrity: sha512-ii4iagi25WusVoiC4B4lq7pbXfAp3D9v5CwfkY33vffw2+pkDjY1D8GaN7spsxvCSx8dkPqOZCEZyfxcmJG2IA==} + + rlp@2.2.7: + resolution: {integrity: sha512-d5gdPmgQ0Z+AklL2NVXr/IoSjNZFfTVvQWzL/AM2AOcSzYP2xjlb0AC8YyCLc41MSNf6P6QVtjgPdmVtzb+4lQ==} + hasBin: true + + run-parallel@1.2.0: + resolution: {integrity: sha512-5l4VyZR86LZ/lDxZTR6jqL8AFE2S0IFLMP26AbjsLVADxHdhB/c0GUsH+y39UfCi3dzz8OlQuPmnaJOMoDHQBA==} + + safe-buffer@5.1.2: + resolution: {integrity: sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==} + + safe-buffer@5.2.1: + resolution: {integrity: sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==} + + safer-buffer@2.1.2: + resolution: {integrity: sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==} + + sc-istanbul@0.4.6: + resolution: {integrity: sha512-qJFF/8tW/zJsbyfh/iT/ZM5QNHE3CXxtLJbZsL+CzdJLBsPD7SedJZoUA4d8iAcN2IoMp/Dx80shOOd2x96X/g==} + hasBin: true + + scrypt-js@3.0.1: + resolution: {integrity: sha512-cdwTTnqPu0Hyvf5in5asVdZocVDTNRmR7XEcJuIzMjJeSHybHl7vpB66AzwTaIg6CLSbtjcxc8fqcySfnTkccA==} + + secp256k1@4.0.4: + resolution: {integrity: sha512-6JfvwvjUOn8F/jUoBY2Q1v5WY5XS+rj8qSe0v8Y4ezH4InLgTEeOOPQsRll9OV429Pvo6BCHGavIyJfr3TAhsw==} + engines: {node: '>=18.0.0'} + + semver@5.7.2: + resolution: {integrity: sha512-cBznnQ9KjJqU67B52RMC65CMarK2600WFnbkcaiwWq3xy/5haFJlshgnpjovMVJ+Hff49d8GEn0b87C5pDQ10g==} + hasBin: true + + semver@6.3.1: + resolution: {integrity: sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==} + hasBin: true + + semver@7.7.1: + resolution: {integrity: sha512-hlq8tAfn0m/61p4BVRcPzIGr6LKiMwo4VM6dGi6pt4qcRkmNzTcWq6eCEjEh+qXjkMDvPlOFFSGwQjoEa6gyMA==} + engines: {node: '>=10'} + hasBin: true + + serialize-javascript@6.0.2: + resolution: {integrity: sha512-Saa1xPByTTq2gdeFZYLLo+RFE35NHZkAbqZeWNd3BpzppeVisAqpDjcp8dyf6uIvEqJRd46jemmyA4iFIeVk8g==} + + setimmediate@1.0.5: + resolution: {integrity: sha512-MATJdZp8sLqDl/68LfQmbP8zKPLQNV6BIZoIgrscFDQ+RsvK/BxeDQOgyxKKoh0y/8h3BqVFnCqQ/gd+reiIXA==} + + setprototypeof@1.2.0: + resolution: {integrity: sha512-E5LDX7Wrp85Kil5bhZv46j8jOeboKq5JMmYM3gVGdGH8xFpPWXUMsNrlODCrkoxMEeNi/XZIwuRvY4XNwYMJpw==} + + sha.js@2.4.11: + resolution: {integrity: sha512-QMEp5B7cftE7APOjk5Y6xgrbWu+WkLVQwk8JNjZ8nKRciZaByEW6MubieAiToS7+dwvrjGhH8jRXz3MVd0AYqQ==} + hasBin: true + + sha1@1.1.1: + resolution: {integrity: sha512-dZBS6OrMjtgVkopB1Gmo4RQCDKiZsqcpAQpkV/aaj+FCrCg8r4I4qMkDPQjBgLIxlmu9k4nUbWq6ohXahOneYA==} + + shelljs@0.8.5: + resolution: {integrity: sha512-TiwcRcrkhHvbrZbnRcFYMLl30Dfov3HKqzp5tO5b4pt6G/SezKcYhmDg15zXVBswHmctSAQKznqNW2LO5tTDow==} + engines: {node: '>=4'} + hasBin: true + + side-channel-list@1.0.0: + resolution: {integrity: sha512-FCLHtRD/gnpCiCHEiJLOwdmFP+wzCmDEkc9y7NsYxeF4u7Btsn1ZuwgwJGxImImHicJArLP4R0yX4c2KCrMrTA==} + engines: {node: '>= 0.4'} + + side-channel-map@1.0.1: + resolution: {integrity: sha512-VCjCNfgMsby3tTdo02nbjtM/ewra6jPHmpThenkTYh8pG9ucZ/1P8So4u4FGBek/BjpOVsDCMoLA/iuBKIFXRA==} + engines: {node: '>= 0.4'} + + side-channel-weakmap@1.0.2: + resolution: {integrity: sha512-WPS/HvHQTYnHisLo9McqBHOJk2FkHO/tlpvldyrnem4aeQp4hai3gythswg6p01oSoTl58rcpiFAjF2br2Ak2A==} + engines: {node: '>= 0.4'} + + side-channel@1.1.0: + resolution: {integrity: sha512-ZX99e6tRweoUXqR+VBrslhda51Nh5MTQwou5tnUDgbtyM0dBgmhEDtWGP/xbKn6hqfPRHujUNwz5fy/wbbhnpw==} + engines: {node: '>= 0.4'} + + sisteransi@1.0.5: + resolution: {integrity: sha512-bLGGlR1QxBcynn2d5YmDX4MGjlZvy2MRBDRNHLJ8VI6l6+9FUiyTFNJ0IveOSP0bcXgVDPRcfGqA0pjaqUpfVg==} + + slash@3.0.0: + resolution: {integrity: sha512-g9Q1haeby36OSStwb4ntCGGGaKsaVSjQ68fBxoQcutl5fS1vuY18H3wSt3jFyFtrkx+Kz0V1G85A4MyAdDMi2Q==} + engines: {node: '>=8'} + + slice-ansi@4.0.0: + resolution: {integrity: sha512-qMCMfhY040cVHT43K9BFygqYbUPFZKHOg7K73mtTWJRb8pyP3fzf4Ixd5SzdEJQ6MRUg/WBnOLxghZtKKurENQ==} + engines: {node: '>=10'} + + solc@0.8.26: + resolution: {integrity: sha512-yiPQNVf5rBFHwN6SIf3TUUvVAFKcQqmSUFeq+fb6pNRCo0ZCgpYOZDi3BVoezCPIAcKrVYd/qXlBLUP9wVrZ9g==} + engines: {node: '>=10.0.0'} + hasBin: true + + solidity-coverage@0.8.14: + resolution: {integrity: sha512-ItAAObe5GaEOp20kXC2BZRnph+9P7Rtoqg2mQc2SXGEHgSDF2wWd1Wxz3ntzQWXkbCtIIGdJT918HG00cObwbA==} + hasBin: true + peerDependencies: + hardhat: ^2.11.0 + + source-map-support@0.5.21: + resolution: {integrity: sha512-uBHU3L3czsIyYXKX88fdrGovxdSCoTGDRZ6SYXtSRxLZUzHg5P/66Ht6uoUlHu9EZod+inXhKo3qQgwXUT/y1w==} + + source-map@0.2.0: + resolution: {integrity: sha512-CBdZ2oa/BHhS4xj5DlhjWNHcan57/5YuvfdLf17iVmIpd9KRm+DFLmC6nBNj+6Ua7Kt3TmOjDpQT1aTYOQtoUA==} + engines: {node: '>=0.8.0'} + + source-map@0.6.1: + resolution: {integrity: sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==} + engines: {node: '>=0.10.0'} + + split2@3.2.2: + resolution: {integrity: sha512-9NThjpgZnifTkJpzTZ7Eue85S49QwpNhZTq6GRJwObb6jnLFNGB7Qm73V5HewTROPyxD0C29xqmaI68bQtV+hg==} + + sprintf-js@1.0.3: + resolution: {integrity: sha512-D9cPgkvLlV3t3IzL0D0YLvGA9Ahk4PcvVwUbN0dSGr1aP0Nrt4AEnTUbuGvquEC0mA64Gqt1fzirlRs5ibXx8g==} + + stacktrace-parser@0.1.11: + resolution: {integrity: sha512-WjlahMgHmCJpqzU8bIBy4qtsZdU9lRlcZE3Lvyej6t4tuOuv1vk57OW3MBrj6hXBFx/nNoC9MPMTcr5YA7NQbg==} + engines: {node: '>=6'} + + statuses@2.0.1: + resolution: {integrity: sha512-RwNA9Z/7PrK06rYLIzFMlaF+l73iwpzsqRIFgbMLbTcLD6cOao82TaWefPXQvB2fOC4AjuYSEndS7N/mTCbkdQ==} + engines: {node: '>= 0.8'} + + string-format@2.0.0: + resolution: {integrity: sha512-bbEs3scLeYNXLecRRuk6uJxdXUSj6le/8rNPHChIJTn2V79aXVTR1EH2OH5zLKKoz0V02fOUKZZcw01pLUShZA==} + + string-width@2.1.1: + resolution: {integrity: sha512-nOqH59deCq9SRHlxq1Aw85Jnt4w6KvLKqWVik6oA9ZklXLNIOlqg4F2yrT1MVaTjAqvVwdfeZ7w7aCvJD7ugkw==} + engines: {node: '>=4'} + + string-width@4.2.3: + resolution: {integrity: sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==} + engines: {node: '>=8'} + + string_decoder@1.1.1: + resolution: {integrity: sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==} + + string_decoder@1.3.0: + resolution: {integrity: sha512-hkRX8U1WjJFd8LsDJ2yQ/wWWxaopEsABU1XfkM8A+j0+85JAGppt16cr1Whg6KIbb4okU6Mql6BOj+uup/wKeA==} + + strip-ansi@4.0.0: + resolution: {integrity: sha512-4XaJ2zQdCzROZDivEVIDPkcQn8LMFSa8kj8Gxb/Lnwzv9A8VctNZ+lfivC/sV3ivW8ElJTERXZoPBRrZKkNKow==} + engines: {node: '>=4'} + + strip-ansi@6.0.1: + resolution: {integrity: sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==} + engines: {node: '>=8'} + + strip-hex-prefix@1.0.0: + resolution: {integrity: sha512-q8d4ue7JGEiVcypji1bALTos+0pWtyGlivAWyPuTkHzuTCJqrK9sWxYQZUq6Nq3cuyv3bm734IhHvHtGGURU6A==} + engines: {node: '>=6.5.0', npm: '>=3'} + + strip-json-comments@3.1.1: + resolution: {integrity: sha512-6fPc+R4ihwqP6N/aIv2f1gMH8lOVtWQHoqC4yK6oSDVVocumAsfCqjkXnqiYMhmMwS/mEHLp7Vehlt3ql6lEig==} + engines: {node: '>=8'} + + supports-color@3.2.3: + resolution: {integrity: sha512-Jds2VIYDrlp5ui7t8abHN2bjAu4LV/q4N2KivFPpGH0lrka0BMq/33AmECUXlKPcHigkNaqfXRENFju+rlcy+A==} + engines: {node: '>=0.8.0'} + + supports-color@5.5.0: + resolution: {integrity: sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==} + engines: {node: '>=4'} + + supports-color@7.2.0: + resolution: {integrity: sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==} + engines: {node: '>=8'} + + supports-color@8.1.1: + resolution: {integrity: sha512-MpUEN2OodtUzxvKQl72cUF7RQ5EiHsGvSsVG0ia9c5RbWGL2CI4C7EpPS8UTBIplnlzZiNuV56w+FuNxy3ty2Q==} + engines: {node: '>=10'} + + supports-preserve-symlinks-flag@1.0.0: + resolution: {integrity: sha512-ot0WnXS9fgdkgIcePe6RHNk1WA8+muPa6cSjeR3V8K27q9BB1rTE3R1p7Hv0z1ZyAc8s6Vvv8DIyWf681MAt0w==} + engines: {node: '>= 0.4'} + + sync-request@6.1.0: + resolution: {integrity: sha512-8fjNkrNlNCrVc/av+Jn+xxqfCjYaBoHqCsDz6mt030UMxJGr+GSfCV1dQt2gRtlL63+VPidwDVLr7V2OcTSdRw==} + engines: {node: '>=8.0.0'} + + sync-rpc@1.3.6: + resolution: {integrity: sha512-J8jTXuZzRlvU7HemDgHi3pGnh/rkoqR/OZSjhTyyZrEkkYQbk7Z33AXp37mkPfPpfdOuj7Ex3H/TJM1z48uPQw==} + + table-layout@1.0.2: + resolution: {integrity: sha512-qd/R7n5rQTRFi+Zf2sk5XVVd9UQl6ZkduPFC3S7WEGJAmetDTjY3qPN50eSKzwuzEyQKy5TN2TiZdkIjos2L6A==} + engines: {node: '>=8.0.0'} + + table@6.9.0: + resolution: {integrity: sha512-9kY+CygyYM6j02t5YFHbNz2FN5QmYGv9zAjVp4lCDjlCw7amdckXlEt/bjMhUIfj4ThGRE4gCUH5+yGnNuPo5A==} + engines: {node: '>=10.0.0'} + + then-request@6.0.2: + resolution: {integrity: sha512-3ZBiG7JvP3wbDzA9iNY5zJQcHL4jn/0BWtXIkagfz7QgOL/LqjCEOBQuJNZfu0XYnv5JhKh+cDxCPM4ILrqruA==} + engines: {node: '>=6.0.0'} + + through2@4.0.2: + resolution: {integrity: sha512-iOqSav00cVxEEICeD7TjLB1sueEL+81Wpzp2bY17uZjZN0pWZPuo4suZ/61VujxmqSGFfgOcNuTZ85QJwNZQpw==} + + tinyglobby@0.2.12: + resolution: {integrity: sha512-qkf4trmKSIiMTs/E63cxH+ojC2unam7rJ0WrauAzpT3ECNTxGRMlaXxVbfxMUC/w0LaYk6jQ4y/nGR9uBO3tww==} + engines: {node: '>=12.0.0'} + + tmp@0.0.33: + resolution: {integrity: sha512-jRCJlojKnZ3addtTOjdIqoRuPEKBvNXcGYqzO6zWZX8KfKEpnGY5jfggJQ3EjKuu8D4bJRr0y+cYJFmYbImXGw==} + engines: {node: '>=0.6.0'} + + to-regex-range@5.0.1: + resolution: {integrity: sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==} + engines: {node: '>=8.0'} + + toidentifier@1.0.1: + resolution: {integrity: sha512-o5sSPKEkg/DIQNmH43V0/uerLrpzVedkUh8tGNvaeXpfpuwjKenlSox/2O/BTlZUtEe+JG7s5YhEz608PlAHRA==} + engines: {node: '>=0.6'} + + ts-command-line-args@2.5.1: + resolution: {integrity: sha512-H69ZwTw3rFHb5WYpQya40YAX2/w7Ut75uUECbgBIsLmM+BNuYnxsltfyyLMxy6sEeKxgijLTnQtLd0nKd6+IYw==} + hasBin: true + + ts-essentials@7.0.3: + resolution: {integrity: sha512-8+gr5+lqO3G84KdiTSMRLtuyJ+nTBVRKuCrK4lidMPdVeEp0uqC875uE5NMcaA7YYMN7XsNiFQuMvasF8HT/xQ==} + peerDependencies: + typescript: '>=3.7.0' + + ts-node@10.9.2: + resolution: {integrity: sha512-f0FFpIdcHgn8zcPSbf1dRevwt047YMnaiJM3u2w2RewrB+fob/zePZcrOyQoLMMO7aBIddLcQIEK5dYjkLnGrQ==} + hasBin: true + peerDependencies: + '@swc/core': '>=1.2.50' + '@swc/wasm': '>=1.2.50' + '@types/node': '*' + typescript: '>=2.7' + peerDependenciesMeta: + '@swc/core': + optional: true + '@swc/wasm': + optional: true + + tslib@1.14.1: + resolution: {integrity: sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==} + + tslib@2.7.0: + resolution: {integrity: sha512-gLXCKdN1/j47AiHiOkJN69hJmcbGTHI0ImLmbYLHykhgeN0jVGola9yVjFgzCUklsZQMW55o+dW7IXv3RCXDzA==} + + tsort@0.0.1: + resolution: {integrity: sha512-Tyrf5mxF8Ofs1tNoxA13lFeZ2Zrbd6cKbuH3V+MQ5sb6DtBj5FjrXVsRWT8YvNAQTqNoz66dz1WsbigI22aEnw==} + + tweetnacl-util@0.15.1: + resolution: {integrity: sha512-RKJBIj8lySrShN4w6i/BonWp2Z/uxwC3h4y7xsRrpP59ZboCd0GpEVsOnMDYLMmKBpYhb5TgHzZXy7wTfYFBRw==} + + tweetnacl@1.0.3: + resolution: {integrity: sha512-6rt+RN7aOi1nGMyC4Xa5DdYiukl2UWCbcJft7YhxReBGQD7OAM8Pbxw6YMo4r2diNEA8FEmu32YOn9rhaiE5yw==} + + type-check@0.3.2: + resolution: {integrity: sha512-ZCmOJdvOWDBYJlzAoFkC+Q0+bUyEOS1ltgp1MGU03fqHG+dbi9tBFU2Rd9QKiDZFAYrhPh2JUf7rZRIuHRKtOg==} + engines: {node: '>= 0.8.0'} + + type-detect@4.1.0: + resolution: {integrity: sha512-Acylog8/luQ8L7il+geoSxhEkazvkslg7PSNKOX59mbB9cOveP5aq9h74Y7YU8yDpJwetzQQrfIwtf4Wp4LKcw==} + engines: {node: '>=4'} + + type-fest@0.20.2: + resolution: {integrity: sha512-Ne+eE4r0/iWnpAxD852z3A+N0Bt5RN//NjJwRd2VFHEmrywxf5vsZlh4R6lixl6B+wz/8d+maTSAkN1FIkI3LQ==} + engines: {node: '>=10'} + + type-fest@0.21.3: + resolution: {integrity: sha512-t0rzBq87m3fVcduHDUFhKmyyX+9eo6WQjZvf51Ea/M0Q7+T374Jp1aUiyUl0GKxp8M/OETVHSDvmkyPgvX+X2w==} + engines: {node: '>=10'} + + type-fest@0.7.1: + resolution: {integrity: sha512-Ne2YiiGN8bmrmJJEuTWTLJR32nh/JdL1+PSicowtNb0WFpn59GK8/lfD61bVtzguz7b3PBt74nxpv/Pw5po5Rg==} + engines: {node: '>=8'} + + typechain@8.3.2: + resolution: {integrity: sha512-x/sQYr5w9K7yv3es7jo4KTX05CLxOf7TRWwoHlrjRh8H82G64g+k7VuWPJlgMo6qrjfCulOdfBjiaDtmhFYD/Q==} + hasBin: true + peerDependencies: + typescript: '>=4.3.0' + + typedarray@0.0.6: + resolution: {integrity: sha512-/aCDEGatGvZ2BIk+HmLf4ifCJFwvKFNb9/JeZPMulfgFracn9QFcAf5GO8B/mweUjSoblS5In0cWhqpfs/5PQA==} + + typescript@5.8.3: + resolution: {integrity: sha512-p1diW6TqL9L07nNxvRMM7hMMw4c5XOo/1ibL4aAIGmSAt9slTE1Xgw5KWuof2uTOvCg9BY7ZRi+GaF+7sfgPeQ==} + engines: {node: '>=14.17'} + hasBin: true + + typical@4.0.0: + resolution: {integrity: sha512-VAH4IvQ7BDFYglMd7BPRDfLgxZZX4O4TFcRDA6EN5X7erNJJq+McIEp8np9aVtxrCJ6qx4GTYVfOWNjcqwZgRw==} + engines: {node: '>=8'} + + typical@5.2.0: + resolution: {integrity: sha512-dvdQgNDNJo+8B2uBQoqdb11eUCE1JQXhvjC/CZtgvZseVd5TYMXnq0+vuUemXbd/Se29cTaUuPX3YIc2xgbvIg==} + engines: {node: '>=8'} + + uglify-js@3.19.3: + resolution: {integrity: sha512-v3Xu+yuwBXisp6QYTcH4UbH+xYJXqnq2m/LtQVWKWzYc1iehYnLixoQDN9FH6/j9/oybfd6W9Ghwkl8+UMKTKQ==} + engines: {node: '>=0.8.0'} + hasBin: true + + undici-types@6.19.8: + resolution: {integrity: sha512-ve2KP6f/JnbPBFyobGHuerC9g1FYGn/F8n1LWTwNxCEzd6IfqTwUQcNXgEtmmQ6DlRrC1hrSrBnCZPokRrDHjw==} + + undici-types@6.21.0: + resolution: {integrity: sha512-iwDZqg0QAGrg9Rav5H4n0M64c3mkR59cJ6wQp+7C4nI0gsmExaedaYLNO44eT4AtBBwjbTiGPMlt2Md0T9H9JQ==} + + undici@5.29.0: + resolution: {integrity: sha512-raqeBD6NQK4SkWhQzeYKd1KmIG6dllBOTt55Rmkt4HtI9mwdWtJljnrXjAFUBLTSN67HWrOIZ3EPF4kjUw80Bg==} + engines: {node: '>=14.0'} + + universalify@0.1.2: + resolution: {integrity: sha512-rBJeI5CXAlmy1pV+617WB9J63U6XcazHHF2f2dbJix4XzpUF0RS3Zbj0FGIOCAva5P/d/GBOYaACQ1w+0azUkg==} + engines: {node: '>= 4.0.0'} + + universalify@2.0.1: + resolution: {integrity: sha512-gptHNQghINnc/vTGIk0SOFGFNXw7JVrlRUtConJRlvaw6DuX0wO5Jeko9sWrMBhh+PsYAZ7oXAiOnf/UKogyiw==} + engines: {node: '>= 10.0.0'} + + unpipe@1.0.0: + resolution: {integrity: sha512-pjy2bYhSsufwWlKwPc+l3cN7+wuJlK6uz0YdJEOlQDbl6jo/YlPi4mb8agUkVC8BF7V8NuzeyPNqRksA3hztKQ==} + engines: {node: '>= 0.8'} + + utf8@3.0.0: + resolution: {integrity: sha512-E8VjFIQ/TyQgp+TZfS6l8yp/xWppSAHzidGiRrqe4bK4XP9pTRyKFgGJpO3SN7zdX4DeomTrwaseCHovfpFcqQ==} + + util-deprecate@1.0.2: + resolution: {integrity: sha512-EPD5q1uXyFxJpCrLnCc1nHnq3gOa6DZBocAIiI2TaSCA7VCJ1UJDMagCzIkXNsUYfD1daK//LTEQ8xiIbrHtcw==} + + uuid@8.3.2: + resolution: {integrity: sha512-+NYs2QeMWy+GWFOEm9xnn6HCDp0l7QBD7ml8zLUmJ+93Q5NF0NocErnwkTkXVFNiX3/fpC6afS8Dhb/gz7R7eg==} + hasBin: true + + v8-compile-cache-lib@3.0.1: + resolution: {integrity: sha512-wa7YjyUGfNZngI/vtK0UHAN+lgDCxBPCylVXGp0zu59Fz5aiGtNXaq3DhIov063MorB+VfufLh3JlF2KdTK3xg==} + + web3-utils@1.10.4: + resolution: {integrity: sha512-tsu8FiKJLk2PzhDl9fXbGUWTkkVXYhtTA+SmEFkKft+9BgwLxfCRpU96sWv7ICC8zixBNd3JURVoiR3dUXgP8A==} + engines: {node: '>=8.0.0'} + + which@1.3.1: + resolution: {integrity: sha512-HxJdYWq1MTIQbJ3nw0cqssHoTNU267KlrDuGZ1WYlxDStUtKUhOaJmh112/TZmHxxUfuJqPXSOm7tDyas0OSIQ==} + hasBin: true + + widest-line@3.1.0: + resolution: {integrity: sha512-NsmoXalsWVDMGupxZ5R08ka9flZjjiLvHVAWYOKtiKM8ujtZWr9cRffak+uSE48+Ob8ObalXpwyeUiyDD6QFgg==} + engines: {node: '>=8'} + + word-wrap@1.2.5: + resolution: {integrity: sha512-BN22B5eaMMI9UMtjrGd5g5eCYPpCPDUy0FJXbYsaT5zYxjFOckS53SQDE3pWkVoWpHXVb3BrYcEN4Twa55B5cA==} + engines: {node: '>=0.10.0'} + + wordwrap@1.0.0: + resolution: {integrity: sha512-gvVzJFlPycKc5dZN4yPkP8w7Dc37BtP1yczEneOb4uq34pXZcvrtRTmWV8W+Ume+XCxKgbjM+nevkyFPMybd4Q==} + + wordwrapjs@4.0.1: + resolution: {integrity: sha512-kKlNACbvHrkpIw6oPeYDSmdCTu2hdMHoyXLTcUKala++lx5Y+wjJ/e474Jqv5abnVmwxw08DiTuHmw69lJGksA==} + engines: {node: '>=8.0.0'} + + workerpool@6.5.1: + resolution: {integrity: sha512-Fs4dNYcsdpYSAfVxhnl1L5zTksjvOJxtC5hzMNl+1t9B8hTJTdKDyZ5ju7ztgPy+ft9tBFXoOlDNiOT9WUXZlA==} + + wrap-ansi@7.0.0: + resolution: {integrity: sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q==} + engines: {node: '>=10'} + + wrappy@1.0.2: + resolution: {integrity: sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ==} + + ws@7.5.10: + resolution: {integrity: sha512-+dbF1tHwZpXcbOJdVOkzLDxZP1ailvSxM6ZweXTegylPny803bFhA+vqBYw4s31NSAk4S2Qz+AKXK9a4wkdjcQ==} + engines: {node: '>=8.3.0'} + peerDependencies: + bufferutil: ^4.0.1 + utf-8-validate: ^5.0.2 + peerDependenciesMeta: + bufferutil: + optional: true + utf-8-validate: + optional: true + + ws@8.17.1: + resolution: {integrity: sha512-6XQFvXTkbfUOZOKKILFG1PDK2NDQs4azKQl26T0YS5CxqWLgXajbPZ+h4gZekJyRqFU8pvnbAbbs/3TgRPy+GQ==} + engines: {node: '>=10.0.0'} + peerDependencies: + bufferutil: ^4.0.1 + utf-8-validate: '>=5.0.2' + peerDependenciesMeta: + bufferutil: + optional: true + utf-8-validate: + optional: true + + ws@8.18.0: + resolution: {integrity: sha512-8VbfWfHLbbwu3+N6OKsOMpBdT4kXPDDB9cJk2bJ6mh9ucxdlnNvH1e+roYkKmN9Nxw2yjz7VzeO9oOz2zJ04Pw==} + engines: {node: '>=10.0.0'} + peerDependencies: + bufferutil: ^4.0.1 + utf-8-validate: '>=5.0.2' + peerDependenciesMeta: + bufferutil: + optional: true + utf-8-validate: + optional: true + + y18n@5.0.8: + resolution: {integrity: sha512-0pfFzegeDWJHJIAmTLRP2DwHjdF5s7jo9tuztdQxAhINCdvS+3nGINqPd00AphqJR/0LhANUS6/+7SCb98YOfA==} + engines: {node: '>=10'} + + yargs-parser@20.2.9: + resolution: {integrity: sha512-y11nGElTIV+CT3Zv9t7VKl+Q3hTQoT9a1Qzezhhl6Rp21gJ/IVTW7Z3y9EWXhuUBC2Shnf+DX0antecpAwSP8w==} + engines: {node: '>=10'} + + yargs-unparser@2.0.0: + resolution: {integrity: sha512-7pRTIA9Qc1caZ0bZ6RYRGbHJthJWuakf+WmHK0rVeLkNrrGhfoabBNdue6kdINI6r4if7ocq9aD/n7xwKOdzOA==} + engines: {node: '>=10'} + + yargs@16.2.0: + resolution: {integrity: sha512-D1mvvtDG0L5ft/jGWkLpG1+m0eQxOfaBvTNELraWj22wSVUMWxZUvYgJYcKh6jGGIkJFhH4IZPQhR4TKpc8mBw==} + engines: {node: '>=10'} + + yn@3.1.1: + resolution: {integrity: sha512-Ux4ygGWsu2c7isFWe8Yu1YluJmqVhxqK2cLXNQA5AcC3QfbGNpM7fu0Y8b/z16pXLnFxZYvWhd3fhBY9DLmC6Q==} + engines: {node: '>=6'} + + yocto-queue@0.1.0: + resolution: {integrity: sha512-rVksvsnNCdJ/ohGc6xgPwyN8eheCxsiLM8mxuE/t/mOVqJewPuO1miLpTHQiRgTKCLexL4MeAFVagts7HmNZ2Q==} + engines: {node: '>=10'} + +snapshots: + + '@adraffy/ens-normalize@1.10.1': {} + + '@cspotcode/source-map-support@0.8.1': + dependencies: + '@jridgewell/trace-mapping': 0.3.9 + + '@ethereumjs/rlp@4.0.1': {} + + '@ethereumjs/util@8.1.0': + dependencies: + '@ethereumjs/rlp': 4.0.1 + ethereum-cryptography: 2.2.1 + micro-ftch: 0.3.1 + + '@ethersproject/abi@5.8.0': + dependencies: + '@ethersproject/address': 5.8.0 + '@ethersproject/bignumber': 5.8.0 + '@ethersproject/bytes': 5.8.0 + '@ethersproject/constants': 5.8.0 + '@ethersproject/hash': 5.8.0 + '@ethersproject/keccak256': 5.8.0 + '@ethersproject/logger': 5.8.0 + '@ethersproject/properties': 5.8.0 + '@ethersproject/strings': 5.8.0 + + '@ethersproject/abstract-provider@5.8.0': + dependencies: + '@ethersproject/bignumber': 5.8.0 + '@ethersproject/bytes': 5.8.0 + '@ethersproject/logger': 5.8.0 + '@ethersproject/networks': 5.8.0 + '@ethersproject/properties': 5.8.0 + '@ethersproject/transactions': 5.8.0 + '@ethersproject/web': 5.8.0 + + '@ethersproject/abstract-signer@5.8.0': + dependencies: + '@ethersproject/abstract-provider': 5.8.0 + '@ethersproject/bignumber': 5.8.0 + '@ethersproject/bytes': 5.8.0 + '@ethersproject/logger': 5.8.0 + '@ethersproject/properties': 5.8.0 + + '@ethersproject/address@5.6.1': + dependencies: + '@ethersproject/bignumber': 5.8.0 + '@ethersproject/bytes': 5.8.0 + '@ethersproject/keccak256': 5.8.0 + '@ethersproject/logger': 5.8.0 + '@ethersproject/rlp': 5.8.0 + + '@ethersproject/address@5.8.0': + dependencies: + '@ethersproject/bignumber': 5.8.0 + '@ethersproject/bytes': 5.8.0 + '@ethersproject/keccak256': 5.8.0 + '@ethersproject/logger': 5.8.0 + '@ethersproject/rlp': 5.8.0 + + '@ethersproject/base64@5.8.0': + dependencies: + '@ethersproject/bytes': 5.8.0 + + '@ethersproject/basex@5.8.0': + dependencies: + '@ethersproject/bytes': 5.8.0 + '@ethersproject/properties': 5.8.0 + + '@ethersproject/bignumber@5.8.0': + dependencies: + '@ethersproject/bytes': 5.8.0 + '@ethersproject/logger': 5.8.0 + bn.js: 5.2.1 + + '@ethersproject/bytes@5.8.0': + dependencies: + '@ethersproject/logger': 5.8.0 + + '@ethersproject/constants@5.8.0': + dependencies: + '@ethersproject/bignumber': 5.8.0 + + '@ethersproject/contracts@5.8.0': + dependencies: + '@ethersproject/abi': 5.8.0 + '@ethersproject/abstract-provider': 5.8.0 + '@ethersproject/abstract-signer': 5.8.0 + '@ethersproject/address': 5.8.0 + '@ethersproject/bignumber': 5.8.0 + '@ethersproject/bytes': 5.8.0 + '@ethersproject/constants': 5.8.0 + '@ethersproject/logger': 5.8.0 + '@ethersproject/properties': 5.8.0 + '@ethersproject/transactions': 5.8.0 + + '@ethersproject/hash@5.8.0': + dependencies: + '@ethersproject/abstract-signer': 5.8.0 + '@ethersproject/address': 5.8.0 + '@ethersproject/base64': 5.8.0 + '@ethersproject/bignumber': 5.8.0 + '@ethersproject/bytes': 5.8.0 + '@ethersproject/keccak256': 5.8.0 + '@ethersproject/logger': 5.8.0 + '@ethersproject/properties': 5.8.0 + '@ethersproject/strings': 5.8.0 + + '@ethersproject/hdnode@5.8.0': + dependencies: + '@ethersproject/abstract-signer': 5.8.0 + '@ethersproject/basex': 5.8.0 + '@ethersproject/bignumber': 5.8.0 + '@ethersproject/bytes': 5.8.0 + '@ethersproject/logger': 5.8.0 + '@ethersproject/pbkdf2': 5.8.0 + '@ethersproject/properties': 5.8.0 + '@ethersproject/sha2': 5.8.0 + '@ethersproject/signing-key': 5.8.0 + '@ethersproject/strings': 5.8.0 + '@ethersproject/transactions': 5.8.0 + '@ethersproject/wordlists': 5.8.0 + + '@ethersproject/json-wallets@5.8.0': + dependencies: + '@ethersproject/abstract-signer': 5.8.0 + '@ethersproject/address': 5.8.0 + '@ethersproject/bytes': 5.8.0 + '@ethersproject/hdnode': 5.8.0 + '@ethersproject/keccak256': 5.8.0 + '@ethersproject/logger': 5.8.0 + '@ethersproject/pbkdf2': 5.8.0 + '@ethersproject/properties': 5.8.0 + '@ethersproject/random': 5.8.0 + '@ethersproject/strings': 5.8.0 + '@ethersproject/transactions': 5.8.0 + aes-js: 3.0.0 + scrypt-js: 3.0.1 + + '@ethersproject/keccak256@5.8.0': + dependencies: + '@ethersproject/bytes': 5.8.0 + js-sha3: 0.8.0 + + '@ethersproject/logger@5.8.0': {} + + '@ethersproject/networks@5.8.0': + dependencies: + '@ethersproject/logger': 5.8.0 + + '@ethersproject/pbkdf2@5.8.0': + dependencies: + '@ethersproject/bytes': 5.8.0 + '@ethersproject/sha2': 5.8.0 + + '@ethersproject/properties@5.8.0': + dependencies: + '@ethersproject/logger': 5.8.0 + + '@ethersproject/providers@5.8.0': + dependencies: + '@ethersproject/abstract-provider': 5.8.0 + '@ethersproject/abstract-signer': 5.8.0 + '@ethersproject/address': 5.8.0 + '@ethersproject/base64': 5.8.0 + '@ethersproject/basex': 5.8.0 + '@ethersproject/bignumber': 5.8.0 + '@ethersproject/bytes': 5.8.0 + '@ethersproject/constants': 5.8.0 + '@ethersproject/hash': 5.8.0 + '@ethersproject/logger': 5.8.0 + '@ethersproject/networks': 5.8.0 + '@ethersproject/properties': 5.8.0 + '@ethersproject/random': 5.8.0 + '@ethersproject/rlp': 5.8.0 + '@ethersproject/sha2': 5.8.0 + '@ethersproject/strings': 5.8.0 + '@ethersproject/transactions': 5.8.0 + '@ethersproject/web': 5.8.0 + bech32: 1.1.4 + ws: 8.18.0 + transitivePeerDependencies: + - bufferutil + - utf-8-validate + + '@ethersproject/random@5.8.0': + dependencies: + '@ethersproject/bytes': 5.8.0 + '@ethersproject/logger': 5.8.0 + + '@ethersproject/rlp@5.8.0': + dependencies: + '@ethersproject/bytes': 5.8.0 + '@ethersproject/logger': 5.8.0 + + '@ethersproject/sha2@5.8.0': + dependencies: + '@ethersproject/bytes': 5.8.0 + '@ethersproject/logger': 5.8.0 + hash.js: 1.1.7 + + '@ethersproject/signing-key@5.8.0': + dependencies: + '@ethersproject/bytes': 5.8.0 + '@ethersproject/logger': 5.8.0 + '@ethersproject/properties': 5.8.0 + bn.js: 5.2.1 + elliptic: 6.6.1 + hash.js: 1.1.7 + + '@ethersproject/solidity@5.8.0': + dependencies: + '@ethersproject/bignumber': 5.8.0 + '@ethersproject/bytes': 5.8.0 + '@ethersproject/keccak256': 5.8.0 + '@ethersproject/logger': 5.8.0 + '@ethersproject/sha2': 5.8.0 + '@ethersproject/strings': 5.8.0 + + '@ethersproject/strings@5.8.0': + dependencies: + '@ethersproject/bytes': 5.8.0 + '@ethersproject/constants': 5.8.0 + '@ethersproject/logger': 5.8.0 + + '@ethersproject/transactions@5.8.0': + dependencies: + '@ethersproject/address': 5.8.0 + '@ethersproject/bignumber': 5.8.0 + '@ethersproject/bytes': 5.8.0 + '@ethersproject/constants': 5.8.0 + '@ethersproject/keccak256': 5.8.0 + '@ethersproject/logger': 5.8.0 + '@ethersproject/properties': 5.8.0 + '@ethersproject/rlp': 5.8.0 + '@ethersproject/signing-key': 5.8.0 + + '@ethersproject/units@5.8.0': + dependencies: + '@ethersproject/bignumber': 5.8.0 + '@ethersproject/constants': 5.8.0 + '@ethersproject/logger': 5.8.0 + + '@ethersproject/wallet@5.8.0': + dependencies: + '@ethersproject/abstract-provider': 5.8.0 + '@ethersproject/abstract-signer': 5.8.0 + '@ethersproject/address': 5.8.0 + '@ethersproject/bignumber': 5.8.0 + '@ethersproject/bytes': 5.8.0 + '@ethersproject/hash': 5.8.0 + '@ethersproject/hdnode': 5.8.0 + '@ethersproject/json-wallets': 5.8.0 + '@ethersproject/keccak256': 5.8.0 + '@ethersproject/logger': 5.8.0 + '@ethersproject/properties': 5.8.0 + '@ethersproject/random': 5.8.0 + '@ethersproject/signing-key': 5.8.0 + '@ethersproject/transactions': 5.8.0 + '@ethersproject/wordlists': 5.8.0 + + '@ethersproject/web@5.8.0': + dependencies: + '@ethersproject/base64': 5.8.0 + '@ethersproject/bytes': 5.8.0 + '@ethersproject/logger': 5.8.0 + '@ethersproject/properties': 5.8.0 + '@ethersproject/strings': 5.8.0 + + '@ethersproject/wordlists@5.8.0': + dependencies: + '@ethersproject/bytes': 5.8.0 + '@ethersproject/hash': 5.8.0 + '@ethersproject/logger': 5.8.0 + '@ethersproject/properties': 5.8.0 + '@ethersproject/strings': 5.8.0 + + '@fastify/busboy@2.1.1': {} + + '@jridgewell/resolve-uri@3.1.2': {} + + '@jridgewell/sourcemap-codec@1.5.0': {} + + '@jridgewell/trace-mapping@0.3.9': + dependencies: + '@jridgewell/resolve-uri': 3.1.2 + '@jridgewell/sourcemap-codec': 1.5.0 + + '@metamask/eth-sig-util@4.0.1': + dependencies: + ethereumjs-abi: 0.6.8 + ethereumjs-util: 6.2.1 + ethjs-util: 0.1.6 + tweetnacl: 1.0.3 + tweetnacl-util: 0.15.1 + + '@noble/curves@1.2.0': + dependencies: + '@noble/hashes': 1.3.2 + + '@noble/curves@1.4.2': + dependencies: + '@noble/hashes': 1.4.0 + + '@noble/hashes@1.2.0': {} + + '@noble/hashes@1.3.2': {} + + '@noble/hashes@1.4.0': {} + + '@noble/hashes@1.7.1': {} + + '@noble/secp256k1@1.7.1': {} + + '@nodelib/fs.scandir@2.1.5': + dependencies: + '@nodelib/fs.stat': 2.0.5 + run-parallel: 1.2.0 + + '@nodelib/fs.stat@2.0.5': {} + + '@nodelib/fs.walk@1.2.8': + dependencies: + '@nodelib/fs.scandir': 2.1.5 + fastq: 1.19.1 + + '@nomicfoundation/edr-darwin-arm64@0.8.0': {} + + '@nomicfoundation/edr-darwin-x64@0.8.0': {} + + '@nomicfoundation/edr-linux-arm64-gnu@0.8.0': {} + + '@nomicfoundation/edr-linux-arm64-musl@0.8.0': {} + + '@nomicfoundation/edr-linux-x64-gnu@0.8.0': {} + + '@nomicfoundation/edr-linux-x64-musl@0.8.0': {} + + '@nomicfoundation/edr-win32-x64-msvc@0.8.0': {} + + '@nomicfoundation/edr@0.8.0': + dependencies: + '@nomicfoundation/edr-darwin-arm64': 0.8.0 + '@nomicfoundation/edr-darwin-x64': 0.8.0 + '@nomicfoundation/edr-linux-arm64-gnu': 0.8.0 + '@nomicfoundation/edr-linux-arm64-musl': 0.8.0 + '@nomicfoundation/edr-linux-x64-gnu': 0.8.0 + '@nomicfoundation/edr-linux-x64-musl': 0.8.0 + '@nomicfoundation/edr-win32-x64-msvc': 0.8.0 + + '@nomicfoundation/ethereumjs-common@4.0.4': + dependencies: + '@nomicfoundation/ethereumjs-util': 9.0.4 + transitivePeerDependencies: + - c-kzg + + '@nomicfoundation/ethereumjs-rlp@5.0.4': {} + + '@nomicfoundation/ethereumjs-tx@5.0.4': + dependencies: + '@nomicfoundation/ethereumjs-common': 4.0.4 + '@nomicfoundation/ethereumjs-rlp': 5.0.4 + '@nomicfoundation/ethereumjs-util': 9.0.4 + ethereum-cryptography: 0.1.3 + + '@nomicfoundation/ethereumjs-util@9.0.4': + dependencies: + '@nomicfoundation/ethereumjs-rlp': 5.0.4 + ethereum-cryptography: 0.1.3 + + '@nomicfoundation/hardhat-chai-matchers@2.0.8(@nomicfoundation/hardhat-ethers@3.0.8(ethers@6.13.5)(hardhat@2.22.19(ts-node@10.9.2(@types/node@22.14.0)(typescript@5.8.3))(typescript@5.8.3)))(chai@4.5.0)(ethers@6.13.5)(hardhat@2.22.19(ts-node@10.9.2(@types/node@22.14.0)(typescript@5.8.3))(typescript@5.8.3))': + dependencies: + '@nomicfoundation/hardhat-ethers': 3.0.8(ethers@6.13.5)(hardhat@2.22.19(ts-node@10.9.2(@types/node@22.14.0)(typescript@5.8.3))(typescript@5.8.3)) + '@types/chai-as-promised': 7.1.8 + chai: 4.5.0 + chai-as-promised: 7.1.2(chai@4.5.0) + deep-eql: 4.1.4 + ethers: 6.13.5 + hardhat: 2.22.19(ts-node@10.9.2(@types/node@22.14.0)(typescript@5.8.3))(typescript@5.8.3) + ordinal: 1.0.3 + + '@nomicfoundation/hardhat-ethers@3.0.8(ethers@6.13.5)(hardhat@2.22.19(ts-node@10.9.2(@types/node@22.14.0)(typescript@5.8.3))(typescript@5.8.3))': + dependencies: + debug: 4.4.0(supports-color@8.1.1) + ethers: 6.13.5 + hardhat: 2.22.19(ts-node@10.9.2(@types/node@22.14.0)(typescript@5.8.3))(typescript@5.8.3) + lodash.isequal: 4.5.0 + transitivePeerDependencies: + - supports-color + + '@nomicfoundation/hardhat-ignition-ethers@0.15.10(@nomicfoundation/hardhat-ethers@3.0.8(ethers@6.13.5)(hardhat@2.22.19(ts-node@10.9.2(@types/node@22.14.0)(typescript@5.8.3))(typescript@5.8.3)))(@nomicfoundation/hardhat-ignition@0.15.10(@nomicfoundation/hardhat-verify@2.0.13(hardhat@2.22.19(ts-node@10.9.2(@types/node@22.14.0)(typescript@5.8.3))(typescript@5.8.3)))(hardhat@2.22.19(ts-node@10.9.2(@types/node@22.14.0)(typescript@5.8.3))(typescript@5.8.3)))(@nomicfoundation/ignition-core@0.15.10)(ethers@6.13.5)(hardhat@2.22.19(ts-node@10.9.2(@types/node@22.14.0)(typescript@5.8.3))(typescript@5.8.3))': + dependencies: + '@nomicfoundation/hardhat-ethers': 3.0.8(ethers@6.13.5)(hardhat@2.22.19(ts-node@10.9.2(@types/node@22.14.0)(typescript@5.8.3))(typescript@5.8.3)) + '@nomicfoundation/hardhat-ignition': 0.15.10(@nomicfoundation/hardhat-verify@2.0.13(hardhat@2.22.19(ts-node@10.9.2(@types/node@22.14.0)(typescript@5.8.3))(typescript@5.8.3)))(hardhat@2.22.19(ts-node@10.9.2(@types/node@22.14.0)(typescript@5.8.3))(typescript@5.8.3)) + '@nomicfoundation/ignition-core': 0.15.10 + ethers: 6.13.5 + hardhat: 2.22.19(ts-node@10.9.2(@types/node@22.14.0)(typescript@5.8.3))(typescript@5.8.3) + + '@nomicfoundation/hardhat-ignition@0.15.10(@nomicfoundation/hardhat-verify@2.0.13(hardhat@2.22.19(ts-node@10.9.2(@types/node@22.14.0)(typescript@5.8.3))(typescript@5.8.3)))(hardhat@2.22.19(ts-node@10.9.2(@types/node@22.14.0)(typescript@5.8.3))(typescript@5.8.3))': + dependencies: + '@nomicfoundation/hardhat-verify': 2.0.13(hardhat@2.22.19(ts-node@10.9.2(@types/node@22.14.0)(typescript@5.8.3))(typescript@5.8.3)) + '@nomicfoundation/ignition-core': 0.15.10 + '@nomicfoundation/ignition-ui': 0.15.10 + chalk: 4.1.2 + debug: 4.4.0(supports-color@8.1.1) + fs-extra: 10.1.0 + hardhat: 2.22.19(ts-node@10.9.2(@types/node@22.14.0)(typescript@5.8.3))(typescript@5.8.3) + json5: 2.2.3 + prompts: 2.4.2 + transitivePeerDependencies: + - bufferutil + - supports-color + - utf-8-validate + + '@nomicfoundation/hardhat-network-helpers@1.0.12(hardhat@2.22.19(ts-node@10.9.2(@types/node@22.14.0)(typescript@5.8.3))(typescript@5.8.3))': + dependencies: + ethereumjs-util: 7.1.5 + hardhat: 2.22.19(ts-node@10.9.2(@types/node@22.14.0)(typescript@5.8.3))(typescript@5.8.3) + + '@nomicfoundation/hardhat-toolbox@5.0.0(b97983278a443d774ac498131468112c)': + dependencies: + '@nomicfoundation/hardhat-chai-matchers': 2.0.8(@nomicfoundation/hardhat-ethers@3.0.8(ethers@6.13.5)(hardhat@2.22.19(ts-node@10.9.2(@types/node@22.14.0)(typescript@5.8.3))(typescript@5.8.3)))(chai@4.5.0)(ethers@6.13.5)(hardhat@2.22.19(ts-node@10.9.2(@types/node@22.14.0)(typescript@5.8.3))(typescript@5.8.3)) + '@nomicfoundation/hardhat-ethers': 3.0.8(ethers@6.13.5)(hardhat@2.22.19(ts-node@10.9.2(@types/node@22.14.0)(typescript@5.8.3))(typescript@5.8.3)) + '@nomicfoundation/hardhat-ignition-ethers': 0.15.10(@nomicfoundation/hardhat-ethers@3.0.8(ethers@6.13.5)(hardhat@2.22.19(ts-node@10.9.2(@types/node@22.14.0)(typescript@5.8.3))(typescript@5.8.3)))(@nomicfoundation/hardhat-ignition@0.15.10(@nomicfoundation/hardhat-verify@2.0.13(hardhat@2.22.19(ts-node@10.9.2(@types/node@22.14.0)(typescript@5.8.3))(typescript@5.8.3)))(hardhat@2.22.19(ts-node@10.9.2(@types/node@22.14.0)(typescript@5.8.3))(typescript@5.8.3)))(@nomicfoundation/ignition-core@0.15.10)(ethers@6.13.5)(hardhat@2.22.19(ts-node@10.9.2(@types/node@22.14.0)(typescript@5.8.3))(typescript@5.8.3)) + '@nomicfoundation/hardhat-network-helpers': 1.0.12(hardhat@2.22.19(ts-node@10.9.2(@types/node@22.14.0)(typescript@5.8.3))(typescript@5.8.3)) + '@nomicfoundation/hardhat-verify': 2.0.13(hardhat@2.22.19(ts-node@10.9.2(@types/node@22.14.0)(typescript@5.8.3))(typescript@5.8.3)) + '@typechain/ethers-v6': 0.5.1(ethers@6.13.5)(typechain@8.3.2(typescript@5.8.3))(typescript@5.8.3) + '@typechain/hardhat': 9.1.0(@typechain/ethers-v6@0.5.1(ethers@6.13.5)(typechain@8.3.2(typescript@5.8.3))(typescript@5.8.3))(ethers@6.13.5)(hardhat@2.22.19(ts-node@10.9.2(@types/node@22.14.0)(typescript@5.8.3))(typescript@5.8.3))(typechain@8.3.2(typescript@5.8.3)) + '@types/chai': 4.3.20 + '@types/mocha': 10.0.10 + '@types/node': 22.14.0 + chai: 4.5.0 + ethers: 6.13.5 + hardhat: 2.22.19(ts-node@10.9.2(@types/node@22.14.0)(typescript@5.8.3))(typescript@5.8.3) + hardhat-gas-reporter: 1.0.10(hardhat@2.22.19(ts-node@10.9.2(@types/node@22.14.0)(typescript@5.8.3))(typescript@5.8.3)) + solidity-coverage: 0.8.14(hardhat@2.22.19(ts-node@10.9.2(@types/node@22.14.0)(typescript@5.8.3))(typescript@5.8.3)) + ts-node: 10.9.2(@types/node@22.14.0)(typescript@5.8.3) + typechain: 8.3.2(typescript@5.8.3) + typescript: 5.8.3 + + '@nomicfoundation/hardhat-verify@2.0.13(hardhat@2.22.19(ts-node@10.9.2(@types/node@22.14.0)(typescript@5.8.3))(typescript@5.8.3))': + dependencies: + '@ethersproject/abi': 5.8.0 + '@ethersproject/address': 5.8.0 + cbor: 8.1.0 + debug: 4.4.0(supports-color@8.1.1) + hardhat: 2.22.19(ts-node@10.9.2(@types/node@22.14.0)(typescript@5.8.3))(typescript@5.8.3) + lodash.clonedeep: 4.5.0 + picocolors: 1.1.1 + semver: 6.3.1 + table: 6.9.0 + undici: 5.29.0 + transitivePeerDependencies: + - supports-color + + '@nomicfoundation/ignition-core@0.15.10': + dependencies: + '@ethersproject/address': 5.6.1 + '@nomicfoundation/solidity-analyzer': 0.1.2 + cbor: 9.0.2 + debug: 4.4.0(supports-color@8.1.1) + ethers: 6.13.5 + fs-extra: 10.1.0 + immer: 10.0.2 + lodash: 4.17.21 + ndjson: 2.0.0 + transitivePeerDependencies: + - bufferutil + - supports-color + - utf-8-validate + + '@nomicfoundation/ignition-ui@0.15.10': {} + + '@nomicfoundation/solidity-analyzer-darwin-arm64@0.1.2': + optional: true + + '@nomicfoundation/solidity-analyzer-darwin-x64@0.1.2': + optional: true + + '@nomicfoundation/solidity-analyzer-linux-arm64-gnu@0.1.2': + optional: true + + '@nomicfoundation/solidity-analyzer-linux-arm64-musl@0.1.2': + optional: true + + '@nomicfoundation/solidity-analyzer-linux-x64-gnu@0.1.2': + optional: true + + '@nomicfoundation/solidity-analyzer-linux-x64-musl@0.1.2': + optional: true + + '@nomicfoundation/solidity-analyzer-win32-x64-msvc@0.1.2': + optional: true + + '@nomicfoundation/solidity-analyzer@0.1.2': + optionalDependencies: + '@nomicfoundation/solidity-analyzer-darwin-arm64': 0.1.2 + '@nomicfoundation/solidity-analyzer-darwin-x64': 0.1.2 + '@nomicfoundation/solidity-analyzer-linux-arm64-gnu': 0.1.2 + '@nomicfoundation/solidity-analyzer-linux-arm64-musl': 0.1.2 + '@nomicfoundation/solidity-analyzer-linux-x64-gnu': 0.1.2 + '@nomicfoundation/solidity-analyzer-linux-x64-musl': 0.1.2 + '@nomicfoundation/solidity-analyzer-win32-x64-msvc': 0.1.2 + + '@openzeppelin/contracts@5.2.0': {} + + '@scure/base@1.1.9': {} + + '@scure/bip32@1.1.5': + dependencies: + '@noble/hashes': 1.2.0 + '@noble/secp256k1': 1.7.1 + '@scure/base': 1.1.9 + + '@scure/bip32@1.4.0': + dependencies: + '@noble/curves': 1.4.2 + '@noble/hashes': 1.4.0 + '@scure/base': 1.1.9 + + '@scure/bip39@1.1.1': + dependencies: + '@noble/hashes': 1.2.0 + '@scure/base': 1.1.9 + + '@scure/bip39@1.3.0': + dependencies: + '@noble/hashes': 1.4.0 + '@scure/base': 1.1.9 + + '@sentry/core@5.30.0': + dependencies: + '@sentry/hub': 5.30.0 + '@sentry/minimal': 5.30.0 + '@sentry/types': 5.30.0 + '@sentry/utils': 5.30.0 + tslib: 1.14.1 + + '@sentry/hub@5.30.0': + dependencies: + '@sentry/types': 5.30.0 + '@sentry/utils': 5.30.0 + tslib: 1.14.1 + + '@sentry/minimal@5.30.0': + dependencies: + '@sentry/hub': 5.30.0 + '@sentry/types': 5.30.0 + tslib: 1.14.1 + + '@sentry/node@5.30.0': + dependencies: + '@sentry/core': 5.30.0 + '@sentry/hub': 5.30.0 + '@sentry/tracing': 5.30.0 + '@sentry/types': 5.30.0 + '@sentry/utils': 5.30.0 + cookie: 0.4.2 + https-proxy-agent: 5.0.1 + lru_map: 0.3.3 + tslib: 1.14.1 + transitivePeerDependencies: + - supports-color + + '@sentry/tracing@5.30.0': + dependencies: + '@sentry/hub': 5.30.0 + '@sentry/minimal': 5.30.0 + '@sentry/types': 5.30.0 + '@sentry/utils': 5.30.0 + tslib: 1.14.1 + + '@sentry/types@5.30.0': {} + + '@sentry/utils@5.30.0': + dependencies: + '@sentry/types': 5.30.0 + tslib: 1.14.1 + + '@solidity-parser/parser@0.14.5': + dependencies: + antlr4ts: 0.5.0-alpha.4 + + '@solidity-parser/parser@0.19.0': {} + + '@tsconfig/node10@1.0.11': {} + + '@tsconfig/node12@1.0.11': {} + + '@tsconfig/node14@1.0.3': {} + + '@tsconfig/node16@1.0.4': {} + + '@typechain/ethers-v6@0.5.1(ethers@6.13.5)(typechain@8.3.2(typescript@5.8.3))(typescript@5.8.3)': + dependencies: + ethers: 6.13.5 + lodash: 4.17.21 + ts-essentials: 7.0.3(typescript@5.8.3) + typechain: 8.3.2(typescript@5.8.3) + typescript: 5.8.3 + + '@typechain/hardhat@9.1.0(@typechain/ethers-v6@0.5.1(ethers@6.13.5)(typechain@8.3.2(typescript@5.8.3))(typescript@5.8.3))(ethers@6.13.5)(hardhat@2.22.19(ts-node@10.9.2(@types/node@22.14.0)(typescript@5.8.3))(typescript@5.8.3))(typechain@8.3.2(typescript@5.8.3))': + dependencies: + '@typechain/ethers-v6': 0.5.1(ethers@6.13.5)(typechain@8.3.2(typescript@5.8.3))(typescript@5.8.3) + ethers: 6.13.5 + fs-extra: 9.1.0 + hardhat: 2.22.19(ts-node@10.9.2(@types/node@22.14.0)(typescript@5.8.3))(typescript@5.8.3) + typechain: 8.3.2(typescript@5.8.3) + + '@types/bn.js@4.11.6': + dependencies: + '@types/node': 22.14.0 + + '@types/bn.js@5.1.6': + dependencies: + '@types/node': 22.14.0 + + '@types/chai-as-promised@7.1.8': + dependencies: + '@types/chai': 4.3.20 + + '@types/chai@4.3.20': {} + + '@types/concat-stream@1.6.1': + dependencies: + '@types/node': 22.14.0 + + '@types/form-data@0.0.33': + dependencies: + '@types/node': 22.14.0 + + '@types/glob@7.2.0': + dependencies: + '@types/minimatch': 5.1.2 + '@types/node': 22.14.0 + + '@types/lru-cache@5.1.1': {} + + '@types/minimatch@5.1.2': {} + + '@types/mocha@10.0.10': {} + + '@types/node@10.17.60': {} + + '@types/node@22.14.0': + dependencies: + undici-types: 6.21.0 + + '@types/node@22.7.5': + dependencies: + undici-types: 6.19.8 + + '@types/node@8.10.66': {} + + '@types/pbkdf2@3.1.2': + dependencies: + '@types/node': 22.14.0 + + '@types/prettier@2.7.3': {} + + '@types/qs@6.9.18': {} + + '@types/secp256k1@4.0.6': + dependencies: + '@types/node': 22.14.0 + + abbrev@1.0.9: {} + + acorn-walk@8.3.4: + dependencies: + acorn: 8.14.1 + + acorn@8.14.1: {} + + adm-zip@0.4.16: {} + + aes-js@3.0.0: {} + + aes-js@4.0.0-beta.5: {} + + agent-base@6.0.2: + dependencies: + debug: 4.4.0(supports-color@8.1.1) + transitivePeerDependencies: + - supports-color + + aggregate-error@3.1.0: + dependencies: + clean-stack: 2.2.0 + indent-string: 4.0.0 + + ajv@8.17.1: + dependencies: + fast-deep-equal: 3.1.3 + fast-uri: 3.0.6 + json-schema-traverse: 1.0.0 + require-from-string: 2.0.2 + + amdefine@1.0.1: + optional: true + + ansi-align@3.0.1: + dependencies: + string-width: 4.2.3 + + ansi-colors@4.1.3: {} + + ansi-escapes@4.3.2: + dependencies: + type-fest: 0.21.3 + + ansi-regex@3.0.1: {} + + ansi-regex@5.0.1: {} + + ansi-styles@3.2.1: + dependencies: + color-convert: 1.9.3 + + ansi-styles@4.3.0: + dependencies: + color-convert: 2.0.1 + + antlr4ts@0.5.0-alpha.4: {} + + anymatch@3.1.3: + dependencies: + normalize-path: 3.0.0 + picomatch: 2.3.1 + + arg@4.1.3: {} + + argparse@1.0.10: + dependencies: + sprintf-js: 1.0.3 + + argparse@2.0.1: {} + + array-back@3.1.0: {} + + array-back@4.0.2: {} + + array-union@2.1.0: {} + + array-uniq@1.0.3: {} + + asap@2.0.6: {} + + assertion-error@1.1.0: {} + + astral-regex@2.0.0: {} + + async@1.5.2: {} + + asynckit@0.4.0: {} + + at-least-node@1.0.0: {} + + axios@1.8.4: + dependencies: + follow-redirects: 1.15.9(debug@4.4.0) + form-data: 4.0.2 + proxy-from-env: 1.1.0 + transitivePeerDependencies: + - debug + + balanced-match@1.0.2: {} + + base-x@3.0.11: + dependencies: + safe-buffer: 5.2.1 + + bech32@1.1.4: {} + + binary-extensions@2.3.0: {} + + blakejs@1.2.1: {} + + bn.js@4.11.6: {} + + bn.js@4.12.1: {} + + bn.js@5.2.1: {} + + boxen@5.1.2: + dependencies: + ansi-align: 3.0.1 + camelcase: 6.3.0 + chalk: 4.1.2 + cli-boxes: 2.2.1 + string-width: 4.2.3 + type-fest: 0.20.2 + widest-line: 3.1.0 + wrap-ansi: 7.0.0 + + brace-expansion@1.1.11: + dependencies: + balanced-match: 1.0.2 + concat-map: 0.0.1 + + brace-expansion@2.0.1: + dependencies: + balanced-match: 1.0.2 + + braces@3.0.3: + dependencies: + fill-range: 7.1.1 + + brorand@1.1.0: {} + + browser-stdout@1.3.1: {} + + browserify-aes@1.2.0: + dependencies: + buffer-xor: 1.0.3 + cipher-base: 1.0.6 + create-hash: 1.2.0 + evp_bytestokey: 1.0.3 + inherits: 2.0.4 + safe-buffer: 5.2.1 + + bs58@4.0.1: + dependencies: + base-x: 3.0.11 + + bs58check@2.1.2: + dependencies: + bs58: 4.0.1 + create-hash: 1.2.0 + safe-buffer: 5.2.1 + + buffer-from@1.1.2: {} + + buffer-xor@1.0.3: {} + + bytes@3.1.2: {} + + call-bind-apply-helpers@1.0.2: + dependencies: + es-errors: 1.3.0 + function-bind: 1.1.2 + + call-bound@1.0.4: + dependencies: + call-bind-apply-helpers: 1.0.2 + get-intrinsic: 1.3.0 + + camelcase@6.3.0: {} + + caseless@0.12.0: {} + + cbor@8.1.0: + dependencies: + nofilter: 3.1.0 + + cbor@9.0.2: + dependencies: + nofilter: 3.1.0 + + chai-as-promised@7.1.2(chai@4.5.0): + dependencies: + chai: 4.5.0 + check-error: 1.0.3 + + chai@4.5.0: + dependencies: + assertion-error: 1.1.0 + check-error: 1.0.3 + deep-eql: 4.1.4 + get-func-name: 2.0.2 + loupe: 2.3.7 + pathval: 1.1.1 + type-detect: 4.1.0 + + chalk@2.4.2: + dependencies: + ansi-styles: 3.2.1 + escape-string-regexp: 1.0.5 + supports-color: 5.5.0 + + chalk@4.1.2: + dependencies: + ansi-styles: 4.3.0 + supports-color: 7.2.0 + + charenc@0.0.2: {} + + check-error@1.0.3: + dependencies: + get-func-name: 2.0.2 + + chokidar@3.6.0: + dependencies: + anymatch: 3.1.3 + braces: 3.0.3 + glob-parent: 5.1.2 + is-binary-path: 2.1.0 + is-glob: 4.0.3 + normalize-path: 3.0.0 + readdirp: 3.6.0 + optionalDependencies: + fsevents: 2.3.3 + + chokidar@4.0.3: + dependencies: + readdirp: 4.1.2 + + ci-info@2.0.0: {} + + cipher-base@1.0.6: + dependencies: + inherits: 2.0.4 + safe-buffer: 5.2.1 + + clean-stack@2.2.0: {} + + cli-boxes@2.2.1: {} + + cli-table3@0.5.1: + dependencies: + object-assign: 4.1.1 + string-width: 2.1.1 + optionalDependencies: + colors: 1.4.0 + + cliui@7.0.4: + dependencies: + string-width: 4.2.3 + strip-ansi: 6.0.1 + wrap-ansi: 7.0.0 + + color-convert@1.9.3: + dependencies: + color-name: 1.1.3 + + color-convert@2.0.1: + dependencies: + color-name: 1.1.4 + + color-name@1.1.3: {} + + color-name@1.1.4: {} + + colors@1.4.0: {} + + combined-stream@1.0.8: + dependencies: + delayed-stream: 1.0.0 + + command-exists@1.2.9: {} + + command-line-args@5.2.1: + dependencies: + array-back: 3.1.0 + find-replace: 3.0.0 + lodash.camelcase: 4.3.0 + typical: 4.0.0 + + command-line-usage@6.1.3: + dependencies: + array-back: 4.0.2 + chalk: 2.4.2 + table-layout: 1.0.2 + typical: 5.2.0 + + commander@8.3.0: {} + + concat-map@0.0.1: {} + + concat-stream@1.6.2: + dependencies: + buffer-from: 1.1.2 + inherits: 2.0.4 + readable-stream: 2.3.8 + typedarray: 0.0.6 + + cookie@0.4.2: {} + + core-util-is@1.0.3: {} + + create-hash@1.2.0: + dependencies: + cipher-base: 1.0.6 + inherits: 2.0.4 + md5.js: 1.3.5 + ripemd160: 2.0.2 + sha.js: 2.4.11 + + create-hmac@1.1.7: + dependencies: + cipher-base: 1.0.6 + create-hash: 1.2.0 + inherits: 2.0.4 + ripemd160: 2.0.2 + safe-buffer: 5.2.1 + sha.js: 2.4.11 + + create-require@1.1.1: {} + + crypt@0.0.2: {} + + death@1.1.0: {} + + debug@4.4.0(supports-color@8.1.1): + dependencies: + ms: 2.1.3 + optionalDependencies: + supports-color: 8.1.1 + + decamelize@4.0.0: {} + + deep-eql@4.1.4: + dependencies: + type-detect: 4.1.0 + + deep-extend@0.6.0: {} + + deep-is@0.1.4: {} + + delayed-stream@1.0.0: {} + + depd@2.0.0: {} + + diff@4.0.2: {} + + diff@5.2.0: {} + + difflib@0.2.4: + dependencies: + heap: 0.2.7 + + dir-glob@3.0.1: + dependencies: + path-type: 4.0.0 + + dotenv@16.4.7: {} + + dunder-proto@1.0.1: + dependencies: + call-bind-apply-helpers: 1.0.2 + es-errors: 1.3.0 + gopd: 1.2.0 + + elliptic@6.6.1: + dependencies: + bn.js: 4.12.1 + brorand: 1.1.0 + hash.js: 1.1.7 + hmac-drbg: 1.0.1 + inherits: 2.0.4 + minimalistic-assert: 1.0.1 + minimalistic-crypto-utils: 1.0.1 + + emoji-regex@8.0.0: {} + + enquirer@2.4.1: + dependencies: + ansi-colors: 4.1.3 + strip-ansi: 6.0.1 + + env-paths@2.2.1: {} + + es-define-property@1.0.1: {} + + es-errors@1.3.0: {} + + es-object-atoms@1.1.1: + dependencies: + es-errors: 1.3.0 + + es-set-tostringtag@2.1.0: + dependencies: + es-errors: 1.3.0 + get-intrinsic: 1.3.0 + has-tostringtag: 1.0.2 + hasown: 2.0.2 + + escalade@3.2.0: {} + + escape-string-regexp@1.0.5: {} + + escape-string-regexp@4.0.0: {} + + escodegen@1.8.1: + dependencies: + esprima: 2.7.3 + estraverse: 1.9.3 + esutils: 2.0.3 + optionator: 0.8.3 + optionalDependencies: + source-map: 0.2.0 + + esprima@2.7.3: {} + + esprima@4.0.1: {} + + estraverse@1.9.3: {} + + esutils@2.0.3: {} + + eth-gas-reporter@0.2.27: + dependencies: + '@solidity-parser/parser': 0.14.5 + axios: 1.8.4 + cli-table3: 0.5.1 + colors: 1.4.0 + ethereum-cryptography: 1.2.0 + ethers: 5.8.0 + fs-readdir-recursive: 1.1.0 + lodash: 4.17.21 + markdown-table: 1.1.3 + mocha: 10.8.2 + req-cwd: 2.0.0 + sha1: 1.1.1 + sync-request: 6.1.0 + transitivePeerDependencies: + - bufferutil + - debug + - utf-8-validate + + ethereum-bloom-filters@1.2.0: + dependencies: + '@noble/hashes': 1.7.1 + + ethereum-cryptography@0.1.3: + dependencies: + '@types/pbkdf2': 3.1.2 + '@types/secp256k1': 4.0.6 + blakejs: 1.2.1 + browserify-aes: 1.2.0 + bs58check: 2.1.2 + create-hash: 1.2.0 + create-hmac: 1.1.7 + hash.js: 1.1.7 + keccak: 3.0.4 + pbkdf2: 3.1.2 + randombytes: 2.1.0 + safe-buffer: 5.2.1 + scrypt-js: 3.0.1 + secp256k1: 4.0.4 + setimmediate: 1.0.5 + + ethereum-cryptography@1.2.0: + dependencies: + '@noble/hashes': 1.2.0 + '@noble/secp256k1': 1.7.1 + '@scure/bip32': 1.1.5 + '@scure/bip39': 1.1.1 + + ethereum-cryptography@2.2.1: + dependencies: + '@noble/curves': 1.4.2 + '@noble/hashes': 1.4.0 + '@scure/bip32': 1.4.0 + '@scure/bip39': 1.3.0 + + ethereumjs-abi@0.6.8: + dependencies: + bn.js: 4.12.1 + ethereumjs-util: 6.2.1 + + ethereumjs-util@6.2.1: + dependencies: + '@types/bn.js': 4.11.6 + bn.js: 4.12.1 + create-hash: 1.2.0 + elliptic: 6.6.1 + ethereum-cryptography: 0.1.3 + ethjs-util: 0.1.6 + rlp: 2.2.7 + + ethereumjs-util@7.1.5: + dependencies: + '@types/bn.js': 5.1.6 + bn.js: 5.2.1 + create-hash: 1.2.0 + ethereum-cryptography: 0.1.3 + rlp: 2.2.7 + + ethers@5.8.0: + dependencies: + '@ethersproject/abi': 5.8.0 + '@ethersproject/abstract-provider': 5.8.0 + '@ethersproject/abstract-signer': 5.8.0 + '@ethersproject/address': 5.8.0 + '@ethersproject/base64': 5.8.0 + '@ethersproject/basex': 5.8.0 + '@ethersproject/bignumber': 5.8.0 + '@ethersproject/bytes': 5.8.0 + '@ethersproject/constants': 5.8.0 + '@ethersproject/contracts': 5.8.0 + '@ethersproject/hash': 5.8.0 + '@ethersproject/hdnode': 5.8.0 + '@ethersproject/json-wallets': 5.8.0 + '@ethersproject/keccak256': 5.8.0 + '@ethersproject/logger': 5.8.0 + '@ethersproject/networks': 5.8.0 + '@ethersproject/pbkdf2': 5.8.0 + '@ethersproject/properties': 5.8.0 + '@ethersproject/providers': 5.8.0 + '@ethersproject/random': 5.8.0 + '@ethersproject/rlp': 5.8.0 + '@ethersproject/sha2': 5.8.0 + '@ethersproject/signing-key': 5.8.0 + '@ethersproject/solidity': 5.8.0 + '@ethersproject/strings': 5.8.0 + '@ethersproject/transactions': 5.8.0 + '@ethersproject/units': 5.8.0 + '@ethersproject/wallet': 5.8.0 + '@ethersproject/web': 5.8.0 + '@ethersproject/wordlists': 5.8.0 + transitivePeerDependencies: + - bufferutil + - utf-8-validate + + ethers@6.13.5: + dependencies: + '@adraffy/ens-normalize': 1.10.1 + '@noble/curves': 1.2.0 + '@noble/hashes': 1.3.2 + '@types/node': 22.7.5 + aes-js: 4.0.0-beta.5 + tslib: 2.7.0 + ws: 8.17.1 + transitivePeerDependencies: + - bufferutil + - utf-8-validate + + ethjs-unit@0.1.6: + dependencies: + bn.js: 4.11.6 + number-to-bn: 1.7.0 + + ethjs-util@0.1.6: + dependencies: + is-hex-prefixed: 1.0.0 + strip-hex-prefix: 1.0.0 + + evp_bytestokey@1.0.3: + dependencies: + md5.js: 1.3.5 + safe-buffer: 5.2.1 + + fast-deep-equal@3.1.3: {} + + fast-glob@3.3.3: + dependencies: + '@nodelib/fs.stat': 2.0.5 + '@nodelib/fs.walk': 1.2.8 + glob-parent: 5.1.2 + merge2: 1.4.1 + micromatch: 4.0.8 + + fast-levenshtein@2.0.6: {} + + fast-uri@3.0.6: {} + + fastq@1.19.1: + dependencies: + reusify: 1.1.0 + + fdir@6.4.3(picomatch@4.0.2): + optionalDependencies: + picomatch: 4.0.2 + + fill-range@7.1.1: + dependencies: + to-regex-range: 5.0.1 + + find-replace@3.0.0: + dependencies: + array-back: 3.1.0 + + find-up@5.0.0: + dependencies: + locate-path: 6.0.0 + path-exists: 4.0.0 + + flat@5.0.2: {} + + follow-redirects@1.15.9(debug@4.4.0): + optionalDependencies: + debug: 4.4.0(supports-color@8.1.1) + + form-data@2.5.3: + dependencies: + asynckit: 0.4.0 + combined-stream: 1.0.8 + es-set-tostringtag: 2.1.0 + mime-types: 2.1.35 + safe-buffer: 5.2.1 + + form-data@4.0.2: + dependencies: + asynckit: 0.4.0 + combined-stream: 1.0.8 + es-set-tostringtag: 2.1.0 + mime-types: 2.1.35 + + fp-ts@1.19.3: {} + + fs-extra@10.1.0: + dependencies: + graceful-fs: 4.2.11 + jsonfile: 6.1.0 + universalify: 2.0.1 + + fs-extra@7.0.1: + dependencies: + graceful-fs: 4.2.11 + jsonfile: 4.0.0 + universalify: 0.1.2 + + fs-extra@8.1.0: + dependencies: + graceful-fs: 4.2.11 + jsonfile: 4.0.0 + universalify: 0.1.2 + + fs-extra@9.1.0: + dependencies: + at-least-node: 1.0.0 + graceful-fs: 4.2.11 + jsonfile: 6.1.0 + universalify: 2.0.1 + + fs-readdir-recursive@1.1.0: {} + + fs.realpath@1.0.0: {} + + fsevents@2.3.3: + optional: true + + function-bind@1.1.2: {} + + get-caller-file@2.0.5: {} + + get-func-name@2.0.2: {} + + get-intrinsic@1.3.0: + dependencies: + call-bind-apply-helpers: 1.0.2 + es-define-property: 1.0.1 + es-errors: 1.3.0 + es-object-atoms: 1.1.1 + function-bind: 1.1.2 + get-proto: 1.0.1 + gopd: 1.2.0 + has-symbols: 1.1.0 + hasown: 2.0.2 + math-intrinsics: 1.1.0 + + get-port@3.2.0: {} + + get-proto@1.0.1: + dependencies: + dunder-proto: 1.0.1 + es-object-atoms: 1.1.1 + + ghost-testrpc@0.0.2: + dependencies: + chalk: 2.4.2 + node-emoji: 1.11.0 + + glob-parent@5.1.2: + dependencies: + is-glob: 4.0.3 + + glob@5.0.15: + dependencies: + inflight: 1.0.6 + inherits: 2.0.4 + minimatch: 3.1.2 + once: 1.4.0 + path-is-absolute: 1.0.1 + + glob@7.1.7: + dependencies: + fs.realpath: 1.0.0 + inflight: 1.0.6 + inherits: 2.0.4 + minimatch: 3.1.2 + once: 1.4.0 + path-is-absolute: 1.0.1 + + glob@7.2.3: + dependencies: + fs.realpath: 1.0.0 + inflight: 1.0.6 + inherits: 2.0.4 + minimatch: 3.1.2 + once: 1.4.0 + path-is-absolute: 1.0.1 + + glob@8.1.0: + dependencies: + fs.realpath: 1.0.0 + inflight: 1.0.6 + inherits: 2.0.4 + minimatch: 5.1.6 + once: 1.4.0 + + global-modules@2.0.0: + dependencies: + global-prefix: 3.0.0 + + global-prefix@3.0.0: + dependencies: + ini: 1.3.8 + kind-of: 6.0.3 + which: 1.3.1 + + globby@10.0.2: + dependencies: + '@types/glob': 7.2.0 + array-union: 2.1.0 + dir-glob: 3.0.1 + fast-glob: 3.3.3 + glob: 7.2.3 + ignore: 5.3.2 + merge2: 1.4.1 + slash: 3.0.0 + + gopd@1.2.0: {} + + graceful-fs@4.2.11: {} + + handlebars@4.7.8: + dependencies: + minimist: 1.2.8 + neo-async: 2.6.2 + source-map: 0.6.1 + wordwrap: 1.0.0 + optionalDependencies: + uglify-js: 3.19.3 + + hardhat-gas-reporter@1.0.10(hardhat@2.22.19(ts-node@10.9.2(@types/node@22.14.0)(typescript@5.8.3))(typescript@5.8.3)): + dependencies: + array-uniq: 1.0.3 + eth-gas-reporter: 0.2.27 + hardhat: 2.22.19(ts-node@10.9.2(@types/node@22.14.0)(typescript@5.8.3))(typescript@5.8.3) + sha1: 1.1.1 + transitivePeerDependencies: + - '@codechecks/client' + - bufferutil + - debug + - utf-8-validate + + hardhat@2.22.19(ts-node@10.9.2(@types/node@22.14.0)(typescript@5.8.3))(typescript@5.8.3): + dependencies: + '@ethersproject/abi': 5.8.0 + '@metamask/eth-sig-util': 4.0.1 + '@nomicfoundation/edr': 0.8.0 + '@nomicfoundation/ethereumjs-common': 4.0.4 + '@nomicfoundation/ethereumjs-tx': 5.0.4 + '@nomicfoundation/ethereumjs-util': 9.0.4 + '@nomicfoundation/solidity-analyzer': 0.1.2 + '@sentry/node': 5.30.0 + '@types/bn.js': 5.1.6 + '@types/lru-cache': 5.1.1 + adm-zip: 0.4.16 + aggregate-error: 3.1.0 + ansi-escapes: 4.3.2 + boxen: 5.1.2 + chokidar: 4.0.3 + ci-info: 2.0.0 + debug: 4.4.0(supports-color@8.1.1) + enquirer: 2.4.1 + env-paths: 2.2.1 + ethereum-cryptography: 1.2.0 + ethereumjs-abi: 0.6.8 + find-up: 5.0.0 + fp-ts: 1.19.3 + fs-extra: 7.0.1 + immutable: 4.3.7 + io-ts: 1.10.4 + json-stream-stringify: 3.1.6 + keccak: 3.0.4 + lodash: 4.17.21 + mnemonist: 0.38.5 + mocha: 10.8.2 + p-map: 4.0.0 + picocolors: 1.1.1 + raw-body: 2.5.2 + resolve: 1.17.0 + semver: 6.3.1 + solc: 0.8.26(debug@4.4.0) + source-map-support: 0.5.21 + stacktrace-parser: 0.1.11 + tinyglobby: 0.2.12 + tsort: 0.0.1 + undici: 5.29.0 + uuid: 8.3.2 + ws: 7.5.10 + optionalDependencies: + ts-node: 10.9.2(@types/node@22.14.0)(typescript@5.8.3) + typescript: 5.8.3 + transitivePeerDependencies: + - bufferutil + - c-kzg + - supports-color + - utf-8-validate + + has-flag@1.0.0: {} + + has-flag@3.0.0: {} + + has-flag@4.0.0: {} + + has-symbols@1.1.0: {} + + has-tostringtag@1.0.2: + dependencies: + has-symbols: 1.1.0 + + hash-base@3.1.0: + dependencies: + inherits: 2.0.4 + readable-stream: 3.6.2 + safe-buffer: 5.2.1 + + hash.js@1.1.7: + dependencies: + inherits: 2.0.4 + minimalistic-assert: 1.0.1 + + hasown@2.0.2: + dependencies: + function-bind: 1.1.2 + + he@1.2.0: {} + + heap@0.2.7: {} + + hmac-drbg@1.0.1: + dependencies: + hash.js: 1.1.7 + minimalistic-assert: 1.0.1 + minimalistic-crypto-utils: 1.0.1 + + http-basic@8.1.3: + dependencies: + caseless: 0.12.0 + concat-stream: 1.6.2 + http-response-object: 3.0.2 + parse-cache-control: 1.0.1 + + http-errors@2.0.0: + dependencies: + depd: 2.0.0 + inherits: 2.0.4 + setprototypeof: 1.2.0 + statuses: 2.0.1 + toidentifier: 1.0.1 + + http-response-object@3.0.2: + dependencies: + '@types/node': 10.17.60 + + https-proxy-agent@5.0.1: + dependencies: + agent-base: 6.0.2 + debug: 4.4.0(supports-color@8.1.1) + transitivePeerDependencies: + - supports-color + + iconv-lite@0.4.24: + dependencies: + safer-buffer: 2.1.2 + + ignore@5.3.2: {} + + immer@10.0.2: {} + + immutable@4.3.7: {} + + indent-string@4.0.0: {} + + inflight@1.0.6: + dependencies: + once: 1.4.0 + wrappy: 1.0.2 + + inherits@2.0.4: {} + + ini@1.3.8: {} + + interpret@1.4.0: {} + + io-ts@1.10.4: + dependencies: + fp-ts: 1.19.3 + + is-binary-path@2.1.0: + dependencies: + binary-extensions: 2.3.0 + + is-core-module@2.16.1: + dependencies: + hasown: 2.0.2 + + is-extglob@2.1.1: {} + + is-fullwidth-code-point@2.0.0: {} + + is-fullwidth-code-point@3.0.0: {} + + is-glob@4.0.3: + dependencies: + is-extglob: 2.1.1 + + is-hex-prefixed@1.0.0: {} + + is-number@7.0.0: {} + + is-plain-obj@2.1.0: {} + + is-unicode-supported@0.1.0: {} + + isarray@1.0.0: {} + + isexe@2.0.0: {} + + js-sha3@0.8.0: {} + + js-yaml@3.14.1: + dependencies: + argparse: 1.0.10 + esprima: 4.0.1 + + js-yaml@4.1.0: + dependencies: + argparse: 2.0.1 + + json-schema-traverse@1.0.0: {} + + json-stream-stringify@3.1.6: {} + + json-stringify-safe@5.0.1: {} + + json5@2.2.3: {} + + jsonfile@4.0.0: + optionalDependencies: + graceful-fs: 4.2.11 + + jsonfile@6.1.0: + dependencies: + universalify: 2.0.1 + optionalDependencies: + graceful-fs: 4.2.11 + + jsonschema@1.5.0: {} + + keccak@3.0.4: + dependencies: + node-addon-api: 2.0.2 + node-gyp-build: 4.8.4 + readable-stream: 3.6.2 + + kind-of@6.0.3: {} + + kleur@3.0.3: {} + + levn@0.3.0: + dependencies: + prelude-ls: 1.1.2 + type-check: 0.3.2 + + locate-path@6.0.0: + dependencies: + p-locate: 5.0.0 + + lodash.camelcase@4.3.0: {} + + lodash.clonedeep@4.5.0: {} + + lodash.isequal@4.5.0: {} + + lodash.truncate@4.4.2: {} + + lodash@4.17.21: {} + + log-symbols@4.1.0: + dependencies: + chalk: 4.1.2 + is-unicode-supported: 0.1.0 + + loupe@2.3.7: + dependencies: + get-func-name: 2.0.2 + + lru_map@0.3.3: {} + + make-error@1.3.6: {} + + markdown-table@1.1.3: {} + + math-intrinsics@1.1.0: {} + + md5.js@1.3.5: + dependencies: + hash-base: 3.1.0 + inherits: 2.0.4 + safe-buffer: 5.2.1 + + memorystream@0.3.1: {} + + merge2@1.4.1: {} + + micro-ftch@0.3.1: {} + + micromatch@4.0.8: + dependencies: + braces: 3.0.3 + picomatch: 2.3.1 + + mime-db@1.52.0: {} + + mime-types@2.1.35: + dependencies: + mime-db: 1.52.0 + + minimalistic-assert@1.0.1: {} + + minimalistic-crypto-utils@1.0.1: {} + + minimatch@3.1.2: + dependencies: + brace-expansion: 1.1.11 + + minimatch@5.1.6: + dependencies: + brace-expansion: 2.0.1 + + minimist@1.2.8: {} + + mkdirp@0.5.6: + dependencies: + minimist: 1.2.8 + + mkdirp@1.0.4: {} + + mnemonist@0.38.5: + dependencies: + obliterator: 2.0.5 + + mocha@10.8.2: + dependencies: + ansi-colors: 4.1.3 + browser-stdout: 1.3.1 + chokidar: 3.6.0 + debug: 4.4.0(supports-color@8.1.1) + diff: 5.2.0 + escape-string-regexp: 4.0.0 + find-up: 5.0.0 + glob: 8.1.0 + he: 1.2.0 + js-yaml: 4.1.0 + log-symbols: 4.1.0 + minimatch: 5.1.6 + ms: 2.1.3 + serialize-javascript: 6.0.2 + strip-json-comments: 3.1.1 + supports-color: 8.1.1 + workerpool: 6.5.1 + yargs: 16.2.0 + yargs-parser: 20.2.9 + yargs-unparser: 2.0.0 + + ms@2.1.3: {} + + ndjson@2.0.0: + dependencies: + json-stringify-safe: 5.0.1 + minimist: 1.2.8 + readable-stream: 3.6.2 + split2: 3.2.2 + through2: 4.0.2 + + neo-async@2.6.2: {} + + node-addon-api@2.0.2: {} + + node-addon-api@5.1.0: {} + + node-emoji@1.11.0: + dependencies: + lodash: 4.17.21 + + node-gyp-build@4.8.4: {} + + nofilter@3.1.0: {} + + nopt@3.0.6: + dependencies: + abbrev: 1.0.9 + + normalize-path@3.0.0: {} + + number-to-bn@1.7.0: + dependencies: + bn.js: 4.11.6 + strip-hex-prefix: 1.0.0 + + object-assign@4.1.1: {} + + object-inspect@1.13.4: {} + + obliterator@2.0.5: {} + + once@1.4.0: + dependencies: + wrappy: 1.0.2 + + optionator@0.8.3: + dependencies: + deep-is: 0.1.4 + fast-levenshtein: 2.0.6 + levn: 0.3.0 + prelude-ls: 1.1.2 + type-check: 0.3.2 + word-wrap: 1.2.5 + + ordinal@1.0.3: {} + + os-tmpdir@1.0.2: {} + + p-limit@3.1.0: + dependencies: + yocto-queue: 0.1.0 + + p-locate@5.0.0: + dependencies: + p-limit: 3.1.0 + + p-map@4.0.0: + dependencies: + aggregate-error: 3.1.0 + + parse-cache-control@1.0.1: {} + + path-exists@4.0.0: {} + + path-is-absolute@1.0.1: {} + + path-parse@1.0.7: {} + + path-type@4.0.0: {} + + pathval@1.1.1: {} + + pbkdf2@3.1.2: + dependencies: + create-hash: 1.2.0 + create-hmac: 1.1.7 + ripemd160: 2.0.2 + safe-buffer: 5.2.1 + sha.js: 2.4.11 + + picocolors@1.1.1: {} + + picomatch@2.3.1: {} + + picomatch@4.0.2: {} + + pify@4.0.1: {} + + prelude-ls@1.1.2: {} + + prettier@2.8.8: {} + + process-nextick-args@2.0.1: {} + + promise@8.3.0: + dependencies: + asap: 2.0.6 + + prompts@2.4.2: + dependencies: + kleur: 3.0.3 + sisteransi: 1.0.5 + + proxy-from-env@1.1.0: {} + + qs@6.14.0: + dependencies: + side-channel: 1.1.0 + + queue-microtask@1.2.3: {} + + randombytes@2.1.0: + dependencies: + safe-buffer: 5.2.1 + + raw-body@2.5.2: + dependencies: + bytes: 3.1.2 + http-errors: 2.0.0 + iconv-lite: 0.4.24 + unpipe: 1.0.0 + + readable-stream@2.3.8: + dependencies: + core-util-is: 1.0.3 + inherits: 2.0.4 + isarray: 1.0.0 + process-nextick-args: 2.0.1 + safe-buffer: 5.1.2 + string_decoder: 1.1.1 + util-deprecate: 1.0.2 + + readable-stream@3.6.2: + dependencies: + inherits: 2.0.4 + string_decoder: 1.3.0 + util-deprecate: 1.0.2 + + readdirp@3.6.0: + dependencies: + picomatch: 2.3.1 + + readdirp@4.1.2: {} + + rechoir@0.6.2: + dependencies: + resolve: 1.22.10 + + recursive-readdir@2.2.3: + dependencies: + minimatch: 3.1.2 + + reduce-flatten@2.0.0: {} + + req-cwd@2.0.0: + dependencies: + req-from: 2.0.0 + + req-from@2.0.0: + dependencies: + resolve-from: 3.0.0 + + require-directory@2.1.1: {} + + require-from-string@2.0.2: {} + + resolve-from@3.0.0: {} + + resolve@1.1.7: {} + + resolve@1.17.0: + dependencies: + path-parse: 1.0.7 + + resolve@1.22.10: + dependencies: + is-core-module: 2.16.1 + path-parse: 1.0.7 + supports-preserve-symlinks-flag: 1.0.0 + + reusify@1.1.0: {} + + ripemd160@2.0.2: + dependencies: + hash-base: 3.1.0 + inherits: 2.0.4 + + rlp@2.2.7: + dependencies: + bn.js: 5.2.1 + + run-parallel@1.2.0: + dependencies: + queue-microtask: 1.2.3 + + safe-buffer@5.1.2: {} + + safe-buffer@5.2.1: {} + + safer-buffer@2.1.2: {} + + sc-istanbul@0.4.6: + dependencies: + abbrev: 1.0.9 + async: 1.5.2 + escodegen: 1.8.1 + esprima: 2.7.3 + glob: 5.0.15 + handlebars: 4.7.8 + js-yaml: 3.14.1 + mkdirp: 0.5.6 + nopt: 3.0.6 + once: 1.4.0 + resolve: 1.1.7 + supports-color: 3.2.3 + which: 1.3.1 + wordwrap: 1.0.0 + + scrypt-js@3.0.1: {} + + secp256k1@4.0.4: + dependencies: + elliptic: 6.6.1 + node-addon-api: 5.1.0 + node-gyp-build: 4.8.4 + + semver@5.7.2: {} + + semver@6.3.1: {} + + semver@7.7.1: {} + + serialize-javascript@6.0.2: + dependencies: + randombytes: 2.1.0 + + setimmediate@1.0.5: {} + + setprototypeof@1.2.0: {} + + sha.js@2.4.11: + dependencies: + inherits: 2.0.4 + safe-buffer: 5.2.1 + + sha1@1.1.1: + dependencies: + charenc: 0.0.2 + crypt: 0.0.2 + + shelljs@0.8.5: + dependencies: + glob: 7.2.3 + interpret: 1.4.0 + rechoir: 0.6.2 + + side-channel-list@1.0.0: + dependencies: + es-errors: 1.3.0 + object-inspect: 1.13.4 + + side-channel-map@1.0.1: + dependencies: + call-bound: 1.0.4 + es-errors: 1.3.0 + get-intrinsic: 1.3.0 + object-inspect: 1.13.4 + + side-channel-weakmap@1.0.2: + dependencies: + call-bound: 1.0.4 + es-errors: 1.3.0 + get-intrinsic: 1.3.0 + object-inspect: 1.13.4 + side-channel-map: 1.0.1 + + side-channel@1.1.0: + dependencies: + es-errors: 1.3.0 + object-inspect: 1.13.4 + side-channel-list: 1.0.0 + side-channel-map: 1.0.1 + side-channel-weakmap: 1.0.2 + + sisteransi@1.0.5: {} + + slash@3.0.0: {} + + slice-ansi@4.0.0: + dependencies: + ansi-styles: 4.3.0 + astral-regex: 2.0.0 + is-fullwidth-code-point: 3.0.0 + + solc@0.8.26(debug@4.4.0): + dependencies: + command-exists: 1.2.9 + commander: 8.3.0 + follow-redirects: 1.15.9(debug@4.4.0) + js-sha3: 0.8.0 + memorystream: 0.3.1 + semver: 5.7.2 + tmp: 0.0.33 + transitivePeerDependencies: + - debug + + solidity-coverage@0.8.14(hardhat@2.22.19(ts-node@10.9.2(@types/node@22.14.0)(typescript@5.8.3))(typescript@5.8.3)): + dependencies: + '@ethersproject/abi': 5.8.0 + '@solidity-parser/parser': 0.19.0 + chalk: 2.4.2 + death: 1.1.0 + difflib: 0.2.4 + fs-extra: 8.1.0 + ghost-testrpc: 0.0.2 + global-modules: 2.0.0 + globby: 10.0.2 + hardhat: 2.22.19(ts-node@10.9.2(@types/node@22.14.0)(typescript@5.8.3))(typescript@5.8.3) + jsonschema: 1.5.0 + lodash: 4.17.21 + mocha: 10.8.2 + node-emoji: 1.11.0 + pify: 4.0.1 + recursive-readdir: 2.2.3 + sc-istanbul: 0.4.6 + semver: 7.7.1 + shelljs: 0.8.5 + web3-utils: 1.10.4 + + source-map-support@0.5.21: + dependencies: + buffer-from: 1.1.2 + source-map: 0.6.1 + + source-map@0.2.0: + dependencies: + amdefine: 1.0.1 + optional: true + + source-map@0.6.1: {} + + split2@3.2.2: + dependencies: + readable-stream: 3.6.2 + + sprintf-js@1.0.3: {} + + stacktrace-parser@0.1.11: + dependencies: + type-fest: 0.7.1 + + statuses@2.0.1: {} + + string-format@2.0.0: {} + + string-width@2.1.1: + dependencies: + is-fullwidth-code-point: 2.0.0 + strip-ansi: 4.0.0 + + string-width@4.2.3: + dependencies: + emoji-regex: 8.0.0 + is-fullwidth-code-point: 3.0.0 + strip-ansi: 6.0.1 + + string_decoder@1.1.1: + dependencies: + safe-buffer: 5.1.2 + + string_decoder@1.3.0: + dependencies: + safe-buffer: 5.2.1 + + strip-ansi@4.0.0: + dependencies: + ansi-regex: 3.0.1 + + strip-ansi@6.0.1: + dependencies: + ansi-regex: 5.0.1 + + strip-hex-prefix@1.0.0: + dependencies: + is-hex-prefixed: 1.0.0 + + strip-json-comments@3.1.1: {} + + supports-color@3.2.3: + dependencies: + has-flag: 1.0.0 + + supports-color@5.5.0: + dependencies: + has-flag: 3.0.0 + + supports-color@7.2.0: + dependencies: + has-flag: 4.0.0 + + supports-color@8.1.1: + dependencies: + has-flag: 4.0.0 + + supports-preserve-symlinks-flag@1.0.0: {} + + sync-request@6.1.0: + dependencies: + http-response-object: 3.0.2 + sync-rpc: 1.3.6 + then-request: 6.0.2 + + sync-rpc@1.3.6: + dependencies: + get-port: 3.2.0 + + table-layout@1.0.2: + dependencies: + array-back: 4.0.2 + deep-extend: 0.6.0 + typical: 5.2.0 + wordwrapjs: 4.0.1 + + table@6.9.0: + dependencies: + ajv: 8.17.1 + lodash.truncate: 4.4.2 + slice-ansi: 4.0.0 + string-width: 4.2.3 + strip-ansi: 6.0.1 + + then-request@6.0.2: + dependencies: + '@types/concat-stream': 1.6.1 + '@types/form-data': 0.0.33 + '@types/node': 8.10.66 + '@types/qs': 6.9.18 + caseless: 0.12.0 + concat-stream: 1.6.2 + form-data: 2.5.3 + http-basic: 8.1.3 + http-response-object: 3.0.2 + promise: 8.3.0 + qs: 6.14.0 + + through2@4.0.2: + dependencies: + readable-stream: 3.6.2 + + tinyglobby@0.2.12: + dependencies: + fdir: 6.4.3(picomatch@4.0.2) + picomatch: 4.0.2 + + tmp@0.0.33: + dependencies: + os-tmpdir: 1.0.2 + + to-regex-range@5.0.1: + dependencies: + is-number: 7.0.0 + + toidentifier@1.0.1: {} + + ts-command-line-args@2.5.1: + dependencies: + chalk: 4.1.2 + command-line-args: 5.2.1 + command-line-usage: 6.1.3 + string-format: 2.0.0 + + ts-essentials@7.0.3(typescript@5.8.3): + dependencies: + typescript: 5.8.3 + + ts-node@10.9.2(@types/node@22.14.0)(typescript@5.8.3): + dependencies: + '@cspotcode/source-map-support': 0.8.1 + '@tsconfig/node10': 1.0.11 + '@tsconfig/node12': 1.0.11 + '@tsconfig/node14': 1.0.3 + '@tsconfig/node16': 1.0.4 + '@types/node': 22.14.0 + acorn: 8.14.1 + acorn-walk: 8.3.4 + arg: 4.1.3 + create-require: 1.1.1 + diff: 4.0.2 + make-error: 1.3.6 + typescript: 5.8.3 + v8-compile-cache-lib: 3.0.1 + yn: 3.1.1 + + tslib@1.14.1: {} + + tslib@2.7.0: {} + + tsort@0.0.1: {} + + tweetnacl-util@0.15.1: {} + + tweetnacl@1.0.3: {} + + type-check@0.3.2: + dependencies: + prelude-ls: 1.1.2 + + type-detect@4.1.0: {} + + type-fest@0.20.2: {} + + type-fest@0.21.3: {} + + type-fest@0.7.1: {} + + typechain@8.3.2(typescript@5.8.3): + dependencies: + '@types/prettier': 2.7.3 + debug: 4.4.0(supports-color@8.1.1) + fs-extra: 7.0.1 + glob: 7.1.7 + js-sha3: 0.8.0 + lodash: 4.17.21 + mkdirp: 1.0.4 + prettier: 2.8.8 + ts-command-line-args: 2.5.1 + ts-essentials: 7.0.3(typescript@5.8.3) + typescript: 5.8.3 + transitivePeerDependencies: + - supports-color + + typedarray@0.0.6: {} + + typescript@5.8.3: {} + + typical@4.0.0: {} + + typical@5.2.0: {} + + uglify-js@3.19.3: + optional: true + + undici-types@6.19.8: {} + + undici-types@6.21.0: {} + + undici@5.29.0: + dependencies: + '@fastify/busboy': 2.1.1 + + universalify@0.1.2: {} + + universalify@2.0.1: {} + + unpipe@1.0.0: {} + + utf8@3.0.0: {} + + util-deprecate@1.0.2: {} + + uuid@8.3.2: {} + + v8-compile-cache-lib@3.0.1: {} + + web3-utils@1.10.4: + dependencies: + '@ethereumjs/util': 8.1.0 + bn.js: 5.2.1 + ethereum-bloom-filters: 1.2.0 + ethereum-cryptography: 2.2.1 + ethjs-unit: 0.1.6 + number-to-bn: 1.7.0 + randombytes: 2.1.0 + utf8: 3.0.0 + + which@1.3.1: + dependencies: + isexe: 2.0.0 + + widest-line@3.1.0: + dependencies: + string-width: 4.2.3 + + word-wrap@1.2.5: {} + + wordwrap@1.0.0: {} + + wordwrapjs@4.0.1: + dependencies: + reduce-flatten: 2.0.0 + typical: 5.2.0 + + workerpool@6.5.1: {} + + wrap-ansi@7.0.0: + dependencies: + ansi-styles: 4.3.0 + string-width: 4.2.3 + strip-ansi: 6.0.1 + + wrappy@1.0.2: {} + + ws@7.5.10: {} + + ws@8.17.1: {} + + ws@8.18.0: {} + + y18n@5.0.8: {} + + yargs-parser@20.2.9: {} + + yargs-unparser@2.0.0: + dependencies: + camelcase: 6.3.0 + decamelize: 4.0.0 + flat: 5.0.2 + is-plain-obj: 2.1.0 + + yargs@16.2.0: + dependencies: + cliui: 7.0.4 + escalade: 3.2.0 + get-caller-file: 2.0.5 + require-directory: 2.1.1 + string-width: 4.2.3 + y18n: 5.0.8 + yargs-parser: 20.2.9 + + yn@3.1.1: {} + + yocto-queue@0.1.0: {} From 51c19232a6dbf4fb6f6666e4c1bf43ab36baadbd Mon Sep 17 00:00:00 2001 From: notlongfen Date: Thu, 10 Apr 2025 00:35:38 +0700 Subject: [PATCH 2/3] Done challenge-1 v2(Ready to deploy to Westend) --- .../contracts/TokenVesting.sol | 19 +- challenge-1-vesting/package-lock.json | 186 ++++++++++-------- challenge-1-vesting/package.json | 5 +- challenge-1-vesting/pnpm-lock.yaml | 2 +- 4 files changed, 126 insertions(+), 86 deletions(-) diff --git a/challenge-1-vesting/contracts/TokenVesting.sol b/challenge-1-vesting/contracts/TokenVesting.sol index 9119791..a63de3d 100644 --- a/challenge-1-vesting/contracts/TokenVesting.sol +++ b/challenge-1-vesting/contracts/TokenVesting.sol @@ -124,11 +124,16 @@ contract TokenVesting is Ownable(msg.sender), Pausable, ReentrancyGuard { VestingSchedule memory schedule = vestingSchedules[beneficiary]; require(!schedule.revoked, "Vesting schedule revoked"); - if( schedule.startTime + schedule.cliffDuration < block.timestamp) { + uint256 currentTime = block.timestamp; + if(currentTime < schedule.startTime + schedule.cliffDuration) { return 0; } - uint256 vestedDuration = block.timestamp - schedule.startTime; + if(currentTime >= schedule.startTime + schedule.vestingDuration) { + return schedule.totalAmount; + } + + uint256 vestedDuration = currentTime - schedule.startTime; uint256 vestedAmount = (schedule.totalAmount * vestedDuration) / schedule.vestingDuration; return vestedAmount; @@ -139,6 +144,7 @@ contract TokenVesting is Ownable(msg.sender), Pausable, ReentrancyGuard { address beneficiary = msg.sender; VestingSchedule storage schedule = vestingSchedules[beneficiary]; + require(schedule.startTime + schedule.cliffDuration < block.timestamp, "No tokens to claim"); require(!schedule.revoked, "Vesting schedule revoked"); require(schedule.totalAmount > 0, "Total amount must be larger than 0"); @@ -154,23 +160,24 @@ contract TokenVesting is Ownable(msg.sender), Pausable, ReentrancyGuard { function revokeVesting(address beneficiary) external onlyOwner { // TODO: Implement vesting revocation - VestingSchedule memory schedule = vestingSchedules[beneficiary]; + VestingSchedule storage schedule = vestingSchedules[beneficiary]; require(!schedule.revoked, "Vesting schedule revoked"); - schedule.revoked = true; - vestingSchedules[beneficiary] = schedule; - emit VestingRevoked(beneficiary); uint256 vestedAmount = calculateVestedAmount(beneficiary); uint256 unclaimedAmount = vestedAmount - schedule.amountClaimed; uint256 unvestedAmount = schedule.totalAmount - vestedAmount; + schedule.revoked = true; + if (unclaimedAmount > 0) { token.safeTransfer(beneficiary, unclaimedAmount); } if (unvestedAmount > 0) { token.safeTransfer(owner(), unvestedAmount); } + + emit VestingRevoked(beneficiary); } function pause() external onlyOwner { diff --git a/challenge-1-vesting/package-lock.json b/challenge-1-vesting/package-lock.json index ebb18e8..67a2acc 100644 --- a/challenge-1-vesting/package-lock.json +++ b/challenge-1-vesting/package-lock.json @@ -14,8 +14,11 @@ "dotenv": "^16.4.7" }, "devDependencies": { + "@nomicfoundation/hardhat-chai-matchers": "^2.0.8", "@nomicfoundation/hardhat-toolbox": "^5.0.0", - "hardhat": "^2.22.17" + "@types/chai": "^5.2.1", + "chai": "^5.2.0", + "hardhat": "^2.22.19" } }, "node_modules/@adraffy/ens-normalize": { @@ -990,74 +993,82 @@ } }, "node_modules/@nomicfoundation/edr": { - "version": "0.6.5", - "resolved": "https://registry.npmjs.org/@nomicfoundation/edr/-/edr-0.6.5.tgz", - "integrity": "sha512-tAqMslLP+/2b2sZP4qe9AuGxG3OkQ5gGgHE4isUuq6dUVjwCRPFhAOhpdFl+OjY5P3yEv3hmq9HjUGRa2VNjng==", + "version": "0.8.0", + "resolved": "https://registry.npmjs.org/@nomicfoundation/edr/-/edr-0.8.0.tgz", + "integrity": "sha512-dwWRrghSVBQDpt0wP+6RXD8BMz2i/9TI34TcmZqeEAZuCLei3U9KZRgGTKVAM1rMRvrpf5ROfPqrWNetKVUTag==", + "license": "MIT", "dependencies": { - "@nomicfoundation/edr-darwin-arm64": "0.6.5", - "@nomicfoundation/edr-darwin-x64": "0.6.5", - "@nomicfoundation/edr-linux-arm64-gnu": "0.6.5", - "@nomicfoundation/edr-linux-arm64-musl": "0.6.5", - "@nomicfoundation/edr-linux-x64-gnu": "0.6.5", - "@nomicfoundation/edr-linux-x64-musl": "0.6.5", - "@nomicfoundation/edr-win32-x64-msvc": "0.6.5" + "@nomicfoundation/edr-darwin-arm64": "0.8.0", + "@nomicfoundation/edr-darwin-x64": "0.8.0", + "@nomicfoundation/edr-linux-arm64-gnu": "0.8.0", + "@nomicfoundation/edr-linux-arm64-musl": "0.8.0", + "@nomicfoundation/edr-linux-x64-gnu": "0.8.0", + "@nomicfoundation/edr-linux-x64-musl": "0.8.0", + "@nomicfoundation/edr-win32-x64-msvc": "0.8.0" }, "engines": { "node": ">= 18" } }, "node_modules/@nomicfoundation/edr-darwin-arm64": { - "version": "0.6.5", - "resolved": "https://registry.npmjs.org/@nomicfoundation/edr-darwin-arm64/-/edr-darwin-arm64-0.6.5.tgz", - "integrity": "sha512-A9zCCbbNxBpLgjS1kEJSpqxIvGGAX4cYbpDYCU2f3jVqOwaZ/NU761y1SvuCRVpOwhoCXqByN9b7HPpHi0L4hw==", + "version": "0.8.0", + "resolved": "https://registry.npmjs.org/@nomicfoundation/edr-darwin-arm64/-/edr-darwin-arm64-0.8.0.tgz", + "integrity": "sha512-sKTmOu/P5YYhxT0ThN2Pe3hmCE/5Ag6K/eYoiavjLWbR7HEb5ZwPu2rC3DpuUk1H+UKJqt7o4/xIgJxqw9wu6A==", + "license": "MIT", "engines": { "node": ">= 18" } }, "node_modules/@nomicfoundation/edr-darwin-x64": { - "version": "0.6.5", - "resolved": "https://registry.npmjs.org/@nomicfoundation/edr-darwin-x64/-/edr-darwin-x64-0.6.5.tgz", - "integrity": "sha512-x3zBY/v3R0modR5CzlL6qMfFMdgwd6oHrWpTkuuXnPFOX8SU31qq87/230f4szM+ukGK8Hi+mNq7Ro2VF4Fj+w==", + "version": "0.8.0", + "resolved": "https://registry.npmjs.org/@nomicfoundation/edr-darwin-x64/-/edr-darwin-x64-0.8.0.tgz", + "integrity": "sha512-8ymEtWw1xf1Id1cc42XIeE+9wyo3Dpn9OD/X8GiaMz9R70Ebmj2g+FrbETu8o6UM+aL28sBZQCiCzjlft2yWAg==", + "license": "MIT", "engines": { "node": ">= 18" } }, "node_modules/@nomicfoundation/edr-linux-arm64-gnu": { - "version": "0.6.5", - "resolved": "https://registry.npmjs.org/@nomicfoundation/edr-linux-arm64-gnu/-/edr-linux-arm64-gnu-0.6.5.tgz", - "integrity": "sha512-HGpB8f1h8ogqPHTyUpyPRKZxUk2lu061g97dOQ/W4CxevI0s/qiw5DB3U3smLvSnBHKOzYS1jkxlMeGN01ky7A==", + "version": "0.8.0", + "resolved": "https://registry.npmjs.org/@nomicfoundation/edr-linux-arm64-gnu/-/edr-linux-arm64-gnu-0.8.0.tgz", + "integrity": "sha512-h/wWzS2EyQuycz+x/SjMRbyA+QMCCVmotRsgM1WycPARvVZWIVfwRRsKoXKdCftsb3S8NTprqBdJlOmsFyETFA==", + "license": "MIT", "engines": { "node": ">= 18" } }, "node_modules/@nomicfoundation/edr-linux-arm64-musl": { - "version": "0.6.5", - "resolved": "https://registry.npmjs.org/@nomicfoundation/edr-linux-arm64-musl/-/edr-linux-arm64-musl-0.6.5.tgz", - "integrity": "sha512-ESvJM5Y9XC03fZg9KaQg3Hl+mbx7dsSkTIAndoJS7X2SyakpL9KZpOSYrDk135o8s9P9lYJdPOyiq+Sh+XoCbQ==", + "version": "0.8.0", + "resolved": "https://registry.npmjs.org/@nomicfoundation/edr-linux-arm64-musl/-/edr-linux-arm64-musl-0.8.0.tgz", + "integrity": "sha512-gnWxDgdkka0O9GpPX/gZT3REeKYV28Guyg13+Vj/bbLpmK1HmGh6Kx+fMhWv+Ht/wEmGDBGMCW1wdyT/CftJaQ==", + "license": "MIT", "engines": { "node": ">= 18" } }, "node_modules/@nomicfoundation/edr-linux-x64-gnu": { - "version": "0.6.5", - "resolved": "https://registry.npmjs.org/@nomicfoundation/edr-linux-x64-gnu/-/edr-linux-x64-gnu-0.6.5.tgz", - "integrity": "sha512-HCM1usyAR1Ew6RYf5AkMYGvHBy64cPA5NMbaeY72r0mpKaH3txiMyydcHibByOGdQ8iFLWpyUdpl1egotw+Tgg==", + "version": "0.8.0", + "resolved": "https://registry.npmjs.org/@nomicfoundation/edr-linux-x64-gnu/-/edr-linux-x64-gnu-0.8.0.tgz", + "integrity": "sha512-DTMiAkgAx+nyxcxKyxFZk1HPakXXUCgrmei7r5G7kngiggiGp/AUuBBWFHi8xvl2y04GYhro5Wp+KprnLVoAPA==", + "license": "MIT", "engines": { "node": ">= 18" } }, "node_modules/@nomicfoundation/edr-linux-x64-musl": { - "version": "0.6.5", - "resolved": "https://registry.npmjs.org/@nomicfoundation/edr-linux-x64-musl/-/edr-linux-x64-musl-0.6.5.tgz", - "integrity": "sha512-nB2uFRyczhAvWUH7NjCsIO6rHnQrof3xcCe6Mpmnzfl2PYcGyxN7iO4ZMmRcQS7R1Y670VH6+8ZBiRn8k43m7A==", + "version": "0.8.0", + "resolved": "https://registry.npmjs.org/@nomicfoundation/edr-linux-x64-musl/-/edr-linux-x64-musl-0.8.0.tgz", + "integrity": "sha512-iTITWe0Zj8cNqS0xTblmxPbHVWwEtMiDC+Yxwr64d7QBn/1W0ilFQ16J8gB6RVVFU3GpfNyoeg3tUoMpSnrm6Q==", + "license": "MIT", "engines": { "node": ">= 18" } }, "node_modules/@nomicfoundation/edr-win32-x64-msvc": { - "version": "0.6.5", - "resolved": "https://registry.npmjs.org/@nomicfoundation/edr-win32-x64-msvc/-/edr-win32-x64-msvc-0.6.5.tgz", - "integrity": "sha512-B9QD/4DSSCFtWicO8A3BrsnitO1FPv7axB62wq5Q+qeJ50yJlTmyeGY3cw62gWItdvy2mh3fRM6L1LpnHiB77A==", + "version": "0.8.0", + "resolved": "https://registry.npmjs.org/@nomicfoundation/edr-win32-x64-msvc/-/edr-win32-x64-msvc-0.8.0.tgz", + "integrity": "sha512-mNRDyd/C3j7RMcwapifzv2K57sfA5xOw8g2U84ZDvgSrXVXLC99ZPxn9kmolb+dz8VMm9FONTZz9ESS6v8DTnA==", + "license": "MIT", "engines": { "node": ">= 18" } @@ -1172,7 +1183,7 @@ "resolved": "https://registry.npmjs.org/@nomicfoundation/hardhat-chai-matchers/-/hardhat-chai-matchers-2.0.8.tgz", "integrity": "sha512-Z5PiCXH4xhNLASROlSUOADfhfpfhYO6D7Hn9xp8PddmHey0jq704cr6kfU8TRrQ4PUZbpfsZadPj+pCfZdjPIg==", "dev": true, - "peer": true, + "license": "MIT", "dependencies": { "@types/chai-as-promised": "^7.1.3", "chai-as-promised": "^7.1.1", @@ -1788,18 +1799,20 @@ } }, "node_modules/@types/chai": { - "version": "4.3.20", - "resolved": "https://registry.npmjs.org/@types/chai/-/chai-4.3.20.tgz", - "integrity": "sha512-/pC9HAB5I/xMlc5FP77qjCnI16ChlJfW0tGa0IUcFn38VJrTV6DeZ60NU5KZBtaOZqjdpwTWohz5HU1RrhiYxQ==", + "version": "5.2.1", + "resolved": "https://registry.npmjs.org/@types/chai/-/chai-5.2.1.tgz", + "integrity": "sha512-iu1JLYmGmITRzUgNiLMZD3WCoFzpYtueuyAgHTXqgwSRAMIlFTnZqG6/xenkpUGRJEzSfklUTI4GNSzks/dc0w==", "dev": true, - "peer": true + "license": "MIT", + "dependencies": { + "@types/deep-eql": "*" + } }, "node_modules/@types/chai-as-promised": { "version": "7.1.8", "resolved": "https://registry.npmjs.org/@types/chai-as-promised/-/chai-as-promised-7.1.8.tgz", "integrity": "sha512-ThlRVIJhr69FLlh6IctTXFkmhtP3NpMZ2QGq69StYLyKZFp/HOp1VdKZj7RvfNWYYcJ1xlbLGLLWj1UvP5u/Gw==", "dev": true, - "peer": true, "dependencies": { "@types/chai": "*" } @@ -1814,6 +1827,13 @@ "@types/node": "*" } }, + "node_modules/@types/deep-eql": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/@types/deep-eql/-/deep-eql-4.0.2.tgz", + "integrity": "sha512-c9h9dVVMigMPc4bwTvC5dxqtqJZwQPePsWjPlpSOnojbor6pGqdk541lfA7AqFQr5pB1BRdq0juY9db81BwyFw==", + "dev": true, + "license": "MIT" + }, "node_modules/@types/form-data": { "version": "0.0.33", "resolved": "https://registry.npmjs.org/@types/form-data/-/form-data-0.0.33.tgz", @@ -2120,13 +2140,13 @@ "peer": true }, "node_modules/assertion-error": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/assertion-error/-/assertion-error-1.1.0.tgz", - "integrity": "sha512-jgsaNduz+ndvGyFt3uSuWqvy4lCnIJiovtouQN5JZHOKCS2QuhEdbcQHFhVksz2N2U9hXJo8odG7ETyWlEeuDw==", + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/assertion-error/-/assertion-error-2.0.1.tgz", + "integrity": "sha512-Izi8RQcffqCeNVgFigKli1ssklIbpHnCYc6AknXGYoB6grJqyeby7jv12JUQgmTAnIDnbck1uxksT4dzN3PWBA==", "dev": true, - "peer": true, + "license": "MIT", "engines": { - "node": "*" + "node": ">=12" } }, "node_modules/astral-regex": { @@ -2389,22 +2409,20 @@ } }, "node_modules/chai": { - "version": "4.5.0", - "resolved": "https://registry.npmjs.org/chai/-/chai-4.5.0.tgz", - "integrity": "sha512-RITGBfijLkBddZvnn8jdqoTypxvqbOLYQkGGxXzeFjVHvudaPw0HNFD9x928/eUwYWd2dPCugVqspGALTZZQKw==", + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/chai/-/chai-5.2.0.tgz", + "integrity": "sha512-mCuXncKXk5iCLhfhwTc0izo0gtEmpz5CtG2y8GiOINBlMVS6v8TMRc5TaLWKS6692m9+dVVfzgeVxR5UxWHTYw==", "dev": true, - "peer": true, + "license": "MIT", "dependencies": { - "assertion-error": "^1.1.0", - "check-error": "^1.0.3", - "deep-eql": "^4.1.3", - "get-func-name": "^2.0.2", - "loupe": "^2.3.6", - "pathval": "^1.1.1", - "type-detect": "^4.1.0" + "assertion-error": "^2.0.1", + "check-error": "^2.1.1", + "deep-eql": "^5.0.1", + "loupe": "^3.1.0", + "pathval": "^2.0.0" }, "engines": { - "node": ">=4" + "node": ">=12" } }, "node_modules/chai-as-promised": { @@ -2412,7 +2430,6 @@ "resolved": "https://registry.npmjs.org/chai-as-promised/-/chai-as-promised-7.1.2.tgz", "integrity": "sha512-aBDHZxRzYnUYuIAIPBH2s511DjlKPzXNlXSGFC8CwmroWQLfrW0LtE1nK3MAwwNhJPa9raEjNCmRoFpG0Hurdw==", "dev": true, - "peer": true, "dependencies": { "check-error": "^1.0.2" }, @@ -2420,6 +2437,26 @@ "chai": ">= 2.1.2 < 6" } }, + "node_modules/chai/node_modules/check-error": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/check-error/-/check-error-2.1.1.tgz", + "integrity": "sha512-OAlb+T7V4Op9OwdkjmguYRqncdlx5JiofwOAUkmTF+jNdHwzTaTs4sRAGpzLF3oOz5xAyDGrPgeIDFQmDOTiJw==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 16" + } + }, + "node_modules/chai/node_modules/deep-eql": { + "version": "5.0.2", + "resolved": "https://registry.npmjs.org/deep-eql/-/deep-eql-5.0.2.tgz", + "integrity": "sha512-h5k/5U50IJJFpzfL6nO9jaaumfjO/f2NjK/oYB2Djzm4p9L+3T9qWpZqZ2hAbLPuuYq9wrU08WQyBTL5GbPk5Q==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=6" + } + }, "node_modules/chalk": { "version": "4.1.2", "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", @@ -2450,7 +2487,6 @@ "resolved": "https://registry.npmjs.org/check-error/-/check-error-1.0.3.tgz", "integrity": "sha512-iKEoDYaRmd1mxM90a2OEfWhjsjPpYPuQ+lMYsoxB126+t8fw7ySEO48nmDg5COTjxDI65/Y2OWpeEHk3ZOe8zg==", "dev": true, - "peer": true, "dependencies": { "get-func-name": "^2.0.2" }, @@ -2916,7 +2952,6 @@ "resolved": "https://registry.npmjs.org/deep-eql/-/deep-eql-4.1.4.tgz", "integrity": "sha512-SUwdGfqdKOwxCPeVYjwSyRpJ7Z+fhpwIAtmCUdZIWZ/YP5R9WAsyuSgpLVDi9bjWoN2LXHNss/dk3urXtdQxGg==", "dev": true, - "peer": true, "dependencies": { "type-detect": "^4.0.0" }, @@ -3694,7 +3729,6 @@ "resolved": "https://registry.npmjs.org/get-func-name/-/get-func-name-2.0.2.tgz", "integrity": "sha512-8vXOvuE167CtIc3OyItco7N/dpRtBbYOsPsXCz7X/PMnlGjYjSGuZJgM1Y7mmew7BKf9BqvLX2tnOVy1BBUsxQ==", "dev": true, - "peer": true, "engines": { "node": "*" } @@ -3989,13 +4023,14 @@ } }, "node_modules/hardhat": { - "version": "2.22.17", - "resolved": "https://registry.npmjs.org/hardhat/-/hardhat-2.22.17.tgz", - "integrity": "sha512-tDlI475ccz4d/dajnADUTRc1OJ3H8fpP9sWhXhBPpYsQOg8JHq5xrDimo53UhWPl7KJmAeDCm1bFG74xvpGRpg==", + "version": "2.22.19", + "resolved": "https://registry.npmjs.org/hardhat/-/hardhat-2.22.19.tgz", + "integrity": "sha512-jptJR5o6MCgNbhd7eKa3mrteR+Ggq1exmE5RUL5ydQEVKcZm0sss5laa86yZ0ixIavIvF4zzS7TdGDuyopj0sQ==", + "license": "MIT", "dependencies": { "@ethersproject/abi": "^5.1.2", "@metamask/eth-sig-util": "^4.0.0", - "@nomicfoundation/edr": "^0.6.5", + "@nomicfoundation/edr": "^0.8.0", "@nomicfoundation/ethereumjs-common": "4.0.4", "@nomicfoundation/ethereumjs-tx": "5.0.4", "@nomicfoundation/ethereumjs-util": "9.0.4", @@ -4565,14 +4600,11 @@ } }, "node_modules/loupe": { - "version": "2.3.7", - "resolved": "https://registry.npmjs.org/loupe/-/loupe-2.3.7.tgz", - "integrity": "sha512-zSMINGVYkdpYSOBmLi0D1Uo7JU9nVdQKrHxC8eYlV+9YKK9WePqAlL7lSlorG/U2Fw1w0hTBmaa/jrQ3UbPHtA==", + "version": "3.1.3", + "resolved": "https://registry.npmjs.org/loupe/-/loupe-3.1.3.tgz", + "integrity": "sha512-kkIp7XSkP78ZxJEsSxW3712C6teJVoeHHwgo9zJ380de7IYyJ2ISlxojcH2pC5OFLewESmnRi/+XCDIEEVyoug==", "dev": true, - "peer": true, - "dependencies": { - "get-func-name": "^2.0.1" - } + "license": "MIT" }, "node_modules/lru_map": { "version": "0.3.3", @@ -4985,8 +5017,7 @@ "version": "1.0.3", "resolved": "https://registry.npmjs.org/ordinal/-/ordinal-1.0.3.tgz", "integrity": "sha512-cMddMgb2QElm8G7vdaa02jhUNbTSrhsgAGUz1OokD83uJTwSUn+nKoNoKVVaRa08yF6sgfO7Maou1+bgLd9rdQ==", - "dev": true, - "peer": true + "dev": true }, "node_modules/os-tmpdir": { "version": "1.0.2", @@ -5079,13 +5110,13 @@ } }, "node_modules/pathval": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/pathval/-/pathval-1.1.1.tgz", - "integrity": "sha512-Dp6zGqpTdETdR63lehJYPeIOqpiNBNtc7BpWSLrOje7UaIsE5aY92r/AunQA7rsXvet3lrJ3JnZX29UPTKXyKQ==", + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/pathval/-/pathval-2.0.0.tgz", + "integrity": "sha512-vE7JKRyES09KiunauX7nd2Q9/L7lhok4smP9RZTDeD4MVs72Dp2qNFVz39Nz5a0FVEW0BJR6C0DYrq6unoziZA==", "dev": true, - "peer": true, + "license": "MIT", "engines": { - "node": "*" + "node": ">= 14.16" } }, "node_modules/pbkdf2": { @@ -6440,7 +6471,6 @@ "resolved": "https://registry.npmjs.org/type-detect/-/type-detect-4.1.0.tgz", "integrity": "sha512-Acylog8/luQ8L7il+geoSxhEkazvkslg7PSNKOX59mbB9cOveP5aq9h74Y7YU8yDpJwetzQQrfIwtf4Wp4LKcw==", "dev": true, - "peer": true, "engines": { "node": ">=4" } diff --git a/challenge-1-vesting/package.json b/challenge-1-vesting/package.json index e3d28da..d2a3b7a 100644 --- a/challenge-1-vesting/package.json +++ b/challenge-1-vesting/package.json @@ -10,8 +10,11 @@ "license": "ISC", "description": "", "devDependencies": { + "@nomicfoundation/hardhat-chai-matchers": "^2.0.8", "@nomicfoundation/hardhat-toolbox": "^5.0.0", - "hardhat": "^2.22.17" + "@types/chai": "^5.2.1", + "chai": "^5.2.0", + "hardhat": "^2.22.19" }, "dependencies": { "@nomicfoundation/hardhat-ignition": "^0.15.8", diff --git a/challenge-1-vesting/pnpm-lock.yaml b/challenge-1-vesting/pnpm-lock.yaml index 8948a73..fe919cb 100644 --- a/challenge-1-vesting/pnpm-lock.yaml +++ b/challenge-1-vesting/pnpm-lock.yaml @@ -22,7 +22,7 @@ importers: specifier: ^5.0.0 version: 5.0.0(b97983278a443d774ac498131468112c) hardhat: - specifier: ^2.22.17 + specifier: ^2.22.19 version: 2.22.19(ts-node@10.9.2(@types/node@22.14.0)(typescript@5.8.3))(typescript@5.8.3) packages: From 2ade3a5783d054c971b7ca7a59a87f6076b8d664 Mon Sep 17 00:00:00 2001 From: notlongfen Date: Wed, 16 Apr 2025 21:33:50 +0700 Subject: [PATCH 3/3] Done challenge 2 (All test passed) --- .gitignore | 1 + challenge-1-vesting/.gitignore | 1 + .../TokenVesting#mock_token.dbg.json | 4 - .../VestingModule#simple_token.dbg.json | 2 +- .../artifacts/VestingModule#simple_token.json | 111 +- .../98f1554be46227c65584aeb4365f9bd8.json | 24527 ------ ... => babaac433f2eb48d04e0121b0389f5c3.json} | 62756 +++++++++------- .../deployments/chain-420420421/journal.jsonl | 6 +- .../ignition/modules/token-vesting.ts | 4 +- challenge-2-yield-farm/.gitignore | 1 + challenge-2-yield-farm/contracts/yeild.sol | 105 + challenge-2-yield-farm/package.json | 6 +- 12 files changed, 36870 insertions(+), 50654 deletions(-) create mode 100644 .gitignore delete mode 100644 challenge-1-vesting/ignition/deployments/chain-420420421/artifacts/TokenVesting#mock_token.dbg.json delete mode 100644 challenge-1-vesting/ignition/deployments/chain-420420421/build-info/98f1554be46227c65584aeb4365f9bd8.json rename challenge-1-vesting/ignition/deployments/chain-420420421/build-info/{06550302e1057daf43893bd4ca520496.json => babaac433f2eb48d04e0121b0389f5c3.json} (61%) diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..45784b0 --- /dev/null +++ b/.gitignore @@ -0,0 +1 @@ +.qodo diff --git a/challenge-1-vesting/.gitignore b/challenge-1-vesting/.gitignore index 5ec3fb0..a05354d 100644 --- a/challenge-1-vesting/.gitignore +++ b/challenge-1-vesting/.gitignore @@ -16,3 +16,4 @@ node_modules # Hardhat Ignition default folder for deployments against a local node ignition/deployments/chain-31337 .qodo +.env \ No newline at end of file diff --git a/challenge-1-vesting/ignition/deployments/chain-420420421/artifacts/TokenVesting#mock_token.dbg.json b/challenge-1-vesting/ignition/deployments/chain-420420421/artifacts/TokenVesting#mock_token.dbg.json deleted file mode 100644 index 0c0a01c..0000000 --- a/challenge-1-vesting/ignition/deployments/chain-420420421/artifacts/TokenVesting#mock_token.dbg.json +++ /dev/null @@ -1,4 +0,0 @@ -{ - "_format": "hh-sol-dbg-1", - "buildInfo": "../build-info/06550302e1057daf43893bd4ca520496.json" -} \ No newline at end of file diff --git a/challenge-1-vesting/ignition/deployments/chain-420420421/artifacts/VestingModule#simple_token.dbg.json b/challenge-1-vesting/ignition/deployments/chain-420420421/artifacts/VestingModule#simple_token.dbg.json index 127bd78..bb86dc7 100644 --- a/challenge-1-vesting/ignition/deployments/chain-420420421/artifacts/VestingModule#simple_token.dbg.json +++ b/challenge-1-vesting/ignition/deployments/chain-420420421/artifacts/VestingModule#simple_token.dbg.json @@ -1,4 +1,4 @@ { "_format": "hh-sol-dbg-1", - "buildInfo": "../build-info/98f1554be46227c65584aeb4365f9bd8.json" + "buildInfo": "../build-info/babaac433f2eb48d04e0121b0389f5c3.json" } \ No newline at end of file diff --git a/challenge-1-vesting/ignition/deployments/chain-420420421/artifacts/VestingModule#simple_token.json b/challenge-1-vesting/ignition/deployments/chain-420420421/artifacts/VestingModule#simple_token.json index 7a5d579..e00ebe2 100644 --- a/challenge-1-vesting/ignition/deployments/chain-420420421/artifacts/VestingModule#simple_token.json +++ b/challenge-1-vesting/ignition/deployments/chain-420420421/artifacts/VestingModule#simple_token.json @@ -1,10 +1,21 @@ { "_format": "hh-sol-artifact-1", - "contractName": "SimpleToken", + "contractName": "MockERC20", "sourceName": "contracts/token.sol", "abi": [ { - "inputs": [], + "inputs": [ + { + "internalType": "string", + "name": "name", + "type": "string" + }, + { + "internalType": "string", + "name": "symbol", + "type": "string" + } + ], "stateMutability": "nonpayable", "type": "constructor" }, @@ -94,6 +105,28 @@ "name": "ERC20InvalidSpender", "type": "error" }, + { + "inputs": [ + { + "internalType": "address", + "name": "owner", + "type": "address" + } + ], + "name": "OwnableInvalidOwner", + "type": "error" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "account", + "type": "address" + } + ], + "name": "OwnableUnauthorizedAccount", + "type": "error" + }, { "anonymous": false, "inputs": [ @@ -119,6 +152,25 @@ "name": "Approval", "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": [ @@ -224,6 +276,24 @@ "stateMutability": "view", "type": "function" }, + { + "inputs": [ + { + "internalType": "address", + "name": "to", + "type": "address" + }, + { + "internalType": "uint256", + "name": "amount", + "type": "uint256" + } + ], + "name": "mint", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, { "inputs": [], "name": "name", @@ -237,6 +307,26 @@ "stateMutability": "view", "type": "function" }, + { + "inputs": [], + "name": "owner", + "outputs": [ + { + "internalType": "address", + "name": "", + "type": "address" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "renounceOwnership", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, { "inputs": [], "name": "symbol", @@ -315,10 +405,23 @@ ], "stateMutability": "nonpayable", "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "newOwner", + "type": "address" + } + ], + "name": "transferOwnership", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" } ], - "bytecode": "0x60806040523480156200001157600080fd5b506040518060400160405280600c81526020016b29b4b6b83632902a37b5b2b760a11b8152506040518060400160405280600381526020016253544b60e81b8152508160039081620000649190620002d2565b506004620000738282620002d2565b505050620000ad336200008b620000b360201b60201c565b6200009890600a620004b3565b620000a790620f4240620004cb565b620000b8565b620004fb565b601290565b6001600160a01b038216620000e85760405163ec442f0560e01b8152600060048201526024015b60405180910390fd5b620000f660008383620000fa565b5050565b6001600160a01b038316620001295780600260008282546200011d9190620004e5565b909155506200019d9050565b6001600160a01b038316600090815260208190526040902054818110156200017e5760405163391434e360e21b81526001600160a01b03851660048201526024810182905260448101839052606401620000df565b6001600160a01b03841660009081526020819052604090209082900390555b6001600160a01b038216620001bb57600280548290039055620001da565b6001600160a01b03821660009081526020819052604090208054820190555b816001600160a01b0316836001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040516200022091815260200190565b60405180910390a3505050565b634e487b7160e01b600052604160045260246000fd5b600181811c908216806200025857607f821691505b6020821081036200027957634e487b7160e01b600052602260045260246000fd5b50919050565b601f821115620002cd57600081815260208120601f850160051c81016020861015620002a85750805b601f850160051c820191505b81811015620002c957828155600101620002b4565b5050505b505050565b81516001600160401b03811115620002ee57620002ee6200022d565b6200030681620002ff845462000243565b846200027f565b602080601f8311600181146200033e5760008415620003255750858301515b600019600386901b1c1916600185901b178555620002c9565b600085815260208120601f198616915b828110156200036f578886015182559484019460019091019084016200034e565b50858210156200038e5787850151600019600388901b60f8161c191681555b5050505050600190811b01905550565b634e487b7160e01b600052601160045260246000fd5b600181815b80851115620003f5578160001904821115620003d957620003d96200039e565b80851615620003e757918102915b93841c9390800290620003b9565b509250929050565b6000826200040e57506001620004ad565b816200041d57506000620004ad565b8160018114620004365760028114620004415762000461565b6001915050620004ad565b60ff8411156200045557620004556200039e565b50506001821b620004ad565b5060208310610133831016604e8410600b841016171562000486575081810a620004ad565b620004928383620003b4565b8060001904821115620004a957620004a96200039e565b0290505b92915050565b6000620004c460ff841683620003fd565b9392505050565b8082028115828204841417620004ad57620004ad6200039e565b80820180821115620004ad57620004ad6200039e565b610710806200050b6000396000f3fe608060405234801561001057600080fd5b50600436106100835760003560e01c806306fdde0314610088578063095ea7b3146100a657806318160ddd146100c957806323b872dd146100db578063313ce567146100ee57806370a08231146100fd57806395d89b4114610126578063a9059cbb1461012e578063dd62ed3e14610141575b600080fd5b610090610154565b60405161009d9190610525565b60405180910390f35b6100b96100b436600461058f565b6101e6565b604051901515815260200161009d565b6002545b60405190815260200161009d565b6100b96100e93660046105b9565b610200565b6040516012815260200161009d565b6100cd61010b3660046105f5565b6001600160a01b031660009081526020819052604090205490565b610090610224565b6100b961013c36600461058f565b610233565b6100cd61014f366004610617565b610241565b6060600380546101639061064a565b80601f016020809104026020016040519081016040528092919081815260200182805461018f9061064a565b80156101dc5780601f106101b1576101008083540402835291602001916101dc565b820191906000526020600020905b8154815290600101906020018083116101bf57829003601f168201915b5050505050905090565b6000336101f481858561026c565b60019150505b92915050565b60003361020e85828561027e565b6102198585856102da565b506001949350505050565b6060600480546101639061064a565b6000336101f48185856102da565b6001600160a01b03918216600090815260016020908152604080832093909416825291909152205490565b6102798383836001610339565b505050565b600061028a8484610241565b905060001981146102d457818110156102c557828183604051637dc7a0d960e11b81526004016102bc93929190610684565b60405180910390fd5b6102d484848484036000610339565b50505050565b6001600160a01b038316610304576000604051634b637e8f60e11b81526004016102bc91906106a5565b6001600160a01b03821661032e57600060405163ec442f0560e01b81526004016102bc91906106a5565b61027983838361040e565b6001600160a01b03841661036357600060405163e602df0560e01b81526004016102bc91906106a5565b6001600160a01b03831661038d576000604051634a1406b160e11b81526004016102bc91906106a5565b6001600160a01b03808516600090815260016020908152604080832093871683529290522082905580156102d457826001600160a01b0316846001600160a01b03167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9258460405161040091815260200190565b60405180910390a350505050565b6001600160a01b03831661043957806002600082825461042e91906106b9565b909155506104989050565b6001600160a01b038316600090815260208190526040902054818110156104795783818360405163391434e360e21b81526004016102bc93929190610684565b6001600160a01b03841660009081526020819052604090209082900390555b6001600160a01b0382166104b4576002805482900390556104d3565b6001600160a01b03821660009081526020819052604090208054820190555b816001600160a01b0316836001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8360405161051891815260200190565b60405180910390a3505050565b600060208083528351808285015260005b8181101561055257858101830151858201604001528201610536565b506000604082860101526040601f19601f8301168501019250505092915050565b80356001600160a01b038116811461058a57600080fd5b919050565b600080604083850312156105a257600080fd5b6105ab83610573565b946020939093013593505050565b6000806000606084860312156105ce57600080fd5b6105d784610573565b92506105e560208501610573565b9150604084013590509250925092565b60006020828403121561060757600080fd5b61061082610573565b9392505050565b6000806040838503121561062a57600080fd5b61063383610573565b915061064160208401610573565b90509250929050565b600181811c9082168061065e57607f821691505b60208210810361067e57634e487b7160e01b600052602260045260246000fd5b50919050565b6001600160a01b039390931683526020830191909152604082015260600190565b6001600160a01b0391909116815260200190565b808201808211156101fa57634e487b7160e01b600052601160045260246000fdfea2646970667358221220971c0411aa52274b5b193f98b7e4a9e2e3b85d9474dd56b20a8924d5daa020dc64736f6c63430008140033", - "deployedBytecode": "0x608060405234801561001057600080fd5b50600436106100835760003560e01c806306fdde0314610088578063095ea7b3146100a657806318160ddd146100c957806323b872dd146100db578063313ce567146100ee57806370a08231146100fd57806395d89b4114610126578063a9059cbb1461012e578063dd62ed3e14610141575b600080fd5b610090610154565b60405161009d9190610525565b60405180910390f35b6100b96100b436600461058f565b6101e6565b604051901515815260200161009d565b6002545b60405190815260200161009d565b6100b96100e93660046105b9565b610200565b6040516012815260200161009d565b6100cd61010b3660046105f5565b6001600160a01b031660009081526020819052604090205490565b610090610224565b6100b961013c36600461058f565b610233565b6100cd61014f366004610617565b610241565b6060600380546101639061064a565b80601f016020809104026020016040519081016040528092919081815260200182805461018f9061064a565b80156101dc5780601f106101b1576101008083540402835291602001916101dc565b820191906000526020600020905b8154815290600101906020018083116101bf57829003601f168201915b5050505050905090565b6000336101f481858561026c565b60019150505b92915050565b60003361020e85828561027e565b6102198585856102da565b506001949350505050565b6060600480546101639061064a565b6000336101f48185856102da565b6001600160a01b03918216600090815260016020908152604080832093909416825291909152205490565b6102798383836001610339565b505050565b600061028a8484610241565b905060001981146102d457818110156102c557828183604051637dc7a0d960e11b81526004016102bc93929190610684565b60405180910390fd5b6102d484848484036000610339565b50505050565b6001600160a01b038316610304576000604051634b637e8f60e11b81526004016102bc91906106a5565b6001600160a01b03821661032e57600060405163ec442f0560e01b81526004016102bc91906106a5565b61027983838361040e565b6001600160a01b03841661036357600060405163e602df0560e01b81526004016102bc91906106a5565b6001600160a01b03831661038d576000604051634a1406b160e11b81526004016102bc91906106a5565b6001600160a01b03808516600090815260016020908152604080832093871683529290522082905580156102d457826001600160a01b0316846001600160a01b03167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9258460405161040091815260200190565b60405180910390a350505050565b6001600160a01b03831661043957806002600082825461042e91906106b9565b909155506104989050565b6001600160a01b038316600090815260208190526040902054818110156104795783818360405163391434e360e21b81526004016102bc93929190610684565b6001600160a01b03841660009081526020819052604090209082900390555b6001600160a01b0382166104b4576002805482900390556104d3565b6001600160a01b03821660009081526020819052604090208054820190555b816001600160a01b0316836001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8360405161051891815260200190565b60405180910390a3505050565b600060208083528351808285015260005b8181101561055257858101830151858201604001528201610536565b506000604082860101526040601f19601f8301168501019250505092915050565b80356001600160a01b038116811461058a57600080fd5b919050565b600080604083850312156105a257600080fd5b6105ab83610573565b946020939093013593505050565b6000806000606084860312156105ce57600080fd5b6105d784610573565b92506105e560208501610573565b9150604084013590509250925092565b60006020828403121561060757600080fd5b61061082610573565b9392505050565b6000806040838503121561062a57600080fd5b61063383610573565b915061064160208401610573565b90509250929050565b600181811c9082168061065e57607f821691505b60208210810361067e57634e487b7160e01b600052602260045260246000fd5b50919050565b6001600160a01b039390931683526020830191909152604082015260600190565b6001600160a01b0391909116815260200190565b808201808211156101fa57634e487b7160e01b600052601160045260246000fdfea2646970667358221220971c0411aa52274b5b193f98b7e4a9e2e3b85d9474dd56b20a8924d5daa020dc64736f6c63430008140033", + "bytecode": "0x60806040523480156200001157600080fd5b5060405162000c4a38038062000c4a8339810160408190526200003491620001b1565b3382826003620000458382620002aa565b506004620000548282620002aa565b5050506001600160a01b0381166200008657604051631e4fbdf760e01b81526000600482015260240160405180910390fd5b62000091816200009a565b50505062000376565b600580546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b634e487b7160e01b600052604160045260246000fd5b600082601f8301126200011457600080fd5b81516001600160401b0380821115620001315762000131620000ec565b604051601f8301601f19908116603f011681019082821181831017156200015c576200015c620000ec565b816040528381526020925086838588010111156200017957600080fd5b600091505b838210156200019d57858201830151818301840152908201906200017e565b600093810190920192909252949350505050565b60008060408385031215620001c557600080fd5b82516001600160401b0380821115620001dd57600080fd5b620001eb8683870162000102565b935060208501519150808211156200020257600080fd5b50620002118582860162000102565b9150509250929050565b600181811c908216806200023057607f821691505b6020821081036200025157634e487b7160e01b600052602260045260246000fd5b50919050565b601f821115620002a557600081815260208120601f850160051c81016020861015620002805750805b601f850160051c820191505b81811015620002a1578281556001016200028c565b5050505b505050565b81516001600160401b03811115620002c657620002c6620000ec565b620002de81620002d784546200021b565b8462000257565b602080601f831160018114620003165760008415620002fd5750858301515b600019600386901b1c1916600185901b178555620002a1565b600085815260208120601f198616915b82811015620003475788860151825594840194600190910190840162000326565b5085821015620003665787850151600019600388901b60f8161c191681555b5050505050600190811b01905550565b6108c480620003866000396000f3fe608060405234801561001057600080fd5b50600436106100cf5760003560e01c806370a082311161008c57806395d89b411161006657806395d89b41146101aa578063a9059cbb146101b2578063dd62ed3e146101c5578063f2fde38b146101fe57600080fd5b806370a082311461015e578063715018a6146101875780638da5cb5b1461018f57600080fd5b806306fdde03146100d4578063095ea7b3146100f257806318160ddd1461011557806323b872dd14610127578063313ce5671461013a57806340c10f1914610149575b600080fd5b6100dc610211565b6040516100e9919061070e565b60405180910390f35b610105610100366004610778565b6102a3565b60405190151581526020016100e9565b6002545b6040519081526020016100e9565b6101056101353660046107a2565b6102bd565b604051601281526020016100e9565b61015c610157366004610778565b6102e1565b005b61011961016c3660046107de565b6001600160a01b031660009081526020819052604090205490565b61015c6102f7565b6005546040516001600160a01b0390911681526020016100e9565b6100dc61030b565b6101056101c0366004610778565b61031a565b6101196101d3366004610800565b6001600160a01b03918216600090815260016020908152604080832093909416825291909152205490565b61015c61020c3660046107de565b610328565b60606003805461022090610833565b80601f016020809104026020016040519081016040528092919081815260200182805461024c90610833565b80156102995780601f1061026e57610100808354040283529160200191610299565b820191906000526020600020905b81548152906001019060200180831161027c57829003601f168201915b5050505050905090565b6000336102b181858561036b565b60019150505b92915050565b6000336102cb85828561037d565b6102d68585856103fb565b506001949350505050565b6102e961045a565b6102f38282610487565b5050565b6102ff61045a565b61030960006104bd565b565b60606004805461022090610833565b6000336102b18185856103fb565b61033061045a565b6001600160a01b03811661035f57604051631e4fbdf760e01b8152600060048201526024015b60405180910390fd5b610368816104bd565b50565b610378838383600161050f565b505050565b6001600160a01b0383811660009081526001602090815260408083209386168352929052205460001981146103f557818110156103e657604051637dc7a0d960e11b81526001600160a01b03841660048201526024810182905260448101839052606401610356565b6103f58484848403600061050f565b50505050565b6001600160a01b03831661042557604051634b637e8f60e11b815260006004820152602401610356565b6001600160a01b03821661044f5760405163ec442f0560e01b815260006004820152602401610356565b6103788383836105e4565b6005546001600160a01b031633146103095760405163118cdaa760e01b8152336004820152602401610356565b6001600160a01b0382166104b15760405163ec442f0560e01b815260006004820152602401610356565b6102f3600083836105e4565b600580546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b6001600160a01b0384166105395760405163e602df0560e01b815260006004820152602401610356565b6001600160a01b03831661056357604051634a1406b160e11b815260006004820152602401610356565b6001600160a01b03808516600090815260016020908152604080832093871683529290522082905580156103f557826001600160a01b0316846001600160a01b03167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925846040516105d691815260200190565b60405180910390a350505050565b6001600160a01b03831661060f578060026000828254610604919061086d565b909155506106819050565b6001600160a01b038316600090815260208190526040902054818110156106625760405163391434e360e21b81526001600160a01b03851660048201526024810182905260448101839052606401610356565b6001600160a01b03841660009081526020819052604090209082900390555b6001600160a01b03821661069d576002805482900390556106bc565b6001600160a01b03821660009081526020819052604090208054820190555b816001600160a01b0316836001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8360405161070191815260200190565b60405180910390a3505050565b600060208083528351808285015260005b8181101561073b5785810183015185820160400152820161071f565b506000604082860101526040601f19601f8301168501019250505092915050565b80356001600160a01b038116811461077357600080fd5b919050565b6000806040838503121561078b57600080fd5b6107948361075c565b946020939093013593505050565b6000806000606084860312156107b757600080fd5b6107c08461075c565b92506107ce6020850161075c565b9150604084013590509250925092565b6000602082840312156107f057600080fd5b6107f98261075c565b9392505050565b6000806040838503121561081357600080fd5b61081c8361075c565b915061082a6020840161075c565b90509250929050565b600181811c9082168061084757607f821691505b60208210810361086757634e487b7160e01b600052602260045260246000fd5b50919050565b808201808211156102b757634e487b7160e01b600052601160045260246000fdfea26469706673582212207e02bff7c92f01729cf8b1aa0b1f4bc1de2f54967781bde4fef96819d035982264736f6c63430008140033", + "deployedBytecode": "0x608060405234801561001057600080fd5b50600436106100cf5760003560e01c806370a082311161008c57806395d89b411161006657806395d89b41146101aa578063a9059cbb146101b2578063dd62ed3e146101c5578063f2fde38b146101fe57600080fd5b806370a082311461015e578063715018a6146101875780638da5cb5b1461018f57600080fd5b806306fdde03146100d4578063095ea7b3146100f257806318160ddd1461011557806323b872dd14610127578063313ce5671461013a57806340c10f1914610149575b600080fd5b6100dc610211565b6040516100e9919061070e565b60405180910390f35b610105610100366004610778565b6102a3565b60405190151581526020016100e9565b6002545b6040519081526020016100e9565b6101056101353660046107a2565b6102bd565b604051601281526020016100e9565b61015c610157366004610778565b6102e1565b005b61011961016c3660046107de565b6001600160a01b031660009081526020819052604090205490565b61015c6102f7565b6005546040516001600160a01b0390911681526020016100e9565b6100dc61030b565b6101056101c0366004610778565b61031a565b6101196101d3366004610800565b6001600160a01b03918216600090815260016020908152604080832093909416825291909152205490565b61015c61020c3660046107de565b610328565b60606003805461022090610833565b80601f016020809104026020016040519081016040528092919081815260200182805461024c90610833565b80156102995780601f1061026e57610100808354040283529160200191610299565b820191906000526020600020905b81548152906001019060200180831161027c57829003601f168201915b5050505050905090565b6000336102b181858561036b565b60019150505b92915050565b6000336102cb85828561037d565b6102d68585856103fb565b506001949350505050565b6102e961045a565b6102f38282610487565b5050565b6102ff61045a565b61030960006104bd565b565b60606004805461022090610833565b6000336102b18185856103fb565b61033061045a565b6001600160a01b03811661035f57604051631e4fbdf760e01b8152600060048201526024015b60405180910390fd5b610368816104bd565b50565b610378838383600161050f565b505050565b6001600160a01b0383811660009081526001602090815260408083209386168352929052205460001981146103f557818110156103e657604051637dc7a0d960e11b81526001600160a01b03841660048201526024810182905260448101839052606401610356565b6103f58484848403600061050f565b50505050565b6001600160a01b03831661042557604051634b637e8f60e11b815260006004820152602401610356565b6001600160a01b03821661044f5760405163ec442f0560e01b815260006004820152602401610356565b6103788383836105e4565b6005546001600160a01b031633146103095760405163118cdaa760e01b8152336004820152602401610356565b6001600160a01b0382166104b15760405163ec442f0560e01b815260006004820152602401610356565b6102f3600083836105e4565b600580546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b6001600160a01b0384166105395760405163e602df0560e01b815260006004820152602401610356565b6001600160a01b03831661056357604051634a1406b160e11b815260006004820152602401610356565b6001600160a01b03808516600090815260016020908152604080832093871683529290522082905580156103f557826001600160a01b0316846001600160a01b03167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925846040516105d691815260200190565b60405180910390a350505050565b6001600160a01b03831661060f578060026000828254610604919061086d565b909155506106819050565b6001600160a01b038316600090815260208190526040902054818110156106625760405163391434e360e21b81526001600160a01b03851660048201526024810182905260448101839052606401610356565b6001600160a01b03841660009081526020819052604090209082900390555b6001600160a01b03821661069d576002805482900390556106bc565b6001600160a01b03821660009081526020819052604090208054820190555b816001600160a01b0316836001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8360405161070191815260200190565b60405180910390a3505050565b600060208083528351808285015260005b8181101561073b5785810183015185820160400152820161071f565b506000604082860101526040601f19601f8301168501019250505092915050565b80356001600160a01b038116811461077357600080fd5b919050565b6000806040838503121561078b57600080fd5b6107948361075c565b946020939093013593505050565b6000806000606084860312156107b757600080fd5b6107c08461075c565b92506107ce6020850161075c565b9150604084013590509250925092565b6000602082840312156107f057600080fd5b6107f98261075c565b9392505050565b6000806040838503121561081357600080fd5b61081c8361075c565b915061082a6020840161075c565b90509250929050565b600181811c9082168061084757607f821691505b60208210810361086757634e487b7160e01b600052602260045260246000fd5b50919050565b808201808211156102b757634e487b7160e01b600052601160045260246000fdfea26469706673582212207e02bff7c92f01729cf8b1aa0b1f4bc1de2f54967781bde4fef96819d035982264736f6c63430008140033", "linkReferences": {}, "deployedLinkReferences": {} } \ No newline at end of file diff --git a/challenge-1-vesting/ignition/deployments/chain-420420421/build-info/98f1554be46227c65584aeb4365f9bd8.json b/challenge-1-vesting/ignition/deployments/chain-420420421/build-info/98f1554be46227c65584aeb4365f9bd8.json deleted file mode 100644 index e446e98..0000000 --- a/challenge-1-vesting/ignition/deployments/chain-420420421/build-info/98f1554be46227c65584aeb4365f9bd8.json +++ /dev/null @@ -1,24527 +0,0 @@ -{ - "id": "98f1554be46227c65584aeb4365f9bd8", - "_format": "hh-sol-build-info-1", - "solcVersion": "0.8.20", - "solcLongVersion": "0.8.20+commit.a1b79de6", - "input": { - "language": "Solidity", - "sources": { - "@openzeppelin/contracts/interfaces/draft-IERC6093.sol": { - "content": "// SPDX-License-Identifier: MIT\n// OpenZeppelin Contracts (last updated v5.1.0) (interfaces/draft-IERC6093.sol)\npragma solidity ^0.8.20;\n\n/**\n * @dev Standard ERC-20 Errors\n * Interface of the https://eips.ethereum.org/EIPS/eip-6093[ERC-6093] custom errors for ERC-20 tokens.\n */\ninterface IERC20Errors {\n /**\n * @dev Indicates an error related to the current `balance` of a `sender`. Used in transfers.\n * @param sender Address whose tokens are being transferred.\n * @param balance Current balance for the interacting account.\n * @param needed Minimum amount required to perform a transfer.\n */\n error ERC20InsufficientBalance(address sender, uint256 balance, uint256 needed);\n\n /**\n * @dev Indicates a failure with the token `sender`. Used in transfers.\n * @param sender Address whose tokens are being transferred.\n */\n error ERC20InvalidSender(address sender);\n\n /**\n * @dev Indicates a failure with the token `receiver`. Used in transfers.\n * @param receiver Address to which tokens are being transferred.\n */\n error ERC20InvalidReceiver(address receiver);\n\n /**\n * @dev Indicates a failure with the `spender`’s `allowance`. Used in transfers.\n * @param spender Address that may be allowed to operate on tokens without being their owner.\n * @param allowance Amount of tokens a `spender` is allowed to operate with.\n * @param needed Minimum amount required to perform a transfer.\n */\n error ERC20InsufficientAllowance(address spender, uint256 allowance, uint256 needed);\n\n /**\n * @dev Indicates a failure with the `approver` of a token to be approved. Used in approvals.\n * @param approver Address initiating an approval operation.\n */\n error ERC20InvalidApprover(address approver);\n\n /**\n * @dev Indicates a failure with the `spender` to be approved. Used in approvals.\n * @param spender Address that may be allowed to operate on tokens without being their owner.\n */\n error ERC20InvalidSpender(address spender);\n}\n\n/**\n * @dev Standard ERC-721 Errors\n * Interface of the https://eips.ethereum.org/EIPS/eip-6093[ERC-6093] custom errors for ERC-721 tokens.\n */\ninterface IERC721Errors {\n /**\n * @dev Indicates that an address can't be an owner. For example, `address(0)` is a forbidden owner in ERC-20.\n * Used in balance queries.\n * @param owner Address of the current owner of a token.\n */\n error ERC721InvalidOwner(address owner);\n\n /**\n * @dev Indicates a `tokenId` whose `owner` is the zero address.\n * @param tokenId Identifier number of a token.\n */\n error ERC721NonexistentToken(uint256 tokenId);\n\n /**\n * @dev Indicates an error related to the ownership over a particular token. Used in transfers.\n * @param sender Address whose tokens are being transferred.\n * @param tokenId Identifier number of a token.\n * @param owner Address of the current owner of a token.\n */\n error ERC721IncorrectOwner(address sender, uint256 tokenId, address owner);\n\n /**\n * @dev Indicates a failure with the token `sender`. Used in transfers.\n * @param sender Address whose tokens are being transferred.\n */\n error ERC721InvalidSender(address sender);\n\n /**\n * @dev Indicates a failure with the token `receiver`. Used in transfers.\n * @param receiver Address to which tokens are being transferred.\n */\n error ERC721InvalidReceiver(address receiver);\n\n /**\n * @dev Indicates a failure with the `operator`’s approval. Used in transfers.\n * @param operator Address that may be allowed to operate on tokens without being their owner.\n * @param tokenId Identifier number of a token.\n */\n error ERC721InsufficientApproval(address operator, uint256 tokenId);\n\n /**\n * @dev Indicates a failure with the `approver` of a token to be approved. Used in approvals.\n * @param approver Address initiating an approval operation.\n */\n error ERC721InvalidApprover(address approver);\n\n /**\n * @dev Indicates a failure with the `operator` to be approved. Used in approvals.\n * @param operator Address that may be allowed to operate on tokens without being their owner.\n */\n error ERC721InvalidOperator(address operator);\n}\n\n/**\n * @dev Standard ERC-1155 Errors\n * Interface of the https://eips.ethereum.org/EIPS/eip-6093[ERC-6093] custom errors for ERC-1155 tokens.\n */\ninterface IERC1155Errors {\n /**\n * @dev Indicates an error related to the current `balance` of a `sender`. Used in transfers.\n * @param sender Address whose tokens are being transferred.\n * @param balance Current balance for the interacting account.\n * @param needed Minimum amount required to perform a transfer.\n * @param tokenId Identifier number of a token.\n */\n error ERC1155InsufficientBalance(address sender, uint256 balance, uint256 needed, uint256 tokenId);\n\n /**\n * @dev Indicates a failure with the token `sender`. Used in transfers.\n * @param sender Address whose tokens are being transferred.\n */\n error ERC1155InvalidSender(address sender);\n\n /**\n * @dev Indicates a failure with the token `receiver`. Used in transfers.\n * @param receiver Address to which tokens are being transferred.\n */\n error ERC1155InvalidReceiver(address receiver);\n\n /**\n * @dev Indicates a failure with the `operator`’s approval. Used in transfers.\n * @param operator Address that may be allowed to operate on tokens without being their owner.\n * @param owner Address of the current owner of a token.\n */\n error ERC1155MissingApprovalForAll(address operator, address owner);\n\n /**\n * @dev Indicates a failure with the `approver` of a token to be approved. Used in approvals.\n * @param approver Address initiating an approval operation.\n */\n error ERC1155InvalidApprover(address approver);\n\n /**\n * @dev Indicates a failure with the `operator` to be approved. Used in approvals.\n * @param operator Address that may be allowed to operate on tokens without being their owner.\n */\n error ERC1155InvalidOperator(address operator);\n\n /**\n * @dev Indicates an array length mismatch between ids and values in a safeBatchTransferFrom operation.\n * Used in batch transfers.\n * @param idsLength Length of the array of token identifiers\n * @param valuesLength Length of the array of token amounts\n */\n error ERC1155InvalidArrayLength(uint256 idsLength, uint256 valuesLength);\n}\n" - }, - "@openzeppelin/contracts/token/ERC20/ERC20.sol": { - "content": "// SPDX-License-Identifier: MIT\n// OpenZeppelin Contracts (last updated v5.1.0) (token/ERC20/ERC20.sol)\n\npragma solidity ^0.8.20;\n\nimport {IERC20} from \"./IERC20.sol\";\nimport {IERC20Metadata} from \"./extensions/IERC20Metadata.sol\";\nimport {Context} from \"../../utils/Context.sol\";\nimport {IERC20Errors} from \"../../interfaces/draft-IERC6093.sol\";\n\n/**\n * @dev Implementation of the {IERC20} interface.\n *\n * This implementation is agnostic to the way tokens are created. This means\n * that a supply mechanism has to be added in a derived contract using {_mint}.\n *\n * TIP: For a detailed writeup see our guide\n * https://forum.openzeppelin.com/t/how-to-implement-erc20-supply-mechanisms/226[How\n * to implement supply mechanisms].\n *\n * The default value of {decimals} is 18. To change this, you should override\n * this function so it returns a different value.\n *\n * We have followed general OpenZeppelin Contracts guidelines: functions revert\n * instead returning `false` on failure. This behavior is nonetheless\n * conventional and does not conflict with the expectations of ERC-20\n * applications.\n */\nabstract contract ERC20 is Context, IERC20, IERC20Metadata, IERC20Errors {\n mapping(address account => uint256) private _balances;\n\n mapping(address account => mapping(address spender => uint256)) private _allowances;\n\n uint256 private _totalSupply;\n\n string private _name;\n string private _symbol;\n\n /**\n * @dev Sets the values for {name} and {symbol}.\n *\n * All two of these values are immutable: they can only be set once during\n * construction.\n */\n constructor(string memory name_, string memory symbol_) {\n _name = name_;\n _symbol = symbol_;\n }\n\n /**\n * @dev Returns the name of the token.\n */\n function name() public view virtual returns (string memory) {\n return _name;\n }\n\n /**\n * @dev Returns the symbol of the token, usually a shorter version of the\n * name.\n */\n function symbol() public view virtual returns (string memory) {\n return _symbol;\n }\n\n /**\n * @dev Returns the number of decimals used to get its user representation.\n * For example, if `decimals` equals `2`, a balance of `505` tokens should\n * be displayed to a user as `5.05` (`505 / 10 ** 2`).\n *\n * Tokens usually opt for a value of 18, imitating the relationship between\n * Ether and Wei. This is the default value returned by this function, unless\n * it's overridden.\n *\n * NOTE: This information is only used for _display_ purposes: it in\n * no way affects any of the arithmetic of the contract, including\n * {IERC20-balanceOf} and {IERC20-transfer}.\n */\n function decimals() public view virtual returns (uint8) {\n return 18;\n }\n\n /**\n * @dev See {IERC20-totalSupply}.\n */\n function totalSupply() public view virtual returns (uint256) {\n return _totalSupply;\n }\n\n /**\n * @dev See {IERC20-balanceOf}.\n */\n function balanceOf(address account) public view virtual returns (uint256) {\n return _balances[account];\n }\n\n /**\n * @dev See {IERC20-transfer}.\n *\n * Requirements:\n *\n * - `to` cannot be the zero address.\n * - the caller must have a balance of at least `value`.\n */\n function transfer(address to, uint256 value) public virtual returns (bool) {\n address owner = _msgSender();\n _transfer(owner, to, value);\n return true;\n }\n\n /**\n * @dev See {IERC20-allowance}.\n */\n function allowance(address owner, address spender) public view virtual returns (uint256) {\n return _allowances[owner][spender];\n }\n\n /**\n * @dev See {IERC20-approve}.\n *\n * NOTE: If `value` is the maximum `uint256`, the allowance is not updated on\n * `transferFrom`. This is semantically equivalent to an infinite approval.\n *\n * Requirements:\n *\n * - `spender` cannot be the zero address.\n */\n function approve(address spender, uint256 value) public virtual returns (bool) {\n address owner = _msgSender();\n _approve(owner, spender, value);\n return true;\n }\n\n /**\n * @dev See {IERC20-transferFrom}.\n *\n * Skips emitting an {Approval} event indicating an allowance update. This is not\n * required by the ERC. See {xref-ERC20-_approve-address-address-uint256-bool-}[_approve].\n *\n * NOTE: Does not update the allowance if the current allowance\n * is the maximum `uint256`.\n *\n * Requirements:\n *\n * - `from` and `to` cannot be the zero address.\n * - `from` must have a balance of at least `value`.\n * - the caller must have allowance for ``from``'s tokens of at least\n * `value`.\n */\n function transferFrom(address from, address to, uint256 value) public virtual returns (bool) {\n address spender = _msgSender();\n _spendAllowance(from, spender, value);\n _transfer(from, to, value);\n return true;\n }\n\n /**\n * @dev Moves a `value` amount of tokens from `from` to `to`.\n *\n * This internal function is equivalent to {transfer}, and can be used to\n * e.g. implement automatic token fees, slashing mechanisms, etc.\n *\n * Emits a {Transfer} event.\n *\n * NOTE: This function is not virtual, {_update} should be overridden instead.\n */\n function _transfer(address from, address to, uint256 value) internal {\n if (from == address(0)) {\n revert ERC20InvalidSender(address(0));\n }\n if (to == address(0)) {\n revert ERC20InvalidReceiver(address(0));\n }\n _update(from, to, value);\n }\n\n /**\n * @dev Transfers a `value` amount of tokens from `from` to `to`, or alternatively mints (or burns) if `from`\n * (or `to`) is the zero address. All customizations to transfers, mints, and burns should be done by overriding\n * this function.\n *\n * Emits a {Transfer} event.\n */\n function _update(address from, address to, uint256 value) internal virtual {\n if (from == address(0)) {\n // Overflow check required: The rest of the code assumes that totalSupply never overflows\n _totalSupply += value;\n } else {\n uint256 fromBalance = _balances[from];\n if (fromBalance < value) {\n revert ERC20InsufficientBalance(from, fromBalance, value);\n }\n unchecked {\n // Overflow not possible: value <= fromBalance <= totalSupply.\n _balances[from] = fromBalance - value;\n }\n }\n\n if (to == address(0)) {\n unchecked {\n // Overflow not possible: value <= totalSupply or value <= fromBalance <= totalSupply.\n _totalSupply -= value;\n }\n } else {\n unchecked {\n // Overflow not possible: balance + value is at most totalSupply, which we know fits into a uint256.\n _balances[to] += value;\n }\n }\n\n emit Transfer(from, to, value);\n }\n\n /**\n * @dev Creates a `value` amount of tokens and assigns them to `account`, by transferring it from address(0).\n * Relies on the `_update` mechanism\n *\n * Emits a {Transfer} event with `from` set to the zero address.\n *\n * NOTE: This function is not virtual, {_update} should be overridden instead.\n */\n function _mint(address account, uint256 value) internal {\n if (account == address(0)) {\n revert ERC20InvalidReceiver(address(0));\n }\n _update(address(0), account, value);\n }\n\n /**\n * @dev Destroys a `value` amount of tokens from `account`, lowering the total supply.\n * Relies on the `_update` mechanism.\n *\n * Emits a {Transfer} event with `to` set to the zero address.\n *\n * NOTE: This function is not virtual, {_update} should be overridden instead\n */\n function _burn(address account, uint256 value) internal {\n if (account == address(0)) {\n revert ERC20InvalidSender(address(0));\n }\n _update(account, address(0), value);\n }\n\n /**\n * @dev Sets `value` as the allowance of `spender` over the `owner` s tokens.\n *\n * This internal function is equivalent to `approve`, and can be used to\n * e.g. set automatic allowances for certain subsystems, etc.\n *\n * Emits an {Approval} event.\n *\n * Requirements:\n *\n * - `owner` cannot be the zero address.\n * - `spender` cannot be the zero address.\n *\n * Overrides to this logic should be done to the variant with an additional `bool emitEvent` argument.\n */\n function _approve(address owner, address spender, uint256 value) internal {\n _approve(owner, spender, value, true);\n }\n\n /**\n * @dev Variant of {_approve} with an optional flag to enable or disable the {Approval} event.\n *\n * By default (when calling {_approve}) the flag is set to true. On the other hand, approval changes made by\n * `_spendAllowance` during the `transferFrom` operation set the flag to false. This saves gas by not emitting any\n * `Approval` event during `transferFrom` operations.\n *\n * Anyone who wishes to continue emitting `Approval` events on the`transferFrom` operation can force the flag to\n * true using the following override:\n *\n * ```solidity\n * function _approve(address owner, address spender, uint256 value, bool) internal virtual override {\n * super._approve(owner, spender, value, true);\n * }\n * ```\n *\n * Requirements are the same as {_approve}.\n */\n function _approve(address owner, address spender, uint256 value, bool emitEvent) internal virtual {\n if (owner == address(0)) {\n revert ERC20InvalidApprover(address(0));\n }\n if (spender == address(0)) {\n revert ERC20InvalidSpender(address(0));\n }\n _allowances[owner][spender] = value;\n if (emitEvent) {\n emit Approval(owner, spender, value);\n }\n }\n\n /**\n * @dev Updates `owner` s allowance for `spender` based on spent `value`.\n *\n * Does not update the allowance value in case of infinite allowance.\n * Revert if not enough allowance is available.\n *\n * Does not emit an {Approval} event.\n */\n function _spendAllowance(address owner, address spender, uint256 value) internal virtual {\n uint256 currentAllowance = allowance(owner, spender);\n if (currentAllowance != type(uint256).max) {\n if (currentAllowance < value) {\n revert ERC20InsufficientAllowance(spender, currentAllowance, value);\n }\n unchecked {\n _approve(owner, spender, currentAllowance - value, false);\n }\n }\n }\n}\n" - }, - "@openzeppelin/contracts/token/ERC20/extensions/IERC20Metadata.sol": { - "content": "// SPDX-License-Identifier: MIT\n// OpenZeppelin Contracts (last updated v5.1.0) (token/ERC20/extensions/IERC20Metadata.sol)\n\npragma solidity ^0.8.20;\n\nimport {IERC20} from \"../IERC20.sol\";\n\n/**\n * @dev Interface for the optional metadata functions from the ERC-20 standard.\n */\ninterface IERC20Metadata is IERC20 {\n /**\n * @dev Returns the name of the token.\n */\n function name() external view returns (string memory);\n\n /**\n * @dev Returns the symbol of the token.\n */\n function symbol() external view returns (string memory);\n\n /**\n * @dev Returns the decimals places of the token.\n */\n function decimals() external view returns (uint8);\n}\n" - }, - "@openzeppelin/contracts/token/ERC20/IERC20.sol": { - "content": "// SPDX-License-Identifier: MIT\n// OpenZeppelin Contracts (last updated v5.1.0) (token/ERC20/IERC20.sol)\n\npragma solidity ^0.8.20;\n\n/**\n * @dev Interface of the ERC-20 standard as defined in the ERC.\n */\ninterface IERC20 {\n /**\n * @dev Emitted when `value` tokens are moved from one account (`from`) to\n * another (`to`).\n *\n * Note that `value` may be zero.\n */\n event Transfer(address indexed from, address indexed to, uint256 value);\n\n /**\n * @dev Emitted when the allowance of a `spender` for an `owner` is set by\n * a call to {approve}. `value` is the new allowance.\n */\n event Approval(address indexed owner, address indexed spender, uint256 value);\n\n /**\n * @dev Returns the value of tokens in existence.\n */\n function totalSupply() external view returns (uint256);\n\n /**\n * @dev Returns the value of tokens owned by `account`.\n */\n function balanceOf(address account) external view returns (uint256);\n\n /**\n * @dev Moves a `value` amount of tokens from the caller's account to `to`.\n *\n * Returns a boolean value indicating whether the operation succeeded.\n *\n * Emits a {Transfer} event.\n */\n function transfer(address to, uint256 value) external returns (bool);\n\n /**\n * @dev Returns the remaining number of tokens that `spender` will be\n * allowed to spend on behalf of `owner` through {transferFrom}. This is\n * zero by default.\n *\n * This value changes when {approve} or {transferFrom} are called.\n */\n function allowance(address owner, address spender) external view returns (uint256);\n\n /**\n * @dev Sets a `value` amount of tokens as the allowance of `spender` over the\n * caller's tokens.\n *\n * Returns a boolean value indicating whether the operation succeeded.\n *\n * IMPORTANT: Beware that changing an allowance with this method brings the risk\n * that someone may use both the old and the new allowance by unfortunate\n * transaction ordering. One possible solution to mitigate this race\n * condition is to first reduce the spender's allowance to 0 and set the\n * desired value afterwards:\n * https://github.com/ethereum/EIPs/issues/20#issuecomment-263524729\n *\n * Emits an {Approval} event.\n */\n function approve(address spender, uint256 value) external returns (bool);\n\n /**\n * @dev Moves a `value` amount of tokens from `from` to `to` using the\n * allowance mechanism. `value` is then deducted from the caller's\n * allowance.\n *\n * Returns a boolean value indicating whether the operation succeeded.\n *\n * Emits a {Transfer} event.\n */\n function transferFrom(address from, address to, uint256 value) external returns (bool);\n}\n" - }, - "@openzeppelin/contracts/utils/Context.sol": { - "content": "// SPDX-License-Identifier: MIT\n// OpenZeppelin Contracts (last updated v5.0.1) (utils/Context.sol)\n\npragma solidity ^0.8.20;\n\n/**\n * @dev Provides information about the current execution context, including the\n * sender of the transaction and its data. While these are generally available\n * via msg.sender and msg.data, they should not be accessed in such a direct\n * manner, since when dealing with meta-transactions the account sending and\n * paying for execution may not be the actual sender (as far as an application\n * is concerned).\n *\n * This contract is only required for intermediate, library-like contracts.\n */\nabstract contract Context {\n function _msgSender() internal view virtual returns (address) {\n return msg.sender;\n }\n\n function _msgData() internal view virtual returns (bytes calldata) {\n return msg.data;\n }\n\n function _contextSuffixLength() internal view virtual returns (uint256) {\n return 0;\n }\n}\n" - }, - "contracts/token.sol": { - "content": "// SPDX-License-Identifier: MIT\npragma solidity ^0.8.20;\n\nimport \"@openzeppelin/contracts/token/ERC20/ERC20.sol\";\n\ncontract SimpleToken is ERC20 {\n constructor() ERC20(\"Simple Token\", \"STK\") {\n _mint(msg.sender, 1000000 * 10 ** decimals());\n }\n}\n" - }, - "contracts/TokenVesting.sol": { - "content": "// SPDX-License-Identifier: MIT\npragma solidity ^0.8.20;\n\nimport \"@openzeppelin/contracts/token/ERC20/IERC20.sol\";\n\ncontract SimpleVesting {\n IERC20 public token;\n address public admin;\n\n mapping(address => uint256) public vestedAmount;\n mapping(address => uint256) public vestingEnd;\n\n event VestingCreated(address beneficiary, uint256 amount, uint256 endTime);\n event TokensClaimed(address beneficiary, uint256 amount);\n\n constructor(address _token) {\n token = IERC20(_token);\n admin = msg.sender;\n }\n\n function createVesting(\n address beneficiary,\n uint256 amount,\n uint256 duration\n ) external {\n require(msg.sender == admin, \"Not admin\");\n require(beneficiary != address(0), \"Invalid address\");\n require(amount > 0, \"Invalid amount\");\n\n vestedAmount[beneficiary] = amount;\n vestingEnd[beneficiary] = block.timestamp + duration;\n\n require(\n token.transferFrom(msg.sender, address(this), amount),\n \"Transfer failed\"\n );\n emit VestingCreated(beneficiary, amount, vestingEnd[beneficiary]);\n }\n\n function claim() external {\n require(block.timestamp >= vestingEnd[msg.sender], \"Vesting not ended\");\n uint256 amount = vestedAmount[msg.sender];\n require(amount > 0, \"No tokens to claim\");\n\n vestedAmount[msg.sender] = 0;\n require(token.transfer(msg.sender, amount), \"Transfer failed\");\n emit TokensClaimed(msg.sender, amount);\n }\n}\n" - } - }, - "settings": { - "optimizer": { - "enabled": true, - "runs": 1 - }, - "evmVersion": "london", - "viaIR": false, - "outputSelection": { - "*": { - "*": [ - "abi", - "evm.bytecode", - "evm.deployedBytecode", - "evm.methodIdentifiers", - "metadata" - ], - "": [ - "ast" - ] - } - } - } - }, - "output": { - "sources": { - "@openzeppelin/contracts/interfaces/draft-IERC6093.sol": { - "ast": { - "absolutePath": "@openzeppelin/contracts/interfaces/draft-IERC6093.sol", - "exportedSymbols": { - "IERC1155Errors": [ - 136 - ], - "IERC20Errors": [ - 41 - ], - "IERC721Errors": [ - 89 - ] - }, - "id": 137, - "license": "MIT", - "nodeType": "SourceUnit", - "nodes": [ - { - "id": 1, - "literals": [ - "solidity", - "^", - "0.8", - ".20" - ], - "nodeType": "PragmaDirective", - "src": "112:24:0" - }, - { - "abstract": false, - "baseContracts": [], - "canonicalName": "IERC20Errors", - "contractDependencies": [], - "contractKind": "interface", - "documentation": { - "id": 2, - "nodeType": "StructuredDocumentation", - "src": "138:141:0", - "text": " @dev Standard ERC-20 Errors\n Interface of the https://eips.ethereum.org/EIPS/eip-6093[ERC-6093] custom errors for ERC-20 tokens." - }, - "fullyImplemented": true, - "id": 41, - "linearizedBaseContracts": [ - 41 - ], - "name": "IERC20Errors", - "nameLocation": "290:12:0", - "nodeType": "ContractDefinition", - "nodes": [ - { - "documentation": { - "id": 3, - "nodeType": "StructuredDocumentation", - "src": "309:309:0", - "text": " @dev Indicates an error related to the current `balance` of a `sender`. Used in transfers.\n @param sender Address whose tokens are being transferred.\n @param balance Current balance for the interacting account.\n @param needed Minimum amount required to perform a transfer." - }, - "errorSelector": "e450d38c", - "id": 11, - "name": "ERC20InsufficientBalance", - "nameLocation": "629:24:0", - "nodeType": "ErrorDefinition", - "parameters": { - "id": 10, - "nodeType": "ParameterList", - "parameters": [ - { - "constant": false, - "id": 5, - "mutability": "mutable", - "name": "sender", - "nameLocation": "662:6:0", - "nodeType": "VariableDeclaration", - "scope": 11, - "src": "654:14:0", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - }, - "typeName": { - "id": 4, - "name": "address", - "nodeType": "ElementaryTypeName", - "src": "654:7:0", - "stateMutability": "nonpayable", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "visibility": "internal" - }, - { - "constant": false, - "id": 7, - "mutability": "mutable", - "name": "balance", - "nameLocation": "678:7:0", - "nodeType": "VariableDeclaration", - "scope": 11, - "src": "670:15:0", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "typeName": { - "id": 6, - "name": "uint256", - "nodeType": "ElementaryTypeName", - "src": "670:7:0", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "visibility": "internal" - }, - { - "constant": false, - "id": 9, - "mutability": "mutable", - "name": "needed", - "nameLocation": "695:6:0", - "nodeType": "VariableDeclaration", - "scope": 11, - "src": "687:14:0", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "typeName": { - "id": 8, - "name": "uint256", - "nodeType": "ElementaryTypeName", - "src": "687:7:0", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "visibility": "internal" - } - ], - "src": "653:49:0" - }, - "src": "623:80:0" - }, - { - "documentation": { - "id": 12, - "nodeType": "StructuredDocumentation", - "src": "709:152:0", - "text": " @dev Indicates a failure with the token `sender`. Used in transfers.\n @param sender Address whose tokens are being transferred." - }, - "errorSelector": "96c6fd1e", - "id": 16, - "name": "ERC20InvalidSender", - "nameLocation": "872:18:0", - "nodeType": "ErrorDefinition", - "parameters": { - "id": 15, - "nodeType": "ParameterList", - "parameters": [ - { - "constant": false, - "id": 14, - "mutability": "mutable", - "name": "sender", - "nameLocation": "899:6:0", - "nodeType": "VariableDeclaration", - "scope": 16, - "src": "891:14:0", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - }, - "typeName": { - "id": 13, - "name": "address", - "nodeType": "ElementaryTypeName", - "src": "891:7:0", - "stateMutability": "nonpayable", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "visibility": "internal" - } - ], - "src": "890:16:0" - }, - "src": "866:41:0" - }, - { - "documentation": { - "id": 17, - "nodeType": "StructuredDocumentation", - "src": "913:159:0", - "text": " @dev Indicates a failure with the token `receiver`. Used in transfers.\n @param receiver Address to which tokens are being transferred." - }, - "errorSelector": "ec442f05", - "id": 21, - "name": "ERC20InvalidReceiver", - "nameLocation": "1083:20:0", - "nodeType": "ErrorDefinition", - "parameters": { - "id": 20, - "nodeType": "ParameterList", - "parameters": [ - { - "constant": false, - "id": 19, - "mutability": "mutable", - "name": "receiver", - "nameLocation": "1112:8:0", - "nodeType": "VariableDeclaration", - "scope": 21, - "src": "1104:16:0", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - }, - "typeName": { - "id": 18, - "name": "address", - "nodeType": "ElementaryTypeName", - "src": "1104:7:0", - "stateMutability": "nonpayable", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "visibility": "internal" - } - ], - "src": "1103:18:0" - }, - "src": "1077:45:0" - }, - { - "documentation": { - "id": 22, - "nodeType": "StructuredDocumentation", - "src": "1128:345:0", - "text": " @dev Indicates a failure with the `spender`’s `allowance`. Used in transfers.\n @param spender Address that may be allowed to operate on tokens without being their owner.\n @param allowance Amount of tokens a `spender` is allowed to operate with.\n @param needed Minimum amount required to perform a transfer." - }, - "errorSelector": "fb8f41b2", - "id": 30, - "name": "ERC20InsufficientAllowance", - "nameLocation": "1484:26:0", - "nodeType": "ErrorDefinition", - "parameters": { - "id": 29, - "nodeType": "ParameterList", - "parameters": [ - { - "constant": false, - "id": 24, - "mutability": "mutable", - "name": "spender", - "nameLocation": "1519:7:0", - "nodeType": "VariableDeclaration", - "scope": 30, - "src": "1511:15:0", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - }, - "typeName": { - "id": 23, - "name": "address", - "nodeType": "ElementaryTypeName", - "src": "1511:7:0", - "stateMutability": "nonpayable", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "visibility": "internal" - }, - { - "constant": false, - "id": 26, - "mutability": "mutable", - "name": "allowance", - "nameLocation": "1536:9:0", - "nodeType": "VariableDeclaration", - "scope": 30, - "src": "1528:17:0", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "typeName": { - "id": 25, - "name": "uint256", - "nodeType": "ElementaryTypeName", - "src": "1528:7:0", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "visibility": "internal" - }, - { - "constant": false, - "id": 28, - "mutability": "mutable", - "name": "needed", - "nameLocation": "1555:6:0", - "nodeType": "VariableDeclaration", - "scope": 30, - "src": "1547:14:0", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "typeName": { - "id": 27, - "name": "uint256", - "nodeType": "ElementaryTypeName", - "src": "1547:7:0", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "visibility": "internal" - } - ], - "src": "1510:52:0" - }, - "src": "1478:85:0" - }, - { - "documentation": { - "id": 31, - "nodeType": "StructuredDocumentation", - "src": "1569:174:0", - "text": " @dev Indicates a failure with the `approver` of a token to be approved. Used in approvals.\n @param approver Address initiating an approval operation." - }, - "errorSelector": "e602df05", - "id": 35, - "name": "ERC20InvalidApprover", - "nameLocation": "1754:20:0", - "nodeType": "ErrorDefinition", - "parameters": { - "id": 34, - "nodeType": "ParameterList", - "parameters": [ - { - "constant": false, - "id": 33, - "mutability": "mutable", - "name": "approver", - "nameLocation": "1783:8:0", - "nodeType": "VariableDeclaration", - "scope": 35, - "src": "1775:16:0", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - }, - "typeName": { - "id": 32, - "name": "address", - "nodeType": "ElementaryTypeName", - "src": "1775:7:0", - "stateMutability": "nonpayable", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "visibility": "internal" - } - ], - "src": "1774:18:0" - }, - "src": "1748:45:0" - }, - { - "documentation": { - "id": 36, - "nodeType": "StructuredDocumentation", - "src": "1799:195:0", - "text": " @dev Indicates a failure with the `spender` to be approved. Used in approvals.\n @param spender Address that may be allowed to operate on tokens without being their owner." - }, - "errorSelector": "94280d62", - "id": 40, - "name": "ERC20InvalidSpender", - "nameLocation": "2005:19:0", - "nodeType": "ErrorDefinition", - "parameters": { - "id": 39, - "nodeType": "ParameterList", - "parameters": [ - { - "constant": false, - "id": 38, - "mutability": "mutable", - "name": "spender", - "nameLocation": "2033:7:0", - "nodeType": "VariableDeclaration", - "scope": 40, - "src": "2025:15:0", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - }, - "typeName": { - "id": 37, - "name": "address", - "nodeType": "ElementaryTypeName", - "src": "2025:7:0", - "stateMutability": "nonpayable", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "visibility": "internal" - } - ], - "src": "2024:17:0" - }, - "src": "1999:43:0" - } - ], - "scope": 137, - "src": "280:1764:0", - "usedErrors": [ - 11, - 16, - 21, - 30, - 35, - 40 - ], - "usedEvents": [] - }, - { - "abstract": false, - "baseContracts": [], - "canonicalName": "IERC721Errors", - "contractDependencies": [], - "contractKind": "interface", - "documentation": { - "id": 42, - "nodeType": "StructuredDocumentation", - "src": "2046:143:0", - "text": " @dev Standard ERC-721 Errors\n Interface of the https://eips.ethereum.org/EIPS/eip-6093[ERC-6093] custom errors for ERC-721 tokens." - }, - "fullyImplemented": true, - "id": 89, - "linearizedBaseContracts": [ - 89 - ], - "name": "IERC721Errors", - "nameLocation": "2200:13:0", - "nodeType": "ContractDefinition", - "nodes": [ - { - "documentation": { - "id": 43, - "nodeType": "StructuredDocumentation", - "src": "2220:219:0", - "text": " @dev Indicates that an address can't be an owner. For example, `address(0)` is a forbidden owner in ERC-20.\n Used in balance queries.\n @param owner Address of the current owner of a token." - }, - "errorSelector": "89c62b64", - "id": 47, - "name": "ERC721InvalidOwner", - "nameLocation": "2450:18:0", - "nodeType": "ErrorDefinition", - "parameters": { - "id": 46, - "nodeType": "ParameterList", - "parameters": [ - { - "constant": false, - "id": 45, - "mutability": "mutable", - "name": "owner", - "nameLocation": "2477:5:0", - "nodeType": "VariableDeclaration", - "scope": 47, - "src": "2469:13:0", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - }, - "typeName": { - "id": 44, - "name": "address", - "nodeType": "ElementaryTypeName", - "src": "2469:7:0", - "stateMutability": "nonpayable", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "visibility": "internal" - } - ], - "src": "2468:15:0" - }, - "src": "2444:40:0" - }, - { - "documentation": { - "id": 48, - "nodeType": "StructuredDocumentation", - "src": "2490:132:0", - "text": " @dev Indicates a `tokenId` whose `owner` is the zero address.\n @param tokenId Identifier number of a token." - }, - "errorSelector": "7e273289", - "id": 52, - "name": "ERC721NonexistentToken", - "nameLocation": "2633:22:0", - "nodeType": "ErrorDefinition", - "parameters": { - "id": 51, - "nodeType": "ParameterList", - "parameters": [ - { - "constant": false, - "id": 50, - "mutability": "mutable", - "name": "tokenId", - "nameLocation": "2664:7:0", - "nodeType": "VariableDeclaration", - "scope": 52, - "src": "2656:15:0", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "typeName": { - "id": 49, - "name": "uint256", - "nodeType": "ElementaryTypeName", - "src": "2656:7:0", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "visibility": "internal" - } - ], - "src": "2655:17:0" - }, - "src": "2627:46:0" - }, - { - "documentation": { - "id": 53, - "nodeType": "StructuredDocumentation", - "src": "2679:289:0", - "text": " @dev Indicates an error related to the ownership over a particular token. Used in transfers.\n @param sender Address whose tokens are being transferred.\n @param tokenId Identifier number of a token.\n @param owner Address of the current owner of a token." - }, - "errorSelector": "64283d7b", - "id": 61, - "name": "ERC721IncorrectOwner", - "nameLocation": "2979:20:0", - "nodeType": "ErrorDefinition", - "parameters": { - "id": 60, - "nodeType": "ParameterList", - "parameters": [ - { - "constant": false, - "id": 55, - "mutability": "mutable", - "name": "sender", - "nameLocation": "3008:6:0", - "nodeType": "VariableDeclaration", - "scope": 61, - "src": "3000:14:0", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - }, - "typeName": { - "id": 54, - "name": "address", - "nodeType": "ElementaryTypeName", - "src": "3000:7:0", - "stateMutability": "nonpayable", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "visibility": "internal" - }, - { - "constant": false, - "id": 57, - "mutability": "mutable", - "name": "tokenId", - "nameLocation": "3024:7:0", - "nodeType": "VariableDeclaration", - "scope": 61, - "src": "3016:15:0", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "typeName": { - "id": 56, - "name": "uint256", - "nodeType": "ElementaryTypeName", - "src": "3016:7:0", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "visibility": "internal" - }, - { - "constant": false, - "id": 59, - "mutability": "mutable", - "name": "owner", - "nameLocation": "3041:5:0", - "nodeType": "VariableDeclaration", - "scope": 61, - "src": "3033:13:0", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - }, - "typeName": { - "id": 58, - "name": "address", - "nodeType": "ElementaryTypeName", - "src": "3033:7:0", - "stateMutability": "nonpayable", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "visibility": "internal" - } - ], - "src": "2999:48:0" - }, - "src": "2973:75:0" - }, - { - "documentation": { - "id": 62, - "nodeType": "StructuredDocumentation", - "src": "3054:152:0", - "text": " @dev Indicates a failure with the token `sender`. Used in transfers.\n @param sender Address whose tokens are being transferred." - }, - "errorSelector": "73c6ac6e", - "id": 66, - "name": "ERC721InvalidSender", - "nameLocation": "3217:19:0", - "nodeType": "ErrorDefinition", - "parameters": { - "id": 65, - "nodeType": "ParameterList", - "parameters": [ - { - "constant": false, - "id": 64, - "mutability": "mutable", - "name": "sender", - "nameLocation": "3245:6:0", - "nodeType": "VariableDeclaration", - "scope": 66, - "src": "3237:14:0", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - }, - "typeName": { - "id": 63, - "name": "address", - "nodeType": "ElementaryTypeName", - "src": "3237:7:0", - "stateMutability": "nonpayable", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "visibility": "internal" - } - ], - "src": "3236:16:0" - }, - "src": "3211:42:0" - }, - { - "documentation": { - "id": 67, - "nodeType": "StructuredDocumentation", - "src": "3259:159:0", - "text": " @dev Indicates a failure with the token `receiver`. Used in transfers.\n @param receiver Address to which tokens are being transferred." - }, - "errorSelector": "64a0ae92", - "id": 71, - "name": "ERC721InvalidReceiver", - "nameLocation": "3429:21:0", - "nodeType": "ErrorDefinition", - "parameters": { - "id": 70, - "nodeType": "ParameterList", - "parameters": [ - { - "constant": false, - "id": 69, - "mutability": "mutable", - "name": "receiver", - "nameLocation": "3459:8:0", - "nodeType": "VariableDeclaration", - "scope": 71, - "src": "3451:16:0", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - }, - "typeName": { - "id": 68, - "name": "address", - "nodeType": "ElementaryTypeName", - "src": "3451:7:0", - "stateMutability": "nonpayable", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "visibility": "internal" - } - ], - "src": "3450:18:0" - }, - "src": "3423:46:0" - }, - { - "documentation": { - "id": 72, - "nodeType": "StructuredDocumentation", - "src": "3475:247:0", - "text": " @dev Indicates a failure with the `operator`’s approval. Used in transfers.\n @param operator Address that may be allowed to operate on tokens without being their owner.\n @param tokenId Identifier number of a token." - }, - "errorSelector": "177e802f", - "id": 78, - "name": "ERC721InsufficientApproval", - "nameLocation": "3733:26:0", - "nodeType": "ErrorDefinition", - "parameters": { - "id": 77, - "nodeType": "ParameterList", - "parameters": [ - { - "constant": false, - "id": 74, - "mutability": "mutable", - "name": "operator", - "nameLocation": "3768:8:0", - "nodeType": "VariableDeclaration", - "scope": 78, - "src": "3760:16:0", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - }, - "typeName": { - "id": 73, - "name": "address", - "nodeType": "ElementaryTypeName", - "src": "3760:7:0", - "stateMutability": "nonpayable", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "visibility": "internal" - }, - { - "constant": false, - "id": 76, - "mutability": "mutable", - "name": "tokenId", - "nameLocation": "3786:7:0", - "nodeType": "VariableDeclaration", - "scope": 78, - "src": "3778:15:0", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "typeName": { - "id": 75, - "name": "uint256", - "nodeType": "ElementaryTypeName", - "src": "3778:7:0", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "visibility": "internal" - } - ], - "src": "3759:35:0" - }, - "src": "3727:68:0" - }, - { - "documentation": { - "id": 79, - "nodeType": "StructuredDocumentation", - "src": "3801:174:0", - "text": " @dev Indicates a failure with the `approver` of a token to be approved. Used in approvals.\n @param approver Address initiating an approval operation." - }, - "errorSelector": "a9fbf51f", - "id": 83, - "name": "ERC721InvalidApprover", - "nameLocation": "3986:21:0", - "nodeType": "ErrorDefinition", - "parameters": { - "id": 82, - "nodeType": "ParameterList", - "parameters": [ - { - "constant": false, - "id": 81, - "mutability": "mutable", - "name": "approver", - "nameLocation": "4016:8:0", - "nodeType": "VariableDeclaration", - "scope": 83, - "src": "4008:16:0", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - }, - "typeName": { - "id": 80, - "name": "address", - "nodeType": "ElementaryTypeName", - "src": "4008:7:0", - "stateMutability": "nonpayable", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "visibility": "internal" - } - ], - "src": "4007:18:0" - }, - "src": "3980:46:0" - }, - { - "documentation": { - "id": 84, - "nodeType": "StructuredDocumentation", - "src": "4032:197:0", - "text": " @dev Indicates a failure with the `operator` to be approved. Used in approvals.\n @param operator Address that may be allowed to operate on tokens without being their owner." - }, - "errorSelector": "5b08ba18", - "id": 88, - "name": "ERC721InvalidOperator", - "nameLocation": "4240:21:0", - "nodeType": "ErrorDefinition", - "parameters": { - "id": 87, - "nodeType": "ParameterList", - "parameters": [ - { - "constant": false, - "id": 86, - "mutability": "mutable", - "name": "operator", - "nameLocation": "4270:8:0", - "nodeType": "VariableDeclaration", - "scope": 88, - "src": "4262:16:0", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - }, - "typeName": { - "id": 85, - "name": "address", - "nodeType": "ElementaryTypeName", - "src": "4262:7:0", - "stateMutability": "nonpayable", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "visibility": "internal" - } - ], - "src": "4261:18:0" - }, - "src": "4234:46:0" - } - ], - "scope": 137, - "src": "2190:2092:0", - "usedErrors": [ - 47, - 52, - 61, - 66, - 71, - 78, - 83, - 88 - ], - "usedEvents": [] - }, - { - "abstract": false, - "baseContracts": [], - "canonicalName": "IERC1155Errors", - "contractDependencies": [], - "contractKind": "interface", - "documentation": { - "id": 90, - "nodeType": "StructuredDocumentation", - "src": "4284:145:0", - "text": " @dev Standard ERC-1155 Errors\n Interface of the https://eips.ethereum.org/EIPS/eip-6093[ERC-6093] custom errors for ERC-1155 tokens." - }, - "fullyImplemented": true, - "id": 136, - "linearizedBaseContracts": [ - 136 - ], - "name": "IERC1155Errors", - "nameLocation": "4440:14:0", - "nodeType": "ContractDefinition", - "nodes": [ - { - "documentation": { - "id": 91, - "nodeType": "StructuredDocumentation", - "src": "4461:361:0", - "text": " @dev Indicates an error related to the current `balance` of a `sender`. Used in transfers.\n @param sender Address whose tokens are being transferred.\n @param balance Current balance for the interacting account.\n @param needed Minimum amount required to perform a transfer.\n @param tokenId Identifier number of a token." - }, - "errorSelector": "03dee4c5", - "id": 101, - "name": "ERC1155InsufficientBalance", - "nameLocation": "4833:26:0", - "nodeType": "ErrorDefinition", - "parameters": { - "id": 100, - "nodeType": "ParameterList", - "parameters": [ - { - "constant": false, - "id": 93, - "mutability": "mutable", - "name": "sender", - "nameLocation": "4868:6:0", - "nodeType": "VariableDeclaration", - "scope": 101, - "src": "4860:14:0", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - }, - "typeName": { - "id": 92, - "name": "address", - "nodeType": "ElementaryTypeName", - "src": "4860:7:0", - "stateMutability": "nonpayable", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "visibility": "internal" - }, - { - "constant": false, - "id": 95, - "mutability": "mutable", - "name": "balance", - "nameLocation": "4884:7:0", - "nodeType": "VariableDeclaration", - "scope": 101, - "src": "4876:15:0", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "typeName": { - "id": 94, - "name": "uint256", - "nodeType": "ElementaryTypeName", - "src": "4876:7:0", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "visibility": "internal" - }, - { - "constant": false, - "id": 97, - "mutability": "mutable", - "name": "needed", - "nameLocation": "4901:6:0", - "nodeType": "VariableDeclaration", - "scope": 101, - "src": "4893:14:0", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "typeName": { - "id": 96, - "name": "uint256", - "nodeType": "ElementaryTypeName", - "src": "4893:7:0", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "visibility": "internal" - }, - { - "constant": false, - "id": 99, - "mutability": "mutable", - "name": "tokenId", - "nameLocation": "4917:7:0", - "nodeType": "VariableDeclaration", - "scope": 101, - "src": "4909:15:0", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "typeName": { - "id": 98, - "name": "uint256", - "nodeType": "ElementaryTypeName", - "src": "4909:7:0", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "visibility": "internal" - } - ], - "src": "4859:66:0" - }, - "src": "4827:99:0" - }, - { - "documentation": { - "id": 102, - "nodeType": "StructuredDocumentation", - "src": "4932:152:0", - "text": " @dev Indicates a failure with the token `sender`. Used in transfers.\n @param sender Address whose tokens are being transferred." - }, - "errorSelector": "01a83514", - "id": 106, - "name": "ERC1155InvalidSender", - "nameLocation": "5095:20:0", - "nodeType": "ErrorDefinition", - "parameters": { - "id": 105, - "nodeType": "ParameterList", - "parameters": [ - { - "constant": false, - "id": 104, - "mutability": "mutable", - "name": "sender", - "nameLocation": "5124:6:0", - "nodeType": "VariableDeclaration", - "scope": 106, - "src": "5116:14:0", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - }, - "typeName": { - "id": 103, - "name": "address", - "nodeType": "ElementaryTypeName", - "src": "5116:7:0", - "stateMutability": "nonpayable", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "visibility": "internal" - } - ], - "src": "5115:16:0" - }, - "src": "5089:43:0" - }, - { - "documentation": { - "id": 107, - "nodeType": "StructuredDocumentation", - "src": "5138:159:0", - "text": " @dev Indicates a failure with the token `receiver`. Used in transfers.\n @param receiver Address to which tokens are being transferred." - }, - "errorSelector": "57f447ce", - "id": 111, - "name": "ERC1155InvalidReceiver", - "nameLocation": "5308:22:0", - "nodeType": "ErrorDefinition", - "parameters": { - "id": 110, - "nodeType": "ParameterList", - "parameters": [ - { - "constant": false, - "id": 109, - "mutability": "mutable", - "name": "receiver", - "nameLocation": "5339:8:0", - "nodeType": "VariableDeclaration", - "scope": 111, - "src": "5331:16:0", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - }, - "typeName": { - "id": 108, - "name": "address", - "nodeType": "ElementaryTypeName", - "src": "5331:7:0", - "stateMutability": "nonpayable", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "visibility": "internal" - } - ], - "src": "5330:18:0" - }, - "src": "5302:47:0" - }, - { - "documentation": { - "id": 112, - "nodeType": "StructuredDocumentation", - "src": "5355:256:0", - "text": " @dev Indicates a failure with the `operator`’s approval. Used in transfers.\n @param operator Address that may be allowed to operate on tokens without being their owner.\n @param owner Address of the current owner of a token." - }, - "errorSelector": "e237d922", - "id": 118, - "name": "ERC1155MissingApprovalForAll", - "nameLocation": "5622:28:0", - "nodeType": "ErrorDefinition", - "parameters": { - "id": 117, - "nodeType": "ParameterList", - "parameters": [ - { - "constant": false, - "id": 114, - "mutability": "mutable", - "name": "operator", - "nameLocation": "5659:8:0", - "nodeType": "VariableDeclaration", - "scope": 118, - "src": "5651:16:0", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - }, - "typeName": { - "id": 113, - "name": "address", - "nodeType": "ElementaryTypeName", - "src": "5651:7:0", - "stateMutability": "nonpayable", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "visibility": "internal" - }, - { - "constant": false, - "id": 116, - "mutability": "mutable", - "name": "owner", - "nameLocation": "5677:5:0", - "nodeType": "VariableDeclaration", - "scope": 118, - "src": "5669:13:0", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - }, - "typeName": { - "id": 115, - "name": "address", - "nodeType": "ElementaryTypeName", - "src": "5669:7:0", - "stateMutability": "nonpayable", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "visibility": "internal" - } - ], - "src": "5650:33:0" - }, - "src": "5616:68:0" - }, - { - "documentation": { - "id": 119, - "nodeType": "StructuredDocumentation", - "src": "5690:174:0", - "text": " @dev Indicates a failure with the `approver` of a token to be approved. Used in approvals.\n @param approver Address initiating an approval operation." - }, - "errorSelector": "3e31884e", - "id": 123, - "name": "ERC1155InvalidApprover", - "nameLocation": "5875:22:0", - "nodeType": "ErrorDefinition", - "parameters": { - "id": 122, - "nodeType": "ParameterList", - "parameters": [ - { - "constant": false, - "id": 121, - "mutability": "mutable", - "name": "approver", - "nameLocation": "5906:8:0", - "nodeType": "VariableDeclaration", - "scope": 123, - "src": "5898:16:0", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - }, - "typeName": { - "id": 120, - "name": "address", - "nodeType": "ElementaryTypeName", - "src": "5898:7:0", - "stateMutability": "nonpayable", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "visibility": "internal" - } - ], - "src": "5897:18:0" - }, - "src": "5869:47:0" - }, - { - "documentation": { - "id": 124, - "nodeType": "StructuredDocumentation", - "src": "5922:197:0", - "text": " @dev Indicates a failure with the `operator` to be approved. Used in approvals.\n @param operator Address that may be allowed to operate on tokens without being their owner." - }, - "errorSelector": "ced3e100", - "id": 128, - "name": "ERC1155InvalidOperator", - "nameLocation": "6130:22:0", - "nodeType": "ErrorDefinition", - "parameters": { - "id": 127, - "nodeType": "ParameterList", - "parameters": [ - { - "constant": false, - "id": 126, - "mutability": "mutable", - "name": "operator", - "nameLocation": "6161:8:0", - "nodeType": "VariableDeclaration", - "scope": 128, - "src": "6153:16:0", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - }, - "typeName": { - "id": 125, - "name": "address", - "nodeType": "ElementaryTypeName", - "src": "6153:7:0", - "stateMutability": "nonpayable", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "visibility": "internal" - } - ], - "src": "6152:18:0" - }, - "src": "6124:47:0" - }, - { - "documentation": { - "id": 129, - "nodeType": "StructuredDocumentation", - "src": "6177:280:0", - "text": " @dev Indicates an array length mismatch between ids and values in a safeBatchTransferFrom operation.\n Used in batch transfers.\n @param idsLength Length of the array of token identifiers\n @param valuesLength Length of the array of token amounts" - }, - "errorSelector": "5b059991", - "id": 135, - "name": "ERC1155InvalidArrayLength", - "nameLocation": "6468:25:0", - "nodeType": "ErrorDefinition", - "parameters": { - "id": 134, - "nodeType": "ParameterList", - "parameters": [ - { - "constant": false, - "id": 131, - "mutability": "mutable", - "name": "idsLength", - "nameLocation": "6502:9:0", - "nodeType": "VariableDeclaration", - "scope": 135, - "src": "6494:17:0", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "typeName": { - "id": 130, - "name": "uint256", - "nodeType": "ElementaryTypeName", - "src": "6494:7:0", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "visibility": "internal" - }, - { - "constant": false, - "id": 133, - "mutability": "mutable", - "name": "valuesLength", - "nameLocation": "6521:12:0", - "nodeType": "VariableDeclaration", - "scope": 135, - "src": "6513:20:0", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "typeName": { - "id": 132, - "name": "uint256", - "nodeType": "ElementaryTypeName", - "src": "6513:7:0", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "visibility": "internal" - } - ], - "src": "6493:41:0" - }, - "src": "6462:73:0" - } - ], - "scope": 137, - "src": "4430:2107:0", - "usedErrors": [ - 101, - 106, - 111, - 118, - 123, - 128, - 135 - ], - "usedEvents": [] - } - ], - "src": "112:6426:0" - }, - "id": 0 - }, - "@openzeppelin/contracts/token/ERC20/ERC20.sol": { - "ast": { - "absolutePath": "@openzeppelin/contracts/token/ERC20/ERC20.sol", - "exportedSymbols": { - "Context": [ - 785 - ], - "ERC20": [ - 651 - ], - "IERC20": [ - 729 - ], - "IERC20Errors": [ - 41 - ], - "IERC20Metadata": [ - 755 - ] - }, - "id": 652, - "license": "MIT", - "nodeType": "SourceUnit", - "nodes": [ - { - "id": 138, - "literals": [ - "solidity", - "^", - "0.8", - ".20" - ], - "nodeType": "PragmaDirective", - "src": "105:24:1" - }, - { - "absolutePath": "@openzeppelin/contracts/token/ERC20/IERC20.sol", - "file": "./IERC20.sol", - "id": 140, - "nameLocation": "-1:-1:-1", - "nodeType": "ImportDirective", - "scope": 652, - "sourceUnit": 730, - "src": "131:36:1", - "symbolAliases": [ - { - "foreign": { - "id": 139, - "name": "IERC20", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 729, - "src": "139:6:1", - "typeDescriptions": {} - }, - "nameLocation": "-1:-1:-1" - } - ], - "unitAlias": "" - }, - { - "absolutePath": "@openzeppelin/contracts/token/ERC20/extensions/IERC20Metadata.sol", - "file": "./extensions/IERC20Metadata.sol", - "id": 142, - "nameLocation": "-1:-1:-1", - "nodeType": "ImportDirective", - "scope": 652, - "sourceUnit": 756, - "src": "168:63:1", - "symbolAliases": [ - { - "foreign": { - "id": 141, - "name": "IERC20Metadata", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 755, - "src": "176:14:1", - "typeDescriptions": {} - }, - "nameLocation": "-1:-1:-1" - } - ], - "unitAlias": "" - }, - { - "absolutePath": "@openzeppelin/contracts/utils/Context.sol", - "file": "../../utils/Context.sol", - "id": 144, - "nameLocation": "-1:-1:-1", - "nodeType": "ImportDirective", - "scope": 652, - "sourceUnit": 786, - "src": "232:48:1", - "symbolAliases": [ - { - "foreign": { - "id": 143, - "name": "Context", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 785, - "src": "240:7:1", - "typeDescriptions": {} - }, - "nameLocation": "-1:-1:-1" - } - ], - "unitAlias": "" - }, - { - "absolutePath": "@openzeppelin/contracts/interfaces/draft-IERC6093.sol", - "file": "../../interfaces/draft-IERC6093.sol", - "id": 146, - "nameLocation": "-1:-1:-1", - "nodeType": "ImportDirective", - "scope": 652, - "sourceUnit": 137, - "src": "281:65:1", - "symbolAliases": [ - { - "foreign": { - "id": 145, - "name": "IERC20Errors", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 41, - "src": "289:12:1", - "typeDescriptions": {} - }, - "nameLocation": "-1:-1:-1" - } - ], - "unitAlias": "" - }, - { - "abstract": true, - "baseContracts": [ - { - "baseName": { - "id": 148, - "name": "Context", - "nameLocations": [ - "1133:7:1" - ], - "nodeType": "IdentifierPath", - "referencedDeclaration": 785, - "src": "1133:7:1" - }, - "id": 149, - "nodeType": "InheritanceSpecifier", - "src": "1133:7:1" - }, - { - "baseName": { - "id": 150, - "name": "IERC20", - "nameLocations": [ - "1142:6:1" - ], - "nodeType": "IdentifierPath", - "referencedDeclaration": 729, - "src": "1142:6:1" - }, - "id": 151, - "nodeType": "InheritanceSpecifier", - "src": "1142:6:1" - }, - { - "baseName": { - "id": 152, - "name": "IERC20Metadata", - "nameLocations": [ - "1150:14:1" - ], - "nodeType": "IdentifierPath", - "referencedDeclaration": 755, - "src": "1150:14:1" - }, - "id": 153, - "nodeType": "InheritanceSpecifier", - "src": "1150:14:1" - }, - { - "baseName": { - "id": 154, - "name": "IERC20Errors", - "nameLocations": [ - "1166:12:1" - ], - "nodeType": "IdentifierPath", - "referencedDeclaration": 41, - "src": "1166:12:1" - }, - "id": 155, - "nodeType": "InheritanceSpecifier", - "src": "1166:12:1" - } - ], - "canonicalName": "ERC20", - "contractDependencies": [], - "contractKind": "contract", - "documentation": { - "id": 147, - "nodeType": "StructuredDocumentation", - "src": "348:757:1", - "text": " @dev Implementation of the {IERC20} interface.\n This implementation is agnostic to the way tokens are created. This means\n that a supply mechanism has to be added in a derived contract using {_mint}.\n TIP: For a detailed writeup see our guide\n https://forum.openzeppelin.com/t/how-to-implement-erc20-supply-mechanisms/226[How\n to implement supply mechanisms].\n The default value of {decimals} is 18. To change this, you should override\n this function so it returns a different value.\n We have followed general OpenZeppelin Contracts guidelines: functions revert\n instead returning `false` on failure. This behavior is nonetheless\n conventional and does not conflict with the expectations of ERC-20\n applications." - }, - "fullyImplemented": true, - "id": 651, - "linearizedBaseContracts": [ - 651, - 41, - 755, - 729, - 785 - ], - "name": "ERC20", - "nameLocation": "1124:5:1", - "nodeType": "ContractDefinition", - "nodes": [ - { - "constant": false, - "id": 159, - "mutability": "mutable", - "name": "_balances", - "nameLocation": "1229:9:1", - "nodeType": "VariableDeclaration", - "scope": 651, - "src": "1185:53:1", - "stateVariable": true, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$", - "typeString": "mapping(address => uint256)" - }, - "typeName": { - "id": 158, - "keyName": "account", - "keyNameLocation": "1201:7:1", - "keyType": { - "id": 156, - "name": "address", - "nodeType": "ElementaryTypeName", - "src": "1193:7:1", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "nodeType": "Mapping", - "src": "1185:35:1", - "typeDescriptions": { - "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$", - "typeString": "mapping(address => uint256)" - }, - "valueName": "", - "valueNameLocation": "-1:-1:-1", - "valueType": { - "id": 157, - "name": "uint256", - "nodeType": "ElementaryTypeName", - "src": "1212:7:1", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - } - }, - "visibility": "private" - }, - { - "constant": false, - "id": 165, - "mutability": "mutable", - "name": "_allowances", - "nameLocation": "1317:11:1", - "nodeType": "VariableDeclaration", - "scope": 651, - "src": "1245:83:1", - "stateVariable": true, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_mapping$_t_address_$_t_mapping$_t_address_$_t_uint256_$_$", - "typeString": "mapping(address => mapping(address => uint256))" - }, - "typeName": { - "id": 164, - "keyName": "account", - "keyNameLocation": "1261:7:1", - "keyType": { - "id": 160, - "name": "address", - "nodeType": "ElementaryTypeName", - "src": "1253:7:1", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "nodeType": "Mapping", - "src": "1245:63:1", - "typeDescriptions": { - "typeIdentifier": "t_mapping$_t_address_$_t_mapping$_t_address_$_t_uint256_$_$", - "typeString": "mapping(address => mapping(address => uint256))" - }, - "valueName": "", - "valueNameLocation": "-1:-1:-1", - "valueType": { - "id": 163, - "keyName": "spender", - "keyNameLocation": "1288:7:1", - "keyType": { - "id": 161, - "name": "address", - "nodeType": "ElementaryTypeName", - "src": "1280:7:1", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "nodeType": "Mapping", - "src": "1272:35:1", - "typeDescriptions": { - "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$", - "typeString": "mapping(address => uint256)" - }, - "valueName": "", - "valueNameLocation": "-1:-1:-1", - "valueType": { - "id": 162, - "name": "uint256", - "nodeType": "ElementaryTypeName", - "src": "1299:7:1", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - } - } - }, - "visibility": "private" - }, - { - "constant": false, - "id": 167, - "mutability": "mutable", - "name": "_totalSupply", - "nameLocation": "1351:12:1", - "nodeType": "VariableDeclaration", - "scope": 651, - "src": "1335:28:1", - "stateVariable": true, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "typeName": { - "id": 166, - "name": "uint256", - "nodeType": "ElementaryTypeName", - "src": "1335:7:1", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "visibility": "private" - }, - { - "constant": false, - "id": 169, - "mutability": "mutable", - "name": "_name", - "nameLocation": "1385:5:1", - "nodeType": "VariableDeclaration", - "scope": 651, - "src": "1370:20:1", - "stateVariable": true, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_string_storage", - "typeString": "string" - }, - "typeName": { - "id": 168, - "name": "string", - "nodeType": "ElementaryTypeName", - "src": "1370:6:1", - "typeDescriptions": { - "typeIdentifier": "t_string_storage_ptr", - "typeString": "string" - } - }, - "visibility": "private" - }, - { - "constant": false, - "id": 171, - "mutability": "mutable", - "name": "_symbol", - "nameLocation": "1411:7:1", - "nodeType": "VariableDeclaration", - "scope": 651, - "src": "1396:22:1", - "stateVariable": true, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_string_storage", - "typeString": "string" - }, - "typeName": { - "id": 170, - "name": "string", - "nodeType": "ElementaryTypeName", - "src": "1396:6:1", - "typeDescriptions": { - "typeIdentifier": "t_string_storage_ptr", - "typeString": "string" - } - }, - "visibility": "private" - }, - { - "body": { - "id": 187, - "nodeType": "Block", - "src": "1657:57:1", - "statements": [ - { - "expression": { - "id": 181, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftHandSide": { - "id": 179, - "name": "_name", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 169, - "src": "1667:5:1", - "typeDescriptions": { - "typeIdentifier": "t_string_storage", - "typeString": "string storage ref" - } - }, - "nodeType": "Assignment", - "operator": "=", - "rightHandSide": { - "id": 180, - "name": "name_", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 174, - "src": "1675:5:1", - "typeDescriptions": { - "typeIdentifier": "t_string_memory_ptr", - "typeString": "string memory" - } - }, - "src": "1667:13:1", - "typeDescriptions": { - "typeIdentifier": "t_string_storage", - "typeString": "string storage ref" - } - }, - "id": 182, - "nodeType": "ExpressionStatement", - "src": "1667:13:1" - }, - { - "expression": { - "id": 185, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftHandSide": { - "id": 183, - "name": "_symbol", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 171, - "src": "1690:7:1", - "typeDescriptions": { - "typeIdentifier": "t_string_storage", - "typeString": "string storage ref" - } - }, - "nodeType": "Assignment", - "operator": "=", - "rightHandSide": { - "id": 184, - "name": "symbol_", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 176, - "src": "1700:7:1", - "typeDescriptions": { - "typeIdentifier": "t_string_memory_ptr", - "typeString": "string memory" - } - }, - "src": "1690:17:1", - "typeDescriptions": { - "typeIdentifier": "t_string_storage", - "typeString": "string storage ref" - } - }, - "id": 186, - "nodeType": "ExpressionStatement", - "src": "1690:17:1" - } - ] - }, - "documentation": { - "id": 172, - "nodeType": "StructuredDocumentation", - "src": "1425:171:1", - "text": " @dev Sets the values for {name} and {symbol}.\n All two of these values are immutable: they can only be set once during\n construction." - }, - "id": 188, - "implemented": true, - "kind": "constructor", - "modifiers": [], - "name": "", - "nameLocation": "-1:-1:-1", - "nodeType": "FunctionDefinition", - "parameters": { - "id": 177, - "nodeType": "ParameterList", - "parameters": [ - { - "constant": false, - "id": 174, - "mutability": "mutable", - "name": "name_", - "nameLocation": "1627:5:1", - "nodeType": "VariableDeclaration", - "scope": 188, - "src": "1613:19:1", - "stateVariable": false, - "storageLocation": "memory", - "typeDescriptions": { - "typeIdentifier": "t_string_memory_ptr", - "typeString": "string" - }, - "typeName": { - "id": 173, - "name": "string", - "nodeType": "ElementaryTypeName", - "src": "1613:6:1", - "typeDescriptions": { - "typeIdentifier": "t_string_storage_ptr", - "typeString": "string" - } - }, - "visibility": "internal" - }, - { - "constant": false, - "id": 176, - "mutability": "mutable", - "name": "symbol_", - "nameLocation": "1648:7:1", - "nodeType": "VariableDeclaration", - "scope": 188, - "src": "1634:21:1", - "stateVariable": false, - "storageLocation": "memory", - "typeDescriptions": { - "typeIdentifier": "t_string_memory_ptr", - "typeString": "string" - }, - "typeName": { - "id": 175, - "name": "string", - "nodeType": "ElementaryTypeName", - "src": "1634:6:1", - "typeDescriptions": { - "typeIdentifier": "t_string_storage_ptr", - "typeString": "string" - } - }, - "visibility": "internal" - } - ], - "src": "1612:44:1" - }, - "returnParameters": { - "id": 178, - "nodeType": "ParameterList", - "parameters": [], - "src": "1657:0:1" - }, - "scope": 651, - "src": "1601:113:1", - "stateMutability": "nonpayable", - "virtual": false, - "visibility": "internal" - }, - { - "baseFunctions": [ - 742 - ], - "body": { - "id": 196, - "nodeType": "Block", - "src": "1839:29:1", - "statements": [ - { - "expression": { - "id": 194, - "name": "_name", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 169, - "src": "1856:5:1", - "typeDescriptions": { - "typeIdentifier": "t_string_storage", - "typeString": "string storage ref" - } - }, - "functionReturnParameters": 193, - "id": 195, - "nodeType": "Return", - "src": "1849:12:1" - } - ] - }, - "documentation": { - "id": 189, - "nodeType": "StructuredDocumentation", - "src": "1720:54:1", - "text": " @dev Returns the name of the token." - }, - "functionSelector": "06fdde03", - "id": 197, - "implemented": true, - "kind": "function", - "modifiers": [], - "name": "name", - "nameLocation": "1788:4:1", - "nodeType": "FunctionDefinition", - "parameters": { - "id": 190, - "nodeType": "ParameterList", - "parameters": [], - "src": "1792:2:1" - }, - "returnParameters": { - "id": 193, - "nodeType": "ParameterList", - "parameters": [ - { - "constant": false, - "id": 192, - "mutability": "mutable", - "name": "", - "nameLocation": "-1:-1:-1", - "nodeType": "VariableDeclaration", - "scope": 197, - "src": "1824:13:1", - "stateVariable": false, - "storageLocation": "memory", - "typeDescriptions": { - "typeIdentifier": "t_string_memory_ptr", - "typeString": "string" - }, - "typeName": { - "id": 191, - "name": "string", - "nodeType": "ElementaryTypeName", - "src": "1824:6:1", - "typeDescriptions": { - "typeIdentifier": "t_string_storage_ptr", - "typeString": "string" - } - }, - "visibility": "internal" - } - ], - "src": "1823:15:1" - }, - "scope": 651, - "src": "1779:89:1", - "stateMutability": "view", - "virtual": true, - "visibility": "public" - }, - { - "baseFunctions": [ - 748 - ], - "body": { - "id": 205, - "nodeType": "Block", - "src": "2043:31:1", - "statements": [ - { - "expression": { - "id": 203, - "name": "_symbol", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 171, - "src": "2060:7:1", - "typeDescriptions": { - "typeIdentifier": "t_string_storage", - "typeString": "string storage ref" - } - }, - "functionReturnParameters": 202, - "id": 204, - "nodeType": "Return", - "src": "2053:14:1" - } - ] - }, - "documentation": { - "id": 198, - "nodeType": "StructuredDocumentation", - "src": "1874:102:1", - "text": " @dev Returns the symbol of the token, usually a shorter version of the\n name." - }, - "functionSelector": "95d89b41", - "id": 206, - "implemented": true, - "kind": "function", - "modifiers": [], - "name": "symbol", - "nameLocation": "1990:6:1", - "nodeType": "FunctionDefinition", - "parameters": { - "id": 199, - "nodeType": "ParameterList", - "parameters": [], - "src": "1996:2:1" - }, - "returnParameters": { - "id": 202, - "nodeType": "ParameterList", - "parameters": [ - { - "constant": false, - "id": 201, - "mutability": "mutable", - "name": "", - "nameLocation": "-1:-1:-1", - "nodeType": "VariableDeclaration", - "scope": 206, - "src": "2028:13:1", - "stateVariable": false, - "storageLocation": "memory", - "typeDescriptions": { - "typeIdentifier": "t_string_memory_ptr", - "typeString": "string" - }, - "typeName": { - "id": 200, - "name": "string", - "nodeType": "ElementaryTypeName", - "src": "2028:6:1", - "typeDescriptions": { - "typeIdentifier": "t_string_storage_ptr", - "typeString": "string" - } - }, - "visibility": "internal" - } - ], - "src": "2027:15:1" - }, - "scope": 651, - "src": "1981:93:1", - "stateMutability": "view", - "virtual": true, - "visibility": "public" - }, - { - "baseFunctions": [ - 754 - ], - "body": { - "id": 214, - "nodeType": "Block", - "src": "2763:26:1", - "statements": [ - { - "expression": { - "hexValue": "3138", - "id": 212, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "number", - "lValueRequested": false, - "nodeType": "Literal", - "src": "2780:2:1", - "typeDescriptions": { - "typeIdentifier": "t_rational_18_by_1", - "typeString": "int_const 18" - }, - "value": "18" - }, - "functionReturnParameters": 211, - "id": 213, - "nodeType": "Return", - "src": "2773:9:1" - } - ] - }, - "documentation": { - "id": 207, - "nodeType": "StructuredDocumentation", - "src": "2080:622:1", - "text": " @dev Returns the number of decimals used to get its user representation.\n For example, if `decimals` equals `2`, a balance of `505` tokens should\n be displayed to a user as `5.05` (`505 / 10 ** 2`).\n Tokens usually opt for a value of 18, imitating the relationship between\n Ether and Wei. This is the default value returned by this function, unless\n it's overridden.\n NOTE: This information is only used for _display_ purposes: it in\n no way affects any of the arithmetic of the contract, including\n {IERC20-balanceOf} and {IERC20-transfer}." - }, - "functionSelector": "313ce567", - "id": 215, - "implemented": true, - "kind": "function", - "modifiers": [], - "name": "decimals", - "nameLocation": "2716:8:1", - "nodeType": "FunctionDefinition", - "parameters": { - "id": 208, - "nodeType": "ParameterList", - "parameters": [], - "src": "2724:2:1" - }, - "returnParameters": { - "id": 211, - "nodeType": "ParameterList", - "parameters": [ - { - "constant": false, - "id": 210, - "mutability": "mutable", - "name": "", - "nameLocation": "-1:-1:-1", - "nodeType": "VariableDeclaration", - "scope": 215, - "src": "2756:5:1", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_uint8", - "typeString": "uint8" - }, - "typeName": { - "id": 209, - "name": "uint8", - "nodeType": "ElementaryTypeName", - "src": "2756:5:1", - "typeDescriptions": { - "typeIdentifier": "t_uint8", - "typeString": "uint8" - } - }, - "visibility": "internal" - } - ], - "src": "2755:7:1" - }, - "scope": 651, - "src": "2707:82:1", - "stateMutability": "view", - "virtual": true, - "visibility": "public" - }, - { - "baseFunctions": [ - 678 - ], - "body": { - "id": 223, - "nodeType": "Block", - "src": "2910:36:1", - "statements": [ - { - "expression": { - "id": 221, - "name": "_totalSupply", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 167, - "src": "2927:12:1", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "functionReturnParameters": 220, - "id": 222, - "nodeType": "Return", - "src": "2920:19:1" - } - ] - }, - "documentation": { - "id": 216, - "nodeType": "StructuredDocumentation", - "src": "2795:49:1", - "text": " @dev See {IERC20-totalSupply}." - }, - "functionSelector": "18160ddd", - "id": 224, - "implemented": true, - "kind": "function", - "modifiers": [], - "name": "totalSupply", - "nameLocation": "2858:11:1", - "nodeType": "FunctionDefinition", - "parameters": { - "id": 217, - "nodeType": "ParameterList", - "parameters": [], - "src": "2869:2:1" - }, - "returnParameters": { - "id": 220, - "nodeType": "ParameterList", - "parameters": [ - { - "constant": false, - "id": 219, - "mutability": "mutable", - "name": "", - "nameLocation": "-1:-1:-1", - "nodeType": "VariableDeclaration", - "scope": 224, - "src": "2901:7:1", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "typeName": { - "id": 218, - "name": "uint256", - "nodeType": "ElementaryTypeName", - "src": "2901:7:1", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "visibility": "internal" - } - ], - "src": "2900:9:1" - }, - "scope": 651, - "src": "2849:97:1", - "stateMutability": "view", - "virtual": true, - "visibility": "public" - }, - { - "baseFunctions": [ - 686 - ], - "body": { - "id": 236, - "nodeType": "Block", - "src": "3078:42:1", - "statements": [ - { - "expression": { - "baseExpression": { - "id": 232, - "name": "_balances", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 159, - "src": "3095:9:1", - "typeDescriptions": { - "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$", - "typeString": "mapping(address => uint256)" - } - }, - "id": 234, - "indexExpression": { - "id": 233, - "name": "account", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 227, - "src": "3105:7:1", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": false, - "nodeType": "IndexAccess", - "src": "3095:18:1", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "functionReturnParameters": 231, - "id": 235, - "nodeType": "Return", - "src": "3088:25:1" - } - ] - }, - "documentation": { - "id": 225, - "nodeType": "StructuredDocumentation", - "src": "2952:47:1", - "text": " @dev See {IERC20-balanceOf}." - }, - "functionSelector": "70a08231", - "id": 237, - "implemented": true, - "kind": "function", - "modifiers": [], - "name": "balanceOf", - "nameLocation": "3013:9:1", - "nodeType": "FunctionDefinition", - "parameters": { - "id": 228, - "nodeType": "ParameterList", - "parameters": [ - { - "constant": false, - "id": 227, - "mutability": "mutable", - "name": "account", - "nameLocation": "3031:7:1", - "nodeType": "VariableDeclaration", - "scope": 237, - "src": "3023:15:1", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - }, - "typeName": { - "id": 226, - "name": "address", - "nodeType": "ElementaryTypeName", - "src": "3023:7:1", - "stateMutability": "nonpayable", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "visibility": "internal" - } - ], - "src": "3022:17:1" - }, - "returnParameters": { - "id": 231, - "nodeType": "ParameterList", - "parameters": [ - { - "constant": false, - "id": 230, - "mutability": "mutable", - "name": "", - "nameLocation": "-1:-1:-1", - "nodeType": "VariableDeclaration", - "scope": 237, - "src": "3069:7:1", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "typeName": { - "id": 229, - "name": "uint256", - "nodeType": "ElementaryTypeName", - "src": "3069:7:1", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "visibility": "internal" - } - ], - "src": "3068:9:1" - }, - "scope": 651, - "src": "3004:116:1", - "stateMutability": "view", - "virtual": true, - "visibility": "public" - }, - { - "baseFunctions": [ - 696 - ], - "body": { - "id": 260, - "nodeType": "Block", - "src": "3390:103:1", - "statements": [ - { - "assignments": [ - 248 - ], - "declarations": [ - { - "constant": false, - "id": 248, - "mutability": "mutable", - "name": "owner", - "nameLocation": "3408:5:1", - "nodeType": "VariableDeclaration", - "scope": 260, - "src": "3400:13:1", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - }, - "typeName": { - "id": 247, - "name": "address", - "nodeType": "ElementaryTypeName", - "src": "3400:7:1", - "stateMutability": "nonpayable", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "visibility": "internal" - } - ], - "id": 251, - "initialValue": { - "arguments": [], - "expression": { - "argumentTypes": [], - "id": 249, - "name": "_msgSender", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 767, - "src": "3416:10:1", - "typeDescriptions": { - "typeIdentifier": "t_function_internal_view$__$returns$_t_address_$", - "typeString": "function () view returns (address)" - } - }, - "id": 250, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "nameLocations": [], - "names": [], - "nodeType": "FunctionCall", - "src": "3416:12:1", - "tryCall": false, - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "nodeType": "VariableDeclarationStatement", - "src": "3400:28:1" - }, - { - "expression": { - "arguments": [ - { - "id": 253, - "name": "owner", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 248, - "src": "3448:5:1", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - { - "id": 254, - "name": "to", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 240, - "src": "3455:2:1", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - { - "id": 255, - "name": "value", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 242, - "src": "3459:5:1", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_address", - "typeString": "address" - }, - { - "typeIdentifier": "t_address", - "typeString": "address" - }, - { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - ], - "id": 252, - "name": "_transfer", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 381, - "src": "3438:9:1", - "typeDescriptions": { - "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$__$", - "typeString": "function (address,address,uint256)" - } - }, - "id": 256, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "nameLocations": [], - "names": [], - "nodeType": "FunctionCall", - "src": "3438:27:1", - "tryCall": false, - "typeDescriptions": { - "typeIdentifier": "t_tuple$__$", - "typeString": "tuple()" - } - }, - "id": 257, - "nodeType": "ExpressionStatement", - "src": "3438:27:1" - }, - { - "expression": { - "hexValue": "74727565", - "id": 258, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "bool", - "lValueRequested": false, - "nodeType": "Literal", - "src": "3482:4:1", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - }, - "value": "true" - }, - "functionReturnParameters": 246, - "id": 259, - "nodeType": "Return", - "src": "3475:11:1" - } - ] - }, - "documentation": { - "id": 238, - "nodeType": "StructuredDocumentation", - "src": "3126:184:1", - "text": " @dev See {IERC20-transfer}.\n Requirements:\n - `to` cannot be the zero address.\n - the caller must have a balance of at least `value`." - }, - "functionSelector": "a9059cbb", - "id": 261, - "implemented": true, - "kind": "function", - "modifiers": [], - "name": "transfer", - "nameLocation": "3324:8:1", - "nodeType": "FunctionDefinition", - "parameters": { - "id": 243, - "nodeType": "ParameterList", - "parameters": [ - { - "constant": false, - "id": 240, - "mutability": "mutable", - "name": "to", - "nameLocation": "3341:2:1", - "nodeType": "VariableDeclaration", - "scope": 261, - "src": "3333:10:1", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - }, - "typeName": { - "id": 239, - "name": "address", - "nodeType": "ElementaryTypeName", - "src": "3333:7:1", - "stateMutability": "nonpayable", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "visibility": "internal" - }, - { - "constant": false, - "id": 242, - "mutability": "mutable", - "name": "value", - "nameLocation": "3353:5:1", - "nodeType": "VariableDeclaration", - "scope": 261, - "src": "3345:13:1", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "typeName": { - "id": 241, - "name": "uint256", - "nodeType": "ElementaryTypeName", - "src": "3345:7:1", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "visibility": "internal" - } - ], - "src": "3332:27:1" - }, - "returnParameters": { - "id": 246, - "nodeType": "ParameterList", - "parameters": [ - { - "constant": false, - "id": 245, - "mutability": "mutable", - "name": "", - "nameLocation": "-1:-1:-1", - "nodeType": "VariableDeclaration", - "scope": 261, - "src": "3384:4:1", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - }, - "typeName": { - "id": 244, - "name": "bool", - "nodeType": "ElementaryTypeName", - "src": "3384:4:1", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - }, - "visibility": "internal" - } - ], - "src": "3383:6:1" - }, - "scope": 651, - "src": "3315:178:1", - "stateMutability": "nonpayable", - "virtual": true, - "visibility": "public" - }, - { - "baseFunctions": [ - 706 - ], - "body": { - "id": 277, - "nodeType": "Block", - "src": "3640:51:1", - "statements": [ - { - "expression": { - "baseExpression": { - "baseExpression": { - "id": 271, - "name": "_allowances", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 165, - "src": "3657:11:1", - "typeDescriptions": { - "typeIdentifier": "t_mapping$_t_address_$_t_mapping$_t_address_$_t_uint256_$_$", - "typeString": "mapping(address => mapping(address => uint256))" - } - }, - "id": 273, - "indexExpression": { - "id": 272, - "name": "owner", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 264, - "src": "3669:5:1", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": false, - "nodeType": "IndexAccess", - "src": "3657:18:1", - "typeDescriptions": { - "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$", - "typeString": "mapping(address => uint256)" - } - }, - "id": 275, - "indexExpression": { - "id": 274, - "name": "spender", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 266, - "src": "3676:7:1", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": false, - "nodeType": "IndexAccess", - "src": "3657:27:1", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "functionReturnParameters": 270, - "id": 276, - "nodeType": "Return", - "src": "3650:34:1" - } - ] - }, - "documentation": { - "id": 262, - "nodeType": "StructuredDocumentation", - "src": "3499:47:1", - "text": " @dev See {IERC20-allowance}." - }, - "functionSelector": "dd62ed3e", - "id": 278, - "implemented": true, - "kind": "function", - "modifiers": [], - "name": "allowance", - "nameLocation": "3560:9:1", - "nodeType": "FunctionDefinition", - "parameters": { - "id": 267, - "nodeType": "ParameterList", - "parameters": [ - { - "constant": false, - "id": 264, - "mutability": "mutable", - "name": "owner", - "nameLocation": "3578:5:1", - "nodeType": "VariableDeclaration", - "scope": 278, - "src": "3570:13:1", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - }, - "typeName": { - "id": 263, - "name": "address", - "nodeType": "ElementaryTypeName", - "src": "3570:7:1", - "stateMutability": "nonpayable", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "visibility": "internal" - }, - { - "constant": false, - "id": 266, - "mutability": "mutable", - "name": "spender", - "nameLocation": "3593:7:1", - "nodeType": "VariableDeclaration", - "scope": 278, - "src": "3585:15:1", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - }, - "typeName": { - "id": 265, - "name": "address", - "nodeType": "ElementaryTypeName", - "src": "3585:7:1", - "stateMutability": "nonpayable", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "visibility": "internal" - } - ], - "src": "3569:32:1" - }, - "returnParameters": { - "id": 270, - "nodeType": "ParameterList", - "parameters": [ - { - "constant": false, - "id": 269, - "mutability": "mutable", - "name": "", - "nameLocation": "-1:-1:-1", - "nodeType": "VariableDeclaration", - "scope": 278, - "src": "3631:7:1", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "typeName": { - "id": 268, - "name": "uint256", - "nodeType": "ElementaryTypeName", - "src": "3631:7:1", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "visibility": "internal" - } - ], - "src": "3630:9:1" - }, - "scope": 651, - "src": "3551:140:1", - "stateMutability": "view", - "virtual": true, - "visibility": "public" - }, - { - "baseFunctions": [ - 716 - ], - "body": { - "id": 301, - "nodeType": "Block", - "src": "4077:107:1", - "statements": [ - { - "assignments": [ - 289 - ], - "declarations": [ - { - "constant": false, - "id": 289, - "mutability": "mutable", - "name": "owner", - "nameLocation": "4095:5:1", - "nodeType": "VariableDeclaration", - "scope": 301, - "src": "4087:13:1", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - }, - "typeName": { - "id": 288, - "name": "address", - "nodeType": "ElementaryTypeName", - "src": "4087:7:1", - "stateMutability": "nonpayable", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "visibility": "internal" - } - ], - "id": 292, - "initialValue": { - "arguments": [], - "expression": { - "argumentTypes": [], - "id": 290, - "name": "_msgSender", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 767, - "src": "4103:10:1", - "typeDescriptions": { - "typeIdentifier": "t_function_internal_view$__$returns$_t_address_$", - "typeString": "function () view returns (address)" - } - }, - "id": 291, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "nameLocations": [], - "names": [], - "nodeType": "FunctionCall", - "src": "4103:12:1", - "tryCall": false, - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "nodeType": "VariableDeclarationStatement", - "src": "4087:28:1" - }, - { - "expression": { - "arguments": [ - { - "id": 294, - "name": "owner", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 289, - "src": "4134:5:1", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - { - "id": 295, - "name": "spender", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 281, - "src": "4141:7:1", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - { - "id": 296, - "name": "value", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 283, - "src": "4150:5:1", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_address", - "typeString": "address" - }, - { - "typeIdentifier": "t_address", - "typeString": "address" - }, - { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - ], - "id": 293, - "name": "_approve", - "nodeType": "Identifier", - "overloadedDeclarations": [ - 542, - 602 - ], - "referencedDeclaration": 542, - "src": "4125:8:1", - "typeDescriptions": { - "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$__$", - "typeString": "function (address,address,uint256)" - } - }, - "id": 297, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "nameLocations": [], - "names": [], - "nodeType": "FunctionCall", - "src": "4125:31:1", - "tryCall": false, - "typeDescriptions": { - "typeIdentifier": "t_tuple$__$", - "typeString": "tuple()" - } - }, - "id": 298, - "nodeType": "ExpressionStatement", - "src": "4125:31:1" - }, - { - "expression": { - "hexValue": "74727565", - "id": 299, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "bool", - "lValueRequested": false, - "nodeType": "Literal", - "src": "4173:4:1", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - }, - "value": "true" - }, - "functionReturnParameters": 287, - "id": 300, - "nodeType": "Return", - "src": "4166:11:1" - } - ] - }, - "documentation": { - "id": 279, - "nodeType": "StructuredDocumentation", - "src": "3697:296:1", - "text": " @dev See {IERC20-approve}.\n NOTE: If `value` is the maximum `uint256`, the allowance is not updated on\n `transferFrom`. This is semantically equivalent to an infinite approval.\n Requirements:\n - `spender` cannot be the zero address." - }, - "functionSelector": "095ea7b3", - "id": 302, - "implemented": true, - "kind": "function", - "modifiers": [], - "name": "approve", - "nameLocation": "4007:7:1", - "nodeType": "FunctionDefinition", - "parameters": { - "id": 284, - "nodeType": "ParameterList", - "parameters": [ - { - "constant": false, - "id": 281, - "mutability": "mutable", - "name": "spender", - "nameLocation": "4023:7:1", - "nodeType": "VariableDeclaration", - "scope": 302, - "src": "4015:15:1", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - }, - "typeName": { - "id": 280, - "name": "address", - "nodeType": "ElementaryTypeName", - "src": "4015:7:1", - "stateMutability": "nonpayable", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "visibility": "internal" - }, - { - "constant": false, - "id": 283, - "mutability": "mutable", - "name": "value", - "nameLocation": "4040:5:1", - "nodeType": "VariableDeclaration", - "scope": 302, - "src": "4032:13:1", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "typeName": { - "id": 282, - "name": "uint256", - "nodeType": "ElementaryTypeName", - "src": "4032:7:1", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "visibility": "internal" - } - ], - "src": "4014:32:1" - }, - "returnParameters": { - "id": 287, - "nodeType": "ParameterList", - "parameters": [ - { - "constant": false, - "id": 286, - "mutability": "mutable", - "name": "", - "nameLocation": "-1:-1:-1", - "nodeType": "VariableDeclaration", - "scope": 302, - "src": "4071:4:1", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - }, - "typeName": { - "id": 285, - "name": "bool", - "nodeType": "ElementaryTypeName", - "src": "4071:4:1", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - }, - "visibility": "internal" - } - ], - "src": "4070:6:1" - }, - "scope": 651, - "src": "3998:186:1", - "stateMutability": "nonpayable", - "virtual": true, - "visibility": "public" - }, - { - "baseFunctions": [ - 728 - ], - "body": { - "id": 333, - "nodeType": "Block", - "src": "4869:151:1", - "statements": [ - { - "assignments": [ - 315 - ], - "declarations": [ - { - "constant": false, - "id": 315, - "mutability": "mutable", - "name": "spender", - "nameLocation": "4887:7:1", - "nodeType": "VariableDeclaration", - "scope": 333, - "src": "4879:15:1", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - }, - "typeName": { - "id": 314, - "name": "address", - "nodeType": "ElementaryTypeName", - "src": "4879:7:1", - "stateMutability": "nonpayable", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "visibility": "internal" - } - ], - "id": 318, - "initialValue": { - "arguments": [], - "expression": { - "argumentTypes": [], - "id": 316, - "name": "_msgSender", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 767, - "src": "4897:10:1", - "typeDescriptions": { - "typeIdentifier": "t_function_internal_view$__$returns$_t_address_$", - "typeString": "function () view returns (address)" - } - }, - "id": 317, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "nameLocations": [], - "names": [], - "nodeType": "FunctionCall", - "src": "4897:12:1", - "tryCall": false, - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "nodeType": "VariableDeclarationStatement", - "src": "4879:30:1" - }, - { - "expression": { - "arguments": [ - { - "id": 320, - "name": "from", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 305, - "src": "4935:4:1", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - { - "id": 321, - "name": "spender", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 315, - "src": "4941:7:1", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - { - "id": 322, - "name": "value", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 309, - "src": "4950:5:1", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_address", - "typeString": "address" - }, - { - "typeIdentifier": "t_address", - "typeString": "address" - }, - { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - ], - "id": 319, - "name": "_spendAllowance", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 650, - "src": "4919:15:1", - "typeDescriptions": { - "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$__$", - "typeString": "function (address,address,uint256)" - } - }, - "id": 323, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "nameLocations": [], - "names": [], - "nodeType": "FunctionCall", - "src": "4919:37:1", - "tryCall": false, - "typeDescriptions": { - "typeIdentifier": "t_tuple$__$", - "typeString": "tuple()" - } - }, - "id": 324, - "nodeType": "ExpressionStatement", - "src": "4919:37:1" - }, - { - "expression": { - "arguments": [ - { - "id": 326, - "name": "from", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 305, - "src": "4976:4:1", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - { - "id": 327, - "name": "to", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 307, - "src": "4982:2:1", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - { - "id": 328, - "name": "value", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 309, - "src": "4986:5:1", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_address", - "typeString": "address" - }, - { - "typeIdentifier": "t_address", - "typeString": "address" - }, - { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - ], - "id": 325, - "name": "_transfer", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 381, - "src": "4966:9:1", - "typeDescriptions": { - "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$__$", - "typeString": "function (address,address,uint256)" - } - }, - "id": 329, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "nameLocations": [], - "names": [], - "nodeType": "FunctionCall", - "src": "4966:26:1", - "tryCall": false, - "typeDescriptions": { - "typeIdentifier": "t_tuple$__$", - "typeString": "tuple()" - } - }, - "id": 330, - "nodeType": "ExpressionStatement", - "src": "4966:26:1" - }, - { - "expression": { - "hexValue": "74727565", - "id": 331, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "bool", - "lValueRequested": false, - "nodeType": "Literal", - "src": "5009:4:1", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - }, - "value": "true" - }, - "functionReturnParameters": 313, - "id": 332, - "nodeType": "Return", - "src": "5002:11:1" - } - ] - }, - "documentation": { - "id": 303, - "nodeType": "StructuredDocumentation", - "src": "4190:581:1", - "text": " @dev See {IERC20-transferFrom}.\n Skips emitting an {Approval} event indicating an allowance update. This is not\n required by the ERC. See {xref-ERC20-_approve-address-address-uint256-bool-}[_approve].\n NOTE: Does not update the allowance if the current allowance\n is the maximum `uint256`.\n Requirements:\n - `from` and `to` cannot be the zero address.\n - `from` must have a balance of at least `value`.\n - the caller must have allowance for ``from``'s tokens of at least\n `value`." - }, - "functionSelector": "23b872dd", - "id": 334, - "implemented": true, - "kind": "function", - "modifiers": [], - "name": "transferFrom", - "nameLocation": "4785:12:1", - "nodeType": "FunctionDefinition", - "parameters": { - "id": 310, - "nodeType": "ParameterList", - "parameters": [ - { - "constant": false, - "id": 305, - "mutability": "mutable", - "name": "from", - "nameLocation": "4806:4:1", - "nodeType": "VariableDeclaration", - "scope": 334, - "src": "4798:12:1", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - }, - "typeName": { - "id": 304, - "name": "address", - "nodeType": "ElementaryTypeName", - "src": "4798:7:1", - "stateMutability": "nonpayable", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "visibility": "internal" - }, - { - "constant": false, - "id": 307, - "mutability": "mutable", - "name": "to", - "nameLocation": "4820:2:1", - "nodeType": "VariableDeclaration", - "scope": 334, - "src": "4812:10:1", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - }, - "typeName": { - "id": 306, - "name": "address", - "nodeType": "ElementaryTypeName", - "src": "4812:7:1", - "stateMutability": "nonpayable", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "visibility": "internal" - }, - { - "constant": false, - "id": 309, - "mutability": "mutable", - "name": "value", - "nameLocation": "4832:5:1", - "nodeType": "VariableDeclaration", - "scope": 334, - "src": "4824:13:1", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "typeName": { - "id": 308, - "name": "uint256", - "nodeType": "ElementaryTypeName", - "src": "4824:7:1", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "visibility": "internal" - } - ], - "src": "4797:41:1" - }, - "returnParameters": { - "id": 313, - "nodeType": "ParameterList", - "parameters": [ - { - "constant": false, - "id": 312, - "mutability": "mutable", - "name": "", - "nameLocation": "-1:-1:-1", - "nodeType": "VariableDeclaration", - "scope": 334, - "src": "4863:4:1", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - }, - "typeName": { - "id": 311, - "name": "bool", - "nodeType": "ElementaryTypeName", - "src": "4863:4:1", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - }, - "visibility": "internal" - } - ], - "src": "4862:6:1" - }, - "scope": 651, - "src": "4776:244:1", - "stateMutability": "nonpayable", - "virtual": true, - "visibility": "public" - }, - { - "body": { - "id": 380, - "nodeType": "Block", - "src": "5462:231:1", - "statements": [ - { - "condition": { - "commonType": { - "typeIdentifier": "t_address", - "typeString": "address" - }, - "id": 349, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftExpression": { - "id": 344, - "name": "from", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 337, - "src": "5476:4:1", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "nodeType": "BinaryOperation", - "operator": "==", - "rightExpression": { - "arguments": [ - { - "hexValue": "30", - "id": 347, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "number", - "lValueRequested": false, - "nodeType": "Literal", - "src": "5492:1:1", - "typeDescriptions": { - "typeIdentifier": "t_rational_0_by_1", - "typeString": "int_const 0" - }, - "value": "0" - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_rational_0_by_1", - "typeString": "int_const 0" - } - ], - "id": 346, - "isConstant": false, - "isLValue": false, - "isPure": true, - "lValueRequested": false, - "nodeType": "ElementaryTypeNameExpression", - "src": "5484:7:1", - "typeDescriptions": { - "typeIdentifier": "t_type$_t_address_$", - "typeString": "type(address)" - }, - "typeName": { - "id": 345, - "name": "address", - "nodeType": "ElementaryTypeName", - "src": "5484:7:1", - "typeDescriptions": {} - } - }, - "id": 348, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "typeConversion", - "lValueRequested": false, - "nameLocations": [], - "names": [], - "nodeType": "FunctionCall", - "src": "5484:10:1", - "tryCall": false, - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "src": "5476:18:1", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - }, - "id": 358, - "nodeType": "IfStatement", - "src": "5472:86:1", - "trueBody": { - "id": 357, - "nodeType": "Block", - "src": "5496:62:1", - "statements": [ - { - "errorCall": { - "arguments": [ - { - "arguments": [ - { - "hexValue": "30", - "id": 353, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "number", - "lValueRequested": false, - "nodeType": "Literal", - "src": "5544:1:1", - "typeDescriptions": { - "typeIdentifier": "t_rational_0_by_1", - "typeString": "int_const 0" - }, - "value": "0" - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_rational_0_by_1", - "typeString": "int_const 0" - } - ], - "id": 352, - "isConstant": false, - "isLValue": false, - "isPure": true, - "lValueRequested": false, - "nodeType": "ElementaryTypeNameExpression", - "src": "5536:7:1", - "typeDescriptions": { - "typeIdentifier": "t_type$_t_address_$", - "typeString": "type(address)" - }, - "typeName": { - "id": 351, - "name": "address", - "nodeType": "ElementaryTypeName", - "src": "5536:7:1", - "typeDescriptions": {} - } - }, - "id": 354, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "typeConversion", - "lValueRequested": false, - "nameLocations": [], - "names": [], - "nodeType": "FunctionCall", - "src": "5536:10:1", - "tryCall": false, - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_address", - "typeString": "address" - } - ], - "id": 350, - "name": "ERC20InvalidSender", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 16, - "src": "5517:18:1", - "typeDescriptions": { - "typeIdentifier": "t_function_error_pure$_t_address_$returns$__$", - "typeString": "function (address) pure" - } - }, - "id": 355, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "nameLocations": [], - "names": [], - "nodeType": "FunctionCall", - "src": "5517:30:1", - "tryCall": false, - "typeDescriptions": { - "typeIdentifier": "t_tuple$__$", - "typeString": "tuple()" - } - }, - "id": 356, - "nodeType": "RevertStatement", - "src": "5510:37:1" - } - ] - } - }, - { - "condition": { - "commonType": { - "typeIdentifier": "t_address", - "typeString": "address" - }, - "id": 364, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftExpression": { - "id": 359, - "name": "to", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 339, - "src": "5571:2:1", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "nodeType": "BinaryOperation", - "operator": "==", - "rightExpression": { - "arguments": [ - { - "hexValue": "30", - "id": 362, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "number", - "lValueRequested": false, - "nodeType": "Literal", - "src": "5585:1:1", - "typeDescriptions": { - "typeIdentifier": "t_rational_0_by_1", - "typeString": "int_const 0" - }, - "value": "0" - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_rational_0_by_1", - "typeString": "int_const 0" - } - ], - "id": 361, - "isConstant": false, - "isLValue": false, - "isPure": true, - "lValueRequested": false, - "nodeType": "ElementaryTypeNameExpression", - "src": "5577:7:1", - "typeDescriptions": { - "typeIdentifier": "t_type$_t_address_$", - "typeString": "type(address)" - }, - "typeName": { - "id": 360, - "name": "address", - "nodeType": "ElementaryTypeName", - "src": "5577:7:1", - "typeDescriptions": {} - } - }, - "id": 363, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "typeConversion", - "lValueRequested": false, - "nameLocations": [], - "names": [], - "nodeType": "FunctionCall", - "src": "5577:10:1", - "tryCall": false, - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "src": "5571:16:1", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - }, - "id": 373, - "nodeType": "IfStatement", - "src": "5567:86:1", - "trueBody": { - "id": 372, - "nodeType": "Block", - "src": "5589:64:1", - "statements": [ - { - "errorCall": { - "arguments": [ - { - "arguments": [ - { - "hexValue": "30", - "id": 368, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "number", - "lValueRequested": false, - "nodeType": "Literal", - "src": "5639:1:1", - "typeDescriptions": { - "typeIdentifier": "t_rational_0_by_1", - "typeString": "int_const 0" - }, - "value": "0" - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_rational_0_by_1", - "typeString": "int_const 0" - } - ], - "id": 367, - "isConstant": false, - "isLValue": false, - "isPure": true, - "lValueRequested": false, - "nodeType": "ElementaryTypeNameExpression", - "src": "5631:7:1", - "typeDescriptions": { - "typeIdentifier": "t_type$_t_address_$", - "typeString": "type(address)" - }, - "typeName": { - "id": 366, - "name": "address", - "nodeType": "ElementaryTypeName", - "src": "5631:7:1", - "typeDescriptions": {} - } - }, - "id": 369, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "typeConversion", - "lValueRequested": false, - "nameLocations": [], - "names": [], - "nodeType": "FunctionCall", - "src": "5631:10:1", - "tryCall": false, - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_address", - "typeString": "address" - } - ], - "id": 365, - "name": "ERC20InvalidReceiver", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 21, - "src": "5610:20:1", - "typeDescriptions": { - "typeIdentifier": "t_function_error_pure$_t_address_$returns$__$", - "typeString": "function (address) pure" - } - }, - "id": 370, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "nameLocations": [], - "names": [], - "nodeType": "FunctionCall", - "src": "5610:32:1", - "tryCall": false, - "typeDescriptions": { - "typeIdentifier": "t_tuple$__$", - "typeString": "tuple()" - } - }, - "id": 371, - "nodeType": "RevertStatement", - "src": "5603:39:1" - } - ] - } - }, - { - "expression": { - "arguments": [ - { - "id": 375, - "name": "from", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 337, - "src": "5670:4:1", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - { - "id": 376, - "name": "to", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 339, - "src": "5676:2:1", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - { - "id": 377, - "name": "value", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 341, - "src": "5680:5:1", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_address", - "typeString": "address" - }, - { - "typeIdentifier": "t_address", - "typeString": "address" - }, - { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - ], - "id": 374, - "name": "_update", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 458, - "src": "5662:7:1", - "typeDescriptions": { - "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$__$", - "typeString": "function (address,address,uint256)" - } - }, - "id": 378, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "nameLocations": [], - "names": [], - "nodeType": "FunctionCall", - "src": "5662:24:1", - "tryCall": false, - "typeDescriptions": { - "typeIdentifier": "t_tuple$__$", - "typeString": "tuple()" - } - }, - "id": 379, - "nodeType": "ExpressionStatement", - "src": "5662:24:1" - } - ] - }, - "documentation": { - "id": 335, - "nodeType": "StructuredDocumentation", - "src": "5026:362:1", - "text": " @dev Moves a `value` amount of tokens from `from` to `to`.\n This internal function is equivalent to {transfer}, and can be used to\n e.g. implement automatic token fees, slashing mechanisms, etc.\n Emits a {Transfer} event.\n NOTE: This function is not virtual, {_update} should be overridden instead." - }, - "id": 381, - "implemented": true, - "kind": "function", - "modifiers": [], - "name": "_transfer", - "nameLocation": "5402:9:1", - "nodeType": "FunctionDefinition", - "parameters": { - "id": 342, - "nodeType": "ParameterList", - "parameters": [ - { - "constant": false, - "id": 337, - "mutability": "mutable", - "name": "from", - "nameLocation": "5420:4:1", - "nodeType": "VariableDeclaration", - "scope": 381, - "src": "5412:12:1", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - }, - "typeName": { - "id": 336, - "name": "address", - "nodeType": "ElementaryTypeName", - "src": "5412:7:1", - "stateMutability": "nonpayable", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "visibility": "internal" - }, - { - "constant": false, - "id": 339, - "mutability": "mutable", - "name": "to", - "nameLocation": "5434:2:1", - "nodeType": "VariableDeclaration", - "scope": 381, - "src": "5426:10:1", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - }, - "typeName": { - "id": 338, - "name": "address", - "nodeType": "ElementaryTypeName", - "src": "5426:7:1", - "stateMutability": "nonpayable", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "visibility": "internal" - }, - { - "constant": false, - "id": 341, - "mutability": "mutable", - "name": "value", - "nameLocation": "5446:5:1", - "nodeType": "VariableDeclaration", - "scope": 381, - "src": "5438:13:1", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "typeName": { - "id": 340, - "name": "uint256", - "nodeType": "ElementaryTypeName", - "src": "5438:7:1", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "visibility": "internal" - } - ], - "src": "5411:41:1" - }, - "returnParameters": { - "id": 343, - "nodeType": "ParameterList", - "parameters": [], - "src": "5462:0:1" - }, - "scope": 651, - "src": "5393:300:1", - "stateMutability": "nonpayable", - "virtual": false, - "visibility": "internal" - }, - { - "body": { - "id": 457, - "nodeType": "Block", - "src": "6083:1032:1", - "statements": [ - { - "condition": { - "commonType": { - "typeIdentifier": "t_address", - "typeString": "address" - }, - "id": 396, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftExpression": { - "id": 391, - "name": "from", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 384, - "src": "6097:4:1", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "nodeType": "BinaryOperation", - "operator": "==", - "rightExpression": { - "arguments": [ - { - "hexValue": "30", - "id": 394, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "number", - "lValueRequested": false, - "nodeType": "Literal", - "src": "6113:1:1", - "typeDescriptions": { - "typeIdentifier": "t_rational_0_by_1", - "typeString": "int_const 0" - }, - "value": "0" - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_rational_0_by_1", - "typeString": "int_const 0" - } - ], - "id": 393, - "isConstant": false, - "isLValue": false, - "isPure": true, - "lValueRequested": false, - "nodeType": "ElementaryTypeNameExpression", - "src": "6105:7:1", - "typeDescriptions": { - "typeIdentifier": "t_type$_t_address_$", - "typeString": "type(address)" - }, - "typeName": { - "id": 392, - "name": "address", - "nodeType": "ElementaryTypeName", - "src": "6105:7:1", - "typeDescriptions": {} - } - }, - "id": 395, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "typeConversion", - "lValueRequested": false, - "nameLocations": [], - "names": [], - "nodeType": "FunctionCall", - "src": "6105:10:1", - "tryCall": false, - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "src": "6097:18:1", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - }, - "falseBody": { - "id": 428, - "nodeType": "Block", - "src": "6271:362:1", - "statements": [ - { - "assignments": [ - 403 - ], - "declarations": [ - { - "constant": false, - "id": 403, - "mutability": "mutable", - "name": "fromBalance", - "nameLocation": "6293:11:1", - "nodeType": "VariableDeclaration", - "scope": 428, - "src": "6285:19:1", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "typeName": { - "id": 402, - "name": "uint256", - "nodeType": "ElementaryTypeName", - "src": "6285:7:1", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "visibility": "internal" - } - ], - "id": 407, - "initialValue": { - "baseExpression": { - "id": 404, - "name": "_balances", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 159, - "src": "6307:9:1", - "typeDescriptions": { - "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$", - "typeString": "mapping(address => uint256)" - } - }, - "id": 406, - "indexExpression": { - "id": 405, - "name": "from", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 384, - "src": "6317:4:1", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": false, - "nodeType": "IndexAccess", - "src": "6307:15:1", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "nodeType": "VariableDeclarationStatement", - "src": "6285:37:1" - }, - { - "condition": { - "commonType": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "id": 410, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftExpression": { - "id": 408, - "name": "fromBalance", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 403, - "src": "6340:11:1", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "nodeType": "BinaryOperation", - "operator": "<", - "rightExpression": { - "id": 409, - "name": "value", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 388, - "src": "6354:5:1", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "src": "6340:19:1", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - }, - "id": 418, - "nodeType": "IfStatement", - "src": "6336:115:1", - "trueBody": { - "id": 417, - "nodeType": "Block", - "src": "6361:90:1", - "statements": [ - { - "errorCall": { - "arguments": [ - { - "id": 412, - "name": "from", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 384, - "src": "6411:4:1", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - { - "id": 413, - "name": "fromBalance", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 403, - "src": "6417:11:1", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - { - "id": 414, - "name": "value", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 388, - "src": "6430:5:1", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_address", - "typeString": "address" - }, - { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - ], - "id": 411, - "name": "ERC20InsufficientBalance", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 11, - "src": "6386:24:1", - "typeDescriptions": { - "typeIdentifier": "t_function_error_pure$_t_address_$_t_uint256_$_t_uint256_$returns$__$", - "typeString": "function (address,uint256,uint256) pure" - } - }, - "id": 415, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "nameLocations": [], - "names": [], - "nodeType": "FunctionCall", - "src": "6386:50:1", - "tryCall": false, - "typeDescriptions": { - "typeIdentifier": "t_tuple$__$", - "typeString": "tuple()" - } - }, - "id": 416, - "nodeType": "RevertStatement", - "src": "6379:57:1" - } - ] - } - }, - { - "id": 427, - "nodeType": "UncheckedBlock", - "src": "6464:159:1", - "statements": [ - { - "expression": { - "id": 425, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftHandSide": { - "baseExpression": { - "id": 419, - "name": "_balances", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 159, - "src": "6571:9:1", - "typeDescriptions": { - "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$", - "typeString": "mapping(address => uint256)" - } - }, - "id": 421, - "indexExpression": { - "id": 420, - "name": "from", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 384, - "src": "6581:4:1", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": true, - "nodeType": "IndexAccess", - "src": "6571:15:1", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "nodeType": "Assignment", - "operator": "=", - "rightHandSide": { - "commonType": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "id": 424, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftExpression": { - "id": 422, - "name": "fromBalance", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 403, - "src": "6589:11:1", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "nodeType": "BinaryOperation", - "operator": "-", - "rightExpression": { - "id": 423, - "name": "value", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 388, - "src": "6603:5:1", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "src": "6589:19:1", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "src": "6571:37:1", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "id": 426, - "nodeType": "ExpressionStatement", - "src": "6571:37:1" - } - ] - } - ] - }, - "id": 429, - "nodeType": "IfStatement", - "src": "6093:540:1", - "trueBody": { - "id": 401, - "nodeType": "Block", - "src": "6117:148:1", - "statements": [ - { - "expression": { - "id": 399, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftHandSide": { - "id": 397, - "name": "_totalSupply", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 167, - "src": "6233:12:1", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "nodeType": "Assignment", - "operator": "+=", - "rightHandSide": { - "id": 398, - "name": "value", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 388, - "src": "6249:5:1", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "src": "6233:21:1", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "id": 400, - "nodeType": "ExpressionStatement", - "src": "6233:21:1" - } - ] - } - }, - { - "condition": { - "commonType": { - "typeIdentifier": "t_address", - "typeString": "address" - }, - "id": 435, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftExpression": { - "id": 430, - "name": "to", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 386, - "src": "6647:2:1", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "nodeType": "BinaryOperation", - "operator": "==", - "rightExpression": { - "arguments": [ - { - "hexValue": "30", - "id": 433, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "number", - "lValueRequested": false, - "nodeType": "Literal", - "src": "6661:1:1", - "typeDescriptions": { - "typeIdentifier": "t_rational_0_by_1", - "typeString": "int_const 0" - }, - "value": "0" - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_rational_0_by_1", - "typeString": "int_const 0" - } - ], - "id": 432, - "isConstant": false, - "isLValue": false, - "isPure": true, - "lValueRequested": false, - "nodeType": "ElementaryTypeNameExpression", - "src": "6653:7:1", - "typeDescriptions": { - "typeIdentifier": "t_type$_t_address_$", - "typeString": "type(address)" - }, - "typeName": { - "id": 431, - "name": "address", - "nodeType": "ElementaryTypeName", - "src": "6653:7:1", - "typeDescriptions": {} - } - }, - "id": 434, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "typeConversion", - "lValueRequested": false, - "nameLocations": [], - "names": [], - "nodeType": "FunctionCall", - "src": "6653:10:1", - "tryCall": false, - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "src": "6647:16:1", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - }, - "falseBody": { - "id": 449, - "nodeType": "Block", - "src": "6862:206:1", - "statements": [ - { - "id": 448, - "nodeType": "UncheckedBlock", - "src": "6876:182:1", - "statements": [ - { - "expression": { - "id": 446, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftHandSide": { - "baseExpression": { - "id": 442, - "name": "_balances", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 159, - "src": "7021:9:1", - "typeDescriptions": { - "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$", - "typeString": "mapping(address => uint256)" - } - }, - "id": 444, - "indexExpression": { - "id": 443, - "name": "to", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 386, - "src": "7031:2:1", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": true, - "nodeType": "IndexAccess", - "src": "7021:13:1", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "nodeType": "Assignment", - "operator": "+=", - "rightHandSide": { - "id": 445, - "name": "value", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 388, - "src": "7038:5:1", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "src": "7021:22:1", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "id": 447, - "nodeType": "ExpressionStatement", - "src": "7021:22:1" - } - ] - } - ] - }, - "id": 450, - "nodeType": "IfStatement", - "src": "6643:425:1", - "trueBody": { - "id": 441, - "nodeType": "Block", - "src": "6665:191:1", - "statements": [ - { - "id": 440, - "nodeType": "UncheckedBlock", - "src": "6679:167:1", - "statements": [ - { - "expression": { - "id": 438, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftHandSide": { - "id": 436, - "name": "_totalSupply", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 167, - "src": "6810:12:1", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "nodeType": "Assignment", - "operator": "-=", - "rightHandSide": { - "id": 437, - "name": "value", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 388, - "src": "6826:5:1", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "src": "6810:21:1", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "id": 439, - "nodeType": "ExpressionStatement", - "src": "6810:21:1" - } - ] - } - ] - } - }, - { - "eventCall": { - "arguments": [ - { - "id": 452, - "name": "from", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 384, - "src": "7092:4:1", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - { - "id": 453, - "name": "to", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 386, - "src": "7098:2:1", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - { - "id": 454, - "name": "value", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 388, - "src": "7102:5:1", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_address", - "typeString": "address" - }, - { - "typeIdentifier": "t_address", - "typeString": "address" - }, - { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - ], - "id": 451, - "name": "Transfer", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 663, - "src": "7083:8:1", - "typeDescriptions": { - "typeIdentifier": "t_function_event_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$__$", - "typeString": "function (address,address,uint256)" - } - }, - "id": 455, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "nameLocations": [], - "names": [], - "nodeType": "FunctionCall", - "src": "7083:25:1", - "tryCall": false, - "typeDescriptions": { - "typeIdentifier": "t_tuple$__$", - "typeString": "tuple()" - } - }, - "id": 456, - "nodeType": "EmitStatement", - "src": "7078:30:1" - } - ] - }, - "documentation": { - "id": 382, - "nodeType": "StructuredDocumentation", - "src": "5699:304:1", - "text": " @dev Transfers a `value` amount of tokens from `from` to `to`, or alternatively mints (or burns) if `from`\n (or `to`) is the zero address. All customizations to transfers, mints, and burns should be done by overriding\n this function.\n Emits a {Transfer} event." - }, - "id": 458, - "implemented": true, - "kind": "function", - "modifiers": [], - "name": "_update", - "nameLocation": "6017:7:1", - "nodeType": "FunctionDefinition", - "parameters": { - "id": 389, - "nodeType": "ParameterList", - "parameters": [ - { - "constant": false, - "id": 384, - "mutability": "mutable", - "name": "from", - "nameLocation": "6033:4:1", - "nodeType": "VariableDeclaration", - "scope": 458, - "src": "6025:12:1", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - }, - "typeName": { - "id": 383, - "name": "address", - "nodeType": "ElementaryTypeName", - "src": "6025:7:1", - "stateMutability": "nonpayable", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "visibility": "internal" - }, - { - "constant": false, - "id": 386, - "mutability": "mutable", - "name": "to", - "nameLocation": "6047:2:1", - "nodeType": "VariableDeclaration", - "scope": 458, - "src": "6039:10:1", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - }, - "typeName": { - "id": 385, - "name": "address", - "nodeType": "ElementaryTypeName", - "src": "6039:7:1", - "stateMutability": "nonpayable", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "visibility": "internal" - }, - { - "constant": false, - "id": 388, - "mutability": "mutable", - "name": "value", - "nameLocation": "6059:5:1", - "nodeType": "VariableDeclaration", - "scope": 458, - "src": "6051:13:1", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "typeName": { - "id": 387, - "name": "uint256", - "nodeType": "ElementaryTypeName", - "src": "6051:7:1", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "visibility": "internal" - } - ], - "src": "6024:41:1" - }, - "returnParameters": { - "id": 390, - "nodeType": "ParameterList", - "parameters": [], - "src": "6083:0:1" - }, - "scope": 651, - "src": "6008:1107:1", - "stateMutability": "nonpayable", - "virtual": true, - "visibility": "internal" - }, - { - "body": { - "id": 490, - "nodeType": "Block", - "src": "7514:152:1", - "statements": [ - { - "condition": { - "commonType": { - "typeIdentifier": "t_address", - "typeString": "address" - }, - "id": 471, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftExpression": { - "id": 466, - "name": "account", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 461, - "src": "7528:7:1", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "nodeType": "BinaryOperation", - "operator": "==", - "rightExpression": { - "arguments": [ - { - "hexValue": "30", - "id": 469, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "number", - "lValueRequested": false, - "nodeType": "Literal", - "src": "7547:1:1", - "typeDescriptions": { - "typeIdentifier": "t_rational_0_by_1", - "typeString": "int_const 0" - }, - "value": "0" - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_rational_0_by_1", - "typeString": "int_const 0" - } - ], - "id": 468, - "isConstant": false, - "isLValue": false, - "isPure": true, - "lValueRequested": false, - "nodeType": "ElementaryTypeNameExpression", - "src": "7539:7:1", - "typeDescriptions": { - "typeIdentifier": "t_type$_t_address_$", - "typeString": "type(address)" - }, - "typeName": { - "id": 467, - "name": "address", - "nodeType": "ElementaryTypeName", - "src": "7539:7:1", - "typeDescriptions": {} - } - }, - "id": 470, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "typeConversion", - "lValueRequested": false, - "nameLocations": [], - "names": [], - "nodeType": "FunctionCall", - "src": "7539:10:1", - "tryCall": false, - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "src": "7528:21:1", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - }, - "id": 480, - "nodeType": "IfStatement", - "src": "7524:91:1", - "trueBody": { - "id": 479, - "nodeType": "Block", - "src": "7551:64:1", - "statements": [ - { - "errorCall": { - "arguments": [ - { - "arguments": [ - { - "hexValue": "30", - "id": 475, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "number", - "lValueRequested": false, - "nodeType": "Literal", - "src": "7601:1:1", - "typeDescriptions": { - "typeIdentifier": "t_rational_0_by_1", - "typeString": "int_const 0" - }, - "value": "0" - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_rational_0_by_1", - "typeString": "int_const 0" - } - ], - "id": 474, - "isConstant": false, - "isLValue": false, - "isPure": true, - "lValueRequested": false, - "nodeType": "ElementaryTypeNameExpression", - "src": "7593:7:1", - "typeDescriptions": { - "typeIdentifier": "t_type$_t_address_$", - "typeString": "type(address)" - }, - "typeName": { - "id": 473, - "name": "address", - "nodeType": "ElementaryTypeName", - "src": "7593:7:1", - "typeDescriptions": {} - } - }, - "id": 476, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "typeConversion", - "lValueRequested": false, - "nameLocations": [], - "names": [], - "nodeType": "FunctionCall", - "src": "7593:10:1", - "tryCall": false, - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_address", - "typeString": "address" - } - ], - "id": 472, - "name": "ERC20InvalidReceiver", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 21, - "src": "7572:20:1", - "typeDescriptions": { - "typeIdentifier": "t_function_error_pure$_t_address_$returns$__$", - "typeString": "function (address) pure" - } - }, - "id": 477, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "nameLocations": [], - "names": [], - "nodeType": "FunctionCall", - "src": "7572:32:1", - "tryCall": false, - "typeDescriptions": { - "typeIdentifier": "t_tuple$__$", - "typeString": "tuple()" - } - }, - "id": 478, - "nodeType": "RevertStatement", - "src": "7565:39:1" - } - ] - } - }, - { - "expression": { - "arguments": [ - { - "arguments": [ - { - "hexValue": "30", - "id": 484, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "number", - "lValueRequested": false, - "nodeType": "Literal", - "src": "7640:1:1", - "typeDescriptions": { - "typeIdentifier": "t_rational_0_by_1", - "typeString": "int_const 0" - }, - "value": "0" - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_rational_0_by_1", - "typeString": "int_const 0" - } - ], - "id": 483, - "isConstant": false, - "isLValue": false, - "isPure": true, - "lValueRequested": false, - "nodeType": "ElementaryTypeNameExpression", - "src": "7632:7:1", - "typeDescriptions": { - "typeIdentifier": "t_type$_t_address_$", - "typeString": "type(address)" - }, - "typeName": { - "id": 482, - "name": "address", - "nodeType": "ElementaryTypeName", - "src": "7632:7:1", - "typeDescriptions": {} - } - }, - "id": 485, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "typeConversion", - "lValueRequested": false, - "nameLocations": [], - "names": [], - "nodeType": "FunctionCall", - "src": "7632:10:1", - "tryCall": false, - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - { - "id": 486, - "name": "account", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 461, - "src": "7644:7:1", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - { - "id": 487, - "name": "value", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 463, - "src": "7653:5:1", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_address", - "typeString": "address" - }, - { - "typeIdentifier": "t_address", - "typeString": "address" - }, - { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - ], - "id": 481, - "name": "_update", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 458, - "src": "7624:7:1", - "typeDescriptions": { - "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$__$", - "typeString": "function (address,address,uint256)" - } - }, - "id": 488, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "nameLocations": [], - "names": [], - "nodeType": "FunctionCall", - "src": "7624:35:1", - "tryCall": false, - "typeDescriptions": { - "typeIdentifier": "t_tuple$__$", - "typeString": "tuple()" - } - }, - "id": 489, - "nodeType": "ExpressionStatement", - "src": "7624:35:1" - } - ] - }, - "documentation": { - "id": 459, - "nodeType": "StructuredDocumentation", - "src": "7121:332:1", - "text": " @dev Creates a `value` amount of tokens and assigns them to `account`, by transferring it from address(0).\n Relies on the `_update` mechanism\n Emits a {Transfer} event with `from` set to the zero address.\n NOTE: This function is not virtual, {_update} should be overridden instead." - }, - "id": 491, - "implemented": true, - "kind": "function", - "modifiers": [], - "name": "_mint", - "nameLocation": "7467:5:1", - "nodeType": "FunctionDefinition", - "parameters": { - "id": 464, - "nodeType": "ParameterList", - "parameters": [ - { - "constant": false, - "id": 461, - "mutability": "mutable", - "name": "account", - "nameLocation": "7481:7:1", - "nodeType": "VariableDeclaration", - "scope": 491, - "src": "7473:15:1", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - }, - "typeName": { - "id": 460, - "name": "address", - "nodeType": "ElementaryTypeName", - "src": "7473:7:1", - "stateMutability": "nonpayable", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "visibility": "internal" - }, - { - "constant": false, - "id": 463, - "mutability": "mutable", - "name": "value", - "nameLocation": "7498:5:1", - "nodeType": "VariableDeclaration", - "scope": 491, - "src": "7490:13:1", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "typeName": { - "id": 462, - "name": "uint256", - "nodeType": "ElementaryTypeName", - "src": "7490:7:1", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "visibility": "internal" - } - ], - "src": "7472:32:1" - }, - "returnParameters": { - "id": 465, - "nodeType": "ParameterList", - "parameters": [], - "src": "7514:0:1" - }, - "scope": 651, - "src": "7458:208:1", - "stateMutability": "nonpayable", - "virtual": false, - "visibility": "internal" - }, - { - "body": { - "id": 523, - "nodeType": "Block", - "src": "8040:150:1", - "statements": [ - { - "condition": { - "commonType": { - "typeIdentifier": "t_address", - "typeString": "address" - }, - "id": 504, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftExpression": { - "id": 499, - "name": "account", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 494, - "src": "8054:7:1", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "nodeType": "BinaryOperation", - "operator": "==", - "rightExpression": { - "arguments": [ - { - "hexValue": "30", - "id": 502, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "number", - "lValueRequested": false, - "nodeType": "Literal", - "src": "8073:1:1", - "typeDescriptions": { - "typeIdentifier": "t_rational_0_by_1", - "typeString": "int_const 0" - }, - "value": "0" - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_rational_0_by_1", - "typeString": "int_const 0" - } - ], - "id": 501, - "isConstant": false, - "isLValue": false, - "isPure": true, - "lValueRequested": false, - "nodeType": "ElementaryTypeNameExpression", - "src": "8065:7:1", - "typeDescriptions": { - "typeIdentifier": "t_type$_t_address_$", - "typeString": "type(address)" - }, - "typeName": { - "id": 500, - "name": "address", - "nodeType": "ElementaryTypeName", - "src": "8065:7:1", - "typeDescriptions": {} - } - }, - "id": 503, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "typeConversion", - "lValueRequested": false, - "nameLocations": [], - "names": [], - "nodeType": "FunctionCall", - "src": "8065:10:1", - "tryCall": false, - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "src": "8054:21:1", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - }, - "id": 513, - "nodeType": "IfStatement", - "src": "8050:89:1", - "trueBody": { - "id": 512, - "nodeType": "Block", - "src": "8077:62:1", - "statements": [ - { - "errorCall": { - "arguments": [ - { - "arguments": [ - { - "hexValue": "30", - "id": 508, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "number", - "lValueRequested": false, - "nodeType": "Literal", - "src": "8125:1:1", - "typeDescriptions": { - "typeIdentifier": "t_rational_0_by_1", - "typeString": "int_const 0" - }, - "value": "0" - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_rational_0_by_1", - "typeString": "int_const 0" - } - ], - "id": 507, - "isConstant": false, - "isLValue": false, - "isPure": true, - "lValueRequested": false, - "nodeType": "ElementaryTypeNameExpression", - "src": "8117:7:1", - "typeDescriptions": { - "typeIdentifier": "t_type$_t_address_$", - "typeString": "type(address)" - }, - "typeName": { - "id": 506, - "name": "address", - "nodeType": "ElementaryTypeName", - "src": "8117:7:1", - "typeDescriptions": {} - } - }, - "id": 509, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "typeConversion", - "lValueRequested": false, - "nameLocations": [], - "names": [], - "nodeType": "FunctionCall", - "src": "8117:10:1", - "tryCall": false, - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_address", - "typeString": "address" - } - ], - "id": 505, - "name": "ERC20InvalidSender", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 16, - "src": "8098:18:1", - "typeDescriptions": { - "typeIdentifier": "t_function_error_pure$_t_address_$returns$__$", - "typeString": "function (address) pure" - } - }, - "id": 510, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "nameLocations": [], - "names": [], - "nodeType": "FunctionCall", - "src": "8098:30:1", - "tryCall": false, - "typeDescriptions": { - "typeIdentifier": "t_tuple$__$", - "typeString": "tuple()" - } - }, - "id": 511, - "nodeType": "RevertStatement", - "src": "8091:37:1" - } - ] - } - }, - { - "expression": { - "arguments": [ - { - "id": 515, - "name": "account", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 494, - "src": "8156:7:1", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - { - "arguments": [ - { - "hexValue": "30", - "id": 518, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "number", - "lValueRequested": false, - "nodeType": "Literal", - "src": "8173:1:1", - "typeDescriptions": { - "typeIdentifier": "t_rational_0_by_1", - "typeString": "int_const 0" - }, - "value": "0" - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_rational_0_by_1", - "typeString": "int_const 0" - } - ], - "id": 517, - "isConstant": false, - "isLValue": false, - "isPure": true, - "lValueRequested": false, - "nodeType": "ElementaryTypeNameExpression", - "src": "8165:7:1", - "typeDescriptions": { - "typeIdentifier": "t_type$_t_address_$", - "typeString": "type(address)" - }, - "typeName": { - "id": 516, - "name": "address", - "nodeType": "ElementaryTypeName", - "src": "8165:7:1", - "typeDescriptions": {} - } - }, - "id": 519, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "typeConversion", - "lValueRequested": false, - "nameLocations": [], - "names": [], - "nodeType": "FunctionCall", - "src": "8165:10:1", - "tryCall": false, - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - { - "id": 520, - "name": "value", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 496, - "src": "8177:5:1", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_address", - "typeString": "address" - }, - { - "typeIdentifier": "t_address", - "typeString": "address" - }, - { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - ], - "id": 514, - "name": "_update", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 458, - "src": "8148:7:1", - "typeDescriptions": { - "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$__$", - "typeString": "function (address,address,uint256)" - } - }, - "id": 521, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "nameLocations": [], - "names": [], - "nodeType": "FunctionCall", - "src": "8148:35:1", - "tryCall": false, - "typeDescriptions": { - "typeIdentifier": "t_tuple$__$", - "typeString": "tuple()" - } - }, - "id": 522, - "nodeType": "ExpressionStatement", - "src": "8148:35:1" - } - ] - }, - "documentation": { - "id": 492, - "nodeType": "StructuredDocumentation", - "src": "7672:307:1", - "text": " @dev Destroys a `value` amount of tokens from `account`, lowering the total supply.\n Relies on the `_update` mechanism.\n Emits a {Transfer} event with `to` set to the zero address.\n NOTE: This function is not virtual, {_update} should be overridden instead" - }, - "id": 524, - "implemented": true, - "kind": "function", - "modifiers": [], - "name": "_burn", - "nameLocation": "7993:5:1", - "nodeType": "FunctionDefinition", - "parameters": { - "id": 497, - "nodeType": "ParameterList", - "parameters": [ - { - "constant": false, - "id": 494, - "mutability": "mutable", - "name": "account", - "nameLocation": "8007:7:1", - "nodeType": "VariableDeclaration", - "scope": 524, - "src": "7999:15:1", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - }, - "typeName": { - "id": 493, - "name": "address", - "nodeType": "ElementaryTypeName", - "src": "7999:7:1", - "stateMutability": "nonpayable", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "visibility": "internal" - }, - { - "constant": false, - "id": 496, - "mutability": "mutable", - "name": "value", - "nameLocation": "8024:5:1", - "nodeType": "VariableDeclaration", - "scope": 524, - "src": "8016:13:1", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "typeName": { - "id": 495, - "name": "uint256", - "nodeType": "ElementaryTypeName", - "src": "8016:7:1", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "visibility": "internal" - } - ], - "src": "7998:32:1" - }, - "returnParameters": { - "id": 498, - "nodeType": "ParameterList", - "parameters": [], - "src": "8040:0:1" - }, - "scope": 651, - "src": "7984:206:1", - "stateMutability": "nonpayable", - "virtual": false, - "visibility": "internal" - }, - { - "body": { - "id": 541, - "nodeType": "Block", - "src": "8800:54:1", - "statements": [ - { - "expression": { - "arguments": [ - { - "id": 535, - "name": "owner", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 527, - "src": "8819:5:1", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - { - "id": 536, - "name": "spender", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 529, - "src": "8826:7:1", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - { - "id": 537, - "name": "value", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 531, - "src": "8835:5:1", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - { - "hexValue": "74727565", - "id": 538, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "bool", - "lValueRequested": false, - "nodeType": "Literal", - "src": "8842:4:1", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - }, - "value": "true" - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_address", - "typeString": "address" - }, - { - "typeIdentifier": "t_address", - "typeString": "address" - }, - { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - ], - "id": 534, - "name": "_approve", - "nodeType": "Identifier", - "overloadedDeclarations": [ - 542, - 602 - ], - "referencedDeclaration": 602, - "src": "8810:8:1", - "typeDescriptions": { - "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_address_$_t_uint256_$_t_bool_$returns$__$", - "typeString": "function (address,address,uint256,bool)" - } - }, - "id": 539, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "nameLocations": [], - "names": [], - "nodeType": "FunctionCall", - "src": "8810:37:1", - "tryCall": false, - "typeDescriptions": { - "typeIdentifier": "t_tuple$__$", - "typeString": "tuple()" - } - }, - "id": 540, - "nodeType": "ExpressionStatement", - "src": "8810:37:1" - } - ] - }, - "documentation": { - "id": 525, - "nodeType": "StructuredDocumentation", - "src": "8196:525:1", - "text": " @dev Sets `value` as the allowance of `spender` over the `owner` s tokens.\n This internal function is equivalent to `approve`, and can be used to\n e.g. set automatic allowances for certain subsystems, etc.\n Emits an {Approval} event.\n Requirements:\n - `owner` cannot be the zero address.\n - `spender` cannot be the zero address.\n Overrides to this logic should be done to the variant with an additional `bool emitEvent` argument." - }, - "id": 542, - "implemented": true, - "kind": "function", - "modifiers": [], - "name": "_approve", - "nameLocation": "8735:8:1", - "nodeType": "FunctionDefinition", - "parameters": { - "id": 532, - "nodeType": "ParameterList", - "parameters": [ - { - "constant": false, - "id": 527, - "mutability": "mutable", - "name": "owner", - "nameLocation": "8752:5:1", - "nodeType": "VariableDeclaration", - "scope": 542, - "src": "8744:13:1", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - }, - "typeName": { - "id": 526, - "name": "address", - "nodeType": "ElementaryTypeName", - "src": "8744:7:1", - "stateMutability": "nonpayable", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "visibility": "internal" - }, - { - "constant": false, - "id": 529, - "mutability": "mutable", - "name": "spender", - "nameLocation": "8767:7:1", - "nodeType": "VariableDeclaration", - "scope": 542, - "src": "8759:15:1", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - }, - "typeName": { - "id": 528, - "name": "address", - "nodeType": "ElementaryTypeName", - "src": "8759:7:1", - "stateMutability": "nonpayable", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "visibility": "internal" - }, - { - "constant": false, - "id": 531, - "mutability": "mutable", - "name": "value", - "nameLocation": "8784:5:1", - "nodeType": "VariableDeclaration", - "scope": 542, - "src": "8776:13:1", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "typeName": { - "id": 530, - "name": "uint256", - "nodeType": "ElementaryTypeName", - "src": "8776:7:1", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "visibility": "internal" - } - ], - "src": "8743:47:1" - }, - "returnParameters": { - "id": 533, - "nodeType": "ParameterList", - "parameters": [], - "src": "8800:0:1" - }, - "scope": 651, - "src": "8726:128:1", - "stateMutability": "nonpayable", - "virtual": false, - "visibility": "internal" - }, - { - "body": { - "id": 601, - "nodeType": "Block", - "src": "9799:334:1", - "statements": [ - { - "condition": { - "commonType": { - "typeIdentifier": "t_address", - "typeString": "address" - }, - "id": 559, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftExpression": { - "id": 554, - "name": "owner", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 545, - "src": "9813:5:1", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "nodeType": "BinaryOperation", - "operator": "==", - "rightExpression": { - "arguments": [ - { - "hexValue": "30", - "id": 557, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "number", - "lValueRequested": false, - "nodeType": "Literal", - "src": "9830:1:1", - "typeDescriptions": { - "typeIdentifier": "t_rational_0_by_1", - "typeString": "int_const 0" - }, - "value": "0" - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_rational_0_by_1", - "typeString": "int_const 0" - } - ], - "id": 556, - "isConstant": false, - "isLValue": false, - "isPure": true, - "lValueRequested": false, - "nodeType": "ElementaryTypeNameExpression", - "src": "9822:7:1", - "typeDescriptions": { - "typeIdentifier": "t_type$_t_address_$", - "typeString": "type(address)" - }, - "typeName": { - "id": 555, - "name": "address", - "nodeType": "ElementaryTypeName", - "src": "9822:7:1", - "typeDescriptions": {} - } - }, - "id": 558, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "typeConversion", - "lValueRequested": false, - "nameLocations": [], - "names": [], - "nodeType": "FunctionCall", - "src": "9822:10:1", - "tryCall": false, - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "src": "9813:19:1", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - }, - "id": 568, - "nodeType": "IfStatement", - "src": "9809:89:1", - "trueBody": { - "id": 567, - "nodeType": "Block", - "src": "9834:64:1", - "statements": [ - { - "errorCall": { - "arguments": [ - { - "arguments": [ - { - "hexValue": "30", - "id": 563, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "number", - "lValueRequested": false, - "nodeType": "Literal", - "src": "9884:1:1", - "typeDescriptions": { - "typeIdentifier": "t_rational_0_by_1", - "typeString": "int_const 0" - }, - "value": "0" - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_rational_0_by_1", - "typeString": "int_const 0" - } - ], - "id": 562, - "isConstant": false, - "isLValue": false, - "isPure": true, - "lValueRequested": false, - "nodeType": "ElementaryTypeNameExpression", - "src": "9876:7:1", - "typeDescriptions": { - "typeIdentifier": "t_type$_t_address_$", - "typeString": "type(address)" - }, - "typeName": { - "id": 561, - "name": "address", - "nodeType": "ElementaryTypeName", - "src": "9876:7:1", - "typeDescriptions": {} - } - }, - "id": 564, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "typeConversion", - "lValueRequested": false, - "nameLocations": [], - "names": [], - "nodeType": "FunctionCall", - "src": "9876:10:1", - "tryCall": false, - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_address", - "typeString": "address" - } - ], - "id": 560, - "name": "ERC20InvalidApprover", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 35, - "src": "9855:20:1", - "typeDescriptions": { - "typeIdentifier": "t_function_error_pure$_t_address_$returns$__$", - "typeString": "function (address) pure" - } - }, - "id": 565, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "nameLocations": [], - "names": [], - "nodeType": "FunctionCall", - "src": "9855:32:1", - "tryCall": false, - "typeDescriptions": { - "typeIdentifier": "t_tuple$__$", - "typeString": "tuple()" - } - }, - "id": 566, - "nodeType": "RevertStatement", - "src": "9848:39:1" - } - ] - } - }, - { - "condition": { - "commonType": { - "typeIdentifier": "t_address", - "typeString": "address" - }, - "id": 574, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftExpression": { - "id": 569, - "name": "spender", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 547, - "src": "9911:7:1", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "nodeType": "BinaryOperation", - "operator": "==", - "rightExpression": { - "arguments": [ - { - "hexValue": "30", - "id": 572, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "number", - "lValueRequested": false, - "nodeType": "Literal", - "src": "9930:1:1", - "typeDescriptions": { - "typeIdentifier": "t_rational_0_by_1", - "typeString": "int_const 0" - }, - "value": "0" - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_rational_0_by_1", - "typeString": "int_const 0" - } - ], - "id": 571, - "isConstant": false, - "isLValue": false, - "isPure": true, - "lValueRequested": false, - "nodeType": "ElementaryTypeNameExpression", - "src": "9922:7:1", - "typeDescriptions": { - "typeIdentifier": "t_type$_t_address_$", - "typeString": "type(address)" - }, - "typeName": { - "id": 570, - "name": "address", - "nodeType": "ElementaryTypeName", - "src": "9922:7:1", - "typeDescriptions": {} - } - }, - "id": 573, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "typeConversion", - "lValueRequested": false, - "nameLocations": [], - "names": [], - "nodeType": "FunctionCall", - "src": "9922:10:1", - "tryCall": false, - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "src": "9911:21:1", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - }, - "id": 583, - "nodeType": "IfStatement", - "src": "9907:90:1", - "trueBody": { - "id": 582, - "nodeType": "Block", - "src": "9934:63:1", - "statements": [ - { - "errorCall": { - "arguments": [ - { - "arguments": [ - { - "hexValue": "30", - "id": 578, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "number", - "lValueRequested": false, - "nodeType": "Literal", - "src": "9983:1:1", - "typeDescriptions": { - "typeIdentifier": "t_rational_0_by_1", - "typeString": "int_const 0" - }, - "value": "0" - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_rational_0_by_1", - "typeString": "int_const 0" - } - ], - "id": 577, - "isConstant": false, - "isLValue": false, - "isPure": true, - "lValueRequested": false, - "nodeType": "ElementaryTypeNameExpression", - "src": "9975:7:1", - "typeDescriptions": { - "typeIdentifier": "t_type$_t_address_$", - "typeString": "type(address)" - }, - "typeName": { - "id": 576, - "name": "address", - "nodeType": "ElementaryTypeName", - "src": "9975:7:1", - "typeDescriptions": {} - } - }, - "id": 579, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "typeConversion", - "lValueRequested": false, - "nameLocations": [], - "names": [], - "nodeType": "FunctionCall", - "src": "9975:10:1", - "tryCall": false, - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_address", - "typeString": "address" - } - ], - "id": 575, - "name": "ERC20InvalidSpender", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 40, - "src": "9955:19:1", - "typeDescriptions": { - "typeIdentifier": "t_function_error_pure$_t_address_$returns$__$", - "typeString": "function (address) pure" - } - }, - "id": 580, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "nameLocations": [], - "names": [], - "nodeType": "FunctionCall", - "src": "9955:31:1", - "tryCall": false, - "typeDescriptions": { - "typeIdentifier": "t_tuple$__$", - "typeString": "tuple()" - } - }, - "id": 581, - "nodeType": "RevertStatement", - "src": "9948:38:1" - } - ] - } - }, - { - "expression": { - "id": 590, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftHandSide": { - "baseExpression": { - "baseExpression": { - "id": 584, - "name": "_allowances", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 165, - "src": "10006:11:1", - "typeDescriptions": { - "typeIdentifier": "t_mapping$_t_address_$_t_mapping$_t_address_$_t_uint256_$_$", - "typeString": "mapping(address => mapping(address => uint256))" - } - }, - "id": 587, - "indexExpression": { - "id": 585, - "name": "owner", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 545, - "src": "10018:5:1", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": false, - "nodeType": "IndexAccess", - "src": "10006:18:1", - "typeDescriptions": { - "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$", - "typeString": "mapping(address => uint256)" - } - }, - "id": 588, - "indexExpression": { - "id": 586, - "name": "spender", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 547, - "src": "10025:7:1", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": true, - "nodeType": "IndexAccess", - "src": "10006:27:1", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "nodeType": "Assignment", - "operator": "=", - "rightHandSide": { - "id": 589, - "name": "value", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 549, - "src": "10036:5:1", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "src": "10006:35:1", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "id": 591, - "nodeType": "ExpressionStatement", - "src": "10006:35:1" - }, - { - "condition": { - "id": 592, - "name": "emitEvent", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 551, - "src": "10055:9:1", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - }, - "id": 600, - "nodeType": "IfStatement", - "src": "10051:76:1", - "trueBody": { - "id": 599, - "nodeType": "Block", - "src": "10066:61:1", - "statements": [ - { - "eventCall": { - "arguments": [ - { - "id": 594, - "name": "owner", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 545, - "src": "10094:5:1", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - { - "id": 595, - "name": "spender", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 547, - "src": "10101:7:1", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - { - "id": 596, - "name": "value", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 549, - "src": "10110:5:1", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_address", - "typeString": "address" - }, - { - "typeIdentifier": "t_address", - "typeString": "address" - }, - { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - ], - "id": 593, - "name": "Approval", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 672, - "src": "10085:8:1", - "typeDescriptions": { - "typeIdentifier": "t_function_event_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$__$", - "typeString": "function (address,address,uint256)" - } - }, - "id": 597, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "nameLocations": [], - "names": [], - "nodeType": "FunctionCall", - "src": "10085:31:1", - "tryCall": false, - "typeDescriptions": { - "typeIdentifier": "t_tuple$__$", - "typeString": "tuple()" - } - }, - "id": 598, - "nodeType": "EmitStatement", - "src": "10080:36:1" - } - ] - } - } - ] - }, - "documentation": { - "id": 543, - "nodeType": "StructuredDocumentation", - "src": "8860:836:1", - "text": " @dev Variant of {_approve} with an optional flag to enable or disable the {Approval} event.\n By default (when calling {_approve}) the flag is set to true. On the other hand, approval changes made by\n `_spendAllowance` during the `transferFrom` operation set the flag to false. This saves gas by not emitting any\n `Approval` event during `transferFrom` operations.\n Anyone who wishes to continue emitting `Approval` events on the`transferFrom` operation can force the flag to\n true using the following override:\n ```solidity\n function _approve(address owner, address spender, uint256 value, bool) internal virtual override {\n super._approve(owner, spender, value, true);\n }\n ```\n Requirements are the same as {_approve}." - }, - "id": 602, - "implemented": true, - "kind": "function", - "modifiers": [], - "name": "_approve", - "nameLocation": "9710:8:1", - "nodeType": "FunctionDefinition", - "parameters": { - "id": 552, - "nodeType": "ParameterList", - "parameters": [ - { - "constant": false, - "id": 545, - "mutability": "mutable", - "name": "owner", - "nameLocation": "9727:5:1", - "nodeType": "VariableDeclaration", - "scope": 602, - "src": "9719:13:1", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - }, - "typeName": { - "id": 544, - "name": "address", - "nodeType": "ElementaryTypeName", - "src": "9719:7:1", - "stateMutability": "nonpayable", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "visibility": "internal" - }, - { - "constant": false, - "id": 547, - "mutability": "mutable", - "name": "spender", - "nameLocation": "9742:7:1", - "nodeType": "VariableDeclaration", - "scope": 602, - "src": "9734:15:1", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - }, - "typeName": { - "id": 546, - "name": "address", - "nodeType": "ElementaryTypeName", - "src": "9734:7:1", - "stateMutability": "nonpayable", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "visibility": "internal" - }, - { - "constant": false, - "id": 549, - "mutability": "mutable", - "name": "value", - "nameLocation": "9759:5:1", - "nodeType": "VariableDeclaration", - "scope": 602, - "src": "9751:13:1", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "typeName": { - "id": 548, - "name": "uint256", - "nodeType": "ElementaryTypeName", - "src": "9751:7:1", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "visibility": "internal" - }, - { - "constant": false, - "id": 551, - "mutability": "mutable", - "name": "emitEvent", - "nameLocation": "9771:9:1", - "nodeType": "VariableDeclaration", - "scope": 602, - "src": "9766:14:1", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - }, - "typeName": { - "id": 550, - "name": "bool", - "nodeType": "ElementaryTypeName", - "src": "9766:4:1", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - }, - "visibility": "internal" - } - ], - "src": "9718:63:1" - }, - "returnParameters": { - "id": 553, - "nodeType": "ParameterList", - "parameters": [], - "src": "9799:0:1" - }, - "scope": 651, - "src": "9701:432:1", - "stateMutability": "nonpayable", - "virtual": true, - "visibility": "internal" - }, - { - "body": { - "id": 649, - "nodeType": "Block", - "src": "10504:388:1", - "statements": [ - { - "assignments": [ - 613 - ], - "declarations": [ - { - "constant": false, - "id": 613, - "mutability": "mutable", - "name": "currentAllowance", - "nameLocation": "10522:16:1", - "nodeType": "VariableDeclaration", - "scope": 649, - "src": "10514:24:1", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "typeName": { - "id": 612, - "name": "uint256", - "nodeType": "ElementaryTypeName", - "src": "10514:7:1", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "visibility": "internal" - } - ], - "id": 618, - "initialValue": { - "arguments": [ - { - "id": 615, - "name": "owner", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 605, - "src": "10551:5:1", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - { - "id": 616, - "name": "spender", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 607, - "src": "10558:7:1", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_address", - "typeString": "address" - }, - { - "typeIdentifier": "t_address", - "typeString": "address" - } - ], - "id": 614, - "name": "allowance", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 278, - "src": "10541:9:1", - "typeDescriptions": { - "typeIdentifier": "t_function_internal_view$_t_address_$_t_address_$returns$_t_uint256_$", - "typeString": "function (address,address) view returns (uint256)" - } - }, - "id": 617, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "nameLocations": [], - "names": [], - "nodeType": "FunctionCall", - "src": "10541:25:1", - "tryCall": false, - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "nodeType": "VariableDeclarationStatement", - "src": "10514:52:1" - }, - { - "condition": { - "commonType": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "id": 625, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftExpression": { - "id": 619, - "name": "currentAllowance", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 613, - "src": "10580:16:1", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "nodeType": "BinaryOperation", - "operator": "!=", - "rightExpression": { - "expression": { - "arguments": [ - { - "id": 622, - "isConstant": false, - "isLValue": false, - "isPure": true, - "lValueRequested": false, - "nodeType": "ElementaryTypeNameExpression", - "src": "10605:7:1", - "typeDescriptions": { - "typeIdentifier": "t_type$_t_uint256_$", - "typeString": "type(uint256)" - }, - "typeName": { - "id": 621, - "name": "uint256", - "nodeType": "ElementaryTypeName", - "src": "10605:7:1", - "typeDescriptions": {} - } - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_type$_t_uint256_$", - "typeString": "type(uint256)" - } - ], - "id": 620, - "name": "type", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": -27, - "src": "10600:4:1", - "typeDescriptions": { - "typeIdentifier": "t_function_metatype_pure$__$returns$__$", - "typeString": "function () pure" - } - }, - "id": 623, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "functionCall", - "lValueRequested": false, - "nameLocations": [], - "names": [], - "nodeType": "FunctionCall", - "src": "10600:13:1", - "tryCall": false, - "typeDescriptions": { - "typeIdentifier": "t_magic_meta_type_t_uint256", - "typeString": "type(uint256)" - } - }, - "id": 624, - "isConstant": false, - "isLValue": false, - "isPure": true, - "lValueRequested": false, - "memberLocation": "10614:3:1", - "memberName": "max", - "nodeType": "MemberAccess", - "src": "10600:17:1", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "src": "10580:37:1", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - }, - "id": 648, - "nodeType": "IfStatement", - "src": "10576:310:1", - "trueBody": { - "id": 647, - "nodeType": "Block", - "src": "10619:267:1", - "statements": [ - { - "condition": { - "commonType": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "id": 628, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftExpression": { - "id": 626, - "name": "currentAllowance", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 613, - "src": "10637:16:1", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "nodeType": "BinaryOperation", - "operator": "<", - "rightExpression": { - "id": 627, - "name": "value", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 609, - "src": "10656:5:1", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "src": "10637:24:1", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - }, - "id": 636, - "nodeType": "IfStatement", - "src": "10633:130:1", - "trueBody": { - "id": 635, - "nodeType": "Block", - "src": "10663:100:1", - "statements": [ - { - "errorCall": { - "arguments": [ - { - "id": 630, - "name": "spender", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 607, - "src": "10715:7:1", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - { - "id": 631, - "name": "currentAllowance", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 613, - "src": "10724:16:1", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - { - "id": 632, - "name": "value", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 609, - "src": "10742:5:1", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_address", - "typeString": "address" - }, - { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - ], - "id": 629, - "name": "ERC20InsufficientAllowance", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 30, - "src": "10688:26:1", - "typeDescriptions": { - "typeIdentifier": "t_function_error_pure$_t_address_$_t_uint256_$_t_uint256_$returns$__$", - "typeString": "function (address,uint256,uint256) pure" - } - }, - "id": 633, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "nameLocations": [], - "names": [], - "nodeType": "FunctionCall", - "src": "10688:60:1", - "tryCall": false, - "typeDescriptions": { - "typeIdentifier": "t_tuple$__$", - "typeString": "tuple()" - } - }, - "id": 634, - "nodeType": "RevertStatement", - "src": "10681:67:1" - } - ] - } - }, - { - "id": 646, - "nodeType": "UncheckedBlock", - "src": "10776:100:1", - "statements": [ - { - "expression": { - "arguments": [ - { - "id": 638, - "name": "owner", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 605, - "src": "10813:5:1", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - { - "id": 639, - "name": "spender", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 607, - "src": "10820:7:1", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - { - "commonType": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "id": 642, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftExpression": { - "id": 640, - "name": "currentAllowance", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 613, - "src": "10829:16:1", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "nodeType": "BinaryOperation", - "operator": "-", - "rightExpression": { - "id": 641, - "name": "value", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 609, - "src": "10848:5:1", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "src": "10829:24:1", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - { - "hexValue": "66616c7365", - "id": 643, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "bool", - "lValueRequested": false, - "nodeType": "Literal", - "src": "10855:5:1", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - }, - "value": "false" - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_address", - "typeString": "address" - }, - { - "typeIdentifier": "t_address", - "typeString": "address" - }, - { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - ], - "id": 637, - "name": "_approve", - "nodeType": "Identifier", - "overloadedDeclarations": [ - 542, - 602 - ], - "referencedDeclaration": 602, - "src": "10804:8:1", - "typeDescriptions": { - "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_address_$_t_uint256_$_t_bool_$returns$__$", - "typeString": "function (address,address,uint256,bool)" - } - }, - "id": 644, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "nameLocations": [], - "names": [], - "nodeType": "FunctionCall", - "src": "10804:57:1", - "tryCall": false, - "typeDescriptions": { - "typeIdentifier": "t_tuple$__$", - "typeString": "tuple()" - } - }, - "id": 645, - "nodeType": "ExpressionStatement", - "src": "10804:57:1" - } - ] - } - ] - } - } - ] - }, - "documentation": { - "id": 603, - "nodeType": "StructuredDocumentation", - "src": "10139:271:1", - "text": " @dev Updates `owner` s allowance for `spender` based on spent `value`.\n Does not update the allowance value in case of infinite allowance.\n Revert if not enough allowance is available.\n Does not emit an {Approval} event." - }, - "id": 650, - "implemented": true, - "kind": "function", - "modifiers": [], - "name": "_spendAllowance", - "nameLocation": "10424:15:1", - "nodeType": "FunctionDefinition", - "parameters": { - "id": 610, - "nodeType": "ParameterList", - "parameters": [ - { - "constant": false, - "id": 605, - "mutability": "mutable", - "name": "owner", - "nameLocation": "10448:5:1", - "nodeType": "VariableDeclaration", - "scope": 650, - "src": "10440:13:1", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - }, - "typeName": { - "id": 604, - "name": "address", - "nodeType": "ElementaryTypeName", - "src": "10440:7:1", - "stateMutability": "nonpayable", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "visibility": "internal" - }, - { - "constant": false, - "id": 607, - "mutability": "mutable", - "name": "spender", - "nameLocation": "10463:7:1", - "nodeType": "VariableDeclaration", - "scope": 650, - "src": "10455:15:1", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - }, - "typeName": { - "id": 606, - "name": "address", - "nodeType": "ElementaryTypeName", - "src": "10455:7:1", - "stateMutability": "nonpayable", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "visibility": "internal" - }, - { - "constant": false, - "id": 609, - "mutability": "mutable", - "name": "value", - "nameLocation": "10480:5:1", - "nodeType": "VariableDeclaration", - "scope": 650, - "src": "10472:13:1", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "typeName": { - "id": 608, - "name": "uint256", - "nodeType": "ElementaryTypeName", - "src": "10472:7:1", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "visibility": "internal" - } - ], - "src": "10439:47:1" - }, - "returnParameters": { - "id": 611, - "nodeType": "ParameterList", - "parameters": [], - "src": "10504:0:1" - }, - "scope": 651, - "src": "10415:477:1", - "stateMutability": "nonpayable", - "virtual": true, - "visibility": "internal" - } - ], - "scope": 652, - "src": "1106:9788:1", - "usedErrors": [ - 11, - 16, - 21, - 30, - 35, - 40 - ], - "usedEvents": [ - 663, - 672 - ] - } - ], - "src": "105:10790:1" - }, - "id": 1 - }, - "@openzeppelin/contracts/token/ERC20/IERC20.sol": { - "ast": { - "absolutePath": "@openzeppelin/contracts/token/ERC20/IERC20.sol", - "exportedSymbols": { - "IERC20": [ - 729 - ] - }, - "id": 730, - "license": "MIT", - "nodeType": "SourceUnit", - "nodes": [ - { - "id": 653, - "literals": [ - "solidity", - "^", - "0.8", - ".20" - ], - "nodeType": "PragmaDirective", - "src": "106:24:2" - }, - { - "abstract": false, - "baseContracts": [], - "canonicalName": "IERC20", - "contractDependencies": [], - "contractKind": "interface", - "documentation": { - "id": 654, - "nodeType": "StructuredDocumentation", - "src": "132:71:2", - "text": " @dev Interface of the ERC-20 standard as defined in the ERC." - }, - "fullyImplemented": false, - "id": 729, - "linearizedBaseContracts": [ - 729 - ], - "name": "IERC20", - "nameLocation": "214:6:2", - "nodeType": "ContractDefinition", - "nodes": [ - { - "anonymous": false, - "documentation": { - "id": 655, - "nodeType": "StructuredDocumentation", - "src": "227:158:2", - "text": " @dev Emitted when `value` tokens are moved from one account (`from`) to\n another (`to`).\n Note that `value` may be zero." - }, - "eventSelector": "ddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef", - "id": 663, - "name": "Transfer", - "nameLocation": "396:8:2", - "nodeType": "EventDefinition", - "parameters": { - "id": 662, - "nodeType": "ParameterList", - "parameters": [ - { - "constant": false, - "id": 657, - "indexed": true, - "mutability": "mutable", - "name": "from", - "nameLocation": "421:4:2", - "nodeType": "VariableDeclaration", - "scope": 663, - "src": "405:20:2", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - }, - "typeName": { - "id": 656, - "name": "address", - "nodeType": "ElementaryTypeName", - "src": "405:7:2", - "stateMutability": "nonpayable", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "visibility": "internal" - }, - { - "constant": false, - "id": 659, - "indexed": true, - "mutability": "mutable", - "name": "to", - "nameLocation": "443:2:2", - "nodeType": "VariableDeclaration", - "scope": 663, - "src": "427:18:2", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - }, - "typeName": { - "id": 658, - "name": "address", - "nodeType": "ElementaryTypeName", - "src": "427:7:2", - "stateMutability": "nonpayable", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "visibility": "internal" - }, - { - "constant": false, - "id": 661, - "indexed": false, - "mutability": "mutable", - "name": "value", - "nameLocation": "455:5:2", - "nodeType": "VariableDeclaration", - "scope": 663, - "src": "447:13:2", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "typeName": { - "id": 660, - "name": "uint256", - "nodeType": "ElementaryTypeName", - "src": "447:7:2", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "visibility": "internal" - } - ], - "src": "404:57:2" - }, - "src": "390:72:2" - }, - { - "anonymous": false, - "documentation": { - "id": 664, - "nodeType": "StructuredDocumentation", - "src": "468:148:2", - "text": " @dev Emitted when the allowance of a `spender` for an `owner` is set by\n a call to {approve}. `value` is the new allowance." - }, - "eventSelector": "8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925", - "id": 672, - "name": "Approval", - "nameLocation": "627:8:2", - "nodeType": "EventDefinition", - "parameters": { - "id": 671, - "nodeType": "ParameterList", - "parameters": [ - { - "constant": false, - "id": 666, - "indexed": true, - "mutability": "mutable", - "name": "owner", - "nameLocation": "652:5:2", - "nodeType": "VariableDeclaration", - "scope": 672, - "src": "636:21:2", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - }, - "typeName": { - "id": 665, - "name": "address", - "nodeType": "ElementaryTypeName", - "src": "636:7:2", - "stateMutability": "nonpayable", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "visibility": "internal" - }, - { - "constant": false, - "id": 668, - "indexed": true, - "mutability": "mutable", - "name": "spender", - "nameLocation": "675:7:2", - "nodeType": "VariableDeclaration", - "scope": 672, - "src": "659:23:2", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - }, - "typeName": { - "id": 667, - "name": "address", - "nodeType": "ElementaryTypeName", - "src": "659:7:2", - "stateMutability": "nonpayable", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "visibility": "internal" - }, - { - "constant": false, - "id": 670, - "indexed": false, - "mutability": "mutable", - "name": "value", - "nameLocation": "692:5:2", - "nodeType": "VariableDeclaration", - "scope": 672, - "src": "684:13:2", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "typeName": { - "id": 669, - "name": "uint256", - "nodeType": "ElementaryTypeName", - "src": "684:7:2", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "visibility": "internal" - } - ], - "src": "635:63:2" - }, - "src": "621:78:2" - }, - { - "documentation": { - "id": 673, - "nodeType": "StructuredDocumentation", - "src": "705:65:2", - "text": " @dev Returns the value of tokens in existence." - }, - "functionSelector": "18160ddd", - "id": 678, - "implemented": false, - "kind": "function", - "modifiers": [], - "name": "totalSupply", - "nameLocation": "784:11:2", - "nodeType": "FunctionDefinition", - "parameters": { - "id": 674, - "nodeType": "ParameterList", - "parameters": [], - "src": "795:2:2" - }, - "returnParameters": { - "id": 677, - "nodeType": "ParameterList", - "parameters": [ - { - "constant": false, - "id": 676, - "mutability": "mutable", - "name": "", - "nameLocation": "-1:-1:-1", - "nodeType": "VariableDeclaration", - "scope": 678, - "src": "821:7:2", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "typeName": { - "id": 675, - "name": "uint256", - "nodeType": "ElementaryTypeName", - "src": "821:7:2", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "visibility": "internal" - } - ], - "src": "820:9:2" - }, - "scope": 729, - "src": "775:55:2", - "stateMutability": "view", - "virtual": false, - "visibility": "external" - }, - { - "documentation": { - "id": 679, - "nodeType": "StructuredDocumentation", - "src": "836:71:2", - "text": " @dev Returns the value of tokens owned by `account`." - }, - "functionSelector": "70a08231", - "id": 686, - "implemented": false, - "kind": "function", - "modifiers": [], - "name": "balanceOf", - "nameLocation": "921:9:2", - "nodeType": "FunctionDefinition", - "parameters": { - "id": 682, - "nodeType": "ParameterList", - "parameters": [ - { - "constant": false, - "id": 681, - "mutability": "mutable", - "name": "account", - "nameLocation": "939:7:2", - "nodeType": "VariableDeclaration", - "scope": 686, - "src": "931:15:2", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - }, - "typeName": { - "id": 680, - "name": "address", - "nodeType": "ElementaryTypeName", - "src": "931:7:2", - "stateMutability": "nonpayable", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "visibility": "internal" - } - ], - "src": "930:17:2" - }, - "returnParameters": { - "id": 685, - "nodeType": "ParameterList", - "parameters": [ - { - "constant": false, - "id": 684, - "mutability": "mutable", - "name": "", - "nameLocation": "-1:-1:-1", - "nodeType": "VariableDeclaration", - "scope": 686, - "src": "971:7:2", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "typeName": { - "id": 683, - "name": "uint256", - "nodeType": "ElementaryTypeName", - "src": "971:7:2", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "visibility": "internal" - } - ], - "src": "970:9:2" - }, - "scope": 729, - "src": "912:68:2", - "stateMutability": "view", - "virtual": false, - "visibility": "external" - }, - { - "documentation": { - "id": 687, - "nodeType": "StructuredDocumentation", - "src": "986:213:2", - "text": " @dev Moves a `value` amount of tokens from the caller's account to `to`.\n Returns a boolean value indicating whether the operation succeeded.\n Emits a {Transfer} event." - }, - "functionSelector": "a9059cbb", - "id": 696, - "implemented": false, - "kind": "function", - "modifiers": [], - "name": "transfer", - "nameLocation": "1213:8:2", - "nodeType": "FunctionDefinition", - "parameters": { - "id": 692, - "nodeType": "ParameterList", - "parameters": [ - { - "constant": false, - "id": 689, - "mutability": "mutable", - "name": "to", - "nameLocation": "1230:2:2", - "nodeType": "VariableDeclaration", - "scope": 696, - "src": "1222:10:2", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - }, - "typeName": { - "id": 688, - "name": "address", - "nodeType": "ElementaryTypeName", - "src": "1222:7:2", - "stateMutability": "nonpayable", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "visibility": "internal" - }, - { - "constant": false, - "id": 691, - "mutability": "mutable", - "name": "value", - "nameLocation": "1242:5:2", - "nodeType": "VariableDeclaration", - "scope": 696, - "src": "1234:13:2", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "typeName": { - "id": 690, - "name": "uint256", - "nodeType": "ElementaryTypeName", - "src": "1234:7:2", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "visibility": "internal" - } - ], - "src": "1221:27:2" - }, - "returnParameters": { - "id": 695, - "nodeType": "ParameterList", - "parameters": [ - { - "constant": false, - "id": 694, - "mutability": "mutable", - "name": "", - "nameLocation": "-1:-1:-1", - "nodeType": "VariableDeclaration", - "scope": 696, - "src": "1267:4:2", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - }, - "typeName": { - "id": 693, - "name": "bool", - "nodeType": "ElementaryTypeName", - "src": "1267:4:2", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - }, - "visibility": "internal" - } - ], - "src": "1266:6:2" - }, - "scope": 729, - "src": "1204:69:2", - "stateMutability": "nonpayable", - "virtual": false, - "visibility": "external" - }, - { - "documentation": { - "id": 697, - "nodeType": "StructuredDocumentation", - "src": "1279:264:2", - "text": " @dev Returns the remaining number of tokens that `spender` will be\n allowed to spend on behalf of `owner` through {transferFrom}. This is\n zero by default.\n This value changes when {approve} or {transferFrom} are called." - }, - "functionSelector": "dd62ed3e", - "id": 706, - "implemented": false, - "kind": "function", - "modifiers": [], - "name": "allowance", - "nameLocation": "1557:9:2", - "nodeType": "FunctionDefinition", - "parameters": { - "id": 702, - "nodeType": "ParameterList", - "parameters": [ - { - "constant": false, - "id": 699, - "mutability": "mutable", - "name": "owner", - "nameLocation": "1575:5:2", - "nodeType": "VariableDeclaration", - "scope": 706, - "src": "1567:13:2", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - }, - "typeName": { - "id": 698, - "name": "address", - "nodeType": "ElementaryTypeName", - "src": "1567:7:2", - "stateMutability": "nonpayable", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "visibility": "internal" - }, - { - "constant": false, - "id": 701, - "mutability": "mutable", - "name": "spender", - "nameLocation": "1590:7:2", - "nodeType": "VariableDeclaration", - "scope": 706, - "src": "1582:15:2", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - }, - "typeName": { - "id": 700, - "name": "address", - "nodeType": "ElementaryTypeName", - "src": "1582:7:2", - "stateMutability": "nonpayable", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "visibility": "internal" - } - ], - "src": "1566:32:2" - }, - "returnParameters": { - "id": 705, - "nodeType": "ParameterList", - "parameters": [ - { - "constant": false, - "id": 704, - "mutability": "mutable", - "name": "", - "nameLocation": "-1:-1:-1", - "nodeType": "VariableDeclaration", - "scope": 706, - "src": "1622:7:2", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "typeName": { - "id": 703, - "name": "uint256", - "nodeType": "ElementaryTypeName", - "src": "1622:7:2", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "visibility": "internal" - } - ], - "src": "1621:9:2" - }, - "scope": 729, - "src": "1548:83:2", - "stateMutability": "view", - "virtual": false, - "visibility": "external" - }, - { - "documentation": { - "id": 707, - "nodeType": "StructuredDocumentation", - "src": "1637:667:2", - "text": " @dev Sets a `value` amount of tokens as the allowance of `spender` over the\n caller's tokens.\n Returns a boolean value indicating whether the operation succeeded.\n IMPORTANT: Beware that changing an allowance with this method brings the risk\n that someone may use both the old and the new allowance by unfortunate\n transaction ordering. One possible solution to mitigate this race\n condition is to first reduce the spender's allowance to 0 and set the\n desired value afterwards:\n https://github.com/ethereum/EIPs/issues/20#issuecomment-263524729\n Emits an {Approval} event." - }, - "functionSelector": "095ea7b3", - "id": 716, - "implemented": false, - "kind": "function", - "modifiers": [], - "name": "approve", - "nameLocation": "2318:7:2", - "nodeType": "FunctionDefinition", - "parameters": { - "id": 712, - "nodeType": "ParameterList", - "parameters": [ - { - "constant": false, - "id": 709, - "mutability": "mutable", - "name": "spender", - "nameLocation": "2334:7:2", - "nodeType": "VariableDeclaration", - "scope": 716, - "src": "2326:15:2", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - }, - "typeName": { - "id": 708, - "name": "address", - "nodeType": "ElementaryTypeName", - "src": "2326:7:2", - "stateMutability": "nonpayable", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "visibility": "internal" - }, - { - "constant": false, - "id": 711, - "mutability": "mutable", - "name": "value", - "nameLocation": "2351:5:2", - "nodeType": "VariableDeclaration", - "scope": 716, - "src": "2343:13:2", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "typeName": { - "id": 710, - "name": "uint256", - "nodeType": "ElementaryTypeName", - "src": "2343:7:2", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "visibility": "internal" - } - ], - "src": "2325:32:2" - }, - "returnParameters": { - "id": 715, - "nodeType": "ParameterList", - "parameters": [ - { - "constant": false, - "id": 714, - "mutability": "mutable", - "name": "", - "nameLocation": "-1:-1:-1", - "nodeType": "VariableDeclaration", - "scope": 716, - "src": "2376:4:2", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - }, - "typeName": { - "id": 713, - "name": "bool", - "nodeType": "ElementaryTypeName", - "src": "2376:4:2", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - }, - "visibility": "internal" - } - ], - "src": "2375:6:2" - }, - "scope": 729, - "src": "2309:73:2", - "stateMutability": "nonpayable", - "virtual": false, - "visibility": "external" - }, - { - "documentation": { - "id": 717, - "nodeType": "StructuredDocumentation", - "src": "2388:297:2", - "text": " @dev Moves a `value` amount of tokens from `from` to `to` using the\n allowance mechanism. `value` is then deducted from the caller's\n allowance.\n Returns a boolean value indicating whether the operation succeeded.\n Emits a {Transfer} event." - }, - "functionSelector": "23b872dd", - "id": 728, - "implemented": false, - "kind": "function", - "modifiers": [], - "name": "transferFrom", - "nameLocation": "2699:12:2", - "nodeType": "FunctionDefinition", - "parameters": { - "id": 724, - "nodeType": "ParameterList", - "parameters": [ - { - "constant": false, - "id": 719, - "mutability": "mutable", - "name": "from", - "nameLocation": "2720:4:2", - "nodeType": "VariableDeclaration", - "scope": 728, - "src": "2712:12:2", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - }, - "typeName": { - "id": 718, - "name": "address", - "nodeType": "ElementaryTypeName", - "src": "2712:7:2", - "stateMutability": "nonpayable", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "visibility": "internal" - }, - { - "constant": false, - "id": 721, - "mutability": "mutable", - "name": "to", - "nameLocation": "2734:2:2", - "nodeType": "VariableDeclaration", - "scope": 728, - "src": "2726:10:2", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - }, - "typeName": { - "id": 720, - "name": "address", - "nodeType": "ElementaryTypeName", - "src": "2726:7:2", - "stateMutability": "nonpayable", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "visibility": "internal" - }, - { - "constant": false, - "id": 723, - "mutability": "mutable", - "name": "value", - "nameLocation": "2746:5:2", - "nodeType": "VariableDeclaration", - "scope": 728, - "src": "2738:13:2", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "typeName": { - "id": 722, - "name": "uint256", - "nodeType": "ElementaryTypeName", - "src": "2738:7:2", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "visibility": "internal" - } - ], - "src": "2711:41:2" - }, - "returnParameters": { - "id": 727, - "nodeType": "ParameterList", - "parameters": [ - { - "constant": false, - "id": 726, - "mutability": "mutable", - "name": "", - "nameLocation": "-1:-1:-1", - "nodeType": "VariableDeclaration", - "scope": 728, - "src": "2771:4:2", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - }, - "typeName": { - "id": 725, - "name": "bool", - "nodeType": "ElementaryTypeName", - "src": "2771:4:2", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - }, - "visibility": "internal" - } - ], - "src": "2770:6:2" - }, - "scope": 729, - "src": "2690:87:2", - "stateMutability": "nonpayable", - "virtual": false, - "visibility": "external" - } - ], - "scope": 730, - "src": "204:2575:2", - "usedErrors": [], - "usedEvents": [ - 663, - 672 - ] - } - ], - "src": "106:2674:2" - }, - "id": 2 - }, - "@openzeppelin/contracts/token/ERC20/extensions/IERC20Metadata.sol": { - "ast": { - "absolutePath": "@openzeppelin/contracts/token/ERC20/extensions/IERC20Metadata.sol", - "exportedSymbols": { - "IERC20": [ - 729 - ], - "IERC20Metadata": [ - 755 - ] - }, - "id": 756, - "license": "MIT", - "nodeType": "SourceUnit", - "nodes": [ - { - "id": 731, - "literals": [ - "solidity", - "^", - "0.8", - ".20" - ], - "nodeType": "PragmaDirective", - "src": "125:24:3" - }, - { - "absolutePath": "@openzeppelin/contracts/token/ERC20/IERC20.sol", - "file": "../IERC20.sol", - "id": 733, - "nameLocation": "-1:-1:-1", - "nodeType": "ImportDirective", - "scope": 756, - "sourceUnit": 730, - "src": "151:37:3", - "symbolAliases": [ - { - "foreign": { - "id": 732, - "name": "IERC20", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 729, - "src": "159:6:3", - "typeDescriptions": {} - }, - "nameLocation": "-1:-1:-1" - } - ], - "unitAlias": "" - }, - { - "abstract": false, - "baseContracts": [ - { - "baseName": { - "id": 735, - "name": "IERC20", - "nameLocations": [ - "306:6:3" - ], - "nodeType": "IdentifierPath", - "referencedDeclaration": 729, - "src": "306:6:3" - }, - "id": 736, - "nodeType": "InheritanceSpecifier", - "src": "306:6:3" - } - ], - "canonicalName": "IERC20Metadata", - "contractDependencies": [], - "contractKind": "interface", - "documentation": { - "id": 734, - "nodeType": "StructuredDocumentation", - "src": "190:87:3", - "text": " @dev Interface for the optional metadata functions from the ERC-20 standard." - }, - "fullyImplemented": false, - "id": 755, - "linearizedBaseContracts": [ - 755, - 729 - ], - "name": "IERC20Metadata", - "nameLocation": "288:14:3", - "nodeType": "ContractDefinition", - "nodes": [ - { - "documentation": { - "id": 737, - "nodeType": "StructuredDocumentation", - "src": "319:54:3", - "text": " @dev Returns the name of the token." - }, - "functionSelector": "06fdde03", - "id": 742, - "implemented": false, - "kind": "function", - "modifiers": [], - "name": "name", - "nameLocation": "387:4:3", - "nodeType": "FunctionDefinition", - "parameters": { - "id": 738, - "nodeType": "ParameterList", - "parameters": [], - "src": "391:2:3" - }, - "returnParameters": { - "id": 741, - "nodeType": "ParameterList", - "parameters": [ - { - "constant": false, - "id": 740, - "mutability": "mutable", - "name": "", - "nameLocation": "-1:-1:-1", - "nodeType": "VariableDeclaration", - "scope": 742, - "src": "417:13:3", - "stateVariable": false, - "storageLocation": "memory", - "typeDescriptions": { - "typeIdentifier": "t_string_memory_ptr", - "typeString": "string" - }, - "typeName": { - "id": 739, - "name": "string", - "nodeType": "ElementaryTypeName", - "src": "417:6:3", - "typeDescriptions": { - "typeIdentifier": "t_string_storage_ptr", - "typeString": "string" - } - }, - "visibility": "internal" - } - ], - "src": "416:15:3" - }, - "scope": 755, - "src": "378:54:3", - "stateMutability": "view", - "virtual": false, - "visibility": "external" - }, - { - "documentation": { - "id": 743, - "nodeType": "StructuredDocumentation", - "src": "438:56:3", - "text": " @dev Returns the symbol of the token." - }, - "functionSelector": "95d89b41", - "id": 748, - "implemented": false, - "kind": "function", - "modifiers": [], - "name": "symbol", - "nameLocation": "508:6:3", - "nodeType": "FunctionDefinition", - "parameters": { - "id": 744, - "nodeType": "ParameterList", - "parameters": [], - "src": "514:2:3" - }, - "returnParameters": { - "id": 747, - "nodeType": "ParameterList", - "parameters": [ - { - "constant": false, - "id": 746, - "mutability": "mutable", - "name": "", - "nameLocation": "-1:-1:-1", - "nodeType": "VariableDeclaration", - "scope": 748, - "src": "540:13:3", - "stateVariable": false, - "storageLocation": "memory", - "typeDescriptions": { - "typeIdentifier": "t_string_memory_ptr", - "typeString": "string" - }, - "typeName": { - "id": 745, - "name": "string", - "nodeType": "ElementaryTypeName", - "src": "540:6:3", - "typeDescriptions": { - "typeIdentifier": "t_string_storage_ptr", - "typeString": "string" - } - }, - "visibility": "internal" - } - ], - "src": "539:15:3" - }, - "scope": 755, - "src": "499:56:3", - "stateMutability": "view", - "virtual": false, - "visibility": "external" - }, - { - "documentation": { - "id": 749, - "nodeType": "StructuredDocumentation", - "src": "561:65:3", - "text": " @dev Returns the decimals places of the token." - }, - "functionSelector": "313ce567", - "id": 754, - "implemented": false, - "kind": "function", - "modifiers": [], - "name": "decimals", - "nameLocation": "640:8:3", - "nodeType": "FunctionDefinition", - "parameters": { - "id": 750, - "nodeType": "ParameterList", - "parameters": [], - "src": "648:2:3" - }, - "returnParameters": { - "id": 753, - "nodeType": "ParameterList", - "parameters": [ - { - "constant": false, - "id": 752, - "mutability": "mutable", - "name": "", - "nameLocation": "-1:-1:-1", - "nodeType": "VariableDeclaration", - "scope": 754, - "src": "674:5:3", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_uint8", - "typeString": "uint8" - }, - "typeName": { - "id": 751, - "name": "uint8", - "nodeType": "ElementaryTypeName", - "src": "674:5:3", - "typeDescriptions": { - "typeIdentifier": "t_uint8", - "typeString": "uint8" - } - }, - "visibility": "internal" - } - ], - "src": "673:7:3" - }, - "scope": 755, - "src": "631:50:3", - "stateMutability": "view", - "virtual": false, - "visibility": "external" - } - ], - "scope": 756, - "src": "278:405:3", - "usedErrors": [], - "usedEvents": [ - 663, - 672 - ] - } - ], - "src": "125:559:3" - }, - "id": 3 - }, - "@openzeppelin/contracts/utils/Context.sol": { - "ast": { - "absolutePath": "@openzeppelin/contracts/utils/Context.sol", - "exportedSymbols": { - "Context": [ - 785 - ] - }, - "id": 786, - "license": "MIT", - "nodeType": "SourceUnit", - "nodes": [ - { - "id": 757, - "literals": [ - "solidity", - "^", - "0.8", - ".20" - ], - "nodeType": "PragmaDirective", - "src": "101:24:4" - }, - { - "abstract": true, - "baseContracts": [], - "canonicalName": "Context", - "contractDependencies": [], - "contractKind": "contract", - "documentation": { - "id": 758, - "nodeType": "StructuredDocumentation", - "src": "127:496:4", - "text": " @dev Provides information about the current execution context, including the\n sender of the transaction and its data. While these are generally available\n via msg.sender and msg.data, they should not be accessed in such a direct\n manner, since when dealing with meta-transactions the account sending and\n paying for execution may not be the actual sender (as far as an application\n is concerned).\n This contract is only required for intermediate, library-like contracts." - }, - "fullyImplemented": true, - "id": 785, - "linearizedBaseContracts": [ - 785 - ], - "name": "Context", - "nameLocation": "642:7:4", - "nodeType": "ContractDefinition", - "nodes": [ - { - "body": { - "id": 766, - "nodeType": "Block", - "src": "718:34:4", - "statements": [ - { - "expression": { - "expression": { - "id": 763, - "name": "msg", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": -15, - "src": "735:3:4", - "typeDescriptions": { - "typeIdentifier": "t_magic_message", - "typeString": "msg" - } - }, - "id": 764, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "memberLocation": "739:6:4", - "memberName": "sender", - "nodeType": "MemberAccess", - "src": "735:10:4", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "functionReturnParameters": 762, - "id": 765, - "nodeType": "Return", - "src": "728:17:4" - } - ] - }, - "id": 767, - "implemented": true, - "kind": "function", - "modifiers": [], - "name": "_msgSender", - "nameLocation": "665:10:4", - "nodeType": "FunctionDefinition", - "parameters": { - "id": 759, - "nodeType": "ParameterList", - "parameters": [], - "src": "675:2:4" - }, - "returnParameters": { - "id": 762, - "nodeType": "ParameterList", - "parameters": [ - { - "constant": false, - "id": 761, - "mutability": "mutable", - "name": "", - "nameLocation": "-1:-1:-1", - "nodeType": "VariableDeclaration", - "scope": 767, - "src": "709:7:4", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - }, - "typeName": { - "id": 760, - "name": "address", - "nodeType": "ElementaryTypeName", - "src": "709:7:4", - "stateMutability": "nonpayable", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "visibility": "internal" - } - ], - "src": "708:9:4" - }, - "scope": 785, - "src": "656:96:4", - "stateMutability": "view", - "virtual": true, - "visibility": "internal" - }, - { - "body": { - "id": 775, - "nodeType": "Block", - "src": "825:32:4", - "statements": [ - { - "expression": { - "expression": { - "id": 772, - "name": "msg", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": -15, - "src": "842:3:4", - "typeDescriptions": { - "typeIdentifier": "t_magic_message", - "typeString": "msg" - } - }, - "id": 773, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "memberLocation": "846:4:4", - "memberName": "data", - "nodeType": "MemberAccess", - "src": "842:8:4", - "typeDescriptions": { - "typeIdentifier": "t_bytes_calldata_ptr", - "typeString": "bytes calldata" - } - }, - "functionReturnParameters": 771, - "id": 774, - "nodeType": "Return", - "src": "835:15:4" - } - ] - }, - "id": 776, - "implemented": true, - "kind": "function", - "modifiers": [], - "name": "_msgData", - "nameLocation": "767:8:4", - "nodeType": "FunctionDefinition", - "parameters": { - "id": 768, - "nodeType": "ParameterList", - "parameters": [], - "src": "775:2:4" - }, - "returnParameters": { - "id": 771, - "nodeType": "ParameterList", - "parameters": [ - { - "constant": false, - "id": 770, - "mutability": "mutable", - "name": "", - "nameLocation": "-1:-1:-1", - "nodeType": "VariableDeclaration", - "scope": 776, - "src": "809:14:4", - "stateVariable": false, - "storageLocation": "calldata", - "typeDescriptions": { - "typeIdentifier": "t_bytes_calldata_ptr", - "typeString": "bytes" - }, - "typeName": { - "id": 769, - "name": "bytes", - "nodeType": "ElementaryTypeName", - "src": "809:5:4", - "typeDescriptions": { - "typeIdentifier": "t_bytes_storage_ptr", - "typeString": "bytes" - } - }, - "visibility": "internal" - } - ], - "src": "808:16:4" - }, - "scope": 785, - "src": "758:99:4", - "stateMutability": "view", - "virtual": true, - "visibility": "internal" - }, - { - "body": { - "id": 783, - "nodeType": "Block", - "src": "935:25:4", - "statements": [ - { - "expression": { - "hexValue": "30", - "id": 781, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "number", - "lValueRequested": false, - "nodeType": "Literal", - "src": "952:1:4", - "typeDescriptions": { - "typeIdentifier": "t_rational_0_by_1", - "typeString": "int_const 0" - }, - "value": "0" - }, - "functionReturnParameters": 780, - "id": 782, - "nodeType": "Return", - "src": "945:8:4" - } - ] - }, - "id": 784, - "implemented": true, - "kind": "function", - "modifiers": [], - "name": "_contextSuffixLength", - "nameLocation": "872:20:4", - "nodeType": "FunctionDefinition", - "parameters": { - "id": 777, - "nodeType": "ParameterList", - "parameters": [], - "src": "892:2:4" - }, - "returnParameters": { - "id": 780, - "nodeType": "ParameterList", - "parameters": [ - { - "constant": false, - "id": 779, - "mutability": "mutable", - "name": "", - "nameLocation": "-1:-1:-1", - "nodeType": "VariableDeclaration", - "scope": 784, - "src": "926:7:4", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "typeName": { - "id": 778, - "name": "uint256", - "nodeType": "ElementaryTypeName", - "src": "926:7:4", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "visibility": "internal" - } - ], - "src": "925:9:4" - }, - "scope": 785, - "src": "863:97:4", - "stateMutability": "view", - "virtual": true, - "visibility": "internal" - } - ], - "scope": 786, - "src": "624:338:4", - "usedErrors": [], - "usedEvents": [] - } - ], - "src": "101:862:4" - }, - "id": 4 - }, - "contracts/TokenVesting.sol": { - "ast": { - "absolutePath": "contracts/TokenVesting.sol", - "exportedSymbols": { - "IERC20": [ - 729 - ], - "SimpleVesting": [ - 957 - ] - }, - "id": 958, - "license": "MIT", - "nodeType": "SourceUnit", - "nodes": [ - { - "id": 787, - "literals": [ - "solidity", - "^", - "0.8", - ".20" - ], - "nodeType": "PragmaDirective", - "src": "32:24:5" - }, - { - "absolutePath": "@openzeppelin/contracts/token/ERC20/IERC20.sol", - "file": "@openzeppelin/contracts/token/ERC20/IERC20.sol", - "id": 788, - "nameLocation": "-1:-1:-1", - "nodeType": "ImportDirective", - "scope": 958, - "sourceUnit": 730, - "src": "58:56:5", - "symbolAliases": [], - "unitAlias": "" - }, - { - "abstract": false, - "baseContracts": [], - "canonicalName": "SimpleVesting", - "contractDependencies": [], - "contractKind": "contract", - "fullyImplemented": true, - "id": 957, - "linearizedBaseContracts": [ - 957 - ], - "name": "SimpleVesting", - "nameLocation": "125:13:5", - "nodeType": "ContractDefinition", - "nodes": [ - { - "constant": false, - "functionSelector": "fc0c546a", - "id": 791, - "mutability": "mutable", - "name": "token", - "nameLocation": "159:5:5", - "nodeType": "VariableDeclaration", - "scope": 957, - "src": "145:19:5", - "stateVariable": true, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_contract$_IERC20_$729", - "typeString": "contract IERC20" - }, - "typeName": { - "id": 790, - "nodeType": "UserDefinedTypeName", - "pathNode": { - "id": 789, - "name": "IERC20", - "nameLocations": [ - "145:6:5" - ], - "nodeType": "IdentifierPath", - "referencedDeclaration": 729, - "src": "145:6:5" - }, - "referencedDeclaration": 729, - "src": "145:6:5", - "typeDescriptions": { - "typeIdentifier": "t_contract$_IERC20_$729", - "typeString": "contract IERC20" - } - }, - "visibility": "public" - }, - { - "constant": false, - "functionSelector": "f851a440", - "id": 793, - "mutability": "mutable", - "name": "admin", - "nameLocation": "185:5:5", - "nodeType": "VariableDeclaration", - "scope": 957, - "src": "170:20:5", - "stateVariable": true, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - }, - "typeName": { - "id": 792, - "name": "address", - "nodeType": "ElementaryTypeName", - "src": "170:7:5", - "stateMutability": "nonpayable", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "visibility": "public" - }, - { - "constant": false, - "functionSelector": "384711cc", - "id": 797, - "mutability": "mutable", - "name": "vestedAmount", - "nameLocation": "232:12:5", - "nodeType": "VariableDeclaration", - "scope": 957, - "src": "197:47:5", - "stateVariable": true, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$", - "typeString": "mapping(address => uint256)" - }, - "typeName": { - "id": 796, - "keyName": "", - "keyNameLocation": "-1:-1:-1", - "keyType": { - "id": 794, - "name": "address", - "nodeType": "ElementaryTypeName", - "src": "205:7:5", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "nodeType": "Mapping", - "src": "197:27:5", - "typeDescriptions": { - "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$", - "typeString": "mapping(address => uint256)" - }, - "valueName": "", - "valueNameLocation": "-1:-1:-1", - "valueType": { - "id": 795, - "name": "uint256", - "nodeType": "ElementaryTypeName", - "src": "216:7:5", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - } - }, - "visibility": "public" - }, - { - "constant": false, - "functionSelector": "2a918c3d", - "id": 801, - "mutability": "mutable", - "name": "vestingEnd", - "nameLocation": "285:10:5", - "nodeType": "VariableDeclaration", - "scope": 957, - "src": "250:45:5", - "stateVariable": true, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$", - "typeString": "mapping(address => uint256)" - }, - "typeName": { - "id": 800, - "keyName": "", - "keyNameLocation": "-1:-1:-1", - "keyType": { - "id": 798, - "name": "address", - "nodeType": "ElementaryTypeName", - "src": "258:7:5", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "nodeType": "Mapping", - "src": "250:27:5", - "typeDescriptions": { - "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$", - "typeString": "mapping(address => uint256)" - }, - "valueName": "", - "valueNameLocation": "-1:-1:-1", - "valueType": { - "id": 799, - "name": "uint256", - "nodeType": "ElementaryTypeName", - "src": "269:7:5", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - } - }, - "visibility": "public" - }, - { - "anonymous": false, - "eventSelector": "9ade76f4385de306666dfb21a52b27d52db0fde8ad0f515fa261f532cac60d21", - "id": 809, - "name": "VestingCreated", - "nameLocation": "308:14:5", - "nodeType": "EventDefinition", - "parameters": { - "id": 808, - "nodeType": "ParameterList", - "parameters": [ - { - "constant": false, - "id": 803, - "indexed": false, - "mutability": "mutable", - "name": "beneficiary", - "nameLocation": "331:11:5", - "nodeType": "VariableDeclaration", - "scope": 809, - "src": "323:19:5", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - }, - "typeName": { - "id": 802, - "name": "address", - "nodeType": "ElementaryTypeName", - "src": "323:7:5", - "stateMutability": "nonpayable", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "visibility": "internal" - }, - { - "constant": false, - "id": 805, - "indexed": false, - "mutability": "mutable", - "name": "amount", - "nameLocation": "352:6:5", - "nodeType": "VariableDeclaration", - "scope": 809, - "src": "344:14:5", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "typeName": { - "id": 804, - "name": "uint256", - "nodeType": "ElementaryTypeName", - "src": "344:7:5", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "visibility": "internal" - }, - { - "constant": false, - "id": 807, - "indexed": false, - "mutability": "mutable", - "name": "endTime", - "nameLocation": "368:7:5", - "nodeType": "VariableDeclaration", - "scope": 809, - "src": "360:15:5", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "typeName": { - "id": 806, - "name": "uint256", - "nodeType": "ElementaryTypeName", - "src": "360:7:5", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "visibility": "internal" - } - ], - "src": "322:54:5" - }, - "src": "302:75:5" - }, - { - "anonymous": false, - "eventSelector": "896e034966eaaf1adc54acc0f257056febbd300c9e47182cf761982cf1f5e430", - "id": 815, - "name": "TokensClaimed", - "nameLocation": "388:13:5", - "nodeType": "EventDefinition", - "parameters": { - "id": 814, - "nodeType": "ParameterList", - "parameters": [ - { - "constant": false, - "id": 811, - "indexed": false, - "mutability": "mutable", - "name": "beneficiary", - "nameLocation": "410:11:5", - "nodeType": "VariableDeclaration", - "scope": 815, - "src": "402:19:5", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - }, - "typeName": { - "id": 810, - "name": "address", - "nodeType": "ElementaryTypeName", - "src": "402:7:5", - "stateMutability": "nonpayable", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "visibility": "internal" - }, - { - "constant": false, - "id": 813, - "indexed": false, - "mutability": "mutable", - "name": "amount", - "nameLocation": "431:6:5", - "nodeType": "VariableDeclaration", - "scope": 815, - "src": "423:14:5", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "typeName": { - "id": 812, - "name": "uint256", - "nodeType": "ElementaryTypeName", - "src": "423:7:5", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "visibility": "internal" - } - ], - "src": "401:37:5" - }, - "src": "382:57:5" - }, - { - "body": { - "id": 831, - "nodeType": "Block", - "src": "473:67:5", - "statements": [ - { - "expression": { - "id": 824, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftHandSide": { - "id": 820, - "name": "token", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 791, - "src": "483:5:5", - "typeDescriptions": { - "typeIdentifier": "t_contract$_IERC20_$729", - "typeString": "contract IERC20" - } - }, - "nodeType": "Assignment", - "operator": "=", - "rightHandSide": { - "arguments": [ - { - "id": 822, - "name": "_token", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 817, - "src": "498:6:5", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_address", - "typeString": "address" - } - ], - "id": 821, - "name": "IERC20", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 729, - "src": "491:6:5", - "typeDescriptions": { - "typeIdentifier": "t_type$_t_contract$_IERC20_$729_$", - "typeString": "type(contract IERC20)" - } - }, - "id": 823, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "typeConversion", - "lValueRequested": false, - "nameLocations": [], - "names": [], - "nodeType": "FunctionCall", - "src": "491:14:5", - "tryCall": false, - "typeDescriptions": { - "typeIdentifier": "t_contract$_IERC20_$729", - "typeString": "contract IERC20" - } - }, - "src": "483:22:5", - "typeDescriptions": { - "typeIdentifier": "t_contract$_IERC20_$729", - "typeString": "contract IERC20" - } - }, - "id": 825, - "nodeType": "ExpressionStatement", - "src": "483:22:5" - }, - { - "expression": { - "id": 829, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftHandSide": { - "id": 826, - "name": "admin", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 793, - "src": "515:5:5", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "nodeType": "Assignment", - "operator": "=", - "rightHandSide": { - "expression": { - "id": 827, - "name": "msg", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": -15, - "src": "523:3:5", - "typeDescriptions": { - "typeIdentifier": "t_magic_message", - "typeString": "msg" - } - }, - "id": 828, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "memberLocation": "527:6:5", - "memberName": "sender", - "nodeType": "MemberAccess", - "src": "523:10:5", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "src": "515:18:5", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "id": 830, - "nodeType": "ExpressionStatement", - "src": "515:18:5" - } - ] - }, - "id": 832, - "implemented": true, - "kind": "constructor", - "modifiers": [], - "name": "", - "nameLocation": "-1:-1:-1", - "nodeType": "FunctionDefinition", - "parameters": { - "id": 818, - "nodeType": "ParameterList", - "parameters": [ - { - "constant": false, - "id": 817, - "mutability": "mutable", - "name": "_token", - "nameLocation": "465:6:5", - "nodeType": "VariableDeclaration", - "scope": 832, - "src": "457:14:5", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - }, - "typeName": { - "id": 816, - "name": "address", - "nodeType": "ElementaryTypeName", - "src": "457:7:5", - "stateMutability": "nonpayable", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "visibility": "internal" - } - ], - "src": "456:16:5" - }, - "returnParameters": { - "id": 819, - "nodeType": "ParameterList", - "parameters": [], - "src": "473:0:5" - }, - "scope": 957, - "src": "445:95:5", - "stateMutability": "nonpayable", - "virtual": false, - "visibility": "public" - }, - { - "body": { - "id": 903, - "nodeType": "Block", - "src": "663:476:5", - "statements": [ - { - "expression": { - "arguments": [ - { - "commonType": { - "typeIdentifier": "t_address", - "typeString": "address" - }, - "id": 845, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftExpression": { - "expression": { - "id": 842, - "name": "msg", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": -15, - "src": "681:3:5", - "typeDescriptions": { - "typeIdentifier": "t_magic_message", - "typeString": "msg" - } - }, - "id": 843, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "memberLocation": "685:6:5", - "memberName": "sender", - "nodeType": "MemberAccess", - "src": "681:10:5", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "nodeType": "BinaryOperation", - "operator": "==", - "rightExpression": { - "id": 844, - "name": "admin", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 793, - "src": "695:5:5", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "src": "681:19:5", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - }, - { - "hexValue": "4e6f742061646d696e", - "id": 846, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "string", - "lValueRequested": false, - "nodeType": "Literal", - "src": "702:11:5", - "typeDescriptions": { - "typeIdentifier": "t_stringliteral_fa7e120cf98867f00c0ac28b387a73caec64b93b1889065f7b4c5e5232c0bad6", - "typeString": "literal_string \"Not admin\"" - }, - "value": "Not admin" - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_bool", - "typeString": "bool" - }, - { - "typeIdentifier": "t_stringliteral_fa7e120cf98867f00c0ac28b387a73caec64b93b1889065f7b4c5e5232c0bad6", - "typeString": "literal_string \"Not admin\"" - } - ], - "id": 841, - "name": "require", - "nodeType": "Identifier", - "overloadedDeclarations": [ - -18, - -18 - ], - "referencedDeclaration": -18, - "src": "673:7:5", - "typeDescriptions": { - "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", - "typeString": "function (bool,string memory) pure" - } - }, - "id": 847, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "nameLocations": [], - "names": [], - "nodeType": "FunctionCall", - "src": "673:41:5", - "tryCall": false, - "typeDescriptions": { - "typeIdentifier": "t_tuple$__$", - "typeString": "tuple()" - } - }, - "id": 848, - "nodeType": "ExpressionStatement", - "src": "673:41:5" - }, - { - "expression": { - "arguments": [ - { - "commonType": { - "typeIdentifier": "t_address", - "typeString": "address" - }, - "id": 855, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftExpression": { - "id": 850, - "name": "beneficiary", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 834, - "src": "732:11:5", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "nodeType": "BinaryOperation", - "operator": "!=", - "rightExpression": { - "arguments": [ - { - "hexValue": "30", - "id": 853, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "number", - "lValueRequested": false, - "nodeType": "Literal", - "src": "755:1:5", - "typeDescriptions": { - "typeIdentifier": "t_rational_0_by_1", - "typeString": "int_const 0" - }, - "value": "0" - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_rational_0_by_1", - "typeString": "int_const 0" - } - ], - "id": 852, - "isConstant": false, - "isLValue": false, - "isPure": true, - "lValueRequested": false, - "nodeType": "ElementaryTypeNameExpression", - "src": "747:7:5", - "typeDescriptions": { - "typeIdentifier": "t_type$_t_address_$", - "typeString": "type(address)" - }, - "typeName": { - "id": 851, - "name": "address", - "nodeType": "ElementaryTypeName", - "src": "747:7:5", - "typeDescriptions": {} - } - }, - "id": 854, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "typeConversion", - "lValueRequested": false, - "nameLocations": [], - "names": [], - "nodeType": "FunctionCall", - "src": "747:10:5", - "tryCall": false, - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "src": "732:25:5", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - }, - { - "hexValue": "496e76616c69642061646472657373", - "id": 856, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "string", - "lValueRequested": false, - "nodeType": "Literal", - "src": "759:17:5", - "typeDescriptions": { - "typeIdentifier": "t_stringliteral_1462473b7a4b33d32b109b815fd2324d00c9e5839b707ecf16d0ab5744f99226", - "typeString": "literal_string \"Invalid address\"" - }, - "value": "Invalid address" - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_bool", - "typeString": "bool" - }, - { - "typeIdentifier": "t_stringliteral_1462473b7a4b33d32b109b815fd2324d00c9e5839b707ecf16d0ab5744f99226", - "typeString": "literal_string \"Invalid address\"" - } - ], - "id": 849, - "name": "require", - "nodeType": "Identifier", - "overloadedDeclarations": [ - -18, - -18 - ], - "referencedDeclaration": -18, - "src": "724:7:5", - "typeDescriptions": { - "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", - "typeString": "function (bool,string memory) pure" - } - }, - "id": 857, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "nameLocations": [], - "names": [], - "nodeType": "FunctionCall", - "src": "724:53:5", - "tryCall": false, - "typeDescriptions": { - "typeIdentifier": "t_tuple$__$", - "typeString": "tuple()" - } - }, - "id": 858, - "nodeType": "ExpressionStatement", - "src": "724:53:5" - }, - { - "expression": { - "arguments": [ - { - "commonType": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "id": 862, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftExpression": { - "id": 860, - "name": "amount", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 836, - "src": "795:6:5", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "nodeType": "BinaryOperation", - "operator": ">", - "rightExpression": { - "hexValue": "30", - "id": 861, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "number", - "lValueRequested": false, - "nodeType": "Literal", - "src": "804:1:5", - "typeDescriptions": { - "typeIdentifier": "t_rational_0_by_1", - "typeString": "int_const 0" - }, - "value": "0" - }, - "src": "795:10:5", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - }, - { - "hexValue": "496e76616c696420616d6f756e74", - "id": 863, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "string", - "lValueRequested": false, - "nodeType": "Literal", - "src": "807:16:5", - "typeDescriptions": { - "typeIdentifier": "t_stringliteral_2fd1dfd944df9898ee4c79794168926172c3d96d7664ff9919bb7080bb018af1", - "typeString": "literal_string \"Invalid amount\"" - }, - "value": "Invalid amount" - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_bool", - "typeString": "bool" - }, - { - "typeIdentifier": "t_stringliteral_2fd1dfd944df9898ee4c79794168926172c3d96d7664ff9919bb7080bb018af1", - "typeString": "literal_string \"Invalid amount\"" - } - ], - "id": 859, - "name": "require", - "nodeType": "Identifier", - "overloadedDeclarations": [ - -18, - -18 - ], - "referencedDeclaration": -18, - "src": "787:7:5", - "typeDescriptions": { - "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", - "typeString": "function (bool,string memory) pure" - } - }, - "id": 864, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "nameLocations": [], - "names": [], - "nodeType": "FunctionCall", - "src": "787:37:5", - "tryCall": false, - "typeDescriptions": { - "typeIdentifier": "t_tuple$__$", - "typeString": "tuple()" - } - }, - "id": 865, - "nodeType": "ExpressionStatement", - "src": "787:37:5" - }, - { - "expression": { - "id": 870, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftHandSide": { - "baseExpression": { - "id": 866, - "name": "vestedAmount", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 797, - "src": "835:12:5", - "typeDescriptions": { - "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$", - "typeString": "mapping(address => uint256)" - } - }, - "id": 868, - "indexExpression": { - "id": 867, - "name": "beneficiary", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 834, - "src": "848:11:5", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": true, - "nodeType": "IndexAccess", - "src": "835:25:5", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "nodeType": "Assignment", - "operator": "=", - "rightHandSide": { - "id": 869, - "name": "amount", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 836, - "src": "863:6:5", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "src": "835:34:5", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "id": 871, - "nodeType": "ExpressionStatement", - "src": "835:34:5" - }, - { - "expression": { - "id": 879, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftHandSide": { - "baseExpression": { - "id": 872, - "name": "vestingEnd", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 801, - "src": "879:10:5", - "typeDescriptions": { - "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$", - "typeString": "mapping(address => uint256)" - } - }, - "id": 874, - "indexExpression": { - "id": 873, - "name": "beneficiary", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 834, - "src": "890:11:5", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": true, - "nodeType": "IndexAccess", - "src": "879:23:5", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "nodeType": "Assignment", - "operator": "=", - "rightHandSide": { - "commonType": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "id": 878, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftExpression": { - "expression": { - "id": 875, - "name": "block", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": -4, - "src": "905:5:5", - "typeDescriptions": { - "typeIdentifier": "t_magic_block", - "typeString": "block" - } - }, - "id": 876, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "memberLocation": "911:9:5", - "memberName": "timestamp", - "nodeType": "MemberAccess", - "src": "905:15:5", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "nodeType": "BinaryOperation", - "operator": "+", - "rightExpression": { - "id": 877, - "name": "duration", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 838, - "src": "923:8:5", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "src": "905:26:5", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "src": "879:52:5", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "id": 880, - "nodeType": "ExpressionStatement", - "src": "879:52:5" - }, - { - "expression": { - "arguments": [ - { - "arguments": [ - { - "expression": { - "id": 884, - "name": "msg", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": -15, - "src": "982:3:5", - "typeDescriptions": { - "typeIdentifier": "t_magic_message", - "typeString": "msg" - } - }, - "id": 885, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "memberLocation": "986:6:5", - "memberName": "sender", - "nodeType": "MemberAccess", - "src": "982:10:5", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - { - "arguments": [ - { - "id": 888, - "name": "this", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": -28, - "src": "1002:4:5", - "typeDescriptions": { - "typeIdentifier": "t_contract$_SimpleVesting_$957", - "typeString": "contract SimpleVesting" - } - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_contract$_SimpleVesting_$957", - "typeString": "contract SimpleVesting" - } - ], - "id": 887, - "isConstant": false, - "isLValue": false, - "isPure": true, - "lValueRequested": false, - "nodeType": "ElementaryTypeNameExpression", - "src": "994:7:5", - "typeDescriptions": { - "typeIdentifier": "t_type$_t_address_$", - "typeString": "type(address)" - }, - "typeName": { - "id": 886, - "name": "address", - "nodeType": "ElementaryTypeName", - "src": "994:7:5", - "typeDescriptions": {} - } - }, - "id": 889, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "typeConversion", - "lValueRequested": false, - "nameLocations": [], - "names": [], - "nodeType": "FunctionCall", - "src": "994:13:5", - "tryCall": false, - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - { - "id": 890, - "name": "amount", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 836, - "src": "1009:6:5", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_address", - "typeString": "address" - }, - { - "typeIdentifier": "t_address", - "typeString": "address" - }, - { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - ], - "expression": { - "id": 882, - "name": "token", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 791, - "src": "963:5:5", - "typeDescriptions": { - "typeIdentifier": "t_contract$_IERC20_$729", - "typeString": "contract IERC20" - } - }, - "id": 883, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "memberLocation": "969:12:5", - "memberName": "transferFrom", - "nodeType": "MemberAccess", - "referencedDeclaration": 728, - "src": "963:18:5", - "typeDescriptions": { - "typeIdentifier": "t_function_external_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$_t_bool_$", - "typeString": "function (address,address,uint256) external returns (bool)" - } - }, - "id": 891, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "nameLocations": [], - "names": [], - "nodeType": "FunctionCall", - "src": "963:53:5", - "tryCall": false, - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - }, - { - "hexValue": "5472616e73666572206661696c6564", - "id": 892, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "string", - "lValueRequested": false, - "nodeType": "Literal", - "src": "1030:17:5", - "typeDescriptions": { - "typeIdentifier": "t_stringliteral_25adaa6d082ce15f901e0d8a3d393e7462ef9edf2e6bc8321fa14d1615b6fc51", - "typeString": "literal_string \"Transfer failed\"" - }, - "value": "Transfer failed" - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_bool", - "typeString": "bool" - }, - { - "typeIdentifier": "t_stringliteral_25adaa6d082ce15f901e0d8a3d393e7462ef9edf2e6bc8321fa14d1615b6fc51", - "typeString": "literal_string \"Transfer failed\"" - } - ], - "id": 881, - "name": "require", - "nodeType": "Identifier", - "overloadedDeclarations": [ - -18, - -18 - ], - "referencedDeclaration": -18, - "src": "942:7:5", - "typeDescriptions": { - "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", - "typeString": "function (bool,string memory) pure" - } - }, - "id": 893, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "nameLocations": [], - "names": [], - "nodeType": "FunctionCall", - "src": "942:115:5", - "tryCall": false, - "typeDescriptions": { - "typeIdentifier": "t_tuple$__$", - "typeString": "tuple()" - } - }, - "id": 894, - "nodeType": "ExpressionStatement", - "src": "942:115:5" - }, - { - "eventCall": { - "arguments": [ - { - "id": 896, - "name": "beneficiary", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 834, - "src": "1087:11:5", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - { - "id": 897, - "name": "amount", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 836, - "src": "1100:6:5", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - { - "baseExpression": { - "id": 898, - "name": "vestingEnd", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 801, - "src": "1108:10:5", - "typeDescriptions": { - "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$", - "typeString": "mapping(address => uint256)" - } - }, - "id": 900, - "indexExpression": { - "id": 899, - "name": "beneficiary", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 834, - "src": "1119:11:5", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": false, - "nodeType": "IndexAccess", - "src": "1108:23:5", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_address", - "typeString": "address" - }, - { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - ], - "id": 895, - "name": "VestingCreated", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 809, - "src": "1072:14:5", - "typeDescriptions": { - "typeIdentifier": "t_function_event_nonpayable$_t_address_$_t_uint256_$_t_uint256_$returns$__$", - "typeString": "function (address,uint256,uint256)" - } - }, - "id": 901, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "nameLocations": [], - "names": [], - "nodeType": "FunctionCall", - "src": "1072:60:5", - "tryCall": false, - "typeDescriptions": { - "typeIdentifier": "t_tuple$__$", - "typeString": "tuple()" - } - }, - "id": 902, - "nodeType": "EmitStatement", - "src": "1067:65:5" - } - ] - }, - "functionSelector": "e9754908", - "id": 904, - "implemented": true, - "kind": "function", - "modifiers": [], - "name": "createVesting", - "nameLocation": "555:13:5", - "nodeType": "FunctionDefinition", - "parameters": { - "id": 839, - "nodeType": "ParameterList", - "parameters": [ - { - "constant": false, - "id": 834, - "mutability": "mutable", - "name": "beneficiary", - "nameLocation": "586:11:5", - "nodeType": "VariableDeclaration", - "scope": 904, - "src": "578:19:5", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - }, - "typeName": { - "id": 833, - "name": "address", - "nodeType": "ElementaryTypeName", - "src": "578:7:5", - "stateMutability": "nonpayable", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "visibility": "internal" - }, - { - "constant": false, - "id": 836, - "mutability": "mutable", - "name": "amount", - "nameLocation": "615:6:5", - "nodeType": "VariableDeclaration", - "scope": 904, - "src": "607:14:5", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "typeName": { - "id": 835, - "name": "uint256", - "nodeType": "ElementaryTypeName", - "src": "607:7:5", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "visibility": "internal" - }, - { - "constant": false, - "id": 838, - "mutability": "mutable", - "name": "duration", - "nameLocation": "639:8:5", - "nodeType": "VariableDeclaration", - "scope": 904, - "src": "631:16:5", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "typeName": { - "id": 837, - "name": "uint256", - "nodeType": "ElementaryTypeName", - "src": "631:7:5", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "visibility": "internal" - } - ], - "src": "568:85:5" - }, - "returnParameters": { - "id": 840, - "nodeType": "ParameterList", - "parameters": [], - "src": "663:0:5" - }, - "scope": 957, - "src": "546:593:5", - "stateMutability": "nonpayable", - "virtual": false, - "visibility": "external" - }, - { - "body": { - "id": 955, - "nodeType": "Block", - "src": "1171:349:5", - "statements": [ - { - "expression": { - "arguments": [ - { - "commonType": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "id": 914, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftExpression": { - "expression": { - "id": 908, - "name": "block", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": -4, - "src": "1189:5:5", - "typeDescriptions": { - "typeIdentifier": "t_magic_block", - "typeString": "block" - } - }, - "id": 909, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "memberLocation": "1195:9:5", - "memberName": "timestamp", - "nodeType": "MemberAccess", - "src": "1189:15:5", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "nodeType": "BinaryOperation", - "operator": ">=", - "rightExpression": { - "baseExpression": { - "id": 910, - "name": "vestingEnd", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 801, - "src": "1208:10:5", - "typeDescriptions": { - "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$", - "typeString": "mapping(address => uint256)" - } - }, - "id": 913, - "indexExpression": { - "expression": { - "id": 911, - "name": "msg", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": -15, - "src": "1219:3:5", - "typeDescriptions": { - "typeIdentifier": "t_magic_message", - "typeString": "msg" - } - }, - "id": 912, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "memberLocation": "1223:6:5", - "memberName": "sender", - "nodeType": "MemberAccess", - "src": "1219:10:5", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": false, - "nodeType": "IndexAccess", - "src": "1208:22:5", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "src": "1189:41:5", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - }, - { - "hexValue": "56657374696e67206e6f7420656e646564", - "id": 915, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "string", - "lValueRequested": false, - "nodeType": "Literal", - "src": "1232:19:5", - "typeDescriptions": { - "typeIdentifier": "t_stringliteral_a8ad0d9b43a12ad06193d78950e25818160251504b5298878dc06273011c350f", - "typeString": "literal_string \"Vesting not ended\"" - }, - "value": "Vesting not ended" - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_bool", - "typeString": "bool" - }, - { - "typeIdentifier": "t_stringliteral_a8ad0d9b43a12ad06193d78950e25818160251504b5298878dc06273011c350f", - "typeString": "literal_string \"Vesting not ended\"" - } - ], - "id": 907, - "name": "require", - "nodeType": "Identifier", - "overloadedDeclarations": [ - -18, - -18 - ], - "referencedDeclaration": -18, - "src": "1181:7:5", - "typeDescriptions": { - "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", - "typeString": "function (bool,string memory) pure" - } - }, - "id": 916, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "nameLocations": [], - "names": [], - "nodeType": "FunctionCall", - "src": "1181:71:5", - "tryCall": false, - "typeDescriptions": { - "typeIdentifier": "t_tuple$__$", - "typeString": "tuple()" - } - }, - "id": 917, - "nodeType": "ExpressionStatement", - "src": "1181:71:5" - }, - { - "assignments": [ - 919 - ], - "declarations": [ - { - "constant": false, - "id": 919, - "mutability": "mutable", - "name": "amount", - "nameLocation": "1270:6:5", - "nodeType": "VariableDeclaration", - "scope": 955, - "src": "1262:14:5", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "typeName": { - "id": 918, - "name": "uint256", - "nodeType": "ElementaryTypeName", - "src": "1262:7:5", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "visibility": "internal" - } - ], - "id": 924, - "initialValue": { - "baseExpression": { - "id": 920, - "name": "vestedAmount", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 797, - "src": "1279:12:5", - "typeDescriptions": { - "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$", - "typeString": "mapping(address => uint256)" - } - }, - "id": 923, - "indexExpression": { - "expression": { - "id": 921, - "name": "msg", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": -15, - "src": "1292:3:5", - "typeDescriptions": { - "typeIdentifier": "t_magic_message", - "typeString": "msg" - } - }, - "id": 922, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "memberLocation": "1296:6:5", - "memberName": "sender", - "nodeType": "MemberAccess", - "src": "1292:10:5", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": false, - "nodeType": "IndexAccess", - "src": "1279:24:5", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "nodeType": "VariableDeclarationStatement", - "src": "1262:41:5" - }, - { - "expression": { - "arguments": [ - { - "commonType": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "id": 928, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftExpression": { - "id": 926, - "name": "amount", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 919, - "src": "1321:6:5", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "nodeType": "BinaryOperation", - "operator": ">", - "rightExpression": { - "hexValue": "30", - "id": 927, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "number", - "lValueRequested": false, - "nodeType": "Literal", - "src": "1330:1:5", - "typeDescriptions": { - "typeIdentifier": "t_rational_0_by_1", - "typeString": "int_const 0" - }, - "value": "0" - }, - "src": "1321:10:5", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - }, - { - "hexValue": "4e6f20746f6b656e7320746f20636c61696d", - "id": 929, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "string", - "lValueRequested": false, - "nodeType": "Literal", - "src": "1333:20:5", - "typeDescriptions": { - "typeIdentifier": "t_stringliteral_0d5449e713a47f03a14de06feb7e7374931b31bbe74b9f8d4277d4797f0eb90e", - "typeString": "literal_string \"No tokens to claim\"" - }, - "value": "No tokens to claim" - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_bool", - "typeString": "bool" - }, - { - "typeIdentifier": "t_stringliteral_0d5449e713a47f03a14de06feb7e7374931b31bbe74b9f8d4277d4797f0eb90e", - "typeString": "literal_string \"No tokens to claim\"" - } - ], - "id": 925, - "name": "require", - "nodeType": "Identifier", - "overloadedDeclarations": [ - -18, - -18 - ], - "referencedDeclaration": -18, - "src": "1313:7:5", - "typeDescriptions": { - "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", - "typeString": "function (bool,string memory) pure" - } - }, - "id": 930, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "nameLocations": [], - "names": [], - "nodeType": "FunctionCall", - "src": "1313:41:5", - "tryCall": false, - "typeDescriptions": { - "typeIdentifier": "t_tuple$__$", - "typeString": "tuple()" - } - }, - "id": 931, - "nodeType": "ExpressionStatement", - "src": "1313:41:5" - }, - { - "expression": { - "id": 937, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftHandSide": { - "baseExpression": { - "id": 932, - "name": "vestedAmount", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 797, - "src": "1365:12:5", - "typeDescriptions": { - "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$", - "typeString": "mapping(address => uint256)" - } - }, - "id": 935, - "indexExpression": { - "expression": { - "id": 933, - "name": "msg", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": -15, - "src": "1378:3:5", - "typeDescriptions": { - "typeIdentifier": "t_magic_message", - "typeString": "msg" - } - }, - "id": 934, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "memberLocation": "1382:6:5", - "memberName": "sender", - "nodeType": "MemberAccess", - "src": "1378:10:5", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": true, - "nodeType": "IndexAccess", - "src": "1365:24:5", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "nodeType": "Assignment", - "operator": "=", - "rightHandSide": { - "hexValue": "30", - "id": 936, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "number", - "lValueRequested": false, - "nodeType": "Literal", - "src": "1392:1:5", - "typeDescriptions": { - "typeIdentifier": "t_rational_0_by_1", - "typeString": "int_const 0" - }, - "value": "0" - }, - "src": "1365:28:5", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "id": 938, - "nodeType": "ExpressionStatement", - "src": "1365:28:5" - }, - { - "expression": { - "arguments": [ - { - "arguments": [ - { - "expression": { - "id": 942, - "name": "msg", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": -15, - "src": "1426:3:5", - "typeDescriptions": { - "typeIdentifier": "t_magic_message", - "typeString": "msg" - } - }, - "id": 943, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "memberLocation": "1430:6:5", - "memberName": "sender", - "nodeType": "MemberAccess", - "src": "1426:10:5", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - { - "id": 944, - "name": "amount", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 919, - "src": "1438:6:5", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_address", - "typeString": "address" - }, - { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - ], - "expression": { - "id": 940, - "name": "token", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 791, - "src": "1411:5:5", - "typeDescriptions": { - "typeIdentifier": "t_contract$_IERC20_$729", - "typeString": "contract IERC20" - } - }, - "id": 941, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "memberLocation": "1417:8:5", - "memberName": "transfer", - "nodeType": "MemberAccess", - "referencedDeclaration": 696, - "src": "1411:14:5", - "typeDescriptions": { - "typeIdentifier": "t_function_external_nonpayable$_t_address_$_t_uint256_$returns$_t_bool_$", - "typeString": "function (address,uint256) external returns (bool)" - } - }, - "id": 945, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "nameLocations": [], - "names": [], - "nodeType": "FunctionCall", - "src": "1411:34:5", - "tryCall": false, - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - }, - { - "hexValue": "5472616e73666572206661696c6564", - "id": 946, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "string", - "lValueRequested": false, - "nodeType": "Literal", - "src": "1447:17:5", - "typeDescriptions": { - "typeIdentifier": "t_stringliteral_25adaa6d082ce15f901e0d8a3d393e7462ef9edf2e6bc8321fa14d1615b6fc51", - "typeString": "literal_string \"Transfer failed\"" - }, - "value": "Transfer failed" - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_bool", - "typeString": "bool" - }, - { - "typeIdentifier": "t_stringliteral_25adaa6d082ce15f901e0d8a3d393e7462ef9edf2e6bc8321fa14d1615b6fc51", - "typeString": "literal_string \"Transfer failed\"" - } - ], - "id": 939, - "name": "require", - "nodeType": "Identifier", - "overloadedDeclarations": [ - -18, - -18 - ], - "referencedDeclaration": -18, - "src": "1403:7:5", - "typeDescriptions": { - "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", - "typeString": "function (bool,string memory) pure" - } - }, - "id": 947, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "nameLocations": [], - "names": [], - "nodeType": "FunctionCall", - "src": "1403:62:5", - "tryCall": false, - "typeDescriptions": { - "typeIdentifier": "t_tuple$__$", - "typeString": "tuple()" - } - }, - "id": 948, - "nodeType": "ExpressionStatement", - "src": "1403:62:5" - }, - { - "eventCall": { - "arguments": [ - { - "expression": { - "id": 950, - "name": "msg", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": -15, - "src": "1494:3:5", - "typeDescriptions": { - "typeIdentifier": "t_magic_message", - "typeString": "msg" - } - }, - "id": 951, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "memberLocation": "1498:6:5", - "memberName": "sender", - "nodeType": "MemberAccess", - "src": "1494:10:5", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - { - "id": 952, - "name": "amount", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 919, - "src": "1506:6:5", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_address", - "typeString": "address" - }, - { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - ], - "id": 949, - "name": "TokensClaimed", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 815, - "src": "1480:13:5", - "typeDescriptions": { - "typeIdentifier": "t_function_event_nonpayable$_t_address_$_t_uint256_$returns$__$", - "typeString": "function (address,uint256)" - } - }, - "id": 953, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "nameLocations": [], - "names": [], - "nodeType": "FunctionCall", - "src": "1480:33:5", - "tryCall": false, - "typeDescriptions": { - "typeIdentifier": "t_tuple$__$", - "typeString": "tuple()" - } - }, - "id": 954, - "nodeType": "EmitStatement", - "src": "1475:38:5" - } - ] - }, - "functionSelector": "4e71d92d", - "id": 956, - "implemented": true, - "kind": "function", - "modifiers": [], - "name": "claim", - "nameLocation": "1154:5:5", - "nodeType": "FunctionDefinition", - "parameters": { - "id": 905, - "nodeType": "ParameterList", - "parameters": [], - "src": "1159:2:5" - }, - "returnParameters": { - "id": 906, - "nodeType": "ParameterList", - "parameters": [], - "src": "1171:0:5" - }, - "scope": 957, - "src": "1145:375:5", - "stateMutability": "nonpayable", - "virtual": false, - "visibility": "external" - } - ], - "scope": 958, - "src": "116:1406:5", - "usedErrors": [], - "usedEvents": [ - 809, - 815 - ] - } - ], - "src": "32:1491:5" - }, - "id": 5 - }, - "contracts/token.sol": { - "ast": { - "absolutePath": "contracts/token.sol", - "exportedSymbols": { - "Context": [ - 785 - ], - "ERC20": [ - 651 - ], - "IERC20": [ - 729 - ], - "IERC20Errors": [ - 41 - ], - "IERC20Metadata": [ - 755 - ], - "SimpleToken": [ - 982 - ] - }, - "id": 983, - "license": "MIT", - "nodeType": "SourceUnit", - "nodes": [ - { - "id": 959, - "literals": [ - "solidity", - "^", - "0.8", - ".20" - ], - "nodeType": "PragmaDirective", - "src": "32:24:6" - }, - { - "absolutePath": "@openzeppelin/contracts/token/ERC20/ERC20.sol", - "file": "@openzeppelin/contracts/token/ERC20/ERC20.sol", - "id": 960, - "nameLocation": "-1:-1:-1", - "nodeType": "ImportDirective", - "scope": 983, - "sourceUnit": 652, - "src": "58:55:6", - "symbolAliases": [], - "unitAlias": "" - }, - { - "abstract": false, - "baseContracts": [ - { - "baseName": { - "id": 961, - "name": "ERC20", - "nameLocations": [ - "139:5:6" - ], - "nodeType": "IdentifierPath", - "referencedDeclaration": 651, - "src": "139:5:6" - }, - "id": 962, - "nodeType": "InheritanceSpecifier", - "src": "139:5:6" - } - ], - "canonicalName": "SimpleToken", - "contractDependencies": [], - "contractKind": "contract", - "fullyImplemented": true, - "id": 982, - "linearizedBaseContracts": [ - 982, - 651, - 41, - 755, - 729, - 785 - ], - "name": "SimpleToken", - "nameLocation": "124:11:6", - "nodeType": "ContractDefinition", - "nodes": [ - { - "body": { - "id": 980, - "nodeType": "Block", - "src": "194:62:6", - "statements": [ - { - "expression": { - "arguments": [ - { - "expression": { - "id": 970, - "name": "msg", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": -15, - "src": "210:3:6", - "typeDescriptions": { - "typeIdentifier": "t_magic_message", - "typeString": "msg" - } - }, - "id": 971, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "memberLocation": "214:6:6", - "memberName": "sender", - "nodeType": "MemberAccess", - "src": "210:10:6", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - { - "commonType": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "id": 977, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftExpression": { - "hexValue": "31303030303030", - "id": 972, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "number", - "lValueRequested": false, - "nodeType": "Literal", - "src": "222:7:6", - "typeDescriptions": { - "typeIdentifier": "t_rational_1000000_by_1", - "typeString": "int_const 1000000" - }, - "value": "1000000" - }, - "nodeType": "BinaryOperation", - "operator": "*", - "rightExpression": { - "commonType": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "id": 976, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftExpression": { - "hexValue": "3130", - "id": 973, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "number", - "lValueRequested": false, - "nodeType": "Literal", - "src": "232:2:6", - "typeDescriptions": { - "typeIdentifier": "t_rational_10_by_1", - "typeString": "int_const 10" - }, - "value": "10" - }, - "nodeType": "BinaryOperation", - "operator": "**", - "rightExpression": { - "arguments": [], - "expression": { - "argumentTypes": [], - "id": 974, - "name": "decimals", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 215, - "src": "238:8:6", - "typeDescriptions": { - "typeIdentifier": "t_function_internal_view$__$returns$_t_uint8_$", - "typeString": "function () view returns (uint8)" - } - }, - "id": 975, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "nameLocations": [], - "names": [], - "nodeType": "FunctionCall", - "src": "238:10:6", - "tryCall": false, - "typeDescriptions": { - "typeIdentifier": "t_uint8", - "typeString": "uint8" - } - }, - "src": "232:16:6", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "src": "222:26:6", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_address", - "typeString": "address" - }, - { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - ], - "id": 969, - "name": "_mint", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 491, - "src": "204:5:6", - "typeDescriptions": { - "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_uint256_$returns$__$", - "typeString": "function (address,uint256)" - } - }, - "id": 978, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "nameLocations": [], - "names": [], - "nodeType": "FunctionCall", - "src": "204:45:6", - "tryCall": false, - "typeDescriptions": { - "typeIdentifier": "t_tuple$__$", - "typeString": "tuple()" - } - }, - "id": 979, - "nodeType": "ExpressionStatement", - "src": "204:45:6" - } - ] - }, - "id": 981, - "implemented": true, - "kind": "constructor", - "modifiers": [ - { - "arguments": [ - { - "hexValue": "53696d706c6520546f6b656e", - "id": 965, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "string", - "lValueRequested": false, - "nodeType": "Literal", - "src": "171:14:6", - "typeDescriptions": { - "typeIdentifier": "t_stringliteral_5e2ef512dc70061e195b836f03a72ad3b39d3b028ae15d2aa62cfb017f614fe1", - "typeString": "literal_string \"Simple Token\"" - }, - "value": "Simple Token" - }, - { - "hexValue": "53544b", - "id": 966, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "string", - "lValueRequested": false, - "nodeType": "Literal", - "src": "187:5:6", - "typeDescriptions": { - "typeIdentifier": "t_stringliteral_ddd63dcd5916e2715f93ae4bf1497005f4f308cec81ea856ac13c63c6bc50072", - "typeString": "literal_string \"STK\"" - }, - "value": "STK" - } - ], - "id": 967, - "kind": "baseConstructorSpecifier", - "modifierName": { - "id": 964, - "name": "ERC20", - "nameLocations": [ - "165:5:6" - ], - "nodeType": "IdentifierPath", - "referencedDeclaration": 651, - "src": "165:5:6" - }, - "nodeType": "ModifierInvocation", - "src": "165:28:6" - } - ], - "name": "", - "nameLocation": "-1:-1:-1", - "nodeType": "FunctionDefinition", - "parameters": { - "id": 963, - "nodeType": "ParameterList", - "parameters": [], - "src": "162:2:6" - }, - "returnParameters": { - "id": 968, - "nodeType": "ParameterList", - "parameters": [], - "src": "194:0:6" - }, - "scope": 982, - "src": "151:105:6", - "stateMutability": "nonpayable", - "virtual": false, - "visibility": "public" - } - ], - "scope": 983, - "src": "115:143:6", - "usedErrors": [ - 11, - 16, - 21, - 30, - 35, - 40 - ], - "usedEvents": [ - 663, - 672 - ] - } - ], - "src": "32:227:6" - }, - "id": 6 - } - }, - "contracts": { - "@openzeppelin/contracts/interfaces/draft-IERC6093.sol": { - "IERC1155Errors": { - "abi": [ - { - "inputs": [ - { - "internalType": "address", - "name": "sender", - "type": "address" - }, - { - "internalType": "uint256", - "name": "balance", - "type": "uint256" - }, - { - "internalType": "uint256", - "name": "needed", - "type": "uint256" - }, - { - "internalType": "uint256", - "name": "tokenId", - "type": "uint256" - } - ], - "name": "ERC1155InsufficientBalance", - "type": "error" - }, - { - "inputs": [ - { - "internalType": "address", - "name": "approver", - "type": "address" - } - ], - "name": "ERC1155InvalidApprover", - "type": "error" - }, - { - "inputs": [ - { - "internalType": "uint256", - "name": "idsLength", - "type": "uint256" - }, - { - "internalType": "uint256", - "name": "valuesLength", - "type": "uint256" - } - ], - "name": "ERC1155InvalidArrayLength", - "type": "error" - }, - { - "inputs": [ - { - "internalType": "address", - "name": "operator", - "type": "address" - } - ], - "name": "ERC1155InvalidOperator", - "type": "error" - }, - { - "inputs": [ - { - "internalType": "address", - "name": "receiver", - "type": "address" - } - ], - "name": "ERC1155InvalidReceiver", - "type": "error" - }, - { - "inputs": [ - { - "internalType": "address", - "name": "sender", - "type": "address" - } - ], - "name": "ERC1155InvalidSender", - "type": "error" - }, - { - "inputs": [ - { - "internalType": "address", - "name": "operator", - "type": "address" - }, - { - "internalType": "address", - "name": "owner", - "type": "address" - } - ], - "name": "ERC1155MissingApprovalForAll", - "type": "error" - } - ], - "evm": { - "bytecode": { - "functionDebugData": {}, - "generatedSources": [], - "linkReferences": {}, - "object": "", - "opcodes": "", - "sourceMap": "" - }, - "deployedBytecode": { - "functionDebugData": {}, - "generatedSources": [], - "immutableReferences": {}, - "linkReferences": {}, - "object": "", - "opcodes": "", - "sourceMap": "" - }, - "methodIdentifiers": {} - }, - "metadata": "{\"compiler\":{\"version\":\"0.8.20+commit.a1b79de6\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"balance\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"needed\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"}],\"name\":\"ERC1155InsufficientBalance\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"approver\",\"type\":\"address\"}],\"name\":\"ERC1155InvalidApprover\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"idsLength\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"valuesLength\",\"type\":\"uint256\"}],\"name\":\"ERC1155InvalidArrayLength\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"}],\"name\":\"ERC1155InvalidOperator\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"receiver\",\"type\":\"address\"}],\"name\":\"ERC1155InvalidReceiver\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"}],\"name\":\"ERC1155InvalidSender\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"}],\"name\":\"ERC1155MissingApprovalForAll\",\"type\":\"error\"}],\"devdoc\":{\"details\":\"Standard ERC-1155 Errors Interface of the https://eips.ethereum.org/EIPS/eip-6093[ERC-6093] custom errors for ERC-1155 tokens.\",\"errors\":{\"ERC1155InsufficientBalance(address,uint256,uint256,uint256)\":[{\"details\":\"Indicates an error related to the current `balance` of a `sender`. Used in transfers.\",\"params\":{\"balance\":\"Current balance for the interacting account.\",\"needed\":\"Minimum amount required to perform a transfer.\",\"sender\":\"Address whose tokens are being transferred.\",\"tokenId\":\"Identifier number of a token.\"}}],\"ERC1155InvalidApprover(address)\":[{\"details\":\"Indicates a failure with the `approver` of a token to be approved. Used in approvals.\",\"params\":{\"approver\":\"Address initiating an approval operation.\"}}],\"ERC1155InvalidArrayLength(uint256,uint256)\":[{\"details\":\"Indicates an array length mismatch between ids and values in a safeBatchTransferFrom operation. Used in batch transfers.\",\"params\":{\"idsLength\":\"Length of the array of token identifiers\",\"valuesLength\":\"Length of the array of token amounts\"}}],\"ERC1155InvalidOperator(address)\":[{\"details\":\"Indicates a failure with the `operator` to be approved. Used in approvals.\",\"params\":{\"operator\":\"Address that may be allowed to operate on tokens without being their owner.\"}}],\"ERC1155InvalidReceiver(address)\":[{\"details\":\"Indicates a failure with the token `receiver`. Used in transfers.\",\"params\":{\"receiver\":\"Address to which tokens are being transferred.\"}}],\"ERC1155InvalidSender(address)\":[{\"details\":\"Indicates a failure with the token `sender`. Used in transfers.\",\"params\":{\"sender\":\"Address whose tokens are being transferred.\"}}],\"ERC1155MissingApprovalForAll(address,address)\":[{\"details\":\"Indicates a failure with the `operator`\\u2019s approval. Used in transfers.\",\"params\":{\"operator\":\"Address that may be allowed to operate on tokens without being their owner.\",\"owner\":\"Address of the current owner of a token.\"}}]},\"kind\":\"dev\",\"methods\":{},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"@openzeppelin/contracts/interfaces/draft-IERC6093.sol\":\"IERC1155Errors\"},\"evmVersion\":\"london\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":1},\"remappings\":[]},\"sources\":{\"@openzeppelin/contracts/interfaces/draft-IERC6093.sol\":{\"keccak256\":\"0x880da465c203cec76b10d72dbd87c80f387df4102274f23eea1f9c9b0918792b\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://399594cd8bb0143bc9e55e0f1d071d0d8c850a394fb7a319d50edd55d9ed822b\",\"dweb:/ipfs/QmbPZzgtT6LEm9CMqWfagQFwETbV1ztpECBB1DtQHrKiRz\"]}},\"version\":1}" - }, - "IERC20Errors": { - "abi": [ - { - "inputs": [ - { - "internalType": "address", - "name": "spender", - "type": "address" - }, - { - "internalType": "uint256", - "name": "allowance", - "type": "uint256" - }, - { - "internalType": "uint256", - "name": "needed", - "type": "uint256" - } - ], - "name": "ERC20InsufficientAllowance", - "type": "error" - }, - { - "inputs": [ - { - "internalType": "address", - "name": "sender", - "type": "address" - }, - { - "internalType": "uint256", - "name": "balance", - "type": "uint256" - }, - { - "internalType": "uint256", - "name": "needed", - "type": "uint256" - } - ], - "name": "ERC20InsufficientBalance", - "type": "error" - }, - { - "inputs": [ - { - "internalType": "address", - "name": "approver", - "type": "address" - } - ], - "name": "ERC20InvalidApprover", - "type": "error" - }, - { - "inputs": [ - { - "internalType": "address", - "name": "receiver", - "type": "address" - } - ], - "name": "ERC20InvalidReceiver", - "type": "error" - }, - { - "inputs": [ - { - "internalType": "address", - "name": "sender", - "type": "address" - } - ], - "name": "ERC20InvalidSender", - "type": "error" - }, - { - "inputs": [ - { - "internalType": "address", - "name": "spender", - "type": "address" - } - ], - "name": "ERC20InvalidSpender", - "type": "error" - } - ], - "evm": { - "bytecode": { - "functionDebugData": {}, - "generatedSources": [], - "linkReferences": {}, - "object": "", - "opcodes": "", - "sourceMap": "" - }, - "deployedBytecode": { - "functionDebugData": {}, - "generatedSources": [], - "immutableReferences": {}, - "linkReferences": {}, - "object": "", - "opcodes": "", - "sourceMap": "" - }, - "methodIdentifiers": {} - }, - "metadata": "{\"compiler\":{\"version\":\"0.8.20+commit.a1b79de6\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"allowance\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"needed\",\"type\":\"uint256\"}],\"name\":\"ERC20InsufficientAllowance\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"balance\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"needed\",\"type\":\"uint256\"}],\"name\":\"ERC20InsufficientBalance\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"approver\",\"type\":\"address\"}],\"name\":\"ERC20InvalidApprover\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"receiver\",\"type\":\"address\"}],\"name\":\"ERC20InvalidReceiver\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"}],\"name\":\"ERC20InvalidSender\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"}],\"name\":\"ERC20InvalidSpender\",\"type\":\"error\"}],\"devdoc\":{\"details\":\"Standard ERC-20 Errors Interface of the https://eips.ethereum.org/EIPS/eip-6093[ERC-6093] custom errors for ERC-20 tokens.\",\"errors\":{\"ERC20InsufficientAllowance(address,uint256,uint256)\":[{\"details\":\"Indicates a failure with the `spender`\\u2019s `allowance`. Used in transfers.\",\"params\":{\"allowance\":\"Amount of tokens a `spender` is allowed to operate with.\",\"needed\":\"Minimum amount required to perform a transfer.\",\"spender\":\"Address that may be allowed to operate on tokens without being their owner.\"}}],\"ERC20InsufficientBalance(address,uint256,uint256)\":[{\"details\":\"Indicates an error related to the current `balance` of a `sender`. Used in transfers.\",\"params\":{\"balance\":\"Current balance for the interacting account.\",\"needed\":\"Minimum amount required to perform a transfer.\",\"sender\":\"Address whose tokens are being transferred.\"}}],\"ERC20InvalidApprover(address)\":[{\"details\":\"Indicates a failure with the `approver` of a token to be approved. Used in approvals.\",\"params\":{\"approver\":\"Address initiating an approval operation.\"}}],\"ERC20InvalidReceiver(address)\":[{\"details\":\"Indicates a failure with the token `receiver`. Used in transfers.\",\"params\":{\"receiver\":\"Address to which tokens are being transferred.\"}}],\"ERC20InvalidSender(address)\":[{\"details\":\"Indicates a failure with the token `sender`. Used in transfers.\",\"params\":{\"sender\":\"Address whose tokens are being transferred.\"}}],\"ERC20InvalidSpender(address)\":[{\"details\":\"Indicates a failure with the `spender` to be approved. Used in approvals.\",\"params\":{\"spender\":\"Address that may be allowed to operate on tokens without being their owner.\"}}]},\"kind\":\"dev\",\"methods\":{},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"@openzeppelin/contracts/interfaces/draft-IERC6093.sol\":\"IERC20Errors\"},\"evmVersion\":\"london\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":1},\"remappings\":[]},\"sources\":{\"@openzeppelin/contracts/interfaces/draft-IERC6093.sol\":{\"keccak256\":\"0x880da465c203cec76b10d72dbd87c80f387df4102274f23eea1f9c9b0918792b\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://399594cd8bb0143bc9e55e0f1d071d0d8c850a394fb7a319d50edd55d9ed822b\",\"dweb:/ipfs/QmbPZzgtT6LEm9CMqWfagQFwETbV1ztpECBB1DtQHrKiRz\"]}},\"version\":1}" - }, - "IERC721Errors": { - "abi": [ - { - "inputs": [ - { - "internalType": "address", - "name": "sender", - "type": "address" - }, - { - "internalType": "uint256", - "name": "tokenId", - "type": "uint256" - }, - { - "internalType": "address", - "name": "owner", - "type": "address" - } - ], - "name": "ERC721IncorrectOwner", - "type": "error" - }, - { - "inputs": [ - { - "internalType": "address", - "name": "operator", - "type": "address" - }, - { - "internalType": "uint256", - "name": "tokenId", - "type": "uint256" - } - ], - "name": "ERC721InsufficientApproval", - "type": "error" - }, - { - "inputs": [ - { - "internalType": "address", - "name": "approver", - "type": "address" - } - ], - "name": "ERC721InvalidApprover", - "type": "error" - }, - { - "inputs": [ - { - "internalType": "address", - "name": "operator", - "type": "address" - } - ], - "name": "ERC721InvalidOperator", - "type": "error" - }, - { - "inputs": [ - { - "internalType": "address", - "name": "owner", - "type": "address" - } - ], - "name": "ERC721InvalidOwner", - "type": "error" - }, - { - "inputs": [ - { - "internalType": "address", - "name": "receiver", - "type": "address" - } - ], - "name": "ERC721InvalidReceiver", - "type": "error" - }, - { - "inputs": [ - { - "internalType": "address", - "name": "sender", - "type": "address" - } - ], - "name": "ERC721InvalidSender", - "type": "error" - }, - { - "inputs": [ - { - "internalType": "uint256", - "name": "tokenId", - "type": "uint256" - } - ], - "name": "ERC721NonexistentToken", - "type": "error" - } - ], - "evm": { - "bytecode": { - "functionDebugData": {}, - "generatedSources": [], - "linkReferences": {}, - "object": "", - "opcodes": "", - "sourceMap": "" - }, - "deployedBytecode": { - "functionDebugData": {}, - "generatedSources": [], - "immutableReferences": {}, - "linkReferences": {}, - "object": "", - "opcodes": "", - "sourceMap": "" - }, - "methodIdentifiers": {} - }, - "metadata": "{\"compiler\":{\"version\":\"0.8.20+commit.a1b79de6\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"}],\"name\":\"ERC721IncorrectOwner\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"}],\"name\":\"ERC721InsufficientApproval\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"approver\",\"type\":\"address\"}],\"name\":\"ERC721InvalidApprover\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"}],\"name\":\"ERC721InvalidOperator\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"}],\"name\":\"ERC721InvalidOwner\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"receiver\",\"type\":\"address\"}],\"name\":\"ERC721InvalidReceiver\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"}],\"name\":\"ERC721InvalidSender\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"}],\"name\":\"ERC721NonexistentToken\",\"type\":\"error\"}],\"devdoc\":{\"details\":\"Standard ERC-721 Errors Interface of the https://eips.ethereum.org/EIPS/eip-6093[ERC-6093] custom errors for ERC-721 tokens.\",\"errors\":{\"ERC721IncorrectOwner(address,uint256,address)\":[{\"details\":\"Indicates an error related to the ownership over a particular token. Used in transfers.\",\"params\":{\"owner\":\"Address of the current owner of a token.\",\"sender\":\"Address whose tokens are being transferred.\",\"tokenId\":\"Identifier number of a token.\"}}],\"ERC721InsufficientApproval(address,uint256)\":[{\"details\":\"Indicates a failure with the `operator`\\u2019s approval. Used in transfers.\",\"params\":{\"operator\":\"Address that may be allowed to operate on tokens without being their owner.\",\"tokenId\":\"Identifier number of a token.\"}}],\"ERC721InvalidApprover(address)\":[{\"details\":\"Indicates a failure with the `approver` of a token to be approved. Used in approvals.\",\"params\":{\"approver\":\"Address initiating an approval operation.\"}}],\"ERC721InvalidOperator(address)\":[{\"details\":\"Indicates a failure with the `operator` to be approved. Used in approvals.\",\"params\":{\"operator\":\"Address that may be allowed to operate on tokens without being their owner.\"}}],\"ERC721InvalidOwner(address)\":[{\"details\":\"Indicates that an address can't be an owner. For example, `address(0)` is a forbidden owner in ERC-20. Used in balance queries.\",\"params\":{\"owner\":\"Address of the current owner of a token.\"}}],\"ERC721InvalidReceiver(address)\":[{\"details\":\"Indicates a failure with the token `receiver`. Used in transfers.\",\"params\":{\"receiver\":\"Address to which tokens are being transferred.\"}}],\"ERC721InvalidSender(address)\":[{\"details\":\"Indicates a failure with the token `sender`. Used in transfers.\",\"params\":{\"sender\":\"Address whose tokens are being transferred.\"}}],\"ERC721NonexistentToken(uint256)\":[{\"details\":\"Indicates a `tokenId` whose `owner` is the zero address.\",\"params\":{\"tokenId\":\"Identifier number of a token.\"}}]},\"kind\":\"dev\",\"methods\":{},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"@openzeppelin/contracts/interfaces/draft-IERC6093.sol\":\"IERC721Errors\"},\"evmVersion\":\"london\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":1},\"remappings\":[]},\"sources\":{\"@openzeppelin/contracts/interfaces/draft-IERC6093.sol\":{\"keccak256\":\"0x880da465c203cec76b10d72dbd87c80f387df4102274f23eea1f9c9b0918792b\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://399594cd8bb0143bc9e55e0f1d071d0d8c850a394fb7a319d50edd55d9ed822b\",\"dweb:/ipfs/QmbPZzgtT6LEm9CMqWfagQFwETbV1ztpECBB1DtQHrKiRz\"]}},\"version\":1}" - } - }, - "@openzeppelin/contracts/token/ERC20/ERC20.sol": { - "ERC20": { - "abi": [ - { - "inputs": [ - { - "internalType": "address", - "name": "spender", - "type": "address" - }, - { - "internalType": "uint256", - "name": "allowance", - "type": "uint256" - }, - { - "internalType": "uint256", - "name": "needed", - "type": "uint256" - } - ], - "name": "ERC20InsufficientAllowance", - "type": "error" - }, - { - "inputs": [ - { - "internalType": "address", - "name": "sender", - "type": "address" - }, - { - "internalType": "uint256", - "name": "balance", - "type": "uint256" - }, - { - "internalType": "uint256", - "name": "needed", - "type": "uint256" - } - ], - "name": "ERC20InsufficientBalance", - "type": "error" - }, - { - "inputs": [ - { - "internalType": "address", - "name": "approver", - "type": "address" - } - ], - "name": "ERC20InvalidApprover", - "type": "error" - }, - { - "inputs": [ - { - "internalType": "address", - "name": "receiver", - "type": "address" - } - ], - "name": "ERC20InvalidReceiver", - "type": "error" - }, - { - "inputs": [ - { - "internalType": "address", - "name": "sender", - "type": "address" - } - ], - "name": "ERC20InvalidSender", - "type": "error" - }, - { - "inputs": [ - { - "internalType": "address", - "name": "spender", - "type": "address" - } - ], - "name": "ERC20InvalidSpender", - "type": "error" - }, - { - "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": "value", - "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": "decimals", - "outputs": [ - { - "internalType": "uint8", - "name": "", - "type": "uint8" - } - ], - "stateMutability": "view", - "type": "function" - }, - { - "inputs": [], - "name": "name", - "outputs": [ - { - "internalType": "string", - "name": "", - "type": "string" - } - ], - "stateMutability": "view", - "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": [ - { - "internalType": "address", - "name": "to", - "type": "address" - }, - { - "internalType": "uint256", - "name": "value", - "type": "uint256" - } - ], - "name": "transfer", - "outputs": [ - { - "internalType": "bool", - "name": "", - "type": "bool" - } - ], - "stateMutability": "nonpayable", - "type": "function" - }, - { - "inputs": [ - { - "internalType": "address", - "name": "from", - "type": "address" - }, - { - "internalType": "address", - "name": "to", - "type": "address" - }, - { - "internalType": "uint256", - "name": "value", - "type": "uint256" - } - ], - "name": "transferFrom", - "outputs": [ - { - "internalType": "bool", - "name": "", - "type": "bool" - } - ], - "stateMutability": "nonpayable", - "type": "function" - } - ], - "evm": { - "bytecode": { - "functionDebugData": {}, - "generatedSources": [], - "linkReferences": {}, - "object": "", - "opcodes": "", - "sourceMap": "" - }, - "deployedBytecode": { - "functionDebugData": {}, - "generatedSources": [], - "immutableReferences": {}, - "linkReferences": {}, - "object": "", - "opcodes": "", - "sourceMap": "" - }, - "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" - } - }, - "metadata": "{\"compiler\":{\"version\":\"0.8.20+commit.a1b79de6\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"allowance\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"needed\",\"type\":\"uint256\"}],\"name\":\"ERC20InsufficientAllowance\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"balance\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"needed\",\"type\":\"uint256\"}],\"name\":\"ERC20InsufficientBalance\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"approver\",\"type\":\"address\"}],\"name\":\"ERC20InvalidApprover\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"receiver\",\"type\":\"address\"}],\"name\":\"ERC20InvalidReceiver\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"}],\"name\":\"ERC20InvalidSender\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"}],\"name\":\"ERC20InvalidSpender\",\"type\":\"error\"},{\"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\":\"value\",\"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\":\"decimals\",\"outputs\":[{\"internalType\":\"uint8\",\"name\":\"\",\"type\":\"uint8\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"name\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"stateMutability\":\"view\",\"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\":[{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"name\":\"transfer\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"name\":\"transferFrom\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"}],\"devdoc\":{\"details\":\"Implementation of the {IERC20} interface. This implementation is agnostic to the way tokens are created. This means that a supply mechanism has to be added in a derived contract using {_mint}. TIP: For a detailed writeup see our guide https://forum.openzeppelin.com/t/how-to-implement-erc20-supply-mechanisms/226[How to implement supply mechanisms]. The default value of {decimals} is 18. To change this, you should override this function so it returns a different value. We have followed general OpenZeppelin Contracts guidelines: functions revert instead returning `false` on failure. This behavior is nonetheless conventional and does not conflict with the expectations of ERC-20 applications.\",\"errors\":{\"ERC20InsufficientAllowance(address,uint256,uint256)\":[{\"details\":\"Indicates a failure with the `spender`\\u2019s `allowance`. Used in transfers.\",\"params\":{\"allowance\":\"Amount of tokens a `spender` is allowed to operate with.\",\"needed\":\"Minimum amount required to perform a transfer.\",\"spender\":\"Address that may be allowed to operate on tokens without being their owner.\"}}],\"ERC20InsufficientBalance(address,uint256,uint256)\":[{\"details\":\"Indicates an error related to the current `balance` of a `sender`. Used in transfers.\",\"params\":{\"balance\":\"Current balance for the interacting account.\",\"needed\":\"Minimum amount required to perform a transfer.\",\"sender\":\"Address whose tokens are being transferred.\"}}],\"ERC20InvalidApprover(address)\":[{\"details\":\"Indicates a failure with the `approver` of a token to be approved. Used in approvals.\",\"params\":{\"approver\":\"Address initiating an approval operation.\"}}],\"ERC20InvalidReceiver(address)\":[{\"details\":\"Indicates a failure with the token `receiver`. Used in transfers.\",\"params\":{\"receiver\":\"Address to which tokens are being transferred.\"}}],\"ERC20InvalidSender(address)\":[{\"details\":\"Indicates a failure with the token `sender`. Used in transfers.\",\"params\":{\"sender\":\"Address whose tokens are being transferred.\"}}],\"ERC20InvalidSpender(address)\":[{\"details\":\"Indicates a failure with the `spender` to be approved. Used in approvals.\",\"params\":{\"spender\":\"Address that may be allowed to operate on tokens without being their owner.\"}}]},\"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\":\"See {IERC20-allowance}.\"},\"approve(address,uint256)\":{\"details\":\"See {IERC20-approve}. NOTE: If `value` is the maximum `uint256`, the allowance is not updated on `transferFrom`. This is semantically equivalent to an infinite approval. Requirements: - `spender` cannot be the zero address.\"},\"balanceOf(address)\":{\"details\":\"See {IERC20-balanceOf}.\"},\"constructor\":{\"details\":\"Sets the values for {name} and {symbol}. All two of these values are immutable: they can only be set once during construction.\"},\"decimals()\":{\"details\":\"Returns the number of decimals used to get its user representation. For example, if `decimals` equals `2`, a balance of `505` tokens should be displayed to a user as `5.05` (`505 / 10 ** 2`). Tokens usually opt for a value of 18, imitating the relationship between Ether and Wei. This is the default value returned by this function, unless it's overridden. NOTE: This information is only used for _display_ purposes: it in no way affects any of the arithmetic of the contract, including {IERC20-balanceOf} and {IERC20-transfer}.\"},\"name()\":{\"details\":\"Returns the name of the token.\"},\"symbol()\":{\"details\":\"Returns the symbol of the token, usually a shorter version of the name.\"},\"totalSupply()\":{\"details\":\"See {IERC20-totalSupply}.\"},\"transfer(address,uint256)\":{\"details\":\"See {IERC20-transfer}. Requirements: - `to` cannot be the zero address. - the caller must have a balance of at least `value`.\"},\"transferFrom(address,address,uint256)\":{\"details\":\"See {IERC20-transferFrom}. Skips emitting an {Approval} event indicating an allowance update. This is not required by the ERC. See {xref-ERC20-_approve-address-address-uint256-bool-}[_approve]. NOTE: Does not update the allowance if the current allowance is the maximum `uint256`. Requirements: - `from` and `to` cannot be the zero address. - `from` must have a balance of at least `value`. - the caller must have allowance for ``from``'s tokens of at least `value`.\"}},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"@openzeppelin/contracts/token/ERC20/ERC20.sol\":\"ERC20\"},\"evmVersion\":\"london\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":1},\"remappings\":[]},\"sources\":{\"@openzeppelin/contracts/interfaces/draft-IERC6093.sol\":{\"keccak256\":\"0x880da465c203cec76b10d72dbd87c80f387df4102274f23eea1f9c9b0918792b\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://399594cd8bb0143bc9e55e0f1d071d0d8c850a394fb7a319d50edd55d9ed822b\",\"dweb:/ipfs/QmbPZzgtT6LEm9CMqWfagQFwETbV1ztpECBB1DtQHrKiRz\"]},\"@openzeppelin/contracts/token/ERC20/ERC20.sol\":{\"keccak256\":\"0xbf61ab2ae1d575a17ea58fbb99ca232baddcc4e0eeea180e84cbc74b0c348b31\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://4e0968705bad99747a8e5288aa008678c2be2f471f919dce3925a3cc4f1dee09\",\"dweb:/ipfs/QmbAFnCQfo4tw6ssfQSjhA5LzwHWNNryXN8bX7ty8jiqqn\"]},\"@openzeppelin/contracts/token/ERC20/IERC20.sol\":{\"keccak256\":\"0xe06a3f08a987af6ad2e1c1e774405d4fe08f1694b67517438b467cecf0da0ef7\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://df6f0c459663c9858b6cba2cda1d14a7d05a985bed6d2de72bd8e78c25ee79db\",\"dweb:/ipfs/QmeTTxZ7qVk9rjEv2R4CpCwdf8UMCcRqDNMvzNxHc3Fnn9\"]},\"@openzeppelin/contracts/token/ERC20/extensions/IERC20Metadata.sol\":{\"keccak256\":\"0x70f2f713b13b7ce4610bcd0ac9fec0f3cc43693b043abcb8dc40a42a726eb330\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://c13d13304ac79a83ab1c30168967d19e2203342ebbd6a9bbce4db7550522dcbf\",\"dweb:/ipfs/QmeN5jKMN2vw5bhacr6tkg78afbTTZUeaacNHqjWt4Ew1r\"]},\"@openzeppelin/contracts/utils/Context.sol\":{\"keccak256\":\"0x493033a8d1b176a037b2cc6a04dad01a5c157722049bbecf632ca876224dd4b2\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://6a708e8a5bdb1011c2c381c9a5cfd8a9a956d7d0a9dc1bd8bcdaf52f76ef2f12\",\"dweb:/ipfs/Qmax9WHBnVsZP46ZxEMNRQpLQnrdE4dK8LehML1Py8FowF\"]}},\"version\":1}" - } - }, - "@openzeppelin/contracts/token/ERC20/IERC20.sol": { - "IERC20": { - "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": "value", - "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": "to", - "type": "address" - }, - { - "internalType": "uint256", - "name": "value", - "type": "uint256" - } - ], - "name": "transfer", - "outputs": [ - { - "internalType": "bool", - "name": "", - "type": "bool" - } - ], - "stateMutability": "nonpayable", - "type": "function" - }, - { - "inputs": [ - { - "internalType": "address", - "name": "from", - "type": "address" - }, - { - "internalType": "address", - "name": "to", - "type": "address" - }, - { - "internalType": "uint256", - "name": "value", - "type": "uint256" - } - ], - "name": "transferFrom", - "outputs": [ - { - "internalType": "bool", - "name": "", - "type": "bool" - } - ], - "stateMutability": "nonpayable", - "type": "function" - } - ], - "evm": { - "bytecode": { - "functionDebugData": {}, - "generatedSources": [], - "linkReferences": {}, - "object": "", - "opcodes": "", - "sourceMap": "" - }, - "deployedBytecode": { - "functionDebugData": {}, - "generatedSources": [], - "immutableReferences": {}, - "linkReferences": {}, - "object": "", - "opcodes": "", - "sourceMap": "" - }, - "methodIdentifiers": { - "allowance(address,address)": "dd62ed3e", - "approve(address,uint256)": "095ea7b3", - "balanceOf(address)": "70a08231", - "totalSupply()": "18160ddd", - "transfer(address,uint256)": "a9059cbb", - "transferFrom(address,address,uint256)": "23b872dd" - } - }, - "metadata": "{\"compiler\":{\"version\":\"0.8.20+commit.a1b79de6\"},\"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\":\"value\",\"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\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"name\":\"transfer\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"name\":\"transferFrom\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"}],\"devdoc\":{\"details\":\"Interface of the ERC-20 standard as defined in the ERC.\",\"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 a `value` amount of tokens 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 value of tokens owned by `account`.\"},\"totalSupply()\":{\"details\":\"Returns the value of tokens in existence.\"},\"transfer(address,uint256)\":{\"details\":\"Moves a `value` amount of tokens from the caller's account to `to`. Returns a boolean value indicating whether the operation succeeded. Emits a {Transfer} event.\"},\"transferFrom(address,address,uint256)\":{\"details\":\"Moves a `value` amount of tokens from `from` to `to` using the allowance mechanism. `value` 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\":{\"@openzeppelin/contracts/token/ERC20/IERC20.sol\":\"IERC20\"},\"evmVersion\":\"london\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":1},\"remappings\":[]},\"sources\":{\"@openzeppelin/contracts/token/ERC20/IERC20.sol\":{\"keccak256\":\"0xe06a3f08a987af6ad2e1c1e774405d4fe08f1694b67517438b467cecf0da0ef7\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://df6f0c459663c9858b6cba2cda1d14a7d05a985bed6d2de72bd8e78c25ee79db\",\"dweb:/ipfs/QmeTTxZ7qVk9rjEv2R4CpCwdf8UMCcRqDNMvzNxHc3Fnn9\"]}},\"version\":1}" - } - }, - "@openzeppelin/contracts/token/ERC20/extensions/IERC20Metadata.sol": { - "IERC20Metadata": { - "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": "value", - "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": "decimals", - "outputs": [ - { - "internalType": "uint8", - "name": "", - "type": "uint8" - } - ], - "stateMutability": "view", - "type": "function" - }, - { - "inputs": [], - "name": "name", - "outputs": [ - { - "internalType": "string", - "name": "", - "type": "string" - } - ], - "stateMutability": "view", - "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": [ - { - "internalType": "address", - "name": "to", - "type": "address" - }, - { - "internalType": "uint256", - "name": "value", - "type": "uint256" - } - ], - "name": "transfer", - "outputs": [ - { - "internalType": "bool", - "name": "", - "type": "bool" - } - ], - "stateMutability": "nonpayable", - "type": "function" - }, - { - "inputs": [ - { - "internalType": "address", - "name": "from", - "type": "address" - }, - { - "internalType": "address", - "name": "to", - "type": "address" - }, - { - "internalType": "uint256", - "name": "value", - "type": "uint256" - } - ], - "name": "transferFrom", - "outputs": [ - { - "internalType": "bool", - "name": "", - "type": "bool" - } - ], - "stateMutability": "nonpayable", - "type": "function" - } - ], - "evm": { - "bytecode": { - "functionDebugData": {}, - "generatedSources": [], - "linkReferences": {}, - "object": "", - "opcodes": "", - "sourceMap": "" - }, - "deployedBytecode": { - "functionDebugData": {}, - "generatedSources": [], - "immutableReferences": {}, - "linkReferences": {}, - "object": "", - "opcodes": "", - "sourceMap": "" - }, - "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" - } - }, - "metadata": "{\"compiler\":{\"version\":\"0.8.20+commit.a1b79de6\"},\"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\":\"value\",\"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\":\"decimals\",\"outputs\":[{\"internalType\":\"uint8\",\"name\":\"\",\"type\":\"uint8\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"name\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"stateMutability\":\"view\",\"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\":[{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"name\":\"transfer\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"name\":\"transferFrom\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"}],\"devdoc\":{\"details\":\"Interface for the optional metadata functions from the ERC-20 standard.\",\"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 a `value` amount of tokens 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 value of tokens owned by `account`.\"},\"decimals()\":{\"details\":\"Returns the decimals places of the token.\"},\"name()\":{\"details\":\"Returns the name of the token.\"},\"symbol()\":{\"details\":\"Returns the symbol of the token.\"},\"totalSupply()\":{\"details\":\"Returns the value of tokens in existence.\"},\"transfer(address,uint256)\":{\"details\":\"Moves a `value` amount of tokens from the caller's account to `to`. Returns a boolean value indicating whether the operation succeeded. Emits a {Transfer} event.\"},\"transferFrom(address,address,uint256)\":{\"details\":\"Moves a `value` amount of tokens from `from` to `to` using the allowance mechanism. `value` 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\":{\"@openzeppelin/contracts/token/ERC20/extensions/IERC20Metadata.sol\":\"IERC20Metadata\"},\"evmVersion\":\"london\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":1},\"remappings\":[]},\"sources\":{\"@openzeppelin/contracts/token/ERC20/IERC20.sol\":{\"keccak256\":\"0xe06a3f08a987af6ad2e1c1e774405d4fe08f1694b67517438b467cecf0da0ef7\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://df6f0c459663c9858b6cba2cda1d14a7d05a985bed6d2de72bd8e78c25ee79db\",\"dweb:/ipfs/QmeTTxZ7qVk9rjEv2R4CpCwdf8UMCcRqDNMvzNxHc3Fnn9\"]},\"@openzeppelin/contracts/token/ERC20/extensions/IERC20Metadata.sol\":{\"keccak256\":\"0x70f2f713b13b7ce4610bcd0ac9fec0f3cc43693b043abcb8dc40a42a726eb330\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://c13d13304ac79a83ab1c30168967d19e2203342ebbd6a9bbce4db7550522dcbf\",\"dweb:/ipfs/QmeN5jKMN2vw5bhacr6tkg78afbTTZUeaacNHqjWt4Ew1r\"]}},\"version\":1}" - } - }, - "@openzeppelin/contracts/utils/Context.sol": { - "Context": { - "abi": [], - "evm": { - "bytecode": { - "functionDebugData": {}, - "generatedSources": [], - "linkReferences": {}, - "object": "", - "opcodes": "", - "sourceMap": "" - }, - "deployedBytecode": { - "functionDebugData": {}, - "generatedSources": [], - "immutableReferences": {}, - "linkReferences": {}, - "object": "", - "opcodes": "", - "sourceMap": "" - }, - "methodIdentifiers": {} - }, - "metadata": "{\"compiler\":{\"version\":\"0.8.20+commit.a1b79de6\"},\"language\":\"Solidity\",\"output\":{\"abi\":[],\"devdoc\":{\"details\":\"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 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.\",\"kind\":\"dev\",\"methods\":{},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"@openzeppelin/contracts/utils/Context.sol\":\"Context\"},\"evmVersion\":\"london\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":1},\"remappings\":[]},\"sources\":{\"@openzeppelin/contracts/utils/Context.sol\":{\"keccak256\":\"0x493033a8d1b176a037b2cc6a04dad01a5c157722049bbecf632ca876224dd4b2\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://6a708e8a5bdb1011c2c381c9a5cfd8a9a956d7d0a9dc1bd8bcdaf52f76ef2f12\",\"dweb:/ipfs/Qmax9WHBnVsZP46ZxEMNRQpLQnrdE4dK8LehML1Py8FowF\"]}},\"version\":1}" - } - }, - "contracts/TokenVesting.sol": { - "SimpleVesting": { - "abi": [ - { - "inputs": [ - { - "internalType": "address", - "name": "_token", - "type": "address" - } - ], - "stateMutability": "nonpayable", - "type": "constructor" - }, - { - "anonymous": false, - "inputs": [ - { - "indexed": false, - "internalType": "address", - "name": "beneficiary", - "type": "address" - }, - { - "indexed": false, - "internalType": "uint256", - "name": "amount", - "type": "uint256" - } - ], - "name": "TokensClaimed", - "type": "event" - }, - { - "anonymous": false, - "inputs": [ - { - "indexed": false, - "internalType": "address", - "name": "beneficiary", - "type": "address" - }, - { - "indexed": false, - "internalType": "uint256", - "name": "amount", - "type": "uint256" - }, - { - "indexed": false, - "internalType": "uint256", - "name": "endTime", - "type": "uint256" - } - ], - "name": "VestingCreated", - "type": "event" - }, - { - "inputs": [], - "name": "admin", - "outputs": [ - { - "internalType": "address", - "name": "", - "type": "address" - } - ], - "stateMutability": "view", - "type": "function" - }, - { - "inputs": [], - "name": "claim", - "outputs": [], - "stateMutability": "nonpayable", - "type": "function" - }, - { - "inputs": [ - { - "internalType": "address", - "name": "beneficiary", - "type": "address" - }, - { - "internalType": "uint256", - "name": "amount", - "type": "uint256" - }, - { - "internalType": "uint256", - "name": "duration", - "type": "uint256" - } - ], - "name": "createVesting", - "outputs": [], - "stateMutability": "nonpayable", - "type": "function" - }, - { - "inputs": [], - "name": "token", - "outputs": [ - { - "internalType": "contract IERC20", - "name": "", - "type": "address" - } - ], - "stateMutability": "view", - "type": "function" - }, - { - "inputs": [ - { - "internalType": "address", - "name": "", - "type": "address" - } - ], - "name": "vestedAmount", - "outputs": [ - { - "internalType": "uint256", - "name": "", - "type": "uint256" - } - ], - "stateMutability": "view", - "type": "function" - }, - { - "inputs": [ - { - "internalType": "address", - "name": "", - "type": "address" - } - ], - "name": "vestingEnd", - "outputs": [ - { - "internalType": "uint256", - "name": "", - "type": "uint256" - } - ], - "stateMutability": "view", - "type": "function" - } - ], - "evm": { - "bytecode": { - "functionDebugData": { - "@_832": { - "entryPoint": null, - "id": 832, - "parameterSlots": 1, - "returnSlots": 0 - }, - "abi_decode_tuple_t_address_fromMemory": { - "entryPoint": 93, - "id": null, - "parameterSlots": 2, - "returnSlots": 1 - } - }, - "generatedSources": [ - { - "ast": { - "nodeType": "YulBlock", - "src": "0:306:7", - "statements": [ - { - "nodeType": "YulBlock", - "src": "6:3:7", - "statements": [] - }, - { - "body": { - "nodeType": "YulBlock", - "src": "95:209:7", - "statements": [ - { - "body": { - "nodeType": "YulBlock", - "src": "141:16:7", - "statements": [ - { - "expression": { - "arguments": [ - { - "kind": "number", - "nodeType": "YulLiteral", - "src": "150:1:7", - "type": "", - "value": "0" - }, - { - "kind": "number", - "nodeType": "YulLiteral", - "src": "153:1:7", - "type": "", - "value": "0" - } - ], - "functionName": { - "name": "revert", - "nodeType": "YulIdentifier", - "src": "143:6:7" - }, - "nodeType": "YulFunctionCall", - "src": "143:12:7" - }, - "nodeType": "YulExpressionStatement", - "src": "143:12:7" - } - ] - }, - "condition": { - "arguments": [ - { - "arguments": [ - { - "name": "dataEnd", - "nodeType": "YulIdentifier", - "src": "116:7:7" - }, - { - "name": "headStart", - "nodeType": "YulIdentifier", - "src": "125:9:7" - } - ], - "functionName": { - "name": "sub", - "nodeType": "YulIdentifier", - "src": "112:3:7" - }, - "nodeType": "YulFunctionCall", - "src": "112:23:7" - }, - { - "kind": "number", - "nodeType": "YulLiteral", - "src": "137:2:7", - "type": "", - "value": "32" - } - ], - "functionName": { - "name": "slt", - "nodeType": "YulIdentifier", - "src": "108:3:7" - }, - "nodeType": "YulFunctionCall", - "src": "108:32:7" - }, - "nodeType": "YulIf", - "src": "105:52:7" - }, - { - "nodeType": "YulVariableDeclaration", - "src": "166:29:7", - "value": { - "arguments": [ - { - "name": "headStart", - "nodeType": "YulIdentifier", - "src": "185:9:7" - } - ], - "functionName": { - "name": "mload", - "nodeType": "YulIdentifier", - "src": "179:5:7" - }, - "nodeType": "YulFunctionCall", - "src": "179:16:7" - }, - "variables": [ - { - "name": "value", - "nodeType": "YulTypedName", - "src": "170:5:7", - "type": "" - } - ] - }, - { - "body": { - "nodeType": "YulBlock", - "src": "258:16:7", - "statements": [ - { - "expression": { - "arguments": [ - { - "kind": "number", - "nodeType": "YulLiteral", - "src": "267:1:7", - "type": "", - "value": "0" - }, - { - "kind": "number", - "nodeType": "YulLiteral", - "src": "270:1:7", - "type": "", - "value": "0" - } - ], - "functionName": { - "name": "revert", - "nodeType": "YulIdentifier", - "src": "260:6:7" - }, - "nodeType": "YulFunctionCall", - "src": "260:12:7" - }, - "nodeType": "YulExpressionStatement", - "src": "260:12:7" - } - ] - }, - "condition": { - "arguments": [ - { - "arguments": [ - { - "name": "value", - "nodeType": "YulIdentifier", - "src": "217:5:7" - }, - { - "arguments": [ - { - "name": "value", - "nodeType": "YulIdentifier", - "src": "228:5:7" - }, - { - "arguments": [ - { - "arguments": [ - { - "kind": "number", - "nodeType": "YulLiteral", - "src": "243:3:7", - "type": "", - "value": "160" - }, - { - "kind": "number", - "nodeType": "YulLiteral", - "src": "248:1:7", - "type": "", - "value": "1" - } - ], - "functionName": { - "name": "shl", - "nodeType": "YulIdentifier", - "src": "239:3:7" - }, - "nodeType": "YulFunctionCall", - "src": "239:11:7" - }, - { - "kind": "number", - "nodeType": "YulLiteral", - "src": "252:1:7", - "type": "", - "value": "1" - } - ], - "functionName": { - "name": "sub", - "nodeType": "YulIdentifier", - "src": "235:3:7" - }, - "nodeType": "YulFunctionCall", - "src": "235:19:7" - } - ], - "functionName": { - "name": "and", - "nodeType": "YulIdentifier", - "src": "224:3:7" - }, - "nodeType": "YulFunctionCall", - "src": "224:31:7" - } - ], - "functionName": { - "name": "eq", - "nodeType": "YulIdentifier", - "src": "214:2:7" - }, - "nodeType": "YulFunctionCall", - "src": "214:42:7" - } - ], - "functionName": { - "name": "iszero", - "nodeType": "YulIdentifier", - "src": "207:6:7" - }, - "nodeType": "YulFunctionCall", - "src": "207:50:7" - }, - "nodeType": "YulIf", - "src": "204:70:7" - }, - { - "nodeType": "YulAssignment", - "src": "283:15:7", - "value": { - "name": "value", - "nodeType": "YulIdentifier", - "src": "293:5:7" - }, - "variableNames": [ - { - "name": "value0", - "nodeType": "YulIdentifier", - "src": "283:6:7" - } - ] - } - ] - }, - "name": "abi_decode_tuple_t_address_fromMemory", - "nodeType": "YulFunctionDefinition", - "parameters": [ - { - "name": "headStart", - "nodeType": "YulTypedName", - "src": "61:9:7", - "type": "" - }, - { - "name": "dataEnd", - "nodeType": "YulTypedName", - "src": "72:7:7", - "type": "" - } - ], - "returnVariables": [ - { - "name": "value0", - "nodeType": "YulTypedName", - "src": "84:6:7", - "type": "" - } - ], - "src": "14:290:7" - } - ] - }, - "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": 7, - "language": "Yul", - "name": "#utility.yul" - } - ], - "linkReferences": {}, - "object": "608060405234801561001057600080fd5b5060405161066338038061066383398101604081905261002f9161005d565b600080546001600160a01b039092166001600160a01b0319928316179055600180549091163317905561008d565b60006020828403121561006f57600080fd5b81516001600160a01b038116811461008657600080fd5b9392505050565b6105c78061009c6000396000f3fe608060405234801561001057600080fd5b50600436106100625760003560e01c80632a918c3d14610067578063384711cc1461009a5780634e71d92d146100ba578063e9754908146100c4578063f851a440146100d7578063fc0c546a14610102575b600080fd5b6100876100753660046104b1565b60036020526000908152604090205481565b6040519081526020015b60405180910390f35b6100876100a83660046104b1565b60026020526000908152604090205481565b6100c2610115565b005b6100c26100d23660046104d3565b61029c565b6001546100ea906001600160a01b031681565b6040516001600160a01b039091168152602001610091565b6000546100ea906001600160a01b031681565b3360009081526003602052604090205442101561016d5760405162461bcd60e51b815260206004820152601160248201527015995cdd1a5b99c81b9bdd08195b991959607a1b60448201526064015b60405180910390fd5b33600090815260026020526040902054806101bf5760405162461bcd60e51b81526020600482015260126024820152714e6f20746f6b656e7320746f20636c61696d60701b6044820152606401610164565b336000818152600260205260408082208290559054905163a9059cbb60e01b81526001600160a01b039091169163a9059cbb9161020191908590600401610506565b6020604051808303816000875af1158015610220573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610244919061051f565b6102605760405162461bcd60e51b815260040161016490610541565b7f896e034966eaaf1adc54acc0f257056febbd300c9e47182cf761982cf1f5e4303382604051610291929190610506565b60405180910390a150565b6001546001600160a01b031633146102e25760405162461bcd60e51b81526020600482015260096024820152682737ba1030b236b4b760b91b6044820152606401610164565b6001600160a01b03831661032a5760405162461bcd60e51b815260206004820152600f60248201526e496e76616c6964206164647265737360881b6044820152606401610164565b6000821161036b5760405162461bcd60e51b815260206004820152600e60248201526d125b9d985b1a5908185b5bdd5b9d60921b6044820152606401610164565b6001600160a01b0383166000908152600260205260409020829055610390814261056a565b6001600160a01b03848116600090815260036020526040808220939093555491516323b872dd60e01b8152336004820152306024820152604481018590529116906323b872dd906064016020604051808303816000875af11580156103f9573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061041d919061051f565b6104395760405162461bcd60e51b815260040161016490610541565b6001600160a01b03831660008181526003602090815260409182902054825193845290830185905282820152517f9ade76f4385de306666dfb21a52b27d52db0fde8ad0f515fa261f532cac60d219181900360600190a1505050565b80356001600160a01b03811681146104ac57600080fd5b919050565b6000602082840312156104c357600080fd5b6104cc82610495565b9392505050565b6000806000606084860312156104e857600080fd5b6104f184610495565b95602085013595506040909401359392505050565b6001600160a01b03929092168252602082015260400190565b60006020828403121561053157600080fd5b815180151581146104cc57600080fd5b6020808252600f908201526e151c985b9cd9995c8819985a5b1959608a1b604082015260600190565b8082018082111561058b57634e487b7160e01b600052601160045260246000fd5b9291505056fea2646970667358221220774d76ad99d65f15946476201df75f44208bd7db96041c4ccc51e3cc40776eb464736f6c63430008140033", - "opcodes": "PUSH1 0x80 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH2 0x10 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x40 MLOAD PUSH2 0x663 CODESIZE SUB DUP1 PUSH2 0x663 DUP4 CODECOPY DUP2 ADD PUSH1 0x40 DUP2 SWAP1 MSTORE PUSH2 0x2F SWAP2 PUSH2 0x5D JUMP JUMPDEST PUSH1 0x0 DUP1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 SWAP3 AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB NOT SWAP3 DUP4 AND OR SWAP1 SSTORE PUSH1 0x1 DUP1 SLOAD SWAP1 SWAP2 AND CALLER OR SWAP1 SSTORE PUSH2 0x8D JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x6F JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND DUP2 EQ PUSH2 0x86 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH2 0x5C7 DUP1 PUSH2 0x9C 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 0x62 JUMPI PUSH1 0x0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0x2A918C3D EQ PUSH2 0x67 JUMPI DUP1 PUSH4 0x384711CC EQ PUSH2 0x9A JUMPI DUP1 PUSH4 0x4E71D92D EQ PUSH2 0xBA JUMPI DUP1 PUSH4 0xE9754908 EQ PUSH2 0xC4 JUMPI DUP1 PUSH4 0xF851A440 EQ PUSH2 0xD7 JUMPI DUP1 PUSH4 0xFC0C546A EQ PUSH2 0x102 JUMPI JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x87 PUSH2 0x75 CALLDATASIZE PUSH1 0x4 PUSH2 0x4B1 JUMP JUMPDEST PUSH1 0x3 PUSH1 0x20 MSTORE PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD DUP2 JUMP JUMPDEST PUSH1 0x40 MLOAD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0x87 PUSH2 0xA8 CALLDATASIZE PUSH1 0x4 PUSH2 0x4B1 JUMP JUMPDEST PUSH1 0x2 PUSH1 0x20 MSTORE PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD DUP2 JUMP JUMPDEST PUSH2 0xC2 PUSH2 0x115 JUMP JUMPDEST STOP JUMPDEST PUSH2 0xC2 PUSH2 0xD2 CALLDATASIZE PUSH1 0x4 PUSH2 0x4D3 JUMP JUMPDEST PUSH2 0x29C JUMP JUMPDEST PUSH1 0x1 SLOAD PUSH2 0xEA 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 0x91 JUMP JUMPDEST PUSH1 0x0 SLOAD PUSH2 0xEA SWAP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 JUMP JUMPDEST CALLER PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x3 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD TIMESTAMP LT ISZERO PUSH2 0x16D JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x11 PUSH1 0x24 DUP3 ADD MSTORE PUSH17 0x15995CDD1A5B99C81B9BDD08195B991959 PUSH1 0x7A SHL PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 ADD JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST CALLER PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x2 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD DUP1 PUSH2 0x1BF 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 0x4E6F20746F6B656E7320746F20636C61696D PUSH1 0x70 SHL PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 ADD PUSH2 0x164 JUMP JUMPDEST CALLER PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0x2 PUSH1 0x20 MSTORE PUSH1 0x40 DUP1 DUP3 KECCAK256 DUP3 SWAP1 SSTORE SWAP1 SLOAD SWAP1 MLOAD PUSH4 0xA9059CBB PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 SWAP2 AND SWAP2 PUSH4 0xA9059CBB SWAP2 PUSH2 0x201 SWAP2 SWAP1 DUP6 SWAP1 PUSH1 0x4 ADD PUSH2 0x506 JUMP JUMPDEST PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 GAS CALL ISZERO DUP1 ISZERO PUSH2 0x220 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x244 SWAP2 SWAP1 PUSH2 0x51F JUMP JUMPDEST PUSH2 0x260 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x164 SWAP1 PUSH2 0x541 JUMP JUMPDEST PUSH32 0x896E034966EAAF1ADC54ACC0F257056FEBBD300C9E47182CF761982CF1F5E430 CALLER DUP3 PUSH1 0x40 MLOAD PUSH2 0x291 SWAP3 SWAP2 SWAP1 PUSH2 0x506 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG1 POP JUMP JUMPDEST PUSH1 0x1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND CALLER EQ PUSH2 0x2E2 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x9 PUSH1 0x24 DUP3 ADD MSTORE PUSH9 0x2737BA1030B236B4B7 PUSH1 0xB9 SHL PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 ADD PUSH2 0x164 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP4 AND PUSH2 0x32A JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0xF PUSH1 0x24 DUP3 ADD MSTORE PUSH15 0x496E76616C69642061646472657373 PUSH1 0x88 SHL PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 ADD PUSH2 0x164 JUMP JUMPDEST PUSH1 0x0 DUP3 GT PUSH2 0x36B 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 0x125B9D985B1A5908185B5BDD5B9D PUSH1 0x92 SHL PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 ADD PUSH2 0x164 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP4 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x2 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 DUP3 SWAP1 SSTORE PUSH2 0x390 DUP2 TIMESTAMP PUSH2 0x56A JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP5 DUP2 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x3 PUSH1 0x20 MSTORE PUSH1 0x40 DUP1 DUP3 KECCAK256 SWAP4 SWAP1 SWAP4 SSTORE SLOAD SWAP2 MLOAD PUSH4 0x23B872DD PUSH1 0xE0 SHL DUP2 MSTORE CALLER PUSH1 0x4 DUP3 ADD MSTORE ADDRESS PUSH1 0x24 DUP3 ADD MSTORE PUSH1 0x44 DUP2 ADD DUP6 SWAP1 MSTORE SWAP2 AND SWAP1 PUSH4 0x23B872DD SWAP1 PUSH1 0x64 ADD PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 GAS CALL ISZERO DUP1 ISZERO PUSH2 0x3F9 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x41D SWAP2 SWAP1 PUSH2 0x51F JUMP JUMPDEST PUSH2 0x439 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x164 SWAP1 PUSH2 0x541 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP4 AND PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0x3 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 SWAP2 DUP3 SWAP1 KECCAK256 SLOAD DUP3 MLOAD SWAP4 DUP5 MSTORE SWAP1 DUP4 ADD DUP6 SWAP1 MSTORE DUP3 DUP3 ADD MSTORE MLOAD PUSH32 0x9ADE76F4385DE306666DFB21A52B27D52DB0FDE8AD0F515FA261F532CAC60D21 SWAP2 DUP2 SWAP1 SUB PUSH1 0x60 ADD SWAP1 LOG1 POP POP POP JUMP JUMPDEST DUP1 CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND DUP2 EQ PUSH2 0x4AC JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x4C3 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x4CC DUP3 PUSH2 0x495 JUMP JUMPDEST SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 PUSH1 0x60 DUP5 DUP7 SUB SLT ISZERO PUSH2 0x4E8 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x4F1 DUP5 PUSH2 0x495 JUMP JUMPDEST SWAP6 PUSH1 0x20 DUP6 ADD CALLDATALOAD SWAP6 POP PUSH1 0x40 SWAP1 SWAP5 ADD CALLDATALOAD SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP3 SWAP1 SWAP3 AND DUP3 MSTORE PUSH1 0x20 DUP3 ADD MSTORE PUSH1 0x40 ADD SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x531 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 MLOAD DUP1 ISZERO ISZERO DUP2 EQ PUSH2 0x4CC JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE PUSH1 0xF SWAP1 DUP3 ADD MSTORE PUSH15 0x151C985B9CD9995C8819985A5B1959 PUSH1 0x8A SHL PUSH1 0x40 DUP3 ADD MSTORE PUSH1 0x60 ADD SWAP1 JUMP JUMPDEST DUP1 DUP3 ADD DUP1 DUP3 GT ISZERO PUSH2 0x58B JUMPI PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH1 0x0 MSTORE PUSH1 0x11 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST SWAP3 SWAP2 POP POP JUMP INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 PUSH24 0x4D76AD99D65F15946476201DF75F44208BD7DB96041C4CCC MLOAD 0xE3 0xCC BLOCKHASH PUSH24 0x6EB464736F6C634300081400330000000000000000000000 ", - "sourceMap": "116:1406:5:-:0;;;445:95;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;483:5;:22;;-1:-1:-1;;;;;483:22:5;;;-1:-1:-1;;;;;;483:22:5;;;;;;;515:18;;;;;523:10;515:18;;;116:1406;;14:290:7;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:7;;214:42;;204:70;;270:1;267;260:12;204:70;293:5;14:290;-1:-1:-1;;;14:290:7:o;:::-;116:1406:5;;;;;;" - }, - "deployedBytecode": { - "functionDebugData": { - "@admin_793": { - "entryPoint": null, - "id": 793, - "parameterSlots": 0, - "returnSlots": 0 - }, - "@claim_956": { - "entryPoint": 277, - "id": 956, - "parameterSlots": 0, - "returnSlots": 0 - }, - "@createVesting_904": { - "entryPoint": 668, - "id": 904, - "parameterSlots": 3, - "returnSlots": 0 - }, - "@token_791": { - "entryPoint": null, - "id": 791, - "parameterSlots": 0, - "returnSlots": 0 - }, - "@vestedAmount_797": { - "entryPoint": null, - "id": 797, - "parameterSlots": 0, - "returnSlots": 0 - }, - "@vestingEnd_801": { - "entryPoint": null, - "id": 801, - "parameterSlots": 0, - "returnSlots": 0 - }, - "abi_decode_address": { - "entryPoint": 1173, - "id": null, - "parameterSlots": 1, - "returnSlots": 1 - }, - "abi_decode_tuple_t_address": { - "entryPoint": 1201, - "id": null, - "parameterSlots": 2, - "returnSlots": 1 - }, - "abi_decode_tuple_t_addresst_uint256t_uint256": { - "entryPoint": 1235, - "id": null, - "parameterSlots": 2, - "returnSlots": 3 - }, - "abi_decode_tuple_t_bool_fromMemory": { - "entryPoint": 1311, - "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__to_t_address_t_address_t_uint256__fromStack_reversed": { - "entryPoint": null, - "id": null, - "parameterSlots": 4, - "returnSlots": 1 - }, - "abi_encode_tuple_t_address_t_uint256__to_t_address_t_uint256__fromStack_reversed": { - "entryPoint": 1286, - "id": null, - "parameterSlots": 3, - "returnSlots": 1 - }, - "abi_encode_tuple_t_address_t_uint256_t_uint256__to_t_address_t_uint256_t_uint256__fromStack_reversed": { - "entryPoint": null, - "id": null, - "parameterSlots": 4, - "returnSlots": 1 - }, - "abi_encode_tuple_t_contract$_IERC20_$729__to_t_address__fromStack_reversed": { - "entryPoint": null, - "id": null, - "parameterSlots": 2, - "returnSlots": 1 - }, - "abi_encode_tuple_t_stringliteral_0d5449e713a47f03a14de06feb7e7374931b31bbe74b9f8d4277d4797f0eb90e__to_t_string_memory_ptr__fromStack_reversed": { - "entryPoint": null, - "id": null, - "parameterSlots": 1, - "returnSlots": 1 - }, - "abi_encode_tuple_t_stringliteral_1462473b7a4b33d32b109b815fd2324d00c9e5839b707ecf16d0ab5744f99226__to_t_string_memory_ptr__fromStack_reversed": { - "entryPoint": null, - "id": null, - "parameterSlots": 1, - "returnSlots": 1 - }, - "abi_encode_tuple_t_stringliteral_25adaa6d082ce15f901e0d8a3d393e7462ef9edf2e6bc8321fa14d1615b6fc51__to_t_string_memory_ptr__fromStack_reversed": { - "entryPoint": 1345, - "id": null, - "parameterSlots": 1, - "returnSlots": 1 - }, - "abi_encode_tuple_t_stringliteral_2fd1dfd944df9898ee4c79794168926172c3d96d7664ff9919bb7080bb018af1__to_t_string_memory_ptr__fromStack_reversed": { - "entryPoint": null, - "id": null, - "parameterSlots": 1, - "returnSlots": 1 - }, - "abi_encode_tuple_t_stringliteral_a8ad0d9b43a12ad06193d78950e25818160251504b5298878dc06273011c350f__to_t_string_memory_ptr__fromStack_reversed": { - "entryPoint": null, - "id": null, - "parameterSlots": 1, - "returnSlots": 1 - }, - "abi_encode_tuple_t_stringliteral_fa7e120cf98867f00c0ac28b387a73caec64b93b1889065f7b4c5e5232c0bad6__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 - }, - "checked_add_t_uint256": { - "entryPoint": 1386, - "id": null, - "parameterSlots": 2, - "returnSlots": 1 - } - }, - "generatedSources": [ - { - "ast": { - "nodeType": "YulBlock", - "src": "0:4898:7", - "statements": [ - { - "nodeType": "YulBlock", - "src": "6:3:7", - "statements": [] - }, - { - "body": { - "nodeType": "YulBlock", - "src": "63:124:7", - "statements": [ - { - "nodeType": "YulAssignment", - "src": "73:29:7", - "value": { - "arguments": [ - { - "name": "offset", - "nodeType": "YulIdentifier", - "src": "95:6:7" - } - ], - "functionName": { - "name": "calldataload", - "nodeType": "YulIdentifier", - "src": "82:12:7" - }, - "nodeType": "YulFunctionCall", - "src": "82:20:7" - }, - "variableNames": [ - { - "name": "value", - "nodeType": "YulIdentifier", - "src": "73:5:7" - } - ] - }, - { - "body": { - "nodeType": "YulBlock", - "src": "165:16:7", - "statements": [ - { - "expression": { - "arguments": [ - { - "kind": "number", - "nodeType": "YulLiteral", - "src": "174:1:7", - "type": "", - "value": "0" - }, - { - "kind": "number", - "nodeType": "YulLiteral", - "src": "177:1:7", - "type": "", - "value": "0" - } - ], - "functionName": { - "name": "revert", - "nodeType": "YulIdentifier", - "src": "167:6:7" - }, - "nodeType": "YulFunctionCall", - "src": "167:12:7" - }, - "nodeType": "YulExpressionStatement", - "src": "167:12:7" - } - ] - }, - "condition": { - "arguments": [ - { - "arguments": [ - { - "name": "value", - "nodeType": "YulIdentifier", - "src": "124:5:7" - }, - { - "arguments": [ - { - "name": "value", - "nodeType": "YulIdentifier", - "src": "135:5:7" - }, - { - "arguments": [ - { - "arguments": [ - { - "kind": "number", - "nodeType": "YulLiteral", - "src": "150:3:7", - "type": "", - "value": "160" - }, - { - "kind": "number", - "nodeType": "YulLiteral", - "src": "155:1:7", - "type": "", - "value": "1" - } - ], - "functionName": { - "name": "shl", - "nodeType": "YulIdentifier", - "src": "146:3:7" - }, - "nodeType": "YulFunctionCall", - "src": "146:11:7" - }, - { - "kind": "number", - "nodeType": "YulLiteral", - "src": "159:1:7", - "type": "", - "value": "1" - } - ], - "functionName": { - "name": "sub", - "nodeType": "YulIdentifier", - "src": "142:3:7" - }, - "nodeType": "YulFunctionCall", - "src": "142:19:7" - } - ], - "functionName": { - "name": "and", - "nodeType": "YulIdentifier", - "src": "131:3:7" - }, - "nodeType": "YulFunctionCall", - "src": "131:31:7" - } - ], - "functionName": { - "name": "eq", - "nodeType": "YulIdentifier", - "src": "121:2:7" - }, - "nodeType": "YulFunctionCall", - "src": "121:42:7" - } - ], - "functionName": { - "name": "iszero", - "nodeType": "YulIdentifier", - "src": "114:6:7" - }, - "nodeType": "YulFunctionCall", - "src": "114:50:7" - }, - "nodeType": "YulIf", - "src": "111:70:7" - } - ] - }, - "name": "abi_decode_address", - "nodeType": "YulFunctionDefinition", - "parameters": [ - { - "name": "offset", - "nodeType": "YulTypedName", - "src": "42:6:7", - "type": "" - } - ], - "returnVariables": [ - { - "name": "value", - "nodeType": "YulTypedName", - "src": "53:5:7", - "type": "" - } - ], - "src": "14:173:7" - }, - { - "body": { - "nodeType": "YulBlock", - "src": "262:116:7", - "statements": [ - { - "body": { - "nodeType": "YulBlock", - "src": "308:16:7", - "statements": [ - { - "expression": { - "arguments": [ - { - "kind": "number", - "nodeType": "YulLiteral", - "src": "317:1:7", - "type": "", - "value": "0" - }, - { - "kind": "number", - "nodeType": "YulLiteral", - "src": "320:1:7", - "type": "", - "value": "0" - } - ], - "functionName": { - "name": "revert", - "nodeType": "YulIdentifier", - "src": "310:6:7" - }, - "nodeType": "YulFunctionCall", - "src": "310:12:7" - }, - "nodeType": "YulExpressionStatement", - "src": "310:12:7" - } - ] - }, - "condition": { - "arguments": [ - { - "arguments": [ - { - "name": "dataEnd", - "nodeType": "YulIdentifier", - "src": "283:7:7" - }, - { - "name": "headStart", - "nodeType": "YulIdentifier", - "src": "292:9:7" - } - ], - "functionName": { - "name": "sub", - "nodeType": "YulIdentifier", - "src": "279:3:7" - }, - "nodeType": "YulFunctionCall", - "src": "279:23:7" - }, - { - "kind": "number", - "nodeType": "YulLiteral", - "src": "304:2:7", - "type": "", - "value": "32" - } - ], - "functionName": { - "name": "slt", - "nodeType": "YulIdentifier", - "src": "275:3:7" - }, - "nodeType": "YulFunctionCall", - "src": "275:32:7" - }, - "nodeType": "YulIf", - "src": "272:52:7" - }, - { - "nodeType": "YulAssignment", - "src": "333:39:7", - "value": { - "arguments": [ - { - "name": "headStart", - "nodeType": "YulIdentifier", - "src": "362:9:7" - } - ], - "functionName": { - "name": "abi_decode_address", - "nodeType": "YulIdentifier", - "src": "343:18:7" - }, - "nodeType": "YulFunctionCall", - "src": "343:29:7" - }, - "variableNames": [ - { - "name": "value0", - "nodeType": "YulIdentifier", - "src": "333:6:7" - } - ] - } - ] - }, - "name": "abi_decode_tuple_t_address", - "nodeType": "YulFunctionDefinition", - "parameters": [ - { - "name": "headStart", - "nodeType": "YulTypedName", - "src": "228:9:7", - "type": "" - }, - { - "name": "dataEnd", - "nodeType": "YulTypedName", - "src": "239:7:7", - "type": "" - } - ], - "returnVariables": [ - { - "name": "value0", - "nodeType": "YulTypedName", - "src": "251:6:7", - "type": "" - } - ], - "src": "192:186:7" - }, - { - "body": { - "nodeType": "YulBlock", - "src": "484:76:7", - "statements": [ - { - "nodeType": "YulAssignment", - "src": "494:26:7", - "value": { - "arguments": [ - { - "name": "headStart", - "nodeType": "YulIdentifier", - "src": "506:9:7" - }, - { - "kind": "number", - "nodeType": "YulLiteral", - "src": "517:2:7", - "type": "", - "value": "32" - } - ], - "functionName": { - "name": "add", - "nodeType": "YulIdentifier", - "src": "502:3:7" - }, - "nodeType": "YulFunctionCall", - "src": "502:18:7" - }, - "variableNames": [ - { - "name": "tail", - "nodeType": "YulIdentifier", - "src": "494:4:7" - } - ] - }, - { - "expression": { - "arguments": [ - { - "name": "headStart", - "nodeType": "YulIdentifier", - "src": "536:9:7" - }, - { - "name": "value0", - "nodeType": "YulIdentifier", - "src": "547:6:7" - } - ], - "functionName": { - "name": "mstore", - "nodeType": "YulIdentifier", - "src": "529:6:7" - }, - "nodeType": "YulFunctionCall", - "src": "529:25:7" - }, - "nodeType": "YulExpressionStatement", - "src": "529:25:7" - } - ] - }, - "name": "abi_encode_tuple_t_uint256__to_t_uint256__fromStack_reversed", - "nodeType": "YulFunctionDefinition", - "parameters": [ - { - "name": "headStart", - "nodeType": "YulTypedName", - "src": "453:9:7", - "type": "" - }, - { - "name": "value0", - "nodeType": "YulTypedName", - "src": "464:6:7", - "type": "" - } - ], - "returnVariables": [ - { - "name": "tail", - "nodeType": "YulTypedName", - "src": "475:4:7", - "type": "" - } - ], - "src": "383:177:7" - }, - { - "body": { - "nodeType": "YulBlock", - "src": "669:218:7", - "statements": [ - { - "body": { - "nodeType": "YulBlock", - "src": "715:16:7", - "statements": [ - { - "expression": { - "arguments": [ - { - "kind": "number", - "nodeType": "YulLiteral", - "src": "724:1:7", - "type": "", - "value": "0" - }, - { - "kind": "number", - "nodeType": "YulLiteral", - "src": "727:1:7", - "type": "", - "value": "0" - } - ], - "functionName": { - "name": "revert", - "nodeType": "YulIdentifier", - "src": "717:6:7" - }, - "nodeType": "YulFunctionCall", - "src": "717:12:7" - }, - "nodeType": "YulExpressionStatement", - "src": "717:12:7" - } - ] - }, - "condition": { - "arguments": [ - { - "arguments": [ - { - "name": "dataEnd", - "nodeType": "YulIdentifier", - "src": "690:7:7" - }, - { - "name": "headStart", - "nodeType": "YulIdentifier", - "src": "699:9:7" - } - ], - "functionName": { - "name": "sub", - "nodeType": "YulIdentifier", - "src": "686:3:7" - }, - "nodeType": "YulFunctionCall", - "src": "686:23:7" - }, - { - "kind": "number", - "nodeType": "YulLiteral", - "src": "711:2:7", - "type": "", - "value": "96" - } - ], - "functionName": { - "name": "slt", - "nodeType": "YulIdentifier", - "src": "682:3:7" - }, - "nodeType": "YulFunctionCall", - "src": "682:32:7" - }, - "nodeType": "YulIf", - "src": "679:52:7" - }, - { - "nodeType": "YulAssignment", - "src": "740:39:7", - "value": { - "arguments": [ - { - "name": "headStart", - "nodeType": "YulIdentifier", - "src": "769:9:7" - } - ], - "functionName": { - "name": "abi_decode_address", - "nodeType": "YulIdentifier", - "src": "750:18:7" - }, - "nodeType": "YulFunctionCall", - "src": "750:29:7" - }, - "variableNames": [ - { - "name": "value0", - "nodeType": "YulIdentifier", - "src": "740:6:7" - } - ] - }, - { - "nodeType": "YulAssignment", - "src": "788:42:7", - "value": { - "arguments": [ - { - "arguments": [ - { - "name": "headStart", - "nodeType": "YulIdentifier", - "src": "815:9:7" - }, - { - "kind": "number", - "nodeType": "YulLiteral", - "src": "826:2:7", - "type": "", - "value": "32" - } - ], - "functionName": { - "name": "add", - "nodeType": "YulIdentifier", - "src": "811:3:7" - }, - "nodeType": "YulFunctionCall", - "src": "811:18:7" - } - ], - "functionName": { - "name": "calldataload", - "nodeType": "YulIdentifier", - "src": "798:12:7" - }, - "nodeType": "YulFunctionCall", - "src": "798:32:7" - }, - "variableNames": [ - { - "name": "value1", - "nodeType": "YulIdentifier", - "src": "788:6:7" - } - ] - }, - { - "nodeType": "YulAssignment", - "src": "839:42:7", - "value": { - "arguments": [ - { - "arguments": [ - { - "name": "headStart", - "nodeType": "YulIdentifier", - "src": "866:9:7" - }, - { - "kind": "number", - "nodeType": "YulLiteral", - "src": "877:2:7", - "type": "", - "value": "64" - } - ], - "functionName": { - "name": "add", - "nodeType": "YulIdentifier", - "src": "862:3:7" - }, - "nodeType": "YulFunctionCall", - "src": "862:18:7" - } - ], - "functionName": { - "name": "calldataload", - "nodeType": "YulIdentifier", - "src": "849:12:7" - }, - "nodeType": "YulFunctionCall", - "src": "849:32:7" - }, - "variableNames": [ - { - "name": "value2", - "nodeType": "YulIdentifier", - "src": "839:6:7" - } - ] - } - ] - }, - "name": "abi_decode_tuple_t_addresst_uint256t_uint256", - "nodeType": "YulFunctionDefinition", - "parameters": [ - { - "name": "headStart", - "nodeType": "YulTypedName", - "src": "619:9:7", - "type": "" - }, - { - "name": "dataEnd", - "nodeType": "YulTypedName", - "src": "630:7:7", - "type": "" - } - ], - "returnVariables": [ - { - "name": "value0", - "nodeType": "YulTypedName", - "src": "642:6:7", - "type": "" - }, - { - "name": "value1", - "nodeType": "YulTypedName", - "src": "650:6:7", - "type": "" - }, - { - "name": "value2", - "nodeType": "YulTypedName", - "src": "658:6:7", - "type": "" - } - ], - "src": "565:322:7" - }, - { - "body": { - "nodeType": "YulBlock", - "src": "993:102:7", - "statements": [ - { - "nodeType": "YulAssignment", - "src": "1003:26:7", - "value": { - "arguments": [ - { - "name": "headStart", - "nodeType": "YulIdentifier", - "src": "1015:9:7" - }, - { - "kind": "number", - "nodeType": "YulLiteral", - "src": "1026:2:7", - "type": "", - "value": "32" - } - ], - "functionName": { - "name": "add", - "nodeType": "YulIdentifier", - "src": "1011:3:7" - }, - "nodeType": "YulFunctionCall", - "src": "1011:18:7" - }, - "variableNames": [ - { - "name": "tail", - "nodeType": "YulIdentifier", - "src": "1003:4:7" - } - ] - }, - { - "expression": { - "arguments": [ - { - "name": "headStart", - "nodeType": "YulIdentifier", - "src": "1045:9:7" - }, - { - "arguments": [ - { - "name": "value0", - "nodeType": "YulIdentifier", - "src": "1060:6:7" - }, - { - "arguments": [ - { - "arguments": [ - { - "kind": "number", - "nodeType": "YulLiteral", - "src": "1076:3:7", - "type": "", - "value": "160" - }, - { - "kind": "number", - "nodeType": "YulLiteral", - "src": "1081:1:7", - "type": "", - "value": "1" - } - ], - "functionName": { - "name": "shl", - "nodeType": "YulIdentifier", - "src": "1072:3:7" - }, - "nodeType": "YulFunctionCall", - "src": "1072:11:7" - }, - { - "kind": "number", - "nodeType": "YulLiteral", - "src": "1085:1:7", - "type": "", - "value": "1" - } - ], - "functionName": { - "name": "sub", - "nodeType": "YulIdentifier", - "src": "1068:3:7" - }, - "nodeType": "YulFunctionCall", - "src": "1068:19:7" - } - ], - "functionName": { - "name": "and", - "nodeType": "YulIdentifier", - "src": "1056:3:7" - }, - "nodeType": "YulFunctionCall", - "src": "1056:32:7" - } - ], - "functionName": { - "name": "mstore", - "nodeType": "YulIdentifier", - "src": "1038:6:7" - }, - "nodeType": "YulFunctionCall", - "src": "1038:51:7" - }, - "nodeType": "YulExpressionStatement", - "src": "1038:51:7" - } - ] - }, - "name": "abi_encode_tuple_t_address__to_t_address__fromStack_reversed", - "nodeType": "YulFunctionDefinition", - "parameters": [ - { - "name": "headStart", - "nodeType": "YulTypedName", - "src": "962:9:7", - "type": "" - }, - { - "name": "value0", - "nodeType": "YulTypedName", - "src": "973:6:7", - "type": "" - } - ], - "returnVariables": [ - { - "name": "tail", - "nodeType": "YulTypedName", - "src": "984:4:7", - "type": "" - } - ], - "src": "892:203:7" - }, - { - "body": { - "nodeType": "YulBlock", - "src": "1215:102:7", - "statements": [ - { - "nodeType": "YulAssignment", - "src": "1225:26:7", - "value": { - "arguments": [ - { - "name": "headStart", - "nodeType": "YulIdentifier", - "src": "1237:9:7" - }, - { - "kind": "number", - "nodeType": "YulLiteral", - "src": "1248:2:7", - "type": "", - "value": "32" - } - ], - "functionName": { - "name": "add", - "nodeType": "YulIdentifier", - "src": "1233:3:7" - }, - "nodeType": "YulFunctionCall", - "src": "1233:18:7" - }, - "variableNames": [ - { - "name": "tail", - "nodeType": "YulIdentifier", - "src": "1225:4:7" - } - ] - }, - { - "expression": { - "arguments": [ - { - "name": "headStart", - "nodeType": "YulIdentifier", - "src": "1267:9:7" - }, - { - "arguments": [ - { - "name": "value0", - "nodeType": "YulIdentifier", - "src": "1282:6:7" - }, - { - "arguments": [ - { - "arguments": [ - { - "kind": "number", - "nodeType": "YulLiteral", - "src": "1298:3:7", - "type": "", - "value": "160" - }, - { - "kind": "number", - "nodeType": "YulLiteral", - "src": "1303:1:7", - "type": "", - "value": "1" - } - ], - "functionName": { - "name": "shl", - "nodeType": "YulIdentifier", - "src": "1294:3:7" - }, - "nodeType": "YulFunctionCall", - "src": "1294:11:7" - }, - { - "kind": "number", - "nodeType": "YulLiteral", - "src": "1307:1:7", - "type": "", - "value": "1" - } - ], - "functionName": { - "name": "sub", - "nodeType": "YulIdentifier", - "src": "1290:3:7" - }, - "nodeType": "YulFunctionCall", - "src": "1290:19:7" - } - ], - "functionName": { - "name": "and", - "nodeType": "YulIdentifier", - "src": "1278:3:7" - }, - "nodeType": "YulFunctionCall", - "src": "1278:32:7" - } - ], - "functionName": { - "name": "mstore", - "nodeType": "YulIdentifier", - "src": "1260:6:7" - }, - "nodeType": "YulFunctionCall", - "src": "1260:51:7" - }, - "nodeType": "YulExpressionStatement", - "src": "1260:51:7" - } - ] - }, - "name": "abi_encode_tuple_t_contract$_IERC20_$729__to_t_address__fromStack_reversed", - "nodeType": "YulFunctionDefinition", - "parameters": [ - { - "name": "headStart", - "nodeType": "YulTypedName", - "src": "1184:9:7", - "type": "" - }, - { - "name": "value0", - "nodeType": "YulTypedName", - "src": "1195:6:7", - "type": "" - } - ], - "returnVariables": [ - { - "name": "tail", - "nodeType": "YulTypedName", - "src": "1206:4:7", - "type": "" - } - ], - "src": "1100:217:7" - }, - { - "body": { - "nodeType": "YulBlock", - "src": "1496:167:7", - "statements": [ - { - "expression": { - "arguments": [ - { - "name": "headStart", - "nodeType": "YulIdentifier", - "src": "1513:9:7" - }, - { - "kind": "number", - "nodeType": "YulLiteral", - "src": "1524:2:7", - "type": "", - "value": "32" - } - ], - "functionName": { - "name": "mstore", - "nodeType": "YulIdentifier", - "src": "1506:6:7" - }, - "nodeType": "YulFunctionCall", - "src": "1506:21:7" - }, - "nodeType": "YulExpressionStatement", - "src": "1506:21:7" - }, - { - "expression": { - "arguments": [ - { - "arguments": [ - { - "name": "headStart", - "nodeType": "YulIdentifier", - "src": "1547:9:7" - }, - { - "kind": "number", - "nodeType": "YulLiteral", - "src": "1558:2:7", - "type": "", - "value": "32" - } - ], - "functionName": { - "name": "add", - "nodeType": "YulIdentifier", - "src": "1543:3:7" - }, - "nodeType": "YulFunctionCall", - "src": "1543:18:7" - }, - { - "kind": "number", - "nodeType": "YulLiteral", - "src": "1563:2:7", - "type": "", - "value": "17" - } - ], - "functionName": { - "name": "mstore", - "nodeType": "YulIdentifier", - "src": "1536:6:7" - }, - "nodeType": "YulFunctionCall", - "src": "1536:30:7" - }, - "nodeType": "YulExpressionStatement", - "src": "1536:30:7" - }, - { - "expression": { - "arguments": [ - { - "arguments": [ - { - "name": "headStart", - "nodeType": "YulIdentifier", - "src": "1586:9:7" - }, - { - "kind": "number", - "nodeType": "YulLiteral", - "src": "1597:2:7", - "type": "", - "value": "64" - } - ], - "functionName": { - "name": "add", - "nodeType": "YulIdentifier", - "src": "1582:3:7" - }, - "nodeType": "YulFunctionCall", - "src": "1582:18:7" - }, - { - "hexValue": "56657374696e67206e6f7420656e646564", - "kind": "string", - "nodeType": "YulLiteral", - "src": "1602:19:7", - "type": "", - "value": "Vesting not ended" - } - ], - "functionName": { - "name": "mstore", - "nodeType": "YulIdentifier", - "src": "1575:6:7" - }, - "nodeType": "YulFunctionCall", - "src": "1575:47:7" - }, - "nodeType": "YulExpressionStatement", - "src": "1575:47:7" - }, - { - "nodeType": "YulAssignment", - "src": "1631:26:7", - "value": { - "arguments": [ - { - "name": "headStart", - "nodeType": "YulIdentifier", - "src": "1643:9:7" - }, - { - "kind": "number", - "nodeType": "YulLiteral", - "src": "1654:2:7", - "type": "", - "value": "96" - } - ], - "functionName": { - "name": "add", - "nodeType": "YulIdentifier", - "src": "1639:3:7" - }, - "nodeType": "YulFunctionCall", - "src": "1639:18:7" - }, - "variableNames": [ - { - "name": "tail", - "nodeType": "YulIdentifier", - "src": "1631:4:7" - } - ] - } - ] - }, - "name": "abi_encode_tuple_t_stringliteral_a8ad0d9b43a12ad06193d78950e25818160251504b5298878dc06273011c350f__to_t_string_memory_ptr__fromStack_reversed", - "nodeType": "YulFunctionDefinition", - "parameters": [ - { - "name": "headStart", - "nodeType": "YulTypedName", - "src": "1473:9:7", - "type": "" - } - ], - "returnVariables": [ - { - "name": "tail", - "nodeType": "YulTypedName", - "src": "1487:4:7", - "type": "" - } - ], - "src": "1322:341:7" - }, - { - "body": { - "nodeType": "YulBlock", - "src": "1842:168:7", - "statements": [ - { - "expression": { - "arguments": [ - { - "name": "headStart", - "nodeType": "YulIdentifier", - "src": "1859:9:7" - }, - { - "kind": "number", - "nodeType": "YulLiteral", - "src": "1870:2:7", - "type": "", - "value": "32" - } - ], - "functionName": { - "name": "mstore", - "nodeType": "YulIdentifier", - "src": "1852:6:7" - }, - "nodeType": "YulFunctionCall", - "src": "1852:21:7" - }, - "nodeType": "YulExpressionStatement", - "src": "1852:21:7" - }, - { - "expression": { - "arguments": [ - { - "arguments": [ - { - "name": "headStart", - "nodeType": "YulIdentifier", - "src": "1893:9:7" - }, - { - "kind": "number", - "nodeType": "YulLiteral", - "src": "1904:2:7", - "type": "", - "value": "32" - } - ], - "functionName": { - "name": "add", - "nodeType": "YulIdentifier", - "src": "1889:3:7" - }, - "nodeType": "YulFunctionCall", - "src": "1889:18:7" - }, - { - "kind": "number", - "nodeType": "YulLiteral", - "src": "1909:2:7", - "type": "", - "value": "18" - } - ], - "functionName": { - "name": "mstore", - "nodeType": "YulIdentifier", - "src": "1882:6:7" - }, - "nodeType": "YulFunctionCall", - "src": "1882:30:7" - }, - "nodeType": "YulExpressionStatement", - "src": "1882:30:7" - }, - { - "expression": { - "arguments": [ - { - "arguments": [ - { - "name": "headStart", - "nodeType": "YulIdentifier", - "src": "1932:9:7" - }, - { - "kind": "number", - "nodeType": "YulLiteral", - "src": "1943:2:7", - "type": "", - "value": "64" - } - ], - "functionName": { - "name": "add", - "nodeType": "YulIdentifier", - "src": "1928:3:7" - }, - "nodeType": "YulFunctionCall", - "src": "1928:18:7" - }, - { - "hexValue": "4e6f20746f6b656e7320746f20636c61696d", - "kind": "string", - "nodeType": "YulLiteral", - "src": "1948:20:7", - "type": "", - "value": "No tokens to claim" - } - ], - "functionName": { - "name": "mstore", - "nodeType": "YulIdentifier", - "src": "1921:6:7" - }, - "nodeType": "YulFunctionCall", - "src": "1921:48:7" - }, - "nodeType": "YulExpressionStatement", - "src": "1921:48:7" - }, - { - "nodeType": "YulAssignment", - "src": "1978:26:7", - "value": { - "arguments": [ - { - "name": "headStart", - "nodeType": "YulIdentifier", - "src": "1990:9:7" - }, - { - "kind": "number", - "nodeType": "YulLiteral", - "src": "2001:2:7", - "type": "", - "value": "96" - } - ], - "functionName": { - "name": "add", - "nodeType": "YulIdentifier", - "src": "1986:3:7" - }, - "nodeType": "YulFunctionCall", - "src": "1986:18:7" - }, - "variableNames": [ - { - "name": "tail", - "nodeType": "YulIdentifier", - "src": "1978:4:7" - } - ] - } - ] - }, - "name": "abi_encode_tuple_t_stringliteral_0d5449e713a47f03a14de06feb7e7374931b31bbe74b9f8d4277d4797f0eb90e__to_t_string_memory_ptr__fromStack_reversed", - "nodeType": "YulFunctionDefinition", - "parameters": [ - { - "name": "headStart", - "nodeType": "YulTypedName", - "src": "1819:9:7", - "type": "" - } - ], - "returnVariables": [ - { - "name": "tail", - "nodeType": "YulTypedName", - "src": "1833:4:7", - "type": "" - } - ], - "src": "1668:342:7" - }, - { - "body": { - "nodeType": "YulBlock", - "src": "2144:145:7", - "statements": [ - { - "nodeType": "YulAssignment", - "src": "2154:26:7", - "value": { - "arguments": [ - { - "name": "headStart", - "nodeType": "YulIdentifier", - "src": "2166:9:7" - }, - { - "kind": "number", - "nodeType": "YulLiteral", - "src": "2177:2:7", - "type": "", - "value": "64" - } - ], - "functionName": { - "name": "add", - "nodeType": "YulIdentifier", - "src": "2162:3:7" - }, - "nodeType": "YulFunctionCall", - "src": "2162:18:7" - }, - "variableNames": [ - { - "name": "tail", - "nodeType": "YulIdentifier", - "src": "2154:4:7" - } - ] - }, - { - "expression": { - "arguments": [ - { - "name": "headStart", - "nodeType": "YulIdentifier", - "src": "2196:9:7" - }, - { - "arguments": [ - { - "name": "value0", - "nodeType": "YulIdentifier", - "src": "2211:6:7" - }, - { - "arguments": [ - { - "arguments": [ - { - "kind": "number", - "nodeType": "YulLiteral", - "src": "2227:3:7", - "type": "", - "value": "160" - }, - { - "kind": "number", - "nodeType": "YulLiteral", - "src": "2232:1:7", - "type": "", - "value": "1" - } - ], - "functionName": { - "name": "shl", - "nodeType": "YulIdentifier", - "src": "2223:3:7" - }, - "nodeType": "YulFunctionCall", - "src": "2223:11:7" - }, - { - "kind": "number", - "nodeType": "YulLiteral", - "src": "2236:1:7", - "type": "", - "value": "1" - } - ], - "functionName": { - "name": "sub", - "nodeType": "YulIdentifier", - "src": "2219:3:7" - }, - "nodeType": "YulFunctionCall", - "src": "2219:19:7" - } - ], - "functionName": { - "name": "and", - "nodeType": "YulIdentifier", - "src": "2207:3:7" - }, - "nodeType": "YulFunctionCall", - "src": "2207:32:7" - } - ], - "functionName": { - "name": "mstore", - "nodeType": "YulIdentifier", - "src": "2189:6:7" - }, - "nodeType": "YulFunctionCall", - "src": "2189:51:7" - }, - "nodeType": "YulExpressionStatement", - "src": "2189:51:7" - }, - { - "expression": { - "arguments": [ - { - "arguments": [ - { - "name": "headStart", - "nodeType": "YulIdentifier", - "src": "2260:9:7" - }, - { - "kind": "number", - "nodeType": "YulLiteral", - "src": "2271:2:7", - "type": "", - "value": "32" - } - ], - "functionName": { - "name": "add", - "nodeType": "YulIdentifier", - "src": "2256:3:7" - }, - "nodeType": "YulFunctionCall", - "src": "2256:18:7" - }, - { - "name": "value1", - "nodeType": "YulIdentifier", - "src": "2276:6:7" - } - ], - "functionName": { - "name": "mstore", - "nodeType": "YulIdentifier", - "src": "2249:6:7" - }, - "nodeType": "YulFunctionCall", - "src": "2249:34:7" - }, - "nodeType": "YulExpressionStatement", - "src": "2249:34:7" - } - ] - }, - "name": "abi_encode_tuple_t_address_t_uint256__to_t_address_t_uint256__fromStack_reversed", - "nodeType": "YulFunctionDefinition", - "parameters": [ - { - "name": "headStart", - "nodeType": "YulTypedName", - "src": "2105:9:7", - "type": "" - }, - { - "name": "value1", - "nodeType": "YulTypedName", - "src": "2116:6:7", - "type": "" - }, - { - "name": "value0", - "nodeType": "YulTypedName", - "src": "2124:6:7", - "type": "" - } - ], - "returnVariables": [ - { - "name": "tail", - "nodeType": "YulTypedName", - "src": "2135:4:7", - "type": "" - } - ], - "src": "2015:274:7" - }, - { - "body": { - "nodeType": "YulBlock", - "src": "2372:199:7", - "statements": [ - { - "body": { - "nodeType": "YulBlock", - "src": "2418:16:7", - "statements": [ - { - "expression": { - "arguments": [ - { - "kind": "number", - "nodeType": "YulLiteral", - "src": "2427:1:7", - "type": "", - "value": "0" - }, - { - "kind": "number", - "nodeType": "YulLiteral", - "src": "2430:1:7", - "type": "", - "value": "0" - } - ], - "functionName": { - "name": "revert", - "nodeType": "YulIdentifier", - "src": "2420:6:7" - }, - "nodeType": "YulFunctionCall", - "src": "2420:12:7" - }, - "nodeType": "YulExpressionStatement", - "src": "2420:12:7" - } - ] - }, - "condition": { - "arguments": [ - { - "arguments": [ - { - "name": "dataEnd", - "nodeType": "YulIdentifier", - "src": "2393:7:7" - }, - { - "name": "headStart", - "nodeType": "YulIdentifier", - "src": "2402:9:7" - } - ], - "functionName": { - "name": "sub", - "nodeType": "YulIdentifier", - "src": "2389:3:7" - }, - "nodeType": "YulFunctionCall", - "src": "2389:23:7" - }, - { - "kind": "number", - "nodeType": "YulLiteral", - "src": "2414:2:7", - "type": "", - "value": "32" - } - ], - "functionName": { - "name": "slt", - "nodeType": "YulIdentifier", - "src": "2385:3:7" - }, - "nodeType": "YulFunctionCall", - "src": "2385:32:7" - }, - "nodeType": "YulIf", - "src": "2382:52:7" - }, - { - "nodeType": "YulVariableDeclaration", - "src": "2443:29:7", - "value": { - "arguments": [ - { - "name": "headStart", - "nodeType": "YulIdentifier", - "src": "2462:9:7" - } - ], - "functionName": { - "name": "mload", - "nodeType": "YulIdentifier", - "src": "2456:5:7" - }, - "nodeType": "YulFunctionCall", - "src": "2456:16:7" - }, - "variables": [ - { - "name": "value", - "nodeType": "YulTypedName", - "src": "2447:5:7", - "type": "" - } - ] - }, - { - "body": { - "nodeType": "YulBlock", - "src": "2525:16:7", - "statements": [ - { - "expression": { - "arguments": [ - { - "kind": "number", - "nodeType": "YulLiteral", - "src": "2534:1:7", - "type": "", - "value": "0" - }, - { - "kind": "number", - "nodeType": "YulLiteral", - "src": "2537:1:7", - "type": "", - "value": "0" - } - ], - "functionName": { - "name": "revert", - "nodeType": "YulIdentifier", - "src": "2527:6:7" - }, - "nodeType": "YulFunctionCall", - "src": "2527:12:7" - }, - "nodeType": "YulExpressionStatement", - "src": "2527:12:7" - } - ] - }, - "condition": { - "arguments": [ - { - "arguments": [ - { - "name": "value", - "nodeType": "YulIdentifier", - "src": "2494:5:7" - }, - { - "arguments": [ - { - "arguments": [ - { - "name": "value", - "nodeType": "YulIdentifier", - "src": "2515:5:7" - } - ], - "functionName": { - "name": "iszero", - "nodeType": "YulIdentifier", - "src": "2508:6:7" - }, - "nodeType": "YulFunctionCall", - "src": "2508:13:7" - } - ], - "functionName": { - "name": "iszero", - "nodeType": "YulIdentifier", - "src": "2501:6:7" - }, - "nodeType": "YulFunctionCall", - "src": "2501:21:7" - } - ], - "functionName": { - "name": "eq", - "nodeType": "YulIdentifier", - "src": "2491:2:7" - }, - "nodeType": "YulFunctionCall", - "src": "2491:32:7" - } - ], - "functionName": { - "name": "iszero", - "nodeType": "YulIdentifier", - "src": "2484:6:7" - }, - "nodeType": "YulFunctionCall", - "src": "2484:40:7" - }, - "nodeType": "YulIf", - "src": "2481:60:7" - }, - { - "nodeType": "YulAssignment", - "src": "2550:15:7", - "value": { - "name": "value", - "nodeType": "YulIdentifier", - "src": "2560:5:7" - }, - "variableNames": [ - { - "name": "value0", - "nodeType": "YulIdentifier", - "src": "2550:6:7" - } - ] - } - ] - }, - "name": "abi_decode_tuple_t_bool_fromMemory", - "nodeType": "YulFunctionDefinition", - "parameters": [ - { - "name": "headStart", - "nodeType": "YulTypedName", - "src": "2338:9:7", - "type": "" - }, - { - "name": "dataEnd", - "nodeType": "YulTypedName", - "src": "2349:7:7", - "type": "" - } - ], - "returnVariables": [ - { - "name": "value0", - "nodeType": "YulTypedName", - "src": "2361:6:7", - "type": "" - } - ], - "src": "2294:277:7" - }, - { - "body": { - "nodeType": "YulBlock", - "src": "2750:165:7", - "statements": [ - { - "expression": { - "arguments": [ - { - "name": "headStart", - "nodeType": "YulIdentifier", - "src": "2767:9:7" - }, - { - "kind": "number", - "nodeType": "YulLiteral", - "src": "2778:2:7", - "type": "", - "value": "32" - } - ], - "functionName": { - "name": "mstore", - "nodeType": "YulIdentifier", - "src": "2760:6:7" - }, - "nodeType": "YulFunctionCall", - "src": "2760:21:7" - }, - "nodeType": "YulExpressionStatement", - "src": "2760:21:7" - }, - { - "expression": { - "arguments": [ - { - "arguments": [ - { - "name": "headStart", - "nodeType": "YulIdentifier", - "src": "2801:9:7" - }, - { - "kind": "number", - "nodeType": "YulLiteral", - "src": "2812:2:7", - "type": "", - "value": "32" - } - ], - "functionName": { - "name": "add", - "nodeType": "YulIdentifier", - "src": "2797:3:7" - }, - "nodeType": "YulFunctionCall", - "src": "2797:18:7" - }, - { - "kind": "number", - "nodeType": "YulLiteral", - "src": "2817:2:7", - "type": "", - "value": "15" - } - ], - "functionName": { - "name": "mstore", - "nodeType": "YulIdentifier", - "src": "2790:6:7" - }, - "nodeType": "YulFunctionCall", - "src": "2790:30:7" - }, - "nodeType": "YulExpressionStatement", - "src": "2790:30:7" - }, - { - "expression": { - "arguments": [ - { - "arguments": [ - { - "name": "headStart", - "nodeType": "YulIdentifier", - "src": "2840:9:7" - }, - { - "kind": "number", - "nodeType": "YulLiteral", - "src": "2851:2:7", - "type": "", - "value": "64" - } - ], - "functionName": { - "name": "add", - "nodeType": "YulIdentifier", - "src": "2836:3:7" - }, - "nodeType": "YulFunctionCall", - "src": "2836:18:7" - }, - { - "hexValue": "5472616e73666572206661696c6564", - "kind": "string", - "nodeType": "YulLiteral", - "src": "2856:17:7", - "type": "", - "value": "Transfer failed" - } - ], - "functionName": { - "name": "mstore", - "nodeType": "YulIdentifier", - "src": "2829:6:7" - }, - "nodeType": "YulFunctionCall", - "src": "2829:45:7" - }, - "nodeType": "YulExpressionStatement", - "src": "2829:45:7" - }, - { - "nodeType": "YulAssignment", - "src": "2883:26:7", - "value": { - "arguments": [ - { - "name": "headStart", - "nodeType": "YulIdentifier", - "src": "2895:9:7" - }, - { - "kind": "number", - "nodeType": "YulLiteral", - "src": "2906:2:7", - "type": "", - "value": "96" - } - ], - "functionName": { - "name": "add", - "nodeType": "YulIdentifier", - "src": "2891:3:7" - }, - "nodeType": "YulFunctionCall", - "src": "2891:18:7" - }, - "variableNames": [ - { - "name": "tail", - "nodeType": "YulIdentifier", - "src": "2883:4:7" - } - ] - } - ] - }, - "name": "abi_encode_tuple_t_stringliteral_25adaa6d082ce15f901e0d8a3d393e7462ef9edf2e6bc8321fa14d1615b6fc51__to_t_string_memory_ptr__fromStack_reversed", - "nodeType": "YulFunctionDefinition", - "parameters": [ - { - "name": "headStart", - "nodeType": "YulTypedName", - "src": "2727:9:7", - "type": "" - } - ], - "returnVariables": [ - { - "name": "tail", - "nodeType": "YulTypedName", - "src": "2741:4:7", - "type": "" - } - ], - "src": "2576:339:7" - }, - { - "body": { - "nodeType": "YulBlock", - "src": "3094:158:7", - "statements": [ - { - "expression": { - "arguments": [ - { - "name": "headStart", - "nodeType": "YulIdentifier", - "src": "3111:9:7" - }, - { - "kind": "number", - "nodeType": "YulLiteral", - "src": "3122:2:7", - "type": "", - "value": "32" - } - ], - "functionName": { - "name": "mstore", - "nodeType": "YulIdentifier", - "src": "3104:6:7" - }, - "nodeType": "YulFunctionCall", - "src": "3104:21:7" - }, - "nodeType": "YulExpressionStatement", - "src": "3104:21:7" - }, - { - "expression": { - "arguments": [ - { - "arguments": [ - { - "name": "headStart", - "nodeType": "YulIdentifier", - "src": "3145:9:7" - }, - { - "kind": "number", - "nodeType": "YulLiteral", - "src": "3156:2:7", - "type": "", - "value": "32" - } - ], - "functionName": { - "name": "add", - "nodeType": "YulIdentifier", - "src": "3141:3:7" - }, - "nodeType": "YulFunctionCall", - "src": "3141:18:7" - }, - { - "kind": "number", - "nodeType": "YulLiteral", - "src": "3161:1:7", - "type": "", - "value": "9" - } - ], - "functionName": { - "name": "mstore", - "nodeType": "YulIdentifier", - "src": "3134:6:7" - }, - "nodeType": "YulFunctionCall", - "src": "3134:29:7" - }, - "nodeType": "YulExpressionStatement", - "src": "3134:29:7" - }, - { - "expression": { - "arguments": [ - { - "arguments": [ - { - "name": "headStart", - "nodeType": "YulIdentifier", - "src": "3183:9:7" - }, - { - "kind": "number", - "nodeType": "YulLiteral", - "src": "3194:2:7", - "type": "", - "value": "64" - } - ], - "functionName": { - "name": "add", - "nodeType": "YulIdentifier", - "src": "3179:3:7" - }, - "nodeType": "YulFunctionCall", - "src": "3179:18:7" - }, - { - "hexValue": "4e6f742061646d696e", - "kind": "string", - "nodeType": "YulLiteral", - "src": "3199:11:7", - "type": "", - "value": "Not admin" - } - ], - "functionName": { - "name": "mstore", - "nodeType": "YulIdentifier", - "src": "3172:6:7" - }, - "nodeType": "YulFunctionCall", - "src": "3172:39:7" - }, - "nodeType": "YulExpressionStatement", - "src": "3172:39:7" - }, - { - "nodeType": "YulAssignment", - "src": "3220:26:7", - "value": { - "arguments": [ - { - "name": "headStart", - "nodeType": "YulIdentifier", - "src": "3232:9:7" - }, - { - "kind": "number", - "nodeType": "YulLiteral", - "src": "3243:2:7", - "type": "", - "value": "96" - } - ], - "functionName": { - "name": "add", - "nodeType": "YulIdentifier", - "src": "3228:3:7" - }, - "nodeType": "YulFunctionCall", - "src": "3228:18:7" - }, - "variableNames": [ - { - "name": "tail", - "nodeType": "YulIdentifier", - "src": "3220:4:7" - } - ] - } - ] - }, - "name": "abi_encode_tuple_t_stringliteral_fa7e120cf98867f00c0ac28b387a73caec64b93b1889065f7b4c5e5232c0bad6__to_t_string_memory_ptr__fromStack_reversed", - "nodeType": "YulFunctionDefinition", - "parameters": [ - { - "name": "headStart", - "nodeType": "YulTypedName", - "src": "3071:9:7", - "type": "" - } - ], - "returnVariables": [ - { - "name": "tail", - "nodeType": "YulTypedName", - "src": "3085:4:7", - "type": "" - } - ], - "src": "2920:332:7" - }, - { - "body": { - "nodeType": "YulBlock", - "src": "3431:165:7", - "statements": [ - { - "expression": { - "arguments": [ - { - "name": "headStart", - "nodeType": "YulIdentifier", - "src": "3448:9:7" - }, - { - "kind": "number", - "nodeType": "YulLiteral", - "src": "3459:2:7", - "type": "", - "value": "32" - } - ], - "functionName": { - "name": "mstore", - "nodeType": "YulIdentifier", - "src": "3441:6:7" - }, - "nodeType": "YulFunctionCall", - "src": "3441:21:7" - }, - "nodeType": "YulExpressionStatement", - "src": "3441:21:7" - }, - { - "expression": { - "arguments": [ - { - "arguments": [ - { - "name": "headStart", - "nodeType": "YulIdentifier", - "src": "3482:9:7" - }, - { - "kind": "number", - "nodeType": "YulLiteral", - "src": "3493:2:7", - "type": "", - "value": "32" - } - ], - "functionName": { - "name": "add", - "nodeType": "YulIdentifier", - "src": "3478:3:7" - }, - "nodeType": "YulFunctionCall", - "src": "3478:18:7" - }, - { - "kind": "number", - "nodeType": "YulLiteral", - "src": "3498:2:7", - "type": "", - "value": "15" - } - ], - "functionName": { - "name": "mstore", - "nodeType": "YulIdentifier", - "src": "3471:6:7" - }, - "nodeType": "YulFunctionCall", - "src": "3471:30:7" - }, - "nodeType": "YulExpressionStatement", - "src": "3471:30:7" - }, - { - "expression": { - "arguments": [ - { - "arguments": [ - { - "name": "headStart", - "nodeType": "YulIdentifier", - "src": "3521:9:7" - }, - { - "kind": "number", - "nodeType": "YulLiteral", - "src": "3532:2:7", - "type": "", - "value": "64" - } - ], - "functionName": { - "name": "add", - "nodeType": "YulIdentifier", - "src": "3517:3:7" - }, - "nodeType": "YulFunctionCall", - "src": "3517:18:7" - }, - { - "hexValue": "496e76616c69642061646472657373", - "kind": "string", - "nodeType": "YulLiteral", - "src": "3537:17:7", - "type": "", - "value": "Invalid address" - } - ], - "functionName": { - "name": "mstore", - "nodeType": "YulIdentifier", - "src": "3510:6:7" - }, - "nodeType": "YulFunctionCall", - "src": "3510:45:7" - }, - "nodeType": "YulExpressionStatement", - "src": "3510:45:7" - }, - { - "nodeType": "YulAssignment", - "src": "3564:26:7", - "value": { - "arguments": [ - { - "name": "headStart", - "nodeType": "YulIdentifier", - "src": "3576:9:7" - }, - { - "kind": "number", - "nodeType": "YulLiteral", - "src": "3587:2:7", - "type": "", - "value": "96" - } - ], - "functionName": { - "name": "add", - "nodeType": "YulIdentifier", - "src": "3572:3:7" - }, - "nodeType": "YulFunctionCall", - "src": "3572:18:7" - }, - "variableNames": [ - { - "name": "tail", - "nodeType": "YulIdentifier", - "src": "3564:4:7" - } - ] - } - ] - }, - "name": "abi_encode_tuple_t_stringliteral_1462473b7a4b33d32b109b815fd2324d00c9e5839b707ecf16d0ab5744f99226__to_t_string_memory_ptr__fromStack_reversed", - "nodeType": "YulFunctionDefinition", - "parameters": [ - { - "name": "headStart", - "nodeType": "YulTypedName", - "src": "3408:9:7", - "type": "" - } - ], - "returnVariables": [ - { - "name": "tail", - "nodeType": "YulTypedName", - "src": "3422:4:7", - "type": "" - } - ], - "src": "3257:339:7" - }, - { - "body": { - "nodeType": "YulBlock", - "src": "3775:164:7", - "statements": [ - { - "expression": { - "arguments": [ - { - "name": "headStart", - "nodeType": "YulIdentifier", - "src": "3792:9:7" - }, - { - "kind": "number", - "nodeType": "YulLiteral", - "src": "3803:2:7", - "type": "", - "value": "32" - } - ], - "functionName": { - "name": "mstore", - "nodeType": "YulIdentifier", - "src": "3785:6:7" - }, - "nodeType": "YulFunctionCall", - "src": "3785:21:7" - }, - "nodeType": "YulExpressionStatement", - "src": "3785:21:7" - }, - { - "expression": { - "arguments": [ - { - "arguments": [ - { - "name": "headStart", - "nodeType": "YulIdentifier", - "src": "3826:9:7" - }, - { - "kind": "number", - "nodeType": "YulLiteral", - "src": "3837:2:7", - "type": "", - "value": "32" - } - ], - "functionName": { - "name": "add", - "nodeType": "YulIdentifier", - "src": "3822:3:7" - }, - "nodeType": "YulFunctionCall", - "src": "3822:18:7" - }, - { - "kind": "number", - "nodeType": "YulLiteral", - "src": "3842:2:7", - "type": "", - "value": "14" - } - ], - "functionName": { - "name": "mstore", - "nodeType": "YulIdentifier", - "src": "3815:6:7" - }, - "nodeType": "YulFunctionCall", - "src": "3815:30:7" - }, - "nodeType": "YulExpressionStatement", - "src": "3815:30:7" - }, - { - "expression": { - "arguments": [ - { - "arguments": [ - { - "name": "headStart", - "nodeType": "YulIdentifier", - "src": "3865:9:7" - }, - { - "kind": "number", - "nodeType": "YulLiteral", - "src": "3876:2:7", - "type": "", - "value": "64" - } - ], - "functionName": { - "name": "add", - "nodeType": "YulIdentifier", - "src": "3861:3:7" - }, - "nodeType": "YulFunctionCall", - "src": "3861:18:7" - }, - { - "hexValue": "496e76616c696420616d6f756e74", - "kind": "string", - "nodeType": "YulLiteral", - "src": "3881:16:7", - "type": "", - "value": "Invalid amount" - } - ], - "functionName": { - "name": "mstore", - "nodeType": "YulIdentifier", - "src": "3854:6:7" - }, - "nodeType": "YulFunctionCall", - "src": "3854:44:7" - }, - "nodeType": "YulExpressionStatement", - "src": "3854:44:7" - }, - { - "nodeType": "YulAssignment", - "src": "3907:26:7", - "value": { - "arguments": [ - { - "name": "headStart", - "nodeType": "YulIdentifier", - "src": "3919:9:7" - }, - { - "kind": "number", - "nodeType": "YulLiteral", - "src": "3930:2:7", - "type": "", - "value": "96" - } - ], - "functionName": { - "name": "add", - "nodeType": "YulIdentifier", - "src": "3915:3:7" - }, - "nodeType": "YulFunctionCall", - "src": "3915:18:7" - }, - "variableNames": [ - { - "name": "tail", - "nodeType": "YulIdentifier", - "src": "3907:4:7" - } - ] - } - ] - }, - "name": "abi_encode_tuple_t_stringliteral_2fd1dfd944df9898ee4c79794168926172c3d96d7664ff9919bb7080bb018af1__to_t_string_memory_ptr__fromStack_reversed", - "nodeType": "YulFunctionDefinition", - "parameters": [ - { - "name": "headStart", - "nodeType": "YulTypedName", - "src": "3752:9:7", - "type": "" - } - ], - "returnVariables": [ - { - "name": "tail", - "nodeType": "YulTypedName", - "src": "3766:4:7", - "type": "" - } - ], - "src": "3601:338:7" - }, - { - "body": { - "nodeType": "YulBlock", - "src": "3992:174:7", - "statements": [ - { - "nodeType": "YulAssignment", - "src": "4002:16:7", - "value": { - "arguments": [ - { - "name": "x", - "nodeType": "YulIdentifier", - "src": "4013:1:7" - }, - { - "name": "y", - "nodeType": "YulIdentifier", - "src": "4016:1:7" - } - ], - "functionName": { - "name": "add", - "nodeType": "YulIdentifier", - "src": "4009:3:7" - }, - "nodeType": "YulFunctionCall", - "src": "4009:9:7" - }, - "variableNames": [ - { - "name": "sum", - "nodeType": "YulIdentifier", - "src": "4002:3:7" - } - ] - }, - { - "body": { - "nodeType": "YulBlock", - "src": "4049:111:7", - "statements": [ - { - "expression": { - "arguments": [ - { - "kind": "number", - "nodeType": "YulLiteral", - "src": "4070:1:7", - "type": "", - "value": "0" - }, - { - "arguments": [ - { - "kind": "number", - "nodeType": "YulLiteral", - "src": "4077:3:7", - "type": "", - "value": "224" - }, - { - "kind": "number", - "nodeType": "YulLiteral", - "src": "4082:10:7", - "type": "", - "value": "0x4e487b71" - } - ], - "functionName": { - "name": "shl", - "nodeType": "YulIdentifier", - "src": "4073:3:7" - }, - "nodeType": "YulFunctionCall", - "src": "4073:20:7" - } - ], - "functionName": { - "name": "mstore", - "nodeType": "YulIdentifier", - "src": "4063:6:7" - }, - "nodeType": "YulFunctionCall", - "src": "4063:31:7" - }, - "nodeType": "YulExpressionStatement", - "src": "4063:31:7" - }, - { - "expression": { - "arguments": [ - { - "kind": "number", - "nodeType": "YulLiteral", - "src": "4114:1:7", - "type": "", - "value": "4" - }, - { - "kind": "number", - "nodeType": "YulLiteral", - "src": "4117:4:7", - "type": "", - "value": "0x11" - } - ], - "functionName": { - "name": "mstore", - "nodeType": "YulIdentifier", - "src": "4107:6:7" - }, - "nodeType": "YulFunctionCall", - "src": "4107:15:7" - }, - "nodeType": "YulExpressionStatement", - "src": "4107:15:7" - }, - { - "expression": { - "arguments": [ - { - "kind": "number", - "nodeType": "YulLiteral", - "src": "4142:1:7", - "type": "", - "value": "0" - }, - { - "kind": "number", - "nodeType": "YulLiteral", - "src": "4145:4:7", - "type": "", - "value": "0x24" - } - ], - "functionName": { - "name": "revert", - "nodeType": "YulIdentifier", - "src": "4135:6:7" - }, - "nodeType": "YulFunctionCall", - "src": "4135:15:7" - }, - "nodeType": "YulExpressionStatement", - "src": "4135:15:7" - } - ] - }, - "condition": { - "arguments": [ - { - "name": "x", - "nodeType": "YulIdentifier", - "src": "4033:1:7" - }, - { - "name": "sum", - "nodeType": "YulIdentifier", - "src": "4036:3:7" - } - ], - "functionName": { - "name": "gt", - "nodeType": "YulIdentifier", - "src": "4030:2:7" - }, - "nodeType": "YulFunctionCall", - "src": "4030:10:7" - }, - "nodeType": "YulIf", - "src": "4027:133:7" - } - ] - }, - "name": "checked_add_t_uint256", - "nodeType": "YulFunctionDefinition", - "parameters": [ - { - "name": "x", - "nodeType": "YulTypedName", - "src": "3975:1:7", - "type": "" - }, - { - "name": "y", - "nodeType": "YulTypedName", - "src": "3978:1:7", - "type": "" - } - ], - "returnVariables": [ - { - "name": "sum", - "nodeType": "YulTypedName", - "src": "3984:3:7", - "type": "" - } - ], - "src": "3944:222:7" - }, - { - "body": { - "nodeType": "YulBlock", - "src": "4328:218:7", - "statements": [ - { - "nodeType": "YulAssignment", - "src": "4338:26:7", - "value": { - "arguments": [ - { - "name": "headStart", - "nodeType": "YulIdentifier", - "src": "4350:9:7" - }, - { - "kind": "number", - "nodeType": "YulLiteral", - "src": "4361:2:7", - "type": "", - "value": "96" - } - ], - "functionName": { - "name": "add", - "nodeType": "YulIdentifier", - "src": "4346:3:7" - }, - "nodeType": "YulFunctionCall", - "src": "4346:18:7" - }, - "variableNames": [ - { - "name": "tail", - "nodeType": "YulIdentifier", - "src": "4338:4:7" - } - ] - }, - { - "nodeType": "YulVariableDeclaration", - "src": "4373:29:7", - "value": { - "arguments": [ - { - "arguments": [ - { - "kind": "number", - "nodeType": "YulLiteral", - "src": "4391:3:7", - "type": "", - "value": "160" - }, - { - "kind": "number", - "nodeType": "YulLiteral", - "src": "4396:1:7", - "type": "", - "value": "1" - } - ], - "functionName": { - "name": "shl", - "nodeType": "YulIdentifier", - "src": "4387:3:7" - }, - "nodeType": "YulFunctionCall", - "src": "4387:11:7" - }, - { - "kind": "number", - "nodeType": "YulLiteral", - "src": "4400:1:7", - "type": "", - "value": "1" - } - ], - "functionName": { - "name": "sub", - "nodeType": "YulIdentifier", - "src": "4383:3:7" - }, - "nodeType": "YulFunctionCall", - "src": "4383:19:7" - }, - "variables": [ - { - "name": "_1", - "nodeType": "YulTypedName", - "src": "4377:2:7", - "type": "" - } - ] - }, - { - "expression": { - "arguments": [ - { - "name": "headStart", - "nodeType": "YulIdentifier", - "src": "4418:9:7" - }, - { - "arguments": [ - { - "name": "value0", - "nodeType": "YulIdentifier", - "src": "4433:6:7" - }, - { - "name": "_1", - "nodeType": "YulIdentifier", - "src": "4441:2:7" - } - ], - "functionName": { - "name": "and", - "nodeType": "YulIdentifier", - "src": "4429:3:7" - }, - "nodeType": "YulFunctionCall", - "src": "4429:15:7" - } - ], - "functionName": { - "name": "mstore", - "nodeType": "YulIdentifier", - "src": "4411:6:7" - }, - "nodeType": "YulFunctionCall", - "src": "4411:34:7" - }, - "nodeType": "YulExpressionStatement", - "src": "4411:34:7" - }, - { - "expression": { - "arguments": [ - { - "arguments": [ - { - "name": "headStart", - "nodeType": "YulIdentifier", - "src": "4465:9:7" - }, - { - "kind": "number", - "nodeType": "YulLiteral", - "src": "4476:2:7", - "type": "", - "value": "32" - } - ], - "functionName": { - "name": "add", - "nodeType": "YulIdentifier", - "src": "4461:3:7" - }, - "nodeType": "YulFunctionCall", - "src": "4461:18:7" - }, - { - "arguments": [ - { - "name": "value1", - "nodeType": "YulIdentifier", - "src": "4485:6:7" - }, - { - "name": "_1", - "nodeType": "YulIdentifier", - "src": "4493:2:7" - } - ], - "functionName": { - "name": "and", - "nodeType": "YulIdentifier", - "src": "4481:3:7" - }, - "nodeType": "YulFunctionCall", - "src": "4481:15:7" - } - ], - "functionName": { - "name": "mstore", - "nodeType": "YulIdentifier", - "src": "4454:6:7" - }, - "nodeType": "YulFunctionCall", - "src": "4454:43:7" - }, - "nodeType": "YulExpressionStatement", - "src": "4454:43:7" - }, - { - "expression": { - "arguments": [ - { - "arguments": [ - { - "name": "headStart", - "nodeType": "YulIdentifier", - "src": "4517:9:7" - }, - { - "kind": "number", - "nodeType": "YulLiteral", - "src": "4528:2:7", - "type": "", - "value": "64" - } - ], - "functionName": { - "name": "add", - "nodeType": "YulIdentifier", - "src": "4513:3:7" - }, - "nodeType": "YulFunctionCall", - "src": "4513:18:7" - }, - { - "name": "value2", - "nodeType": "YulIdentifier", - "src": "4533:6:7" - } - ], - "functionName": { - "name": "mstore", - "nodeType": "YulIdentifier", - "src": "4506:6:7" - }, - "nodeType": "YulFunctionCall", - "src": "4506:34:7" - }, - "nodeType": "YulExpressionStatement", - "src": "4506:34:7" - } - ] - }, - "name": "abi_encode_tuple_t_address_t_address_t_uint256__to_t_address_t_address_t_uint256__fromStack_reversed", - "nodeType": "YulFunctionDefinition", - "parameters": [ - { - "name": "headStart", - "nodeType": "YulTypedName", - "src": "4281:9:7", - "type": "" - }, - { - "name": "value2", - "nodeType": "YulTypedName", - "src": "4292:6:7", - "type": "" - }, - { - "name": "value1", - "nodeType": "YulTypedName", - "src": "4300:6:7", - "type": "" - }, - { - "name": "value0", - "nodeType": "YulTypedName", - "src": "4308:6:7", - "type": "" - } - ], - "returnVariables": [ - { - "name": "tail", - "nodeType": "YulTypedName", - "src": "4319:4:7", - "type": "" - } - ], - "src": "4171:375:7" - }, - { - "body": { - "nodeType": "YulBlock", - "src": "4708:188:7", - "statements": [ - { - "nodeType": "YulAssignment", - "src": "4718:26:7", - "value": { - "arguments": [ - { - "name": "headStart", - "nodeType": "YulIdentifier", - "src": "4730:9:7" - }, - { - "kind": "number", - "nodeType": "YulLiteral", - "src": "4741:2:7", - "type": "", - "value": "96" - } - ], - "functionName": { - "name": "add", - "nodeType": "YulIdentifier", - "src": "4726:3:7" - }, - "nodeType": "YulFunctionCall", - "src": "4726:18:7" - }, - "variableNames": [ - { - "name": "tail", - "nodeType": "YulIdentifier", - "src": "4718:4:7" - } - ] - }, - { - "expression": { - "arguments": [ - { - "name": "headStart", - "nodeType": "YulIdentifier", - "src": "4760:9:7" - }, - { - "arguments": [ - { - "name": "value0", - "nodeType": "YulIdentifier", - "src": "4775:6:7" - }, - { - "arguments": [ - { - "arguments": [ - { - "kind": "number", - "nodeType": "YulLiteral", - "src": "4791:3:7", - "type": "", - "value": "160" - }, - { - "kind": "number", - "nodeType": "YulLiteral", - "src": "4796:1:7", - "type": "", - "value": "1" - } - ], - "functionName": { - "name": "shl", - "nodeType": "YulIdentifier", - "src": "4787:3:7" - }, - "nodeType": "YulFunctionCall", - "src": "4787:11:7" - }, - { - "kind": "number", - "nodeType": "YulLiteral", - "src": "4800:1:7", - "type": "", - "value": "1" - } - ], - "functionName": { - "name": "sub", - "nodeType": "YulIdentifier", - "src": "4783:3:7" - }, - "nodeType": "YulFunctionCall", - "src": "4783:19:7" - } - ], - "functionName": { - "name": "and", - "nodeType": "YulIdentifier", - "src": "4771:3:7" - }, - "nodeType": "YulFunctionCall", - "src": "4771:32:7" - } - ], - "functionName": { - "name": "mstore", - "nodeType": "YulIdentifier", - "src": "4753:6:7" - }, - "nodeType": "YulFunctionCall", - "src": "4753:51:7" - }, - "nodeType": "YulExpressionStatement", - "src": "4753:51:7" - }, - { - "expression": { - "arguments": [ - { - "arguments": [ - { - "name": "headStart", - "nodeType": "YulIdentifier", - "src": "4824:9:7" - }, - { - "kind": "number", - "nodeType": "YulLiteral", - "src": "4835:2:7", - "type": "", - "value": "32" - } - ], - "functionName": { - "name": "add", - "nodeType": "YulIdentifier", - "src": "4820:3:7" - }, - "nodeType": "YulFunctionCall", - "src": "4820:18:7" - }, - { - "name": "value1", - "nodeType": "YulIdentifier", - "src": "4840:6:7" - } - ], - "functionName": { - "name": "mstore", - "nodeType": "YulIdentifier", - "src": "4813:6:7" - }, - "nodeType": "YulFunctionCall", - "src": "4813:34:7" - }, - "nodeType": "YulExpressionStatement", - "src": "4813:34:7" - }, - { - "expression": { - "arguments": [ - { - "arguments": [ - { - "name": "headStart", - "nodeType": "YulIdentifier", - "src": "4867:9:7" - }, - { - "kind": "number", - "nodeType": "YulLiteral", - "src": "4878:2:7", - "type": "", - "value": "64" - } - ], - "functionName": { - "name": "add", - "nodeType": "YulIdentifier", - "src": "4863:3:7" - }, - "nodeType": "YulFunctionCall", - "src": "4863:18:7" - }, - { - "name": "value2", - "nodeType": "YulIdentifier", - "src": "4883:6:7" - } - ], - "functionName": { - "name": "mstore", - "nodeType": "YulIdentifier", - "src": "4856:6:7" - }, - "nodeType": "YulFunctionCall", - "src": "4856:34:7" - }, - "nodeType": "YulExpressionStatement", - "src": "4856:34:7" - } - ] - }, - "name": "abi_encode_tuple_t_address_t_uint256_t_uint256__to_t_address_t_uint256_t_uint256__fromStack_reversed", - "nodeType": "YulFunctionDefinition", - "parameters": [ - { - "name": "headStart", - "nodeType": "YulTypedName", - "src": "4661:9:7", - "type": "" - }, - { - "name": "value2", - "nodeType": "YulTypedName", - "src": "4672:6:7", - "type": "" - }, - { - "name": "value1", - "nodeType": "YulTypedName", - "src": "4680:6:7", - "type": "" - }, - { - "name": "value0", - "nodeType": "YulTypedName", - "src": "4688:6:7", - "type": "" - } - ], - "returnVariables": [ - { - "name": "tail", - "nodeType": "YulTypedName", - "src": "4699:4:7", - "type": "" - } - ], - "src": "4551:345:7" - } - ] - }, - "contents": "{\n { }\n function abi_decode_address(offset) -> value\n {\n value := calldataload(offset)\n if iszero(eq(value, and(value, sub(shl(160, 1), 1)))) { revert(0, 0) }\n }\n function abi_decode_tuple_t_address(headStart, dataEnd) -> value0\n {\n if slt(sub(dataEnd, headStart), 32) { revert(0, 0) }\n value0 := abi_decode_address(headStart)\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_uint256t_uint256(headStart, dataEnd) -> value0, value1, value2\n {\n if slt(sub(dataEnd, headStart), 96) { revert(0, 0) }\n value0 := abi_decode_address(headStart)\n value1 := calldataload(add(headStart, 32))\n value2 := calldataload(add(headStart, 64))\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_contract$_IERC20_$729__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_stringliteral_a8ad0d9b43a12ad06193d78950e25818160251504b5298878dc06273011c350f__to_t_string_memory_ptr__fromStack_reversed(headStart) -> tail\n {\n mstore(headStart, 32)\n mstore(add(headStart, 32), 17)\n mstore(add(headStart, 64), \"Vesting not ended\")\n tail := add(headStart, 96)\n }\n function abi_encode_tuple_t_stringliteral_0d5449e713a47f03a14de06feb7e7374931b31bbe74b9f8d4277d4797f0eb90e__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), \"No tokens to claim\")\n tail := add(headStart, 96)\n }\n function abi_encode_tuple_t_address_t_uint256__to_t_address_t_uint256__fromStack_reversed(headStart, value1, value0) -> tail\n {\n tail := add(headStart, 64)\n mstore(headStart, and(value0, sub(shl(160, 1), 1)))\n mstore(add(headStart, 32), value1)\n }\n function abi_decode_tuple_t_bool_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, iszero(iszero(value)))) { revert(0, 0) }\n value0 := value\n }\n function abi_encode_tuple_t_stringliteral_25adaa6d082ce15f901e0d8a3d393e7462ef9edf2e6bc8321fa14d1615b6fc51__to_t_string_memory_ptr__fromStack_reversed(headStart) -> tail\n {\n mstore(headStart, 32)\n mstore(add(headStart, 32), 15)\n mstore(add(headStart, 64), \"Transfer failed\")\n tail := add(headStart, 96)\n }\n function abi_encode_tuple_t_stringliteral_fa7e120cf98867f00c0ac28b387a73caec64b93b1889065f7b4c5e5232c0bad6__to_t_string_memory_ptr__fromStack_reversed(headStart) -> tail\n {\n mstore(headStart, 32)\n mstore(add(headStart, 32), 9)\n mstore(add(headStart, 64), \"Not admin\")\n tail := add(headStart, 96)\n }\n function abi_encode_tuple_t_stringliteral_1462473b7a4b33d32b109b815fd2324d00c9e5839b707ecf16d0ab5744f99226__to_t_string_memory_ptr__fromStack_reversed(headStart) -> tail\n {\n mstore(headStart, 32)\n mstore(add(headStart, 32), 15)\n mstore(add(headStart, 64), \"Invalid address\")\n tail := add(headStart, 96)\n }\n function abi_encode_tuple_t_stringliteral_2fd1dfd944df9898ee4c79794168926172c3d96d7664ff9919bb7080bb018af1__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), \"Invalid amount\")\n tail := add(headStart, 96)\n }\n function checked_add_t_uint256(x, y) -> sum\n {\n sum := add(x, y)\n if gt(x, sum)\n {\n mstore(0, shl(224, 0x4e487b71))\n mstore(4, 0x11)\n revert(0, 0x24)\n }\n }\n function abi_encode_tuple_t_address_t_address_t_uint256__to_t_address_t_address_t_uint256__fromStack_reversed(headStart, value2, value1, value0) -> tail\n {\n tail := add(headStart, 96)\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 }\n function abi_encode_tuple_t_address_t_uint256_t_uint256__to_t_address_t_uint256_t_uint256__fromStack_reversed(headStart, value2, value1, value0) -> tail\n {\n tail := add(headStart, 96)\n mstore(headStart, and(value0, sub(shl(160, 1), 1)))\n mstore(add(headStart, 32), value1)\n mstore(add(headStart, 64), value2)\n }\n}", - "id": 7, - "language": "Yul", - "name": "#utility.yul" - } - ], - "immutableReferences": {}, - "linkReferences": {}, - "object": "608060405234801561001057600080fd5b50600436106100625760003560e01c80632a918c3d14610067578063384711cc1461009a5780634e71d92d146100ba578063e9754908146100c4578063f851a440146100d7578063fc0c546a14610102575b600080fd5b6100876100753660046104b1565b60036020526000908152604090205481565b6040519081526020015b60405180910390f35b6100876100a83660046104b1565b60026020526000908152604090205481565b6100c2610115565b005b6100c26100d23660046104d3565b61029c565b6001546100ea906001600160a01b031681565b6040516001600160a01b039091168152602001610091565b6000546100ea906001600160a01b031681565b3360009081526003602052604090205442101561016d5760405162461bcd60e51b815260206004820152601160248201527015995cdd1a5b99c81b9bdd08195b991959607a1b60448201526064015b60405180910390fd5b33600090815260026020526040902054806101bf5760405162461bcd60e51b81526020600482015260126024820152714e6f20746f6b656e7320746f20636c61696d60701b6044820152606401610164565b336000818152600260205260408082208290559054905163a9059cbb60e01b81526001600160a01b039091169163a9059cbb9161020191908590600401610506565b6020604051808303816000875af1158015610220573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610244919061051f565b6102605760405162461bcd60e51b815260040161016490610541565b7f896e034966eaaf1adc54acc0f257056febbd300c9e47182cf761982cf1f5e4303382604051610291929190610506565b60405180910390a150565b6001546001600160a01b031633146102e25760405162461bcd60e51b81526020600482015260096024820152682737ba1030b236b4b760b91b6044820152606401610164565b6001600160a01b03831661032a5760405162461bcd60e51b815260206004820152600f60248201526e496e76616c6964206164647265737360881b6044820152606401610164565b6000821161036b5760405162461bcd60e51b815260206004820152600e60248201526d125b9d985b1a5908185b5bdd5b9d60921b6044820152606401610164565b6001600160a01b0383166000908152600260205260409020829055610390814261056a565b6001600160a01b03848116600090815260036020526040808220939093555491516323b872dd60e01b8152336004820152306024820152604481018590529116906323b872dd906064016020604051808303816000875af11580156103f9573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061041d919061051f565b6104395760405162461bcd60e51b815260040161016490610541565b6001600160a01b03831660008181526003602090815260409182902054825193845290830185905282820152517f9ade76f4385de306666dfb21a52b27d52db0fde8ad0f515fa261f532cac60d219181900360600190a1505050565b80356001600160a01b03811681146104ac57600080fd5b919050565b6000602082840312156104c357600080fd5b6104cc82610495565b9392505050565b6000806000606084860312156104e857600080fd5b6104f184610495565b95602085013595506040909401359392505050565b6001600160a01b03929092168252602082015260400190565b60006020828403121561053157600080fd5b815180151581146104cc57600080fd5b6020808252600f908201526e151c985b9cd9995c8819985a5b1959608a1b604082015260600190565b8082018082111561058b57634e487b7160e01b600052601160045260246000fd5b9291505056fea2646970667358221220774d76ad99d65f15946476201df75f44208bd7db96041c4ccc51e3cc40776eb464736f6c63430008140033", - "opcodes": "PUSH1 0x80 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH2 0x10 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x4 CALLDATASIZE LT PUSH2 0x62 JUMPI PUSH1 0x0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0x2A918C3D EQ PUSH2 0x67 JUMPI DUP1 PUSH4 0x384711CC EQ PUSH2 0x9A JUMPI DUP1 PUSH4 0x4E71D92D EQ PUSH2 0xBA JUMPI DUP1 PUSH4 0xE9754908 EQ PUSH2 0xC4 JUMPI DUP1 PUSH4 0xF851A440 EQ PUSH2 0xD7 JUMPI DUP1 PUSH4 0xFC0C546A EQ PUSH2 0x102 JUMPI JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x87 PUSH2 0x75 CALLDATASIZE PUSH1 0x4 PUSH2 0x4B1 JUMP JUMPDEST PUSH1 0x3 PUSH1 0x20 MSTORE PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD DUP2 JUMP JUMPDEST PUSH1 0x40 MLOAD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0x87 PUSH2 0xA8 CALLDATASIZE PUSH1 0x4 PUSH2 0x4B1 JUMP JUMPDEST PUSH1 0x2 PUSH1 0x20 MSTORE PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD DUP2 JUMP JUMPDEST PUSH2 0xC2 PUSH2 0x115 JUMP JUMPDEST STOP JUMPDEST PUSH2 0xC2 PUSH2 0xD2 CALLDATASIZE PUSH1 0x4 PUSH2 0x4D3 JUMP JUMPDEST PUSH2 0x29C JUMP JUMPDEST PUSH1 0x1 SLOAD PUSH2 0xEA 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 0x91 JUMP JUMPDEST PUSH1 0x0 SLOAD PUSH2 0xEA SWAP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 JUMP JUMPDEST CALLER PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x3 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD TIMESTAMP LT ISZERO PUSH2 0x16D JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x11 PUSH1 0x24 DUP3 ADD MSTORE PUSH17 0x15995CDD1A5B99C81B9BDD08195B991959 PUSH1 0x7A SHL PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 ADD JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST CALLER PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x2 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD DUP1 PUSH2 0x1BF 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 0x4E6F20746F6B656E7320746F20636C61696D PUSH1 0x70 SHL PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 ADD PUSH2 0x164 JUMP JUMPDEST CALLER PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0x2 PUSH1 0x20 MSTORE PUSH1 0x40 DUP1 DUP3 KECCAK256 DUP3 SWAP1 SSTORE SWAP1 SLOAD SWAP1 MLOAD PUSH4 0xA9059CBB PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 SWAP2 AND SWAP2 PUSH4 0xA9059CBB SWAP2 PUSH2 0x201 SWAP2 SWAP1 DUP6 SWAP1 PUSH1 0x4 ADD PUSH2 0x506 JUMP JUMPDEST PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 GAS CALL ISZERO DUP1 ISZERO PUSH2 0x220 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x244 SWAP2 SWAP1 PUSH2 0x51F JUMP JUMPDEST PUSH2 0x260 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x164 SWAP1 PUSH2 0x541 JUMP JUMPDEST PUSH32 0x896E034966EAAF1ADC54ACC0F257056FEBBD300C9E47182CF761982CF1F5E430 CALLER DUP3 PUSH1 0x40 MLOAD PUSH2 0x291 SWAP3 SWAP2 SWAP1 PUSH2 0x506 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG1 POP JUMP JUMPDEST PUSH1 0x1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND CALLER EQ PUSH2 0x2E2 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x9 PUSH1 0x24 DUP3 ADD MSTORE PUSH9 0x2737BA1030B236B4B7 PUSH1 0xB9 SHL PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 ADD PUSH2 0x164 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP4 AND PUSH2 0x32A JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0xF PUSH1 0x24 DUP3 ADD MSTORE PUSH15 0x496E76616C69642061646472657373 PUSH1 0x88 SHL PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 ADD PUSH2 0x164 JUMP JUMPDEST PUSH1 0x0 DUP3 GT PUSH2 0x36B 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 0x125B9D985B1A5908185B5BDD5B9D PUSH1 0x92 SHL PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 ADD PUSH2 0x164 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP4 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x2 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 DUP3 SWAP1 SSTORE PUSH2 0x390 DUP2 TIMESTAMP PUSH2 0x56A JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP5 DUP2 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x3 PUSH1 0x20 MSTORE PUSH1 0x40 DUP1 DUP3 KECCAK256 SWAP4 SWAP1 SWAP4 SSTORE SLOAD SWAP2 MLOAD PUSH4 0x23B872DD PUSH1 0xE0 SHL DUP2 MSTORE CALLER PUSH1 0x4 DUP3 ADD MSTORE ADDRESS PUSH1 0x24 DUP3 ADD MSTORE PUSH1 0x44 DUP2 ADD DUP6 SWAP1 MSTORE SWAP2 AND SWAP1 PUSH4 0x23B872DD SWAP1 PUSH1 0x64 ADD PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 GAS CALL ISZERO DUP1 ISZERO PUSH2 0x3F9 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x41D SWAP2 SWAP1 PUSH2 0x51F JUMP JUMPDEST PUSH2 0x439 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x164 SWAP1 PUSH2 0x541 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP4 AND PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0x3 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 SWAP2 DUP3 SWAP1 KECCAK256 SLOAD DUP3 MLOAD SWAP4 DUP5 MSTORE SWAP1 DUP4 ADD DUP6 SWAP1 MSTORE DUP3 DUP3 ADD MSTORE MLOAD PUSH32 0x9ADE76F4385DE306666DFB21A52B27D52DB0FDE8AD0F515FA261F532CAC60D21 SWAP2 DUP2 SWAP1 SUB PUSH1 0x60 ADD SWAP1 LOG1 POP POP POP JUMP JUMPDEST DUP1 CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND DUP2 EQ PUSH2 0x4AC JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x4C3 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x4CC DUP3 PUSH2 0x495 JUMP JUMPDEST SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 PUSH1 0x60 DUP5 DUP7 SUB SLT ISZERO PUSH2 0x4E8 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x4F1 DUP5 PUSH2 0x495 JUMP JUMPDEST SWAP6 PUSH1 0x20 DUP6 ADD CALLDATALOAD SWAP6 POP PUSH1 0x40 SWAP1 SWAP5 ADD CALLDATALOAD SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP3 SWAP1 SWAP3 AND DUP3 MSTORE PUSH1 0x20 DUP3 ADD MSTORE PUSH1 0x40 ADD SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x531 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 MLOAD DUP1 ISZERO ISZERO DUP2 EQ PUSH2 0x4CC JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE PUSH1 0xF SWAP1 DUP3 ADD MSTORE PUSH15 0x151C985B9CD9995C8819985A5B1959 PUSH1 0x8A SHL PUSH1 0x40 DUP3 ADD MSTORE PUSH1 0x60 ADD SWAP1 JUMP JUMPDEST DUP1 DUP3 ADD DUP1 DUP3 GT ISZERO PUSH2 0x58B JUMPI PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH1 0x0 MSTORE PUSH1 0x11 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST SWAP3 SWAP2 POP POP JUMP INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 PUSH24 0x4D76AD99D65F15946476201DF75F44208BD7DB96041C4CCC MLOAD 0xE3 0xCC BLOCKHASH PUSH24 0x6EB464736F6C634300081400330000000000000000000000 ", - "sourceMap": "116:1406:5:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;250:45;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;529:25:7;;;517:2;502:18;250:45:5;;;;;;;;197:47;;;;;;:::i;:::-;;;;;;;;;;;;;;1145:375;;;:::i;:::-;;546:593;;;;;;:::i;:::-;;:::i;170:20::-;;;;;-1:-1:-1;;;;;170:20:5;;;;;;-1:-1:-1;;;;;1056:32:7;;;1038:51;;1026:2;1011:18;170:20:5;892:203:7;145:19:5;;;;;-1:-1:-1;;;;;145:19:5;;;1145:375;1219:10;1208:22;;;;:10;:22;;;;;;1189:15;:41;;1181:71;;;;-1:-1:-1;;;1181:71:5;;1524:2:7;1181:71:5;;;1506:21:7;1563:2;1543:18;;;1536:30;-1:-1:-1;;;1582:18:7;;;1575:47;1639:18;;1181:71:5;;;;;;;;;1292:10;1262:14;1279:24;;;:12;:24;;;;;;1321:10;1313:41;;;;-1:-1:-1;;;1313:41:5;;1870:2:7;1313:41:5;;;1852:21:7;1909:2;1889:18;;;1882:30;-1:-1:-1;;;1928:18:7;;;1921:48;1986:18;;1313:41:5;1668:342:7;1313:41:5;1378:10;1392:1;1365:24;;;:12;:24;;;;;;:28;;;1411:5;;:34;;-1:-1:-1;;;1411:34:5;;-1:-1:-1;;;;;1411:5:5;;;;:14;;:34;;1378:10;1438:6;;1411:34;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;1403:62;;;;-1:-1:-1;;;1403:62:5;;;;;;;:::i;:::-;1480:33;1494:10;1506:6;1480:33;;;;;;;:::i;:::-;;;;;;;;1171:349;1145:375::o;546:593::-;695:5;;-1:-1:-1;;;;;695:5:5;681:10;:19;673:41;;;;-1:-1:-1;;;673:41:5;;3122:2:7;673:41:5;;;3104:21:7;3161:1;3141:18;;;3134:29;-1:-1:-1;;;3179:18:7;;;3172:39;3228:18;;673:41:5;2920:332:7;673:41:5;-1:-1:-1;;;;;732:25:5;;724:53;;;;-1:-1:-1;;;724:53:5;;3459:2:7;724:53:5;;;3441:21:7;3498:2;3478:18;;;3471:30;-1:-1:-1;;;3517:18:7;;;3510:45;3572:18;;724:53:5;3257:339:7;724:53:5;804:1;795:6;:10;787:37;;;;-1:-1:-1;;;787:37:5;;3803:2:7;787:37:5;;;3785:21:7;3842:2;3822:18;;;3815:30;-1:-1:-1;;;3861:18:7;;;3854:44;3915:18;;787:37:5;3601:338:7;787:37:5;-1:-1:-1;;;;;835:25:5;;;;;;:12;:25;;;;;:34;;;905:26;923:8;905:15;:26;:::i;:::-;-1:-1:-1;;;;;879:23:5;;;;;;;:10;:23;;;;;;:52;;;;963:5;:53;;-1:-1:-1;;;963:53:5;;982:10;963:53;;;4411:34:7;1002:4:5;4461:18:7;;;4454:43;4513:18;;;4506:34;;;963:5:5;;;:18;;4346::7;;963:53:5;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;942:115;;;;-1:-1:-1;;;942:115:5;;;;;;;:::i;:::-;-1:-1:-1;;;;;1108:23:5;;;;;;:10;:23;;;;;;;;;;1072:60;;4753:51:7;;;4820:18;;;4813:34;;;4863:18;;;4856:34;1072:60:5;;;;;;4741:2:7;1072:60:5;;;546:593;;;:::o;14:173:7:-;82:20;;-1:-1:-1;;;;;131:31:7;;121:42;;111:70;;177:1;174;167:12;111:70;14:173;;;:::o;192:186::-;251:6;304:2;292:9;283:7;279:23;275:32;272:52;;;320:1;317;310:12;272:52;343:29;362:9;343:29;:::i;:::-;333:39;192:186;-1:-1:-1;;;192:186:7:o;565:322::-;642:6;650;658;711:2;699:9;690:7;686:23;682:32;679:52;;;727:1;724;717:12;679:52;750:29;769:9;750:29;:::i;:::-;740:39;826:2;811:18;;798:32;;-1:-1:-1;877:2:7;862:18;;;849:32;;565:322;-1:-1:-1;;;565:322:7:o;2015:274::-;-1:-1:-1;;;;;2207:32:7;;;;2189:51;;2271:2;2256:18;;2249:34;2177:2;2162:18;;2015:274::o;2294:277::-;2361:6;2414:2;2402:9;2393:7;2389:23;2385:32;2382:52;;;2430:1;2427;2420:12;2382:52;2462:9;2456:16;2515:5;2508:13;2501:21;2494:5;2491:32;2481:60;;2537:1;2534;2527:12;2576:339;2778:2;2760:21;;;2817:2;2797:18;;;2790:30;-1:-1:-1;;;2851:2:7;2836:18;;2829:45;2906:2;2891:18;;2576:339::o;3944:222::-;4009:9;;;4030:10;;;4027:133;;;4082:10;4077:3;4073:20;4070:1;4063:31;4117:4;4114:1;4107:15;4145:4;4142:1;4135:15;4027:133;3944:222;;;;:::o" - }, - "methodIdentifiers": { - "admin()": "f851a440", - "claim()": "4e71d92d", - "createVesting(address,uint256,uint256)": "e9754908", - "token()": "fc0c546a", - "vestedAmount(address)": "384711cc", - "vestingEnd(address)": "2a918c3d" - } - }, - "metadata": "{\"compiler\":{\"version\":\"0.8.20+commit.a1b79de6\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_token\",\"type\":\"address\"}],\"stateMutability\":\"nonpayable\",\"type\":\"constructor\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"address\",\"name\":\"beneficiary\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"TokensClaimed\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"address\",\"name\":\"beneficiary\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"endTime\",\"type\":\"uint256\"}],\"name\":\"VestingCreated\",\"type\":\"event\"},{\"inputs\":[],\"name\":\"admin\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"claim\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"beneficiary\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"duration\",\"type\":\"uint256\"}],\"name\":\"createVesting\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"token\",\"outputs\":[{\"internalType\":\"contract IERC20\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"name\":\"vestedAmount\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"name\":\"vestingEnd\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"}],\"devdoc\":{\"kind\":\"dev\",\"methods\":{},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"contracts/TokenVesting.sol\":\"SimpleVesting\"},\"evmVersion\":\"london\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":1},\"remappings\":[]},\"sources\":{\"@openzeppelin/contracts/token/ERC20/IERC20.sol\":{\"keccak256\":\"0xe06a3f08a987af6ad2e1c1e774405d4fe08f1694b67517438b467cecf0da0ef7\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://df6f0c459663c9858b6cba2cda1d14a7d05a985bed6d2de72bd8e78c25ee79db\",\"dweb:/ipfs/QmeTTxZ7qVk9rjEv2R4CpCwdf8UMCcRqDNMvzNxHc3Fnn9\"]},\"contracts/TokenVesting.sol\":{\"keccak256\":\"0x2c62324c8bc086bb89b4acda8bf9249b7d62583d9c757d1b89f9411a3f91ae9f\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://4817ac154effcb7a441ae5ef6bf5f61778235cc1a28ae1a84067cb0d26e96824\",\"dweb:/ipfs/QmTvhstcT6rHNzG1sGsJY8FHV5c57EnHgGE5SvqaPCAcKP\"]}},\"version\":1}" - } - }, - "contracts/token.sol": { - "SimpleToken": { - "abi": [ - { - "inputs": [], - "stateMutability": "nonpayable", - "type": "constructor" - }, - { - "inputs": [ - { - "internalType": "address", - "name": "spender", - "type": "address" - }, - { - "internalType": "uint256", - "name": "allowance", - "type": "uint256" - }, - { - "internalType": "uint256", - "name": "needed", - "type": "uint256" - } - ], - "name": "ERC20InsufficientAllowance", - "type": "error" - }, - { - "inputs": [ - { - "internalType": "address", - "name": "sender", - "type": "address" - }, - { - "internalType": "uint256", - "name": "balance", - "type": "uint256" - }, - { - "internalType": "uint256", - "name": "needed", - "type": "uint256" - } - ], - "name": "ERC20InsufficientBalance", - "type": "error" - }, - { - "inputs": [ - { - "internalType": "address", - "name": "approver", - "type": "address" - } - ], - "name": "ERC20InvalidApprover", - "type": "error" - }, - { - "inputs": [ - { - "internalType": "address", - "name": "receiver", - "type": "address" - } - ], - "name": "ERC20InvalidReceiver", - "type": "error" - }, - { - "inputs": [ - { - "internalType": "address", - "name": "sender", - "type": "address" - } - ], - "name": "ERC20InvalidSender", - "type": "error" - }, - { - "inputs": [ - { - "internalType": "address", - "name": "spender", - "type": "address" - } - ], - "name": "ERC20InvalidSpender", - "type": "error" - }, - { - "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": "value", - "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": "decimals", - "outputs": [ - { - "internalType": "uint8", - "name": "", - "type": "uint8" - } - ], - "stateMutability": "view", - "type": "function" - }, - { - "inputs": [], - "name": "name", - "outputs": [ - { - "internalType": "string", - "name": "", - "type": "string" - } - ], - "stateMutability": "view", - "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": [ - { - "internalType": "address", - "name": "to", - "type": "address" - }, - { - "internalType": "uint256", - "name": "value", - "type": "uint256" - } - ], - "name": "transfer", - "outputs": [ - { - "internalType": "bool", - "name": "", - "type": "bool" - } - ], - "stateMutability": "nonpayable", - "type": "function" - }, - { - "inputs": [ - { - "internalType": "address", - "name": "from", - "type": "address" - }, - { - "internalType": "address", - "name": "to", - "type": "address" - }, - { - "internalType": "uint256", - "name": "value", - "type": "uint256" - } - ], - "name": "transferFrom", - "outputs": [ - { - "internalType": "bool", - "name": "", - "type": "bool" - } - ], - "stateMutability": "nonpayable", - "type": "function" - } - ], - "evm": { - "bytecode": { - "functionDebugData": { - "@_188": { - "entryPoint": null, - "id": 188, - "parameterSlots": 2, - "returnSlots": 0 - }, - "@_981": { - "entryPoint": null, - "id": 981, - "parameterSlots": 0, - "returnSlots": 0 - }, - "@_mint_491": { - "entryPoint": 184, - "id": 491, - "parameterSlots": 2, - "returnSlots": 0 - }, - "@_update_458": { - "entryPoint": 250, - "id": 458, - "parameterSlots": 3, - "returnSlots": 0 - }, - "@decimals_215": { - "entryPoint": 179, - "id": 215, - "parameterSlots": 0, - "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_uint256_t_uint256__to_t_address_t_uint256_t_uint256__fromStack_reversed": { - "entryPoint": null, - "id": null, - "parameterSlots": 4, - "returnSlots": 1 - }, - "abi_encode_tuple_t_uint256__to_t_uint256__fromStack_reversed": { - "entryPoint": null, - "id": null, - "parameterSlots": 2, - "returnSlots": 1 - }, - "array_dataslot_string_storage": { - "entryPoint": null, - "id": null, - "parameterSlots": 1, - "returnSlots": 1 - }, - "checked_add_t_uint256": { - "entryPoint": 1253, - "id": null, - "parameterSlots": 2, - "returnSlots": 1 - }, - "checked_exp_helper": { - "entryPoint": 948, - "id": null, - "parameterSlots": 2, - "returnSlots": 2 - }, - "checked_exp_t_uint256_t_uint8": { - "entryPoint": 1203, - "id": null, - "parameterSlots": 2, - "returnSlots": 1 - }, - "checked_exp_unsigned": { - "entryPoint": 1021, - "id": null, - "parameterSlots": 2, - "returnSlots": 1 - }, - "checked_mul_t_uint256": { - "entryPoint": 1227, - "id": null, - "parameterSlots": 2, - "returnSlots": 1 - }, - "clean_up_bytearray_end_slots_string_storage": { - "entryPoint": 639, - "id": null, - "parameterSlots": 3, - "returnSlots": 0 - }, - "copy_byte_array_to_storage_from_t_string_memory_ptr_to_t_string_storage": { - "entryPoint": 722, - "id": null, - "parameterSlots": 2, - "returnSlots": 0 - }, - "extract_byte_array_length": { - "entryPoint": 579, - "id": null, - "parameterSlots": 1, - "returnSlots": 1 - }, - "extract_used_part_and_set_length_of_short_byte_array": { - "entryPoint": null, - "id": null, - "parameterSlots": 2, - "returnSlots": 1 - }, - "panic_error_0x11": { - "entryPoint": 926, - "id": null, - "parameterSlots": 0, - "returnSlots": 0 - }, - "panic_error_0x41": { - "entryPoint": 557, - "id": null, - "parameterSlots": 0, - "returnSlots": 0 - } - }, - "generatedSources": [ - { - "ast": { - "nodeType": "YulBlock", - "src": "0:5290:7", - "statements": [ - { - "nodeType": "YulBlock", - "src": "6:3:7", - "statements": [] - }, - { - "body": { - "nodeType": "YulBlock", - "src": "46:95:7", - "statements": [ - { - "expression": { - "arguments": [ - { - "kind": "number", - "nodeType": "YulLiteral", - "src": "63:1:7", - "type": "", - "value": "0" - }, - { - "arguments": [ - { - "kind": "number", - "nodeType": "YulLiteral", - "src": "70:3:7", - "type": "", - "value": "224" - }, - { - "kind": "number", - "nodeType": "YulLiteral", - "src": "75:10:7", - "type": "", - "value": "0x4e487b71" - } - ], - "functionName": { - "name": "shl", - "nodeType": "YulIdentifier", - "src": "66:3:7" - }, - "nodeType": "YulFunctionCall", - "src": "66:20:7" - } - ], - "functionName": { - "name": "mstore", - "nodeType": "YulIdentifier", - "src": "56:6:7" - }, - "nodeType": "YulFunctionCall", - "src": "56:31:7" - }, - "nodeType": "YulExpressionStatement", - "src": "56:31:7" - }, - { - "expression": { - "arguments": [ - { - "kind": "number", - "nodeType": "YulLiteral", - "src": "103:1:7", - "type": "", - "value": "4" - }, - { - "kind": "number", - "nodeType": "YulLiteral", - "src": "106:4:7", - "type": "", - "value": "0x41" - } - ], - "functionName": { - "name": "mstore", - "nodeType": "YulIdentifier", - "src": "96:6:7" - }, - "nodeType": "YulFunctionCall", - "src": "96:15:7" - }, - "nodeType": "YulExpressionStatement", - "src": "96:15:7" - }, - { - "expression": { - "arguments": [ - { - "kind": "number", - "nodeType": "YulLiteral", - "src": "127:1:7", - "type": "", - "value": "0" - }, - { - "kind": "number", - "nodeType": "YulLiteral", - "src": "130:4:7", - "type": "", - "value": "0x24" - } - ], - "functionName": { - "name": "revert", - "nodeType": "YulIdentifier", - "src": "120:6:7" - }, - "nodeType": "YulFunctionCall", - "src": "120:15:7" - }, - "nodeType": "YulExpressionStatement", - "src": "120:15:7" - } - ] - }, - "name": "panic_error_0x41", - "nodeType": "YulFunctionDefinition", - "src": "14:127:7" - }, - { - "body": { - "nodeType": "YulBlock", - "src": "201:325:7", - "statements": [ - { - "nodeType": "YulAssignment", - "src": "211:22:7", - "value": { - "arguments": [ - { - "kind": "number", - "nodeType": "YulLiteral", - "src": "225:1:7", - "type": "", - "value": "1" - }, - { - "name": "data", - "nodeType": "YulIdentifier", - "src": "228:4:7" - } - ], - "functionName": { - "name": "shr", - "nodeType": "YulIdentifier", - "src": "221:3:7" - }, - "nodeType": "YulFunctionCall", - "src": "221:12:7" - }, - "variableNames": [ - { - "name": "length", - "nodeType": "YulIdentifier", - "src": "211:6:7" - } - ] - }, - { - "nodeType": "YulVariableDeclaration", - "src": "242:38:7", - "value": { - "arguments": [ - { - "name": "data", - "nodeType": "YulIdentifier", - "src": "272:4:7" - }, - { - "kind": "number", - "nodeType": "YulLiteral", - "src": "278:1:7", - "type": "", - "value": "1" - } - ], - "functionName": { - "name": "and", - "nodeType": "YulIdentifier", - "src": "268:3:7" - }, - "nodeType": "YulFunctionCall", - "src": "268:12:7" - }, - "variables": [ - { - "name": "outOfPlaceEncoding", - "nodeType": "YulTypedName", - "src": "246:18:7", - "type": "" - } - ] - }, - { - "body": { - "nodeType": "YulBlock", - "src": "319:31:7", - "statements": [ - { - "nodeType": "YulAssignment", - "src": "321:27:7", - "value": { - "arguments": [ - { - "name": "length", - "nodeType": "YulIdentifier", - "src": "335:6:7" - }, - { - "kind": "number", - "nodeType": "YulLiteral", - "src": "343:4:7", - "type": "", - "value": "0x7f" - } - ], - "functionName": { - "name": "and", - "nodeType": "YulIdentifier", - "src": "331:3:7" - }, - "nodeType": "YulFunctionCall", - "src": "331:17:7" - }, - "variableNames": [ - { - "name": "length", - "nodeType": "YulIdentifier", - "src": "321:6:7" - } - ] - } - ] - }, - "condition": { - "arguments": [ - { - "name": "outOfPlaceEncoding", - "nodeType": "YulIdentifier", - "src": "299:18:7" - } - ], - "functionName": { - "name": "iszero", - "nodeType": "YulIdentifier", - "src": "292:6:7" - }, - "nodeType": "YulFunctionCall", - "src": "292:26:7" - }, - "nodeType": "YulIf", - "src": "289:61:7" - }, - { - "body": { - "nodeType": "YulBlock", - "src": "409:111:7", - "statements": [ - { - "expression": { - "arguments": [ - { - "kind": "number", - "nodeType": "YulLiteral", - "src": "430:1:7", - "type": "", - "value": "0" - }, - { - "arguments": [ - { - "kind": "number", - "nodeType": "YulLiteral", - "src": "437:3:7", - "type": "", - "value": "224" - }, - { - "kind": "number", - "nodeType": "YulLiteral", - "src": "442:10:7", - "type": "", - "value": "0x4e487b71" - } - ], - "functionName": { - "name": "shl", - "nodeType": "YulIdentifier", - "src": "433:3:7" - }, - "nodeType": "YulFunctionCall", - "src": "433:20:7" - } - ], - "functionName": { - "name": "mstore", - "nodeType": "YulIdentifier", - "src": "423:6:7" - }, - "nodeType": "YulFunctionCall", - "src": "423:31:7" - }, - "nodeType": "YulExpressionStatement", - "src": "423:31:7" - }, - { - "expression": { - "arguments": [ - { - "kind": "number", - "nodeType": "YulLiteral", - "src": "474:1:7", - "type": "", - "value": "4" - }, - { - "kind": "number", - "nodeType": "YulLiteral", - "src": "477:4:7", - "type": "", - "value": "0x22" - } - ], - "functionName": { - "name": "mstore", - "nodeType": "YulIdentifier", - "src": "467:6:7" - }, - "nodeType": "YulFunctionCall", - "src": "467:15:7" - }, - "nodeType": "YulExpressionStatement", - "src": "467:15:7" - }, - { - "expression": { - "arguments": [ - { - "kind": "number", - "nodeType": "YulLiteral", - "src": "502:1:7", - "type": "", - "value": "0" - }, - { - "kind": "number", - "nodeType": "YulLiteral", - "src": "505:4:7", - "type": "", - "value": "0x24" - } - ], - "functionName": { - "name": "revert", - "nodeType": "YulIdentifier", - "src": "495:6:7" - }, - "nodeType": "YulFunctionCall", - "src": "495:15:7" - }, - "nodeType": "YulExpressionStatement", - "src": "495:15:7" - } - ] - }, - "condition": { - "arguments": [ - { - "name": "outOfPlaceEncoding", - "nodeType": "YulIdentifier", - "src": "365:18:7" - }, - { - "arguments": [ - { - "name": "length", - "nodeType": "YulIdentifier", - "src": "388:6:7" - }, - { - "kind": "number", - "nodeType": "YulLiteral", - "src": "396:2:7", - "type": "", - "value": "32" - } - ], - "functionName": { - "name": "lt", - "nodeType": "YulIdentifier", - "src": "385:2:7" - }, - "nodeType": "YulFunctionCall", - "src": "385:14:7" - } - ], - "functionName": { - "name": "eq", - "nodeType": "YulIdentifier", - "src": "362:2:7" - }, - "nodeType": "YulFunctionCall", - "src": "362:38:7" - }, - "nodeType": "YulIf", - "src": "359:161:7" - } - ] - }, - "name": "extract_byte_array_length", - "nodeType": "YulFunctionDefinition", - "parameters": [ - { - "name": "data", - "nodeType": "YulTypedName", - "src": "181:4:7", - "type": "" - } - ], - "returnVariables": [ - { - "name": "length", - "nodeType": "YulTypedName", - "src": "190:6:7", - "type": "" - } - ], - "src": "146:380:7" - }, - { - "body": { - "nodeType": "YulBlock", - "src": "587:65:7", - "statements": [ - { - "expression": { - "arguments": [ - { - "kind": "number", - "nodeType": "YulLiteral", - "src": "604:1:7", - "type": "", - "value": "0" - }, - { - "name": "ptr", - "nodeType": "YulIdentifier", - "src": "607:3:7" - } - ], - "functionName": { - "name": "mstore", - "nodeType": "YulIdentifier", - "src": "597:6:7" - }, - "nodeType": "YulFunctionCall", - "src": "597:14:7" - }, - "nodeType": "YulExpressionStatement", - "src": "597:14:7" - }, - { - "nodeType": "YulAssignment", - "src": "620:26:7", - "value": { - "arguments": [ - { - "kind": "number", - "nodeType": "YulLiteral", - "src": "638:1:7", - "type": "", - "value": "0" - }, - { - "kind": "number", - "nodeType": "YulLiteral", - "src": "641:4:7", - "type": "", - "value": "0x20" - } - ], - "functionName": { - "name": "keccak256", - "nodeType": "YulIdentifier", - "src": "628:9:7" - }, - "nodeType": "YulFunctionCall", - "src": "628:18:7" - }, - "variableNames": [ - { - "name": "data", - "nodeType": "YulIdentifier", - "src": "620:4:7" - } - ] - } - ] - }, - "name": "array_dataslot_string_storage", - "nodeType": "YulFunctionDefinition", - "parameters": [ - { - "name": "ptr", - "nodeType": "YulTypedName", - "src": "570:3:7", - "type": "" - } - ], - "returnVariables": [ - { - "name": "data", - "nodeType": "YulTypedName", - "src": "578:4:7", - "type": "" - } - ], - "src": "531:121:7" - }, - { - "body": { - "nodeType": "YulBlock", - "src": "738:464:7", - "statements": [ - { - "body": { - "nodeType": "YulBlock", - "src": "771:425:7", - "statements": [ - { - "nodeType": "YulVariableDeclaration", - "src": "785:11:7", - "value": { - "kind": "number", - "nodeType": "YulLiteral", - "src": "795:1:7", - "type": "", - "value": "0" - }, - "variables": [ - { - "name": "_1", - "nodeType": "YulTypedName", - "src": "789:2:7", - "type": "" - } - ] - }, - { - "expression": { - "arguments": [ - { - "name": "_1", - "nodeType": "YulIdentifier", - "src": "816:2:7" - }, - { - "name": "array", - "nodeType": "YulIdentifier", - "src": "820:5:7" - } - ], - "functionName": { - "name": "mstore", - "nodeType": "YulIdentifier", - "src": "809:6:7" - }, - "nodeType": "YulFunctionCall", - "src": "809:17:7" - }, - "nodeType": "YulExpressionStatement", - "src": "809:17:7" - }, - { - "nodeType": "YulVariableDeclaration", - "src": "839:31:7", - "value": { - "arguments": [ - { - "name": "_1", - "nodeType": "YulIdentifier", - "src": "861:2:7" - }, - { - "kind": "number", - "nodeType": "YulLiteral", - "src": "865:4:7", - "type": "", - "value": "0x20" - } - ], - "functionName": { - "name": "keccak256", - "nodeType": "YulIdentifier", - "src": "851:9:7" - }, - "nodeType": "YulFunctionCall", - "src": "851:19:7" - }, - "variables": [ - { - "name": "data", - "nodeType": "YulTypedName", - "src": "843:4:7", - "type": "" - } - ] - }, - { - "nodeType": "YulVariableDeclaration", - "src": "883:57:7", - "value": { - "arguments": [ - { - "name": "data", - "nodeType": "YulIdentifier", - "src": "906:4:7" - }, - { - "arguments": [ - { - "kind": "number", - "nodeType": "YulLiteral", - "src": "916:1:7", - "type": "", - "value": "5" - }, - { - "arguments": [ - { - "name": "startIndex", - "nodeType": "YulIdentifier", - "src": "923:10:7" - }, - { - "kind": "number", - "nodeType": "YulLiteral", - "src": "935:2:7", - "type": "", - "value": "31" - } - ], - "functionName": { - "name": "add", - "nodeType": "YulIdentifier", - "src": "919:3:7" - }, - "nodeType": "YulFunctionCall", - "src": "919:19:7" - } - ], - "functionName": { - "name": "shr", - "nodeType": "YulIdentifier", - "src": "912:3:7" - }, - "nodeType": "YulFunctionCall", - "src": "912:27:7" - } - ], - "functionName": { - "name": "add", - "nodeType": "YulIdentifier", - "src": "902:3:7" - }, - "nodeType": "YulFunctionCall", - "src": "902:38:7" - }, - "variables": [ - { - "name": "deleteStart", - "nodeType": "YulTypedName", - "src": "887:11:7", - "type": "" - } - ] - }, - { - "body": { - "nodeType": "YulBlock", - "src": "977:23:7", - "statements": [ - { - "nodeType": "YulAssignment", - "src": "979:19:7", - "value": { - "name": "data", - "nodeType": "YulIdentifier", - "src": "994:4:7" - }, - "variableNames": [ - { - "name": "deleteStart", - "nodeType": "YulIdentifier", - "src": "979:11:7" - } - ] - } - ] - }, - "condition": { - "arguments": [ - { - "name": "startIndex", - "nodeType": "YulIdentifier", - "src": "959:10:7" - }, - { - "kind": "number", - "nodeType": "YulLiteral", - "src": "971:4:7", - "type": "", - "value": "0x20" - } - ], - "functionName": { - "name": "lt", - "nodeType": "YulIdentifier", - "src": "956:2:7" - }, - "nodeType": "YulFunctionCall", - "src": "956:20:7" - }, - "nodeType": "YulIf", - "src": "953:47:7" - }, - { - "nodeType": "YulVariableDeclaration", - "src": "1013:41:7", - "value": { - "arguments": [ - { - "name": "data", - "nodeType": "YulIdentifier", - "src": "1027:4:7" - }, - { - "arguments": [ - { - "kind": "number", - "nodeType": "YulLiteral", - "src": "1037:1:7", - "type": "", - "value": "5" - }, - { - "arguments": [ - { - "name": "len", - "nodeType": "YulIdentifier", - "src": "1044:3:7" - }, - { - "kind": "number", - "nodeType": "YulLiteral", - "src": "1049:2:7", - "type": "", - "value": "31" - } - ], - "functionName": { - "name": "add", - "nodeType": "YulIdentifier", - "src": "1040:3:7" - }, - "nodeType": "YulFunctionCall", - "src": "1040:12:7" - } - ], - "functionName": { - "name": "shr", - "nodeType": "YulIdentifier", - "src": "1033:3:7" - }, - "nodeType": "YulFunctionCall", - "src": "1033:20:7" - } - ], - "functionName": { - "name": "add", - "nodeType": "YulIdentifier", - "src": "1023:3:7" - }, - "nodeType": "YulFunctionCall", - "src": "1023:31:7" - }, - "variables": [ - { - "name": "_2", - "nodeType": "YulTypedName", - "src": "1017:2:7", - "type": "" - } - ] - }, - { - "nodeType": "YulVariableDeclaration", - "src": "1067:24:7", - "value": { - "name": "deleteStart", - "nodeType": "YulIdentifier", - "src": "1080:11:7" - }, - "variables": [ - { - "name": "start", - "nodeType": "YulTypedName", - "src": "1071:5:7", - "type": "" - } - ] - }, - { - "body": { - "nodeType": "YulBlock", - "src": "1165:21:7", - "statements": [ - { - "expression": { - "arguments": [ - { - "name": "start", - "nodeType": "YulIdentifier", - "src": "1174:5:7" - }, - { - "name": "_1", - "nodeType": "YulIdentifier", - "src": "1181:2:7" - } - ], - "functionName": { - "name": "sstore", - "nodeType": "YulIdentifier", - "src": "1167:6:7" - }, - "nodeType": "YulFunctionCall", - "src": "1167:17:7" - }, - "nodeType": "YulExpressionStatement", - "src": "1167:17:7" - } - ] - }, - "condition": { - "arguments": [ - { - "name": "start", - "nodeType": "YulIdentifier", - "src": "1115:5:7" - }, - { - "name": "_2", - "nodeType": "YulIdentifier", - "src": "1122:2:7" - } - ], - "functionName": { - "name": "lt", - "nodeType": "YulIdentifier", - "src": "1112:2:7" - }, - "nodeType": "YulFunctionCall", - "src": "1112:13:7" - }, - "nodeType": "YulForLoop", - "post": { - "nodeType": "YulBlock", - "src": "1126:26:7", - "statements": [ - { - "nodeType": "YulAssignment", - "src": "1128:22:7", - "value": { - "arguments": [ - { - "name": "start", - "nodeType": "YulIdentifier", - "src": "1141:5:7" - }, - { - "kind": "number", - "nodeType": "YulLiteral", - "src": "1148:1:7", - "type": "", - "value": "1" - } - ], - "functionName": { - "name": "add", - "nodeType": "YulIdentifier", - "src": "1137:3:7" - }, - "nodeType": "YulFunctionCall", - "src": "1137:13:7" - }, - "variableNames": [ - { - "name": "start", - "nodeType": "YulIdentifier", - "src": "1128:5:7" - } - ] - } - ] - }, - "pre": { - "nodeType": "YulBlock", - "src": "1108:3:7", - "statements": [] - }, - "src": "1104:82:7" - } - ] - }, - "condition": { - "arguments": [ - { - "name": "len", - "nodeType": "YulIdentifier", - "src": "754:3:7" - }, - { - "kind": "number", - "nodeType": "YulLiteral", - "src": "759:2:7", - "type": "", - "value": "31" - } - ], - "functionName": { - "name": "gt", - "nodeType": "YulIdentifier", - "src": "751:2:7" - }, - "nodeType": "YulFunctionCall", - "src": "751:11:7" - }, - "nodeType": "YulIf", - "src": "748:448:7" - } - ] - }, - "name": "clean_up_bytearray_end_slots_string_storage", - "nodeType": "YulFunctionDefinition", - "parameters": [ - { - "name": "array", - "nodeType": "YulTypedName", - "src": "710:5:7", - "type": "" - }, - { - "name": "len", - "nodeType": "YulTypedName", - "src": "717:3:7", - "type": "" - }, - { - "name": "startIndex", - "nodeType": "YulTypedName", - "src": "722:10:7", - "type": "" - } - ], - "src": "657:545:7" - }, - { - "body": { - "nodeType": "YulBlock", - "src": "1292:81:7", - "statements": [ - { - "nodeType": "YulAssignment", - "src": "1302:65:7", - "value": { - "arguments": [ - { - "arguments": [ - { - "name": "data", - "nodeType": "YulIdentifier", - "src": "1317:4:7" - }, - { - "arguments": [ - { - "arguments": [ - { - "arguments": [ - { - "kind": "number", - "nodeType": "YulLiteral", - "src": "1335:1:7", - "type": "", - "value": "3" - }, - { - "name": "len", - "nodeType": "YulIdentifier", - "src": "1338:3:7" - } - ], - "functionName": { - "name": "shl", - "nodeType": "YulIdentifier", - "src": "1331:3:7" - }, - "nodeType": "YulFunctionCall", - "src": "1331:11:7" - }, - { - "arguments": [ - { - "kind": "number", - "nodeType": "YulLiteral", - "src": "1348:1:7", - "type": "", - "value": "0" - } - ], - "functionName": { - "name": "not", - "nodeType": "YulIdentifier", - "src": "1344:3:7" - }, - "nodeType": "YulFunctionCall", - "src": "1344:6:7" - } - ], - "functionName": { - "name": "shr", - "nodeType": "YulIdentifier", - "src": "1327:3:7" - }, - "nodeType": "YulFunctionCall", - "src": "1327:24:7" - } - ], - "functionName": { - "name": "not", - "nodeType": "YulIdentifier", - "src": "1323:3:7" - }, - "nodeType": "YulFunctionCall", - "src": "1323:29:7" - } - ], - "functionName": { - "name": "and", - "nodeType": "YulIdentifier", - "src": "1313:3:7" - }, - "nodeType": "YulFunctionCall", - "src": "1313:40:7" - }, - { - "arguments": [ - { - "kind": "number", - "nodeType": "YulLiteral", - "src": "1359:1:7", - "type": "", - "value": "1" - }, - { - "name": "len", - "nodeType": "YulIdentifier", - "src": "1362:3:7" - } - ], - "functionName": { - "name": "shl", - "nodeType": "YulIdentifier", - "src": "1355:3:7" - }, - "nodeType": "YulFunctionCall", - "src": "1355:11:7" - } - ], - "functionName": { - "name": "or", - "nodeType": "YulIdentifier", - "src": "1310:2:7" - }, - "nodeType": "YulFunctionCall", - "src": "1310:57:7" - }, - "variableNames": [ - { - "name": "used", - "nodeType": "YulIdentifier", - "src": "1302:4:7" - } - ] - } - ] - }, - "name": "extract_used_part_and_set_length_of_short_byte_array", - "nodeType": "YulFunctionDefinition", - "parameters": [ - { - "name": "data", - "nodeType": "YulTypedName", - "src": "1269:4:7", - "type": "" - }, - { - "name": "len", - "nodeType": "YulTypedName", - "src": "1275:3:7", - "type": "" - } - ], - "returnVariables": [ - { - "name": "used", - "nodeType": "YulTypedName", - "src": "1283:4:7", - "type": "" - } - ], - "src": "1207:166:7" - }, - { - "body": { - "nodeType": "YulBlock", - "src": "1474:1256:7", - "statements": [ - { - "nodeType": "YulVariableDeclaration", - "src": "1484:24:7", - "value": { - "arguments": [ - { - "name": "src", - "nodeType": "YulIdentifier", - "src": "1504:3:7" - } - ], - "functionName": { - "name": "mload", - "nodeType": "YulIdentifier", - "src": "1498:5:7" - }, - "nodeType": "YulFunctionCall", - "src": "1498:10:7" - }, - "variables": [ - { - "name": "newLen", - "nodeType": "YulTypedName", - "src": "1488:6:7", - "type": "" - } - ] - }, - { - "body": { - "nodeType": "YulBlock", - "src": "1551:22:7", - "statements": [ - { - "expression": { - "arguments": [], - "functionName": { - "name": "panic_error_0x41", - "nodeType": "YulIdentifier", - "src": "1553:16:7" - }, - "nodeType": "YulFunctionCall", - "src": "1553:18:7" - }, - "nodeType": "YulExpressionStatement", - "src": "1553:18:7" - } - ] - }, - "condition": { - "arguments": [ - { - "name": "newLen", - "nodeType": "YulIdentifier", - "src": "1523:6:7" - }, - { - "arguments": [ - { - "arguments": [ - { - "kind": "number", - "nodeType": "YulLiteral", - "src": "1539:2:7", - "type": "", - "value": "64" - }, - { - "kind": "number", - "nodeType": "YulLiteral", - "src": "1543:1:7", - "type": "", - "value": "1" - } - ], - "functionName": { - "name": "shl", - "nodeType": "YulIdentifier", - "src": "1535:3:7" - }, - "nodeType": "YulFunctionCall", - "src": "1535:10:7" - }, - { - "kind": "number", - "nodeType": "YulLiteral", - "src": "1547:1:7", - "type": "", - "value": "1" - } - ], - "functionName": { - "name": "sub", - "nodeType": "YulIdentifier", - "src": "1531:3:7" - }, - "nodeType": "YulFunctionCall", - "src": "1531:18:7" - } - ], - "functionName": { - "name": "gt", - "nodeType": "YulIdentifier", - "src": "1520:2:7" - }, - "nodeType": "YulFunctionCall", - "src": "1520:30:7" - }, - "nodeType": "YulIf", - "src": "1517:56:7" - }, - { - "expression": { - "arguments": [ - { - "name": "slot", - "nodeType": "YulIdentifier", - "src": "1626:4:7" - }, - { - "arguments": [ - { - "arguments": [ - { - "name": "slot", - "nodeType": "YulIdentifier", - "src": "1664:4:7" - } - ], - "functionName": { - "name": "sload", - "nodeType": "YulIdentifier", - "src": "1658:5:7" - }, - "nodeType": "YulFunctionCall", - "src": "1658:11:7" - } - ], - "functionName": { - "name": "extract_byte_array_length", - "nodeType": "YulIdentifier", - "src": "1632:25:7" - }, - "nodeType": "YulFunctionCall", - "src": "1632:38:7" - }, - { - "name": "newLen", - "nodeType": "YulIdentifier", - "src": "1672:6:7" - } - ], - "functionName": { - "name": "clean_up_bytearray_end_slots_string_storage", - "nodeType": "YulIdentifier", - "src": "1582:43:7" - }, - "nodeType": "YulFunctionCall", - "src": "1582:97:7" - }, - "nodeType": "YulExpressionStatement", - "src": "1582:97:7" - }, - { - "nodeType": "YulVariableDeclaration", - "src": "1688:18:7", - "value": { - "kind": "number", - "nodeType": "YulLiteral", - "src": "1705:1:7", - "type": "", - "value": "0" - }, - "variables": [ - { - "name": "srcOffset", - "nodeType": "YulTypedName", - "src": "1692:9:7", - "type": "" - } - ] - }, - { - "nodeType": "YulVariableDeclaration", - "src": "1715:23:7", - "value": { - "kind": "number", - "nodeType": "YulLiteral", - "src": "1734:4:7", - "type": "", - "value": "0x20" - }, - "variables": [ - { - "name": "srcOffset_1", - "nodeType": "YulTypedName", - "src": "1719:11:7", - "type": "" - } - ] - }, - { - "nodeType": "YulAssignment", - "src": "1747:24:7", - "value": { - "name": "srcOffset_1", - "nodeType": "YulIdentifier", - "src": "1760:11:7" - }, - "variableNames": [ - { - "name": "srcOffset", - "nodeType": "YulIdentifier", - "src": "1747:9:7" - } - ] - }, - { - "cases": [ - { - "body": { - "nodeType": "YulBlock", - "src": "1817:656:7", - "statements": [ - { - "nodeType": "YulVariableDeclaration", - "src": "1831:35:7", - "value": { - "arguments": [ - { - "name": "newLen", - "nodeType": "YulIdentifier", - "src": "1850:6:7" - }, - { - "arguments": [ - { - "kind": "number", - "nodeType": "YulLiteral", - "src": "1862:2:7", - "type": "", - "value": "31" - } - ], - "functionName": { - "name": "not", - "nodeType": "YulIdentifier", - "src": "1858:3:7" - }, - "nodeType": "YulFunctionCall", - "src": "1858:7:7" - } - ], - "functionName": { - "name": "and", - "nodeType": "YulIdentifier", - "src": "1846:3:7" - }, - "nodeType": "YulFunctionCall", - "src": "1846:20:7" - }, - "variables": [ - { - "name": "loopEnd", - "nodeType": "YulTypedName", - "src": "1835:7:7", - "type": "" - } - ] - }, - { - "nodeType": "YulVariableDeclaration", - "src": "1879:49:7", - "value": { - "arguments": [ - { - "name": "slot", - "nodeType": "YulIdentifier", - "src": "1923:4:7" - } - ], - "functionName": { - "name": "array_dataslot_string_storage", - "nodeType": "YulIdentifier", - "src": "1893:29:7" - }, - "nodeType": "YulFunctionCall", - "src": "1893:35:7" - }, - "variables": [ - { - "name": "dstPtr", - "nodeType": "YulTypedName", - "src": "1883:6:7", - "type": "" - } - ] - }, - { - "nodeType": "YulVariableDeclaration", - "src": "1941:10:7", - "value": { - "kind": "number", - "nodeType": "YulLiteral", - "src": "1950:1:7", - "type": "", - "value": "0" - }, - "variables": [ - { - "name": "i", - "nodeType": "YulTypedName", - "src": "1945:1:7", - "type": "" - } - ] - }, - { - "body": { - "nodeType": "YulBlock", - "src": "2028:172:7", - "statements": [ - { - "expression": { - "arguments": [ - { - "name": "dstPtr", - "nodeType": "YulIdentifier", - "src": "2053:6:7" - }, - { - "arguments": [ - { - "arguments": [ - { - "name": "src", - "nodeType": "YulIdentifier", - "src": "2071:3:7" - }, - { - "name": "srcOffset", - "nodeType": "YulIdentifier", - "src": "2076:9:7" - } - ], - "functionName": { - "name": "add", - "nodeType": "YulIdentifier", - "src": "2067:3:7" - }, - "nodeType": "YulFunctionCall", - "src": "2067:19:7" - } - ], - "functionName": { - "name": "mload", - "nodeType": "YulIdentifier", - "src": "2061:5:7" - }, - "nodeType": "YulFunctionCall", - "src": "2061:26:7" - } - ], - "functionName": { - "name": "sstore", - "nodeType": "YulIdentifier", - "src": "2046:6:7" - }, - "nodeType": "YulFunctionCall", - "src": "2046:42:7" - }, - "nodeType": "YulExpressionStatement", - "src": "2046:42:7" - }, - { - "nodeType": "YulAssignment", - "src": "2105:24:7", - "value": { - "arguments": [ - { - "name": "dstPtr", - "nodeType": "YulIdentifier", - "src": "2119:6:7" - }, - { - "kind": "number", - "nodeType": "YulLiteral", - "src": "2127:1:7", - "type": "", - "value": "1" - } - ], - "functionName": { - "name": "add", - "nodeType": "YulIdentifier", - "src": "2115:3:7" - }, - "nodeType": "YulFunctionCall", - "src": "2115:14:7" - }, - "variableNames": [ - { - "name": "dstPtr", - "nodeType": "YulIdentifier", - "src": "2105:6:7" - } - ] - }, - { - "nodeType": "YulAssignment", - "src": "2146:40:7", - "value": { - "arguments": [ - { - "name": "srcOffset", - "nodeType": "YulIdentifier", - "src": "2163:9:7" - }, - { - "name": "srcOffset_1", - "nodeType": "YulIdentifier", - "src": "2174:11:7" - } - ], - "functionName": { - "name": "add", - "nodeType": "YulIdentifier", - "src": "2159:3:7" - }, - "nodeType": "YulFunctionCall", - "src": "2159:27:7" - }, - "variableNames": [ - { - "name": "srcOffset", - "nodeType": "YulIdentifier", - "src": "2146:9:7" - } - ] - } - ] - }, - "condition": { - "arguments": [ - { - "name": "i", - "nodeType": "YulIdentifier", - "src": "1975:1:7" - }, - { - "name": "loopEnd", - "nodeType": "YulIdentifier", - "src": "1978:7:7" - } - ], - "functionName": { - "name": "lt", - "nodeType": "YulIdentifier", - "src": "1972:2:7" - }, - "nodeType": "YulFunctionCall", - "src": "1972:14:7" - }, - "nodeType": "YulForLoop", - "post": { - "nodeType": "YulBlock", - "src": "1987:28:7", - "statements": [ - { - "nodeType": "YulAssignment", - "src": "1989:24:7", - "value": { - "arguments": [ - { - "name": "i", - "nodeType": "YulIdentifier", - "src": "1998:1:7" - }, - { - "name": "srcOffset_1", - "nodeType": "YulIdentifier", - "src": "2001:11:7" - } - ], - "functionName": { - "name": "add", - "nodeType": "YulIdentifier", - "src": "1994:3:7" - }, - "nodeType": "YulFunctionCall", - "src": "1994:19:7" - }, - "variableNames": [ - { - "name": "i", - "nodeType": "YulIdentifier", - "src": "1989:1:7" - } - ] - } - ] - }, - "pre": { - "nodeType": "YulBlock", - "src": "1968:3:7", - "statements": [] - }, - "src": "1964:236:7" - }, - { - "body": { - "nodeType": "YulBlock", - "src": "2248:166:7", - "statements": [ - { - "nodeType": "YulVariableDeclaration", - "src": "2266:43:7", - "value": { - "arguments": [ - { - "arguments": [ - { - "name": "src", - "nodeType": "YulIdentifier", - "src": "2293:3:7" - }, - { - "name": "srcOffset", - "nodeType": "YulIdentifier", - "src": "2298:9:7" - } - ], - "functionName": { - "name": "add", - "nodeType": "YulIdentifier", - "src": "2289:3:7" - }, - "nodeType": "YulFunctionCall", - "src": "2289:19:7" - } - ], - "functionName": { - "name": "mload", - "nodeType": "YulIdentifier", - "src": "2283:5:7" - }, - "nodeType": "YulFunctionCall", - "src": "2283:26:7" - }, - "variables": [ - { - "name": "lastValue", - "nodeType": "YulTypedName", - "src": "2270:9:7", - "type": "" - } - ] - }, - { - "expression": { - "arguments": [ - { - "name": "dstPtr", - "nodeType": "YulIdentifier", - "src": "2333:6:7" - }, - { - "arguments": [ - { - "name": "lastValue", - "nodeType": "YulIdentifier", - "src": "2345:9:7" - }, - { - "arguments": [ - { - "arguments": [ - { - "arguments": [ - { - "arguments": [ - { - "kind": "number", - "nodeType": "YulLiteral", - "src": "2372:1:7", - "type": "", - "value": "3" - }, - { - "name": "newLen", - "nodeType": "YulIdentifier", - "src": "2375:6:7" - } - ], - "functionName": { - "name": "shl", - "nodeType": "YulIdentifier", - "src": "2368:3:7" - }, - "nodeType": "YulFunctionCall", - "src": "2368:14:7" - }, - { - "kind": "number", - "nodeType": "YulLiteral", - "src": "2384:3:7", - "type": "", - "value": "248" - } - ], - "functionName": { - "name": "and", - "nodeType": "YulIdentifier", - "src": "2364:3:7" - }, - "nodeType": "YulFunctionCall", - "src": "2364:24:7" - }, - { - "arguments": [ - { - "kind": "number", - "nodeType": "YulLiteral", - "src": "2394:1:7", - "type": "", - "value": "0" - } - ], - "functionName": { - "name": "not", - "nodeType": "YulIdentifier", - "src": "2390:3:7" - }, - "nodeType": "YulFunctionCall", - "src": "2390:6:7" - } - ], - "functionName": { - "name": "shr", - "nodeType": "YulIdentifier", - "src": "2360:3:7" - }, - "nodeType": "YulFunctionCall", - "src": "2360:37:7" - } - ], - "functionName": { - "name": "not", - "nodeType": "YulIdentifier", - "src": "2356:3:7" - }, - "nodeType": "YulFunctionCall", - "src": "2356:42:7" - } - ], - "functionName": { - "name": "and", - "nodeType": "YulIdentifier", - "src": "2341:3:7" - }, - "nodeType": "YulFunctionCall", - "src": "2341:58:7" - } - ], - "functionName": { - "name": "sstore", - "nodeType": "YulIdentifier", - "src": "2326:6:7" - }, - "nodeType": "YulFunctionCall", - "src": "2326:74:7" - }, - "nodeType": "YulExpressionStatement", - "src": "2326:74:7" - } - ] - }, - "condition": { - "arguments": [ - { - "name": "loopEnd", - "nodeType": "YulIdentifier", - "src": "2219:7:7" - }, - { - "name": "newLen", - "nodeType": "YulIdentifier", - "src": "2228:6:7" - } - ], - "functionName": { - "name": "lt", - "nodeType": "YulIdentifier", - "src": "2216:2:7" - }, - "nodeType": "YulFunctionCall", - "src": "2216:19:7" - }, - "nodeType": "YulIf", - "src": "2213:201:7" - }, - { - "expression": { - "arguments": [ - { - "name": "slot", - "nodeType": "YulIdentifier", - "src": "2434:4:7" - }, - { - "arguments": [ - { - "arguments": [ - { - "kind": "number", - "nodeType": "YulLiteral", - "src": "2448:1:7", - "type": "", - "value": "1" - }, - { - "name": "newLen", - "nodeType": "YulIdentifier", - "src": "2451:6:7" - } - ], - "functionName": { - "name": "shl", - "nodeType": "YulIdentifier", - "src": "2444:3:7" - }, - "nodeType": "YulFunctionCall", - "src": "2444:14:7" - }, - { - "kind": "number", - "nodeType": "YulLiteral", - "src": "2460:1:7", - "type": "", - "value": "1" - } - ], - "functionName": { - "name": "add", - "nodeType": "YulIdentifier", - "src": "2440:3:7" - }, - "nodeType": "YulFunctionCall", - "src": "2440:22:7" - } - ], - "functionName": { - "name": "sstore", - "nodeType": "YulIdentifier", - "src": "2427:6:7" - }, - "nodeType": "YulFunctionCall", - "src": "2427:36:7" - }, - "nodeType": "YulExpressionStatement", - "src": "2427:36:7" - } - ] - }, - "nodeType": "YulCase", - "src": "1810:663:7", - "value": { - "kind": "number", - "nodeType": "YulLiteral", - "src": "1815:1:7", - "type": "", - "value": "1" - } - }, - { - "body": { - "nodeType": "YulBlock", - "src": "2490:234:7", - "statements": [ - { - "nodeType": "YulVariableDeclaration", - "src": "2504:14:7", - "value": { - "kind": "number", - "nodeType": "YulLiteral", - "src": "2517:1:7", - "type": "", - "value": "0" - }, - "variables": [ - { - "name": "value", - "nodeType": "YulTypedName", - "src": "2508:5:7", - "type": "" - } - ] - }, - { - "body": { - "nodeType": "YulBlock", - "src": "2553:67:7", - "statements": [ - { - "nodeType": "YulAssignment", - "src": "2571:35:7", - "value": { - "arguments": [ - { - "arguments": [ - { - "name": "src", - "nodeType": "YulIdentifier", - "src": "2590:3:7" - }, - { - "name": "srcOffset", - "nodeType": "YulIdentifier", - "src": "2595:9:7" - } - ], - "functionName": { - "name": "add", - "nodeType": "YulIdentifier", - "src": "2586:3:7" - }, - "nodeType": "YulFunctionCall", - "src": "2586:19:7" - } - ], - "functionName": { - "name": "mload", - "nodeType": "YulIdentifier", - "src": "2580:5:7" - }, - "nodeType": "YulFunctionCall", - "src": "2580:26:7" - }, - "variableNames": [ - { - "name": "value", - "nodeType": "YulIdentifier", - "src": "2571:5:7" - } - ] - } - ] - }, - "condition": { - "name": "newLen", - "nodeType": "YulIdentifier", - "src": "2534:6:7" - }, - "nodeType": "YulIf", - "src": "2531:89:7" - }, - { - "expression": { - "arguments": [ - { - "name": "slot", - "nodeType": "YulIdentifier", - "src": "2640:4:7" - }, - { - "arguments": [ - { - "name": "value", - "nodeType": "YulIdentifier", - "src": "2699:5:7" - }, - { - "name": "newLen", - "nodeType": "YulIdentifier", - "src": "2706:6:7" - } - ], - "functionName": { - "name": "extract_used_part_and_set_length_of_short_byte_array", - "nodeType": "YulIdentifier", - "src": "2646:52:7" - }, - "nodeType": "YulFunctionCall", - "src": "2646:67:7" - } - ], - "functionName": { - "name": "sstore", - "nodeType": "YulIdentifier", - "src": "2633:6:7" - }, - "nodeType": "YulFunctionCall", - "src": "2633:81:7" - }, - "nodeType": "YulExpressionStatement", - "src": "2633:81:7" - } - ] - }, - "nodeType": "YulCase", - "src": "2482:242:7", - "value": "default" - } - ], - "expression": { - "arguments": [ - { - "name": "newLen", - "nodeType": "YulIdentifier", - "src": "1790:6:7" - }, - { - "kind": "number", - "nodeType": "YulLiteral", - "src": "1798:2:7", - "type": "", - "value": "31" - } - ], - "functionName": { - "name": "gt", - "nodeType": "YulIdentifier", - "src": "1787:2:7" - }, - "nodeType": "YulFunctionCall", - "src": "1787:14:7" - }, - "nodeType": "YulSwitch", - "src": "1780:944:7" - } - ] - }, - "name": "copy_byte_array_to_storage_from_t_string_memory_ptr_to_t_string_storage", - "nodeType": "YulFunctionDefinition", - "parameters": [ - { - "name": "slot", - "nodeType": "YulTypedName", - "src": "1459:4:7", - "type": "" - }, - { - "name": "src", - "nodeType": "YulTypedName", - "src": "1465:3:7", - "type": "" - } - ], - "src": "1378:1352:7" - }, - { - "body": { - "nodeType": "YulBlock", - "src": "2767:95:7", - "statements": [ - { - "expression": { - "arguments": [ - { - "kind": "number", - "nodeType": "YulLiteral", - "src": "2784:1:7", - "type": "", - "value": "0" - }, - { - "arguments": [ - { - "kind": "number", - "nodeType": "YulLiteral", - "src": "2791:3:7", - "type": "", - "value": "224" - }, - { - "kind": "number", - "nodeType": "YulLiteral", - "src": "2796:10:7", - "type": "", - "value": "0x4e487b71" - } - ], - "functionName": { - "name": "shl", - "nodeType": "YulIdentifier", - "src": "2787:3:7" - }, - "nodeType": "YulFunctionCall", - "src": "2787:20:7" - } - ], - "functionName": { - "name": "mstore", - "nodeType": "YulIdentifier", - "src": "2777:6:7" - }, - "nodeType": "YulFunctionCall", - "src": "2777:31:7" - }, - "nodeType": "YulExpressionStatement", - "src": "2777:31:7" - }, - { - "expression": { - "arguments": [ - { - "kind": "number", - "nodeType": "YulLiteral", - "src": "2824:1:7", - "type": "", - "value": "4" - }, - { - "kind": "number", - "nodeType": "YulLiteral", - "src": "2827:4:7", - "type": "", - "value": "0x11" - } - ], - "functionName": { - "name": "mstore", - "nodeType": "YulIdentifier", - "src": "2817:6:7" - }, - "nodeType": "YulFunctionCall", - "src": "2817:15:7" - }, - "nodeType": "YulExpressionStatement", - "src": "2817:15:7" - }, - { - "expression": { - "arguments": [ - { - "kind": "number", - "nodeType": "YulLiteral", - "src": "2848:1:7", - "type": "", - "value": "0" - }, - { - "kind": "number", - "nodeType": "YulLiteral", - "src": "2851:4:7", - "type": "", - "value": "0x24" - } - ], - "functionName": { - "name": "revert", - "nodeType": "YulIdentifier", - "src": "2841:6:7" - }, - "nodeType": "YulFunctionCall", - "src": "2841:15:7" - }, - "nodeType": "YulExpressionStatement", - "src": "2841:15:7" - } - ] - }, - "name": "panic_error_0x11", - "nodeType": "YulFunctionDefinition", - "src": "2735:127:7" - }, - { - "body": { - "nodeType": "YulBlock", - "src": "2931:358:7", - "statements": [ - { - "nodeType": "YulVariableDeclaration", - "src": "2941:16:7", - "value": { - "kind": "number", - "nodeType": "YulLiteral", - "src": "2956:1:7", - "type": "", - "value": "1" - }, - "variables": [ - { - "name": "power_1", - "nodeType": "YulTypedName", - "src": "2945:7:7", - "type": "" - } - ] - }, - { - "nodeType": "YulAssignment", - "src": "2966:16:7", - "value": { - "name": "power_1", - "nodeType": "YulIdentifier", - "src": "2975:7:7" - }, - "variableNames": [ - { - "name": "power", - "nodeType": "YulIdentifier", - "src": "2966:5:7" - } - ] - }, - { - "nodeType": "YulAssignment", - "src": "2991:13:7", - "value": { - "name": "_base", - "nodeType": "YulIdentifier", - "src": "2999:5:7" - }, - "variableNames": [ - { - "name": "base", - "nodeType": "YulIdentifier", - "src": "2991:4:7" - } - ] - }, - { - "body": { - "nodeType": "YulBlock", - "src": "3055:228:7", - "statements": [ - { - "body": { - "nodeType": "YulBlock", - "src": "3100:22:7", - "statements": [ - { - "expression": { - "arguments": [], - "functionName": { - "name": "panic_error_0x11", - "nodeType": "YulIdentifier", - "src": "3102:16:7" - }, - "nodeType": "YulFunctionCall", - "src": "3102:18:7" - }, - "nodeType": "YulExpressionStatement", - "src": "3102:18:7" - } - ] - }, - "condition": { - "arguments": [ - { - "name": "base", - "nodeType": "YulIdentifier", - "src": "3075:4:7" - }, - { - "arguments": [ - { - "arguments": [ - { - "kind": "number", - "nodeType": "YulLiteral", - "src": "3089:1:7", - "type": "", - "value": "0" - } - ], - "functionName": { - "name": "not", - "nodeType": "YulIdentifier", - "src": "3085:3:7" - }, - "nodeType": "YulFunctionCall", - "src": "3085:6:7" - }, - { - "name": "base", - "nodeType": "YulIdentifier", - "src": "3093:4:7" - } - ], - "functionName": { - "name": "div", - "nodeType": "YulIdentifier", - "src": "3081:3:7" - }, - "nodeType": "YulFunctionCall", - "src": "3081:17:7" - } - ], - "functionName": { - "name": "gt", - "nodeType": "YulIdentifier", - "src": "3072:2:7" - }, - "nodeType": "YulFunctionCall", - "src": "3072:27:7" - }, - "nodeType": "YulIf", - "src": "3069:53:7" - }, - { - "body": { - "nodeType": "YulBlock", - "src": "3161:29:7", - "statements": [ - { - "nodeType": "YulAssignment", - "src": "3163:25:7", - "value": { - "arguments": [ - { - "name": "power", - "nodeType": "YulIdentifier", - "src": "3176:5:7" - }, - { - "name": "base", - "nodeType": "YulIdentifier", - "src": "3183:4:7" - } - ], - "functionName": { - "name": "mul", - "nodeType": "YulIdentifier", - "src": "3172:3:7" - }, - "nodeType": "YulFunctionCall", - "src": "3172:16:7" - }, - "variableNames": [ - { - "name": "power", - "nodeType": "YulIdentifier", - "src": "3163:5:7" - } - ] - } - ] - }, - "condition": { - "arguments": [ - { - "name": "exponent", - "nodeType": "YulIdentifier", - "src": "3142:8:7" - }, - { - "name": "power_1", - "nodeType": "YulIdentifier", - "src": "3152:7:7" - } - ], - "functionName": { - "name": "and", - "nodeType": "YulIdentifier", - "src": "3138:3:7" - }, - "nodeType": "YulFunctionCall", - "src": "3138:22:7" - }, - "nodeType": "YulIf", - "src": "3135:55:7" - }, - { - "nodeType": "YulAssignment", - "src": "3203:23:7", - "value": { - "arguments": [ - { - "name": "base", - "nodeType": "YulIdentifier", - "src": "3215:4:7" - }, - { - "name": "base", - "nodeType": "YulIdentifier", - "src": "3221:4:7" - } - ], - "functionName": { - "name": "mul", - "nodeType": "YulIdentifier", - "src": "3211:3:7" - }, - "nodeType": "YulFunctionCall", - "src": "3211:15:7" - }, - "variableNames": [ - { - "name": "base", - "nodeType": "YulIdentifier", - "src": "3203:4:7" - } - ] - }, - { - "nodeType": "YulAssignment", - "src": "3239:34:7", - "value": { - "arguments": [ - { - "name": "power_1", - "nodeType": "YulIdentifier", - "src": "3255:7:7" - }, - { - "name": "exponent", - "nodeType": "YulIdentifier", - "src": "3264:8:7" - } - ], - "functionName": { - "name": "shr", - "nodeType": "YulIdentifier", - "src": "3251:3:7" - }, - "nodeType": "YulFunctionCall", - "src": "3251:22:7" - }, - "variableNames": [ - { - "name": "exponent", - "nodeType": "YulIdentifier", - "src": "3239:8:7" - } - ] - } - ] - }, - "condition": { - "arguments": [ - { - "name": "exponent", - "nodeType": "YulIdentifier", - "src": "3024:8:7" - }, - { - "name": "power_1", - "nodeType": "YulIdentifier", - "src": "3034:7:7" - } - ], - "functionName": { - "name": "gt", - "nodeType": "YulIdentifier", - "src": "3021:2:7" - }, - "nodeType": "YulFunctionCall", - "src": "3021:21:7" - }, - "nodeType": "YulForLoop", - "post": { - "nodeType": "YulBlock", - "src": "3043:3:7", - "statements": [] - }, - "pre": { - "nodeType": "YulBlock", - "src": "3017:3:7", - "statements": [] - }, - "src": "3013:270:7" - } - ] - }, - "name": "checked_exp_helper", - "nodeType": "YulFunctionDefinition", - "parameters": [ - { - "name": "_base", - "nodeType": "YulTypedName", - "src": "2895:5:7", - "type": "" - }, - { - "name": "exponent", - "nodeType": "YulTypedName", - "src": "2902:8:7", - "type": "" - } - ], - "returnVariables": [ - { - "name": "power", - "nodeType": "YulTypedName", - "src": "2915:5:7", - "type": "" - }, - { - "name": "base", - "nodeType": "YulTypedName", - "src": "2922:4:7", - "type": "" - } - ], - "src": "2867:422:7" - }, - { - "body": { - "nodeType": "YulBlock", - "src": "3353:747:7", - "statements": [ - { - "body": { - "nodeType": "YulBlock", - "src": "3391:52:7", - "statements": [ - { - "nodeType": "YulAssignment", - "src": "3405:10:7", - "value": { - "kind": "number", - "nodeType": "YulLiteral", - "src": "3414:1:7", - "type": "", - "value": "1" - }, - "variableNames": [ - { - "name": "power", - "nodeType": "YulIdentifier", - "src": "3405:5:7" - } - ] - }, - { - "nodeType": "YulLeave", - "src": "3428:5:7" - } - ] - }, - "condition": { - "arguments": [ - { - "name": "exponent", - "nodeType": "YulIdentifier", - "src": "3373:8:7" - } - ], - "functionName": { - "name": "iszero", - "nodeType": "YulIdentifier", - "src": "3366:6:7" - }, - "nodeType": "YulFunctionCall", - "src": "3366:16:7" - }, - "nodeType": "YulIf", - "src": "3363:80:7" - }, - { - "body": { - "nodeType": "YulBlock", - "src": "3476:52:7", - "statements": [ - { - "nodeType": "YulAssignment", - "src": "3490:10:7", - "value": { - "kind": "number", - "nodeType": "YulLiteral", - "src": "3499:1:7", - "type": "", - "value": "0" - }, - "variableNames": [ - { - "name": "power", - "nodeType": "YulIdentifier", - "src": "3490:5:7" - } - ] - }, - { - "nodeType": "YulLeave", - "src": "3513:5:7" - } - ] - }, - "condition": { - "arguments": [ - { - "name": "base", - "nodeType": "YulIdentifier", - "src": "3462:4:7" - } - ], - "functionName": { - "name": "iszero", - "nodeType": "YulIdentifier", - "src": "3455:6:7" - }, - "nodeType": "YulFunctionCall", - "src": "3455:12:7" - }, - "nodeType": "YulIf", - "src": "3452:76:7" - }, - { - "cases": [ - { - "body": { - "nodeType": "YulBlock", - "src": "3564:52:7", - "statements": [ - { - "nodeType": "YulAssignment", - "src": "3578:10:7", - "value": { - "kind": "number", - "nodeType": "YulLiteral", - "src": "3587:1:7", - "type": "", - "value": "1" - }, - "variableNames": [ - { - "name": "power", - "nodeType": "YulIdentifier", - "src": "3578:5:7" - } - ] - }, - { - "nodeType": "YulLeave", - "src": "3601:5:7" - } - ] - }, - "nodeType": "YulCase", - "src": "3557:59:7", - "value": { - "kind": "number", - "nodeType": "YulLiteral", - "src": "3562:1:7", - "type": "", - "value": "1" - } - }, - { - "body": { - "nodeType": "YulBlock", - "src": "3632:123:7", - "statements": [ - { - "body": { - "nodeType": "YulBlock", - "src": "3667:22:7", - "statements": [ - { - "expression": { - "arguments": [], - "functionName": { - "name": "panic_error_0x11", - "nodeType": "YulIdentifier", - "src": "3669:16:7" - }, - "nodeType": "YulFunctionCall", - "src": "3669:18:7" - }, - "nodeType": "YulExpressionStatement", - "src": "3669:18:7" - } - ] - }, - "condition": { - "arguments": [ - { - "name": "exponent", - "nodeType": "YulIdentifier", - "src": "3652:8:7" - }, - { - "kind": "number", - "nodeType": "YulLiteral", - "src": "3662:3:7", - "type": "", - "value": "255" - } - ], - "functionName": { - "name": "gt", - "nodeType": "YulIdentifier", - "src": "3649:2:7" - }, - "nodeType": "YulFunctionCall", - "src": "3649:17:7" - }, - "nodeType": "YulIf", - "src": "3646:43:7" - }, - { - "nodeType": "YulAssignment", - "src": "3702:25:7", - "value": { - "arguments": [ - { - "name": "exponent", - "nodeType": "YulIdentifier", - "src": "3715:8:7" - }, - { - "kind": "number", - "nodeType": "YulLiteral", - "src": "3725:1:7", - "type": "", - "value": "1" - } - ], - "functionName": { - "name": "shl", - "nodeType": "YulIdentifier", - "src": "3711:3:7" - }, - "nodeType": "YulFunctionCall", - "src": "3711:16:7" - }, - "variableNames": [ - { - "name": "power", - "nodeType": "YulIdentifier", - "src": "3702:5:7" - } - ] - }, - { - "nodeType": "YulLeave", - "src": "3740:5:7" - } - ] - }, - "nodeType": "YulCase", - "src": "3625:130:7", - "value": { - "kind": "number", - "nodeType": "YulLiteral", - "src": "3630:1:7", - "type": "", - "value": "2" - } - } - ], - "expression": { - "name": "base", - "nodeType": "YulIdentifier", - "src": "3544:4:7" - }, - "nodeType": "YulSwitch", - "src": "3537:218:7" - }, - { - "body": { - "nodeType": "YulBlock", - "src": "3853:70:7", - "statements": [ - { - "nodeType": "YulAssignment", - "src": "3867:28:7", - "value": { - "arguments": [ - { - "name": "base", - "nodeType": "YulIdentifier", - "src": "3880:4:7" - }, - { - "name": "exponent", - "nodeType": "YulIdentifier", - "src": "3886:8:7" - } - ], - "functionName": { - "name": "exp", - "nodeType": "YulIdentifier", - "src": "3876:3:7" - }, - "nodeType": "YulFunctionCall", - "src": "3876:19:7" - }, - "variableNames": [ - { - "name": "power", - "nodeType": "YulIdentifier", - "src": "3867:5:7" - } - ] - }, - { - "nodeType": "YulLeave", - "src": "3908:5:7" - } - ] - }, - "condition": { - "arguments": [ - { - "arguments": [ - { - "arguments": [ - { - "name": "base", - "nodeType": "YulIdentifier", - "src": "3777:4:7" - }, - { - "kind": "number", - "nodeType": "YulLiteral", - "src": "3783:2:7", - "type": "", - "value": "11" - } - ], - "functionName": { - "name": "lt", - "nodeType": "YulIdentifier", - "src": "3774:2:7" - }, - "nodeType": "YulFunctionCall", - "src": "3774:12:7" - }, - { - "arguments": [ - { - "name": "exponent", - "nodeType": "YulIdentifier", - "src": "3791:8:7" - }, - { - "kind": "number", - "nodeType": "YulLiteral", - "src": "3801:2:7", - "type": "", - "value": "78" - } - ], - "functionName": { - "name": "lt", - "nodeType": "YulIdentifier", - "src": "3788:2:7" - }, - "nodeType": "YulFunctionCall", - "src": "3788:16:7" - } - ], - "functionName": { - "name": "and", - "nodeType": "YulIdentifier", - "src": "3770:3:7" - }, - "nodeType": "YulFunctionCall", - "src": "3770:35:7" - }, - { - "arguments": [ - { - "arguments": [ - { - "name": "base", - "nodeType": "YulIdentifier", - "src": "3814:4:7" - }, - { - "kind": "number", - "nodeType": "YulLiteral", - "src": "3820:3:7", - "type": "", - "value": "307" - } - ], - "functionName": { - "name": "lt", - "nodeType": "YulIdentifier", - "src": "3811:2:7" - }, - "nodeType": "YulFunctionCall", - "src": "3811:13:7" - }, - { - "arguments": [ - { - "name": "exponent", - "nodeType": "YulIdentifier", - "src": "3829:8:7" - }, - { - "kind": "number", - "nodeType": "YulLiteral", - "src": "3839:2:7", - "type": "", - "value": "32" - } - ], - "functionName": { - "name": "lt", - "nodeType": "YulIdentifier", - "src": "3826:2:7" - }, - "nodeType": "YulFunctionCall", - "src": "3826:16:7" - } - ], - "functionName": { - "name": "and", - "nodeType": "YulIdentifier", - "src": "3807:3:7" - }, - "nodeType": "YulFunctionCall", - "src": "3807:36:7" - } - ], - "functionName": { - "name": "or", - "nodeType": "YulIdentifier", - "src": "3767:2:7" - }, - "nodeType": "YulFunctionCall", - "src": "3767:77:7" - }, - "nodeType": "YulIf", - "src": "3764:159:7" - }, - { - "nodeType": "YulVariableDeclaration", - "src": "3932:57:7", - "value": { - "arguments": [ - { - "name": "base", - "nodeType": "YulIdentifier", - "src": "3974:4:7" - }, - { - "name": "exponent", - "nodeType": "YulIdentifier", - "src": "3980:8:7" - } - ], - "functionName": { - "name": "checked_exp_helper", - "nodeType": "YulIdentifier", - "src": "3955:18:7" - }, - "nodeType": "YulFunctionCall", - "src": "3955:34:7" - }, - "variables": [ - { - "name": "power_1", - "nodeType": "YulTypedName", - "src": "3936:7:7", - "type": "" - }, - { - "name": "base_1", - "nodeType": "YulTypedName", - "src": "3945:6:7", - "type": "" - } - ] - }, - { - "body": { - "nodeType": "YulBlock", - "src": "4034:22:7", - "statements": [ - { - "expression": { - "arguments": [], - "functionName": { - "name": "panic_error_0x11", - "nodeType": "YulIdentifier", - "src": "4036:16:7" - }, - "nodeType": "YulFunctionCall", - "src": "4036:18:7" - }, - "nodeType": "YulExpressionStatement", - "src": "4036:18:7" - } - ] - }, - "condition": { - "arguments": [ - { - "name": "power_1", - "nodeType": "YulIdentifier", - "src": "4004:7:7" - }, - { - "arguments": [ - { - "arguments": [ - { - "kind": "number", - "nodeType": "YulLiteral", - "src": "4021:1:7", - "type": "", - "value": "0" - } - ], - "functionName": { - "name": "not", - "nodeType": "YulIdentifier", - "src": "4017:3:7" - }, - "nodeType": "YulFunctionCall", - "src": "4017:6:7" - }, - { - "name": "base_1", - "nodeType": "YulIdentifier", - "src": "4025:6:7" - } - ], - "functionName": { - "name": "div", - "nodeType": "YulIdentifier", - "src": "4013:3:7" - }, - "nodeType": "YulFunctionCall", - "src": "4013:19:7" - } - ], - "functionName": { - "name": "gt", - "nodeType": "YulIdentifier", - "src": "4001:2:7" - }, - "nodeType": "YulFunctionCall", - "src": "4001:32:7" - }, - "nodeType": "YulIf", - "src": "3998:58:7" - }, - { - "nodeType": "YulAssignment", - "src": "4065:29:7", - "value": { - "arguments": [ - { - "name": "power_1", - "nodeType": "YulIdentifier", - "src": "4078:7:7" - }, - { - "name": "base_1", - "nodeType": "YulIdentifier", - "src": "4087:6:7" - } - ], - "functionName": { - "name": "mul", - "nodeType": "YulIdentifier", - "src": "4074:3:7" - }, - "nodeType": "YulFunctionCall", - "src": "4074:20:7" - }, - "variableNames": [ - { - "name": "power", - "nodeType": "YulIdentifier", - "src": "4065:5:7" - } - ] - } - ] - }, - "name": "checked_exp_unsigned", - "nodeType": "YulFunctionDefinition", - "parameters": [ - { - "name": "base", - "nodeType": "YulTypedName", - "src": "3324:4:7", - "type": "" - }, - { - "name": "exponent", - "nodeType": "YulTypedName", - "src": "3330:8:7", - "type": "" - } - ], - "returnVariables": [ - { - "name": "power", - "nodeType": "YulTypedName", - "src": "3343:5:7", - "type": "" - } - ], - "src": "3294:806:7" - }, - { - "body": { - "nodeType": "YulBlock", - "src": "4173:72:7", - "statements": [ - { - "nodeType": "YulAssignment", - "src": "4183:56:7", - "value": { - "arguments": [ - { - "name": "base", - "nodeType": "YulIdentifier", - "src": "4213:4:7" - }, - { - "arguments": [ - { - "name": "exponent", - "nodeType": "YulIdentifier", - "src": "4223:8:7" - }, - { - "kind": "number", - "nodeType": "YulLiteral", - "src": "4233:4:7", - "type": "", - "value": "0xff" - } - ], - "functionName": { - "name": "and", - "nodeType": "YulIdentifier", - "src": "4219:3:7" - }, - "nodeType": "YulFunctionCall", - "src": "4219:19:7" - } - ], - "functionName": { - "name": "checked_exp_unsigned", - "nodeType": "YulIdentifier", - "src": "4192:20:7" - }, - "nodeType": "YulFunctionCall", - "src": "4192:47:7" - }, - "variableNames": [ - { - "name": "power", - "nodeType": "YulIdentifier", - "src": "4183:5:7" - } - ] - } - ] - }, - "name": "checked_exp_t_uint256_t_uint8", - "nodeType": "YulFunctionDefinition", - "parameters": [ - { - "name": "base", - "nodeType": "YulTypedName", - "src": "4144:4:7", - "type": "" - }, - { - "name": "exponent", - "nodeType": "YulTypedName", - "src": "4150:8:7", - "type": "" - } - ], - "returnVariables": [ - { - "name": "power", - "nodeType": "YulTypedName", - "src": "4163:5:7", - "type": "" - } - ], - "src": "4105:140:7" - }, - { - "body": { - "nodeType": "YulBlock", - "src": "4302:116:7", - "statements": [ - { - "nodeType": "YulAssignment", - "src": "4312:20:7", - "value": { - "arguments": [ - { - "name": "x", - "nodeType": "YulIdentifier", - "src": "4327:1:7" - }, - { - "name": "y", - "nodeType": "YulIdentifier", - "src": "4330:1:7" - } - ], - "functionName": { - "name": "mul", - "nodeType": "YulIdentifier", - "src": "4323:3:7" - }, - "nodeType": "YulFunctionCall", - "src": "4323:9:7" - }, - "variableNames": [ - { - "name": "product", - "nodeType": "YulIdentifier", - "src": "4312:7:7" - } - ] - }, - { - "body": { - "nodeType": "YulBlock", - "src": "4390:22:7", - "statements": [ - { - "expression": { - "arguments": [], - "functionName": { - "name": "panic_error_0x11", - "nodeType": "YulIdentifier", - "src": "4392:16:7" - }, - "nodeType": "YulFunctionCall", - "src": "4392:18:7" - }, - "nodeType": "YulExpressionStatement", - "src": "4392:18:7" - } - ] - }, - "condition": { - "arguments": [ - { - "arguments": [ - { - "arguments": [ - { - "name": "x", - "nodeType": "YulIdentifier", - "src": "4361:1:7" - } - ], - "functionName": { - "name": "iszero", - "nodeType": "YulIdentifier", - "src": "4354:6:7" - }, - "nodeType": "YulFunctionCall", - "src": "4354:9:7" - }, - { - "arguments": [ - { - "name": "y", - "nodeType": "YulIdentifier", - "src": "4368:1:7" - }, - { - "arguments": [ - { - "name": "product", - "nodeType": "YulIdentifier", - "src": "4375:7:7" - }, - { - "name": "x", - "nodeType": "YulIdentifier", - "src": "4384:1:7" - } - ], - "functionName": { - "name": "div", - "nodeType": "YulIdentifier", - "src": "4371:3:7" - }, - "nodeType": "YulFunctionCall", - "src": "4371:15:7" - } - ], - "functionName": { - "name": "eq", - "nodeType": "YulIdentifier", - "src": "4365:2:7" - }, - "nodeType": "YulFunctionCall", - "src": "4365:22:7" - } - ], - "functionName": { - "name": "or", - "nodeType": "YulIdentifier", - "src": "4351:2:7" - }, - "nodeType": "YulFunctionCall", - "src": "4351:37:7" - } - ], - "functionName": { - "name": "iszero", - "nodeType": "YulIdentifier", - "src": "4344:6:7" - }, - "nodeType": "YulFunctionCall", - "src": "4344:45:7" - }, - "nodeType": "YulIf", - "src": "4341:71:7" - } - ] - }, - "name": "checked_mul_t_uint256", - "nodeType": "YulFunctionDefinition", - "parameters": [ - { - "name": "x", - "nodeType": "YulTypedName", - "src": "4281:1:7", - "type": "" - }, - { - "name": "y", - "nodeType": "YulTypedName", - "src": "4284:1:7", - "type": "" - } - ], - "returnVariables": [ - { - "name": "product", - "nodeType": "YulTypedName", - "src": "4290:7:7", - "type": "" - } - ], - "src": "4250:168:7" - }, - { - "body": { - "nodeType": "YulBlock", - "src": "4524:102:7", - "statements": [ - { - "nodeType": "YulAssignment", - "src": "4534:26:7", - "value": { - "arguments": [ - { - "name": "headStart", - "nodeType": "YulIdentifier", - "src": "4546:9:7" - }, - { - "kind": "number", - "nodeType": "YulLiteral", - "src": "4557:2:7", - "type": "", - "value": "32" - } - ], - "functionName": { - "name": "add", - "nodeType": "YulIdentifier", - "src": "4542:3:7" - }, - "nodeType": "YulFunctionCall", - "src": "4542:18:7" - }, - "variableNames": [ - { - "name": "tail", - "nodeType": "YulIdentifier", - "src": "4534:4:7" - } - ] - }, - { - "expression": { - "arguments": [ - { - "name": "headStart", - "nodeType": "YulIdentifier", - "src": "4576:9:7" - }, - { - "arguments": [ - { - "name": "value0", - "nodeType": "YulIdentifier", - "src": "4591:6:7" - }, - { - "arguments": [ - { - "arguments": [ - { - "kind": "number", - "nodeType": "YulLiteral", - "src": "4607:3:7", - "type": "", - "value": "160" - }, - { - "kind": "number", - "nodeType": "YulLiteral", - "src": "4612:1:7", - "type": "", - "value": "1" - } - ], - "functionName": { - "name": "shl", - "nodeType": "YulIdentifier", - "src": "4603:3:7" - }, - "nodeType": "YulFunctionCall", - "src": "4603:11:7" - }, - { - "kind": "number", - "nodeType": "YulLiteral", - "src": "4616:1:7", - "type": "", - "value": "1" - } - ], - "functionName": { - "name": "sub", - "nodeType": "YulIdentifier", - "src": "4599:3:7" - }, - "nodeType": "YulFunctionCall", - "src": "4599:19:7" - } - ], - "functionName": { - "name": "and", - "nodeType": "YulIdentifier", - "src": "4587:3:7" - }, - "nodeType": "YulFunctionCall", - "src": "4587:32:7" - } - ], - "functionName": { - "name": "mstore", - "nodeType": "YulIdentifier", - "src": "4569:6:7" - }, - "nodeType": "YulFunctionCall", - "src": "4569:51:7" - }, - "nodeType": "YulExpressionStatement", - "src": "4569:51:7" - } - ] - }, - "name": "abi_encode_tuple_t_address__to_t_address__fromStack_reversed", - "nodeType": "YulFunctionDefinition", - "parameters": [ - { - "name": "headStart", - "nodeType": "YulTypedName", - "src": "4493:9:7", - "type": "" - }, - { - "name": "value0", - "nodeType": "YulTypedName", - "src": "4504:6:7", - "type": "" - } - ], - "returnVariables": [ - { - "name": "tail", - "nodeType": "YulTypedName", - "src": "4515:4:7", - "type": "" - } - ], - "src": "4423:203:7" - }, - { - "body": { - "nodeType": "YulBlock", - "src": "4679:77:7", - "statements": [ - { - "nodeType": "YulAssignment", - "src": "4689:16:7", - "value": { - "arguments": [ - { - "name": "x", - "nodeType": "YulIdentifier", - "src": "4700:1:7" - }, - { - "name": "y", - "nodeType": "YulIdentifier", - "src": "4703:1:7" - } - ], - "functionName": { - "name": "add", - "nodeType": "YulIdentifier", - "src": "4696:3:7" - }, - "nodeType": "YulFunctionCall", - "src": "4696:9:7" - }, - "variableNames": [ - { - "name": "sum", - "nodeType": "YulIdentifier", - "src": "4689:3:7" - } - ] - }, - { - "body": { - "nodeType": "YulBlock", - "src": "4728:22:7", - "statements": [ - { - "expression": { - "arguments": [], - "functionName": { - "name": "panic_error_0x11", - "nodeType": "YulIdentifier", - "src": "4730:16:7" - }, - "nodeType": "YulFunctionCall", - "src": "4730:18:7" - }, - "nodeType": "YulExpressionStatement", - "src": "4730:18:7" - } - ] - }, - "condition": { - "arguments": [ - { - "name": "x", - "nodeType": "YulIdentifier", - "src": "4720:1:7" - }, - { - "name": "sum", - "nodeType": "YulIdentifier", - "src": "4723:3:7" - } - ], - "functionName": { - "name": "gt", - "nodeType": "YulIdentifier", - "src": "4717:2:7" - }, - "nodeType": "YulFunctionCall", - "src": "4717:10:7" - }, - "nodeType": "YulIf", - "src": "4714:36:7" - } - ] - }, - "name": "checked_add_t_uint256", - "nodeType": "YulFunctionDefinition", - "parameters": [ - { - "name": "x", - "nodeType": "YulTypedName", - "src": "4662:1:7", - "type": "" - }, - { - "name": "y", - "nodeType": "YulTypedName", - "src": "4665:1:7", - "type": "" - } - ], - "returnVariables": [ - { - "name": "sum", - "nodeType": "YulTypedName", - "src": "4671:3:7", - "type": "" - } - ], - "src": "4631:125:7" - }, - { - "body": { - "nodeType": "YulBlock", - "src": "4918:188:7", - "statements": [ - { - "nodeType": "YulAssignment", - "src": "4928:26:7", - "value": { - "arguments": [ - { - "name": "headStart", - "nodeType": "YulIdentifier", - "src": "4940:9:7" - }, - { - "kind": "number", - "nodeType": "YulLiteral", - "src": "4951:2:7", - "type": "", - "value": "96" - } - ], - "functionName": { - "name": "add", - "nodeType": "YulIdentifier", - "src": "4936:3:7" - }, - "nodeType": "YulFunctionCall", - "src": "4936:18:7" - }, - "variableNames": [ - { - "name": "tail", - "nodeType": "YulIdentifier", - "src": "4928:4:7" - } - ] - }, - { - "expression": { - "arguments": [ - { - "name": "headStart", - "nodeType": "YulIdentifier", - "src": "4970:9:7" - }, - { - "arguments": [ - { - "name": "value0", - "nodeType": "YulIdentifier", - "src": "4985:6:7" - }, - { - "arguments": [ - { - "arguments": [ - { - "kind": "number", - "nodeType": "YulLiteral", - "src": "5001:3:7", - "type": "", - "value": "160" - }, - { - "kind": "number", - "nodeType": "YulLiteral", - "src": "5006:1:7", - "type": "", - "value": "1" - } - ], - "functionName": { - "name": "shl", - "nodeType": "YulIdentifier", - "src": "4997:3:7" - }, - "nodeType": "YulFunctionCall", - "src": "4997:11:7" - }, - { - "kind": "number", - "nodeType": "YulLiteral", - "src": "5010:1:7", - "type": "", - "value": "1" - } - ], - "functionName": { - "name": "sub", - "nodeType": "YulIdentifier", - "src": "4993:3:7" - }, - "nodeType": "YulFunctionCall", - "src": "4993:19:7" - } - ], - "functionName": { - "name": "and", - "nodeType": "YulIdentifier", - "src": "4981:3:7" - }, - "nodeType": "YulFunctionCall", - "src": "4981:32:7" - } - ], - "functionName": { - "name": "mstore", - "nodeType": "YulIdentifier", - "src": "4963:6:7" - }, - "nodeType": "YulFunctionCall", - "src": "4963:51:7" - }, - "nodeType": "YulExpressionStatement", - "src": "4963:51:7" - }, - { - "expression": { - "arguments": [ - { - "arguments": [ - { - "name": "headStart", - "nodeType": "YulIdentifier", - "src": "5034:9:7" - }, - { - "kind": "number", - "nodeType": "YulLiteral", - "src": "5045:2:7", - "type": "", - "value": "32" - } - ], - "functionName": { - "name": "add", - "nodeType": "YulIdentifier", - "src": "5030:3:7" - }, - "nodeType": "YulFunctionCall", - "src": "5030:18:7" - }, - { - "name": "value1", - "nodeType": "YulIdentifier", - "src": "5050:6:7" - } - ], - "functionName": { - "name": "mstore", - "nodeType": "YulIdentifier", - "src": "5023:6:7" - }, - "nodeType": "YulFunctionCall", - "src": "5023:34:7" - }, - "nodeType": "YulExpressionStatement", - "src": "5023:34:7" - }, - { - "expression": { - "arguments": [ - { - "arguments": [ - { - "name": "headStart", - "nodeType": "YulIdentifier", - "src": "5077:9:7" - }, - { - "kind": "number", - "nodeType": "YulLiteral", - "src": "5088:2:7", - "type": "", - "value": "64" - } - ], - "functionName": { - "name": "add", - "nodeType": "YulIdentifier", - "src": "5073:3:7" - }, - "nodeType": "YulFunctionCall", - "src": "5073:18:7" - }, - { - "name": "value2", - "nodeType": "YulIdentifier", - "src": "5093:6:7" - } - ], - "functionName": { - "name": "mstore", - "nodeType": "YulIdentifier", - "src": "5066:6:7" - }, - "nodeType": "YulFunctionCall", - "src": "5066:34:7" - }, - "nodeType": "YulExpressionStatement", - "src": "5066:34:7" - } - ] - }, - "name": "abi_encode_tuple_t_address_t_uint256_t_uint256__to_t_address_t_uint256_t_uint256__fromStack_reversed", - "nodeType": "YulFunctionDefinition", - "parameters": [ - { - "name": "headStart", - "nodeType": "YulTypedName", - "src": "4871:9:7", - "type": "" - }, - { - "name": "value2", - "nodeType": "YulTypedName", - "src": "4882:6:7", - "type": "" - }, - { - "name": "value1", - "nodeType": "YulTypedName", - "src": "4890:6:7", - "type": "" - }, - { - "name": "value0", - "nodeType": "YulTypedName", - "src": "4898:6:7", - "type": "" - } - ], - "returnVariables": [ - { - "name": "tail", - "nodeType": "YulTypedName", - "src": "4909:4:7", - "type": "" - } - ], - "src": "4761:345:7" - }, - { - "body": { - "nodeType": "YulBlock", - "src": "5212:76:7", - "statements": [ - { - "nodeType": "YulAssignment", - "src": "5222:26:7", - "value": { - "arguments": [ - { - "name": "headStart", - "nodeType": "YulIdentifier", - "src": "5234:9:7" - }, - { - "kind": "number", - "nodeType": "YulLiteral", - "src": "5245:2:7", - "type": "", - "value": "32" - } - ], - "functionName": { - "name": "add", - "nodeType": "YulIdentifier", - "src": "5230:3:7" - }, - "nodeType": "YulFunctionCall", - "src": "5230:18:7" - }, - "variableNames": [ - { - "name": "tail", - "nodeType": "YulIdentifier", - "src": "5222:4:7" - } - ] - }, - { - "expression": { - "arguments": [ - { - "name": "headStart", - "nodeType": "YulIdentifier", - "src": "5264:9:7" - }, - { - "name": "value0", - "nodeType": "YulIdentifier", - "src": "5275:6:7" - } - ], - "functionName": { - "name": "mstore", - "nodeType": "YulIdentifier", - "src": "5257:6:7" - }, - "nodeType": "YulFunctionCall", - "src": "5257:25:7" - }, - "nodeType": "YulExpressionStatement", - "src": "5257:25:7" - } - ] - }, - "name": "abi_encode_tuple_t_uint256__to_t_uint256__fromStack_reversed", - "nodeType": "YulFunctionDefinition", - "parameters": [ - { - "name": "headStart", - "nodeType": "YulTypedName", - "src": "5181:9:7", - "type": "" - }, - { - "name": "value0", - "nodeType": "YulTypedName", - "src": "5192:6:7", - "type": "" - } - ], - "returnVariables": [ - { - "name": "tail", - "nodeType": "YulTypedName", - "src": "5203:4:7", - "type": "" - } - ], - "src": "5111:177:7" - } - ] - }, - "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 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 array_dataslot_string_storage(ptr) -> data\n {\n mstore(0, ptr)\n data := keccak256(0, 0x20)\n }\n function clean_up_bytearray_end_slots_string_storage(array, len, startIndex)\n {\n if gt(len, 31)\n {\n let _1 := 0\n mstore(_1, array)\n let data := keccak256(_1, 0x20)\n let deleteStart := add(data, shr(5, add(startIndex, 31)))\n if lt(startIndex, 0x20) { deleteStart := data }\n let _2 := add(data, shr(5, add(len, 31)))\n let start := deleteStart\n for { } lt(start, _2) { start := add(start, 1) }\n { sstore(start, _1) }\n }\n }\n function extract_used_part_and_set_length_of_short_byte_array(data, len) -> used\n {\n used := or(and(data, not(shr(shl(3, len), not(0)))), shl(1, len))\n }\n function copy_byte_array_to_storage_from_t_string_memory_ptr_to_t_string_storage(slot, src)\n {\n let newLen := mload(src)\n if gt(newLen, sub(shl(64, 1), 1)) { panic_error_0x41() }\n clean_up_bytearray_end_slots_string_storage(slot, extract_byte_array_length(sload(slot)), newLen)\n let srcOffset := 0\n let srcOffset_1 := 0x20\n srcOffset := srcOffset_1\n switch gt(newLen, 31)\n case 1 {\n let loopEnd := and(newLen, not(31))\n let dstPtr := array_dataslot_string_storage(slot)\n let i := 0\n for { } lt(i, loopEnd) { i := add(i, srcOffset_1) }\n {\n sstore(dstPtr, mload(add(src, srcOffset)))\n dstPtr := add(dstPtr, 1)\n srcOffset := add(srcOffset, srcOffset_1)\n }\n if lt(loopEnd, newLen)\n {\n let lastValue := mload(add(src, srcOffset))\n sstore(dstPtr, and(lastValue, not(shr(and(shl(3, newLen), 248), not(0)))))\n }\n sstore(slot, add(shl(1, newLen), 1))\n }\n default {\n let value := 0\n if newLen\n {\n value := mload(add(src, srcOffset))\n }\n sstore(slot, extract_used_part_and_set_length_of_short_byte_array(value, newLen))\n }\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_exp_helper(_base, exponent) -> power, base\n {\n let power_1 := 1\n power := power_1\n base := _base\n for { } gt(exponent, power_1) { }\n {\n if gt(base, div(not(0), base)) { panic_error_0x11() }\n if and(exponent, power_1) { power := mul(power, base) }\n base := mul(base, base)\n exponent := shr(power_1, exponent)\n }\n }\n function checked_exp_unsigned(base, exponent) -> power\n {\n if iszero(exponent)\n {\n power := 1\n leave\n }\n if iszero(base)\n {\n power := 0\n leave\n }\n switch base\n case 1 {\n power := 1\n leave\n }\n case 2 {\n if gt(exponent, 255) { panic_error_0x11() }\n power := shl(exponent, 1)\n leave\n }\n if or(and(lt(base, 11), lt(exponent, 78)), and(lt(base, 307), lt(exponent, 32)))\n {\n power := exp(base, exponent)\n leave\n }\n let power_1, base_1 := checked_exp_helper(base, exponent)\n if gt(power_1, div(not(0), base_1)) { panic_error_0x11() }\n power := mul(power_1, base_1)\n }\n function checked_exp_t_uint256_t_uint8(base, exponent) -> power\n {\n power := checked_exp_unsigned(base, and(exponent, 0xff))\n }\n function checked_mul_t_uint256(x, y) -> product\n {\n product := mul(x, y)\n if iszero(or(iszero(x), eq(y, div(product, x)))) { panic_error_0x11() }\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 checked_add_t_uint256(x, y) -> sum\n {\n sum := add(x, y)\n if gt(x, sum) { panic_error_0x11() }\n }\n function abi_encode_tuple_t_address_t_uint256_t_uint256__to_t_address_t_uint256_t_uint256__fromStack_reversed(headStart, value2, value1, value0) -> tail\n {\n tail := add(headStart, 96)\n mstore(headStart, and(value0, sub(shl(160, 1), 1)))\n mstore(add(headStart, 32), value1)\n mstore(add(headStart, 64), value2)\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}", - "id": 7, - "language": "Yul", - "name": "#utility.yul" - } - ], - "linkReferences": {}, - "object": "60806040523480156200001157600080fd5b506040518060400160405280600c81526020016b29b4b6b83632902a37b5b2b760a11b8152506040518060400160405280600381526020016253544b60e81b8152508160039081620000649190620002d2565b506004620000738282620002d2565b505050620000ad336200008b620000b360201b60201c565b6200009890600a620004b3565b620000a790620f4240620004cb565b620000b8565b620004fb565b601290565b6001600160a01b038216620000e85760405163ec442f0560e01b8152600060048201526024015b60405180910390fd5b620000f660008383620000fa565b5050565b6001600160a01b038316620001295780600260008282546200011d9190620004e5565b909155506200019d9050565b6001600160a01b038316600090815260208190526040902054818110156200017e5760405163391434e360e21b81526001600160a01b03851660048201526024810182905260448101839052606401620000df565b6001600160a01b03841660009081526020819052604090209082900390555b6001600160a01b038216620001bb57600280548290039055620001da565b6001600160a01b03821660009081526020819052604090208054820190555b816001600160a01b0316836001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040516200022091815260200190565b60405180910390a3505050565b634e487b7160e01b600052604160045260246000fd5b600181811c908216806200025857607f821691505b6020821081036200027957634e487b7160e01b600052602260045260246000fd5b50919050565b601f821115620002cd57600081815260208120601f850160051c81016020861015620002a85750805b601f850160051c820191505b81811015620002c957828155600101620002b4565b5050505b505050565b81516001600160401b03811115620002ee57620002ee6200022d565b6200030681620002ff845462000243565b846200027f565b602080601f8311600181146200033e5760008415620003255750858301515b600019600386901b1c1916600185901b178555620002c9565b600085815260208120601f198616915b828110156200036f578886015182559484019460019091019084016200034e565b50858210156200038e5787850151600019600388901b60f8161c191681555b5050505050600190811b01905550565b634e487b7160e01b600052601160045260246000fd5b600181815b80851115620003f5578160001904821115620003d957620003d96200039e565b80851615620003e757918102915b93841c9390800290620003b9565b509250929050565b6000826200040e57506001620004ad565b816200041d57506000620004ad565b8160018114620004365760028114620004415762000461565b6001915050620004ad565b60ff8411156200045557620004556200039e565b50506001821b620004ad565b5060208310610133831016604e8410600b841016171562000486575081810a620004ad565b620004928383620003b4565b8060001904821115620004a957620004a96200039e565b0290505b92915050565b6000620004c460ff841683620003fd565b9392505050565b8082028115828204841417620004ad57620004ad6200039e565b80820180821115620004ad57620004ad6200039e565b610710806200050b6000396000f3fe608060405234801561001057600080fd5b50600436106100835760003560e01c806306fdde0314610088578063095ea7b3146100a657806318160ddd146100c957806323b872dd146100db578063313ce567146100ee57806370a08231146100fd57806395d89b4114610126578063a9059cbb1461012e578063dd62ed3e14610141575b600080fd5b610090610154565b60405161009d9190610525565b60405180910390f35b6100b96100b436600461058f565b6101e6565b604051901515815260200161009d565b6002545b60405190815260200161009d565b6100b96100e93660046105b9565b610200565b6040516012815260200161009d565b6100cd61010b3660046105f5565b6001600160a01b031660009081526020819052604090205490565b610090610224565b6100b961013c36600461058f565b610233565b6100cd61014f366004610617565b610241565b6060600380546101639061064a565b80601f016020809104026020016040519081016040528092919081815260200182805461018f9061064a565b80156101dc5780601f106101b1576101008083540402835291602001916101dc565b820191906000526020600020905b8154815290600101906020018083116101bf57829003601f168201915b5050505050905090565b6000336101f481858561026c565b60019150505b92915050565b60003361020e85828561027e565b6102198585856102da565b506001949350505050565b6060600480546101639061064a565b6000336101f48185856102da565b6001600160a01b03918216600090815260016020908152604080832093909416825291909152205490565b6102798383836001610339565b505050565b600061028a8484610241565b905060001981146102d457818110156102c557828183604051637dc7a0d960e11b81526004016102bc93929190610684565b60405180910390fd5b6102d484848484036000610339565b50505050565b6001600160a01b038316610304576000604051634b637e8f60e11b81526004016102bc91906106a5565b6001600160a01b03821661032e57600060405163ec442f0560e01b81526004016102bc91906106a5565b61027983838361040e565b6001600160a01b03841661036357600060405163e602df0560e01b81526004016102bc91906106a5565b6001600160a01b03831661038d576000604051634a1406b160e11b81526004016102bc91906106a5565b6001600160a01b03808516600090815260016020908152604080832093871683529290522082905580156102d457826001600160a01b0316846001600160a01b03167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9258460405161040091815260200190565b60405180910390a350505050565b6001600160a01b03831661043957806002600082825461042e91906106b9565b909155506104989050565b6001600160a01b038316600090815260208190526040902054818110156104795783818360405163391434e360e21b81526004016102bc93929190610684565b6001600160a01b03841660009081526020819052604090209082900390555b6001600160a01b0382166104b4576002805482900390556104d3565b6001600160a01b03821660009081526020819052604090208054820190555b816001600160a01b0316836001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8360405161051891815260200190565b60405180910390a3505050565b600060208083528351808285015260005b8181101561055257858101830151858201604001528201610536565b506000604082860101526040601f19601f8301168501019250505092915050565b80356001600160a01b038116811461058a57600080fd5b919050565b600080604083850312156105a257600080fd5b6105ab83610573565b946020939093013593505050565b6000806000606084860312156105ce57600080fd5b6105d784610573565b92506105e560208501610573565b9150604084013590509250925092565b60006020828403121561060757600080fd5b61061082610573565b9392505050565b6000806040838503121561062a57600080fd5b61063383610573565b915061064160208401610573565b90509250929050565b600181811c9082168061065e57607f821691505b60208210810361067e57634e487b7160e01b600052602260045260246000fd5b50919050565b6001600160a01b039390931683526020830191909152604082015260600190565b6001600160a01b0391909116815260200190565b808201808211156101fa57634e487b7160e01b600052601160045260246000fdfea2646970667358221220971c0411aa52274b5b193f98b7e4a9e2e3b85d9474dd56b20a8924d5daa020dc64736f6c63430008140033", - "opcodes": "PUSH1 0x80 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH3 0x11 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x40 MLOAD DUP1 PUSH1 0x40 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0xC DUP2 MSTORE PUSH1 0x20 ADD PUSH12 0x29B4B6B83632902A37B5B2B7 PUSH1 0xA1 SHL DUP2 MSTORE POP PUSH1 0x40 MLOAD DUP1 PUSH1 0x40 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x3 DUP2 MSTORE PUSH1 0x20 ADD PUSH3 0x53544B PUSH1 0xE8 SHL DUP2 MSTORE POP DUP2 PUSH1 0x3 SWAP1 DUP2 PUSH3 0x64 SWAP2 SWAP1 PUSH3 0x2D2 JUMP JUMPDEST POP PUSH1 0x4 PUSH3 0x73 DUP3 DUP3 PUSH3 0x2D2 JUMP JUMPDEST POP POP POP PUSH3 0xAD CALLER PUSH3 0x8B PUSH3 0xB3 PUSH1 0x20 SHL PUSH1 0x20 SHR JUMP JUMPDEST PUSH3 0x98 SWAP1 PUSH1 0xA PUSH3 0x4B3 JUMP JUMPDEST PUSH3 0xA7 SWAP1 PUSH3 0xF4240 PUSH3 0x4CB JUMP JUMPDEST PUSH3 0xB8 JUMP JUMPDEST PUSH3 0x4FB JUMP JUMPDEST PUSH1 0x12 SWAP1 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP3 AND PUSH3 0xE8 JUMPI PUSH1 0x40 MLOAD PUSH4 0xEC442F05 PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x0 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x24 ADD JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH3 0xF6 PUSH1 0x0 DUP4 DUP4 PUSH3 0xFA JUMP JUMPDEST POP POP JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP4 AND PUSH3 0x129 JUMPI DUP1 PUSH1 0x2 PUSH1 0x0 DUP3 DUP3 SLOAD PUSH3 0x11D SWAP2 SWAP1 PUSH3 0x4E5 JUMP JUMPDEST SWAP1 SWAP2 SSTORE POP PUSH3 0x19D SWAP1 POP JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP4 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x20 DUP2 SWAP1 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD DUP2 DUP2 LT ISZERO PUSH3 0x17E JUMPI PUSH1 0x40 MLOAD PUSH4 0x391434E3 PUSH1 0xE2 SHL DUP2 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP6 AND PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x24 DUP2 ADD DUP3 SWAP1 MSTORE PUSH1 0x44 DUP2 ADD DUP4 SWAP1 MSTORE PUSH1 0x64 ADD PUSH3 0xDF JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP5 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x20 DUP2 SWAP1 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SWAP1 DUP3 SWAP1 SUB SWAP1 SSTORE JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP3 AND PUSH3 0x1BB JUMPI PUSH1 0x2 DUP1 SLOAD DUP3 SWAP1 SUB SWAP1 SSTORE PUSH3 0x1DA JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP3 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x20 DUP2 SWAP1 MSTORE PUSH1 0x40 SWAP1 KECCAK256 DUP1 SLOAD DUP3 ADD SWAP1 SSTORE JUMPDEST DUP2 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP4 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH32 0xDDF252AD1BE2C89B69C2B068FC378DAA952BA7F163C4A11628F55A4DF523B3EF DUP4 PUSH1 0x40 MLOAD PUSH3 0x220 SWAP2 DUP2 MSTORE PUSH1 0x20 ADD SWAP1 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG3 POP POP POP JUMP JUMPDEST PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH1 0x0 MSTORE PUSH1 0x41 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST PUSH1 0x1 DUP2 DUP2 SHR SWAP1 DUP3 AND DUP1 PUSH3 0x258 JUMPI PUSH1 0x7F DUP3 AND SWAP2 POP JUMPDEST PUSH1 0x20 DUP3 LT DUP2 SUB PUSH3 0x279 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 0x1F DUP3 GT ISZERO PUSH3 0x2CD JUMPI PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0x20 DUP2 KECCAK256 PUSH1 0x1F DUP6 ADD PUSH1 0x5 SHR DUP2 ADD PUSH1 0x20 DUP7 LT ISZERO PUSH3 0x2A8 JUMPI POP DUP1 JUMPDEST PUSH1 0x1F DUP6 ADD PUSH1 0x5 SHR DUP3 ADD SWAP2 POP JUMPDEST DUP2 DUP2 LT ISZERO PUSH3 0x2C9 JUMPI DUP3 DUP2 SSTORE PUSH1 0x1 ADD PUSH3 0x2B4 JUMP JUMPDEST POP POP POP JUMPDEST POP POP POP JUMP JUMPDEST DUP2 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB DUP2 GT ISZERO PUSH3 0x2EE JUMPI PUSH3 0x2EE PUSH3 0x22D JUMP JUMPDEST PUSH3 0x306 DUP2 PUSH3 0x2FF DUP5 SLOAD PUSH3 0x243 JUMP JUMPDEST DUP5 PUSH3 0x27F JUMP JUMPDEST PUSH1 0x20 DUP1 PUSH1 0x1F DUP4 GT PUSH1 0x1 DUP2 EQ PUSH3 0x33E JUMPI PUSH1 0x0 DUP5 ISZERO PUSH3 0x325 JUMPI POP DUP6 DUP4 ADD MLOAD JUMPDEST PUSH1 0x0 NOT PUSH1 0x3 DUP7 SWAP1 SHL SHR NOT AND PUSH1 0x1 DUP6 SWAP1 SHL OR DUP6 SSTORE PUSH3 0x2C9 JUMP JUMPDEST PUSH1 0x0 DUP6 DUP2 MSTORE PUSH1 0x20 DUP2 KECCAK256 PUSH1 0x1F NOT DUP7 AND SWAP2 JUMPDEST DUP3 DUP2 LT ISZERO PUSH3 0x36F JUMPI DUP9 DUP7 ADD MLOAD DUP3 SSTORE SWAP5 DUP5 ADD SWAP5 PUSH1 0x1 SWAP1 SWAP2 ADD SWAP1 DUP5 ADD PUSH3 0x34E JUMP JUMPDEST POP DUP6 DUP3 LT ISZERO PUSH3 0x38E JUMPI DUP8 DUP6 ADD MLOAD PUSH1 0x0 NOT PUSH1 0x3 DUP9 SWAP1 SHL PUSH1 0xF8 AND SHR NOT AND DUP2 SSTORE JUMPDEST POP POP POP POP POP PUSH1 0x1 SWAP1 DUP2 SHL ADD SWAP1 SSTORE POP JUMP JUMPDEST PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH1 0x0 MSTORE PUSH1 0x11 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST PUSH1 0x1 DUP2 DUP2 JUMPDEST DUP1 DUP6 GT ISZERO PUSH3 0x3F5 JUMPI DUP2 PUSH1 0x0 NOT DIV DUP3 GT ISZERO PUSH3 0x3D9 JUMPI PUSH3 0x3D9 PUSH3 0x39E JUMP JUMPDEST DUP1 DUP6 AND ISZERO PUSH3 0x3E7 JUMPI SWAP2 DUP2 MUL SWAP2 JUMPDEST SWAP4 DUP5 SHR SWAP4 SWAP1 DUP1 MUL SWAP1 PUSH3 0x3B9 JUMP JUMPDEST POP SWAP3 POP SWAP3 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP3 PUSH3 0x40E JUMPI POP PUSH1 0x1 PUSH3 0x4AD JUMP JUMPDEST DUP2 PUSH3 0x41D JUMPI POP PUSH1 0x0 PUSH3 0x4AD JUMP JUMPDEST DUP2 PUSH1 0x1 DUP2 EQ PUSH3 0x436 JUMPI PUSH1 0x2 DUP2 EQ PUSH3 0x441 JUMPI PUSH3 0x461 JUMP JUMPDEST PUSH1 0x1 SWAP2 POP POP PUSH3 0x4AD JUMP JUMPDEST PUSH1 0xFF DUP5 GT ISZERO PUSH3 0x455 JUMPI PUSH3 0x455 PUSH3 0x39E JUMP JUMPDEST POP POP PUSH1 0x1 DUP3 SHL PUSH3 0x4AD JUMP JUMPDEST POP PUSH1 0x20 DUP4 LT PUSH2 0x133 DUP4 LT AND PUSH1 0x4E DUP5 LT PUSH1 0xB DUP5 LT AND OR ISZERO PUSH3 0x486 JUMPI POP DUP2 DUP2 EXP PUSH3 0x4AD JUMP JUMPDEST PUSH3 0x492 DUP4 DUP4 PUSH3 0x3B4 JUMP JUMPDEST DUP1 PUSH1 0x0 NOT DIV DUP3 GT ISZERO PUSH3 0x4A9 JUMPI PUSH3 0x4A9 PUSH3 0x39E JUMP JUMPDEST MUL SWAP1 POP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH3 0x4C4 PUSH1 0xFF DUP5 AND DUP4 PUSH3 0x3FD JUMP JUMPDEST SWAP4 SWAP3 POP POP POP JUMP JUMPDEST DUP1 DUP3 MUL DUP2 ISZERO DUP3 DUP3 DIV DUP5 EQ OR PUSH3 0x4AD JUMPI PUSH3 0x4AD PUSH3 0x39E JUMP JUMPDEST DUP1 DUP3 ADD DUP1 DUP3 GT ISZERO PUSH3 0x4AD JUMPI PUSH3 0x4AD PUSH3 0x39E JUMP JUMPDEST PUSH2 0x710 DUP1 PUSH3 0x50B 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 0x83 JUMPI PUSH1 0x0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0x6FDDE03 EQ PUSH2 0x88 JUMPI DUP1 PUSH4 0x95EA7B3 EQ PUSH2 0xA6 JUMPI DUP1 PUSH4 0x18160DDD EQ PUSH2 0xC9 JUMPI DUP1 PUSH4 0x23B872DD EQ PUSH2 0xDB JUMPI DUP1 PUSH4 0x313CE567 EQ PUSH2 0xEE JUMPI DUP1 PUSH4 0x70A08231 EQ PUSH2 0xFD JUMPI DUP1 PUSH4 0x95D89B41 EQ PUSH2 0x126 JUMPI DUP1 PUSH4 0xA9059CBB EQ PUSH2 0x12E JUMPI DUP1 PUSH4 0xDD62ED3E EQ PUSH2 0x141 JUMPI JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x90 PUSH2 0x154 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x9D SWAP2 SWAP1 PUSH2 0x525 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0xB9 PUSH2 0xB4 CALLDATASIZE PUSH1 0x4 PUSH2 0x58F JUMP JUMPDEST PUSH2 0x1E6 JUMP JUMPDEST PUSH1 0x40 MLOAD SWAP1 ISZERO ISZERO DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0x9D JUMP JUMPDEST PUSH1 0x2 SLOAD JUMPDEST PUSH1 0x40 MLOAD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0x9D JUMP JUMPDEST PUSH2 0xB9 PUSH2 0xE9 CALLDATASIZE PUSH1 0x4 PUSH2 0x5B9 JUMP JUMPDEST PUSH2 0x200 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x12 DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0x9D JUMP JUMPDEST PUSH2 0xCD PUSH2 0x10B CALLDATASIZE PUSH1 0x4 PUSH2 0x5F5 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x20 DUP2 SWAP1 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD SWAP1 JUMP JUMPDEST PUSH2 0x90 PUSH2 0x224 JUMP JUMPDEST PUSH2 0xB9 PUSH2 0x13C CALLDATASIZE PUSH1 0x4 PUSH2 0x58F JUMP JUMPDEST PUSH2 0x233 JUMP JUMPDEST PUSH2 0xCD PUSH2 0x14F CALLDATASIZE PUSH1 0x4 PUSH2 0x617 JUMP JUMPDEST PUSH2 0x241 JUMP JUMPDEST PUSH1 0x60 PUSH1 0x3 DUP1 SLOAD PUSH2 0x163 SWAP1 PUSH2 0x64A 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 0x18F SWAP1 PUSH2 0x64A JUMP JUMPDEST DUP1 ISZERO PUSH2 0x1DC JUMPI DUP1 PUSH1 0x1F LT PUSH2 0x1B1 JUMPI PUSH2 0x100 DUP1 DUP4 SLOAD DIV MUL DUP4 MSTORE SWAP2 PUSH1 0x20 ADD SWAP2 PUSH2 0x1DC 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 0x1BF JUMPI DUP3 SWAP1 SUB PUSH1 0x1F AND DUP3 ADD SWAP2 JUMPDEST POP POP POP POP POP SWAP1 POP SWAP1 JUMP JUMPDEST PUSH1 0x0 CALLER PUSH2 0x1F4 DUP2 DUP6 DUP6 PUSH2 0x26C JUMP JUMPDEST PUSH1 0x1 SWAP2 POP POP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 CALLER PUSH2 0x20E DUP6 DUP3 DUP6 PUSH2 0x27E JUMP JUMPDEST PUSH2 0x219 DUP6 DUP6 DUP6 PUSH2 0x2DA JUMP JUMPDEST POP PUSH1 0x1 SWAP5 SWAP4 POP POP POP POP JUMP JUMPDEST PUSH1 0x60 PUSH1 0x4 DUP1 SLOAD PUSH2 0x163 SWAP1 PUSH2 0x64A JUMP JUMPDEST PUSH1 0x0 CALLER PUSH2 0x1F4 DUP2 DUP6 DUP6 PUSH2 0x2DA JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP2 DUP3 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x1 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 0x279 DUP4 DUP4 DUP4 PUSH1 0x1 PUSH2 0x339 JUMP JUMPDEST POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x28A DUP5 DUP5 PUSH2 0x241 JUMP JUMPDEST SWAP1 POP PUSH1 0x0 NOT DUP2 EQ PUSH2 0x2D4 JUMPI DUP2 DUP2 LT ISZERO PUSH2 0x2C5 JUMPI DUP3 DUP2 DUP4 PUSH1 0x40 MLOAD PUSH4 0x7DC7A0D9 PUSH1 0xE1 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x2BC SWAP4 SWAP3 SWAP2 SWAP1 PUSH2 0x684 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH2 0x2D4 DUP5 DUP5 DUP5 DUP5 SUB PUSH1 0x0 PUSH2 0x339 JUMP JUMPDEST POP POP POP POP JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP4 AND PUSH2 0x304 JUMPI PUSH1 0x0 PUSH1 0x40 MLOAD PUSH4 0x4B637E8F PUSH1 0xE1 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x2BC SWAP2 SWAP1 PUSH2 0x6A5 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP3 AND PUSH2 0x32E JUMPI PUSH1 0x0 PUSH1 0x40 MLOAD PUSH4 0xEC442F05 PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x2BC SWAP2 SWAP1 PUSH2 0x6A5 JUMP JUMPDEST PUSH2 0x279 DUP4 DUP4 DUP4 PUSH2 0x40E JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP5 AND PUSH2 0x363 JUMPI PUSH1 0x0 PUSH1 0x40 MLOAD PUSH4 0xE602DF05 PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x2BC SWAP2 SWAP1 PUSH2 0x6A5 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP4 AND PUSH2 0x38D JUMPI PUSH1 0x0 PUSH1 0x40 MLOAD PUSH4 0x4A1406B1 PUSH1 0xE1 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x2BC SWAP2 SWAP1 PUSH2 0x6A5 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP1 DUP6 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x1 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 SWAP4 DUP8 AND DUP4 MSTORE SWAP3 SWAP1 MSTORE KECCAK256 DUP3 SWAP1 SSTORE DUP1 ISZERO PUSH2 0x2D4 JUMPI DUP3 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP5 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH32 0x8C5BE1E5EBEC7D5BD14F71427D1E84F3DD0314C0F7B2291E5B200AC8C7C3B925 DUP5 PUSH1 0x40 MLOAD PUSH2 0x400 SWAP2 DUP2 MSTORE PUSH1 0x20 ADD SWAP1 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG3 POP POP POP POP JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP4 AND PUSH2 0x439 JUMPI DUP1 PUSH1 0x2 PUSH1 0x0 DUP3 DUP3 SLOAD PUSH2 0x42E SWAP2 SWAP1 PUSH2 0x6B9 JUMP JUMPDEST SWAP1 SWAP2 SSTORE POP PUSH2 0x498 SWAP1 POP JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP4 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x20 DUP2 SWAP1 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD DUP2 DUP2 LT ISZERO PUSH2 0x479 JUMPI DUP4 DUP2 DUP4 PUSH1 0x40 MLOAD PUSH4 0x391434E3 PUSH1 0xE2 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x2BC SWAP4 SWAP3 SWAP2 SWAP1 PUSH2 0x684 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP5 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x20 DUP2 SWAP1 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SWAP1 DUP3 SWAP1 SUB SWAP1 SSTORE JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP3 AND PUSH2 0x4B4 JUMPI PUSH1 0x2 DUP1 SLOAD DUP3 SWAP1 SUB SWAP1 SSTORE PUSH2 0x4D3 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP3 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x20 DUP2 SWAP1 MSTORE PUSH1 0x40 SWAP1 KECCAK256 DUP1 SLOAD DUP3 ADD SWAP1 SSTORE JUMPDEST DUP2 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP4 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH32 0xDDF252AD1BE2C89B69C2B068FC378DAA952BA7F163C4A11628F55A4DF523B3EF DUP4 PUSH1 0x40 MLOAD PUSH2 0x518 SWAP2 DUP2 MSTORE PUSH1 0x20 ADD SWAP1 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG3 POP POP 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 0x552 JUMPI DUP6 DUP2 ADD DUP4 ADD MLOAD DUP6 DUP3 ADD PUSH1 0x40 ADD MSTORE DUP3 ADD PUSH2 0x536 JUMP JUMPDEST POP PUSH1 0x0 PUSH1 0x40 DUP3 DUP7 ADD ADD MSTORE PUSH1 0x40 PUSH1 0x1F NOT PUSH1 0x1F DUP4 ADD AND DUP6 ADD ADD SWAP3 POP POP POP SWAP3 SWAP2 POP POP JUMP JUMPDEST DUP1 CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND DUP2 EQ PUSH2 0x58A JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH2 0x5A2 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x5AB DUP4 PUSH2 0x573 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 0x5CE JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x5D7 DUP5 PUSH2 0x573 JUMP JUMPDEST SWAP3 POP PUSH2 0x5E5 PUSH1 0x20 DUP6 ADD PUSH2 0x573 JUMP JUMPDEST SWAP2 POP PUSH1 0x40 DUP5 ADD CALLDATALOAD SWAP1 POP SWAP3 POP SWAP3 POP SWAP3 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x607 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x610 DUP3 PUSH2 0x573 JUMP JUMPDEST SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH2 0x62A JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x633 DUP4 PUSH2 0x573 JUMP JUMPDEST SWAP2 POP PUSH2 0x641 PUSH1 0x20 DUP5 ADD PUSH2 0x573 JUMP JUMPDEST SWAP1 POP SWAP3 POP SWAP3 SWAP1 POP JUMP JUMPDEST PUSH1 0x1 DUP2 DUP2 SHR SWAP1 DUP3 AND DUP1 PUSH2 0x65E JUMPI PUSH1 0x7F DUP3 AND SWAP2 POP JUMPDEST PUSH1 0x20 DUP3 LT DUP2 SUB PUSH2 0x67E 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 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP4 SWAP1 SWAP4 AND DUP4 MSTORE PUSH1 0x20 DUP4 ADD SWAP2 SWAP1 SWAP2 MSTORE PUSH1 0x40 DUP3 ADD MSTORE PUSH1 0x60 ADD SWAP1 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP2 SWAP1 SWAP2 AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 JUMP JUMPDEST DUP1 DUP3 ADD DUP1 DUP3 GT ISZERO PUSH2 0x1FA JUMPI PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH1 0x0 MSTORE PUSH1 0x11 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 SWAP8 SHR DIV GT 0xAA MSTORE 0x27 0x4B JUMPDEST NOT EXTCODEHASH SWAP9 0xB7 0xE4 0xA9 0xE2 0xE3 0xB8 0x5D SWAP5 PUSH21 0xDD56B20A8924D5DAA020DC64736F6C634300081400 CALLER ", - "sourceMap": "115:143:6:-:0;;;151:105;;;;;;;;;;1601:113:1;;;;;;;;;;;;;-1:-1:-1;;;1601:113:1;;;;;;;;;;;;;;;;-1:-1:-1;;;1601:113:1;;;1675:5;1667;:13;;;;;;:::i;:::-;-1:-1:-1;1690:7:1;:17;1700:7;1690;:17;:::i;:::-;;1601:113;;204:45:6::1;210:10;238;:8;;;:10;;:::i;:::-;232:16;::::0;:2:::1;:16;:::i;:::-;222:26;::::0;:7:::1;:26;:::i;:::-;204:5;:45::i;:::-;115:143:::0;;2707:82:1;2780:2;;2707:82::o;7458:208::-;-1:-1:-1;;;;;7528:21:1;;7524:91;;7572:32;;-1:-1:-1;;;7572:32:1;;7601:1;7572:32;;;4569:51:7;4542:18;;7572:32:1;;;;;;;;7524:91;7624:35;7640:1;7644:7;7653:5;7624:7;:35::i;:::-;7458:208;;:::o;6008:1107::-;-1:-1:-1;;;;;6097:18:1;;6093:540;;6249:5;6233:12;;:21;;;;;;;:::i;:::-;;;;-1:-1:-1;6093:540:1;;-1:-1:-1;6093:540:1;;-1:-1:-1;;;;;6307:15:1;;6285:19;6307:15;;;;;;;;;;;6340:19;;;6336:115;;;6386:50;;-1:-1:-1;;;6386:50:1;;-1:-1:-1;;;;;4981:32:7;;6386:50:1;;;4963:51:7;5030:18;;;5023:34;;;5073:18;;;5066:34;;;4936:18;;6386:50:1;4761:345:7;6336:115:1;-1:-1:-1;;;;;6571:15:1;;:9;:15;;;;;;;;;;6589:19;;;;6571:37;;6093:540;-1:-1:-1;;;;;6647:16:1;;6643:425;;6810:12;:21;;;;;;;6643:425;;;-1:-1:-1;;;;;7021:13:1;;:9;:13;;;;;;;;;;:22;;;;;;6643:425;7098:2;-1:-1:-1;;;;;7083:25:1;7092:4;-1:-1:-1;;;;;7083:25:1;;7102:5;7083:25;;;;5257::7;;5245:2;5230:18;;5111:177;7083:25:1;;;;;;;;6008:1107;;;:::o;14:127:7:-;75:10;70:3;66:20;63:1;56:31;106:4;103:1;96:15;130:4;127:1;120:15;146:380;225:1;221:12;;;;268;;;289:61;;343:4;335:6;331:17;321:27;;289:61;396:2;388:6;385:14;365:18;362:38;359:161;;442:10;437:3;433:20;430:1;423:31;477:4;474:1;467:15;505:4;502:1;495:15;359:161;;146:380;;;:::o;657:545::-;759:2;754:3;751:11;748:448;;;795:1;820:5;816:2;809:17;865:4;861:2;851:19;935:2;923:10;919:19;916:1;912:27;906:4;902:38;971:4;959:10;956:20;953:47;;;-1:-1:-1;994:4:7;953:47;1049:2;1044:3;1040:12;1037:1;1033:20;1027:4;1023:31;1013:41;;1104:82;1122:2;1115:5;1112:13;1104:82;;;1167:17;;;1148:1;1137:13;1104:82;;;1108:3;;;748:448;657:545;;;:::o;1378:1352::-;1498:10;;-1:-1:-1;;;;;1520:30:7;;1517:56;;;1553:18;;:::i;:::-;1582:97;1672:6;1632:38;1664:4;1658:11;1632:38;:::i;:::-;1626:4;1582:97;:::i;:::-;1734:4;;1798:2;1787:14;;1815:1;1810:663;;;;2517:1;2534:6;2531:89;;;-1:-1:-1;2586:19:7;;;2580:26;2531:89;-1:-1:-1;;1335:1:7;1331:11;;;1327:24;1323:29;1313:40;1359:1;1355:11;;;1310:57;2633:81;;1780:944;;1810:663;604:1;597:14;;;641:4;628:18;;-1:-1:-1;;1846:20:7;;;1964:236;1978:7;1975:1;1972:14;1964:236;;;2067:19;;;2061:26;2046:42;;2159:27;;;;2127:1;2115:14;;;;1994:19;;1964:236;;;1968:3;2228:6;2219:7;2216:19;2213:201;;;2289:19;;;2283:26;-1:-1:-1;;2372:1:7;2368:14;;;2384:3;2364:24;2360:37;2356:42;2341:58;2326:74;;2213:201;-1:-1:-1;;;;;2460:1:7;2444:14;;;2440:22;2427:36;;-1:-1:-1;1378:1352:7:o;2735:127::-;2796:10;2791:3;2787:20;2784:1;2777:31;2827:4;2824:1;2817:15;2851:4;2848:1;2841:15;2867:422;2956:1;2999:5;2956:1;3013:270;3034:7;3024:8;3021:21;3013:270;;;3093:4;3089:1;3085:6;3081:17;3075:4;3072:27;3069:53;;;3102:18;;:::i;:::-;3152:7;3142:8;3138:22;3135:55;;;3172:16;;;;3135:55;3251:22;;;;3211:15;;;;3013:270;;;3017:3;2867:422;;;;;:::o;3294:806::-;3343:5;3373:8;3363:80;;-1:-1:-1;3414:1:7;3428:5;;3363:80;3462:4;3452:76;;-1:-1:-1;3499:1:7;3513:5;;3452:76;3544:4;3562:1;3557:59;;;;3630:1;3625:130;;;;3537:218;;3557:59;3587:1;3578:10;;3601:5;;;3625:130;3662:3;3652:8;3649:17;3646:43;;;3669:18;;:::i;:::-;-1:-1:-1;;3725:1:7;3711:16;;3740:5;;3537:218;;3839:2;3829:8;3826:16;3820:3;3814:4;3811:13;3807:36;3801:2;3791:8;3788:16;3783:2;3777:4;3774:12;3770:35;3767:77;3764:159;;;-1:-1:-1;3876:19:7;;;3908:5;;3764:159;3955:34;3980:8;3974:4;3955:34;:::i;:::-;4025:6;4021:1;4017:6;4013:19;4004:7;4001:32;3998:58;;;4036:18;;:::i;:::-;4074:20;;-1:-1:-1;3294:806:7;;;;;:::o;4105:140::-;4163:5;4192:47;4233:4;4223:8;4219:19;4213:4;4192:47;:::i;:::-;4183:56;4105:140;-1:-1:-1;;;4105:140:7:o;4250:168::-;4323:9;;;4354;;4371:15;;;4365:22;;4351:37;4341:71;;4392:18;;:::i;4631:125::-;4696:9;;;4717:10;;;4714:36;;;4730:18;;:::i;5111:177::-;115:143:6;;;;;;" - }, - "deployedBytecode": { - "functionDebugData": { - "@_approve_542": { - "entryPoint": 620, - "id": 542, - "parameterSlots": 3, - "returnSlots": 0 - }, - "@_approve_602": { - "entryPoint": 825, - "id": 602, - "parameterSlots": 4, - "returnSlots": 0 - }, - "@_msgSender_767": { - "entryPoint": null, - "id": 767, - "parameterSlots": 0, - "returnSlots": 1 - }, - "@_spendAllowance_650": { - "entryPoint": 638, - "id": 650, - "parameterSlots": 3, - "returnSlots": 0 - }, - "@_transfer_381": { - "entryPoint": 730, - "id": 381, - "parameterSlots": 3, - "returnSlots": 0 - }, - "@_update_458": { - "entryPoint": 1038, - "id": 458, - "parameterSlots": 3, - "returnSlots": 0 - }, - "@allowance_278": { - "entryPoint": 577, - "id": 278, - "parameterSlots": 2, - "returnSlots": 1 - }, - "@approve_302": { - "entryPoint": 486, - "id": 302, - "parameterSlots": 2, - "returnSlots": 1 - }, - "@balanceOf_237": { - "entryPoint": null, - "id": 237, - "parameterSlots": 1, - "returnSlots": 1 - }, - "@decimals_215": { - "entryPoint": null, - "id": 215, - "parameterSlots": 0, - "returnSlots": 1 - }, - "@name_197": { - "entryPoint": 340, - "id": 197, - "parameterSlots": 0, - "returnSlots": 1 - }, - "@symbol_206": { - "entryPoint": 548, - "id": 206, - "parameterSlots": 0, - "returnSlots": 1 - }, - "@totalSupply_224": { - "entryPoint": null, - "id": 224, - "parameterSlots": 0, - "returnSlots": 1 - }, - "@transferFrom_334": { - "entryPoint": 512, - "id": 334, - "parameterSlots": 3, - "returnSlots": 1 - }, - "@transfer_261": { - "entryPoint": 563, - "id": 261, - "parameterSlots": 2, - "returnSlots": 1 - }, - "abi_decode_address": { - "entryPoint": 1395, - "id": null, - "parameterSlots": 1, - "returnSlots": 1 - }, - "abi_decode_tuple_t_address": { - "entryPoint": 1525, - "id": null, - "parameterSlots": 2, - "returnSlots": 1 - }, - "abi_decode_tuple_t_addresst_address": { - "entryPoint": 1559, - "id": null, - "parameterSlots": 2, - "returnSlots": 2 - }, - "abi_decode_tuple_t_addresst_addresst_uint256": { - "entryPoint": 1465, - "id": null, - "parameterSlots": 2, - "returnSlots": 3 - }, - "abi_decode_tuple_t_addresst_uint256": { - "entryPoint": 1423, - "id": null, - "parameterSlots": 2, - "returnSlots": 2 - }, - "abi_encode_tuple_t_address__to_t_address__fromStack_reversed": { - "entryPoint": 1701, - "id": null, - "parameterSlots": 2, - "returnSlots": 1 - }, - "abi_encode_tuple_t_address_t_uint256_t_uint256__to_t_address_t_uint256_t_uint256__fromStack_reversed": { - "entryPoint": 1668, - "id": null, - "parameterSlots": 4, - "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": 1317, - "id": null, - "parameterSlots": 2, - "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": 1721, - "id": null, - "parameterSlots": 2, - "returnSlots": 1 - }, - "extract_byte_array_length": { - "entryPoint": 1610, - "id": null, - "parameterSlots": 1, - "returnSlots": 1 - } - }, - "generatedSources": [ - { - "ast": { - "nodeType": "YulBlock", - "src": "0:3523:7", - "statements": [ - { - "nodeType": "YulBlock", - "src": "6:3:7", - "statements": [] - }, - { - "body": { - "nodeType": "YulBlock", - "src": "135:427:7", - "statements": [ - { - "nodeType": "YulVariableDeclaration", - "src": "145:12:7", - "value": { - "kind": "number", - "nodeType": "YulLiteral", - "src": "155:2:7", - "type": "", - "value": "32" - }, - "variables": [ - { - "name": "_1", - "nodeType": "YulTypedName", - "src": "149:2:7", - "type": "" - } - ] - }, - { - "expression": { - "arguments": [ - { - "name": "headStart", - "nodeType": "YulIdentifier", - "src": "173:9:7" - }, - { - "name": "_1", - "nodeType": "YulIdentifier", - "src": "184:2:7" - } - ], - "functionName": { - "name": "mstore", - "nodeType": "YulIdentifier", - "src": "166:6:7" - }, - "nodeType": "YulFunctionCall", - "src": "166:21:7" - }, - "nodeType": "YulExpressionStatement", - "src": "166:21:7" - }, - { - "nodeType": "YulVariableDeclaration", - "src": "196:27:7", - "value": { - "arguments": [ - { - "name": "value0", - "nodeType": "YulIdentifier", - "src": "216:6:7" - } - ], - "functionName": { - "name": "mload", - "nodeType": "YulIdentifier", - "src": "210:5:7" - }, - "nodeType": "YulFunctionCall", - "src": "210:13:7" - }, - "variables": [ - { - "name": "length", - "nodeType": "YulTypedName", - "src": "200:6:7", - "type": "" - } - ] - }, - { - "expression": { - "arguments": [ - { - "arguments": [ - { - "name": "headStart", - "nodeType": "YulIdentifier", - "src": "243:9:7" - }, - { - "name": "_1", - "nodeType": "YulIdentifier", - "src": "254:2:7" - } - ], - "functionName": { - "name": "add", - "nodeType": "YulIdentifier", - "src": "239:3:7" - }, - "nodeType": "YulFunctionCall", - "src": "239:18:7" - }, - { - "name": "length", - "nodeType": "YulIdentifier", - "src": "259:6:7" - } - ], - "functionName": { - "name": "mstore", - "nodeType": "YulIdentifier", - "src": "232:6:7" - }, - "nodeType": "YulFunctionCall", - "src": "232:34:7" - }, - "nodeType": "YulExpressionStatement", - "src": "232:34:7" - }, - { - "nodeType": "YulVariableDeclaration", - "src": "275:10:7", - "value": { - "kind": "number", - "nodeType": "YulLiteral", - "src": "284:1:7", - "type": "", - "value": "0" - }, - "variables": [ - { - "name": "i", - "nodeType": "YulTypedName", - "src": "279:1:7", - "type": "" - } - ] - }, - { - "body": { - "nodeType": "YulBlock", - "src": "344:90:7", - "statements": [ - { - "expression": { - "arguments": [ - { - "arguments": [ - { - "arguments": [ - { - "name": "headStart", - "nodeType": "YulIdentifier", - "src": "373:9:7" - }, - { - "name": "i", - "nodeType": "YulIdentifier", - "src": "384:1:7" - } - ], - "functionName": { - "name": "add", - "nodeType": "YulIdentifier", - "src": "369:3:7" - }, - "nodeType": "YulFunctionCall", - "src": "369:17:7" - }, - { - "kind": "number", - "nodeType": "YulLiteral", - "src": "388:2:7", - "type": "", - "value": "64" - } - ], - "functionName": { - "name": "add", - "nodeType": "YulIdentifier", - "src": "365:3:7" - }, - "nodeType": "YulFunctionCall", - "src": "365:26:7" - }, - { - "arguments": [ - { - "arguments": [ - { - "arguments": [ - { - "name": "value0", - "nodeType": "YulIdentifier", - "src": "407:6:7" - }, - { - "name": "i", - "nodeType": "YulIdentifier", - "src": "415:1:7" - } - ], - "functionName": { - "name": "add", - "nodeType": "YulIdentifier", - "src": "403:3:7" - }, - "nodeType": "YulFunctionCall", - "src": "403:14:7" - }, - { - "name": "_1", - "nodeType": "YulIdentifier", - "src": "419:2:7" - } - ], - "functionName": { - "name": "add", - "nodeType": "YulIdentifier", - "src": "399:3:7" - }, - "nodeType": "YulFunctionCall", - "src": "399:23:7" - } - ], - "functionName": { - "name": "mload", - "nodeType": "YulIdentifier", - "src": "393:5:7" - }, - "nodeType": "YulFunctionCall", - "src": "393:30:7" - } - ], - "functionName": { - "name": "mstore", - "nodeType": "YulIdentifier", - "src": "358:6:7" - }, - "nodeType": "YulFunctionCall", - "src": "358:66:7" - }, - "nodeType": "YulExpressionStatement", - "src": "358:66:7" - } - ] - }, - "condition": { - "arguments": [ - { - "name": "i", - "nodeType": "YulIdentifier", - "src": "305:1:7" - }, - { - "name": "length", - "nodeType": "YulIdentifier", - "src": "308:6:7" - } - ], - "functionName": { - "name": "lt", - "nodeType": "YulIdentifier", - "src": "302:2:7" - }, - "nodeType": "YulFunctionCall", - "src": "302:13:7" - }, - "nodeType": "YulForLoop", - "post": { - "nodeType": "YulBlock", - "src": "316:19:7", - "statements": [ - { - "nodeType": "YulAssignment", - "src": "318:15:7", - "value": { - "arguments": [ - { - "name": "i", - "nodeType": "YulIdentifier", - "src": "327:1:7" - }, - { - "name": "_1", - "nodeType": "YulIdentifier", - "src": "330:2:7" - } - ], - "functionName": { - "name": "add", - "nodeType": "YulIdentifier", - "src": "323:3:7" - }, - "nodeType": "YulFunctionCall", - "src": "323:10:7" - }, - "variableNames": [ - { - "name": "i", - "nodeType": "YulIdentifier", - "src": "318:1:7" - } - ] - } - ] - }, - "pre": { - "nodeType": "YulBlock", - "src": "298:3:7", - "statements": [] - }, - "src": "294:140:7" - }, - { - "expression": { - "arguments": [ - { - "arguments": [ - { - "arguments": [ - { - "name": "headStart", - "nodeType": "YulIdentifier", - "src": "458:9:7" - }, - { - "name": "length", - "nodeType": "YulIdentifier", - "src": "469:6:7" - } - ], - "functionName": { - "name": "add", - "nodeType": "YulIdentifier", - "src": "454:3:7" - }, - "nodeType": "YulFunctionCall", - "src": "454:22:7" - }, - { - "kind": "number", - "nodeType": "YulLiteral", - "src": "478:2:7", - "type": "", - "value": "64" - } - ], - "functionName": { - "name": "add", - "nodeType": "YulIdentifier", - "src": "450:3:7" - }, - "nodeType": "YulFunctionCall", - "src": "450:31:7" - }, - { - "kind": "number", - "nodeType": "YulLiteral", - "src": "483:1:7", - "type": "", - "value": "0" - } - ], - "functionName": { - "name": "mstore", - "nodeType": "YulIdentifier", - "src": "443:6:7" - }, - "nodeType": "YulFunctionCall", - "src": "443:42:7" - }, - "nodeType": "YulExpressionStatement", - "src": "443:42:7" - }, - { - "nodeType": "YulAssignment", - "src": "494:62:7", - "value": { - "arguments": [ - { - "arguments": [ - { - "name": "headStart", - "nodeType": "YulIdentifier", - "src": "510:9:7" - }, - { - "arguments": [ - { - "arguments": [ - { - "name": "length", - "nodeType": "YulIdentifier", - "src": "529:6:7" - }, - { - "kind": "number", - "nodeType": "YulLiteral", - "src": "537:2:7", - "type": "", - "value": "31" - } - ], - "functionName": { - "name": "add", - "nodeType": "YulIdentifier", - "src": "525:3:7" - }, - "nodeType": "YulFunctionCall", - "src": "525:15:7" - }, - { - "arguments": [ - { - "kind": "number", - "nodeType": "YulLiteral", - "src": "546:2:7", - "type": "", - "value": "31" - } - ], - "functionName": { - "name": "not", - "nodeType": "YulIdentifier", - "src": "542:3:7" - }, - "nodeType": "YulFunctionCall", - "src": "542:7:7" - } - ], - "functionName": { - "name": "and", - "nodeType": "YulIdentifier", - "src": "521:3:7" - }, - "nodeType": "YulFunctionCall", - "src": "521:29:7" - } - ], - "functionName": { - "name": "add", - "nodeType": "YulIdentifier", - "src": "506:3:7" - }, - "nodeType": "YulFunctionCall", - "src": "506:45:7" - }, - { - "kind": "number", - "nodeType": "YulLiteral", - "src": "553:2:7", - "type": "", - "value": "64" - } - ], - "functionName": { - "name": "add", - "nodeType": "YulIdentifier", - "src": "502:3:7" - }, - "nodeType": "YulFunctionCall", - "src": "502:54:7" - }, - "variableNames": [ - { - "name": "tail", - "nodeType": "YulIdentifier", - "src": "494:4:7" - } - ] - } - ] - }, - "name": "abi_encode_tuple_t_string_memory_ptr__to_t_string_memory_ptr__fromStack_reversed", - "nodeType": "YulFunctionDefinition", - "parameters": [ - { - "name": "headStart", - "nodeType": "YulTypedName", - "src": "104:9:7", - "type": "" - }, - { - "name": "value0", - "nodeType": "YulTypedName", - "src": "115:6:7", - "type": "" - } - ], - "returnVariables": [ - { - "name": "tail", - "nodeType": "YulTypedName", - "src": "126:4:7", - "type": "" - } - ], - "src": "14:548:7" - }, - { - "body": { - "nodeType": "YulBlock", - "src": "616:124:7", - "statements": [ - { - "nodeType": "YulAssignment", - "src": "626:29:7", - "value": { - "arguments": [ - { - "name": "offset", - "nodeType": "YulIdentifier", - "src": "648:6:7" - } - ], - "functionName": { - "name": "calldataload", - "nodeType": "YulIdentifier", - "src": "635:12:7" - }, - "nodeType": "YulFunctionCall", - "src": "635:20:7" - }, - "variableNames": [ - { - "name": "value", - "nodeType": "YulIdentifier", - "src": "626:5:7" - } - ] - }, - { - "body": { - "nodeType": "YulBlock", - "src": "718:16:7", - "statements": [ - { - "expression": { - "arguments": [ - { - "kind": "number", - "nodeType": "YulLiteral", - "src": "727:1:7", - "type": "", - "value": "0" - }, - { - "kind": "number", - "nodeType": "YulLiteral", - "src": "730:1:7", - "type": "", - "value": "0" - } - ], - "functionName": { - "name": "revert", - "nodeType": "YulIdentifier", - "src": "720:6:7" - }, - "nodeType": "YulFunctionCall", - "src": "720:12:7" - }, - "nodeType": "YulExpressionStatement", - "src": "720:12:7" - } - ] - }, - "condition": { - "arguments": [ - { - "arguments": [ - { - "name": "value", - "nodeType": "YulIdentifier", - "src": "677:5:7" - }, - { - "arguments": [ - { - "name": "value", - "nodeType": "YulIdentifier", - "src": "688:5:7" - }, - { - "arguments": [ - { - "arguments": [ - { - "kind": "number", - "nodeType": "YulLiteral", - "src": "703:3:7", - "type": "", - "value": "160" - }, - { - "kind": "number", - "nodeType": "YulLiteral", - "src": "708:1:7", - "type": "", - "value": "1" - } - ], - "functionName": { - "name": "shl", - "nodeType": "YulIdentifier", - "src": "699:3:7" - }, - "nodeType": "YulFunctionCall", - "src": "699:11:7" - }, - { - "kind": "number", - "nodeType": "YulLiteral", - "src": "712:1:7", - "type": "", - "value": "1" - } - ], - "functionName": { - "name": "sub", - "nodeType": "YulIdentifier", - "src": "695:3:7" - }, - "nodeType": "YulFunctionCall", - "src": "695:19:7" - } - ], - "functionName": { - "name": "and", - "nodeType": "YulIdentifier", - "src": "684:3:7" - }, - "nodeType": "YulFunctionCall", - "src": "684:31:7" - } - ], - "functionName": { - "name": "eq", - "nodeType": "YulIdentifier", - "src": "674:2:7" - }, - "nodeType": "YulFunctionCall", - "src": "674:42:7" - } - ], - "functionName": { - "name": "iszero", - "nodeType": "YulIdentifier", - "src": "667:6:7" - }, - "nodeType": "YulFunctionCall", - "src": "667:50:7" - }, - "nodeType": "YulIf", - "src": "664:70:7" - } - ] - }, - "name": "abi_decode_address", - "nodeType": "YulFunctionDefinition", - "parameters": [ - { - "name": "offset", - "nodeType": "YulTypedName", - "src": "595:6:7", - "type": "" - } - ], - "returnVariables": [ - { - "name": "value", - "nodeType": "YulTypedName", - "src": "606:5:7", - "type": "" - } - ], - "src": "567:173:7" - }, - { - "body": { - "nodeType": "YulBlock", - "src": "832:167:7", - "statements": [ - { - "body": { - "nodeType": "YulBlock", - "src": "878:16:7", - "statements": [ - { - "expression": { - "arguments": [ - { - "kind": "number", - "nodeType": "YulLiteral", - "src": "887:1:7", - "type": "", - "value": "0" - }, - { - "kind": "number", - "nodeType": "YulLiteral", - "src": "890:1:7", - "type": "", - "value": "0" - } - ], - "functionName": { - "name": "revert", - "nodeType": "YulIdentifier", - "src": "880:6:7" - }, - "nodeType": "YulFunctionCall", - "src": "880:12:7" - }, - "nodeType": "YulExpressionStatement", - "src": "880:12:7" - } - ] - }, - "condition": { - "arguments": [ - { - "arguments": [ - { - "name": "dataEnd", - "nodeType": "YulIdentifier", - "src": "853:7:7" - }, - { - "name": "headStart", - "nodeType": "YulIdentifier", - "src": "862:9:7" - } - ], - "functionName": { - "name": "sub", - "nodeType": "YulIdentifier", - "src": "849:3:7" - }, - "nodeType": "YulFunctionCall", - "src": "849:23:7" - }, - { - "kind": "number", - "nodeType": "YulLiteral", - "src": "874:2:7", - "type": "", - "value": "64" - } - ], - "functionName": { - "name": "slt", - "nodeType": "YulIdentifier", - "src": "845:3:7" - }, - "nodeType": "YulFunctionCall", - "src": "845:32:7" - }, - "nodeType": "YulIf", - "src": "842:52:7" - }, - { - "nodeType": "YulAssignment", - "src": "903:39:7", - "value": { - "arguments": [ - { - "name": "headStart", - "nodeType": "YulIdentifier", - "src": "932:9:7" - } - ], - "functionName": { - "name": "abi_decode_address", - "nodeType": "YulIdentifier", - "src": "913:18:7" - }, - "nodeType": "YulFunctionCall", - "src": "913:29:7" - }, - "variableNames": [ - { - "name": "value0", - "nodeType": "YulIdentifier", - "src": "903:6:7" - } - ] - }, - { - "nodeType": "YulAssignment", - "src": "951:42:7", - "value": { - "arguments": [ - { - "arguments": [ - { - "name": "headStart", - "nodeType": "YulIdentifier", - "src": "978:9:7" - }, - { - "kind": "number", - "nodeType": "YulLiteral", - "src": "989:2:7", - "type": "", - "value": "32" - } - ], - "functionName": { - "name": "add", - "nodeType": "YulIdentifier", - "src": "974:3:7" - }, - "nodeType": "YulFunctionCall", - "src": "974:18:7" - } - ], - "functionName": { - "name": "calldataload", - "nodeType": "YulIdentifier", - "src": "961:12:7" - }, - "nodeType": "YulFunctionCall", - "src": "961:32:7" - }, - "variableNames": [ - { - "name": "value1", - "nodeType": "YulIdentifier", - "src": "951:6:7" - } - ] - } - ] - }, - "name": "abi_decode_tuple_t_addresst_uint256", - "nodeType": "YulFunctionDefinition", - "parameters": [ - { - "name": "headStart", - "nodeType": "YulTypedName", - "src": "790:9:7", - "type": "" - }, - { - "name": "dataEnd", - "nodeType": "YulTypedName", - "src": "801:7:7", - "type": "" - } - ], - "returnVariables": [ - { - "name": "value0", - "nodeType": "YulTypedName", - "src": "813:6:7", - "type": "" - }, - { - "name": "value1", - "nodeType": "YulTypedName", - "src": "821:6:7", - "type": "" - } - ], - "src": "745:254:7" - }, - { - "body": { - "nodeType": "YulBlock", - "src": "1099:92:7", - "statements": [ - { - "nodeType": "YulAssignment", - "src": "1109:26:7", - "value": { - "arguments": [ - { - "name": "headStart", - "nodeType": "YulIdentifier", - "src": "1121:9:7" - }, - { - "kind": "number", - "nodeType": "YulLiteral", - "src": "1132:2:7", - "type": "", - "value": "32" - } - ], - "functionName": { - "name": "add", - "nodeType": "YulIdentifier", - "src": "1117:3:7" - }, - "nodeType": "YulFunctionCall", - "src": "1117:18:7" - }, - "variableNames": [ - { - "name": "tail", - "nodeType": "YulIdentifier", - "src": "1109:4:7" - } - ] - }, - { - "expression": { - "arguments": [ - { - "name": "headStart", - "nodeType": "YulIdentifier", - "src": "1151:9:7" - }, - { - "arguments": [ - { - "arguments": [ - { - "name": "value0", - "nodeType": "YulIdentifier", - "src": "1176:6:7" - } - ], - "functionName": { - "name": "iszero", - "nodeType": "YulIdentifier", - "src": "1169:6:7" - }, - "nodeType": "YulFunctionCall", - "src": "1169:14:7" - } - ], - "functionName": { - "name": "iszero", - "nodeType": "YulIdentifier", - "src": "1162:6:7" - }, - "nodeType": "YulFunctionCall", - "src": "1162:22:7" - } - ], - "functionName": { - "name": "mstore", - "nodeType": "YulIdentifier", - "src": "1144:6:7" - }, - "nodeType": "YulFunctionCall", - "src": "1144:41:7" - }, - "nodeType": "YulExpressionStatement", - "src": "1144:41:7" - } - ] - }, - "name": "abi_encode_tuple_t_bool__to_t_bool__fromStack_reversed", - "nodeType": "YulFunctionDefinition", - "parameters": [ - { - "name": "headStart", - "nodeType": "YulTypedName", - "src": "1068:9:7", - "type": "" - }, - { - "name": "value0", - "nodeType": "YulTypedName", - "src": "1079:6:7", - "type": "" - } - ], - "returnVariables": [ - { - "name": "tail", - "nodeType": "YulTypedName", - "src": "1090:4:7", - "type": "" - } - ], - "src": "1004:187:7" - }, - { - "body": { - "nodeType": "YulBlock", - "src": "1297:76:7", - "statements": [ - { - "nodeType": "YulAssignment", - "src": "1307:26:7", - "value": { - "arguments": [ - { - "name": "headStart", - "nodeType": "YulIdentifier", - "src": "1319:9:7" - }, - { - "kind": "number", - "nodeType": "YulLiteral", - "src": "1330:2:7", - "type": "", - "value": "32" - } - ], - "functionName": { - "name": "add", - "nodeType": "YulIdentifier", - "src": "1315:3:7" - }, - "nodeType": "YulFunctionCall", - "src": "1315:18:7" - }, - "variableNames": [ - { - "name": "tail", - "nodeType": "YulIdentifier", - "src": "1307:4:7" - } - ] - }, - { - "expression": { - "arguments": [ - { - "name": "headStart", - "nodeType": "YulIdentifier", - "src": "1349:9:7" - }, - { - "name": "value0", - "nodeType": "YulIdentifier", - "src": "1360:6:7" - } - ], - "functionName": { - "name": "mstore", - "nodeType": "YulIdentifier", - "src": "1342:6:7" - }, - "nodeType": "YulFunctionCall", - "src": "1342:25:7" - }, - "nodeType": "YulExpressionStatement", - "src": "1342:25:7" - } - ] - }, - "name": "abi_encode_tuple_t_uint256__to_t_uint256__fromStack_reversed", - "nodeType": "YulFunctionDefinition", - "parameters": [ - { - "name": "headStart", - "nodeType": "YulTypedName", - "src": "1266:9:7", - "type": "" - }, - { - "name": "value0", - "nodeType": "YulTypedName", - "src": "1277:6:7", - "type": "" - } - ], - "returnVariables": [ - { - "name": "tail", - "nodeType": "YulTypedName", - "src": "1288:4:7", - "type": "" - } - ], - "src": "1196:177:7" - }, - { - "body": { - "nodeType": "YulBlock", - "src": "1482:224:7", - "statements": [ - { - "body": { - "nodeType": "YulBlock", - "src": "1528:16:7", - "statements": [ - { - "expression": { - "arguments": [ - { - "kind": "number", - "nodeType": "YulLiteral", - "src": "1537:1:7", - "type": "", - "value": "0" - }, - { - "kind": "number", - "nodeType": "YulLiteral", - "src": "1540:1:7", - "type": "", - "value": "0" - } - ], - "functionName": { - "name": "revert", - "nodeType": "YulIdentifier", - "src": "1530:6:7" - }, - "nodeType": "YulFunctionCall", - "src": "1530:12:7" - }, - "nodeType": "YulExpressionStatement", - "src": "1530:12:7" - } - ] - }, - "condition": { - "arguments": [ - { - "arguments": [ - { - "name": "dataEnd", - "nodeType": "YulIdentifier", - "src": "1503:7:7" - }, - { - "name": "headStart", - "nodeType": "YulIdentifier", - "src": "1512:9:7" - } - ], - "functionName": { - "name": "sub", - "nodeType": "YulIdentifier", - "src": "1499:3:7" - }, - "nodeType": "YulFunctionCall", - "src": "1499:23:7" - }, - { - "kind": "number", - "nodeType": "YulLiteral", - "src": "1524:2:7", - "type": "", - "value": "96" - } - ], - "functionName": { - "name": "slt", - "nodeType": "YulIdentifier", - "src": "1495:3:7" - }, - "nodeType": "YulFunctionCall", - "src": "1495:32:7" - }, - "nodeType": "YulIf", - "src": "1492:52:7" - }, - { - "nodeType": "YulAssignment", - "src": "1553:39:7", - "value": { - "arguments": [ - { - "name": "headStart", - "nodeType": "YulIdentifier", - "src": "1582:9:7" - } - ], - "functionName": { - "name": "abi_decode_address", - "nodeType": "YulIdentifier", - "src": "1563:18:7" - }, - "nodeType": "YulFunctionCall", - "src": "1563:29:7" - }, - "variableNames": [ - { - "name": "value0", - "nodeType": "YulIdentifier", - "src": "1553:6:7" - } - ] - }, - { - "nodeType": "YulAssignment", - "src": "1601:48:7", - "value": { - "arguments": [ - { - "arguments": [ - { - "name": "headStart", - "nodeType": "YulIdentifier", - "src": "1634:9:7" - }, - { - "kind": "number", - "nodeType": "YulLiteral", - "src": "1645:2:7", - "type": "", - "value": "32" - } - ], - "functionName": { - "name": "add", - "nodeType": "YulIdentifier", - "src": "1630:3:7" - }, - "nodeType": "YulFunctionCall", - "src": "1630:18:7" - } - ], - "functionName": { - "name": "abi_decode_address", - "nodeType": "YulIdentifier", - "src": "1611:18:7" - }, - "nodeType": "YulFunctionCall", - "src": "1611:38:7" - }, - "variableNames": [ - { - "name": "value1", - "nodeType": "YulIdentifier", - "src": "1601:6:7" - } - ] - }, - { - "nodeType": "YulAssignment", - "src": "1658:42:7", - "value": { - "arguments": [ - { - "arguments": [ - { - "name": "headStart", - "nodeType": "YulIdentifier", - "src": "1685:9:7" - }, - { - "kind": "number", - "nodeType": "YulLiteral", - "src": "1696:2:7", - "type": "", - "value": "64" - } - ], - "functionName": { - "name": "add", - "nodeType": "YulIdentifier", - "src": "1681:3:7" - }, - "nodeType": "YulFunctionCall", - "src": "1681:18:7" - } - ], - "functionName": { - "name": "calldataload", - "nodeType": "YulIdentifier", - "src": "1668:12:7" - }, - "nodeType": "YulFunctionCall", - "src": "1668:32:7" - }, - "variableNames": [ - { - "name": "value2", - "nodeType": "YulIdentifier", - "src": "1658:6:7" - } - ] - } - ] - }, - "name": "abi_decode_tuple_t_addresst_addresst_uint256", - "nodeType": "YulFunctionDefinition", - "parameters": [ - { - "name": "headStart", - "nodeType": "YulTypedName", - "src": "1432:9:7", - "type": "" - }, - { - "name": "dataEnd", - "nodeType": "YulTypedName", - "src": "1443:7:7", - "type": "" - } - ], - "returnVariables": [ - { - "name": "value0", - "nodeType": "YulTypedName", - "src": "1455:6:7", - "type": "" - }, - { - "name": "value1", - "nodeType": "YulTypedName", - "src": "1463:6:7", - "type": "" - }, - { - "name": "value2", - "nodeType": "YulTypedName", - "src": "1471:6:7", - "type": "" - } - ], - "src": "1378:328:7" - }, - { - "body": { - "nodeType": "YulBlock", - "src": "1808:87:7", - "statements": [ - { - "nodeType": "YulAssignment", - "src": "1818:26:7", - "value": { - "arguments": [ - { - "name": "headStart", - "nodeType": "YulIdentifier", - "src": "1830:9:7" - }, - { - "kind": "number", - "nodeType": "YulLiteral", - "src": "1841:2:7", - "type": "", - "value": "32" - } - ], - "functionName": { - "name": "add", - "nodeType": "YulIdentifier", - "src": "1826:3:7" - }, - "nodeType": "YulFunctionCall", - "src": "1826:18:7" - }, - "variableNames": [ - { - "name": "tail", - "nodeType": "YulIdentifier", - "src": "1818:4:7" - } - ] - }, - { - "expression": { - "arguments": [ - { - "name": "headStart", - "nodeType": "YulIdentifier", - "src": "1860:9:7" - }, - { - "arguments": [ - { - "name": "value0", - "nodeType": "YulIdentifier", - "src": "1875:6:7" - }, - { - "kind": "number", - "nodeType": "YulLiteral", - "src": "1883:4:7", - "type": "", - "value": "0xff" - } - ], - "functionName": { - "name": "and", - "nodeType": "YulIdentifier", - "src": "1871:3:7" - }, - "nodeType": "YulFunctionCall", - "src": "1871:17:7" - } - ], - "functionName": { - "name": "mstore", - "nodeType": "YulIdentifier", - "src": "1853:6:7" - }, - "nodeType": "YulFunctionCall", - "src": "1853:36:7" - }, - "nodeType": "YulExpressionStatement", - "src": "1853:36:7" - } - ] - }, - "name": "abi_encode_tuple_t_uint8__to_t_uint8__fromStack_reversed", - "nodeType": "YulFunctionDefinition", - "parameters": [ - { - "name": "headStart", - "nodeType": "YulTypedName", - "src": "1777:9:7", - "type": "" - }, - { - "name": "value0", - "nodeType": "YulTypedName", - "src": "1788:6:7", - "type": "" - } - ], - "returnVariables": [ - { - "name": "tail", - "nodeType": "YulTypedName", - "src": "1799:4:7", - "type": "" - } - ], - "src": "1711:184:7" - }, - { - "body": { - "nodeType": "YulBlock", - "src": "1970:116:7", - "statements": [ - { - "body": { - "nodeType": "YulBlock", - "src": "2016:16:7", - "statements": [ - { - "expression": { - "arguments": [ - { - "kind": "number", - "nodeType": "YulLiteral", - "src": "2025:1:7", - "type": "", - "value": "0" - }, - { - "kind": "number", - "nodeType": "YulLiteral", - "src": "2028:1:7", - "type": "", - "value": "0" - } - ], - "functionName": { - "name": "revert", - "nodeType": "YulIdentifier", - "src": "2018:6:7" - }, - "nodeType": "YulFunctionCall", - "src": "2018:12:7" - }, - "nodeType": "YulExpressionStatement", - "src": "2018:12:7" - } - ] - }, - "condition": { - "arguments": [ - { - "arguments": [ - { - "name": "dataEnd", - "nodeType": "YulIdentifier", - "src": "1991:7:7" - }, - { - "name": "headStart", - "nodeType": "YulIdentifier", - "src": "2000:9:7" - } - ], - "functionName": { - "name": "sub", - "nodeType": "YulIdentifier", - "src": "1987:3:7" - }, - "nodeType": "YulFunctionCall", - "src": "1987:23:7" - }, - { - "kind": "number", - "nodeType": "YulLiteral", - "src": "2012:2:7", - "type": "", - "value": "32" - } - ], - "functionName": { - "name": "slt", - "nodeType": "YulIdentifier", - "src": "1983:3:7" - }, - "nodeType": "YulFunctionCall", - "src": "1983:32:7" - }, - "nodeType": "YulIf", - "src": "1980:52:7" - }, - { - "nodeType": "YulAssignment", - "src": "2041:39:7", - "value": { - "arguments": [ - { - "name": "headStart", - "nodeType": "YulIdentifier", - "src": "2070:9:7" - } - ], - "functionName": { - "name": "abi_decode_address", - "nodeType": "YulIdentifier", - "src": "2051:18:7" - }, - "nodeType": "YulFunctionCall", - "src": "2051:29:7" - }, - "variableNames": [ - { - "name": "value0", - "nodeType": "YulIdentifier", - "src": "2041:6:7" - } - ] - } - ] - }, - "name": "abi_decode_tuple_t_address", - "nodeType": "YulFunctionDefinition", - "parameters": [ - { - "name": "headStart", - "nodeType": "YulTypedName", - "src": "1936:9:7", - "type": "" - }, - { - "name": "dataEnd", - "nodeType": "YulTypedName", - "src": "1947:7:7", - "type": "" - } - ], - "returnVariables": [ - { - "name": "value0", - "nodeType": "YulTypedName", - "src": "1959:6:7", - "type": "" - } - ], - "src": "1900:186:7" - }, - { - "body": { - "nodeType": "YulBlock", - "src": "2178:173:7", - "statements": [ - { - "body": { - "nodeType": "YulBlock", - "src": "2224:16:7", - "statements": [ - { - "expression": { - "arguments": [ - { - "kind": "number", - "nodeType": "YulLiteral", - "src": "2233:1:7", - "type": "", - "value": "0" - }, - { - "kind": "number", - "nodeType": "YulLiteral", - "src": "2236:1:7", - "type": "", - "value": "0" - } - ], - "functionName": { - "name": "revert", - "nodeType": "YulIdentifier", - "src": "2226:6:7" - }, - "nodeType": "YulFunctionCall", - "src": "2226:12:7" - }, - "nodeType": "YulExpressionStatement", - "src": "2226:12:7" - } - ] - }, - "condition": { - "arguments": [ - { - "arguments": [ - { - "name": "dataEnd", - "nodeType": "YulIdentifier", - "src": "2199:7:7" - }, - { - "name": "headStart", - "nodeType": "YulIdentifier", - "src": "2208:9:7" - } - ], - "functionName": { - "name": "sub", - "nodeType": "YulIdentifier", - "src": "2195:3:7" - }, - "nodeType": "YulFunctionCall", - "src": "2195:23:7" - }, - { - "kind": "number", - "nodeType": "YulLiteral", - "src": "2220:2:7", - "type": "", - "value": "64" - } - ], - "functionName": { - "name": "slt", - "nodeType": "YulIdentifier", - "src": "2191:3:7" - }, - "nodeType": "YulFunctionCall", - "src": "2191:32:7" - }, - "nodeType": "YulIf", - "src": "2188:52:7" - }, - { - "nodeType": "YulAssignment", - "src": "2249:39:7", - "value": { - "arguments": [ - { - "name": "headStart", - "nodeType": "YulIdentifier", - "src": "2278:9:7" - } - ], - "functionName": { - "name": "abi_decode_address", - "nodeType": "YulIdentifier", - "src": "2259:18:7" - }, - "nodeType": "YulFunctionCall", - "src": "2259:29:7" - }, - "variableNames": [ - { - "name": "value0", - "nodeType": "YulIdentifier", - "src": "2249:6:7" - } - ] - }, - { - "nodeType": "YulAssignment", - "src": "2297:48:7", - "value": { - "arguments": [ - { - "arguments": [ - { - "name": "headStart", - "nodeType": "YulIdentifier", - "src": "2330:9:7" - }, - { - "kind": "number", - "nodeType": "YulLiteral", - "src": "2341:2:7", - "type": "", - "value": "32" - } - ], - "functionName": { - "name": "add", - "nodeType": "YulIdentifier", - "src": "2326:3:7" - }, - "nodeType": "YulFunctionCall", - "src": "2326:18:7" - } - ], - "functionName": { - "name": "abi_decode_address", - "nodeType": "YulIdentifier", - "src": "2307:18:7" - }, - "nodeType": "YulFunctionCall", - "src": "2307:38:7" - }, - "variableNames": [ - { - "name": "value1", - "nodeType": "YulIdentifier", - "src": "2297:6:7" - } - ] - } - ] - }, - "name": "abi_decode_tuple_t_addresst_address", - "nodeType": "YulFunctionDefinition", - "parameters": [ - { - "name": "headStart", - "nodeType": "YulTypedName", - "src": "2136:9:7", - "type": "" - }, - { - "name": "dataEnd", - "nodeType": "YulTypedName", - "src": "2147:7:7", - "type": "" - } - ], - "returnVariables": [ - { - "name": "value0", - "nodeType": "YulTypedName", - "src": "2159:6:7", - "type": "" - }, - { - "name": "value1", - "nodeType": "YulTypedName", - "src": "2167:6:7", - "type": "" - } - ], - "src": "2091:260:7" - }, - { - "body": { - "nodeType": "YulBlock", - "src": "2411:325:7", - "statements": [ - { - "nodeType": "YulAssignment", - "src": "2421:22:7", - "value": { - "arguments": [ - { - "kind": "number", - "nodeType": "YulLiteral", - "src": "2435:1:7", - "type": "", - "value": "1" - }, - { - "name": "data", - "nodeType": "YulIdentifier", - "src": "2438:4:7" - } - ], - "functionName": { - "name": "shr", - "nodeType": "YulIdentifier", - "src": "2431:3:7" - }, - "nodeType": "YulFunctionCall", - "src": "2431:12:7" - }, - "variableNames": [ - { - "name": "length", - "nodeType": "YulIdentifier", - "src": "2421:6:7" - } - ] - }, - { - "nodeType": "YulVariableDeclaration", - "src": "2452:38:7", - "value": { - "arguments": [ - { - "name": "data", - "nodeType": "YulIdentifier", - "src": "2482:4:7" - }, - { - "kind": "number", - "nodeType": "YulLiteral", - "src": "2488:1:7", - "type": "", - "value": "1" - } - ], - "functionName": { - "name": "and", - "nodeType": "YulIdentifier", - "src": "2478:3:7" - }, - "nodeType": "YulFunctionCall", - "src": "2478:12:7" - }, - "variables": [ - { - "name": "outOfPlaceEncoding", - "nodeType": "YulTypedName", - "src": "2456:18:7", - "type": "" - } - ] - }, - { - "body": { - "nodeType": "YulBlock", - "src": "2529:31:7", - "statements": [ - { - "nodeType": "YulAssignment", - "src": "2531:27:7", - "value": { - "arguments": [ - { - "name": "length", - "nodeType": "YulIdentifier", - "src": "2545:6:7" - }, - { - "kind": "number", - "nodeType": "YulLiteral", - "src": "2553:4:7", - "type": "", - "value": "0x7f" - } - ], - "functionName": { - "name": "and", - "nodeType": "YulIdentifier", - "src": "2541:3:7" - }, - "nodeType": "YulFunctionCall", - "src": "2541:17:7" - }, - "variableNames": [ - { - "name": "length", - "nodeType": "YulIdentifier", - "src": "2531:6:7" - } - ] - } - ] - }, - "condition": { - "arguments": [ - { - "name": "outOfPlaceEncoding", - "nodeType": "YulIdentifier", - "src": "2509:18:7" - } - ], - "functionName": { - "name": "iszero", - "nodeType": "YulIdentifier", - "src": "2502:6:7" - }, - "nodeType": "YulFunctionCall", - "src": "2502:26:7" - }, - "nodeType": "YulIf", - "src": "2499:61:7" - }, - { - "body": { - "nodeType": "YulBlock", - "src": "2619:111:7", - "statements": [ - { - "expression": { - "arguments": [ - { - "kind": "number", - "nodeType": "YulLiteral", - "src": "2640:1:7", - "type": "", - "value": "0" - }, - { - "arguments": [ - { - "kind": "number", - "nodeType": "YulLiteral", - "src": "2647:3:7", - "type": "", - "value": "224" - }, - { - "kind": "number", - "nodeType": "YulLiteral", - "src": "2652:10:7", - "type": "", - "value": "0x4e487b71" - } - ], - "functionName": { - "name": "shl", - "nodeType": "YulIdentifier", - "src": "2643:3:7" - }, - "nodeType": "YulFunctionCall", - "src": "2643:20:7" - } - ], - "functionName": { - "name": "mstore", - "nodeType": "YulIdentifier", - "src": "2633:6:7" - }, - "nodeType": "YulFunctionCall", - "src": "2633:31:7" - }, - "nodeType": "YulExpressionStatement", - "src": "2633:31:7" - }, - { - "expression": { - "arguments": [ - { - "kind": "number", - "nodeType": "YulLiteral", - "src": "2684:1:7", - "type": "", - "value": "4" - }, - { - "kind": "number", - "nodeType": "YulLiteral", - "src": "2687:4:7", - "type": "", - "value": "0x22" - } - ], - "functionName": { - "name": "mstore", - "nodeType": "YulIdentifier", - "src": "2677:6:7" - }, - "nodeType": "YulFunctionCall", - "src": "2677:15:7" - }, - "nodeType": "YulExpressionStatement", - "src": "2677:15:7" - }, - { - "expression": { - "arguments": [ - { - "kind": "number", - "nodeType": "YulLiteral", - "src": "2712:1:7", - "type": "", - "value": "0" - }, - { - "kind": "number", - "nodeType": "YulLiteral", - "src": "2715:4:7", - "type": "", - "value": "0x24" - } - ], - "functionName": { - "name": "revert", - "nodeType": "YulIdentifier", - "src": "2705:6:7" - }, - "nodeType": "YulFunctionCall", - "src": "2705:15:7" - }, - "nodeType": "YulExpressionStatement", - "src": "2705:15:7" - } - ] - }, - "condition": { - "arguments": [ - { - "name": "outOfPlaceEncoding", - "nodeType": "YulIdentifier", - "src": "2575:18:7" - }, - { - "arguments": [ - { - "name": "length", - "nodeType": "YulIdentifier", - "src": "2598:6:7" - }, - { - "kind": "number", - "nodeType": "YulLiteral", - "src": "2606:2:7", - "type": "", - "value": "32" - } - ], - "functionName": { - "name": "lt", - "nodeType": "YulIdentifier", - "src": "2595:2:7" - }, - "nodeType": "YulFunctionCall", - "src": "2595:14:7" - } - ], - "functionName": { - "name": "eq", - "nodeType": "YulIdentifier", - "src": "2572:2:7" - }, - "nodeType": "YulFunctionCall", - "src": "2572:38:7" - }, - "nodeType": "YulIf", - "src": "2569:161:7" - } - ] - }, - "name": "extract_byte_array_length", - "nodeType": "YulFunctionDefinition", - "parameters": [ - { - "name": "data", - "nodeType": "YulTypedName", - "src": "2391:4:7", - "type": "" - } - ], - "returnVariables": [ - { - "name": "length", - "nodeType": "YulTypedName", - "src": "2400:6:7", - "type": "" - } - ], - "src": "2356:380:7" - }, - { - "body": { - "nodeType": "YulBlock", - "src": "2898:188:7", - "statements": [ - { - "nodeType": "YulAssignment", - "src": "2908:26:7", - "value": { - "arguments": [ - { - "name": "headStart", - "nodeType": "YulIdentifier", - "src": "2920:9:7" - }, - { - "kind": "number", - "nodeType": "YulLiteral", - "src": "2931:2:7", - "type": "", - "value": "96" - } - ], - "functionName": { - "name": "add", - "nodeType": "YulIdentifier", - "src": "2916:3:7" - }, - "nodeType": "YulFunctionCall", - "src": "2916:18:7" - }, - "variableNames": [ - { - "name": "tail", - "nodeType": "YulIdentifier", - "src": "2908:4:7" - } - ] - }, - { - "expression": { - "arguments": [ - { - "name": "headStart", - "nodeType": "YulIdentifier", - "src": "2950:9:7" - }, - { - "arguments": [ - { - "name": "value0", - "nodeType": "YulIdentifier", - "src": "2965:6:7" - }, - { - "arguments": [ - { - "arguments": [ - { - "kind": "number", - "nodeType": "YulLiteral", - "src": "2981:3:7", - "type": "", - "value": "160" - }, - { - "kind": "number", - "nodeType": "YulLiteral", - "src": "2986:1:7", - "type": "", - "value": "1" - } - ], - "functionName": { - "name": "shl", - "nodeType": "YulIdentifier", - "src": "2977:3:7" - }, - "nodeType": "YulFunctionCall", - "src": "2977:11:7" - }, - { - "kind": "number", - "nodeType": "YulLiteral", - "src": "2990:1:7", - "type": "", - "value": "1" - } - ], - "functionName": { - "name": "sub", - "nodeType": "YulIdentifier", - "src": "2973:3:7" - }, - "nodeType": "YulFunctionCall", - "src": "2973:19:7" - } - ], - "functionName": { - "name": "and", - "nodeType": "YulIdentifier", - "src": "2961:3:7" - }, - "nodeType": "YulFunctionCall", - "src": "2961:32:7" - } - ], - "functionName": { - "name": "mstore", - "nodeType": "YulIdentifier", - "src": "2943:6:7" - }, - "nodeType": "YulFunctionCall", - "src": "2943:51:7" - }, - "nodeType": "YulExpressionStatement", - "src": "2943:51:7" - }, - { - "expression": { - "arguments": [ - { - "arguments": [ - { - "name": "headStart", - "nodeType": "YulIdentifier", - "src": "3014:9:7" - }, - { - "kind": "number", - "nodeType": "YulLiteral", - "src": "3025:2:7", - "type": "", - "value": "32" - } - ], - "functionName": { - "name": "add", - "nodeType": "YulIdentifier", - "src": "3010:3:7" - }, - "nodeType": "YulFunctionCall", - "src": "3010:18:7" - }, - { - "name": "value1", - "nodeType": "YulIdentifier", - "src": "3030:6:7" - } - ], - "functionName": { - "name": "mstore", - "nodeType": "YulIdentifier", - "src": "3003:6:7" - }, - "nodeType": "YulFunctionCall", - "src": "3003:34:7" - }, - "nodeType": "YulExpressionStatement", - "src": "3003:34:7" - }, - { - "expression": { - "arguments": [ - { - "arguments": [ - { - "name": "headStart", - "nodeType": "YulIdentifier", - "src": "3057:9:7" - }, - { - "kind": "number", - "nodeType": "YulLiteral", - "src": "3068:2:7", - "type": "", - "value": "64" - } - ], - "functionName": { - "name": "add", - "nodeType": "YulIdentifier", - "src": "3053:3:7" - }, - "nodeType": "YulFunctionCall", - "src": "3053:18:7" - }, - { - "name": "value2", - "nodeType": "YulIdentifier", - "src": "3073:6:7" - } - ], - "functionName": { - "name": "mstore", - "nodeType": "YulIdentifier", - "src": "3046:6:7" - }, - "nodeType": "YulFunctionCall", - "src": "3046:34:7" - }, - "nodeType": "YulExpressionStatement", - "src": "3046:34:7" - } - ] - }, - "name": "abi_encode_tuple_t_address_t_uint256_t_uint256__to_t_address_t_uint256_t_uint256__fromStack_reversed", - "nodeType": "YulFunctionDefinition", - "parameters": [ - { - "name": "headStart", - "nodeType": "YulTypedName", - "src": "2851:9:7", - "type": "" - }, - { - "name": "value2", - "nodeType": "YulTypedName", - "src": "2862:6:7", - "type": "" - }, - { - "name": "value1", - "nodeType": "YulTypedName", - "src": "2870:6:7", - "type": "" - }, - { - "name": "value0", - "nodeType": "YulTypedName", - "src": "2878:6:7", - "type": "" - } - ], - "returnVariables": [ - { - "name": "tail", - "nodeType": "YulTypedName", - "src": "2889:4:7", - "type": "" - } - ], - "src": "2741:345:7" - }, - { - "body": { - "nodeType": "YulBlock", - "src": "3192:102:7", - "statements": [ - { - "nodeType": "YulAssignment", - "src": "3202:26:7", - "value": { - "arguments": [ - { - "name": "headStart", - "nodeType": "YulIdentifier", - "src": "3214:9:7" - }, - { - "kind": "number", - "nodeType": "YulLiteral", - "src": "3225:2:7", - "type": "", - "value": "32" - } - ], - "functionName": { - "name": "add", - "nodeType": "YulIdentifier", - "src": "3210:3:7" - }, - "nodeType": "YulFunctionCall", - "src": "3210:18:7" - }, - "variableNames": [ - { - "name": "tail", - "nodeType": "YulIdentifier", - "src": "3202:4:7" - } - ] - }, - { - "expression": { - "arguments": [ - { - "name": "headStart", - "nodeType": "YulIdentifier", - "src": "3244:9:7" - }, - { - "arguments": [ - { - "name": "value0", - "nodeType": "YulIdentifier", - "src": "3259:6:7" - }, - { - "arguments": [ - { - "arguments": [ - { - "kind": "number", - "nodeType": "YulLiteral", - "src": "3275:3:7", - "type": "", - "value": "160" - }, - { - "kind": "number", - "nodeType": "YulLiteral", - "src": "3280:1:7", - "type": "", - "value": "1" - } - ], - "functionName": { - "name": "shl", - "nodeType": "YulIdentifier", - "src": "3271:3:7" - }, - "nodeType": "YulFunctionCall", - "src": "3271:11:7" - }, - { - "kind": "number", - "nodeType": "YulLiteral", - "src": "3284:1:7", - "type": "", - "value": "1" - } - ], - "functionName": { - "name": "sub", - "nodeType": "YulIdentifier", - "src": "3267:3:7" - }, - "nodeType": "YulFunctionCall", - "src": "3267:19:7" - } - ], - "functionName": { - "name": "and", - "nodeType": "YulIdentifier", - "src": "3255:3:7" - }, - "nodeType": "YulFunctionCall", - "src": "3255:32:7" - } - ], - "functionName": { - "name": "mstore", - "nodeType": "YulIdentifier", - "src": "3237:6:7" - }, - "nodeType": "YulFunctionCall", - "src": "3237:51:7" - }, - "nodeType": "YulExpressionStatement", - "src": "3237:51:7" - } - ] - }, - "name": "abi_encode_tuple_t_address__to_t_address__fromStack_reversed", - "nodeType": "YulFunctionDefinition", - "parameters": [ - { - "name": "headStart", - "nodeType": "YulTypedName", - "src": "3161:9:7", - "type": "" - }, - { - "name": "value0", - "nodeType": "YulTypedName", - "src": "3172:6:7", - "type": "" - } - ], - "returnVariables": [ - { - "name": "tail", - "nodeType": "YulTypedName", - "src": "3183:4:7", - "type": "" - } - ], - "src": "3091:203:7" - }, - { - "body": { - "nodeType": "YulBlock", - "src": "3347:174:7", - "statements": [ - { - "nodeType": "YulAssignment", - "src": "3357:16:7", - "value": { - "arguments": [ - { - "name": "x", - "nodeType": "YulIdentifier", - "src": "3368:1:7" - }, - { - "name": "y", - "nodeType": "YulIdentifier", - "src": "3371:1:7" - } - ], - "functionName": { - "name": "add", - "nodeType": "YulIdentifier", - "src": "3364:3:7" - }, - "nodeType": "YulFunctionCall", - "src": "3364:9:7" - }, - "variableNames": [ - { - "name": "sum", - "nodeType": "YulIdentifier", - "src": "3357:3:7" - } - ] - }, - { - "body": { - "nodeType": "YulBlock", - "src": "3404:111:7", - "statements": [ - { - "expression": { - "arguments": [ - { - "kind": "number", - "nodeType": "YulLiteral", - "src": "3425:1:7", - "type": "", - "value": "0" - }, - { - "arguments": [ - { - "kind": "number", - "nodeType": "YulLiteral", - "src": "3432:3:7", - "type": "", - "value": "224" - }, - { - "kind": "number", - "nodeType": "YulLiteral", - "src": "3437:10:7", - "type": "", - "value": "0x4e487b71" - } - ], - "functionName": { - "name": "shl", - "nodeType": "YulIdentifier", - "src": "3428:3:7" - }, - "nodeType": "YulFunctionCall", - "src": "3428:20:7" - } - ], - "functionName": { - "name": "mstore", - "nodeType": "YulIdentifier", - "src": "3418:6:7" - }, - "nodeType": "YulFunctionCall", - "src": "3418:31:7" - }, - "nodeType": "YulExpressionStatement", - "src": "3418:31:7" - }, - { - "expression": { - "arguments": [ - { - "kind": "number", - "nodeType": "YulLiteral", - "src": "3469:1:7", - "type": "", - "value": "4" - }, - { - "kind": "number", - "nodeType": "YulLiteral", - "src": "3472:4:7", - "type": "", - "value": "0x11" - } - ], - "functionName": { - "name": "mstore", - "nodeType": "YulIdentifier", - "src": "3462:6:7" - }, - "nodeType": "YulFunctionCall", - "src": "3462:15:7" - }, - "nodeType": "YulExpressionStatement", - "src": "3462:15:7" - }, - { - "expression": { - "arguments": [ - { - "kind": "number", - "nodeType": "YulLiteral", - "src": "3497:1:7", - "type": "", - "value": "0" - }, - { - "kind": "number", - "nodeType": "YulLiteral", - "src": "3500:4:7", - "type": "", - "value": "0x24" - } - ], - "functionName": { - "name": "revert", - "nodeType": "YulIdentifier", - "src": "3490:6:7" - }, - "nodeType": "YulFunctionCall", - "src": "3490:15:7" - }, - "nodeType": "YulExpressionStatement", - "src": "3490:15:7" - } - ] - }, - "condition": { - "arguments": [ - { - "name": "x", - "nodeType": "YulIdentifier", - "src": "3388:1:7" - }, - { - "name": "sum", - "nodeType": "YulIdentifier", - "src": "3391:3:7" - } - ], - "functionName": { - "name": "gt", - "nodeType": "YulIdentifier", - "src": "3385:2:7" - }, - "nodeType": "YulFunctionCall", - "src": "3385:10:7" - }, - "nodeType": "YulIf", - "src": "3382:133:7" - } - ] - }, - "name": "checked_add_t_uint256", - "nodeType": "YulFunctionDefinition", - "parameters": [ - { - "name": "x", - "nodeType": "YulTypedName", - "src": "3330:1:7", - "type": "" - }, - { - "name": "y", - "nodeType": "YulTypedName", - "src": "3333:1:7", - "type": "" - } - ], - "returnVariables": [ - { - "name": "sum", - "nodeType": "YulTypedName", - "src": "3339:3:7", - "type": "" - } - ], - "src": "3299:222:7" - } - ] - }, - "contents": "{\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 mstore(add(add(headStart, length), 64), 0)\n tail := add(add(headStart, and(add(length, 31), not(31))), 64)\n }\n function abi_decode_address(offset) -> value\n {\n value := calldataload(offset)\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 value0 := abi_decode_address(headStart)\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_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 value0 := abi_decode_address(headStart)\n value1 := abi_decode_address(add(headStart, 32))\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 value0 := abi_decode_address(headStart)\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 value0 := abi_decode_address(headStart)\n value1 := abi_decode_address(add(headStart, 32))\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_address_t_uint256_t_uint256__to_t_address_t_uint256_t_uint256__fromStack_reversed(headStart, value2, value1, value0) -> tail\n {\n tail := add(headStart, 96)\n mstore(headStart, and(value0, sub(shl(160, 1), 1)))\n mstore(add(headStart, 32), value1)\n mstore(add(headStart, 64), value2)\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 checked_add_t_uint256(x, y) -> sum\n {\n sum := add(x, y)\n if gt(x, sum)\n {\n mstore(0, shl(224, 0x4e487b71))\n mstore(4, 0x11)\n revert(0, 0x24)\n }\n }\n}", - "id": 7, - "language": "Yul", - "name": "#utility.yul" - } - ], - "immutableReferences": {}, - "linkReferences": {}, - "object": "608060405234801561001057600080fd5b50600436106100835760003560e01c806306fdde0314610088578063095ea7b3146100a657806318160ddd146100c957806323b872dd146100db578063313ce567146100ee57806370a08231146100fd57806395d89b4114610126578063a9059cbb1461012e578063dd62ed3e14610141575b600080fd5b610090610154565b60405161009d9190610525565b60405180910390f35b6100b96100b436600461058f565b6101e6565b604051901515815260200161009d565b6002545b60405190815260200161009d565b6100b96100e93660046105b9565b610200565b6040516012815260200161009d565b6100cd61010b3660046105f5565b6001600160a01b031660009081526020819052604090205490565b610090610224565b6100b961013c36600461058f565b610233565b6100cd61014f366004610617565b610241565b6060600380546101639061064a565b80601f016020809104026020016040519081016040528092919081815260200182805461018f9061064a565b80156101dc5780601f106101b1576101008083540402835291602001916101dc565b820191906000526020600020905b8154815290600101906020018083116101bf57829003601f168201915b5050505050905090565b6000336101f481858561026c565b60019150505b92915050565b60003361020e85828561027e565b6102198585856102da565b506001949350505050565b6060600480546101639061064a565b6000336101f48185856102da565b6001600160a01b03918216600090815260016020908152604080832093909416825291909152205490565b6102798383836001610339565b505050565b600061028a8484610241565b905060001981146102d457818110156102c557828183604051637dc7a0d960e11b81526004016102bc93929190610684565b60405180910390fd5b6102d484848484036000610339565b50505050565b6001600160a01b038316610304576000604051634b637e8f60e11b81526004016102bc91906106a5565b6001600160a01b03821661032e57600060405163ec442f0560e01b81526004016102bc91906106a5565b61027983838361040e565b6001600160a01b03841661036357600060405163e602df0560e01b81526004016102bc91906106a5565b6001600160a01b03831661038d576000604051634a1406b160e11b81526004016102bc91906106a5565b6001600160a01b03808516600090815260016020908152604080832093871683529290522082905580156102d457826001600160a01b0316846001600160a01b03167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9258460405161040091815260200190565b60405180910390a350505050565b6001600160a01b03831661043957806002600082825461042e91906106b9565b909155506104989050565b6001600160a01b038316600090815260208190526040902054818110156104795783818360405163391434e360e21b81526004016102bc93929190610684565b6001600160a01b03841660009081526020819052604090209082900390555b6001600160a01b0382166104b4576002805482900390556104d3565b6001600160a01b03821660009081526020819052604090208054820190555b816001600160a01b0316836001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8360405161051891815260200190565b60405180910390a3505050565b600060208083528351808285015260005b8181101561055257858101830151858201604001528201610536565b506000604082860101526040601f19601f8301168501019250505092915050565b80356001600160a01b038116811461058a57600080fd5b919050565b600080604083850312156105a257600080fd5b6105ab83610573565b946020939093013593505050565b6000806000606084860312156105ce57600080fd5b6105d784610573565b92506105e560208501610573565b9150604084013590509250925092565b60006020828403121561060757600080fd5b61061082610573565b9392505050565b6000806040838503121561062a57600080fd5b61063383610573565b915061064160208401610573565b90509250929050565b600181811c9082168061065e57607f821691505b60208210810361067e57634e487b7160e01b600052602260045260246000fd5b50919050565b6001600160a01b039390931683526020830191909152604082015260600190565b6001600160a01b0391909116815260200190565b808201808211156101fa57634e487b7160e01b600052601160045260246000fdfea2646970667358221220971c0411aa52274b5b193f98b7e4a9e2e3b85d9474dd56b20a8924d5daa020dc64736f6c63430008140033", - "opcodes": "PUSH1 0x80 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH2 0x10 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x4 CALLDATASIZE LT PUSH2 0x83 JUMPI PUSH1 0x0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0x6FDDE03 EQ PUSH2 0x88 JUMPI DUP1 PUSH4 0x95EA7B3 EQ PUSH2 0xA6 JUMPI DUP1 PUSH4 0x18160DDD EQ PUSH2 0xC9 JUMPI DUP1 PUSH4 0x23B872DD EQ PUSH2 0xDB JUMPI DUP1 PUSH4 0x313CE567 EQ PUSH2 0xEE JUMPI DUP1 PUSH4 0x70A08231 EQ PUSH2 0xFD JUMPI DUP1 PUSH4 0x95D89B41 EQ PUSH2 0x126 JUMPI DUP1 PUSH4 0xA9059CBB EQ PUSH2 0x12E JUMPI DUP1 PUSH4 0xDD62ED3E EQ PUSH2 0x141 JUMPI JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x90 PUSH2 0x154 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x9D SWAP2 SWAP1 PUSH2 0x525 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0xB9 PUSH2 0xB4 CALLDATASIZE PUSH1 0x4 PUSH2 0x58F JUMP JUMPDEST PUSH2 0x1E6 JUMP JUMPDEST PUSH1 0x40 MLOAD SWAP1 ISZERO ISZERO DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0x9D JUMP JUMPDEST PUSH1 0x2 SLOAD JUMPDEST PUSH1 0x40 MLOAD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0x9D JUMP JUMPDEST PUSH2 0xB9 PUSH2 0xE9 CALLDATASIZE PUSH1 0x4 PUSH2 0x5B9 JUMP JUMPDEST PUSH2 0x200 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x12 DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0x9D JUMP JUMPDEST PUSH2 0xCD PUSH2 0x10B CALLDATASIZE PUSH1 0x4 PUSH2 0x5F5 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x20 DUP2 SWAP1 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD SWAP1 JUMP JUMPDEST PUSH2 0x90 PUSH2 0x224 JUMP JUMPDEST PUSH2 0xB9 PUSH2 0x13C CALLDATASIZE PUSH1 0x4 PUSH2 0x58F JUMP JUMPDEST PUSH2 0x233 JUMP JUMPDEST PUSH2 0xCD PUSH2 0x14F CALLDATASIZE PUSH1 0x4 PUSH2 0x617 JUMP JUMPDEST PUSH2 0x241 JUMP JUMPDEST PUSH1 0x60 PUSH1 0x3 DUP1 SLOAD PUSH2 0x163 SWAP1 PUSH2 0x64A 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 0x18F SWAP1 PUSH2 0x64A JUMP JUMPDEST DUP1 ISZERO PUSH2 0x1DC JUMPI DUP1 PUSH1 0x1F LT PUSH2 0x1B1 JUMPI PUSH2 0x100 DUP1 DUP4 SLOAD DIV MUL DUP4 MSTORE SWAP2 PUSH1 0x20 ADD SWAP2 PUSH2 0x1DC 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 0x1BF JUMPI DUP3 SWAP1 SUB PUSH1 0x1F AND DUP3 ADD SWAP2 JUMPDEST POP POP POP POP POP SWAP1 POP SWAP1 JUMP JUMPDEST PUSH1 0x0 CALLER PUSH2 0x1F4 DUP2 DUP6 DUP6 PUSH2 0x26C JUMP JUMPDEST PUSH1 0x1 SWAP2 POP POP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 CALLER PUSH2 0x20E DUP6 DUP3 DUP6 PUSH2 0x27E JUMP JUMPDEST PUSH2 0x219 DUP6 DUP6 DUP6 PUSH2 0x2DA JUMP JUMPDEST POP PUSH1 0x1 SWAP5 SWAP4 POP POP POP POP JUMP JUMPDEST PUSH1 0x60 PUSH1 0x4 DUP1 SLOAD PUSH2 0x163 SWAP1 PUSH2 0x64A JUMP JUMPDEST PUSH1 0x0 CALLER PUSH2 0x1F4 DUP2 DUP6 DUP6 PUSH2 0x2DA JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP2 DUP3 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x1 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 0x279 DUP4 DUP4 DUP4 PUSH1 0x1 PUSH2 0x339 JUMP JUMPDEST POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x28A DUP5 DUP5 PUSH2 0x241 JUMP JUMPDEST SWAP1 POP PUSH1 0x0 NOT DUP2 EQ PUSH2 0x2D4 JUMPI DUP2 DUP2 LT ISZERO PUSH2 0x2C5 JUMPI DUP3 DUP2 DUP4 PUSH1 0x40 MLOAD PUSH4 0x7DC7A0D9 PUSH1 0xE1 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x2BC SWAP4 SWAP3 SWAP2 SWAP1 PUSH2 0x684 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH2 0x2D4 DUP5 DUP5 DUP5 DUP5 SUB PUSH1 0x0 PUSH2 0x339 JUMP JUMPDEST POP POP POP POP JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP4 AND PUSH2 0x304 JUMPI PUSH1 0x0 PUSH1 0x40 MLOAD PUSH4 0x4B637E8F PUSH1 0xE1 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x2BC SWAP2 SWAP1 PUSH2 0x6A5 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP3 AND PUSH2 0x32E JUMPI PUSH1 0x0 PUSH1 0x40 MLOAD PUSH4 0xEC442F05 PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x2BC SWAP2 SWAP1 PUSH2 0x6A5 JUMP JUMPDEST PUSH2 0x279 DUP4 DUP4 DUP4 PUSH2 0x40E JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP5 AND PUSH2 0x363 JUMPI PUSH1 0x0 PUSH1 0x40 MLOAD PUSH4 0xE602DF05 PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x2BC SWAP2 SWAP1 PUSH2 0x6A5 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP4 AND PUSH2 0x38D JUMPI PUSH1 0x0 PUSH1 0x40 MLOAD PUSH4 0x4A1406B1 PUSH1 0xE1 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x2BC SWAP2 SWAP1 PUSH2 0x6A5 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP1 DUP6 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x1 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 SWAP4 DUP8 AND DUP4 MSTORE SWAP3 SWAP1 MSTORE KECCAK256 DUP3 SWAP1 SSTORE DUP1 ISZERO PUSH2 0x2D4 JUMPI DUP3 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP5 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH32 0x8C5BE1E5EBEC7D5BD14F71427D1E84F3DD0314C0F7B2291E5B200AC8C7C3B925 DUP5 PUSH1 0x40 MLOAD PUSH2 0x400 SWAP2 DUP2 MSTORE PUSH1 0x20 ADD SWAP1 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG3 POP POP POP POP JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP4 AND PUSH2 0x439 JUMPI DUP1 PUSH1 0x2 PUSH1 0x0 DUP3 DUP3 SLOAD PUSH2 0x42E SWAP2 SWAP1 PUSH2 0x6B9 JUMP JUMPDEST SWAP1 SWAP2 SSTORE POP PUSH2 0x498 SWAP1 POP JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP4 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x20 DUP2 SWAP1 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD DUP2 DUP2 LT ISZERO PUSH2 0x479 JUMPI DUP4 DUP2 DUP4 PUSH1 0x40 MLOAD PUSH4 0x391434E3 PUSH1 0xE2 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x2BC SWAP4 SWAP3 SWAP2 SWAP1 PUSH2 0x684 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP5 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x20 DUP2 SWAP1 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SWAP1 DUP3 SWAP1 SUB SWAP1 SSTORE JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP3 AND PUSH2 0x4B4 JUMPI PUSH1 0x2 DUP1 SLOAD DUP3 SWAP1 SUB SWAP1 SSTORE PUSH2 0x4D3 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP3 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x20 DUP2 SWAP1 MSTORE PUSH1 0x40 SWAP1 KECCAK256 DUP1 SLOAD DUP3 ADD SWAP1 SSTORE JUMPDEST DUP2 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP4 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH32 0xDDF252AD1BE2C89B69C2B068FC378DAA952BA7F163C4A11628F55A4DF523B3EF DUP4 PUSH1 0x40 MLOAD PUSH2 0x518 SWAP2 DUP2 MSTORE PUSH1 0x20 ADD SWAP1 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG3 POP POP 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 0x552 JUMPI DUP6 DUP2 ADD DUP4 ADD MLOAD DUP6 DUP3 ADD PUSH1 0x40 ADD MSTORE DUP3 ADD PUSH2 0x536 JUMP JUMPDEST POP PUSH1 0x0 PUSH1 0x40 DUP3 DUP7 ADD ADD MSTORE PUSH1 0x40 PUSH1 0x1F NOT PUSH1 0x1F DUP4 ADD AND DUP6 ADD ADD SWAP3 POP POP POP SWAP3 SWAP2 POP POP JUMP JUMPDEST DUP1 CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND DUP2 EQ PUSH2 0x58A JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH2 0x5A2 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x5AB DUP4 PUSH2 0x573 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 0x5CE JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x5D7 DUP5 PUSH2 0x573 JUMP JUMPDEST SWAP3 POP PUSH2 0x5E5 PUSH1 0x20 DUP6 ADD PUSH2 0x573 JUMP JUMPDEST SWAP2 POP PUSH1 0x40 DUP5 ADD CALLDATALOAD SWAP1 POP SWAP3 POP SWAP3 POP SWAP3 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x607 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x610 DUP3 PUSH2 0x573 JUMP JUMPDEST SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH2 0x62A JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x633 DUP4 PUSH2 0x573 JUMP JUMPDEST SWAP2 POP PUSH2 0x641 PUSH1 0x20 DUP5 ADD PUSH2 0x573 JUMP JUMPDEST SWAP1 POP SWAP3 POP SWAP3 SWAP1 POP JUMP JUMPDEST PUSH1 0x1 DUP2 DUP2 SHR SWAP1 DUP3 AND DUP1 PUSH2 0x65E JUMPI PUSH1 0x7F DUP3 AND SWAP2 POP JUMPDEST PUSH1 0x20 DUP3 LT DUP2 SUB PUSH2 0x67E 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 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP4 SWAP1 SWAP4 AND DUP4 MSTORE PUSH1 0x20 DUP4 ADD SWAP2 SWAP1 SWAP2 MSTORE PUSH1 0x40 DUP3 ADD MSTORE PUSH1 0x60 ADD SWAP1 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP2 SWAP1 SWAP2 AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 JUMP JUMPDEST DUP1 DUP3 ADD DUP1 DUP3 GT ISZERO PUSH2 0x1FA JUMPI PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH1 0x0 MSTORE PUSH1 0x11 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 SWAP8 SHR DIV GT 0xAA MSTORE 0x27 0x4B JUMPDEST NOT EXTCODEHASH SWAP9 0xB7 0xE4 0xA9 0xE2 0xE3 0xB8 0x5D SWAP5 PUSH21 0xDD56B20A8924D5DAA020DC64736F6C634300081400 CALLER ", - "sourceMap": "115:143:6:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1779:89:1;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;3998:186;;;;;;:::i;:::-;;:::i;:::-;;;1169:14:7;;1162:22;1144:41;;1132:2;1117:18;3998:186:1;1004:187:7;2849:97:1;2927:12;;2849:97;;;1342:25:7;;;1330:2;1315:18;2849:97:1;1196:177:7;4776:244:1;;;;;;:::i;:::-;;:::i;2707:82::-;;;2780:2;1853:36:7;;1841:2;1826:18;2707:82:1;1711:184:7;3004:116:1;;;;;;:::i;:::-;-1:-1:-1;;;;;3095:18:1;3069:7;3095:18;;;;;;;;;;;;3004:116;1981:93;;;:::i;3315:178::-;;;;;;:::i;:::-;;:::i;3551:140::-;;;;;;:::i;:::-;;:::i;1779:89::-;1824:13;1856:5;1849:12;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1779:89;:::o;3998:186::-;4071:4;735:10:4;4125:31:1;735:10:4;4141:7:1;4150:5;4125:8;:31::i;:::-;4173:4;4166:11;;;3998:186;;;;;:::o;4776:244::-;4863:4;735:10:4;4919:37:1;4935:4;735:10:4;4950:5:1;4919:15;:37::i;:::-;4966:26;4976:4;4982:2;4986:5;4966:9;:26::i;:::-;-1:-1:-1;5009:4:1;;4776:244;-1:-1:-1;;;;4776:244:1:o;1981:93::-;2028:13;2060:7;2053:14;;;;;:::i;3315:178::-;3384:4;735:10:4;3438:27:1;735:10:4;3455:2:1;3459:5;3438:9;:27::i;3551:140::-;-1:-1:-1;;;;;3657:18:1;;;3631:7;3657:18;;;:11;:18;;;;;;;;:27;;;;;;;;;;;;;3551:140::o;8726:128::-;8810:37;8819:5;8826:7;8835:5;8842:4;8810:8;:37::i;:::-;8726:128;;;:::o;10415:477::-;10514:24;10541:25;10551:5;10558:7;10541:9;:25::i;:::-;10514:52;;-1:-1:-1;;10580:16:1;:37;10576:310;;10656:5;10637:16;:24;10633:130;;;10715:7;10724:16;10742:5;10688:60;;-1:-1:-1;;;10688:60:1;;;;;;;;;;:::i;:::-;;;;;;;;10633:130;10804:57;10813:5;10820:7;10848:5;10829:16;:24;10855:5;10804:8;:57::i;:::-;10504:388;10415:477;;;:::o;5393:300::-;-1:-1:-1;;;;;5476:18:1;;5472:86;;5544:1;5517:30;;-1:-1:-1;;;5517:30:1;;;;;;;;:::i;5472:86::-;-1:-1:-1;;;;;5571:16:1;;5567:86;;5639:1;5610:32;;-1:-1:-1;;;5610:32:1;;;;;;;;:::i;5567:86::-;5662:24;5670:4;5676:2;5680:5;5662:7;:24::i;9701:432::-;-1:-1:-1;;;;;9813:19:1;;9809:89;;9884:1;9855:32;;-1:-1:-1;;;9855:32:1;;;;;;;;:::i;9809:89::-;-1:-1:-1;;;;;9911:21:1;;9907:90;;9983:1;9955:31;;-1:-1:-1;;;9955:31:1;;;;;;;;:::i;9907:90::-;-1:-1:-1;;;;;10006:18:1;;;;;;;:11;:18;;;;;;;;:27;;;;;;;;;:35;;;10051:76;;;;10101:7;-1:-1:-1;;;;;10085:31:1;10094:5;-1:-1:-1;;;;;10085:31:1;;10110:5;10085:31;;;;1342:25:7;;1330:2;1315:18;;1196:177;10085:31:1;;;;;;;;9701:432;;;;:::o;6008:1107::-;-1:-1:-1;;;;;6097:18:1;;6093:540;;6249:5;6233:12;;:21;;;;;;;:::i;:::-;;;;-1:-1:-1;6093:540:1;;-1:-1:-1;6093:540:1;;-1:-1:-1;;;;;6307:15:1;;6285:19;6307:15;;;;;;;;;;;6340:19;;;6336:115;;;6411:4;6417:11;6430:5;6386:50;;-1:-1:-1;;;6386:50:1;;;;;;;;;;:::i;6336:115::-;-1:-1:-1;;;;;6571:15:1;;:9;:15;;;;;;;;;;6589:19;;;;6571:37;;6093:540;-1:-1:-1;;;;;6647:16:1;;6643:425;;6810:12;:21;;;;;;;6643:425;;;-1:-1:-1;;;;;7021:13:1;;:9;:13;;;;;;;;;;:22;;;;;;6643:425;7098:2;-1:-1:-1;;;;;7083:25:1;7092:4;-1:-1:-1;;;;;7083:25:1;;7102:5;7083:25;;;;1342::7;;1330:2;1315:18;;1196:177;7083:25:1;;;;;;;;6008:1107;;;:::o;14:548:7:-;126:4;155:2;184;173:9;166:21;216:6;210:13;259:6;254:2;243:9;239:18;232:34;284:1;294:140;308:6;305:1;302:13;294:140;;;403:14;;;399:23;;393:30;369:17;;;388:2;365:26;358:66;323:10;;294:140;;;298:3;483:1;478:2;469:6;458:9;454:22;450:31;443:42;553:2;546;542:7;537:2;529:6;525:15;521:29;510:9;506:45;502:54;494:62;;;;14:548;;;;:::o;567:173::-;635:20;;-1:-1:-1;;;;;684:31:7;;674:42;;664:70;;730:1;727;720:12;664:70;567:173;;;:::o;745:254::-;813:6;821;874:2;862:9;853:7;849:23;845:32;842:52;;;890:1;887;880:12;842:52;913:29;932:9;913:29;:::i;:::-;903:39;989:2;974:18;;;;961:32;;-1:-1:-1;;;745:254:7:o;1378:328::-;1455:6;1463;1471;1524:2;1512:9;1503:7;1499:23;1495:32;1492:52;;;1540:1;1537;1530:12;1492:52;1563:29;1582:9;1563:29;:::i;:::-;1553:39;;1611:38;1645:2;1634:9;1630:18;1611:38;:::i;:::-;1601:48;;1696:2;1685:9;1681:18;1668:32;1658:42;;1378:328;;;;;:::o;1900:186::-;1959:6;2012:2;2000:9;1991:7;1987:23;1983:32;1980:52;;;2028:1;2025;2018:12;1980:52;2051:29;2070:9;2051:29;:::i;:::-;2041:39;1900:186;-1:-1:-1;;;1900:186:7:o;2091:260::-;2159:6;2167;2220:2;2208:9;2199:7;2195:23;2191:32;2188:52;;;2236:1;2233;2226:12;2188:52;2259:29;2278:9;2259:29;:::i;:::-;2249:39;;2307:38;2341:2;2330:9;2326:18;2307:38;:::i;:::-;2297:48;;2091:260;;;;;:::o;2356:380::-;2435:1;2431:12;;;;2478;;;2499:61;;2553:4;2545:6;2541:17;2531:27;;2499:61;2606:2;2598:6;2595:14;2575:18;2572:38;2569:161;;2652:10;2647:3;2643:20;2640:1;2633:31;2687:4;2684:1;2677:15;2715:4;2712:1;2705:15;2569:161;;2356:380;;;:::o;2741:345::-;-1:-1:-1;;;;;2961:32:7;;;;2943:51;;3025:2;3010:18;;3003:34;;;;3068:2;3053:18;;3046:34;2931:2;2916:18;;2741:345::o;3091:203::-;-1:-1:-1;;;;;3255:32:7;;;;3237:51;;3225:2;3210:18;;3091:203::o;3299:222::-;3364:9;;;3385:10;;;3382:133;;;3437:10;3432:3;3428:20;3425:1;3418:31;3472:4;3469:1;3462:15;3500:4;3497:1;3490:15" - }, - "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" - } - }, - "metadata": "{\"compiler\":{\"version\":\"0.8.20+commit.a1b79de6\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"constructor\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"allowance\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"needed\",\"type\":\"uint256\"}],\"name\":\"ERC20InsufficientAllowance\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"balance\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"needed\",\"type\":\"uint256\"}],\"name\":\"ERC20InsufficientBalance\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"approver\",\"type\":\"address\"}],\"name\":\"ERC20InvalidApprover\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"receiver\",\"type\":\"address\"}],\"name\":\"ERC20InvalidReceiver\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"}],\"name\":\"ERC20InvalidSender\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"}],\"name\":\"ERC20InvalidSpender\",\"type\":\"error\"},{\"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\":\"value\",\"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\":\"decimals\",\"outputs\":[{\"internalType\":\"uint8\",\"name\":\"\",\"type\":\"uint8\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"name\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"stateMutability\":\"view\",\"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\":[{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"name\":\"transfer\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"name\":\"transferFrom\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"}],\"devdoc\":{\"errors\":{\"ERC20InsufficientAllowance(address,uint256,uint256)\":[{\"details\":\"Indicates a failure with the `spender`\\u2019s `allowance`. Used in transfers.\",\"params\":{\"allowance\":\"Amount of tokens a `spender` is allowed to operate with.\",\"needed\":\"Minimum amount required to perform a transfer.\",\"spender\":\"Address that may be allowed to operate on tokens without being their owner.\"}}],\"ERC20InsufficientBalance(address,uint256,uint256)\":[{\"details\":\"Indicates an error related to the current `balance` of a `sender`. Used in transfers.\",\"params\":{\"balance\":\"Current balance for the interacting account.\",\"needed\":\"Minimum amount required to perform a transfer.\",\"sender\":\"Address whose tokens are being transferred.\"}}],\"ERC20InvalidApprover(address)\":[{\"details\":\"Indicates a failure with the `approver` of a token to be approved. Used in approvals.\",\"params\":{\"approver\":\"Address initiating an approval operation.\"}}],\"ERC20InvalidReceiver(address)\":[{\"details\":\"Indicates a failure with the token `receiver`. Used in transfers.\",\"params\":{\"receiver\":\"Address to which tokens are being transferred.\"}}],\"ERC20InvalidSender(address)\":[{\"details\":\"Indicates a failure with the token `sender`. Used in transfers.\",\"params\":{\"sender\":\"Address whose tokens are being transferred.\"}}],\"ERC20InvalidSpender(address)\":[{\"details\":\"Indicates a failure with the `spender` to be approved. Used in approvals.\",\"params\":{\"spender\":\"Address that may be allowed to operate on tokens without being their owner.\"}}]},\"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\":\"See {IERC20-allowance}.\"},\"approve(address,uint256)\":{\"details\":\"See {IERC20-approve}. NOTE: If `value` is the maximum `uint256`, the allowance is not updated on `transferFrom`. This is semantically equivalent to an infinite approval. Requirements: - `spender` cannot be the zero address.\"},\"balanceOf(address)\":{\"details\":\"See {IERC20-balanceOf}.\"},\"decimals()\":{\"details\":\"Returns the number of decimals used to get its user representation. For example, if `decimals` equals `2`, a balance of `505` tokens should be displayed to a user as `5.05` (`505 / 10 ** 2`). Tokens usually opt for a value of 18, imitating the relationship between Ether and Wei. This is the default value returned by this function, unless it's overridden. NOTE: This information is only used for _display_ purposes: it in no way affects any of the arithmetic of the contract, including {IERC20-balanceOf} and {IERC20-transfer}.\"},\"name()\":{\"details\":\"Returns the name of the token.\"},\"symbol()\":{\"details\":\"Returns the symbol of the token, usually a shorter version of the name.\"},\"totalSupply()\":{\"details\":\"See {IERC20-totalSupply}.\"},\"transfer(address,uint256)\":{\"details\":\"See {IERC20-transfer}. Requirements: - `to` cannot be the zero address. - the caller must have a balance of at least `value`.\"},\"transferFrom(address,address,uint256)\":{\"details\":\"See {IERC20-transferFrom}. Skips emitting an {Approval} event indicating an allowance update. This is not required by the ERC. See {xref-ERC20-_approve-address-address-uint256-bool-}[_approve]. NOTE: Does not update the allowance if the current allowance is the maximum `uint256`. Requirements: - `from` and `to` cannot be the zero address. - `from` must have a balance of at least `value`. - the caller must have allowance for ``from``'s tokens of at least `value`.\"}},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"contracts/token.sol\":\"SimpleToken\"},\"evmVersion\":\"london\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":1},\"remappings\":[]},\"sources\":{\"@openzeppelin/contracts/interfaces/draft-IERC6093.sol\":{\"keccak256\":\"0x880da465c203cec76b10d72dbd87c80f387df4102274f23eea1f9c9b0918792b\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://399594cd8bb0143bc9e55e0f1d071d0d8c850a394fb7a319d50edd55d9ed822b\",\"dweb:/ipfs/QmbPZzgtT6LEm9CMqWfagQFwETbV1ztpECBB1DtQHrKiRz\"]},\"@openzeppelin/contracts/token/ERC20/ERC20.sol\":{\"keccak256\":\"0xbf61ab2ae1d575a17ea58fbb99ca232baddcc4e0eeea180e84cbc74b0c348b31\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://4e0968705bad99747a8e5288aa008678c2be2f471f919dce3925a3cc4f1dee09\",\"dweb:/ipfs/QmbAFnCQfo4tw6ssfQSjhA5LzwHWNNryXN8bX7ty8jiqqn\"]},\"@openzeppelin/contracts/token/ERC20/IERC20.sol\":{\"keccak256\":\"0xe06a3f08a987af6ad2e1c1e774405d4fe08f1694b67517438b467cecf0da0ef7\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://df6f0c459663c9858b6cba2cda1d14a7d05a985bed6d2de72bd8e78c25ee79db\",\"dweb:/ipfs/QmeTTxZ7qVk9rjEv2R4CpCwdf8UMCcRqDNMvzNxHc3Fnn9\"]},\"@openzeppelin/contracts/token/ERC20/extensions/IERC20Metadata.sol\":{\"keccak256\":\"0x70f2f713b13b7ce4610bcd0ac9fec0f3cc43693b043abcb8dc40a42a726eb330\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://c13d13304ac79a83ab1c30168967d19e2203342ebbd6a9bbce4db7550522dcbf\",\"dweb:/ipfs/QmeN5jKMN2vw5bhacr6tkg78afbTTZUeaacNHqjWt4Ew1r\"]},\"@openzeppelin/contracts/utils/Context.sol\":{\"keccak256\":\"0x493033a8d1b176a037b2cc6a04dad01a5c157722049bbecf632ca876224dd4b2\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://6a708e8a5bdb1011c2c381c9a5cfd8a9a956d7d0a9dc1bd8bcdaf52f76ef2f12\",\"dweb:/ipfs/Qmax9WHBnVsZP46ZxEMNRQpLQnrdE4dK8LehML1Py8FowF\"]},\"contracts/token.sol\":{\"keccak256\":\"0x992f2ef00e80e86fb55a226e8aa44497498e2ea9780e279ebfd6d9c14aebdaa2\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://063a73129151ede8dbb6dfe41ae26bd9768a51a285ca41db82b83621285af355\",\"dweb:/ipfs/QmRvN6FkrDknPR9oeWJDuVL113jHBesFayvds8GnQnNTor\"]}},\"version\":1}" - } - } - } - } -} \ No newline at end of file diff --git a/challenge-1-vesting/ignition/deployments/chain-420420421/build-info/06550302e1057daf43893bd4ca520496.json b/challenge-1-vesting/ignition/deployments/chain-420420421/build-info/babaac433f2eb48d04e0121b0389f5c3.json similarity index 61% rename from challenge-1-vesting/ignition/deployments/chain-420420421/build-info/06550302e1057daf43893bd4ca520496.json rename to challenge-1-vesting/ignition/deployments/chain-420420421/build-info/babaac433f2eb48d04e0121b0389f5c3.json index 74d39a1..46db0c1 100644 --- a/challenge-1-vesting/ignition/deployments/chain-420420421/build-info/06550302e1057daf43893bd4ca520496.json +++ b/challenge-1-vesting/ignition/deployments/chain-420420421/build-info/babaac433f2eb48d04e0121b0389f5c3.json @@ -1,5 +1,5 @@ { - "id": "06550302e1057daf43893bd4ca520496", + "id": "babaac433f2eb48d04e0121b0389f5c3", "_format": "hh-sol-build-info-1", "solcVersion": "0.8.20", "solcLongVersion": "0.8.20+commit.a1b79de6", @@ -12,6 +12,15 @@ "@openzeppelin/contracts/interfaces/draft-IERC6093.sol": { "content": "// SPDX-License-Identifier: MIT\n// OpenZeppelin Contracts (last updated v5.1.0) (interfaces/draft-IERC6093.sol)\npragma solidity ^0.8.20;\n\n/**\n * @dev Standard ERC-20 Errors\n * Interface of the https://eips.ethereum.org/EIPS/eip-6093[ERC-6093] custom errors for ERC-20 tokens.\n */\ninterface IERC20Errors {\n /**\n * @dev Indicates an error related to the current `balance` of a `sender`. Used in transfers.\n * @param sender Address whose tokens are being transferred.\n * @param balance Current balance for the interacting account.\n * @param needed Minimum amount required to perform a transfer.\n */\n error ERC20InsufficientBalance(address sender, uint256 balance, uint256 needed);\n\n /**\n * @dev Indicates a failure with the token `sender`. Used in transfers.\n * @param sender Address whose tokens are being transferred.\n */\n error ERC20InvalidSender(address sender);\n\n /**\n * @dev Indicates a failure with the token `receiver`. Used in transfers.\n * @param receiver Address to which tokens are being transferred.\n */\n error ERC20InvalidReceiver(address receiver);\n\n /**\n * @dev Indicates a failure with the `spender`’s `allowance`. Used in transfers.\n * @param spender Address that may be allowed to operate on tokens without being their owner.\n * @param allowance Amount of tokens a `spender` is allowed to operate with.\n * @param needed Minimum amount required to perform a transfer.\n */\n error ERC20InsufficientAllowance(address spender, uint256 allowance, uint256 needed);\n\n /**\n * @dev Indicates a failure with the `approver` of a token to be approved. Used in approvals.\n * @param approver Address initiating an approval operation.\n */\n error ERC20InvalidApprover(address approver);\n\n /**\n * @dev Indicates a failure with the `spender` to be approved. Used in approvals.\n * @param spender Address that may be allowed to operate on tokens without being their owner.\n */\n error ERC20InvalidSpender(address spender);\n}\n\n/**\n * @dev Standard ERC-721 Errors\n * Interface of the https://eips.ethereum.org/EIPS/eip-6093[ERC-6093] custom errors for ERC-721 tokens.\n */\ninterface IERC721Errors {\n /**\n * @dev Indicates that an address can't be an owner. For example, `address(0)` is a forbidden owner in ERC-20.\n * Used in balance queries.\n * @param owner Address of the current owner of a token.\n */\n error ERC721InvalidOwner(address owner);\n\n /**\n * @dev Indicates a `tokenId` whose `owner` is the zero address.\n * @param tokenId Identifier number of a token.\n */\n error ERC721NonexistentToken(uint256 tokenId);\n\n /**\n * @dev Indicates an error related to the ownership over a particular token. Used in transfers.\n * @param sender Address whose tokens are being transferred.\n * @param tokenId Identifier number of a token.\n * @param owner Address of the current owner of a token.\n */\n error ERC721IncorrectOwner(address sender, uint256 tokenId, address owner);\n\n /**\n * @dev Indicates a failure with the token `sender`. Used in transfers.\n * @param sender Address whose tokens are being transferred.\n */\n error ERC721InvalidSender(address sender);\n\n /**\n * @dev Indicates a failure with the token `receiver`. Used in transfers.\n * @param receiver Address to which tokens are being transferred.\n */\n error ERC721InvalidReceiver(address receiver);\n\n /**\n * @dev Indicates a failure with the `operator`’s approval. Used in transfers.\n * @param operator Address that may be allowed to operate on tokens without being their owner.\n * @param tokenId Identifier number of a token.\n */\n error ERC721InsufficientApproval(address operator, uint256 tokenId);\n\n /**\n * @dev Indicates a failure with the `approver` of a token to be approved. Used in approvals.\n * @param approver Address initiating an approval operation.\n */\n error ERC721InvalidApprover(address approver);\n\n /**\n * @dev Indicates a failure with the `operator` to be approved. Used in approvals.\n * @param operator Address that may be allowed to operate on tokens without being their owner.\n */\n error ERC721InvalidOperator(address operator);\n}\n\n/**\n * @dev Standard ERC-1155 Errors\n * Interface of the https://eips.ethereum.org/EIPS/eip-6093[ERC-6093] custom errors for ERC-1155 tokens.\n */\ninterface IERC1155Errors {\n /**\n * @dev Indicates an error related to the current `balance` of a `sender`. Used in transfers.\n * @param sender Address whose tokens are being transferred.\n * @param balance Current balance for the interacting account.\n * @param needed Minimum amount required to perform a transfer.\n * @param tokenId Identifier number of a token.\n */\n error ERC1155InsufficientBalance(address sender, uint256 balance, uint256 needed, uint256 tokenId);\n\n /**\n * @dev Indicates a failure with the token `sender`. Used in transfers.\n * @param sender Address whose tokens are being transferred.\n */\n error ERC1155InvalidSender(address sender);\n\n /**\n * @dev Indicates a failure with the token `receiver`. Used in transfers.\n * @param receiver Address to which tokens are being transferred.\n */\n error ERC1155InvalidReceiver(address receiver);\n\n /**\n * @dev Indicates a failure with the `operator`’s approval. Used in transfers.\n * @param operator Address that may be allowed to operate on tokens without being their owner.\n * @param owner Address of the current owner of a token.\n */\n error ERC1155MissingApprovalForAll(address operator, address owner);\n\n /**\n * @dev Indicates a failure with the `approver` of a token to be approved. Used in approvals.\n * @param approver Address initiating an approval operation.\n */\n error ERC1155InvalidApprover(address approver);\n\n /**\n * @dev Indicates a failure with the `operator` to be approved. Used in approvals.\n * @param operator Address that may be allowed to operate on tokens without being their owner.\n */\n error ERC1155InvalidOperator(address operator);\n\n /**\n * @dev Indicates an array length mismatch between ids and values in a safeBatchTransferFrom operation.\n * Used in batch transfers.\n * @param idsLength Length of the array of token identifiers\n * @param valuesLength Length of the array of token amounts\n */\n error ERC1155InvalidArrayLength(uint256 idsLength, uint256 valuesLength);\n}\n" }, + "@openzeppelin/contracts/interfaces/IERC1363.sol": { + "content": "// SPDX-License-Identifier: MIT\n// OpenZeppelin Contracts (last updated v5.1.0) (interfaces/IERC1363.sol)\n\npragma solidity ^0.8.20;\n\nimport {IERC20} from \"./IERC20.sol\";\nimport {IERC165} from \"./IERC165.sol\";\n\n/**\n * @title IERC1363\n * @dev Interface of the ERC-1363 standard as defined in the https://eips.ethereum.org/EIPS/eip-1363[ERC-1363].\n *\n * Defines an extension interface for ERC-20 tokens that supports executing code on a recipient contract\n * after `transfer` or `transferFrom`, or code on a spender contract after `approve`, in a single transaction.\n */\ninterface IERC1363 is IERC20, IERC165 {\n /*\n * Note: the ERC-165 identifier for this interface is 0xb0202a11.\n * 0xb0202a11 ===\n * bytes4(keccak256('transferAndCall(address,uint256)')) ^\n * bytes4(keccak256('transferAndCall(address,uint256,bytes)')) ^\n * bytes4(keccak256('transferFromAndCall(address,address,uint256)')) ^\n * bytes4(keccak256('transferFromAndCall(address,address,uint256,bytes)')) ^\n * bytes4(keccak256('approveAndCall(address,uint256)')) ^\n * bytes4(keccak256('approveAndCall(address,uint256,bytes)'))\n */\n\n /**\n * @dev Moves a `value` amount of tokens from the caller's account to `to`\n * and then calls {IERC1363Receiver-onTransferReceived} on `to`.\n * @param to The address which you want to transfer to.\n * @param value The amount of tokens to be transferred.\n * @return A boolean value indicating whether the operation succeeded unless throwing.\n */\n function transferAndCall(address to, uint256 value) external returns (bool);\n\n /**\n * @dev Moves a `value` amount of tokens from the caller's account to `to`\n * and then calls {IERC1363Receiver-onTransferReceived} on `to`.\n * @param to The address which you want to transfer to.\n * @param value The amount of tokens to be transferred.\n * @param data Additional data with no specified format, sent in call to `to`.\n * @return A boolean value indicating whether the operation succeeded unless throwing.\n */\n function transferAndCall(address to, uint256 value, bytes calldata data) external returns (bool);\n\n /**\n * @dev Moves a `value` amount of tokens from `from` to `to` using the allowance mechanism\n * and then calls {IERC1363Receiver-onTransferReceived} on `to`.\n * @param from The address which you want to send tokens from.\n * @param to The address which you want to transfer to.\n * @param value The amount of tokens to be transferred.\n * @return A boolean value indicating whether the operation succeeded unless throwing.\n */\n function transferFromAndCall(address from, address to, uint256 value) external returns (bool);\n\n /**\n * @dev Moves a `value` amount of tokens from `from` to `to` using the allowance mechanism\n * and then calls {IERC1363Receiver-onTransferReceived} on `to`.\n * @param from The address which you want to send tokens from.\n * @param to The address which you want to transfer to.\n * @param value The amount of tokens to be transferred.\n * @param data Additional data with no specified format, sent in call to `to`.\n * @return A boolean value indicating whether the operation succeeded unless throwing.\n */\n function transferFromAndCall(address from, address to, uint256 value, bytes calldata data) external returns (bool);\n\n /**\n * @dev Sets a `value` amount of tokens as the allowance of `spender` over the\n * caller's tokens and then calls {IERC1363Spender-onApprovalReceived} on `spender`.\n * @param spender The address which will spend the funds.\n * @param value The amount of tokens to be spent.\n * @return A boolean value indicating whether the operation succeeded unless throwing.\n */\n function approveAndCall(address spender, uint256 value) external returns (bool);\n\n /**\n * @dev Sets a `value` amount of tokens as the allowance of `spender` over the\n * caller's tokens and then calls {IERC1363Spender-onApprovalReceived} on `spender`.\n * @param spender The address which will spend the funds.\n * @param value The amount of tokens to be spent.\n * @param data Additional data with no specified format, sent in call to `spender`.\n * @return A boolean value indicating whether the operation succeeded unless throwing.\n */\n function approveAndCall(address spender, uint256 value, bytes calldata data) external returns (bool);\n}\n" + }, + "@openzeppelin/contracts/interfaces/IERC165.sol": { + "content": "// SPDX-License-Identifier: MIT\n// OpenZeppelin Contracts (last updated v5.0.0) (interfaces/IERC165.sol)\n\npragma solidity ^0.8.20;\n\nimport {IERC165} from \"../utils/introspection/IERC165.sol\";\n" + }, + "@openzeppelin/contracts/interfaces/IERC20.sol": { + "content": "// SPDX-License-Identifier: MIT\n// OpenZeppelin Contracts (last updated v5.0.0) (interfaces/IERC20.sol)\n\npragma solidity ^0.8.20;\n\nimport {IERC20} from \"../token/ERC20/IERC20.sol\";\n" + }, "@openzeppelin/contracts/token/ERC20/ERC20.sol": { "content": "// SPDX-License-Identifier: MIT\n// OpenZeppelin Contracts (last updated v5.1.0) (token/ERC20/ERC20.sol)\n\npragma solidity ^0.8.20;\n\nimport {IERC20} from \"./IERC20.sol\";\nimport {IERC20Metadata} from \"./extensions/IERC20Metadata.sol\";\nimport {Context} from \"../../utils/Context.sol\";\nimport {IERC20Errors} from \"../../interfaces/draft-IERC6093.sol\";\n\n/**\n * @dev Implementation of the {IERC20} interface.\n *\n * This implementation is agnostic to the way tokens are created. This means\n * that a supply mechanism has to be added in a derived contract using {_mint}.\n *\n * TIP: For a detailed writeup see our guide\n * https://forum.openzeppelin.com/t/how-to-implement-erc20-supply-mechanisms/226[How\n * to implement supply mechanisms].\n *\n * The default value of {decimals} is 18. To change this, you should override\n * this function so it returns a different value.\n *\n * We have followed general OpenZeppelin Contracts guidelines: functions revert\n * instead returning `false` on failure. This behavior is nonetheless\n * conventional and does not conflict with the expectations of ERC-20\n * applications.\n */\nabstract contract ERC20 is Context, IERC20, IERC20Metadata, IERC20Errors {\n mapping(address account => uint256) private _balances;\n\n mapping(address account => mapping(address spender => uint256)) private _allowances;\n\n uint256 private _totalSupply;\n\n string private _name;\n string private _symbol;\n\n /**\n * @dev Sets the values for {name} and {symbol}.\n *\n * All two of these values are immutable: they can only be set once during\n * construction.\n */\n constructor(string memory name_, string memory symbol_) {\n _name = name_;\n _symbol = symbol_;\n }\n\n /**\n * @dev Returns the name of the token.\n */\n function name() public view virtual returns (string memory) {\n return _name;\n }\n\n /**\n * @dev Returns the symbol of the token, usually a shorter version of the\n * name.\n */\n function symbol() public view virtual returns (string memory) {\n return _symbol;\n }\n\n /**\n * @dev Returns the number of decimals used to get its user representation.\n * For example, if `decimals` equals `2`, a balance of `505` tokens should\n * be displayed to a user as `5.05` (`505 / 10 ** 2`).\n *\n * Tokens usually opt for a value of 18, imitating the relationship between\n * Ether and Wei. This is the default value returned by this function, unless\n * it's overridden.\n *\n * NOTE: This information is only used for _display_ purposes: it in\n * no way affects any of the arithmetic of the contract, including\n * {IERC20-balanceOf} and {IERC20-transfer}.\n */\n function decimals() public view virtual returns (uint8) {\n return 18;\n }\n\n /**\n * @dev See {IERC20-totalSupply}.\n */\n function totalSupply() public view virtual returns (uint256) {\n return _totalSupply;\n }\n\n /**\n * @dev See {IERC20-balanceOf}.\n */\n function balanceOf(address account) public view virtual returns (uint256) {\n return _balances[account];\n }\n\n /**\n * @dev See {IERC20-transfer}.\n *\n * Requirements:\n *\n * - `to` cannot be the zero address.\n * - the caller must have a balance of at least `value`.\n */\n function transfer(address to, uint256 value) public virtual returns (bool) {\n address owner = _msgSender();\n _transfer(owner, to, value);\n return true;\n }\n\n /**\n * @dev See {IERC20-allowance}.\n */\n function allowance(address owner, address spender) public view virtual returns (uint256) {\n return _allowances[owner][spender];\n }\n\n /**\n * @dev See {IERC20-approve}.\n *\n * NOTE: If `value` is the maximum `uint256`, the allowance is not updated on\n * `transferFrom`. This is semantically equivalent to an infinite approval.\n *\n * Requirements:\n *\n * - `spender` cannot be the zero address.\n */\n function approve(address spender, uint256 value) public virtual returns (bool) {\n address owner = _msgSender();\n _approve(owner, spender, value);\n return true;\n }\n\n /**\n * @dev See {IERC20-transferFrom}.\n *\n * Skips emitting an {Approval} event indicating an allowance update. This is not\n * required by the ERC. See {xref-ERC20-_approve-address-address-uint256-bool-}[_approve].\n *\n * NOTE: Does not update the allowance if the current allowance\n * is the maximum `uint256`.\n *\n * Requirements:\n *\n * - `from` and `to` cannot be the zero address.\n * - `from` must have a balance of at least `value`.\n * - the caller must have allowance for ``from``'s tokens of at least\n * `value`.\n */\n function transferFrom(address from, address to, uint256 value) public virtual returns (bool) {\n address spender = _msgSender();\n _spendAllowance(from, spender, value);\n _transfer(from, to, value);\n return true;\n }\n\n /**\n * @dev Moves a `value` amount of tokens from `from` to `to`.\n *\n * This internal function is equivalent to {transfer}, and can be used to\n * e.g. implement automatic token fees, slashing mechanisms, etc.\n *\n * Emits a {Transfer} event.\n *\n * NOTE: This function is not virtual, {_update} should be overridden instead.\n */\n function _transfer(address from, address to, uint256 value) internal {\n if (from == address(0)) {\n revert ERC20InvalidSender(address(0));\n }\n if (to == address(0)) {\n revert ERC20InvalidReceiver(address(0));\n }\n _update(from, to, value);\n }\n\n /**\n * @dev Transfers a `value` amount of tokens from `from` to `to`, or alternatively mints (or burns) if `from`\n * (or `to`) is the zero address. All customizations to transfers, mints, and burns should be done by overriding\n * this function.\n *\n * Emits a {Transfer} event.\n */\n function _update(address from, address to, uint256 value) internal virtual {\n if (from == address(0)) {\n // Overflow check required: The rest of the code assumes that totalSupply never overflows\n _totalSupply += value;\n } else {\n uint256 fromBalance = _balances[from];\n if (fromBalance < value) {\n revert ERC20InsufficientBalance(from, fromBalance, value);\n }\n unchecked {\n // Overflow not possible: value <= fromBalance <= totalSupply.\n _balances[from] = fromBalance - value;\n }\n }\n\n if (to == address(0)) {\n unchecked {\n // Overflow not possible: value <= totalSupply or value <= fromBalance <= totalSupply.\n _totalSupply -= value;\n }\n } else {\n unchecked {\n // Overflow not possible: balance + value is at most totalSupply, which we know fits into a uint256.\n _balances[to] += value;\n }\n }\n\n emit Transfer(from, to, value);\n }\n\n /**\n * @dev Creates a `value` amount of tokens and assigns them to `account`, by transferring it from address(0).\n * Relies on the `_update` mechanism\n *\n * Emits a {Transfer} event with `from` set to the zero address.\n *\n * NOTE: This function is not virtual, {_update} should be overridden instead.\n */\n function _mint(address account, uint256 value) internal {\n if (account == address(0)) {\n revert ERC20InvalidReceiver(address(0));\n }\n _update(address(0), account, value);\n }\n\n /**\n * @dev Destroys a `value` amount of tokens from `account`, lowering the total supply.\n * Relies on the `_update` mechanism.\n *\n * Emits a {Transfer} event with `to` set to the zero address.\n *\n * NOTE: This function is not virtual, {_update} should be overridden instead\n */\n function _burn(address account, uint256 value) internal {\n if (account == address(0)) {\n revert ERC20InvalidSender(address(0));\n }\n _update(account, address(0), value);\n }\n\n /**\n * @dev Sets `value` as the allowance of `spender` over the `owner` s tokens.\n *\n * This internal function is equivalent to `approve`, and can be used to\n * e.g. set automatic allowances for certain subsystems, etc.\n *\n * Emits an {Approval} event.\n *\n * Requirements:\n *\n * - `owner` cannot be the zero address.\n * - `spender` cannot be the zero address.\n *\n * Overrides to this logic should be done to the variant with an additional `bool emitEvent` argument.\n */\n function _approve(address owner, address spender, uint256 value) internal {\n _approve(owner, spender, value, true);\n }\n\n /**\n * @dev Variant of {_approve} with an optional flag to enable or disable the {Approval} event.\n *\n * By default (when calling {_approve}) the flag is set to true. On the other hand, approval changes made by\n * `_spendAllowance` during the `transferFrom` operation set the flag to false. This saves gas by not emitting any\n * `Approval` event during `transferFrom` operations.\n *\n * Anyone who wishes to continue emitting `Approval` events on the`transferFrom` operation can force the flag to\n * true using the following override:\n *\n * ```solidity\n * function _approve(address owner, address spender, uint256 value, bool) internal virtual override {\n * super._approve(owner, spender, value, true);\n * }\n * ```\n *\n * Requirements are the same as {_approve}.\n */\n function _approve(address owner, address spender, uint256 value, bool emitEvent) internal virtual {\n if (owner == address(0)) {\n revert ERC20InvalidApprover(address(0));\n }\n if (spender == address(0)) {\n revert ERC20InvalidSpender(address(0));\n }\n _allowances[owner][spender] = value;\n if (emitEvent) {\n emit Approval(owner, spender, value);\n }\n }\n\n /**\n * @dev Updates `owner` s allowance for `spender` based on spent `value`.\n *\n * Does not update the allowance value in case of infinite allowance.\n * Revert if not enough allowance is available.\n *\n * Does not emit an {Approval} event.\n */\n function _spendAllowance(address owner, address spender, uint256 value) internal virtual {\n uint256 currentAllowance = allowance(owner, spender);\n if (currentAllowance != type(uint256).max) {\n if (currentAllowance < value) {\n revert ERC20InsufficientAllowance(spender, currentAllowance, value);\n }\n unchecked {\n _approve(owner, spender, currentAllowance - value, false);\n }\n }\n }\n}\n" }, @@ -21,9 +30,21 @@ "@openzeppelin/contracts/token/ERC20/IERC20.sol": { "content": "// SPDX-License-Identifier: MIT\n// OpenZeppelin Contracts (last updated v5.1.0) (token/ERC20/IERC20.sol)\n\npragma solidity ^0.8.20;\n\n/**\n * @dev Interface of the ERC-20 standard as defined in the ERC.\n */\ninterface IERC20 {\n /**\n * @dev Emitted when `value` tokens are moved from one account (`from`) to\n * another (`to`).\n *\n * Note that `value` may be zero.\n */\n event Transfer(address indexed from, address indexed to, uint256 value);\n\n /**\n * @dev Emitted when the allowance of a `spender` for an `owner` is set by\n * a call to {approve}. `value` is the new allowance.\n */\n event Approval(address indexed owner, address indexed spender, uint256 value);\n\n /**\n * @dev Returns the value of tokens in existence.\n */\n function totalSupply() external view returns (uint256);\n\n /**\n * @dev Returns the value of tokens owned by `account`.\n */\n function balanceOf(address account) external view returns (uint256);\n\n /**\n * @dev Moves a `value` amount of tokens from the caller's account to `to`.\n *\n * Returns a boolean value indicating whether the operation succeeded.\n *\n * Emits a {Transfer} event.\n */\n function transfer(address to, uint256 value) external returns (bool);\n\n /**\n * @dev Returns the remaining number of tokens that `spender` will be\n * allowed to spend on behalf of `owner` through {transferFrom}. This is\n * zero by default.\n *\n * This value changes when {approve} or {transferFrom} are called.\n */\n function allowance(address owner, address spender) external view returns (uint256);\n\n /**\n * @dev Sets a `value` amount of tokens as the allowance of `spender` over the\n * caller's tokens.\n *\n * Returns a boolean value indicating whether the operation succeeded.\n *\n * IMPORTANT: Beware that changing an allowance with this method brings the risk\n * that someone may use both the old and the new allowance by unfortunate\n * transaction ordering. One possible solution to mitigate this race\n * condition is to first reduce the spender's allowance to 0 and set the\n * desired value afterwards:\n * https://github.com/ethereum/EIPs/issues/20#issuecomment-263524729\n *\n * Emits an {Approval} event.\n */\n function approve(address spender, uint256 value) external returns (bool);\n\n /**\n * @dev Moves a `value` amount of tokens from `from` to `to` using the\n * allowance mechanism. `value` is then deducted from the caller's\n * allowance.\n *\n * Returns a boolean value indicating whether the operation succeeded.\n *\n * Emits a {Transfer} event.\n */\n function transferFrom(address from, address to, uint256 value) external returns (bool);\n}\n" }, + "@openzeppelin/contracts/token/ERC20/utils/SafeERC20.sol": { + "content": "// SPDX-License-Identifier: MIT\n// OpenZeppelin Contracts (last updated v5.1.0) (token/ERC20/utils/SafeERC20.sol)\n\npragma solidity ^0.8.20;\n\nimport {IERC20} from \"../IERC20.sol\";\nimport {IERC1363} from \"../../../interfaces/IERC1363.sol\";\nimport {Address} from \"../../../utils/Address.sol\";\n\n/**\n * @title SafeERC20\n * @dev Wrappers around ERC-20 operations that throw on failure (when the token\n * contract returns false). Tokens that return no value (and instead revert or\n * throw on failure) are also supported, non-reverting calls are assumed to be\n * successful.\n * To use this library you can add a `using SafeERC20 for IERC20;` statement to your contract,\n * which allows you to call the safe operations as `token.safeTransfer(...)`, etc.\n */\nlibrary SafeERC20 {\n /**\n * @dev An operation with an ERC-20 token failed.\n */\n error SafeERC20FailedOperation(address token);\n\n /**\n * @dev Indicates a failed `decreaseAllowance` request.\n */\n error SafeERC20FailedDecreaseAllowance(address spender, uint256 currentAllowance, uint256 requestedDecrease);\n\n /**\n * @dev Transfer `value` amount of `token` from the calling contract to `to`. If `token` returns no value,\n * non-reverting calls are assumed to be successful.\n */\n function safeTransfer(IERC20 token, address to, uint256 value) internal {\n _callOptionalReturn(token, abi.encodeCall(token.transfer, (to, value)));\n }\n\n /**\n * @dev Transfer `value` amount of `token` from `from` to `to`, spending the approval given by `from` to the\n * calling contract. If `token` returns no value, non-reverting calls are assumed to be successful.\n */\n function safeTransferFrom(IERC20 token, address from, address to, uint256 value) internal {\n _callOptionalReturn(token, abi.encodeCall(token.transferFrom, (from, to, value)));\n }\n\n /**\n * @dev Increase the calling contract's allowance toward `spender` by `value`. If `token` returns no value,\n * non-reverting calls are assumed to be successful.\n *\n * IMPORTANT: If the token implements ERC-7674 (ERC-20 with temporary allowance), and if the \"client\"\n * smart contract uses ERC-7674 to set temporary allowances, then the \"client\" smart contract should avoid using\n * this function. Performing a {safeIncreaseAllowance} or {safeDecreaseAllowance} operation on a token contract\n * that has a non-zero temporary allowance (for that particular owner-spender) will result in unexpected behavior.\n */\n function safeIncreaseAllowance(IERC20 token, address spender, uint256 value) internal {\n uint256 oldAllowance = token.allowance(address(this), spender);\n forceApprove(token, spender, oldAllowance + value);\n }\n\n /**\n * @dev Decrease the calling contract's allowance toward `spender` by `requestedDecrease`. If `token` returns no\n * value, non-reverting calls are assumed to be successful.\n *\n * IMPORTANT: If the token implements ERC-7674 (ERC-20 with temporary allowance), and if the \"client\"\n * smart contract uses ERC-7674 to set temporary allowances, then the \"client\" smart contract should avoid using\n * this function. Performing a {safeIncreaseAllowance} or {safeDecreaseAllowance} operation on a token contract\n * that has a non-zero temporary allowance (for that particular owner-spender) will result in unexpected behavior.\n */\n function safeDecreaseAllowance(IERC20 token, address spender, uint256 requestedDecrease) internal {\n unchecked {\n uint256 currentAllowance = token.allowance(address(this), spender);\n if (currentAllowance < requestedDecrease) {\n revert SafeERC20FailedDecreaseAllowance(spender, currentAllowance, requestedDecrease);\n }\n forceApprove(token, spender, currentAllowance - requestedDecrease);\n }\n }\n\n /**\n * @dev Set the calling contract's allowance toward `spender` to `value`. If `token` returns no value,\n * non-reverting calls are assumed to be successful. Meant to be used with tokens that require the approval\n * to be set to zero before setting it to a non-zero value, such as USDT.\n *\n * NOTE: If the token implements ERC-7674, this function will not modify any temporary allowance. This function\n * only sets the \"standard\" allowance. Any temporary allowance will remain active, in addition to the value being\n * set here.\n */\n function forceApprove(IERC20 token, address spender, uint256 value) internal {\n bytes memory approvalCall = abi.encodeCall(token.approve, (spender, value));\n\n if (!_callOptionalReturnBool(token, approvalCall)) {\n _callOptionalReturn(token, abi.encodeCall(token.approve, (spender, 0)));\n _callOptionalReturn(token, approvalCall);\n }\n }\n\n /**\n * @dev Performs an {ERC1363} transferAndCall, with a fallback to the simple {ERC20} transfer if the target has no\n * code. This can be used to implement an {ERC721}-like safe transfer that rely on {ERC1363} checks when\n * targeting contracts.\n *\n * Reverts if the returned value is other than `true`.\n */\n function transferAndCallRelaxed(IERC1363 token, address to, uint256 value, bytes memory data) internal {\n if (to.code.length == 0) {\n safeTransfer(token, to, value);\n } else if (!token.transferAndCall(to, value, data)) {\n revert SafeERC20FailedOperation(address(token));\n }\n }\n\n /**\n * @dev Performs an {ERC1363} transferFromAndCall, with a fallback to the simple {ERC20} transferFrom if the target\n * has no code. This can be used to implement an {ERC721}-like safe transfer that rely on {ERC1363} checks when\n * targeting contracts.\n *\n * Reverts if the returned value is other than `true`.\n */\n function transferFromAndCallRelaxed(\n IERC1363 token,\n address from,\n address to,\n uint256 value,\n bytes memory data\n ) internal {\n if (to.code.length == 0) {\n safeTransferFrom(token, from, to, value);\n } else if (!token.transferFromAndCall(from, to, value, data)) {\n revert SafeERC20FailedOperation(address(token));\n }\n }\n\n /**\n * @dev Performs an {ERC1363} approveAndCall, with a fallback to the simple {ERC20} approve if the target has no\n * code. This can be used to implement an {ERC721}-like safe transfer that rely on {ERC1363} checks when\n * targeting contracts.\n *\n * NOTE: When the recipient address (`to`) has no code (i.e. is an EOA), this function behaves as {forceApprove}.\n * Opposedly, when the recipient address (`to`) has code, this function only attempts to call {ERC1363-approveAndCall}\n * once without retrying, and relies on the returned value to be true.\n *\n * Reverts if the returned value is other than `true`.\n */\n function approveAndCallRelaxed(IERC1363 token, address to, uint256 value, bytes memory data) internal {\n if (to.code.length == 0) {\n forceApprove(token, to, value);\n } else if (!token.approveAndCall(to, value, data)) {\n revert SafeERC20FailedOperation(address(token));\n }\n }\n\n /**\n * @dev Imitates a Solidity high-level call (i.e. a regular function call to a contract), relaxing the requirement\n * on the return value: the return value is optional (but if data is returned, it must not be false).\n * @param token The token targeted by the call.\n * @param data The call data (encoded using abi.encode or one of its variants).\n *\n * This is a variant of {_callOptionalReturnBool} that reverts if call fails to meet the requirements.\n */\n function _callOptionalReturn(IERC20 token, bytes memory data) private {\n uint256 returnSize;\n uint256 returnValue;\n assembly (\"memory-safe\") {\n let success := call(gas(), token, 0, add(data, 0x20), mload(data), 0, 0x20)\n // bubble errors\n if iszero(success) {\n let ptr := mload(0x40)\n returndatacopy(ptr, 0, returndatasize())\n revert(ptr, returndatasize())\n }\n returnSize := returndatasize()\n returnValue := mload(0)\n }\n\n if (returnSize == 0 ? address(token).code.length == 0 : returnValue != 1) {\n revert SafeERC20FailedOperation(address(token));\n }\n }\n\n /**\n * @dev Imitates a Solidity high-level call (i.e. a regular function call to a contract), relaxing the requirement\n * on the return value: the return value is optional (but if data is returned, it must not be false).\n * @param token The token targeted by the call.\n * @param data The call data (encoded using abi.encode or one of its variants).\n *\n * This is a variant of {_callOptionalReturn} that silently catches all reverts and returns a bool instead.\n */\n function _callOptionalReturnBool(IERC20 token, bytes memory data) private returns (bool) {\n bool success;\n uint256 returnSize;\n uint256 returnValue;\n assembly (\"memory-safe\") {\n success := call(gas(), token, 0, add(data, 0x20), mload(data), 0, 0x20)\n returnSize := returndatasize()\n returnValue := mload(0)\n }\n return success && (returnSize == 0 ? address(token).code.length > 0 : returnValue == 1);\n }\n}\n" + }, + "@openzeppelin/contracts/utils/Address.sol": { + "content": "// SPDX-License-Identifier: MIT\n// OpenZeppelin Contracts (last updated v5.1.0) (utils/Address.sol)\n\npragma solidity ^0.8.20;\n\nimport {Errors} from \"./Errors.sol\";\n\n/**\n * @dev Collection of functions related to the address type\n */\nlibrary Address {\n /**\n * @dev There's no code at `target` (it is not a contract).\n */\n error AddressEmptyCode(address target);\n\n /**\n * @dev Replacement for Solidity's `transfer`: sends `amount` wei to\n * `recipient`, forwarding all available gas and reverting on errors.\n *\n * https://eips.ethereum.org/EIPS/eip-1884[EIP1884] increases the gas cost\n * of certain opcodes, possibly making contracts go over the 2300 gas limit\n * imposed by `transfer`, making them unable to receive funds via\n * `transfer`. {sendValue} removes this limitation.\n *\n * https://consensys.net/diligence/blog/2019/09/stop-using-soliditys-transfer-now/[Learn more].\n *\n * IMPORTANT: because control is transferred to `recipient`, care must be\n * taken to not create reentrancy vulnerabilities. Consider using\n * {ReentrancyGuard} or the\n * https://solidity.readthedocs.io/en/v0.8.20/security-considerations.html#use-the-checks-effects-interactions-pattern[checks-effects-interactions pattern].\n */\n function sendValue(address payable recipient, uint256 amount) internal {\n if (address(this).balance < amount) {\n revert Errors.InsufficientBalance(address(this).balance, amount);\n }\n\n (bool success, ) = recipient.call{value: amount}(\"\");\n if (!success) {\n revert Errors.FailedCall();\n }\n }\n\n /**\n * @dev Performs a Solidity function call using a low level `call`. A\n * plain `call` is an unsafe replacement for a function call: use this\n * function instead.\n *\n * If `target` reverts with a revert reason or custom error, it is bubbled\n * up by this function (like regular Solidity function calls). However, if\n * the call reverted with no returned reason, this function reverts with a\n * {Errors.FailedCall} error.\n *\n * Returns the raw returned data. To convert to the expected return value,\n * use https://solidity.readthedocs.io/en/latest/units-and-global-variables.html?highlight=abi.decode#abi-encoding-and-decoding-functions[`abi.decode`].\n *\n * Requirements:\n *\n * - `target` must be a contract.\n * - calling `target` with `data` must not revert.\n */\n function functionCall(address target, bytes memory data) internal returns (bytes memory) {\n return functionCallWithValue(target, data, 0);\n }\n\n /**\n * @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`],\n * but also transferring `value` wei to `target`.\n *\n * Requirements:\n *\n * - the calling contract must have an ETH balance of at least `value`.\n * - the called Solidity function must be `payable`.\n */\n function functionCallWithValue(address target, bytes memory data, uint256 value) internal returns (bytes memory) {\n if (address(this).balance < value) {\n revert Errors.InsufficientBalance(address(this).balance, value);\n }\n (bool success, bytes memory returndata) = target.call{value: value}(data);\n return verifyCallResultFromTarget(target, success, returndata);\n }\n\n /**\n * @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`],\n * but performing a static call.\n */\n function functionStaticCall(address target, bytes memory data) internal view returns (bytes memory) {\n (bool success, bytes memory returndata) = target.staticcall(data);\n return verifyCallResultFromTarget(target, success, returndata);\n }\n\n /**\n * @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`],\n * but performing a delegate call.\n */\n function functionDelegateCall(address target, bytes memory data) internal returns (bytes memory) {\n (bool success, bytes memory returndata) = target.delegatecall(data);\n return verifyCallResultFromTarget(target, success, returndata);\n }\n\n /**\n * @dev Tool to verify that a low level call to smart-contract was successful, and reverts if the target\n * was not a contract or bubbling up the revert reason (falling back to {Errors.FailedCall}) in case\n * of an unsuccessful call.\n */\n function verifyCallResultFromTarget(\n address target,\n bool success,\n bytes memory returndata\n ) internal view returns (bytes memory) {\n if (!success) {\n _revert(returndata);\n } else {\n // only check if target is a contract if the call was successful and the return data is empty\n // otherwise we already know that it was a contract\n if (returndata.length == 0 && target.code.length == 0) {\n revert AddressEmptyCode(target);\n }\n return returndata;\n }\n }\n\n /**\n * @dev Tool to verify that a low level call was successful, and reverts if it wasn't, either by bubbling the\n * revert reason or with a default {Errors.FailedCall} error.\n */\n function verifyCallResult(bool success, bytes memory returndata) internal pure returns (bytes memory) {\n if (!success) {\n _revert(returndata);\n } else {\n return returndata;\n }\n }\n\n /**\n * @dev Reverts with returndata if present. Otherwise reverts with {Errors.FailedCall}.\n */\n function _revert(bytes memory returndata) private pure {\n // Look for revert reason and bubble it up if present\n if (returndata.length > 0) {\n // The easiest way to bubble the revert reason is using memory via assembly\n assembly (\"memory-safe\") {\n let returndata_size := mload(returndata)\n revert(add(32, returndata), returndata_size)\n }\n } else {\n revert Errors.FailedCall();\n }\n }\n}\n" + }, "@openzeppelin/contracts/utils/Context.sol": { "content": "// SPDX-License-Identifier: MIT\n// OpenZeppelin Contracts (last updated v5.0.1) (utils/Context.sol)\n\npragma solidity ^0.8.20;\n\n/**\n * @dev Provides information about the current execution context, including the\n * sender of the transaction and its data. While these are generally available\n * via msg.sender and msg.data, they should not be accessed in such a direct\n * manner, since when dealing with meta-transactions the account sending and\n * paying for execution may not be the actual sender (as far as an application\n * is concerned).\n *\n * This contract is only required for intermediate, library-like contracts.\n */\nabstract contract Context {\n function _msgSender() internal view virtual returns (address) {\n return msg.sender;\n }\n\n function _msgData() internal view virtual returns (bytes calldata) {\n return msg.data;\n }\n\n function _contextSuffixLength() internal view virtual returns (uint256) {\n return 0;\n }\n}\n" }, + "@openzeppelin/contracts/utils/Errors.sol": { + "content": "// SPDX-License-Identifier: MIT\n// OpenZeppelin Contracts (last updated v5.1.0) (utils/Errors.sol)\n\npragma solidity ^0.8.20;\n\n/**\n * @dev Collection of common custom errors used in multiple contracts\n *\n * IMPORTANT: Backwards compatibility is not guaranteed in future versions of the library.\n * It is recommended to avoid relying on the error API for critical functionality.\n *\n * _Available since v5.1._\n */\nlibrary Errors {\n /**\n * @dev The ETH balance of the account is not enough to perform the operation.\n */\n error InsufficientBalance(uint256 balance, uint256 needed);\n\n /**\n * @dev A call to an address target failed. The target may have reverted.\n */\n error FailedCall();\n\n /**\n * @dev The deployment failed.\n */\n error FailedDeployment();\n\n /**\n * @dev A necessary precompile is missing.\n */\n error MissingPrecompile(address);\n}\n" + }, + "@openzeppelin/contracts/utils/introspection/IERC165.sol": { + "content": "// SPDX-License-Identifier: MIT\n// OpenZeppelin Contracts (last updated v5.1.0) (utils/introspection/IERC165.sol)\n\npragma solidity ^0.8.20;\n\n/**\n * @dev Interface of the ERC-165 standard, as defined in the\n * https://eips.ethereum.org/EIPS/eip-165[ERC].\n *\n * Implementers can declare support of contract interfaces, which can then be\n * queried by others ({ERC165Checker}).\n *\n * For an implementation, see {ERC165}.\n */\ninterface IERC165 {\n /**\n * @dev Returns true if this contract implements the interface defined by\n * `interfaceId`. See the corresponding\n * https://eips.ethereum.org/EIPS/eip-165#how-interfaces-are-identified[ERC section]\n * to learn more about how these ids are created.\n *\n * This function call must use less than 30 000 gas.\n */\n function supportsInterface(bytes4 interfaceId) external view returns (bool);\n}\n" + }, "@openzeppelin/contracts/utils/Pausable.sol": { "content": "// SPDX-License-Identifier: MIT\n// OpenZeppelin Contracts (last updated v5.0.0) (utils/Pausable.sol)\n\npragma solidity ^0.8.20;\n\nimport {Context} from \"../utils/Context.sol\";\n\n/**\n * @dev Contract module which allows children to implement an emergency stop\n * mechanism that can be triggered by an authorized account.\n *\n * This module is used through inheritance. It will make available the\n * modifiers `whenNotPaused` and `whenPaused`, which can be applied to\n * the functions of your contract. Note that they will not be pausable by\n * simply including this module, only once the modifiers are put in place.\n */\nabstract contract Pausable is Context {\n bool private _paused;\n\n /**\n * @dev Emitted when the pause is triggered by `account`.\n */\n event Paused(address account);\n\n /**\n * @dev Emitted when the pause is lifted by `account`.\n */\n event Unpaused(address account);\n\n /**\n * @dev The operation failed because the contract is paused.\n */\n error EnforcedPause();\n\n /**\n * @dev The operation failed because the contract is not paused.\n */\n error ExpectedPause();\n\n /**\n * @dev Initializes the contract in unpaused state.\n */\n constructor() {\n _paused = false;\n }\n\n /**\n * @dev Modifier to make a function callable only when the contract is not paused.\n *\n * Requirements:\n *\n * - The contract must not be paused.\n */\n modifier whenNotPaused() {\n _requireNotPaused();\n _;\n }\n\n /**\n * @dev Modifier to make a function callable only when the contract is paused.\n *\n * Requirements:\n *\n * - The contract must be paused.\n */\n modifier whenPaused() {\n _requirePaused();\n _;\n }\n\n /**\n * @dev Returns true if the contract is paused, and false otherwise.\n */\n function paused() public view virtual returns (bool) {\n return _paused;\n }\n\n /**\n * @dev Throws if the contract is paused.\n */\n function _requireNotPaused() internal view virtual {\n if (paused()) {\n revert EnforcedPause();\n }\n }\n\n /**\n * @dev Throws if the contract is not paused.\n */\n function _requirePaused() internal view virtual {\n if (!paused()) {\n revert ExpectedPause();\n }\n }\n\n /**\n * @dev Triggers stopped state.\n *\n * Requirements:\n *\n * - The contract must not be paused.\n */\n function _pause() internal virtual whenNotPaused {\n _paused = true;\n emit Paused(_msgSender());\n }\n\n /**\n * @dev Returns to normal state.\n *\n * Requirements:\n *\n * - The contract must be paused.\n */\n function _unpause() internal virtual whenPaused {\n _paused = false;\n emit Unpaused(_msgSender());\n }\n}\n" }, @@ -33,8 +54,8 @@ "contracts/token.sol": { "content": "// SPDX-License-Identifier: MIT\npragma solidity ^0.8.0;\n\nimport \"@openzeppelin/contracts/token/ERC20/ERC20.sol\";\nimport \"@openzeppelin/contracts/access/Ownable.sol\";\n\ncontract MockERC20 is ERC20, Ownable(msg.sender) {\n constructor(string memory name, string memory symbol) ERC20(name, symbol) {}\n\n function mint(address to, uint256 amount) external onlyOwner {\n _mint(to, amount);\n }\n}\n" }, - "contracts/vesting.sol": { - "content": "// SPDX-License-Identifier: MIT\npragma solidity ^0.8.0;\n\nimport \"@openzeppelin/contracts/token/ERC20/IERC20.sol\";\nimport \"@openzeppelin/contracts/access/Ownable.sol\";\nimport \"@openzeppelin/contracts/utils/Pausable.sol\";\nimport \"@openzeppelin/contracts/utils/ReentrancyGuard.sol\";\n\ncontract TokenVesting is Ownable(msg.sender), Pausable, ReentrancyGuard {\n struct VestingSchedule {\n uint256 totalAmount;\n uint256 startTime;\n uint256 cliffDuration;\n uint256 vestingDuration;\n uint256 amountClaimed;\n bool revoked;\n }\n\n // Token being vested\n IERC20 public immutable token;\n\n // Mapping from beneficiary to vesting schedule\n mapping(address => VestingSchedule) public vestingSchedules;\n\n // Whitelist of beneficiaries\n mapping(address => bool) public whitelist;\n\n // Events\n event VestingScheduleCreated(address indexed beneficiary, uint256 amount);\n event TokensClaimed(address indexed beneficiary, uint256 amount);\n event VestingRevoked(address indexed beneficiary);\n event BeneficiaryWhitelisted(address indexed beneficiary);\n event BeneficiaryRemovedFromWhitelist(address indexed beneficiary);\n\n constructor(address tokenAddress) {\n require(tokenAddress != address(0), \"Invalid token address\");\n token = IERC20(tokenAddress);\n }\n\n // Modifier to check if beneficiary is whitelisted\n modifier onlyWhitelisted(address beneficiary) {\n require(whitelist[beneficiary], \"Beneficiary not whitelisted\");\n _;\n }\n\n function addToWhitelist(address beneficiary) external onlyOwner {\n require(beneficiary != address(0), \"Invalid address\");\n whitelist[beneficiary] = true;\n emit BeneficiaryWhitelisted(beneficiary);\n }\n\n function removeFromWhitelist(address beneficiary) external onlyOwner {\n whitelist[beneficiary] = false;\n emit BeneficiaryRemovedFromWhitelist(beneficiary);\n }\n\n function createVestingSchedule(\n address beneficiary,\n uint256 amount,\n uint256 cliffDuration,\n uint256 vestingDuration,\n uint256 startTime\n ) external onlyOwner onlyWhitelisted(beneficiary) whenNotPaused {\n require(beneficiary != address(0), \"Invalid beneficiary\");\n require(amount > 0, \"Amount must be > 0\");\n require(vestingDuration > 0, \"Vesting duration must be > 0\");\n require(\n vestingDuration >= cliffDuration,\n \"Vesting duration must be >= cliff\"\n );\n require(\n vestingSchedules[beneficiary].totalAmount == 0,\n \"Schedule already exists\"\n );\n require(startTime >= block.timestamp, \"Start time must be in future\");\n\n vestingSchedules[beneficiary] = VestingSchedule({\n totalAmount: amount,\n startTime: startTime,\n cliffDuration: cliffDuration,\n vestingDuration: vestingDuration,\n amountClaimed: 0,\n revoked: false\n });\n\n require(\n token.transferFrom(msg.sender, address(this), amount),\n \"Transfer failed\"\n );\n emit VestingScheduleCreated(beneficiary, amount);\n }\n\n function calculateVestedAmount(\n address beneficiary\n ) public view returns (uint256) {\n VestingSchedule memory schedule = vestingSchedules[beneficiary];\n\n if (schedule.totalAmount == 0 || schedule.revoked) {\n return 0;\n }\n\n if (block.timestamp < schedule.startTime + schedule.cliffDuration) {\n return 0;\n }\n\n if (block.timestamp >= schedule.startTime + schedule.vestingDuration) {\n return schedule.totalAmount;\n }\n\n uint256 timeFromStart = block.timestamp - schedule.startTime;\n uint256 vestedAmount = (schedule.totalAmount * timeFromStart) /\n schedule.vestingDuration;\n\n return vestedAmount;\n }\n\n function claimVestedTokens() external nonReentrant whenNotPaused {\n VestingSchedule storage schedule = vestingSchedules[msg.sender];\n require(schedule.totalAmount > 0, \"No vesting schedule\");\n require(!schedule.revoked, \"Vesting revoked\");\n\n uint256 vestedAmount = calculateVestedAmount(msg.sender);\n uint256 claimableAmount = vestedAmount - schedule.amountClaimed;\n require(claimableAmount > 0, \"No tokens to claim\");\n\n schedule.amountClaimed += claimableAmount;\n require(token.transfer(msg.sender, claimableAmount), \"Transfer failed\");\n\n emit TokensClaimed(msg.sender, claimableAmount);\n }\n\n function revokeVesting(address beneficiary) external onlyOwner {\n VestingSchedule storage schedule = vestingSchedules[beneficiary];\n require(schedule.totalAmount > 0, \"No vesting schedule\");\n require(!schedule.revoked, \"Already revoked\");\n\n uint256 vestedAmount = calculateVestedAmount(beneficiary);\n uint256 unvestedAmount = schedule.totalAmount - vestedAmount;\n\n schedule.revoked = true;\n\n if (unvestedAmount > 0) {\n require(token.transfer(owner(), unvestedAmount), \"Transfer failed\");\n }\n\n emit VestingRevoked(beneficiary);\n }\n\n function pause() external onlyOwner {\n _pause();\n }\n\n function unpause() external onlyOwner {\n _unpause();\n }\n}\n" + "contracts/TokenVesting.sol": { + "content": "// Challenge: Token Vesting Contract\n/*\nCreate a token vesting contract with the following requirements:\n\n1. The contract should allow an admin to create vesting schedules for different beneficiaries\n2. Each vesting schedule should have:\n - Total amount of tokens to be vested\n - Cliff period (time before any tokens can be claimed)\n - Vesting duration (total time for all tokens to vest)\n - Start time\n3. After the cliff period, tokens should vest linearly over time\n4. Beneficiaries should be able to claim their vested tokens at any time\n5. Admin should be able to revoke unvested tokens from a beneficiary\n\nBonus challenges:\n- Add support for multiple token types\n- Implement a whitelist for beneficiaries\n- Add emergency pause functionality\n\nHere's your starter code:\n*/\n\n// SPDX-License-Identifier: MIT\npragma solidity ^0.8.0;\n\nimport \"@openzeppelin/contracts/token/ERC20/IERC20.sol\";\nimport \"@openzeppelin/contracts/token/ERC20/utils/SafeERC20.sol\";\nimport \"@openzeppelin/contracts/access/Ownable.sol\";\nimport \"@openzeppelin/contracts/utils/Pausable.sol\";\nimport \"@openzeppelin/contracts/utils/ReentrancyGuard.sol\";\n\ncontract TokenVesting is Ownable(msg.sender), Pausable, ReentrancyGuard {\n struct VestingSchedule {\n // TODO: Define the vesting schedule struct\n uint256 totalAmount;\n uint256 startTime;\n uint256 cliffDuration;\n uint256 vestingDuration;\n uint256 amountClaimed;\n bool revoked;\n }\n\n // Token being vested\n using SafeERC20 for IERC20;\n IERC20 public token;\n\n // Mapping from beneficiary to vesting schedule\n // TODO: Add state variables\n mapping(address => VestingSchedule) public vestingSchedules;\n\n // Whitelist of beneficiaries\n // TODO: Add state variables\n mapping(address => bool) public whitelist;\n\n // Events\n event VestingScheduleCreated(address indexed beneficiary, uint256 amount);\n event TokensClaimed(address indexed beneficiary, uint256 amount);\n event VestingRevoked(address indexed beneficiary);\n event BeneficiaryWhitelisted(address indexed beneficiary);\n event BeneficiaryRemovedFromWhitelist(address indexed beneficiary);\n\n constructor(address tokenAddress) {\n // TODO: Initialize the contract\n require(tokenAddress != address(0), \"Invalid token address\");\n token = IERC20(tokenAddress);\n }\n\n // Modifier to check if beneficiary is whitelisted\n modifier onlyWhitelisted(address beneficiary) {\n require(whitelist[beneficiary], \"Beneficiary not whitelisted\");\n _;\n }\n\n function addToWhitelist(address beneficiary) external onlyOwner {\n require(beneficiary != address(0), \"Invalid address\");\n whitelist[beneficiary] = true;\n emit BeneficiaryWhitelisted(beneficiary);\n }\n\n function removeFromWhitelist(address beneficiary) external onlyOwner {\n whitelist[beneficiary] = false;\n emit BeneficiaryRemovedFromWhitelist(beneficiary);\n }\n\n function createVestingSchedule(\n address beneficiary,\n uint256 amount,\n uint256 cliffDuration,\n uint256 vestingDuration,\n uint256 startTime\n ) external onlyOwner onlyWhitelisted(beneficiary) whenNotPaused {\n // TODO: Implement vesting schedule creation\n require(\n startTime > block.timestamp,\n \"Start time must be in the future\"\n );\n require(cliffDuration > 0, \"Cliff duration must be greater than 0\");\n require(vestingDuration > 0, \"Vesting duration must be greater than 0\");\n require(amount > 0, \"Amount must be greater than 0\");\n require(\n vestingDuration > cliffDuration,\n \"Vesting duration must be greater than cliff duration\"\n );\n\n VestingSchedule memory schedule = VestingSchedule(\n amount,\n startTime,\n cliffDuration,\n vestingDuration,\n 0,\n false\n );\n vestingSchedules[beneficiary] = schedule;\n\n token.safeTransferFrom(owner(), address(this), amount);\n\n emit VestingScheduleCreated(beneficiary, amount);\n }\n\n function calculateVestedAmount(\n address beneficiary\n ) public view returns (uint256) {\n // TODO: Implement vested amount calculation\n VestingSchedule memory schedule = vestingSchedules[beneficiary];\n require(!schedule.revoked, \"Vesting schedule revoked\");\n\n uint256 currentTime = block.timestamp;\n if(currentTime < schedule.startTime + schedule.cliffDuration) {\n return 0;\n }\n\n if(currentTime >= schedule.startTime + schedule.vestingDuration) {\n return schedule.totalAmount;\n }\n\n uint256 vestedDuration = currentTime - schedule.startTime;\n uint256 vestedAmount = (schedule.totalAmount * vestedDuration) / schedule.vestingDuration;\n\n return vestedAmount;\n }\n\n function claimVestedTokens() external nonReentrant whenNotPaused {\n // TODO: Implement token claiming\n address beneficiary = msg.sender;\n VestingSchedule storage schedule = vestingSchedules[beneficiary];\n\n require(schedule.startTime + schedule.cliffDuration < block.timestamp, \"No tokens to claim\");\n require(!schedule.revoked, \"Vesting schedule revoked\");\n require(schedule.totalAmount > 0, \"Total amount must be larger than 0\");\n\n uint256 vestedAmount = calculateVestedAmount(msg.sender);\n uint256 receivableAmount = vestedAmount - schedule.amountClaimed;\n schedule.amountClaimed += vestedAmount;\n\n token.safeTransfer(beneficiary, receivableAmount);\n\n emit TokensClaimed(beneficiary, vestedAmount);\n\n }\n\n function revokeVesting(address beneficiary) external onlyOwner {\n // TODO: Implement vesting revocation\n VestingSchedule storage schedule = vestingSchedules[beneficiary];\n require(!schedule.revoked, \"Vesting schedule revoked\");\n\n\n uint256 vestedAmount = calculateVestedAmount(beneficiary);\n uint256 unclaimedAmount = vestedAmount - schedule.amountClaimed;\n uint256 unvestedAmount = schedule.totalAmount - vestedAmount;\n \n schedule.revoked = true;\n \n if (unclaimedAmount > 0) {\n token.safeTransfer(beneficiary, unclaimedAmount);\n }\n if (unvestedAmount > 0) {\n token.safeTransfer(owner(), unvestedAmount);\n }\n\n emit VestingRevoked(beneficiary);\n }\n\n function pause() external onlyOwner {\n _pause();\n }\n\n function unpause() external onlyOwner {\n _unpause();\n }\n}\n\n/*\nSolution template (key points to implement):\n\n1. VestingSchedule struct should contain:\n - Total amount\n - Start time\n - Cliff duration\n - Vesting duration\n - Amount claimed\n - Revoked status\n\n2. State variables needed:\n - Mapping of beneficiary address to VestingSchedule\n - ERC20 token reference\n - Owner/admin address\n\n3. createVestingSchedule should:\n - Validate input parameters\n - Create new vesting schedule\n - Transfer tokens to contract\n - Emit event\n\n4. calculateVestedAmount should:\n - Check if cliff period has passed\n - Calculate linear vesting based on time passed\n - Account for already claimed tokens\n - Handle revoked status\n\n5. claimVestedTokens should:\n - Calculate claimable amount\n - Update claimed amount\n - Transfer tokens\n - Emit event\n\n6. revokeVesting should:\n - Only allow admin\n - Calculate and transfer unvested tokens back\n - Mark schedule as revoked\n - Emit event\n*/\n" } }, "settings": { @@ -42,7 +63,8 @@ "enabled": true, "runs": 200 }, - "evmVersion": "paris", + "evmVersion": "london", + "viaIR": false, "outputSelection": { "*": { "*": [ @@ -66,7 +88,7 @@ "absolutePath": "@openzeppelin/contracts/access/Ownable.sol", "exportedSymbols": { "Context": [ - 933 + 1693 ], "Ownable": [ 147 @@ -94,7 +116,7 @@ "nameLocation": "-1:-1:-1", "nodeType": "ImportDirective", "scope": 148, - "sourceUnit": 934, + "sourceUnit": 1694, "src": "128:45:0", "symbolAliases": [ { @@ -103,7 +125,7 @@ "name": "Context", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 933, + "referencedDeclaration": 1693, "src": "136:7:0", "typeDescriptions": {} }, @@ -123,7 +145,7 @@ "692:7:0" ], "nodeType": "IdentifierPath", - "referencedDeclaration": 933, + "referencedDeclaration": 1693, "src": "692:7:0" }, "id": 6, @@ -144,7 +166,7 @@ "id": 147, "linearizedBaseContracts": [ 147, - 933 + 1693 ], "name": "Ownable", "nameLocation": "681:7:0", @@ -892,7 +914,7 @@ "name": "_msgSender", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 915, + "referencedDeclaration": 1675, "src": "1866:10:0", "typeDescriptions": { "typeIdentifier": "t_function_internal_view$__$returns$_t_address_$", @@ -940,7 +962,7 @@ "name": "_msgSender", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 915, + "referencedDeclaration": 1675, "src": "1928:10:0", "typeDescriptions": { "typeIdentifier": "t_function_internal_view$__$returns$_t_address_$", @@ -1791,21 +1813,21 @@ }, "id": 0 }, - "@openzeppelin/contracts/interfaces/draft-IERC6093.sol": { + "@openzeppelin/contracts/interfaces/IERC1363.sol": { "ast": { - "absolutePath": "@openzeppelin/contracts/interfaces/draft-IERC6093.sol", + "absolutePath": "@openzeppelin/contracts/interfaces/IERC1363.sol", "exportedSymbols": { - "IERC1155Errors": [ - 284 + "IERC1363": [ + 229 ], - "IERC20Errors": [ - 189 + "IERC165": [ + 1913 ], - "IERC721Errors": [ - 237 + "IERC20": [ + 967 ] }, - "id": 285, + "id": 230, "license": "MIT", "nodeType": "SourceUnit", "nodes": [ @@ -1818,54 +1840,140 @@ ".20" ], "nodeType": "PragmaDirective", - "src": "112:24:1" + "src": "107:24:1" + }, + { + "absolutePath": "@openzeppelin/contracts/interfaces/IERC20.sol", + "file": "./IERC20.sol", + "id": 151, + "nameLocation": "-1:-1:-1", + "nodeType": "ImportDirective", + "scope": 230, + "sourceUnit": 238, + "src": "133:36:1", + "symbolAliases": [ + { + "foreign": { + "id": 150, + "name": "IERC20", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 967, + "src": "141:6:1", + "typeDescriptions": {} + }, + "nameLocation": "-1:-1:-1" + } + ], + "unitAlias": "" + }, + { + "absolutePath": "@openzeppelin/contracts/interfaces/IERC165.sol", + "file": "./IERC165.sol", + "id": 153, + "nameLocation": "-1:-1:-1", + "nodeType": "ImportDirective", + "scope": 230, + "sourceUnit": 234, + "src": "170:38:1", + "symbolAliases": [ + { + "foreign": { + "id": 152, + "name": "IERC165", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1913, + "src": "178:7:1", + "typeDescriptions": {} + }, + "nameLocation": "-1:-1:-1" + } + ], + "unitAlias": "" }, { "abstract": false, - "baseContracts": [], - "canonicalName": "IERC20Errors", + "baseContracts": [ + { + "baseName": { + "id": 155, + "name": "IERC20", + "nameLocations": [ + "590:6:1" + ], + "nodeType": "IdentifierPath", + "referencedDeclaration": 967, + "src": "590:6:1" + }, + "id": 156, + "nodeType": "InheritanceSpecifier", + "src": "590:6:1" + }, + { + "baseName": { + "id": 157, + "name": "IERC165", + "nameLocations": [ + "598:7:1" + ], + "nodeType": "IdentifierPath", + "referencedDeclaration": 1913, + "src": "598:7:1" + }, + "id": 158, + "nodeType": "InheritanceSpecifier", + "src": "598:7:1" + } + ], + "canonicalName": "IERC1363", "contractDependencies": [], "contractKind": "interface", "documentation": { - "id": 150, + "id": 154, "nodeType": "StructuredDocumentation", - "src": "138:141:1", - "text": " @dev Standard ERC-20 Errors\n Interface of the https://eips.ethereum.org/EIPS/eip-6093[ERC-6093] custom errors for ERC-20 tokens." + "src": "210:357:1", + "text": " @title IERC1363\n @dev Interface of the ERC-1363 standard as defined in the https://eips.ethereum.org/EIPS/eip-1363[ERC-1363].\n Defines an extension interface for ERC-20 tokens that supports executing code on a recipient contract\n after `transfer` or `transferFrom`, or code on a spender contract after `approve`, in a single transaction." }, - "fullyImplemented": true, - "id": 189, + "fullyImplemented": false, + "id": 229, "linearizedBaseContracts": [ - 189 + 229, + 1913, + 967 ], - "name": "IERC20Errors", - "nameLocation": "290:12:1", + "name": "IERC1363", + "nameLocation": "578:8:1", "nodeType": "ContractDefinition", "nodes": [ { "documentation": { - "id": 151, + "id": 159, "nodeType": "StructuredDocumentation", - "src": "309:309:1", - "text": " @dev Indicates an error related to the current `balance` of a `sender`. Used in transfers.\n @param sender Address whose tokens are being transferred.\n @param balance Current balance for the interacting account.\n @param needed Minimum amount required to perform a transfer." + "src": "1148:370:1", + "text": " @dev Moves a `value` amount of tokens from the caller's account to `to`\n and then calls {IERC1363Receiver-onTransferReceived} on `to`.\n @param to The address which you want to transfer to.\n @param value The amount of tokens to be transferred.\n @return A boolean value indicating whether the operation succeeded unless throwing." }, - "errorSelector": "e450d38c", - "id": 159, - "name": "ERC20InsufficientBalance", - "nameLocation": "629:24:1", - "nodeType": "ErrorDefinition", + "functionSelector": "1296ee62", + "id": 168, + "implemented": false, + "kind": "function", + "modifiers": [], + "name": "transferAndCall", + "nameLocation": "1532:15:1", + "nodeType": "FunctionDefinition", "parameters": { - "id": 158, + "id": 164, "nodeType": "ParameterList", "parameters": [ { "constant": false, - "id": 153, + "id": 161, "mutability": "mutable", - "name": "sender", - "nameLocation": "662:6:1", + "name": "to", + "nameLocation": "1556:2:1", "nodeType": "VariableDeclaration", - "scope": 159, - "src": "654:14:1", + "scope": 168, + "src": "1548:10:1", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -1873,10 +1981,10 @@ "typeString": "address" }, "typeName": { - "id": 152, + "id": 160, "name": "address", "nodeType": "ElementaryTypeName", - "src": "654:7:1", + "src": "1548:7:1", "stateMutability": "nonpayable", "typeDescriptions": { "typeIdentifier": "t_address", @@ -1887,13 +1995,13 @@ }, { "constant": false, - "id": 155, + "id": 163, "mutability": "mutable", - "name": "balance", - "nameLocation": "678:7:1", + "name": "value", + "nameLocation": "1568:5:1", "nodeType": "VariableDeclaration", - "scope": 159, - "src": "670:15:1", + "scope": 168, + "src": "1560:13:1", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -1901,74 +2009,88 @@ "typeString": "uint256" }, "typeName": { - "id": 154, + "id": 162, "name": "uint256", "nodeType": "ElementaryTypeName", - "src": "670:7:1", + "src": "1560:7:1", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, "visibility": "internal" - }, + } + ], + "src": "1547:27:1" + }, + "returnParameters": { + "id": 167, + "nodeType": "ParameterList", + "parameters": [ { "constant": false, - "id": 157, + "id": 166, "mutability": "mutable", - "name": "needed", - "nameLocation": "695:6:1", + "name": "", + "nameLocation": "-1:-1:-1", "nodeType": "VariableDeclaration", - "scope": 159, - "src": "687:14:1", + "scope": 168, + "src": "1593:4:1", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" + "typeIdentifier": "t_bool", + "typeString": "bool" }, "typeName": { - "id": 156, - "name": "uint256", + "id": 165, + "name": "bool", "nodeType": "ElementaryTypeName", - "src": "687:7:1", + "src": "1593:4:1", "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" + "typeIdentifier": "t_bool", + "typeString": "bool" } }, "visibility": "internal" } ], - "src": "653:49:1" + "src": "1592:6:1" }, - "src": "623:80:1" + "scope": 229, + "src": "1523:76:1", + "stateMutability": "nonpayable", + "virtual": false, + "visibility": "external" }, { "documentation": { - "id": 160, + "id": 169, "nodeType": "StructuredDocumentation", - "src": "709:152:1", - "text": " @dev Indicates a failure with the token `sender`. Used in transfers.\n @param sender Address whose tokens are being transferred." + "src": "1605:453:1", + "text": " @dev Moves a `value` amount of tokens from the caller's account to `to`\n and then calls {IERC1363Receiver-onTransferReceived} on `to`.\n @param to The address which you want to transfer to.\n @param value The amount of tokens to be transferred.\n @param data Additional data with no specified format, sent in call to `to`.\n @return A boolean value indicating whether the operation succeeded unless throwing." }, - "errorSelector": "96c6fd1e", - "id": 164, - "name": "ERC20InvalidSender", - "nameLocation": "872:18:1", - "nodeType": "ErrorDefinition", + "functionSelector": "4000aea0", + "id": 180, + "implemented": false, + "kind": "function", + "modifiers": [], + "name": "transferAndCall", + "nameLocation": "2072:15:1", + "nodeType": "FunctionDefinition", "parameters": { - "id": 163, + "id": 176, "nodeType": "ParameterList", "parameters": [ { "constant": false, - "id": 162, + "id": 171, "mutability": "mutable", - "name": "sender", - "nameLocation": "899:6:1", + "name": "to", + "nameLocation": "2096:2:1", "nodeType": "VariableDeclaration", - "scope": 164, - "src": "891:14:1", + "scope": 180, + "src": "2088:10:1", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -1976,10 +2098,10 @@ "typeString": "address" }, "typeName": { - "id": 161, + "id": 170, "name": "address", "nodeType": "ElementaryTypeName", - "src": "891:7:1", + "src": "2088:7:1", "stateMutability": "nonpayable", "typeDescriptions": { "typeIdentifier": "t_address", @@ -1987,86 +2109,132 @@ } }, "visibility": "internal" + }, + { + "constant": false, + "id": 173, + "mutability": "mutable", + "name": "value", + "nameLocation": "2108:5:1", + "nodeType": "VariableDeclaration", + "scope": 180, + "src": "2100:13:1", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 172, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "2100:7:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 175, + "mutability": "mutable", + "name": "data", + "nameLocation": "2130:4:1", + "nodeType": "VariableDeclaration", + "scope": 180, + "src": "2115:19:1", + "stateVariable": false, + "storageLocation": "calldata", + "typeDescriptions": { + "typeIdentifier": "t_bytes_calldata_ptr", + "typeString": "bytes" + }, + "typeName": { + "id": 174, + "name": "bytes", + "nodeType": "ElementaryTypeName", + "src": "2115:5:1", + "typeDescriptions": { + "typeIdentifier": "t_bytes_storage_ptr", + "typeString": "bytes" + } + }, + "visibility": "internal" } ], - "src": "890:16:1" - }, - "src": "866:41:1" - }, - { - "documentation": { - "id": 165, - "nodeType": "StructuredDocumentation", - "src": "913:159:1", - "text": " @dev Indicates a failure with the token `receiver`. Used in transfers.\n @param receiver Address to which tokens are being transferred." + "src": "2087:48:1" }, - "errorSelector": "ec442f05", - "id": 169, - "name": "ERC20InvalidReceiver", - "nameLocation": "1083:20:1", - "nodeType": "ErrorDefinition", - "parameters": { - "id": 168, + "returnParameters": { + "id": 179, "nodeType": "ParameterList", "parameters": [ { "constant": false, - "id": 167, + "id": 178, "mutability": "mutable", - "name": "receiver", - "nameLocation": "1112:8:1", + "name": "", + "nameLocation": "-1:-1:-1", "nodeType": "VariableDeclaration", - "scope": 169, - "src": "1104:16:1", + "scope": 180, + "src": "2154:4:1", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" + "typeIdentifier": "t_bool", + "typeString": "bool" }, "typeName": { - "id": 166, - "name": "address", + "id": 177, + "name": "bool", "nodeType": "ElementaryTypeName", - "src": "1104:7:1", - "stateMutability": "nonpayable", + "src": "2154:4:1", "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" + "typeIdentifier": "t_bool", + "typeString": "bool" } }, "visibility": "internal" } ], - "src": "1103:18:1" + "src": "2153:6:1" }, - "src": "1077:45:1" + "scope": 229, + "src": "2063:97:1", + "stateMutability": "nonpayable", + "virtual": false, + "visibility": "external" }, { "documentation": { - "id": 170, + "id": 181, "nodeType": "StructuredDocumentation", - "src": "1128:345:1", - "text": " @dev Indicates a failure with the `spender`’s `allowance`. Used in transfers.\n @param spender Address that may be allowed to operate on tokens without being their owner.\n @param allowance Amount of tokens a `spender` is allowed to operate with.\n @param needed Minimum amount required to perform a transfer." + "src": "2166:453:1", + "text": " @dev Moves a `value` amount of tokens from `from` to `to` using the allowance mechanism\n and then calls {IERC1363Receiver-onTransferReceived} on `to`.\n @param from The address which you want to send tokens from.\n @param to The address which you want to transfer to.\n @param value The amount of tokens to be transferred.\n @return A boolean value indicating whether the operation succeeded unless throwing." }, - "errorSelector": "fb8f41b2", - "id": 178, - "name": "ERC20InsufficientAllowance", - "nameLocation": "1484:26:1", - "nodeType": "ErrorDefinition", + "functionSelector": "d8fbe994", + "id": 192, + "implemented": false, + "kind": "function", + "modifiers": [], + "name": "transferFromAndCall", + "nameLocation": "2633:19:1", + "nodeType": "FunctionDefinition", "parameters": { - "id": 177, + "id": 188, "nodeType": "ParameterList", "parameters": [ { "constant": false, - "id": 172, + "id": 183, "mutability": "mutable", - "name": "spender", - "nameLocation": "1519:7:1", + "name": "from", + "nameLocation": "2661:4:1", "nodeType": "VariableDeclaration", - "scope": 178, - "src": "1511:15:1", + "scope": 192, + "src": "2653:12:1", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -2074,10 +2242,10 @@ "typeString": "address" }, "typeName": { - "id": 171, + "id": 182, "name": "address", "nodeType": "ElementaryTypeName", - "src": "1511:7:1", + "src": "2653:7:1", "stateMutability": "nonpayable", "typeDescriptions": { "typeIdentifier": "t_address", @@ -2088,40 +2256,41 @@ }, { "constant": false, - "id": 174, + "id": 185, "mutability": "mutable", - "name": "allowance", - "nameLocation": "1536:9:1", + "name": "to", + "nameLocation": "2675:2:1", "nodeType": "VariableDeclaration", - "scope": 178, - "src": "1528:17:1", + "scope": 192, + "src": "2667:10:1", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" + "typeIdentifier": "t_address", + "typeString": "address" }, "typeName": { - "id": 173, - "name": "uint256", + "id": 184, + "name": "address", "nodeType": "ElementaryTypeName", - "src": "1528:7:1", + "src": "2667:7:1", + "stateMutability": "nonpayable", "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" + "typeIdentifier": "t_address", + "typeString": "address" } }, "visibility": "internal" }, { "constant": false, - "id": 176, + "id": 187, "mutability": "mutable", - "name": "needed", - "nameLocation": "1555:6:1", + "name": "value", + "nameLocation": "2687:5:1", "nodeType": "VariableDeclaration", - "scope": 178, - "src": "1547:14:1", + "scope": 192, + "src": "2679:13:1", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -2129,10 +2298,10 @@ "typeString": "uint256" }, "typeName": { - "id": 175, + "id": 186, "name": "uint256", "nodeType": "ElementaryTypeName", - "src": "1547:7:1", + "src": "2679:7:1", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -2141,84 +2310,76 @@ "visibility": "internal" } ], - "src": "1510:52:1" - }, - "src": "1478:85:1" - }, - { - "documentation": { - "id": 179, - "nodeType": "StructuredDocumentation", - "src": "1569:174:1", - "text": " @dev Indicates a failure with the `approver` of a token to be approved. Used in approvals.\n @param approver Address initiating an approval operation." + "src": "2652:41:1" }, - "errorSelector": "e602df05", - "id": 183, - "name": "ERC20InvalidApprover", - "nameLocation": "1754:20:1", - "nodeType": "ErrorDefinition", - "parameters": { - "id": 182, + "returnParameters": { + "id": 191, "nodeType": "ParameterList", "parameters": [ { "constant": false, - "id": 181, + "id": 190, "mutability": "mutable", - "name": "approver", - "nameLocation": "1783:8:1", + "name": "", + "nameLocation": "-1:-1:-1", "nodeType": "VariableDeclaration", - "scope": 183, - "src": "1775:16:1", + "scope": 192, + "src": "2712:4:1", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" + "typeIdentifier": "t_bool", + "typeString": "bool" }, "typeName": { - "id": 180, - "name": "address", + "id": 189, + "name": "bool", "nodeType": "ElementaryTypeName", - "src": "1775:7:1", - "stateMutability": "nonpayable", + "src": "2712:4:1", "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" + "typeIdentifier": "t_bool", + "typeString": "bool" } }, "visibility": "internal" } ], - "src": "1774:18:1" + "src": "2711:6:1" }, - "src": "1748:45:1" + "scope": 229, + "src": "2624:94:1", + "stateMutability": "nonpayable", + "virtual": false, + "visibility": "external" }, { "documentation": { - "id": 184, + "id": 193, "nodeType": "StructuredDocumentation", - "src": "1799:195:1", - "text": " @dev Indicates a failure with the `spender` to be approved. Used in approvals.\n @param spender Address that may be allowed to operate on tokens without being their owner." + "src": "2724:536:1", + "text": " @dev Moves a `value` amount of tokens from `from` to `to` using the allowance mechanism\n and then calls {IERC1363Receiver-onTransferReceived} on `to`.\n @param from The address which you want to send tokens from.\n @param to The address which you want to transfer to.\n @param value The amount of tokens to be transferred.\n @param data Additional data with no specified format, sent in call to `to`.\n @return A boolean value indicating whether the operation succeeded unless throwing." }, - "errorSelector": "94280d62", - "id": 188, - "name": "ERC20InvalidSpender", - "nameLocation": "2005:19:1", - "nodeType": "ErrorDefinition", + "functionSelector": "c1d34b89", + "id": 206, + "implemented": false, + "kind": "function", + "modifiers": [], + "name": "transferFromAndCall", + "nameLocation": "3274:19:1", + "nodeType": "FunctionDefinition", "parameters": { - "id": 187, + "id": 202, "nodeType": "ParameterList", "parameters": [ { "constant": false, - "id": 186, + "id": 195, "mutability": "mutable", - "name": "spender", - "nameLocation": "2033:7:1", + "name": "from", + "nameLocation": "3302:4:1", "nodeType": "VariableDeclaration", - "scope": 188, - "src": "2025:15:1", + "scope": 206, + "src": "3294:12:1", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -2226,10 +2387,10 @@ "typeString": "address" }, "typeName": { - "id": 185, + "id": 194, "name": "address", "nodeType": "ElementaryTypeName", - "src": "2025:7:1", + "src": "3294:7:1", "stateMutability": "nonpayable", "typeDescriptions": { "typeIdentifier": "t_address", @@ -2237,71 +2398,16 @@ } }, "visibility": "internal" - } - ], - "src": "2024:17:1" - }, - "src": "1999:43:1" - } - ], - "scope": 285, - "src": "280:1764:1", - "usedErrors": [ - 159, - 164, - 169, - 178, - 183, - 188 - ], - "usedEvents": [] - }, - { - "abstract": false, - "baseContracts": [], - "canonicalName": "IERC721Errors", - "contractDependencies": [], - "contractKind": "interface", - "documentation": { - "id": 190, - "nodeType": "StructuredDocumentation", - "src": "2046:143:1", - "text": " @dev Standard ERC-721 Errors\n Interface of the https://eips.ethereum.org/EIPS/eip-6093[ERC-6093] custom errors for ERC-721 tokens." - }, - "fullyImplemented": true, - "id": 237, - "linearizedBaseContracts": [ - 237 - ], - "name": "IERC721Errors", - "nameLocation": "2200:13:1", - "nodeType": "ContractDefinition", - "nodes": [ - { - "documentation": { - "id": 191, - "nodeType": "StructuredDocumentation", - "src": "2220:219:1", - "text": " @dev Indicates that an address can't be an owner. For example, `address(0)` is a forbidden owner in ERC-20.\n Used in balance queries.\n @param owner Address of the current owner of a token." - }, - "errorSelector": "89c62b64", - "id": 195, - "name": "ERC721InvalidOwner", - "nameLocation": "2450:18:1", - "nodeType": "ErrorDefinition", - "parameters": { - "id": 194, - "nodeType": "ParameterList", - "parameters": [ + }, { "constant": false, - "id": 193, + "id": 197, "mutability": "mutable", - "name": "owner", - "nameLocation": "2477:5:1", + "name": "to", + "nameLocation": "3316:2:1", "nodeType": "VariableDeclaration", - "scope": 195, - "src": "2469:13:1", + "scope": 206, + "src": "3308:10:1", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -2309,10 +2415,10 @@ "typeString": "address" }, "typeName": { - "id": 192, + "id": 196, "name": "address", "nodeType": "ElementaryTypeName", - "src": "2469:7:1", + "src": "3308:7:1", "stateMutability": "nonpayable", "typeDescriptions": { "typeIdentifier": "t_address", @@ -2320,37 +2426,16 @@ } }, "visibility": "internal" - } - ], - "src": "2468:15:1" - }, - "src": "2444:40:1" - }, - { - "documentation": { - "id": 196, - "nodeType": "StructuredDocumentation", - "src": "2490:132:1", - "text": " @dev Indicates a `tokenId` whose `owner` is the zero address.\n @param tokenId Identifier number of a token." - }, - "errorSelector": "7e273289", - "id": 200, - "name": "ERC721NonexistentToken", - "nameLocation": "2633:22:1", - "nodeType": "ErrorDefinition", - "parameters": { - "id": 199, - "nodeType": "ParameterList", - "parameters": [ + }, { "constant": false, - "id": 198, + "id": 199, "mutability": "mutable", - "name": "tokenId", - "nameLocation": "2664:7:1", + "name": "value", + "nameLocation": "3328:5:1", "nodeType": "VariableDeclaration", - "scope": 200, - "src": "2656:15:1", + "scope": 206, + "src": "3320:13:1", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -2358,102 +2443,115 @@ "typeString": "uint256" }, "typeName": { - "id": 197, + "id": 198, "name": "uint256", "nodeType": "ElementaryTypeName", - "src": "2656:7:1", + "src": "3320:7:1", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, "visibility": "internal" - } - ], - "src": "2655:17:1" - }, - "src": "2627:46:1" - }, - { - "documentation": { - "id": 201, - "nodeType": "StructuredDocumentation", - "src": "2679:289:1", - "text": " @dev Indicates an error related to the ownership over a particular token. Used in transfers.\n @param sender Address whose tokens are being transferred.\n @param tokenId Identifier number of a token.\n @param owner Address of the current owner of a token." - }, - "errorSelector": "64283d7b", - "id": 209, - "name": "ERC721IncorrectOwner", - "nameLocation": "2979:20:1", - "nodeType": "ErrorDefinition", - "parameters": { - "id": 208, - "nodeType": "ParameterList", - "parameters": [ + }, { "constant": false, - "id": 203, + "id": 201, "mutability": "mutable", - "name": "sender", - "nameLocation": "3008:6:1", + "name": "data", + "nameLocation": "3350:4:1", "nodeType": "VariableDeclaration", - "scope": 209, - "src": "3000:14:1", + "scope": 206, + "src": "3335:19:1", "stateVariable": false, - "storageLocation": "default", + "storageLocation": "calldata", "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" + "typeIdentifier": "t_bytes_calldata_ptr", + "typeString": "bytes" }, "typeName": { - "id": 202, - "name": "address", + "id": 200, + "name": "bytes", "nodeType": "ElementaryTypeName", - "src": "3000:7:1", - "stateMutability": "nonpayable", + "src": "3335:5:1", "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" + "typeIdentifier": "t_bytes_storage_ptr", + "typeString": "bytes" } }, "visibility": "internal" - }, + } + ], + "src": "3293:62:1" + }, + "returnParameters": { + "id": 205, + "nodeType": "ParameterList", + "parameters": [ { "constant": false, - "id": 205, + "id": 204, "mutability": "mutable", - "name": "tokenId", - "nameLocation": "3024:7:1", + "name": "", + "nameLocation": "-1:-1:-1", "nodeType": "VariableDeclaration", - "scope": 209, - "src": "3016:15:1", + "scope": 206, + "src": "3374:4:1", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" + "typeIdentifier": "t_bool", + "typeString": "bool" }, "typeName": { - "id": 204, - "name": "uint256", + "id": 203, + "name": "bool", "nodeType": "ElementaryTypeName", - "src": "3016:7:1", + "src": "3374:4:1", "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" + "typeIdentifier": "t_bool", + "typeString": "bool" } }, "visibility": "internal" - }, + } + ], + "src": "3373:6:1" + }, + "scope": 229, + "src": "3265:115:1", + "stateMutability": "nonpayable", + "virtual": false, + "visibility": "external" + }, + { + "documentation": { + "id": 207, + "nodeType": "StructuredDocumentation", + "src": "3386:390:1", + "text": " @dev Sets a `value` amount of tokens as the allowance of `spender` over the\n caller's tokens and then calls {IERC1363Spender-onApprovalReceived} on `spender`.\n @param spender The address which will spend the funds.\n @param value The amount of tokens to be spent.\n @return A boolean value indicating whether the operation succeeded unless throwing." + }, + "functionSelector": "3177029f", + "id": 216, + "implemented": false, + "kind": "function", + "modifiers": [], + "name": "approveAndCall", + "nameLocation": "3790:14:1", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 212, + "nodeType": "ParameterList", + "parameters": [ { "constant": false, - "id": 207, + "id": 209, "mutability": "mutable", - "name": "owner", - "nameLocation": "3041:5:1", + "name": "spender", + "nameLocation": "3813:7:1", "nodeType": "VariableDeclaration", - "scope": 209, - "src": "3033:13:1", + "scope": 216, + "src": "3805:15:1", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -2461,10 +2559,10 @@ "typeString": "address" }, "typeName": { - "id": 206, + "id": 208, "name": "address", "nodeType": "ElementaryTypeName", - "src": "3033:7:1", + "src": "3805:7:1", "stateMutability": "nonpayable", "typeDescriptions": { "typeIdentifier": "t_address", @@ -2472,135 +2570,105 @@ } }, "visibility": "internal" - } - ], - "src": "2999:48:1" - }, - "src": "2973:75:1" - }, - { - "documentation": { - "id": 210, - "nodeType": "StructuredDocumentation", - "src": "3054:152:1", - "text": " @dev Indicates a failure with the token `sender`. Used in transfers.\n @param sender Address whose tokens are being transferred." - }, - "errorSelector": "73c6ac6e", - "id": 214, - "name": "ERC721InvalidSender", - "nameLocation": "3217:19:1", - "nodeType": "ErrorDefinition", - "parameters": { - "id": 213, - "nodeType": "ParameterList", - "parameters": [ + }, { "constant": false, - "id": 212, + "id": 211, "mutability": "mutable", - "name": "sender", - "nameLocation": "3245:6:1", + "name": "value", + "nameLocation": "3830:5:1", "nodeType": "VariableDeclaration", - "scope": 214, - "src": "3237:14:1", + "scope": 216, + "src": "3822:13:1", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" + "typeIdentifier": "t_uint256", + "typeString": "uint256" }, "typeName": { - "id": 211, - "name": "address", + "id": 210, + "name": "uint256", "nodeType": "ElementaryTypeName", - "src": "3237:7:1", - "stateMutability": "nonpayable", + "src": "3822:7:1", "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" + "typeIdentifier": "t_uint256", + "typeString": "uint256" } }, "visibility": "internal" } ], - "src": "3236:16:1" + "src": "3804:32:1" }, - "src": "3211:42:1" - }, - { - "documentation": { + "returnParameters": { "id": 215, - "nodeType": "StructuredDocumentation", - "src": "3259:159:1", - "text": " @dev Indicates a failure with the token `receiver`. Used in transfers.\n @param receiver Address to which tokens are being transferred." - }, - "errorSelector": "64a0ae92", - "id": 219, - "name": "ERC721InvalidReceiver", - "nameLocation": "3429:21:1", - "nodeType": "ErrorDefinition", - "parameters": { - "id": 218, "nodeType": "ParameterList", "parameters": [ { "constant": false, - "id": 217, + "id": 214, "mutability": "mutable", - "name": "receiver", - "nameLocation": "3459:8:1", + "name": "", + "nameLocation": "-1:-1:-1", "nodeType": "VariableDeclaration", - "scope": 219, - "src": "3451:16:1", + "scope": 216, + "src": "3855:4:1", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" + "typeIdentifier": "t_bool", + "typeString": "bool" }, "typeName": { - "id": 216, - "name": "address", + "id": 213, + "name": "bool", "nodeType": "ElementaryTypeName", - "src": "3451:7:1", - "stateMutability": "nonpayable", + "src": "3855:4:1", "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" + "typeIdentifier": "t_bool", + "typeString": "bool" } }, "visibility": "internal" } ], - "src": "3450:18:1" + "src": "3854:6:1" }, - "src": "3423:46:1" + "scope": 229, + "src": "3781:80:1", + "stateMutability": "nonpayable", + "virtual": false, + "visibility": "external" }, { "documentation": { - "id": 220, + "id": 217, "nodeType": "StructuredDocumentation", - "src": "3475:247:1", - "text": " @dev Indicates a failure with the `operator`’s approval. Used in transfers.\n @param operator Address that may be allowed to operate on tokens without being their owner.\n @param tokenId Identifier number of a token." + "src": "3867:478:1", + "text": " @dev Sets a `value` amount of tokens as the allowance of `spender` over the\n caller's tokens and then calls {IERC1363Spender-onApprovalReceived} on `spender`.\n @param spender The address which will spend the funds.\n @param value The amount of tokens to be spent.\n @param data Additional data with no specified format, sent in call to `spender`.\n @return A boolean value indicating whether the operation succeeded unless throwing." }, - "errorSelector": "177e802f", - "id": 226, - "name": "ERC721InsufficientApproval", - "nameLocation": "3733:26:1", - "nodeType": "ErrorDefinition", + "functionSelector": "cae9ca51", + "id": 228, + "implemented": false, + "kind": "function", + "modifiers": [], + "name": "approveAndCall", + "nameLocation": "4359:14:1", + "nodeType": "FunctionDefinition", "parameters": { - "id": 225, + "id": 224, "nodeType": "ParameterList", "parameters": [ { "constant": false, - "id": 222, + "id": 219, "mutability": "mutable", - "name": "operator", - "nameLocation": "3768:8:1", + "name": "spender", + "nameLocation": "4382:7:1", "nodeType": "VariableDeclaration", - "scope": 226, - "src": "3760:16:1", + "scope": 228, + "src": "4374:15:1", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -2608,10 +2676,10 @@ "typeString": "address" }, "typeName": { - "id": 221, + "id": 218, "name": "address", "nodeType": "ElementaryTypeName", - "src": "3760:7:1", + "src": "4374:7:1", "stateMutability": "nonpayable", "typeDescriptions": { "typeIdentifier": "t_address", @@ -2622,13 +2690,13 @@ }, { "constant": false, - "id": 224, + "id": 221, "mutability": "mutable", - "name": "tokenId", - "nameLocation": "3786:7:1", + "name": "value", + "nameLocation": "4399:5:1", "nodeType": "VariableDeclaration", - "scope": 226, - "src": "3778:15:1", + "scope": 228, + "src": "4391:13:1", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -2636,167 +2704,268 @@ "typeString": "uint256" }, "typeName": { - "id": 223, + "id": 220, "name": "uint256", "nodeType": "ElementaryTypeName", - "src": "3778:7:1", + "src": "4391:7:1", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, "visibility": "internal" - } - ], - "src": "3759:35:1" - }, - "src": "3727:68:1" - }, - { - "documentation": { - "id": 227, - "nodeType": "StructuredDocumentation", - "src": "3801:174:1", - "text": " @dev Indicates a failure with the `approver` of a token to be approved. Used in approvals.\n @param approver Address initiating an approval operation." - }, - "errorSelector": "a9fbf51f", - "id": 231, - "name": "ERC721InvalidApprover", - "nameLocation": "3986:21:1", - "nodeType": "ErrorDefinition", - "parameters": { - "id": 230, - "nodeType": "ParameterList", - "parameters": [ + }, { "constant": false, - "id": 229, + "id": 223, "mutability": "mutable", - "name": "approver", - "nameLocation": "4016:8:1", + "name": "data", + "nameLocation": "4421:4:1", "nodeType": "VariableDeclaration", - "scope": 231, - "src": "4008:16:1", + "scope": 228, + "src": "4406:19:1", "stateVariable": false, - "storageLocation": "default", + "storageLocation": "calldata", "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" + "typeIdentifier": "t_bytes_calldata_ptr", + "typeString": "bytes" }, "typeName": { - "id": 228, - "name": "address", + "id": 222, + "name": "bytes", "nodeType": "ElementaryTypeName", - "src": "4008:7:1", - "stateMutability": "nonpayable", + "src": "4406:5:1", "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" + "typeIdentifier": "t_bytes_storage_ptr", + "typeString": "bytes" } }, "visibility": "internal" } ], - "src": "4007:18:1" + "src": "4373:53:1" }, - "src": "3980:46:1" - }, - { - "documentation": { - "id": 232, - "nodeType": "StructuredDocumentation", - "src": "4032:197:1", - "text": " @dev Indicates a failure with the `operator` to be approved. Used in approvals.\n @param operator Address that may be allowed to operate on tokens without being their owner." - }, - "errorSelector": "5b08ba18", - "id": 236, - "name": "ERC721InvalidOperator", - "nameLocation": "4240:21:1", - "nodeType": "ErrorDefinition", - "parameters": { - "id": 235, + "returnParameters": { + "id": 227, "nodeType": "ParameterList", "parameters": [ { "constant": false, - "id": 234, + "id": 226, "mutability": "mutable", - "name": "operator", - "nameLocation": "4270:8:1", + "name": "", + "nameLocation": "-1:-1:-1", "nodeType": "VariableDeclaration", - "scope": 236, - "src": "4262:16:1", + "scope": 228, + "src": "4445:4:1", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" + "typeIdentifier": "t_bool", + "typeString": "bool" }, "typeName": { - "id": 233, - "name": "address", + "id": 225, + "name": "bool", "nodeType": "ElementaryTypeName", - "src": "4262:7:1", - "stateMutability": "nonpayable", + "src": "4445:4:1", "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" + "typeIdentifier": "t_bool", + "typeString": "bool" } }, "visibility": "internal" } ], - "src": "4261:18:1" + "src": "4444:6:1" }, - "src": "4234:46:1" + "scope": 229, + "src": "4350:101:1", + "stateMutability": "nonpayable", + "virtual": false, + "visibility": "external" } ], - "scope": 285, - "src": "2190:2092:1", - "usedErrors": [ - 195, - 200, - 209, - 214, - 219, - 226, - 231, - 236 - ], - "usedEvents": [] + "scope": 230, + "src": "568:3885:1", + "usedErrors": [], + "usedEvents": [ + 901, + 910 + ] + } + ], + "src": "107:4347:1" + }, + "id": 1 + }, + "@openzeppelin/contracts/interfaces/IERC165.sol": { + "ast": { + "absolutePath": "@openzeppelin/contracts/interfaces/IERC165.sol", + "exportedSymbols": { + "IERC165": [ + 1913 + ] + }, + "id": 234, + "license": "MIT", + "nodeType": "SourceUnit", + "nodes": [ + { + "id": 231, + "literals": [ + "solidity", + "^", + "0.8", + ".20" + ], + "nodeType": "PragmaDirective", + "src": "106:24:2" + }, + { + "absolutePath": "@openzeppelin/contracts/utils/introspection/IERC165.sol", + "file": "../utils/introspection/IERC165.sol", + "id": 233, + "nameLocation": "-1:-1:-1", + "nodeType": "ImportDirective", + "scope": 234, + "sourceUnit": 1914, + "src": "132:59:2", + "symbolAliases": [ + { + "foreign": { + "id": 232, + "name": "IERC165", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1913, + "src": "140:7:2", + "typeDescriptions": {} + }, + "nameLocation": "-1:-1:-1" + } + ], + "unitAlias": "" + } + ], + "src": "106:86:2" + }, + "id": 2 + }, + "@openzeppelin/contracts/interfaces/IERC20.sol": { + "ast": { + "absolutePath": "@openzeppelin/contracts/interfaces/IERC20.sol", + "exportedSymbols": { + "IERC20": [ + 967 + ] + }, + "id": 238, + "license": "MIT", + "nodeType": "SourceUnit", + "nodes": [ + { + "id": 235, + "literals": [ + "solidity", + "^", + "0.8", + ".20" + ], + "nodeType": "PragmaDirective", + "src": "105:24:3" + }, + { + "absolutePath": "@openzeppelin/contracts/token/ERC20/IERC20.sol", + "file": "../token/ERC20/IERC20.sol", + "id": 237, + "nameLocation": "-1:-1:-1", + "nodeType": "ImportDirective", + "scope": 238, + "sourceUnit": 968, + "src": "131:49:3", + "symbolAliases": [ + { + "foreign": { + "id": 236, + "name": "IERC20", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 967, + "src": "139:6:3", + "typeDescriptions": {} + }, + "nameLocation": "-1:-1:-1" + } + ], + "unitAlias": "" + } + ], + "src": "105:76:3" + }, + "id": 3 + }, + "@openzeppelin/contracts/interfaces/draft-IERC6093.sol": { + "ast": { + "absolutePath": "@openzeppelin/contracts/interfaces/draft-IERC6093.sol", + "exportedSymbols": { + "IERC1155Errors": [ + 374 + ], + "IERC20Errors": [ + 279 + ], + "IERC721Errors": [ + 327 + ] + }, + "id": 375, + "license": "MIT", + "nodeType": "SourceUnit", + "nodes": [ + { + "id": 239, + "literals": [ + "solidity", + "^", + "0.8", + ".20" + ], + "nodeType": "PragmaDirective", + "src": "112:24:4" }, { "abstract": false, "baseContracts": [], - "canonicalName": "IERC1155Errors", + "canonicalName": "IERC20Errors", "contractDependencies": [], "contractKind": "interface", "documentation": { - "id": 238, + "id": 240, "nodeType": "StructuredDocumentation", - "src": "4284:145:1", - "text": " @dev Standard ERC-1155 Errors\n Interface of the https://eips.ethereum.org/EIPS/eip-6093[ERC-6093] custom errors for ERC-1155 tokens." + "src": "138:141:4", + "text": " @dev Standard ERC-20 Errors\n Interface of the https://eips.ethereum.org/EIPS/eip-6093[ERC-6093] custom errors for ERC-20 tokens." }, "fullyImplemented": true, - "id": 284, + "id": 279, "linearizedBaseContracts": [ - 284 + 279 ], - "name": "IERC1155Errors", - "nameLocation": "4440:14:1", + "name": "IERC20Errors", + "nameLocation": "290:12:4", "nodeType": "ContractDefinition", "nodes": [ { "documentation": { - "id": 239, + "id": 241, "nodeType": "StructuredDocumentation", - "src": "4461:361:1", - "text": " @dev Indicates an error related to the current `balance` of a `sender`. Used in transfers.\n @param sender Address whose tokens are being transferred.\n @param balance Current balance for the interacting account.\n @param needed Minimum amount required to perform a transfer.\n @param tokenId Identifier number of a token." + "src": "309:309:4", + "text": " @dev Indicates an error related to the current `balance` of a `sender`. Used in transfers.\n @param sender Address whose tokens are being transferred.\n @param balance Current balance for the interacting account.\n @param needed Minimum amount required to perform a transfer." }, - "errorSelector": "03dee4c5", + "errorSelector": "e450d38c", "id": 249, - "name": "ERC1155InsufficientBalance", - "nameLocation": "4833:26:1", + "name": "ERC20InsufficientBalance", + "nameLocation": "629:24:4", "nodeType": "ErrorDefinition", "parameters": { "id": 248, @@ -2804,13 +2973,13 @@ "parameters": [ { "constant": false, - "id": 241, + "id": 243, "mutability": "mutable", "name": "sender", - "nameLocation": "4868:6:1", + "nameLocation": "662:6:4", "nodeType": "VariableDeclaration", "scope": 249, - "src": "4860:14:1", + "src": "654:14:4", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -2818,10 +2987,10 @@ "typeString": "address" }, "typeName": { - "id": 240, + "id": 242, "name": "address", "nodeType": "ElementaryTypeName", - "src": "4860:7:1", + "src": "654:7:4", "stateMutability": "nonpayable", "typeDescriptions": { "typeIdentifier": "t_address", @@ -2830,42 +2999,15 @@ }, "visibility": "internal" }, - { - "constant": false, - "id": 243, - "mutability": "mutable", - "name": "balance", - "nameLocation": "4884:7:1", - "nodeType": "VariableDeclaration", - "scope": 249, - "src": "4876:15:1", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "typeName": { - "id": 242, - "name": "uint256", - "nodeType": "ElementaryTypeName", - "src": "4876:7:1", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "visibility": "internal" - }, { "constant": false, "id": 245, "mutability": "mutable", - "name": "needed", - "nameLocation": "4901:6:1", + "name": "balance", + "nameLocation": "678:7:4", "nodeType": "VariableDeclaration", "scope": 249, - "src": "4893:14:1", + "src": "670:15:4", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -2876,7 +3018,7 @@ "id": 244, "name": "uint256", "nodeType": "ElementaryTypeName", - "src": "4893:7:1", + "src": "670:7:4", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -2888,11 +3030,11 @@ "constant": false, "id": 247, "mutability": "mutable", - "name": "tokenId", - "nameLocation": "4917:7:1", + "name": "needed", + "nameLocation": "695:6:4", "nodeType": "VariableDeclaration", "scope": 249, - "src": "4909:15:1", + "src": "687:14:4", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -2903,7 +3045,7 @@ "id": 246, "name": "uint256", "nodeType": "ElementaryTypeName", - "src": "4909:7:1", + "src": "687:7:4", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -2912,21 +3054,21 @@ "visibility": "internal" } ], - "src": "4859:66:1" + "src": "653:49:4" }, - "src": "4827:99:1" + "src": "623:80:4" }, { "documentation": { "id": 250, "nodeType": "StructuredDocumentation", - "src": "4932:152:1", + "src": "709:152:4", "text": " @dev Indicates a failure with the token `sender`. Used in transfers.\n @param sender Address whose tokens are being transferred." }, - "errorSelector": "01a83514", + "errorSelector": "96c6fd1e", "id": 254, - "name": "ERC1155InvalidSender", - "nameLocation": "5095:20:1", + "name": "ERC20InvalidSender", + "nameLocation": "872:18:4", "nodeType": "ErrorDefinition", "parameters": { "id": 253, @@ -2937,10 +3079,10 @@ "id": 252, "mutability": "mutable", "name": "sender", - "nameLocation": "5124:6:1", + "nameLocation": "899:6:4", "nodeType": "VariableDeclaration", "scope": 254, - "src": "5116:14:1", + "src": "891:14:4", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -2951,7 +3093,7 @@ "id": 251, "name": "address", "nodeType": "ElementaryTypeName", - "src": "5116:7:1", + "src": "891:7:4", "stateMutability": "nonpayable", "typeDescriptions": { "typeIdentifier": "t_address", @@ -2961,21 +3103,21 @@ "visibility": "internal" } ], - "src": "5115:16:1" + "src": "890:16:4" }, - "src": "5089:43:1" + "src": "866:41:4" }, { "documentation": { "id": 255, "nodeType": "StructuredDocumentation", - "src": "5138:159:1", + "src": "913:159:4", "text": " @dev Indicates a failure with the token `receiver`. Used in transfers.\n @param receiver Address to which tokens are being transferred." }, - "errorSelector": "57f447ce", + "errorSelector": "ec442f05", "id": 259, - "name": "ERC1155InvalidReceiver", - "nameLocation": "5308:22:1", + "name": "ERC20InvalidReceiver", + "nameLocation": "1083:20:4", "nodeType": "ErrorDefinition", "parameters": { "id": 258, @@ -2986,10 +3128,10 @@ "id": 257, "mutability": "mutable", "name": "receiver", - "nameLocation": "5339:8:1", + "nameLocation": "1112:8:4", "nodeType": "VariableDeclaration", "scope": 259, - "src": "5331:16:1", + "src": "1104:16:4", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -3000,7 +3142,7 @@ "id": 256, "name": "address", "nodeType": "ElementaryTypeName", - "src": "5331:7:1", + "src": "1104:7:4", "stateMutability": "nonpayable", "typeDescriptions": { "typeIdentifier": "t_address", @@ -3010,35 +3152,35 @@ "visibility": "internal" } ], - "src": "5330:18:1" + "src": "1103:18:4" }, - "src": "5302:47:1" + "src": "1077:45:4" }, { "documentation": { "id": 260, "nodeType": "StructuredDocumentation", - "src": "5355:256:1", - "text": " @dev Indicates a failure with the `operator`’s approval. Used in transfers.\n @param operator Address that may be allowed to operate on tokens without being their owner.\n @param owner Address of the current owner of a token." + "src": "1128:345:4", + "text": " @dev Indicates a failure with the `spender`’s `allowance`. Used in transfers.\n @param spender Address that may be allowed to operate on tokens without being their owner.\n @param allowance Amount of tokens a `spender` is allowed to operate with.\n @param needed Minimum amount required to perform a transfer." }, - "errorSelector": "e237d922", - "id": 266, - "name": "ERC1155MissingApprovalForAll", - "nameLocation": "5622:28:1", + "errorSelector": "fb8f41b2", + "id": 268, + "name": "ERC20InsufficientAllowance", + "nameLocation": "1484:26:4", "nodeType": "ErrorDefinition", "parameters": { - "id": 265, + "id": 267, "nodeType": "ParameterList", "parameters": [ { "constant": false, "id": 262, "mutability": "mutable", - "name": "operator", - "nameLocation": "5659:8:1", + "name": "spender", + "nameLocation": "1519:7:4", "nodeType": "VariableDeclaration", - "scope": 266, - "src": "5651:16:1", + "scope": 268, + "src": "1511:15:4", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -3049,7 +3191,7 @@ "id": 261, "name": "address", "nodeType": "ElementaryTypeName", - "src": "5651:7:1", + "src": "1511:7:4", "stateMutability": "nonpayable", "typeDescriptions": { "typeIdentifier": "t_address", @@ -3062,60 +3204,86 @@ "constant": false, "id": 264, "mutability": "mutable", - "name": "owner", - "nameLocation": "5677:5:1", + "name": "allowance", + "nameLocation": "1536:9:4", "nodeType": "VariableDeclaration", - "scope": 266, - "src": "5669:13:1", + "scope": 268, + "src": "1528:17:4", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" + "typeIdentifier": "t_uint256", + "typeString": "uint256" }, "typeName": { "id": 263, - "name": "address", + "name": "uint256", "nodeType": "ElementaryTypeName", - "src": "5669:7:1", - "stateMutability": "nonpayable", + "src": "1528:7:4", "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 266, + "mutability": "mutable", + "name": "needed", + "nameLocation": "1555:6:4", + "nodeType": "VariableDeclaration", + "scope": 268, + "src": "1547:14:4", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 265, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "1547:7:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" } }, "visibility": "internal" } ], - "src": "5650:33:1" + "src": "1510:52:4" }, - "src": "5616:68:1" + "src": "1478:85:4" }, { "documentation": { - "id": 267, + "id": 269, "nodeType": "StructuredDocumentation", - "src": "5690:174:1", + "src": "1569:174:4", "text": " @dev Indicates a failure with the `approver` of a token to be approved. Used in approvals.\n @param approver Address initiating an approval operation." }, - "errorSelector": "3e31884e", - "id": 271, - "name": "ERC1155InvalidApprover", - "nameLocation": "5875:22:1", + "errorSelector": "e602df05", + "id": 273, + "name": "ERC20InvalidApprover", + "nameLocation": "1754:20:4", "nodeType": "ErrorDefinition", "parameters": { - "id": 270, + "id": 272, "nodeType": "ParameterList", "parameters": [ { "constant": false, - "id": 269, + "id": 271, "mutability": "mutable", "name": "approver", - "nameLocation": "5906:8:1", + "nameLocation": "1783:8:4", "nodeType": "VariableDeclaration", - "scope": 271, - "src": "5898:16:1", + "scope": 273, + "src": "1775:16:4", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -3123,10 +3291,10 @@ "typeString": "address" }, "typeName": { - "id": 268, + "id": 270, "name": "address", "nodeType": "ElementaryTypeName", - "src": "5898:7:1", + "src": "1775:7:4", "stateMutability": "nonpayable", "typeDescriptions": { "typeIdentifier": "t_address", @@ -3136,35 +3304,35 @@ "visibility": "internal" } ], - "src": "5897:18:1" + "src": "1774:18:4" }, - "src": "5869:47:1" + "src": "1748:45:4" }, { "documentation": { - "id": 272, + "id": 274, "nodeType": "StructuredDocumentation", - "src": "5922:197:1", - "text": " @dev Indicates a failure with the `operator` to be approved. Used in approvals.\n @param operator Address that may be allowed to operate on tokens without being their owner." + "src": "1799:195:4", + "text": " @dev Indicates a failure with the `spender` to be approved. Used in approvals.\n @param spender Address that may be allowed to operate on tokens without being their owner." }, - "errorSelector": "ced3e100", - "id": 276, - "name": "ERC1155InvalidOperator", - "nameLocation": "6130:22:1", + "errorSelector": "94280d62", + "id": 278, + "name": "ERC20InvalidSpender", + "nameLocation": "2005:19:4", "nodeType": "ErrorDefinition", "parameters": { - "id": 275, + "id": 277, "nodeType": "ParameterList", "parameters": [ { "constant": false, - "id": 274, + "id": 276, "mutability": "mutable", - "name": "operator", - "nameLocation": "6161:8:1", + "name": "spender", + "nameLocation": "2033:7:4", "nodeType": "VariableDeclaration", - "scope": 276, - "src": "6153:16:1", + "scope": 278, + "src": "2025:15:4", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -3172,10 +3340,10 @@ "typeString": "address" }, "typeName": { - "id": 273, + "id": 275, "name": "address", "nodeType": "ElementaryTypeName", - "src": "6153:7:1", + "src": "2025:7:4", "stateMutability": "nonpayable", "typeDescriptions": { "typeIdentifier": "t_address", @@ -3185,62 +3353,118 @@ "visibility": "internal" } ], - "src": "6152:18:1" + "src": "2024:17:4" }, - "src": "6124:47:1" - }, + "src": "1999:43:4" + } + ], + "scope": 375, + "src": "280:1764:4", + "usedErrors": [ + 249, + 254, + 259, + 268, + 273, + 278 + ], + "usedEvents": [] + }, + { + "abstract": false, + "baseContracts": [], + "canonicalName": "IERC721Errors", + "contractDependencies": [], + "contractKind": "interface", + "documentation": { + "id": 280, + "nodeType": "StructuredDocumentation", + "src": "2046:143:4", + "text": " @dev Standard ERC-721 Errors\n Interface of the https://eips.ethereum.org/EIPS/eip-6093[ERC-6093] custom errors for ERC-721 tokens." + }, + "fullyImplemented": true, + "id": 327, + "linearizedBaseContracts": [ + 327 + ], + "name": "IERC721Errors", + "nameLocation": "2200:13:4", + "nodeType": "ContractDefinition", + "nodes": [ { "documentation": { - "id": 277, + "id": 281, "nodeType": "StructuredDocumentation", - "src": "6177:280:1", - "text": " @dev Indicates an array length mismatch between ids and values in a safeBatchTransferFrom operation.\n Used in batch transfers.\n @param idsLength Length of the array of token identifiers\n @param valuesLength Length of the array of token amounts" + "src": "2220:219:4", + "text": " @dev Indicates that an address can't be an owner. For example, `address(0)` is a forbidden owner in ERC-20.\n Used in balance queries.\n @param owner Address of the current owner of a token." }, - "errorSelector": "5b059991", - "id": 283, - "name": "ERC1155InvalidArrayLength", - "nameLocation": "6468:25:1", + "errorSelector": "89c62b64", + "id": 285, + "name": "ERC721InvalidOwner", + "nameLocation": "2450:18:4", "nodeType": "ErrorDefinition", "parameters": { - "id": 282, + "id": 284, "nodeType": "ParameterList", "parameters": [ { "constant": false, - "id": 279, + "id": 283, "mutability": "mutable", - "name": "idsLength", - "nameLocation": "6502:9:1", + "name": "owner", + "nameLocation": "2477:5:4", "nodeType": "VariableDeclaration", - "scope": 283, - "src": "6494:17:1", + "scope": 285, + "src": "2469:13:4", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" + "typeIdentifier": "t_address", + "typeString": "address" }, "typeName": { - "id": 278, - "name": "uint256", + "id": 282, + "name": "address", "nodeType": "ElementaryTypeName", - "src": "6494:7:1", + "src": "2469:7:4", + "stateMutability": "nonpayable", "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" + "typeIdentifier": "t_address", + "typeString": "address" } }, "visibility": "internal" - }, + } + ], + "src": "2468:15:4" + }, + "src": "2444:40:4" + }, + { + "documentation": { + "id": 286, + "nodeType": "StructuredDocumentation", + "src": "2490:132:4", + "text": " @dev Indicates a `tokenId` whose `owner` is the zero address.\n @param tokenId Identifier number of a token." + }, + "errorSelector": "7e273289", + "id": 290, + "name": "ERC721NonexistentToken", + "nameLocation": "2633:22:4", + "nodeType": "ErrorDefinition", + "parameters": { + "id": 289, + "nodeType": "ParameterList", + "parameters": [ { "constant": false, - "id": 281, + "id": 288, "mutability": "mutable", - "name": "valuesLength", - "nameLocation": "6521:12:1", + "name": "tokenId", + "nameLocation": "2664:7:4", "nodeType": "VariableDeclaration", - "scope": 283, - "src": "6513:20:1", + "scope": 290, + "src": "2656:15:4", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -3248,10 +3472,10 @@ "typeString": "uint256" }, "typeName": { - "id": 280, + "id": 287, "name": "uint256", "nodeType": "ElementaryTypeName", - "src": "6513:7:1", + "src": "2656:7:4", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -3260,1075 +3484,675 @@ "visibility": "internal" } ], - "src": "6493:41:1" - }, - "src": "6462:73:1" - } - ], - "scope": 285, - "src": "4430:2107:1", - "usedErrors": [ - 249, - 254, - 259, - 266, - 271, - 276, - 283 - ], - "usedEvents": [] - } - ], - "src": "112:6426:1" - }, - "id": 1 - }, - "@openzeppelin/contracts/token/ERC20/ERC20.sol": { - "ast": { - "absolutePath": "@openzeppelin/contracts/token/ERC20/ERC20.sol", - "exportedSymbols": { - "Context": [ - 933 - ], - "ERC20": [ - 799 - ], - "IERC20": [ - 877 - ], - "IERC20Errors": [ - 189 - ], - "IERC20Metadata": [ - 903 - ] - }, - "id": 800, - "license": "MIT", - "nodeType": "SourceUnit", - "nodes": [ - { - "id": 286, - "literals": [ - "solidity", - "^", - "0.8", - ".20" - ], - "nodeType": "PragmaDirective", - "src": "105:24:2" - }, - { - "absolutePath": "@openzeppelin/contracts/token/ERC20/IERC20.sol", - "file": "./IERC20.sol", - "id": 288, - "nameLocation": "-1:-1:-1", - "nodeType": "ImportDirective", - "scope": 800, - "sourceUnit": 878, - "src": "131:36:2", - "symbolAliases": [ - { - "foreign": { - "id": 287, - "name": "IERC20", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 877, - "src": "139:6:2", - "typeDescriptions": {} - }, - "nameLocation": "-1:-1:-1" - } - ], - "unitAlias": "" - }, - { - "absolutePath": "@openzeppelin/contracts/token/ERC20/extensions/IERC20Metadata.sol", - "file": "./extensions/IERC20Metadata.sol", - "id": 290, - "nameLocation": "-1:-1:-1", - "nodeType": "ImportDirective", - "scope": 800, - "sourceUnit": 904, - "src": "168:63:2", - "symbolAliases": [ - { - "foreign": { - "id": 289, - "name": "IERC20Metadata", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 903, - "src": "176:14:2", - "typeDescriptions": {} + "src": "2655:17:4" }, - "nameLocation": "-1:-1:-1" - } - ], - "unitAlias": "" - }, - { - "absolutePath": "@openzeppelin/contracts/utils/Context.sol", - "file": "../../utils/Context.sol", - "id": 292, - "nameLocation": "-1:-1:-1", - "nodeType": "ImportDirective", - "scope": 800, - "sourceUnit": 934, - "src": "232:48:2", - "symbolAliases": [ + "src": "2627:46:4" + }, { - "foreign": { + "documentation": { "id": 291, - "name": "Context", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 933, - "src": "240:7:2", - "typeDescriptions": {} - }, - "nameLocation": "-1:-1:-1" - } - ], - "unitAlias": "" - }, - { - "absolutePath": "@openzeppelin/contracts/interfaces/draft-IERC6093.sol", - "file": "../../interfaces/draft-IERC6093.sol", - "id": 294, - "nameLocation": "-1:-1:-1", - "nodeType": "ImportDirective", - "scope": 800, - "sourceUnit": 285, - "src": "281:65:2", - "symbolAliases": [ - { - "foreign": { - "id": 293, - "name": "IERC20Errors", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 189, - "src": "289:12:2", - "typeDescriptions": {} - }, - "nameLocation": "-1:-1:-1" - } - ], - "unitAlias": "" - }, - { - "abstract": true, - "baseContracts": [ - { - "baseName": { - "id": 296, - "name": "Context", - "nameLocations": [ - "1133:7:2" - ], - "nodeType": "IdentifierPath", - "referencedDeclaration": 933, - "src": "1133:7:2" + "nodeType": "StructuredDocumentation", + "src": "2679:289:4", + "text": " @dev Indicates an error related to the ownership over a particular token. Used in transfers.\n @param sender Address whose tokens are being transferred.\n @param tokenId Identifier number of a token.\n @param owner Address of the current owner of a token." }, - "id": 297, - "nodeType": "InheritanceSpecifier", - "src": "1133:7:2" - }, - { - "baseName": { + "errorSelector": "64283d7b", + "id": 299, + "name": "ERC721IncorrectOwner", + "nameLocation": "2979:20:4", + "nodeType": "ErrorDefinition", + "parameters": { "id": 298, - "name": "IERC20", - "nameLocations": [ - "1142:6:2" + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 293, + "mutability": "mutable", + "name": "sender", + "nameLocation": "3008:6:4", + "nodeType": "VariableDeclaration", + "scope": 299, + "src": "3000:14:4", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 292, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "3000:7:4", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 295, + "mutability": "mutable", + "name": "tokenId", + "nameLocation": "3024:7:4", + "nodeType": "VariableDeclaration", + "scope": 299, + "src": "3016:15:4", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 294, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "3016:7:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 297, + "mutability": "mutable", + "name": "owner", + "nameLocation": "3041:5:4", + "nodeType": "VariableDeclaration", + "scope": 299, + "src": "3033:13:4", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 296, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "3033:7:4", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + } ], - "nodeType": "IdentifierPath", - "referencedDeclaration": 877, - "src": "1142:6:2" + "src": "2999:48:4" }, - "id": 299, - "nodeType": "InheritanceSpecifier", - "src": "1142:6:2" + "src": "2973:75:4" }, { - "baseName": { + "documentation": { "id": 300, - "name": "IERC20Metadata", - "nameLocations": [ - "1150:14:2" - ], - "nodeType": "IdentifierPath", - "referencedDeclaration": 903, - "src": "1150:14:2" - }, - "id": 301, - "nodeType": "InheritanceSpecifier", - "src": "1150:14:2" - }, - { - "baseName": { - "id": 302, - "name": "IERC20Errors", - "nameLocations": [ - "1166:12:2" - ], - "nodeType": "IdentifierPath", - "referencedDeclaration": 189, - "src": "1166:12:2" + "nodeType": "StructuredDocumentation", + "src": "3054:152:4", + "text": " @dev Indicates a failure with the token `sender`. Used in transfers.\n @param sender Address whose tokens are being transferred." }, - "id": 303, - "nodeType": "InheritanceSpecifier", - "src": "1166:12:2" - } - ], - "canonicalName": "ERC20", - "contractDependencies": [], - "contractKind": "contract", - "documentation": { - "id": 295, - "nodeType": "StructuredDocumentation", - "src": "348:757:2", - "text": " @dev Implementation of the {IERC20} interface.\n This implementation is agnostic to the way tokens are created. This means\n that a supply mechanism has to be added in a derived contract using {_mint}.\n TIP: For a detailed writeup see our guide\n https://forum.openzeppelin.com/t/how-to-implement-erc20-supply-mechanisms/226[How\n to implement supply mechanisms].\n The default value of {decimals} is 18. To change this, you should override\n this function so it returns a different value.\n We have followed general OpenZeppelin Contracts guidelines: functions revert\n instead returning `false` on failure. This behavior is nonetheless\n conventional and does not conflict with the expectations of ERC-20\n applications." - }, - "fullyImplemented": true, - "id": 799, - "linearizedBaseContracts": [ - 799, - 189, - 903, - 877, - 933 - ], - "name": "ERC20", - "nameLocation": "1124:5:2", - "nodeType": "ContractDefinition", - "nodes": [ + "errorSelector": "73c6ac6e", + "id": 304, + "name": "ERC721InvalidSender", + "nameLocation": "3217:19:4", + "nodeType": "ErrorDefinition", + "parameters": { + "id": 303, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 302, + "mutability": "mutable", + "name": "sender", + "nameLocation": "3245:6:4", + "nodeType": "VariableDeclaration", + "scope": 304, + "src": "3237:14:4", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 301, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "3237:7:4", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + } + ], + "src": "3236:16:4" + }, + "src": "3211:42:4" + }, { - "constant": false, - "id": 307, - "mutability": "mutable", - "name": "_balances", - "nameLocation": "1229:9:2", - "nodeType": "VariableDeclaration", - "scope": 799, - "src": "1185:53:2", - "stateVariable": true, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$", - "typeString": "mapping(address => uint256)" + "documentation": { + "id": 305, + "nodeType": "StructuredDocumentation", + "src": "3259:159:4", + "text": " @dev Indicates a failure with the token `receiver`. Used in transfers.\n @param receiver Address to which tokens are being transferred." }, - "typeName": { - "id": 306, - "keyName": "account", - "keyNameLocation": "1201:7:2", - "keyType": { - "id": 304, - "name": "address", - "nodeType": "ElementaryTypeName", - "src": "1193:7:2", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "nodeType": "Mapping", - "src": "1185:35:2", - "typeDescriptions": { - "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$", - "typeString": "mapping(address => uint256)" - }, - "valueName": "", - "valueNameLocation": "-1:-1:-1", - "valueType": { - "id": 305, - "name": "uint256", - "nodeType": "ElementaryTypeName", - "src": "1212:7:2", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" + "errorSelector": "64a0ae92", + "id": 309, + "name": "ERC721InvalidReceiver", + "nameLocation": "3429:21:4", + "nodeType": "ErrorDefinition", + "parameters": { + "id": 308, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 307, + "mutability": "mutable", + "name": "receiver", + "nameLocation": "3459:8:4", + "nodeType": "VariableDeclaration", + "scope": 309, + "src": "3451:16:4", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 306, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "3451:7:4", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" } - } + ], + "src": "3450:18:4" }, - "visibility": "private" + "src": "3423:46:4" }, { - "constant": false, - "id": 313, - "mutability": "mutable", - "name": "_allowances", - "nameLocation": "1317:11:2", - "nodeType": "VariableDeclaration", - "scope": 799, - "src": "1245:83:2", - "stateVariable": true, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_mapping$_t_address_$_t_mapping$_t_address_$_t_uint256_$_$", - "typeString": "mapping(address => mapping(address => uint256))" + "documentation": { + "id": 310, + "nodeType": "StructuredDocumentation", + "src": "3475:247:4", + "text": " @dev Indicates a failure with the `operator`’s approval. Used in transfers.\n @param operator Address that may be allowed to operate on tokens without being their owner.\n @param tokenId Identifier number of a token." }, - "typeName": { - "id": 312, - "keyName": "account", - "keyNameLocation": "1261:7:2", - "keyType": { - "id": 308, - "name": "address", - "nodeType": "ElementaryTypeName", - "src": "1253:7:2", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "nodeType": "Mapping", - "src": "1245:63:2", - "typeDescriptions": { - "typeIdentifier": "t_mapping$_t_address_$_t_mapping$_t_address_$_t_uint256_$_$", - "typeString": "mapping(address => mapping(address => uint256))" - }, - "valueName": "", - "valueNameLocation": "-1:-1:-1", - "valueType": { - "id": 311, - "keyName": "spender", - "keyNameLocation": "1288:7:2", - "keyType": { - "id": 309, - "name": "address", - "nodeType": "ElementaryTypeName", - "src": "1280:7:2", + "errorSelector": "177e802f", + "id": 316, + "name": "ERC721InsufficientApproval", + "nameLocation": "3733:26:4", + "nodeType": "ErrorDefinition", + "parameters": { + "id": 315, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 312, + "mutability": "mutable", + "name": "operator", + "nameLocation": "3768:8:4", + "nodeType": "VariableDeclaration", + "scope": 316, + "src": "3760:16:4", + "stateVariable": false, + "storageLocation": "default", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" - } - }, - "nodeType": "Mapping", - "src": "1272:35:2", - "typeDescriptions": { - "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$", - "typeString": "mapping(address => uint256)" + }, + "typeName": { + "id": 311, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "3760:7:4", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" }, - "valueName": "", - "valueNameLocation": "-1:-1:-1", - "valueType": { - "id": 310, - "name": "uint256", - "nodeType": "ElementaryTypeName", - "src": "1299:7:2", + { + "constant": false, + "id": 314, + "mutability": "mutable", + "name": "tokenId", + "nameLocation": "3786:7:4", + "nodeType": "VariableDeclaration", + "scope": 316, + "src": "3778:15:4", + "stateVariable": false, + "storageLocation": "default", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" - } + }, + "typeName": { + "id": 313, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "3778:7:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" } - } + ], + "src": "3759:35:4" }, - "visibility": "private" + "src": "3727:68:4" }, { - "constant": false, - "id": 315, - "mutability": "mutable", - "name": "_totalSupply", - "nameLocation": "1351:12:2", - "nodeType": "VariableDeclaration", - "scope": 799, - "src": "1335:28:2", - "stateVariable": true, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" + "documentation": { + "id": 317, + "nodeType": "StructuredDocumentation", + "src": "3801:174:4", + "text": " @dev Indicates a failure with the `approver` of a token to be approved. Used in approvals.\n @param approver Address initiating an approval operation." }, - "typeName": { - "id": 314, - "name": "uint256", - "nodeType": "ElementaryTypeName", - "src": "1335:7:2", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } + "errorSelector": "a9fbf51f", + "id": 321, + "name": "ERC721InvalidApprover", + "nameLocation": "3986:21:4", + "nodeType": "ErrorDefinition", + "parameters": { + "id": 320, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 319, + "mutability": "mutable", + "name": "approver", + "nameLocation": "4016:8:4", + "nodeType": "VariableDeclaration", + "scope": 321, + "src": "4008:16:4", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 318, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "4008:7:4", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + } + ], + "src": "4007:18:4" }, - "visibility": "private" + "src": "3980:46:4" }, { - "constant": false, - "id": 317, - "mutability": "mutable", - "name": "_name", - "nameLocation": "1385:5:2", - "nodeType": "VariableDeclaration", - "scope": 799, - "src": "1370:20:2", - "stateVariable": true, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_string_storage", - "typeString": "string" + "documentation": { + "id": 322, + "nodeType": "StructuredDocumentation", + "src": "4032:197:4", + "text": " @dev Indicates a failure with the `operator` to be approved. Used in approvals.\n @param operator Address that may be allowed to operate on tokens without being their owner." }, - "typeName": { - "id": 316, - "name": "string", - "nodeType": "ElementaryTypeName", - "src": "1370:6:2", - "typeDescriptions": { - "typeIdentifier": "t_string_storage_ptr", - "typeString": "string" - } - }, - "visibility": "private" - }, - { - "constant": false, - "id": 319, - "mutability": "mutable", - "name": "_symbol", - "nameLocation": "1411:7:2", - "nodeType": "VariableDeclaration", - "scope": 799, - "src": "1396:22:2", - "stateVariable": true, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_string_storage", - "typeString": "string" - }, - "typeName": { - "id": 318, - "name": "string", - "nodeType": "ElementaryTypeName", - "src": "1396:6:2", - "typeDescriptions": { - "typeIdentifier": "t_string_storage_ptr", - "typeString": "string" - } - }, - "visibility": "private" - }, - { - "body": { - "id": 335, - "nodeType": "Block", - "src": "1657:57:2", - "statements": [ + "errorSelector": "5b08ba18", + "id": 326, + "name": "ERC721InvalidOperator", + "nameLocation": "4240:21:4", + "nodeType": "ErrorDefinition", + "parameters": { + "id": 325, + "nodeType": "ParameterList", + "parameters": [ { - "expression": { - "id": 329, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftHandSide": { - "id": 327, - "name": "_name", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 317, - "src": "1667:5:2", - "typeDescriptions": { - "typeIdentifier": "t_string_storage", - "typeString": "string storage ref" - } - }, - "nodeType": "Assignment", - "operator": "=", - "rightHandSide": { - "id": 328, - "name": "name_", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 322, - "src": "1675:5:2", - "typeDescriptions": { - "typeIdentifier": "t_string_memory_ptr", - "typeString": "string memory" - } - }, - "src": "1667:13:2", - "typeDescriptions": { - "typeIdentifier": "t_string_storage", - "typeString": "string storage ref" - } + "constant": false, + "id": 324, + "mutability": "mutable", + "name": "operator", + "nameLocation": "4270:8:4", + "nodeType": "VariableDeclaration", + "scope": 326, + "src": "4262:16:4", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" }, - "id": 330, - "nodeType": "ExpressionStatement", - "src": "1667:13:2" - }, - { - "expression": { - "id": 333, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftHandSide": { - "id": 331, - "name": "_symbol", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 319, - "src": "1690:7:2", - "typeDescriptions": { - "typeIdentifier": "t_string_storage", - "typeString": "string storage ref" - } - }, - "nodeType": "Assignment", - "operator": "=", - "rightHandSide": { - "id": 332, - "name": "symbol_", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 324, - "src": "1700:7:2", - "typeDescriptions": { - "typeIdentifier": "t_string_memory_ptr", - "typeString": "string memory" - } - }, - "src": "1690:17:2", + "typeName": { + "id": 323, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "4262:7:4", + "stateMutability": "nonpayable", "typeDescriptions": { - "typeIdentifier": "t_string_storage", - "typeString": "string storage ref" + "typeIdentifier": "t_address", + "typeString": "address" } }, - "id": 334, - "nodeType": "ExpressionStatement", - "src": "1690:17:2" + "visibility": "internal" } - ] + ], + "src": "4261:18:4" }, + "src": "4234:46:4" + } + ], + "scope": 375, + "src": "2190:2092:4", + "usedErrors": [ + 285, + 290, + 299, + 304, + 309, + 316, + 321, + 326 + ], + "usedEvents": [] + }, + { + "abstract": false, + "baseContracts": [], + "canonicalName": "IERC1155Errors", + "contractDependencies": [], + "contractKind": "interface", + "documentation": { + "id": 328, + "nodeType": "StructuredDocumentation", + "src": "4284:145:4", + "text": " @dev Standard ERC-1155 Errors\n Interface of the https://eips.ethereum.org/EIPS/eip-6093[ERC-6093] custom errors for ERC-1155 tokens." + }, + "fullyImplemented": true, + "id": 374, + "linearizedBaseContracts": [ + 374 + ], + "name": "IERC1155Errors", + "nameLocation": "4440:14:4", + "nodeType": "ContractDefinition", + "nodes": [ + { "documentation": { - "id": 320, + "id": 329, "nodeType": "StructuredDocumentation", - "src": "1425:171:2", - "text": " @dev Sets the values for {name} and {symbol}.\n All two of these values are immutable: they can only be set once during\n construction." + "src": "4461:361:4", + "text": " @dev Indicates an error related to the current `balance` of a `sender`. Used in transfers.\n @param sender Address whose tokens are being transferred.\n @param balance Current balance for the interacting account.\n @param needed Minimum amount required to perform a transfer.\n @param tokenId Identifier number of a token." }, - "id": 336, - "implemented": true, - "kind": "constructor", - "modifiers": [], - "name": "", - "nameLocation": "-1:-1:-1", - "nodeType": "FunctionDefinition", + "errorSelector": "03dee4c5", + "id": 339, + "name": "ERC1155InsufficientBalance", + "nameLocation": "4833:26:4", + "nodeType": "ErrorDefinition", "parameters": { - "id": 325, + "id": 338, "nodeType": "ParameterList", "parameters": [ { "constant": false, - "id": 322, + "id": 331, "mutability": "mutable", - "name": "name_", - "nameLocation": "1627:5:2", + "name": "sender", + "nameLocation": "4868:6:4", "nodeType": "VariableDeclaration", - "scope": 336, - "src": "1613:19:2", + "scope": 339, + "src": "4860:14:4", "stateVariable": false, - "storageLocation": "memory", + "storageLocation": "default", "typeDescriptions": { - "typeIdentifier": "t_string_memory_ptr", - "typeString": "string" + "typeIdentifier": "t_address", + "typeString": "address" }, "typeName": { - "id": 321, - "name": "string", + "id": 330, + "name": "address", "nodeType": "ElementaryTypeName", - "src": "1613:6:2", + "src": "4860:7:4", + "stateMutability": "nonpayable", "typeDescriptions": { - "typeIdentifier": "t_string_storage_ptr", - "typeString": "string" + "typeIdentifier": "t_address", + "typeString": "address" } }, "visibility": "internal" }, { "constant": false, - "id": 324, + "id": 333, "mutability": "mutable", - "name": "symbol_", - "nameLocation": "1648:7:2", + "name": "balance", + "nameLocation": "4884:7:4", "nodeType": "VariableDeclaration", - "scope": 336, - "src": "1634:21:2", + "scope": 339, + "src": "4876:15:4", "stateVariable": false, - "storageLocation": "memory", + "storageLocation": "default", "typeDescriptions": { - "typeIdentifier": "t_string_memory_ptr", - "typeString": "string" + "typeIdentifier": "t_uint256", + "typeString": "uint256" }, "typeName": { - "id": 323, - "name": "string", + "id": 332, + "name": "uint256", "nodeType": "ElementaryTypeName", - "src": "1634:6:2", + "src": "4876:7:4", "typeDescriptions": { - "typeIdentifier": "t_string_storage_ptr", - "typeString": "string" + "typeIdentifier": "t_uint256", + "typeString": "uint256" } }, "visibility": "internal" - } - ], - "src": "1612:44:2" - }, - "returnParameters": { - "id": 326, - "nodeType": "ParameterList", - "parameters": [], - "src": "1657:0:2" - }, - "scope": 799, - "src": "1601:113:2", - "stateMutability": "nonpayable", - "virtual": false, - "visibility": "internal" - }, - { - "baseFunctions": [ - 890 - ], - "body": { - "id": 344, - "nodeType": "Block", - "src": "1839:29:2", - "statements": [ - { - "expression": { - "id": 342, - "name": "_name", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 317, - "src": "1856:5:2", - "typeDescriptions": { - "typeIdentifier": "t_string_storage", - "typeString": "string storage ref" - } - }, - "functionReturnParameters": 341, - "id": 343, - "nodeType": "Return", - "src": "1849:12:2" - } - ] - }, - "documentation": { - "id": 337, - "nodeType": "StructuredDocumentation", - "src": "1720:54:2", - "text": " @dev Returns the name of the token." - }, - "functionSelector": "06fdde03", - "id": 345, - "implemented": true, - "kind": "function", - "modifiers": [], - "name": "name", - "nameLocation": "1788:4:2", - "nodeType": "FunctionDefinition", - "parameters": { - "id": 338, - "nodeType": "ParameterList", - "parameters": [], - "src": "1792:2:2" - }, - "returnParameters": { - "id": 341, - "nodeType": "ParameterList", - "parameters": [ + }, { "constant": false, - "id": 340, + "id": 335, "mutability": "mutable", - "name": "", - "nameLocation": "-1:-1:-1", + "name": "needed", + "nameLocation": "4901:6:4", "nodeType": "VariableDeclaration", - "scope": 345, - "src": "1824:13:2", + "scope": 339, + "src": "4893:14:4", "stateVariable": false, - "storageLocation": "memory", + "storageLocation": "default", "typeDescriptions": { - "typeIdentifier": "t_string_memory_ptr", - "typeString": "string" + "typeIdentifier": "t_uint256", + "typeString": "uint256" }, "typeName": { - "id": 339, - "name": "string", + "id": 334, + "name": "uint256", "nodeType": "ElementaryTypeName", - "src": "1824:6:2", + "src": "4893:7:4", "typeDescriptions": { - "typeIdentifier": "t_string_storage_ptr", - "typeString": "string" + "typeIdentifier": "t_uint256", + "typeString": "uint256" } }, "visibility": "internal" - } - ], - "src": "1823:15:2" - }, - "scope": 799, - "src": "1779:89:2", - "stateMutability": "view", - "virtual": true, - "visibility": "public" - }, - { - "baseFunctions": [ - 896 - ], - "body": { - "id": 353, - "nodeType": "Block", - "src": "2043:31:2", - "statements": [ - { - "expression": { - "id": 351, - "name": "_symbol", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 319, - "src": "2060:7:2", - "typeDescriptions": { - "typeIdentifier": "t_string_storage", - "typeString": "string storage ref" - } - }, - "functionReturnParameters": 350, - "id": 352, - "nodeType": "Return", - "src": "2053:14:2" - } - ] - }, - "documentation": { - "id": 346, - "nodeType": "StructuredDocumentation", - "src": "1874:102:2", - "text": " @dev Returns the symbol of the token, usually a shorter version of the\n name." - }, - "functionSelector": "95d89b41", - "id": 354, - "implemented": true, - "kind": "function", - "modifiers": [], - "name": "symbol", - "nameLocation": "1990:6:2", - "nodeType": "FunctionDefinition", - "parameters": { - "id": 347, - "nodeType": "ParameterList", - "parameters": [], - "src": "1996:2:2" - }, - "returnParameters": { - "id": 350, - "nodeType": "ParameterList", - "parameters": [ + }, { "constant": false, - "id": 349, + "id": 337, "mutability": "mutable", - "name": "", - "nameLocation": "-1:-1:-1", + "name": "tokenId", + "nameLocation": "4917:7:4", "nodeType": "VariableDeclaration", - "scope": 354, - "src": "2028:13:2", + "scope": 339, + "src": "4909:15:4", "stateVariable": false, - "storageLocation": "memory", + "storageLocation": "default", "typeDescriptions": { - "typeIdentifier": "t_string_memory_ptr", - "typeString": "string" + "typeIdentifier": "t_uint256", + "typeString": "uint256" }, "typeName": { - "id": 348, - "name": "string", + "id": 336, + "name": "uint256", "nodeType": "ElementaryTypeName", - "src": "2028:6:2", + "src": "4909:7:4", "typeDescriptions": { - "typeIdentifier": "t_string_storage_ptr", - "typeString": "string" + "typeIdentifier": "t_uint256", + "typeString": "uint256" } }, "visibility": "internal" } ], - "src": "2027:15:2" + "src": "4859:66:4" }, - "scope": 799, - "src": "1981:93:2", - "stateMutability": "view", - "virtual": true, - "visibility": "public" + "src": "4827:99:4" }, { - "baseFunctions": [ - 902 - ], - "body": { - "id": 362, - "nodeType": "Block", - "src": "2763:26:2", - "statements": [ - { - "expression": { - "hexValue": "3138", - "id": 360, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "number", - "lValueRequested": false, - "nodeType": "Literal", - "src": "2780:2:2", - "typeDescriptions": { - "typeIdentifier": "t_rational_18_by_1", - "typeString": "int_const 18" - }, - "value": "18" - }, - "functionReturnParameters": 359, - "id": 361, - "nodeType": "Return", - "src": "2773:9:2" - } - ] - }, "documentation": { - "id": 355, + "id": 340, "nodeType": "StructuredDocumentation", - "src": "2080:622:2", - "text": " @dev Returns the number of decimals used to get its user representation.\n For example, if `decimals` equals `2`, a balance of `505` tokens should\n be displayed to a user as `5.05` (`505 / 10 ** 2`).\n Tokens usually opt for a value of 18, imitating the relationship between\n Ether and Wei. This is the default value returned by this function, unless\n it's overridden.\n NOTE: This information is only used for _display_ purposes: it in\n no way affects any of the arithmetic of the contract, including\n {IERC20-balanceOf} and {IERC20-transfer}." + "src": "4932:152:4", + "text": " @dev Indicates a failure with the token `sender`. Used in transfers.\n @param sender Address whose tokens are being transferred." }, - "functionSelector": "313ce567", - "id": 363, - "implemented": true, - "kind": "function", - "modifiers": [], - "name": "decimals", - "nameLocation": "2716:8:2", - "nodeType": "FunctionDefinition", + "errorSelector": "01a83514", + "id": 344, + "name": "ERC1155InvalidSender", + "nameLocation": "5095:20:4", + "nodeType": "ErrorDefinition", "parameters": { - "id": 356, - "nodeType": "ParameterList", - "parameters": [], - "src": "2724:2:2" - }, - "returnParameters": { - "id": 359, + "id": 343, "nodeType": "ParameterList", "parameters": [ { "constant": false, - "id": 358, + "id": 342, "mutability": "mutable", - "name": "", - "nameLocation": "-1:-1:-1", + "name": "sender", + "nameLocation": "5124:6:4", "nodeType": "VariableDeclaration", - "scope": 363, - "src": "2756:5:2", + "scope": 344, + "src": "5116:14:4", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { - "typeIdentifier": "t_uint8", - "typeString": "uint8" + "typeIdentifier": "t_address", + "typeString": "address" }, "typeName": { - "id": 357, - "name": "uint8", + "id": 341, + "name": "address", "nodeType": "ElementaryTypeName", - "src": "2756:5:2", + "src": "5116:7:4", + "stateMutability": "nonpayable", "typeDescriptions": { - "typeIdentifier": "t_uint8", - "typeString": "uint8" + "typeIdentifier": "t_address", + "typeString": "address" } }, "visibility": "internal" } ], - "src": "2755:7:2" + "src": "5115:16:4" }, - "scope": 799, - "src": "2707:82:2", - "stateMutability": "view", - "virtual": true, - "visibility": "public" + "src": "5089:43:4" }, { - "baseFunctions": [ - 826 - ], - "body": { - "id": 371, - "nodeType": "Block", - "src": "2910:36:2", - "statements": [ - { - "expression": { - "id": 369, - "name": "_totalSupply", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 315, - "src": "2927:12:2", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "functionReturnParameters": 368, - "id": 370, - "nodeType": "Return", - "src": "2920:19:2" - } - ] - }, "documentation": { - "id": 364, + "id": 345, "nodeType": "StructuredDocumentation", - "src": "2795:49:2", - "text": " @dev See {IERC20-totalSupply}." + "src": "5138:159:4", + "text": " @dev Indicates a failure with the token `receiver`. Used in transfers.\n @param receiver Address to which tokens are being transferred." }, - "functionSelector": "18160ddd", - "id": 372, - "implemented": true, - "kind": "function", - "modifiers": [], - "name": "totalSupply", - "nameLocation": "2858:11:2", - "nodeType": "FunctionDefinition", + "errorSelector": "57f447ce", + "id": 349, + "name": "ERC1155InvalidReceiver", + "nameLocation": "5308:22:4", + "nodeType": "ErrorDefinition", "parameters": { - "id": 365, - "nodeType": "ParameterList", - "parameters": [], - "src": "2869:2:2" - }, - "returnParameters": { - "id": 368, + "id": 348, "nodeType": "ParameterList", "parameters": [ { "constant": false, - "id": 367, + "id": 347, "mutability": "mutable", - "name": "", - "nameLocation": "-1:-1:-1", + "name": "receiver", + "nameLocation": "5339:8:4", "nodeType": "VariableDeclaration", - "scope": 372, - "src": "2901:7:2", + "scope": 349, + "src": "5331:16:4", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" + "typeIdentifier": "t_address", + "typeString": "address" }, "typeName": { - "id": 366, - "name": "uint256", + "id": 346, + "name": "address", "nodeType": "ElementaryTypeName", - "src": "2901:7:2", + "src": "5331:7:4", + "stateMutability": "nonpayable", "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" + "typeIdentifier": "t_address", + "typeString": "address" } }, "visibility": "internal" } ], - "src": "2900:9:2" + "src": "5330:18:4" }, - "scope": 799, - "src": "2849:97:2", - "stateMutability": "view", - "virtual": true, - "visibility": "public" + "src": "5302:47:4" }, { - "baseFunctions": [ - 834 - ], - "body": { - "id": 384, - "nodeType": "Block", - "src": "3078:42:2", - "statements": [ - { - "expression": { - "baseExpression": { - "id": 380, - "name": "_balances", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 307, - "src": "3095:9:2", - "typeDescriptions": { - "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$", - "typeString": "mapping(address => uint256)" - } - }, - "id": 382, - "indexExpression": { - "id": 381, - "name": "account", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 375, - "src": "3105:7:2", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": false, - "nodeType": "IndexAccess", - "src": "3095:18:2", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "functionReturnParameters": 379, - "id": 383, - "nodeType": "Return", - "src": "3088:25:2" - } - ] - }, "documentation": { - "id": 373, + "id": 350, "nodeType": "StructuredDocumentation", - "src": "2952:47:2", - "text": " @dev See {IERC20-balanceOf}." + "src": "5355:256:4", + "text": " @dev Indicates a failure with the `operator`’s approval. Used in transfers.\n @param operator Address that may be allowed to operate on tokens without being their owner.\n @param owner Address of the current owner of a token." }, - "functionSelector": "70a08231", - "id": 385, - "implemented": true, - "kind": "function", - "modifiers": [], - "name": "balanceOf", - "nameLocation": "3013:9:2", - "nodeType": "FunctionDefinition", + "errorSelector": "e237d922", + "id": 356, + "name": "ERC1155MissingApprovalForAll", + "nameLocation": "5622:28:4", + "nodeType": "ErrorDefinition", "parameters": { - "id": 376, + "id": 355, "nodeType": "ParameterList", "parameters": [ { "constant": false, - "id": 375, + "id": 352, "mutability": "mutable", - "name": "account", - "nameLocation": "3031:7:2", + "name": "operator", + "nameLocation": "5659:8:4", "nodeType": "VariableDeclaration", - "scope": 385, - "src": "3023:15:2", + "scope": 356, + "src": "5651:16:4", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -4336,10 +4160,10 @@ "typeString": "address" }, "typeName": { - "id": 374, + "id": 351, "name": "address", "nodeType": "ElementaryTypeName", - "src": "3023:7:2", + "src": "5651:7:4", "stateMutability": "nonpayable", "typeDescriptions": { "typeIdentifier": "t_address", @@ -4347,265 +4171,114 @@ } }, "visibility": "internal" - } - ], - "src": "3022:17:2" - }, - "returnParameters": { - "id": 379, - "nodeType": "ParameterList", - "parameters": [ + }, { "constant": false, - "id": 378, + "id": 354, "mutability": "mutable", - "name": "", - "nameLocation": "-1:-1:-1", + "name": "owner", + "nameLocation": "5677:5:4", "nodeType": "VariableDeclaration", - "scope": 385, - "src": "3069:7:2", + "scope": 356, + "src": "5669:13:4", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" + "typeIdentifier": "t_address", + "typeString": "address" }, "typeName": { - "id": 377, - "name": "uint256", + "id": 353, + "name": "address", "nodeType": "ElementaryTypeName", - "src": "3069:7:2", + "src": "5669:7:4", + "stateMutability": "nonpayable", "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" + "typeIdentifier": "t_address", + "typeString": "address" } }, "visibility": "internal" } ], - "src": "3068:9:2" + "src": "5650:33:4" }, - "scope": 799, - "src": "3004:116:2", - "stateMutability": "view", - "virtual": true, - "visibility": "public" + "src": "5616:68:4" }, { - "baseFunctions": [ - 844 - ], - "body": { - "id": 408, - "nodeType": "Block", - "src": "3390:103:2", - "statements": [ + "documentation": { + "id": 357, + "nodeType": "StructuredDocumentation", + "src": "5690:174:4", + "text": " @dev Indicates a failure with the `approver` of a token to be approved. Used in approvals.\n @param approver Address initiating an approval operation." + }, + "errorSelector": "3e31884e", + "id": 361, + "name": "ERC1155InvalidApprover", + "nameLocation": "5875:22:4", + "nodeType": "ErrorDefinition", + "parameters": { + "id": 360, + "nodeType": "ParameterList", + "parameters": [ { - "assignments": [ - 396 - ], - "declarations": [ - { - "constant": false, - "id": 396, - "mutability": "mutable", - "name": "owner", - "nameLocation": "3408:5:2", - "nodeType": "VariableDeclaration", - "scope": 408, - "src": "3400:13:2", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - }, - "typeName": { - "id": 395, - "name": "address", - "nodeType": "ElementaryTypeName", - "src": "3400:7:2", - "stateMutability": "nonpayable", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "visibility": "internal" - } - ], - "id": 399, - "initialValue": { - "arguments": [], - "expression": { - "argumentTypes": [], - "id": 397, - "name": "_msgSender", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 915, - "src": "3416:10:2", - "typeDescriptions": { - "typeIdentifier": "t_function_internal_view$__$returns$_t_address_$", - "typeString": "function () view returns (address)" - } - }, - "id": 398, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "nameLocations": [], - "names": [], - "nodeType": "FunctionCall", - "src": "3416:12:2", - "tryCall": false, + "constant": false, + "id": 359, + "mutability": "mutable", + "name": "approver", + "nameLocation": "5906:8:4", + "nodeType": "VariableDeclaration", + "scope": 361, + "src": "5898:16:4", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 358, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "5898:7:4", + "stateMutability": "nonpayable", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, - "nodeType": "VariableDeclarationStatement", - "src": "3400:28:2" - }, - { - "expression": { - "arguments": [ - { - "id": 401, - "name": "owner", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 396, - "src": "3448:5:2", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - { - "id": 402, - "name": "to", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 388, - "src": "3455:2:2", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - { - "id": 403, - "name": "value", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 390, - "src": "3459:5:2", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_address", - "typeString": "address" - }, - { - "typeIdentifier": "t_address", - "typeString": "address" - }, - { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - ], - "id": 400, - "name": "_transfer", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 529, - "src": "3438:9:2", - "typeDescriptions": { - "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$__$", - "typeString": "function (address,address,uint256)" - } - }, - "id": 404, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "nameLocations": [], - "names": [], - "nodeType": "FunctionCall", - "src": "3438:27:2", - "tryCall": false, - "typeDescriptions": { - "typeIdentifier": "t_tuple$__$", - "typeString": "tuple()" - } - }, - "id": 405, - "nodeType": "ExpressionStatement", - "src": "3438:27:2" - }, - { - "expression": { - "hexValue": "74727565", - "id": 406, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "bool", - "lValueRequested": false, - "nodeType": "Literal", - "src": "3482:4:2", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - }, - "value": "true" - }, - "functionReturnParameters": 394, - "id": 407, - "nodeType": "Return", - "src": "3475:11:2" + "visibility": "internal" } - ] + ], + "src": "5897:18:4" }, + "src": "5869:47:4" + }, + { "documentation": { - "id": 386, + "id": 362, "nodeType": "StructuredDocumentation", - "src": "3126:184:2", - "text": " @dev See {IERC20-transfer}.\n Requirements:\n - `to` cannot be the zero address.\n - the caller must have a balance of at least `value`." + "src": "5922:197:4", + "text": " @dev Indicates a failure with the `operator` to be approved. Used in approvals.\n @param operator Address that may be allowed to operate on tokens without being their owner." }, - "functionSelector": "a9059cbb", - "id": 409, - "implemented": true, - "kind": "function", - "modifiers": [], - "name": "transfer", - "nameLocation": "3324:8:2", - "nodeType": "FunctionDefinition", + "errorSelector": "ced3e100", + "id": 366, + "name": "ERC1155InvalidOperator", + "nameLocation": "6130:22:4", + "nodeType": "ErrorDefinition", "parameters": { - "id": 391, + "id": 365, "nodeType": "ParameterList", "parameters": [ { "constant": false, - "id": 388, + "id": 364, "mutability": "mutable", - "name": "to", - "nameLocation": "3341:2:2", + "name": "operator", + "nameLocation": "6161:8:4", "nodeType": "VariableDeclaration", - "scope": 409, - "src": "3333:10:2", + "scope": 366, + "src": "6153:16:4", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -4613,10 +4286,10 @@ "typeString": "address" }, "typeName": { - "id": 387, + "id": 363, "name": "address", "nodeType": "ElementaryTypeName", - "src": "3333:7:2", + "src": "6153:7:4", "stateMutability": "nonpayable", "typeDescriptions": { "typeIdentifier": "t_address", @@ -4624,16 +4297,37 @@ } }, "visibility": "internal" - }, + } + ], + "src": "6152:18:4" + }, + "src": "6124:47:4" + }, + { + "documentation": { + "id": 367, + "nodeType": "StructuredDocumentation", + "src": "6177:280:4", + "text": " @dev Indicates an array length mismatch between ids and values in a safeBatchTransferFrom operation.\n Used in batch transfers.\n @param idsLength Length of the array of token identifiers\n @param valuesLength Length of the array of token amounts" + }, + "errorSelector": "5b059991", + "id": 373, + "name": "ERC1155InvalidArrayLength", + "nameLocation": "6468:25:4", + "nodeType": "ErrorDefinition", + "parameters": { + "id": 372, + "nodeType": "ParameterList", + "parameters": [ { "constant": false, - "id": 390, + "id": 369, "mutability": "mutable", - "name": "value", - "nameLocation": "3353:5:2", + "name": "idsLength", + "nameLocation": "6502:9:4", "nodeType": "VariableDeclaration", - "scope": 409, - "src": "3345:13:2", + "scope": 373, + "src": "6494:17:4", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -4641,1433 +4335,1288 @@ "typeString": "uint256" }, "typeName": { - "id": 389, + "id": 368, "name": "uint256", "nodeType": "ElementaryTypeName", - "src": "3345:7:2", + "src": "6494:7:4", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, "visibility": "internal" - } - ], - "src": "3332:27:2" - }, - "returnParameters": { - "id": 394, - "nodeType": "ParameterList", - "parameters": [ + }, { "constant": false, - "id": 393, + "id": 371, "mutability": "mutable", - "name": "", - "nameLocation": "-1:-1:-1", + "name": "valuesLength", + "nameLocation": "6521:12:4", "nodeType": "VariableDeclaration", - "scope": 409, - "src": "3384:4:2", + "scope": 373, + "src": "6513:20:4", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" + "typeIdentifier": "t_uint256", + "typeString": "uint256" }, "typeName": { - "id": 392, - "name": "bool", + "id": 370, + "name": "uint256", "nodeType": "ElementaryTypeName", - "src": "3384:4:2", + "src": "6513:7:4", "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" + "typeIdentifier": "t_uint256", + "typeString": "uint256" } }, "visibility": "internal" } ], - "src": "3383:6:2" + "src": "6493:41:4" }, - "scope": 799, - "src": "3315:178:2", - "stateMutability": "nonpayable", - "virtual": true, - "visibility": "public" - }, - { - "baseFunctions": [ - 854 - ], - "body": { - "id": 425, - "nodeType": "Block", - "src": "3640:51:2", - "statements": [ - { - "expression": { - "baseExpression": { - "baseExpression": { - "id": 419, - "name": "_allowances", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 313, - "src": "3657:11:2", - "typeDescriptions": { - "typeIdentifier": "t_mapping$_t_address_$_t_mapping$_t_address_$_t_uint256_$_$", - "typeString": "mapping(address => mapping(address => uint256))" - } - }, - "id": 421, - "indexExpression": { - "id": 420, - "name": "owner", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 412, - "src": "3669:5:2", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": false, - "nodeType": "IndexAccess", - "src": "3657:18:2", - "typeDescriptions": { - "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$", - "typeString": "mapping(address => uint256)" - } - }, - "id": 423, - "indexExpression": { - "id": 422, - "name": "spender", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 414, - "src": "3676:7:2", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": false, - "nodeType": "IndexAccess", - "src": "3657:27:2", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "functionReturnParameters": 418, - "id": 424, - "nodeType": "Return", - "src": "3650:34:2" - } - ] + "src": "6462:73:4" + } + ], + "scope": 375, + "src": "4430:2107:4", + "usedErrors": [ + 339, + 344, + 349, + 356, + 361, + 366, + 373 + ], + "usedEvents": [] + } + ], + "src": "112:6426:4" + }, + "id": 4 + }, + "@openzeppelin/contracts/token/ERC20/ERC20.sol": { + "ast": { + "absolutePath": "@openzeppelin/contracts/token/ERC20/ERC20.sol", + "exportedSymbols": { + "Context": [ + 1693 + ], + "ERC20": [ + 889 + ], + "IERC20": [ + 967 + ], + "IERC20Errors": [ + 279 + ], + "IERC20Metadata": [ + 993 + ] + }, + "id": 890, + "license": "MIT", + "nodeType": "SourceUnit", + "nodes": [ + { + "id": 376, + "literals": [ + "solidity", + "^", + "0.8", + ".20" + ], + "nodeType": "PragmaDirective", + "src": "105:24:5" + }, + { + "absolutePath": "@openzeppelin/contracts/token/ERC20/IERC20.sol", + "file": "./IERC20.sol", + "id": 378, + "nameLocation": "-1:-1:-1", + "nodeType": "ImportDirective", + "scope": 890, + "sourceUnit": 968, + "src": "131:36:5", + "symbolAliases": [ + { + "foreign": { + "id": 377, + "name": "IERC20", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 967, + "src": "139:6:5", + "typeDescriptions": {} }, - "documentation": { - "id": 410, - "nodeType": "StructuredDocumentation", - "src": "3499:47:2", - "text": " @dev See {IERC20-allowance}." + "nameLocation": "-1:-1:-1" + } + ], + "unitAlias": "" + }, + { + "absolutePath": "@openzeppelin/contracts/token/ERC20/extensions/IERC20Metadata.sol", + "file": "./extensions/IERC20Metadata.sol", + "id": 380, + "nameLocation": "-1:-1:-1", + "nodeType": "ImportDirective", + "scope": 890, + "sourceUnit": 994, + "src": "168:63:5", + "symbolAliases": [ + { + "foreign": { + "id": 379, + "name": "IERC20Metadata", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 993, + "src": "176:14:5", + "typeDescriptions": {} }, - "functionSelector": "dd62ed3e", - "id": 426, - "implemented": true, - "kind": "function", - "modifiers": [], - "name": "allowance", - "nameLocation": "3560:9:2", - "nodeType": "FunctionDefinition", - "parameters": { - "id": 415, - "nodeType": "ParameterList", - "parameters": [ - { - "constant": false, - "id": 412, - "mutability": "mutable", - "name": "owner", - "nameLocation": "3578:5:2", - "nodeType": "VariableDeclaration", - "scope": 426, - "src": "3570:13:2", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - }, - "typeName": { - "id": 411, - "name": "address", - "nodeType": "ElementaryTypeName", - "src": "3570:7:2", - "stateMutability": "nonpayable", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "visibility": "internal" - }, - { - "constant": false, - "id": 414, - "mutability": "mutable", - "name": "spender", - "nameLocation": "3593:7:2", - "nodeType": "VariableDeclaration", - "scope": 426, - "src": "3585:15:2", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - }, - "typeName": { - "id": 413, - "name": "address", - "nodeType": "ElementaryTypeName", - "src": "3585:7:2", - "stateMutability": "nonpayable", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "visibility": "internal" - } - ], - "src": "3569:32:2" + "nameLocation": "-1:-1:-1" + } + ], + "unitAlias": "" + }, + { + "absolutePath": "@openzeppelin/contracts/utils/Context.sol", + "file": "../../utils/Context.sol", + "id": 382, + "nameLocation": "-1:-1:-1", + "nodeType": "ImportDirective", + "scope": 890, + "sourceUnit": 1694, + "src": "232:48:5", + "symbolAliases": [ + { + "foreign": { + "id": 381, + "name": "Context", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1693, + "src": "240:7:5", + "typeDescriptions": {} }, - "returnParameters": { - "id": 418, - "nodeType": "ParameterList", - "parameters": [ - { - "constant": false, - "id": 417, - "mutability": "mutable", - "name": "", - "nameLocation": "-1:-1:-1", - "nodeType": "VariableDeclaration", - "scope": 426, - "src": "3631:7:2", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "typeName": { - "id": 416, - "name": "uint256", - "nodeType": "ElementaryTypeName", - "src": "3631:7:2", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "visibility": "internal" - } + "nameLocation": "-1:-1:-1" + } + ], + "unitAlias": "" + }, + { + "absolutePath": "@openzeppelin/contracts/interfaces/draft-IERC6093.sol", + "file": "../../interfaces/draft-IERC6093.sol", + "id": 384, + "nameLocation": "-1:-1:-1", + "nodeType": "ImportDirective", + "scope": 890, + "sourceUnit": 375, + "src": "281:65:5", + "symbolAliases": [ + { + "foreign": { + "id": 383, + "name": "IERC20Errors", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 279, + "src": "289:12:5", + "typeDescriptions": {} + }, + "nameLocation": "-1:-1:-1" + } + ], + "unitAlias": "" + }, + { + "abstract": true, + "baseContracts": [ + { + "baseName": { + "id": 386, + "name": "Context", + "nameLocations": [ + "1133:7:5" ], - "src": "3630:9:2" + "nodeType": "IdentifierPath", + "referencedDeclaration": 1693, + "src": "1133:7:5" }, - "scope": 799, - "src": "3551:140:2", - "stateMutability": "view", - "virtual": true, - "visibility": "public" + "id": 387, + "nodeType": "InheritanceSpecifier", + "src": "1133:7:5" }, { - "baseFunctions": [ - 864 - ], - "body": { - "id": 449, - "nodeType": "Block", - "src": "4077:107:2", - "statements": [ - { - "assignments": [ - 437 - ], - "declarations": [ - { - "constant": false, - "id": 437, - "mutability": "mutable", - "name": "owner", - "nameLocation": "4095:5:2", - "nodeType": "VariableDeclaration", - "scope": 449, - "src": "4087:13:2", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - }, - "typeName": { - "id": 436, - "name": "address", - "nodeType": "ElementaryTypeName", - "src": "4087:7:2", - "stateMutability": "nonpayable", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "visibility": "internal" - } - ], - "id": 440, - "initialValue": { - "arguments": [], - "expression": { - "argumentTypes": [], - "id": 438, - "name": "_msgSender", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 915, - "src": "4103:10:2", - "typeDescriptions": { - "typeIdentifier": "t_function_internal_view$__$returns$_t_address_$", - "typeString": "function () view returns (address)" - } - }, - "id": 439, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "nameLocations": [], - "names": [], - "nodeType": "FunctionCall", - "src": "4103:12:2", - "tryCall": false, - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "nodeType": "VariableDeclarationStatement", - "src": "4087:28:2" - }, - { - "expression": { - "arguments": [ - { - "id": 442, - "name": "owner", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 437, - "src": "4134:5:2", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - { - "id": 443, - "name": "spender", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 429, - "src": "4141:7:2", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - { - "id": 444, - "name": "value", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 431, - "src": "4150:5:2", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_address", - "typeString": "address" - }, - { - "typeIdentifier": "t_address", - "typeString": "address" - }, - { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - ], - "id": 441, - "name": "_approve", - "nodeType": "Identifier", - "overloadedDeclarations": [ - 690, - 750 - ], - "referencedDeclaration": 690, - "src": "4125:8:2", - "typeDescriptions": { - "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$__$", - "typeString": "function (address,address,uint256)" - } - }, - "id": 445, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "nameLocations": [], - "names": [], - "nodeType": "FunctionCall", - "src": "4125:31:2", - "tryCall": false, - "typeDescriptions": { - "typeIdentifier": "t_tuple$__$", - "typeString": "tuple()" - } - }, - "id": 446, - "nodeType": "ExpressionStatement", - "src": "4125:31:2" - }, - { - "expression": { - "hexValue": "74727565", - "id": 447, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "bool", - "lValueRequested": false, - "nodeType": "Literal", - "src": "4173:4:2", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - }, - "value": "true" - }, - "functionReturnParameters": 435, - "id": 448, - "nodeType": "Return", - "src": "4166:11:2" - } - ] - }, - "documentation": { - "id": 427, - "nodeType": "StructuredDocumentation", - "src": "3697:296:2", - "text": " @dev See {IERC20-approve}.\n NOTE: If `value` is the maximum `uint256`, the allowance is not updated on\n `transferFrom`. This is semantically equivalent to an infinite approval.\n Requirements:\n - `spender` cannot be the zero address." - }, - "functionSelector": "095ea7b3", - "id": 450, - "implemented": true, - "kind": "function", - "modifiers": [], - "name": "approve", - "nameLocation": "4007:7:2", - "nodeType": "FunctionDefinition", - "parameters": { - "id": 432, - "nodeType": "ParameterList", - "parameters": [ - { - "constant": false, - "id": 429, - "mutability": "mutable", - "name": "spender", - "nameLocation": "4023:7:2", - "nodeType": "VariableDeclaration", - "scope": 450, - "src": "4015:15:2", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - }, - "typeName": { - "id": 428, - "name": "address", - "nodeType": "ElementaryTypeName", - "src": "4015:7:2", - "stateMutability": "nonpayable", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "visibility": "internal" - }, - { - "constant": false, - "id": 431, - "mutability": "mutable", - "name": "value", - "nameLocation": "4040:5:2", - "nodeType": "VariableDeclaration", - "scope": 450, - "src": "4032:13:2", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "typeName": { - "id": 430, - "name": "uint256", - "nodeType": "ElementaryTypeName", - "src": "4032:7:2", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "visibility": "internal" - } + "baseName": { + "id": 388, + "name": "IERC20", + "nameLocations": [ + "1142:6:5" ], - "src": "4014:32:2" + "nodeType": "IdentifierPath", + "referencedDeclaration": 967, + "src": "1142:6:5" }, - "returnParameters": { - "id": 435, - "nodeType": "ParameterList", - "parameters": [ - { - "constant": false, - "id": 434, - "mutability": "mutable", - "name": "", - "nameLocation": "-1:-1:-1", - "nodeType": "VariableDeclaration", - "scope": 450, - "src": "4071:4:2", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - }, - "typeName": { - "id": 433, - "name": "bool", - "nodeType": "ElementaryTypeName", - "src": "4071:4:2", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - }, - "visibility": "internal" - } + "id": 389, + "nodeType": "InheritanceSpecifier", + "src": "1142:6:5" + }, + { + "baseName": { + "id": 390, + "name": "IERC20Metadata", + "nameLocations": [ + "1150:14:5" ], - "src": "4070:6:2" + "nodeType": "IdentifierPath", + "referencedDeclaration": 993, + "src": "1150:14:5" }, - "scope": 799, - "src": "3998:186:2", - "stateMutability": "nonpayable", - "virtual": true, - "visibility": "public" + "id": 391, + "nodeType": "InheritanceSpecifier", + "src": "1150:14:5" }, { - "baseFunctions": [ - 876 - ], - "body": { - "id": 481, - "nodeType": "Block", - "src": "4869:151:2", - "statements": [ - { - "assignments": [ - 463 - ], - "declarations": [ - { - "constant": false, - "id": 463, - "mutability": "mutable", - "name": "spender", - "nameLocation": "4887:7:2", - "nodeType": "VariableDeclaration", - "scope": 481, - "src": "4879:15:2", - "stateVariable": false, - "storageLocation": "default", + "baseName": { + "id": 392, + "name": "IERC20Errors", + "nameLocations": [ + "1166:12:5" + ], + "nodeType": "IdentifierPath", + "referencedDeclaration": 279, + "src": "1166:12:5" + }, + "id": 393, + "nodeType": "InheritanceSpecifier", + "src": "1166:12:5" + } + ], + "canonicalName": "ERC20", + "contractDependencies": [], + "contractKind": "contract", + "documentation": { + "id": 385, + "nodeType": "StructuredDocumentation", + "src": "348:757:5", + "text": " @dev Implementation of the {IERC20} interface.\n This implementation is agnostic to the way tokens are created. This means\n that a supply mechanism has to be added in a derived contract using {_mint}.\n TIP: For a detailed writeup see our guide\n https://forum.openzeppelin.com/t/how-to-implement-erc20-supply-mechanisms/226[How\n to implement supply mechanisms].\n The default value of {decimals} is 18. To change this, you should override\n this function so it returns a different value.\n We have followed general OpenZeppelin Contracts guidelines: functions revert\n instead returning `false` on failure. This behavior is nonetheless\n conventional and does not conflict with the expectations of ERC-20\n applications." + }, + "fullyImplemented": true, + "id": 889, + "linearizedBaseContracts": [ + 889, + 279, + 993, + 967, + 1693 + ], + "name": "ERC20", + "nameLocation": "1124:5:5", + "nodeType": "ContractDefinition", + "nodes": [ + { + "constant": false, + "id": 397, + "mutability": "mutable", + "name": "_balances", + "nameLocation": "1229:9:5", + "nodeType": "VariableDeclaration", + "scope": 889, + "src": "1185:53:5", + "stateVariable": true, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$", + "typeString": "mapping(address => uint256)" + }, + "typeName": { + "id": 396, + "keyName": "account", + "keyNameLocation": "1201:7:5", + "keyType": { + "id": 394, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "1193:7:5", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "nodeType": "Mapping", + "src": "1185:35:5", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$", + "typeString": "mapping(address => uint256)" + }, + "valueName": "", + "valueNameLocation": "-1:-1:-1", + "valueType": { + "id": 395, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "1212:7:5", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + }, + "visibility": "private" + }, + { + "constant": false, + "id": 403, + "mutability": "mutable", + "name": "_allowances", + "nameLocation": "1317:11:5", + "nodeType": "VariableDeclaration", + "scope": 889, + "src": "1245:83:5", + "stateVariable": true, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_address_$_t_mapping$_t_address_$_t_uint256_$_$", + "typeString": "mapping(address => mapping(address => uint256))" + }, + "typeName": { + "id": 402, + "keyName": "account", + "keyNameLocation": "1261:7:5", + "keyType": { + "id": 398, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "1253:7:5", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "nodeType": "Mapping", + "src": "1245:63:5", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_address_$_t_mapping$_t_address_$_t_uint256_$_$", + "typeString": "mapping(address => mapping(address => uint256))" + }, + "valueName": "", + "valueNameLocation": "-1:-1:-1", + "valueType": { + "id": 401, + "keyName": "spender", + "keyNameLocation": "1288:7:5", + "keyType": { + "id": 399, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "1280:7:5", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "nodeType": "Mapping", + "src": "1272:35:5", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$", + "typeString": "mapping(address => uint256)" + }, + "valueName": "", + "valueNameLocation": "-1:-1:-1", + "valueType": { + "id": 400, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "1299:7:5", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + } + }, + "visibility": "private" + }, + { + "constant": false, + "id": 405, + "mutability": "mutable", + "name": "_totalSupply", + "nameLocation": "1351:12:5", + "nodeType": "VariableDeclaration", + "scope": 889, + "src": "1335:28:5", + "stateVariable": true, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 404, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "1335:7:5", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "private" + }, + { + "constant": false, + "id": 407, + "mutability": "mutable", + "name": "_name", + "nameLocation": "1385:5:5", + "nodeType": "VariableDeclaration", + "scope": 889, + "src": "1370:20:5", + "stateVariable": true, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_string_storage", + "typeString": "string" + }, + "typeName": { + "id": 406, + "name": "string", + "nodeType": "ElementaryTypeName", + "src": "1370:6:5", + "typeDescriptions": { + "typeIdentifier": "t_string_storage_ptr", + "typeString": "string" + } + }, + "visibility": "private" + }, + { + "constant": false, + "id": 409, + "mutability": "mutable", + "name": "_symbol", + "nameLocation": "1411:7:5", + "nodeType": "VariableDeclaration", + "scope": 889, + "src": "1396:22:5", + "stateVariable": true, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_string_storage", + "typeString": "string" + }, + "typeName": { + "id": 408, + "name": "string", + "nodeType": "ElementaryTypeName", + "src": "1396:6:5", + "typeDescriptions": { + "typeIdentifier": "t_string_storage_ptr", + "typeString": "string" + } + }, + "visibility": "private" + }, + { + "body": { + "id": 425, + "nodeType": "Block", + "src": "1657:57:5", + "statements": [ + { + "expression": { + "id": 419, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "id": 417, + "name": "_name", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 407, + "src": "1667:5:5", "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - }, - "typeName": { - "id": 462, - "name": "address", - "nodeType": "ElementaryTypeName", - "src": "4879:7:2", - "stateMutability": "nonpayable", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "visibility": "internal" - } - ], - "id": 466, - "initialValue": { - "arguments": [], - "expression": { - "argumentTypes": [], - "id": 464, - "name": "_msgSender", + "typeIdentifier": "t_string_storage", + "typeString": "string storage ref" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "id": 418, + "name": "name_", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 915, - "src": "4897:10:2", + "referencedDeclaration": 412, + "src": "1675:5:5", "typeDescriptions": { - "typeIdentifier": "t_function_internal_view$__$returns$_t_address_$", - "typeString": "function () view returns (address)" + "typeIdentifier": "t_string_memory_ptr", + "typeString": "string memory" } }, - "id": 465, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "nameLocations": [], - "names": [], - "nodeType": "FunctionCall", - "src": "4897:12:2", - "tryCall": false, + "src": "1667:13:5", "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" + "typeIdentifier": "t_string_storage", + "typeString": "string storage ref" } }, - "nodeType": "VariableDeclarationStatement", - "src": "4879:30:2" + "id": 420, + "nodeType": "ExpressionStatement", + "src": "1667:13:5" }, { "expression": { - "arguments": [ - { - "id": 468, - "name": "from", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 453, - "src": "4935:4:2", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - { - "id": 469, - "name": "spender", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 463, - "src": "4941:7:2", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - { - "id": 470, - "name": "value", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 457, - "src": "4950:5:2", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_address", - "typeString": "address" - }, - { - "typeIdentifier": "t_address", - "typeString": "address" - }, - { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - ], - "id": 467, - "name": "_spendAllowance", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 798, - "src": "4919:15:2", - "typeDescriptions": { - "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$__$", - "typeString": "function (address,address,uint256)" - } - }, - "id": 471, + "id": 423, "isConstant": false, "isLValue": false, "isPure": false, - "kind": "functionCall", "lValueRequested": false, - "nameLocations": [], - "names": [], - "nodeType": "FunctionCall", - "src": "4919:37:2", - "tryCall": false, - "typeDescriptions": { - "typeIdentifier": "t_tuple$__$", - "typeString": "tuple()" - } - }, - "id": 472, - "nodeType": "ExpressionStatement", - "src": "4919:37:2" - }, - { - "expression": { - "arguments": [ - { - "id": 474, - "name": "from", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 453, - "src": "4976:4:2", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - { - "id": 475, - "name": "to", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 455, - "src": "4982:2:2", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - { - "id": 476, - "name": "value", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 457, - "src": "4986:5:2", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } + "leftHandSide": { + "id": 421, + "name": "_symbol", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 409, + "src": "1690:7:5", + "typeDescriptions": { + "typeIdentifier": "t_string_storage", + "typeString": "string storage ref" } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_address", - "typeString": "address" - }, - { - "typeIdentifier": "t_address", - "typeString": "address" - }, - { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - ], - "id": 473, - "name": "_transfer", + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "id": 422, + "name": "symbol_", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 529, - "src": "4966:9:2", + "referencedDeclaration": 414, + "src": "1700:7:5", "typeDescriptions": { - "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$__$", - "typeString": "function (address,address,uint256)" + "typeIdentifier": "t_string_memory_ptr", + "typeString": "string memory" } }, - "id": 477, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "nameLocations": [], - "names": [], - "nodeType": "FunctionCall", - "src": "4966:26:2", - "tryCall": false, + "src": "1690:17:5", "typeDescriptions": { - "typeIdentifier": "t_tuple$__$", - "typeString": "tuple()" + "typeIdentifier": "t_string_storage", + "typeString": "string storage ref" } }, - "id": 478, + "id": 424, "nodeType": "ExpressionStatement", - "src": "4966:26:2" - }, - { - "expression": { - "hexValue": "74727565", - "id": 479, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "bool", - "lValueRequested": false, - "nodeType": "Literal", - "src": "5009:4:2", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - }, - "value": "true" - }, - "functionReturnParameters": 461, - "id": 480, - "nodeType": "Return", - "src": "5002:11:2" + "src": "1690:17:5" } ] }, "documentation": { - "id": 451, + "id": 410, "nodeType": "StructuredDocumentation", - "src": "4190:581:2", - "text": " @dev See {IERC20-transferFrom}.\n Skips emitting an {Approval} event indicating an allowance update. This is not\n required by the ERC. See {xref-ERC20-_approve-address-address-uint256-bool-}[_approve].\n NOTE: Does not update the allowance if the current allowance\n is the maximum `uint256`.\n Requirements:\n - `from` and `to` cannot be the zero address.\n - `from` must have a balance of at least `value`.\n - the caller must have allowance for ``from``'s tokens of at least\n `value`." + "src": "1425:171:5", + "text": " @dev Sets the values for {name} and {symbol}.\n All two of these values are immutable: they can only be set once during\n construction." }, - "functionSelector": "23b872dd", - "id": 482, + "id": 426, "implemented": true, - "kind": "function", + "kind": "constructor", "modifiers": [], - "name": "transferFrom", - "nameLocation": "4785:12:2", + "name": "", + "nameLocation": "-1:-1:-1", "nodeType": "FunctionDefinition", "parameters": { - "id": 458, + "id": 415, "nodeType": "ParameterList", "parameters": [ { "constant": false, - "id": 453, - "mutability": "mutable", - "name": "from", - "nameLocation": "4806:4:2", - "nodeType": "VariableDeclaration", - "scope": 482, - "src": "4798:12:2", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - }, - "typeName": { - "id": 452, - "name": "address", - "nodeType": "ElementaryTypeName", - "src": "4798:7:2", - "stateMutability": "nonpayable", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "visibility": "internal" - }, - { - "constant": false, - "id": 455, + "id": 412, "mutability": "mutable", - "name": "to", - "nameLocation": "4820:2:2", + "name": "name_", + "nameLocation": "1627:5:5", "nodeType": "VariableDeclaration", - "scope": 482, - "src": "4812:10:2", + "scope": 426, + "src": "1613:19:5", "stateVariable": false, - "storageLocation": "default", + "storageLocation": "memory", "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" + "typeIdentifier": "t_string_memory_ptr", + "typeString": "string" }, "typeName": { - "id": 454, - "name": "address", + "id": 411, + "name": "string", "nodeType": "ElementaryTypeName", - "src": "4812:7:2", - "stateMutability": "nonpayable", + "src": "1613:6:5", "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" + "typeIdentifier": "t_string_storage_ptr", + "typeString": "string" } }, "visibility": "internal" }, { "constant": false, - "id": 457, + "id": 414, "mutability": "mutable", - "name": "value", - "nameLocation": "4832:5:2", + "name": "symbol_", + "nameLocation": "1648:7:5", "nodeType": "VariableDeclaration", - "scope": 482, - "src": "4824:13:2", + "scope": 426, + "src": "1634:21:5", "stateVariable": false, - "storageLocation": "default", + "storageLocation": "memory", "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" + "typeIdentifier": "t_string_memory_ptr", + "typeString": "string" }, "typeName": { - "id": 456, - "name": "uint256", + "id": 413, + "name": "string", "nodeType": "ElementaryTypeName", - "src": "4824:7:2", + "src": "1634:6:5", "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" + "typeIdentifier": "t_string_storage_ptr", + "typeString": "string" } }, "visibility": "internal" } ], - "src": "4797:41:2" + "src": "1612:44:5" }, "returnParameters": { - "id": 461, + "id": 416, "nodeType": "ParameterList", - "parameters": [ + "parameters": [], + "src": "1657:0:5" + }, + "scope": 889, + "src": "1601:113:5", + "stateMutability": "nonpayable", + "virtual": false, + "visibility": "internal" + }, + { + "baseFunctions": [ + 980 + ], + "body": { + "id": 434, + "nodeType": "Block", + "src": "1839:29:5", + "statements": [ { - "constant": false, - "id": 460, - "mutability": "mutable", - "name": "", - "nameLocation": "-1:-1:-1", - "nodeType": "VariableDeclaration", - "scope": 482, - "src": "4863:4:2", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" + "expression": { + "id": 432, + "name": "_name", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 407, + "src": "1856:5:5", + "typeDescriptions": { + "typeIdentifier": "t_string_storage", + "typeString": "string storage ref" + } + }, + "functionReturnParameters": 431, + "id": 433, + "nodeType": "Return", + "src": "1849:12:5" + } + ] + }, + "documentation": { + "id": 427, + "nodeType": "StructuredDocumentation", + "src": "1720:54:5", + "text": " @dev Returns the name of the token." + }, + "functionSelector": "06fdde03", + "id": 435, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "name", + "nameLocation": "1788:4:5", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 428, + "nodeType": "ParameterList", + "parameters": [], + "src": "1792:2:5" + }, + "returnParameters": { + "id": 431, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 430, + "mutability": "mutable", + "name": "", + "nameLocation": "-1:-1:-1", + "nodeType": "VariableDeclaration", + "scope": 435, + "src": "1824:13:5", + "stateVariable": false, + "storageLocation": "memory", + "typeDescriptions": { + "typeIdentifier": "t_string_memory_ptr", + "typeString": "string" }, "typeName": { - "id": 459, - "name": "bool", + "id": 429, + "name": "string", "nodeType": "ElementaryTypeName", - "src": "4863:4:2", + "src": "1824:6:5", "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" + "typeIdentifier": "t_string_storage_ptr", + "typeString": "string" } }, "visibility": "internal" } ], - "src": "4862:6:2" + "src": "1823:15:5" }, - "scope": 799, - "src": "4776:244:2", - "stateMutability": "nonpayable", + "scope": 889, + "src": "1779:89:5", + "stateMutability": "view", "virtual": true, "visibility": "public" }, { + "baseFunctions": [ + 986 + ], "body": { - "id": 528, + "id": 443, "nodeType": "Block", - "src": "5462:231:2", + "src": "2043:31:5", "statements": [ { - "condition": { - "commonType": { - "typeIdentifier": "t_address", - "typeString": "address" - }, - "id": 497, + "expression": { + "id": 441, + "name": "_symbol", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 409, + "src": "2060:7:5", + "typeDescriptions": { + "typeIdentifier": "t_string_storage", + "typeString": "string storage ref" + } + }, + "functionReturnParameters": 440, + "id": 442, + "nodeType": "Return", + "src": "2053:14:5" + } + ] + }, + "documentation": { + "id": 436, + "nodeType": "StructuredDocumentation", + "src": "1874:102:5", + "text": " @dev Returns the symbol of the token, usually a shorter version of the\n name." + }, + "functionSelector": "95d89b41", + "id": 444, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "symbol", + "nameLocation": "1990:6:5", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 437, + "nodeType": "ParameterList", + "parameters": [], + "src": "1996:2:5" + }, + "returnParameters": { + "id": 440, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 439, + "mutability": "mutable", + "name": "", + "nameLocation": "-1:-1:-1", + "nodeType": "VariableDeclaration", + "scope": 444, + "src": "2028:13:5", + "stateVariable": false, + "storageLocation": "memory", + "typeDescriptions": { + "typeIdentifier": "t_string_memory_ptr", + "typeString": "string" + }, + "typeName": { + "id": 438, + "name": "string", + "nodeType": "ElementaryTypeName", + "src": "2028:6:5", + "typeDescriptions": { + "typeIdentifier": "t_string_storage_ptr", + "typeString": "string" + } + }, + "visibility": "internal" + } + ], + "src": "2027:15:5" + }, + "scope": 889, + "src": "1981:93:5", + "stateMutability": "view", + "virtual": true, + "visibility": "public" + }, + { + "baseFunctions": [ + 992 + ], + "body": { + "id": 452, + "nodeType": "Block", + "src": "2763:26:5", + "statements": [ + { + "expression": { + "hexValue": "3138", + "id": 450, "isConstant": false, "isLValue": false, - "isPure": false, + "isPure": true, + "kind": "number", "lValueRequested": false, - "leftExpression": { - "id": 492, - "name": "from", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 485, - "src": "5476:4:2", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "nodeType": "BinaryOperation", - "operator": "==", - "rightExpression": { - "arguments": [ - { - "hexValue": "30", - "id": 495, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "number", - "lValueRequested": false, - "nodeType": "Literal", - "src": "5492:1:2", - "typeDescriptions": { - "typeIdentifier": "t_rational_0_by_1", - "typeString": "int_const 0" - }, - "value": "0" - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_rational_0_by_1", - "typeString": "int_const 0" - } - ], - "id": 494, - "isConstant": false, - "isLValue": false, - "isPure": true, - "lValueRequested": false, - "nodeType": "ElementaryTypeNameExpression", - "src": "5484:7:2", - "typeDescriptions": { - "typeIdentifier": "t_type$_t_address_$", - "typeString": "type(address)" - }, - "typeName": { - "id": 493, - "name": "address", - "nodeType": "ElementaryTypeName", - "src": "5484:7:2", - "typeDescriptions": {} - } - }, - "id": 496, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "typeConversion", - "lValueRequested": false, - "nameLocations": [], - "names": [], - "nodeType": "FunctionCall", - "src": "5484:10:2", - "tryCall": false, - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } + "nodeType": "Literal", + "src": "2780:2:5", + "typeDescriptions": { + "typeIdentifier": "t_rational_18_by_1", + "typeString": "int_const 18" }, - "src": "5476:18:2", + "value": "18" + }, + "functionReturnParameters": 449, + "id": 451, + "nodeType": "Return", + "src": "2773:9:5" + } + ] + }, + "documentation": { + "id": 445, + "nodeType": "StructuredDocumentation", + "src": "2080:622:5", + "text": " @dev Returns the number of decimals used to get its user representation.\n For example, if `decimals` equals `2`, a balance of `505` tokens should\n be displayed to a user as `5.05` (`505 / 10 ** 2`).\n Tokens usually opt for a value of 18, imitating the relationship between\n Ether and Wei. This is the default value returned by this function, unless\n it's overridden.\n NOTE: This information is only used for _display_ purposes: it in\n no way affects any of the arithmetic of the contract, including\n {IERC20-balanceOf} and {IERC20-transfer}." + }, + "functionSelector": "313ce567", + "id": 453, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "decimals", + "nameLocation": "2716:8:5", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 446, + "nodeType": "ParameterList", + "parameters": [], + "src": "2724:2:5" + }, + "returnParameters": { + "id": 449, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 448, + "mutability": "mutable", + "name": "", + "nameLocation": "-1:-1:-1", + "nodeType": "VariableDeclaration", + "scope": 453, + "src": "2756:5:5", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint8", + "typeString": "uint8" + }, + "typeName": { + "id": 447, + "name": "uint8", + "nodeType": "ElementaryTypeName", + "src": "2756:5:5", "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" + "typeIdentifier": "t_uint8", + "typeString": "uint8" } }, - "id": 506, - "nodeType": "IfStatement", - "src": "5472:86:2", - "trueBody": { - "id": 505, - "nodeType": "Block", - "src": "5496:62:2", - "statements": [ - { - "errorCall": { - "arguments": [ - { - "arguments": [ - { - "hexValue": "30", - "id": 501, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "number", - "lValueRequested": false, - "nodeType": "Literal", - "src": "5544:1:2", - "typeDescriptions": { - "typeIdentifier": "t_rational_0_by_1", - "typeString": "int_const 0" - }, - "value": "0" - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_rational_0_by_1", - "typeString": "int_const 0" - } - ], - "id": 500, - "isConstant": false, - "isLValue": false, - "isPure": true, - "lValueRequested": false, - "nodeType": "ElementaryTypeNameExpression", - "src": "5536:7:2", - "typeDescriptions": { - "typeIdentifier": "t_type$_t_address_$", - "typeString": "type(address)" - }, - "typeName": { - "id": 499, - "name": "address", - "nodeType": "ElementaryTypeName", - "src": "5536:7:2", - "typeDescriptions": {} - } - }, - "id": 502, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "typeConversion", - "lValueRequested": false, - "nameLocations": [], - "names": [], - "nodeType": "FunctionCall", - "src": "5536:10:2", - "tryCall": false, - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_address", - "typeString": "address" - } - ], - "id": 498, - "name": "ERC20InvalidSender", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 164, - "src": "5517:18:2", - "typeDescriptions": { - "typeIdentifier": "t_function_error_pure$_t_address_$returns$__$", - "typeString": "function (address) pure" - } - }, - "id": 503, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "nameLocations": [], - "names": [], - "nodeType": "FunctionCall", - "src": "5517:30:2", - "tryCall": false, - "typeDescriptions": { - "typeIdentifier": "t_tuple$__$", - "typeString": "tuple()" - } - }, - "id": 504, - "nodeType": "RevertStatement", - "src": "5510:37:2" - } - ] - } - }, + "visibility": "internal" + } + ], + "src": "2755:7:5" + }, + "scope": 889, + "src": "2707:82:5", + "stateMutability": "view", + "virtual": true, + "visibility": "public" + }, + { + "baseFunctions": [ + 916 + ], + "body": { + "id": 461, + "nodeType": "Block", + "src": "2910:36:5", + "statements": [ { - "condition": { - "commonType": { - "typeIdentifier": "t_address", - "typeString": "address" - }, - "id": 512, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftExpression": { - "id": 507, - "name": "to", + "expression": { + "id": 459, + "name": "_totalSupply", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 405, + "src": "2927:12:5", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "functionReturnParameters": 458, + "id": 460, + "nodeType": "Return", + "src": "2920:19:5" + } + ] + }, + "documentation": { + "id": 454, + "nodeType": "StructuredDocumentation", + "src": "2795:49:5", + "text": " @dev See {IERC20-totalSupply}." + }, + "functionSelector": "18160ddd", + "id": 462, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "totalSupply", + "nameLocation": "2858:11:5", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 455, + "nodeType": "ParameterList", + "parameters": [], + "src": "2869:2:5" + }, + "returnParameters": { + "id": 458, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 457, + "mutability": "mutable", + "name": "", + "nameLocation": "-1:-1:-1", + "nodeType": "VariableDeclaration", + "scope": 462, + "src": "2901:7:5", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 456, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "2901:7:5", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "src": "2900:9:5" + }, + "scope": 889, + "src": "2849:97:5", + "stateMutability": "view", + "virtual": true, + "visibility": "public" + }, + { + "baseFunctions": [ + 924 + ], + "body": { + "id": 474, + "nodeType": "Block", + "src": "3078:42:5", + "statements": [ + { + "expression": { + "baseExpression": { + "id": 470, + "name": "_balances", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 487, - "src": "5571:2:2", + "referencedDeclaration": 397, + "src": "3095:9:5", "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" + "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$", + "typeString": "mapping(address => uint256)" } }, - "nodeType": "BinaryOperation", - "operator": "==", - "rightExpression": { - "arguments": [ - { - "hexValue": "30", - "id": 510, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "number", - "lValueRequested": false, - "nodeType": "Literal", - "src": "5585:1:2", - "typeDescriptions": { - "typeIdentifier": "t_rational_0_by_1", - "typeString": "int_const 0" - }, - "value": "0" - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_rational_0_by_1", - "typeString": "int_const 0" - } - ], - "id": 509, - "isConstant": false, - "isLValue": false, - "isPure": true, - "lValueRequested": false, - "nodeType": "ElementaryTypeNameExpression", - "src": "5577:7:2", - "typeDescriptions": { - "typeIdentifier": "t_type$_t_address_$", - "typeString": "type(address)" - }, - "typeName": { - "id": 508, - "name": "address", - "nodeType": "ElementaryTypeName", - "src": "5577:7:2", - "typeDescriptions": {} - } - }, - "id": 511, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "typeConversion", - "lValueRequested": false, - "nameLocations": [], - "names": [], - "nodeType": "FunctionCall", - "src": "5577:10:2", - "tryCall": false, + "id": 472, + "indexExpression": { + "id": 471, + "name": "account", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 465, + "src": "3105:7:5", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, - "src": "5571:16:2", + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "3095:18:5", "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" + "typeIdentifier": "t_uint256", + "typeString": "uint256" } }, - "id": 521, - "nodeType": "IfStatement", - "src": "5567:86:2", - "trueBody": { - "id": 520, - "nodeType": "Block", - "src": "5589:64:2", - "statements": [ - { - "errorCall": { - "arguments": [ - { - "arguments": [ - { - "hexValue": "30", - "id": 516, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "number", - "lValueRequested": false, - "nodeType": "Literal", - "src": "5639:1:2", - "typeDescriptions": { - "typeIdentifier": "t_rational_0_by_1", - "typeString": "int_const 0" - }, - "value": "0" - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_rational_0_by_1", - "typeString": "int_const 0" - } - ], - "id": 515, - "isConstant": false, - "isLValue": false, - "isPure": true, - "lValueRequested": false, - "nodeType": "ElementaryTypeNameExpression", - "src": "5631:7:2", - "typeDescriptions": { - "typeIdentifier": "t_type$_t_address_$", - "typeString": "type(address)" - }, - "typeName": { - "id": 514, - "name": "address", - "nodeType": "ElementaryTypeName", - "src": "5631:7:2", - "typeDescriptions": {} - } - }, - "id": 517, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "typeConversion", - "lValueRequested": false, - "nameLocations": [], - "names": [], - "nodeType": "FunctionCall", - "src": "5631:10:2", - "tryCall": false, - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_address", - "typeString": "address" - } - ], - "id": 513, - "name": "ERC20InvalidReceiver", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 169, - "src": "5610:20:2", - "typeDescriptions": { - "typeIdentifier": "t_function_error_pure$_t_address_$returns$__$", - "typeString": "function (address) pure" - } - }, - "id": 518, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "nameLocations": [], - "names": [], - "nodeType": "FunctionCall", - "src": "5610:32:2", - "tryCall": false, - "typeDescriptions": { - "typeIdentifier": "t_tuple$__$", - "typeString": "tuple()" - } - }, - "id": 519, - "nodeType": "RevertStatement", - "src": "5603:39:2" + "functionReturnParameters": 469, + "id": 473, + "nodeType": "Return", + "src": "3088:25:5" + } + ] + }, + "documentation": { + "id": 463, + "nodeType": "StructuredDocumentation", + "src": "2952:47:5", + "text": " @dev See {IERC20-balanceOf}." + }, + "functionSelector": "70a08231", + "id": 475, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "balanceOf", + "nameLocation": "3013:9:5", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 466, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 465, + "mutability": "mutable", + "name": "account", + "nameLocation": "3031:7:5", + "nodeType": "VariableDeclaration", + "scope": 475, + "src": "3023:15:5", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 464, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "3023:7:5", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + } + ], + "src": "3022:17:5" + }, + "returnParameters": { + "id": 469, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 468, + "mutability": "mutable", + "name": "", + "nameLocation": "-1:-1:-1", + "nodeType": "VariableDeclaration", + "scope": 475, + "src": "3069:7:5", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 467, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "3069:7:5", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "src": "3068:9:5" + }, + "scope": 889, + "src": "3004:116:5", + "stateMutability": "view", + "virtual": true, + "visibility": "public" + }, + { + "baseFunctions": [ + 934 + ], + "body": { + "id": 498, + "nodeType": "Block", + "src": "3390:103:5", + "statements": [ + { + "assignments": [ + 486 + ], + "declarations": [ + { + "constant": false, + "id": 486, + "mutability": "mutable", + "name": "owner", + "nameLocation": "3408:5:5", + "nodeType": "VariableDeclaration", + "scope": 498, + "src": "3400:13:5", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 485, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "3400:7:5", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + } + ], + "id": 489, + "initialValue": { + "arguments": [], + "expression": { + "argumentTypes": [], + "id": 487, + "name": "_msgSender", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1675, + "src": "3416:10:5", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_view$__$returns$_t_address_$", + "typeString": "function () view returns (address)" } - ] - } + }, + "id": 488, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "3416:12:5", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "3400:28:5" }, { "expression": { "arguments": [ { - "id": 523, - "name": "from", + "id": 491, + "name": "owner", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 485, - "src": "5670:4:2", + "referencedDeclaration": 486, + "src": "3448:5:5", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, { - "id": 524, + "id": 492, "name": "to", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 487, - "src": "5676:2:2", + "referencedDeclaration": 478, + "src": "3455:2:5", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, { - "id": 525, + "id": 493, "name": "value", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 489, - "src": "5680:5:2", + "referencedDeclaration": 480, + "src": "3459:5:5", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -6089,18 +5638,18 @@ "typeString": "uint256" } ], - "id": 522, - "name": "_update", + "id": 490, + "name": "_transfer", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 606, - "src": "5662:7:2", + "referencedDeclaration": 619, + "src": "3438:9:5", "typeDescriptions": { "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$__$", "typeString": "function (address,address,uint256)" } }, - "id": 526, + "id": 494, "isConstant": false, "isLValue": false, "isPure": false, @@ -6109,45 +5658,68 @@ "nameLocations": [], "names": [], "nodeType": "FunctionCall", - "src": "5662:24:2", + "src": "3438:27:5", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, - "id": 527, + "id": 495, "nodeType": "ExpressionStatement", - "src": "5662:24:2" + "src": "3438:27:5" + }, + { + "expression": { + "hexValue": "74727565", + "id": 496, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "bool", + "lValueRequested": false, + "nodeType": "Literal", + "src": "3482:4:5", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "value": "true" + }, + "functionReturnParameters": 484, + "id": 497, + "nodeType": "Return", + "src": "3475:11:5" } ] }, "documentation": { - "id": 483, + "id": 476, "nodeType": "StructuredDocumentation", - "src": "5026:362:2", - "text": " @dev Moves a `value` amount of tokens from `from` to `to`.\n This internal function is equivalent to {transfer}, and can be used to\n e.g. implement automatic token fees, slashing mechanisms, etc.\n Emits a {Transfer} event.\n NOTE: This function is not virtual, {_update} should be overridden instead." + "src": "3126:184:5", + "text": " @dev See {IERC20-transfer}.\n Requirements:\n - `to` cannot be the zero address.\n - the caller must have a balance of at least `value`." }, - "id": 529, + "functionSelector": "a9059cbb", + "id": 499, "implemented": true, "kind": "function", "modifiers": [], - "name": "_transfer", - "nameLocation": "5402:9:2", + "name": "transfer", + "nameLocation": "3324:8:5", "nodeType": "FunctionDefinition", "parameters": { - "id": 490, + "id": 481, "nodeType": "ParameterList", "parameters": [ { "constant": false, - "id": 485, + "id": 478, "mutability": "mutable", - "name": "from", - "nameLocation": "5420:4:2", + "name": "to", + "nameLocation": "3341:2:5", "nodeType": "VariableDeclaration", - "scope": 529, - "src": "5412:12:2", + "scope": 499, + "src": "3333:10:5", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -6155,10 +5727,10 @@ "typeString": "address" }, "typeName": { - "id": 484, + "id": 477, "name": "address", "nodeType": "ElementaryTypeName", - "src": "5412:7:2", + "src": "3333:7:5", "stateMutability": "nonpayable", "typeDescriptions": { "typeIdentifier": "t_address", @@ -6169,24 +5741,191 @@ }, { "constant": false, - "id": 487, + "id": 480, "mutability": "mutable", - "name": "to", - "nameLocation": "5434:2:2", + "name": "value", + "nameLocation": "3353:5:5", "nodeType": "VariableDeclaration", - "scope": 529, - "src": "5426:10:2", + "scope": 499, + "src": "3345:13:5", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - }, + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 479, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "3345:7:5", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "src": "3332:27:5" + }, + "returnParameters": { + "id": 484, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 483, + "mutability": "mutable", + "name": "", + "nameLocation": "-1:-1:-1", + "nodeType": "VariableDeclaration", + "scope": 499, + "src": "3384:4:5", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "typeName": { + "id": 482, + "name": "bool", + "nodeType": "ElementaryTypeName", + "src": "3384:4:5", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "visibility": "internal" + } + ], + "src": "3383:6:5" + }, + "scope": 889, + "src": "3315:178:5", + "stateMutability": "nonpayable", + "virtual": true, + "visibility": "public" + }, + { + "baseFunctions": [ + 944 + ], + "body": { + "id": 515, + "nodeType": "Block", + "src": "3640:51:5", + "statements": [ + { + "expression": { + "baseExpression": { + "baseExpression": { + "id": 509, + "name": "_allowances", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 403, + "src": "3657:11:5", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_address_$_t_mapping$_t_address_$_t_uint256_$_$", + "typeString": "mapping(address => mapping(address => uint256))" + } + }, + "id": 511, + "indexExpression": { + "id": 510, + "name": "owner", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 502, + "src": "3669:5:5", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "3657:18:5", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$", + "typeString": "mapping(address => uint256)" + } + }, + "id": 513, + "indexExpression": { + "id": 512, + "name": "spender", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 504, + "src": "3676:7:5", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "3657:27:5", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "functionReturnParameters": 508, + "id": 514, + "nodeType": "Return", + "src": "3650:34:5" + } + ] + }, + "documentation": { + "id": 500, + "nodeType": "StructuredDocumentation", + "src": "3499:47:5", + "text": " @dev See {IERC20-allowance}." + }, + "functionSelector": "dd62ed3e", + "id": 516, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "allowance", + "nameLocation": "3560:9:5", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 505, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 502, + "mutability": "mutable", + "name": "owner", + "nameLocation": "3578:5:5", + "nodeType": "VariableDeclaration", + "scope": 516, + "src": "3570:13:5", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, "typeName": { - "id": 486, + "id": 501, "name": "address", "nodeType": "ElementaryTypeName", - "src": "5426:7:2", + "src": "3570:7:5", "stateMutability": "nonpayable", "typeDescriptions": { "typeIdentifier": "t_address", @@ -6197,13 +5936,48 @@ }, { "constant": false, - "id": 489, + "id": 504, "mutability": "mutable", - "name": "value", - "nameLocation": "5446:5:2", + "name": "spender", + "nameLocation": "3593:7:5", + "nodeType": "VariableDeclaration", + "scope": 516, + "src": "3585:15:5", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 503, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "3585:7:5", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + } + ], + "src": "3569:32:5" + }, + "returnParameters": { + "id": 508, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 507, + "mutability": "mutable", + "name": "", + "nameLocation": "-1:-1:-1", "nodeType": "VariableDeclaration", - "scope": 529, - "src": "5438:13:2", + "scope": 516, + "src": "3631:7:5", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -6211,10 +5985,10 @@ "typeString": "uint256" }, "typeName": { - "id": 488, + "id": 506, "name": "uint256", "nodeType": "ElementaryTypeName", - "src": "5438:7:2", + "src": "3631:7:5", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -6223,767 +5997,433 @@ "visibility": "internal" } ], - "src": "5411:41:2" - }, - "returnParameters": { - "id": 491, - "nodeType": "ParameterList", - "parameters": [], - "src": "5462:0:2" + "src": "3630:9:5" }, - "scope": 799, - "src": "5393:300:2", - "stateMutability": "nonpayable", - "virtual": false, - "visibility": "internal" + "scope": 889, + "src": "3551:140:5", + "stateMutability": "view", + "virtual": true, + "visibility": "public" }, { + "baseFunctions": [ + 954 + ], "body": { - "id": 605, + "id": 539, "nodeType": "Block", - "src": "6083:1032:2", + "src": "4077:107:5", "statements": [ { - "condition": { - "commonType": { - "typeIdentifier": "t_address", - "typeString": "address" - }, - "id": 544, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftExpression": { - "id": 539, - "name": "from", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 532, - "src": "6097:4:2", + "assignments": [ + 527 + ], + "declarations": [ + { + "constant": false, + "id": 527, + "mutability": "mutable", + "name": "owner", + "nameLocation": "4095:5:5", + "nodeType": "VariableDeclaration", + "scope": 539, + "src": "4087:13:5", + "stateVariable": false, + "storageLocation": "default", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" - } - }, - "nodeType": "BinaryOperation", - "operator": "==", - "rightExpression": { - "arguments": [ - { - "hexValue": "30", - "id": 542, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "number", - "lValueRequested": false, - "nodeType": "Literal", - "src": "6113:1:2", - "typeDescriptions": { - "typeIdentifier": "t_rational_0_by_1", - "typeString": "int_const 0" - }, - "value": "0" - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_rational_0_by_1", - "typeString": "int_const 0" - } - ], - "id": 541, - "isConstant": false, - "isLValue": false, - "isPure": true, - "lValueRequested": false, - "nodeType": "ElementaryTypeNameExpression", - "src": "6105:7:2", + }, + "typeName": { + "id": 526, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "4087:7:5", + "stateMutability": "nonpayable", "typeDescriptions": { - "typeIdentifier": "t_type$_t_address_$", - "typeString": "type(address)" - }, - "typeName": { - "id": 540, - "name": "address", - "nodeType": "ElementaryTypeName", - "src": "6105:7:2", - "typeDescriptions": {} + "typeIdentifier": "t_address", + "typeString": "address" } }, - "id": 543, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "typeConversion", - "lValueRequested": false, - "nameLocations": [], - "names": [], - "nodeType": "FunctionCall", - "src": "6105:10:2", - "tryCall": false, + "visibility": "internal" + } + ], + "id": 530, + "initialValue": { + "arguments": [], + "expression": { + "argumentTypes": [], + "id": 528, + "name": "_msgSender", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1675, + "src": "4103:10:5", "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" + "typeIdentifier": "t_function_internal_view$__$returns$_t_address_$", + "typeString": "function () view returns (address)" } }, - "src": "6097:18:2", + "id": 529, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "4103:12:5", + "tryCall": false, "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" + "typeIdentifier": "t_address", + "typeString": "address" } }, - "falseBody": { - "id": 576, - "nodeType": "Block", - "src": "6271:362:2", - "statements": [ + "nodeType": "VariableDeclarationStatement", + "src": "4087:28:5" + }, + { + "expression": { + "arguments": [ { - "assignments": [ - 551 - ], - "declarations": [ - { - "constant": false, - "id": 551, - "mutability": "mutable", - "name": "fromBalance", - "nameLocation": "6293:11:2", - "nodeType": "VariableDeclaration", - "scope": 576, - "src": "6285:19:2", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "typeName": { - "id": 550, - "name": "uint256", - "nodeType": "ElementaryTypeName", - "src": "6285:7:2", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "visibility": "internal" - } - ], - "id": 555, - "initialValue": { - "baseExpression": { - "id": 552, - "name": "_balances", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 307, - "src": "6307:9:2", - "typeDescriptions": { - "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$", - "typeString": "mapping(address => uint256)" - } - }, - "id": 554, - "indexExpression": { - "id": 553, - "name": "from", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 532, - "src": "6317:4:2", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": false, - "nodeType": "IndexAccess", - "src": "6307:15:2", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "nodeType": "VariableDeclarationStatement", - "src": "6285:37:2" + "id": 532, + "name": "owner", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 527, + "src": "4134:5:5", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } }, { - "condition": { - "commonType": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "id": 558, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftExpression": { - "id": 556, - "name": "fromBalance", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 551, - "src": "6340:11:2", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "nodeType": "BinaryOperation", - "operator": "<", - "rightExpression": { - "id": 557, - "name": "value", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 536, - "src": "6354:5:2", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "src": "6340:19:2", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - }, - "id": 566, - "nodeType": "IfStatement", - "src": "6336:115:2", - "trueBody": { - "id": 565, - "nodeType": "Block", - "src": "6361:90:2", - "statements": [ - { - "errorCall": { - "arguments": [ - { - "id": 560, - "name": "from", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 532, - "src": "6411:4:2", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - { - "id": 561, - "name": "fromBalance", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 551, - "src": "6417:11:2", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - { - "id": 562, - "name": "value", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 536, - "src": "6430:5:2", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_address", - "typeString": "address" - }, - { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - ], - "id": 559, - "name": "ERC20InsufficientBalance", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 159, - "src": "6386:24:2", - "typeDescriptions": { - "typeIdentifier": "t_function_error_pure$_t_address_$_t_uint256_$_t_uint256_$returns$__$", - "typeString": "function (address,uint256,uint256) pure" - } - }, - "id": 563, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "nameLocations": [], - "names": [], - "nodeType": "FunctionCall", - "src": "6386:50:2", - "tryCall": false, - "typeDescriptions": { - "typeIdentifier": "t_tuple$__$", - "typeString": "tuple()" - } - }, - "id": 564, - "nodeType": "RevertStatement", - "src": "6379:57:2" - } - ] + "id": 533, + "name": "spender", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 519, + "src": "4141:7:5", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" } }, { - "id": 575, - "nodeType": "UncheckedBlock", - "src": "6464:159:2", - "statements": [ - { - "expression": { - "id": 573, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftHandSide": { - "baseExpression": { - "id": 567, - "name": "_balances", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 307, - "src": "6571:9:2", - "typeDescriptions": { - "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$", - "typeString": "mapping(address => uint256)" - } - }, - "id": 569, - "indexExpression": { - "id": 568, - "name": "from", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 532, - "src": "6581:4:2", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": true, - "nodeType": "IndexAccess", - "src": "6571:15:2", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "nodeType": "Assignment", - "operator": "=", - "rightHandSide": { - "commonType": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "id": 572, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftExpression": { - "id": 570, - "name": "fromBalance", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 551, - "src": "6589:11:2", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "nodeType": "BinaryOperation", - "operator": "-", - "rightExpression": { - "id": 571, - "name": "value", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 536, - "src": "6603:5:2", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "src": "6589:19:2", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "src": "6571:37:2", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "id": 574, - "nodeType": "ExpressionStatement", - "src": "6571:37:2" - } - ] + "id": 534, + "name": "value", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 521, + "src": "4150:5:5", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } } - ] - }, - "id": 577, - "nodeType": "IfStatement", - "src": "6093:540:2", - "trueBody": { - "id": 549, - "nodeType": "Block", - "src": "6117:148:2", - "statements": [ - { - "expression": { - "id": 547, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftHandSide": { - "id": 545, - "name": "_totalSupply", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 315, - "src": "6233:12:2", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "nodeType": "Assignment", - "operator": "+=", - "rightHandSide": { - "id": 546, - "name": "value", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 536, - "src": "6249:5:2", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "src": "6233:21:2", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" }, - "id": 548, - "nodeType": "ExpressionStatement", - "src": "6233:21:2" - } - ] - } - }, - { - "condition": { - "commonType": { - "typeIdentifier": "t_address", - "typeString": "address" - }, - "id": 583, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftExpression": { - "id": 578, - "name": "to", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 534, - "src": "6647:2:2", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "nodeType": "BinaryOperation", - "operator": "==", - "rightExpression": { - "arguments": [ { - "hexValue": "30", - "id": 581, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "number", - "lValueRequested": false, - "nodeType": "Literal", - "src": "6661:1:2", - "typeDescriptions": { - "typeIdentifier": "t_rational_0_by_1", - "typeString": "int_const 0" - }, - "value": "0" - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_rational_0_by_1", - "typeString": "int_const 0" - } - ], - "id": 580, - "isConstant": false, - "isLValue": false, - "isPure": true, - "lValueRequested": false, - "nodeType": "ElementaryTypeNameExpression", - "src": "6653:7:2", - "typeDescriptions": { - "typeIdentifier": "t_type$_t_address_$", - "typeString": "type(address)" + "typeIdentifier": "t_address", + "typeString": "address" }, - "typeName": { - "id": 579, - "name": "address", - "nodeType": "ElementaryTypeName", - "src": "6653:7:2", - "typeDescriptions": {} + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" } - }, - "id": 582, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "typeConversion", - "lValueRequested": false, - "nameLocations": [], - "names": [], - "nodeType": "FunctionCall", - "src": "6653:10:2", - "tryCall": false, + ], + "id": 531, + "name": "_approve", + "nodeType": "Identifier", + "overloadedDeclarations": [ + 780, + 840 + ], + "referencedDeclaration": 780, + "src": "4125:8:5", "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" + "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$__$", + "typeString": "function (address,address,uint256)" } }, - "src": "6647:16:2", + "id": 535, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "4125:31:5", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 536, + "nodeType": "ExpressionStatement", + "src": "4125:31:5" + }, + { + "expression": { + "hexValue": "74727565", + "id": 537, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "bool", + "lValueRequested": false, + "nodeType": "Literal", + "src": "4173:4:5", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" + }, + "value": "true" + }, + "functionReturnParameters": 525, + "id": 538, + "nodeType": "Return", + "src": "4166:11:5" + } + ] + }, + "documentation": { + "id": 517, + "nodeType": "StructuredDocumentation", + "src": "3697:296:5", + "text": " @dev See {IERC20-approve}.\n NOTE: If `value` is the maximum `uint256`, the allowance is not updated on\n `transferFrom`. This is semantically equivalent to an infinite approval.\n Requirements:\n - `spender` cannot be the zero address." + }, + "functionSelector": "095ea7b3", + "id": 540, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "approve", + "nameLocation": "4007:7:5", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 522, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 519, + "mutability": "mutable", + "name": "spender", + "nameLocation": "4023:7:5", + "nodeType": "VariableDeclaration", + "scope": 540, + "src": "4015:15:5", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 518, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "4015:7:5", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" } }, - "falseBody": { - "id": 597, - "nodeType": "Block", - "src": "6862:206:2", - "statements": [ - { - "id": 596, - "nodeType": "UncheckedBlock", - "src": "6876:182:2", - "statements": [ - { - "expression": { - "id": 594, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftHandSide": { - "baseExpression": { - "id": 590, - "name": "_balances", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 307, - "src": "7021:9:2", - "typeDescriptions": { - "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$", - "typeString": "mapping(address => uint256)" - } - }, - "id": 592, - "indexExpression": { - "id": 591, - "name": "to", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 534, - "src": "7031:2:2", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": true, - "nodeType": "IndexAccess", - "src": "7021:13:2", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "nodeType": "Assignment", - "operator": "+=", - "rightHandSide": { - "id": 593, - "name": "value", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 536, - "src": "7038:5:2", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "src": "7021:22:2", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "id": 595, - "nodeType": "ExpressionStatement", - "src": "7021:22:2" - } - ] - } - ] + "visibility": "internal" + }, + { + "constant": false, + "id": 521, + "mutability": "mutable", + "name": "value", + "nameLocation": "4040:5:5", + "nodeType": "VariableDeclaration", + "scope": 540, + "src": "4032:13:5", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" }, - "id": 598, - "nodeType": "IfStatement", - "src": "6643:425:2", - "trueBody": { - "id": 589, - "nodeType": "Block", - "src": "6665:191:2", - "statements": [ - { - "id": 588, - "nodeType": "UncheckedBlock", - "src": "6679:167:2", - "statements": [ - { - "expression": { - "id": 586, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftHandSide": { - "id": 584, - "name": "_totalSupply", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 315, - "src": "6810:12:2", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "nodeType": "Assignment", - "operator": "-=", - "rightHandSide": { - "id": 585, - "name": "value", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 536, - "src": "6826:5:2", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "src": "6810:21:2", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "id": 587, - "nodeType": "ExpressionStatement", - "src": "6810:21:2" - } - ] + "typeName": { + "id": 520, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "4032:7:5", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "src": "4014:32:5" + }, + "returnParameters": { + "id": 525, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 524, + "mutability": "mutable", + "name": "", + "nameLocation": "-1:-1:-1", + "nodeType": "VariableDeclaration", + "scope": 540, + "src": "4071:4:5", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "typeName": { + "id": 523, + "name": "bool", + "nodeType": "ElementaryTypeName", + "src": "4071:4:5", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "visibility": "internal" + } + ], + "src": "4070:6:5" + }, + "scope": 889, + "src": "3998:186:5", + "stateMutability": "nonpayable", + "virtual": true, + "visibility": "public" + }, + { + "baseFunctions": [ + 966 + ], + "body": { + "id": 571, + "nodeType": "Block", + "src": "4869:151:5", + "statements": [ + { + "assignments": [ + 553 + ], + "declarations": [ + { + "constant": false, + "id": 553, + "mutability": "mutable", + "name": "spender", + "nameLocation": "4887:7:5", + "nodeType": "VariableDeclaration", + "scope": 571, + "src": "4879:15:5", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 552, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "4879:7:5", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + } + ], + "id": 556, + "initialValue": { + "arguments": [], + "expression": { + "argumentTypes": [], + "id": 554, + "name": "_msgSender", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1675, + "src": "4897:10:5", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_view$__$returns$_t_address_$", + "typeString": "function () view returns (address)" } - ] - } + }, + "id": 555, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "4897:12:5", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "4879:30:5" }, { - "eventCall": { + "expression": { "arguments": [ { - "id": 600, + "id": 558, "name": "from", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 532, - "src": "7092:4:2", + "referencedDeclaration": 543, + "src": "4935:4:5", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, { - "id": 601, - "name": "to", + "id": 559, + "name": "spender", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 534, - "src": "7098:2:2", + "referencedDeclaration": 553, + "src": "4941:7:5", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, { - "id": 602, + "id": 560, "name": "value", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 536, - "src": "7102:5:2", + "referencedDeclaration": 547, + "src": "4950:5:5", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -7005,18 +6445,18 @@ "typeString": "uint256" } ], - "id": 599, - "name": "Transfer", + "id": 557, + "name": "_spendAllowance", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 811, - "src": "7083:8:2", + "referencedDeclaration": 888, + "src": "4919:15:5", "typeDescriptions": { - "typeIdentifier": "t_function_event_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$__$", + "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$__$", "typeString": "function (address,address,uint256)" } }, - "id": 603, + "id": 561, "isConstant": false, "isLValue": false, "isPure": false, @@ -7025,73 +6465,182 @@ "nameLocations": [], "names": [], "nodeType": "FunctionCall", - "src": "7083:25:2", + "src": "4919:37:5", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, - "id": 604, - "nodeType": "EmitStatement", - "src": "7078:30:2" - } - ] - }, - "documentation": { - "id": 530, - "nodeType": "StructuredDocumentation", - "src": "5699:304:2", - "text": " @dev Transfers a `value` amount of tokens from `from` to `to`, or alternatively mints (or burns) if `from`\n (or `to`) is the zero address. All customizations to transfers, mints, and burns should be done by overriding\n this function.\n Emits a {Transfer} event." - }, - "id": 606, - "implemented": true, - "kind": "function", - "modifiers": [], - "name": "_update", - "nameLocation": "6017:7:2", - "nodeType": "FunctionDefinition", - "parameters": { - "id": 537, - "nodeType": "ParameterList", - "parameters": [ - { - "constant": false, - "id": 532, - "mutability": "mutable", - "name": "from", - "nameLocation": "6033:4:2", - "nodeType": "VariableDeclaration", - "scope": 606, - "src": "6025:12:2", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - }, - "typeName": { - "id": 531, - "name": "address", - "nodeType": "ElementaryTypeName", - "src": "6025:7:2", - "stateMutability": "nonpayable", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "visibility": "internal" + "id": 562, + "nodeType": "ExpressionStatement", + "src": "4919:37:5" }, { - "constant": false, - "id": 534, - "mutability": "mutable", + "expression": { + "arguments": [ + { + "id": 564, + "name": "from", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 543, + "src": "4976:4:5", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "id": 565, + "name": "to", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 545, + "src": "4982:2:5", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "id": 566, + "name": "value", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 547, + "src": "4986:5:5", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "id": 563, + "name": "_transfer", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 619, + "src": "4966:9:5", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$__$", + "typeString": "function (address,address,uint256)" + } + }, + "id": 567, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "4966:26:5", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 568, + "nodeType": "ExpressionStatement", + "src": "4966:26:5" + }, + { + "expression": { + "hexValue": "74727565", + "id": 569, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "bool", + "lValueRequested": false, + "nodeType": "Literal", + "src": "5009:4:5", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "value": "true" + }, + "functionReturnParameters": 551, + "id": 570, + "nodeType": "Return", + "src": "5002:11:5" + } + ] + }, + "documentation": { + "id": 541, + "nodeType": "StructuredDocumentation", + "src": "4190:581:5", + "text": " @dev See {IERC20-transferFrom}.\n Skips emitting an {Approval} event indicating an allowance update. This is not\n required by the ERC. See {xref-ERC20-_approve-address-address-uint256-bool-}[_approve].\n NOTE: Does not update the allowance if the current allowance\n is the maximum `uint256`.\n Requirements:\n - `from` and `to` cannot be the zero address.\n - `from` must have a balance of at least `value`.\n - the caller must have allowance for ``from``'s tokens of at least\n `value`." + }, + "functionSelector": "23b872dd", + "id": 572, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "transferFrom", + "nameLocation": "4785:12:5", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 548, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 543, + "mutability": "mutable", + "name": "from", + "nameLocation": "4806:4:5", + "nodeType": "VariableDeclaration", + "scope": 572, + "src": "4798:12:5", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 542, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "4798:7:5", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 545, + "mutability": "mutable", "name": "to", - "nameLocation": "6047:2:2", + "nameLocation": "4820:2:5", "nodeType": "VariableDeclaration", - "scope": 606, - "src": "6039:10:2", + "scope": 572, + "src": "4812:10:5", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -7099,10 +6648,10 @@ "typeString": "address" }, "typeName": { - "id": 533, + "id": 544, "name": "address", "nodeType": "ElementaryTypeName", - "src": "6039:7:2", + "src": "4812:7:5", "stateMutability": "nonpayable", "typeDescriptions": { "typeIdentifier": "t_address", @@ -7113,13 +6662,13 @@ }, { "constant": false, - "id": 536, + "id": 547, "mutability": "mutable", "name": "value", - "nameLocation": "6059:5:2", + "nameLocation": "4832:5:5", "nodeType": "VariableDeclaration", - "scope": 606, - "src": "6051:13:2", + "scope": 572, + "src": "4824:13:5", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -7127,10 +6676,10 @@ "typeString": "uint256" }, "typeName": { - "id": 535, + "id": 546, "name": "uint256", "nodeType": "ElementaryTypeName", - "src": "6051:7:2", + "src": "4824:7:5", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -7139,25 +6688,53 @@ "visibility": "internal" } ], - "src": "6024:41:2" + "src": "4797:41:5" }, "returnParameters": { - "id": 538, + "id": 551, "nodeType": "ParameterList", - "parameters": [], - "src": "6083:0:2" + "parameters": [ + { + "constant": false, + "id": 550, + "mutability": "mutable", + "name": "", + "nameLocation": "-1:-1:-1", + "nodeType": "VariableDeclaration", + "scope": 572, + "src": "4863:4:5", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "typeName": { + "id": 549, + "name": "bool", + "nodeType": "ElementaryTypeName", + "src": "4863:4:5", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "visibility": "internal" + } + ], + "src": "4862:6:5" }, - "scope": 799, - "src": "6008:1107:2", + "scope": 889, + "src": "4776:244:5", "stateMutability": "nonpayable", "virtual": true, - "visibility": "internal" + "visibility": "public" }, { "body": { - "id": 638, + "id": 618, "nodeType": "Block", - "src": "7514:152:2", + "src": "5462:231:5", "statements": [ { "condition": { @@ -7165,18 +6742,18 @@ "typeIdentifier": "t_address", "typeString": "address" }, - "id": 619, + "id": 587, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": { - "id": 614, - "name": "account", + "id": 582, + "name": "from", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 609, - "src": "7528:7:2", + "referencedDeclaration": 575, + "src": "5476:4:5", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -7188,14 +6765,14 @@ "arguments": [ { "hexValue": "30", - "id": 617, + "id": 585, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", - "src": "7547:1:2", + "src": "5492:1:5", "typeDescriptions": { "typeIdentifier": "t_rational_0_by_1", "typeString": "int_const 0" @@ -7210,26 +6787,26 @@ "typeString": "int_const 0" } ], - "id": 616, + "id": 584, "isConstant": false, "isLValue": false, "isPure": true, "lValueRequested": false, "nodeType": "ElementaryTypeNameExpression", - "src": "7539:7:2", + "src": "5484:7:5", "typeDescriptions": { "typeIdentifier": "t_type$_t_address_$", "typeString": "type(address)" }, "typeName": { - "id": 615, + "id": 583, "name": "address", "nodeType": "ElementaryTypeName", - "src": "7539:7:2", + "src": "5484:7:5", "typeDescriptions": {} } }, - "id": 618, + "id": 586, "isConstant": false, "isLValue": false, "isPure": true, @@ -7238,26 +6815,26 @@ "nameLocations": [], "names": [], "nodeType": "FunctionCall", - "src": "7539:10:2", + "src": "5484:10:5", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, - "src": "7528:21:2", + "src": "5476:18:5", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" } }, - "id": 628, + "id": 596, "nodeType": "IfStatement", - "src": "7524:91:2", + "src": "5472:86:5", "trueBody": { - "id": 627, + "id": 595, "nodeType": "Block", - "src": "7551:64:2", + "src": "5496:62:5", "statements": [ { "errorCall": { @@ -7266,14 +6843,14 @@ "arguments": [ { "hexValue": "30", - "id": 623, + "id": 591, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", - "src": "7601:1:2", + "src": "5544:1:5", "typeDescriptions": { "typeIdentifier": "t_rational_0_by_1", "typeString": "int_const 0" @@ -7288,26 +6865,26 @@ "typeString": "int_const 0" } ], - "id": 622, + "id": 590, "isConstant": false, "isLValue": false, "isPure": true, "lValueRequested": false, "nodeType": "ElementaryTypeNameExpression", - "src": "7593:7:2", + "src": "5536:7:5", "typeDescriptions": { "typeIdentifier": "t_type$_t_address_$", "typeString": "type(address)" }, "typeName": { - "id": 621, + "id": 589, "name": "address", "nodeType": "ElementaryTypeName", - "src": "7593:7:2", + "src": "5536:7:5", "typeDescriptions": {} } }, - "id": 624, + "id": 592, "isConstant": false, "isLValue": false, "isPure": true, @@ -7316,7 +6893,7 @@ "nameLocations": [], "names": [], "nodeType": "FunctionCall", - "src": "7593:10:2", + "src": "5536:10:5", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_address", @@ -7331,18 +6908,18 @@ "typeString": "address" } ], - "id": 620, - "name": "ERC20InvalidReceiver", + "id": 588, + "name": "ERC20InvalidSender", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 169, - "src": "7572:20:2", + "referencedDeclaration": 254, + "src": "5517:18:5", "typeDescriptions": { "typeIdentifier": "t_function_error_pure$_t_address_$returns$__$", "typeString": "function (address) pure" } }, - "id": 625, + "id": 593, "isConstant": false, "isLValue": false, "isPure": false, @@ -7351,321 +6928,91 @@ "nameLocations": [], "names": [], "nodeType": "FunctionCall", - "src": "7572:32:2", + "src": "5517:30:5", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, - "id": 626, + "id": 594, "nodeType": "RevertStatement", - "src": "7565:39:2" + "src": "5510:37:5" } ] } }, { - "expression": { - "arguments": [ - { - "arguments": [ - { - "hexValue": "30", - "id": 632, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "number", - "lValueRequested": false, - "nodeType": "Literal", - "src": "7640:1:2", - "typeDescriptions": { - "typeIdentifier": "t_rational_0_by_1", - "typeString": "int_const 0" - }, - "value": "0" - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_rational_0_by_1", - "typeString": "int_const 0" - } - ], - "id": 631, + "condition": { + "commonType": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "id": 602, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "id": 597, + "name": "to", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 577, + "src": "5571:2:5", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "nodeType": "BinaryOperation", + "operator": "==", + "rightExpression": { + "arguments": [ + { + "hexValue": "30", + "id": 600, "isConstant": false, "isLValue": false, "isPure": true, + "kind": "number", "lValueRequested": false, - "nodeType": "ElementaryTypeNameExpression", - "src": "7632:7:2", + "nodeType": "Literal", + "src": "5585:1:5", "typeDescriptions": { - "typeIdentifier": "t_type$_t_address_$", - "typeString": "type(address)" + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" }, - "typeName": { - "id": 630, - "name": "address", - "nodeType": "ElementaryTypeName", - "src": "7632:7:2", - "typeDescriptions": {} + "value": "0" + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" } - }, - "id": 633, + ], + "id": 599, "isConstant": false, "isLValue": false, "isPure": true, - "kind": "typeConversion", "lValueRequested": false, - "nameLocations": [], - "names": [], - "nodeType": "FunctionCall", - "src": "7632:10:2", - "tryCall": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "5577:7:5", "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" + "typeIdentifier": "t_type$_t_address_$", + "typeString": "type(address)" + }, + "typeName": { + "id": 598, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "5577:7:5", + "typeDescriptions": {} } }, - { - "id": 634, - "name": "account", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 609, - "src": "7644:7:2", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - { - "id": 635, - "name": "value", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 611, - "src": "7653:5:2", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_address", - "typeString": "address" - }, - { - "typeIdentifier": "t_address", - "typeString": "address" - }, - { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - ], - "id": 629, - "name": "_update", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 606, - "src": "7624:7:2", - "typeDescriptions": { - "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$__$", - "typeString": "function (address,address,uint256)" - } - }, - "id": 636, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "nameLocations": [], - "names": [], - "nodeType": "FunctionCall", - "src": "7624:35:2", - "tryCall": false, - "typeDescriptions": { - "typeIdentifier": "t_tuple$__$", - "typeString": "tuple()" - } - }, - "id": 637, - "nodeType": "ExpressionStatement", - "src": "7624:35:2" - } - ] - }, - "documentation": { - "id": 607, - "nodeType": "StructuredDocumentation", - "src": "7121:332:2", - "text": " @dev Creates a `value` amount of tokens and assigns them to `account`, by transferring it from address(0).\n Relies on the `_update` mechanism\n Emits a {Transfer} event with `from` set to the zero address.\n NOTE: This function is not virtual, {_update} should be overridden instead." - }, - "id": 639, - "implemented": true, - "kind": "function", - "modifiers": [], - "name": "_mint", - "nameLocation": "7467:5:2", - "nodeType": "FunctionDefinition", - "parameters": { - "id": 612, - "nodeType": "ParameterList", - "parameters": [ - { - "constant": false, - "id": 609, - "mutability": "mutable", - "name": "account", - "nameLocation": "7481:7:2", - "nodeType": "VariableDeclaration", - "scope": 639, - "src": "7473:15:2", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - }, - "typeName": { - "id": 608, - "name": "address", - "nodeType": "ElementaryTypeName", - "src": "7473:7:2", - "stateMutability": "nonpayable", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "visibility": "internal" - }, - { - "constant": false, - "id": 611, - "mutability": "mutable", - "name": "value", - "nameLocation": "7498:5:2", - "nodeType": "VariableDeclaration", - "scope": 639, - "src": "7490:13:2", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "typeName": { - "id": 610, - "name": "uint256", - "nodeType": "ElementaryTypeName", - "src": "7490:7:2", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "visibility": "internal" - } - ], - "src": "7472:32:2" - }, - "returnParameters": { - "id": 613, - "nodeType": "ParameterList", - "parameters": [], - "src": "7514:0:2" - }, - "scope": 799, - "src": "7458:208:2", - "stateMutability": "nonpayable", - "virtual": false, - "visibility": "internal" - }, - { - "body": { - "id": 671, - "nodeType": "Block", - "src": "8040:150:2", - "statements": [ - { - "condition": { - "commonType": { - "typeIdentifier": "t_address", - "typeString": "address" - }, - "id": 652, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftExpression": { - "id": 647, - "name": "account", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 642, - "src": "8054:7:2", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "nodeType": "BinaryOperation", - "operator": "==", - "rightExpression": { - "arguments": [ - { - "hexValue": "30", - "id": 650, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "number", - "lValueRequested": false, - "nodeType": "Literal", - "src": "8073:1:2", - "typeDescriptions": { - "typeIdentifier": "t_rational_0_by_1", - "typeString": "int_const 0" - }, - "value": "0" - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_rational_0_by_1", - "typeString": "int_const 0" - } - ], - "id": 649, - "isConstant": false, - "isLValue": false, - "isPure": true, - "lValueRequested": false, - "nodeType": "ElementaryTypeNameExpression", - "src": "8065:7:2", - "typeDescriptions": { - "typeIdentifier": "t_type$_t_address_$", - "typeString": "type(address)" - }, - "typeName": { - "id": 648, - "name": "address", - "nodeType": "ElementaryTypeName", - "src": "8065:7:2", - "typeDescriptions": {} - } - }, - "id": 651, + "id": 601, "isConstant": false, "isLValue": false, "isPure": true, @@ -7674,26 +7021,26 @@ "nameLocations": [], "names": [], "nodeType": "FunctionCall", - "src": "8065:10:2", + "src": "5577:10:5", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, - "src": "8054:21:2", + "src": "5571:16:5", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" } }, - "id": 661, + "id": 611, "nodeType": "IfStatement", - "src": "8050:89:2", + "src": "5567:86:5", "trueBody": { - "id": 660, + "id": 610, "nodeType": "Block", - "src": "8077:62:2", + "src": "5589:64:5", "statements": [ { "errorCall": { @@ -7702,14 +7049,14 @@ "arguments": [ { "hexValue": "30", - "id": 656, + "id": 606, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", - "src": "8125:1:2", + "src": "5639:1:5", "typeDescriptions": { "typeIdentifier": "t_rational_0_by_1", "typeString": "int_const 0" @@ -7724,26 +7071,26 @@ "typeString": "int_const 0" } ], - "id": 655, + "id": 605, "isConstant": false, "isLValue": false, "isPure": true, "lValueRequested": false, "nodeType": "ElementaryTypeNameExpression", - "src": "8117:7:2", + "src": "5631:7:5", "typeDescriptions": { "typeIdentifier": "t_type$_t_address_$", "typeString": "type(address)" }, "typeName": { - "id": 654, + "id": 604, "name": "address", "nodeType": "ElementaryTypeName", - "src": "8117:7:2", + "src": "5631:7:5", "typeDescriptions": {} } }, - "id": 657, + "id": 607, "isConstant": false, "isLValue": false, "isPure": true, @@ -7752,7 +7099,7 @@ "nameLocations": [], "names": [], "nodeType": "FunctionCall", - "src": "8117:10:2", + "src": "5631:10:5", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_address", @@ -7767,18 +7114,18 @@ "typeString": "address" } ], - "id": 653, - "name": "ERC20InvalidSender", + "id": 603, + "name": "ERC20InvalidReceiver", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 164, - "src": "8098:18:2", + "referencedDeclaration": 259, + "src": "5610:20:5", "typeDescriptions": { "typeIdentifier": "t_function_error_pure$_t_address_$returns$__$", "typeString": "function (address) pure" } }, - "id": 658, + "id": 608, "isConstant": false, "isLValue": false, "isPure": false, @@ -7787,16 +7134,16 @@ "nameLocations": [], "names": [], "nodeType": "FunctionCall", - "src": "8098:30:2", + "src": "5610:32:5", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, - "id": 659, + "id": 609, "nodeType": "RevertStatement", - "src": "8091:37:2" + "src": "5603:39:5" } ] } @@ -7805,85 +7152,36 @@ "expression": { "arguments": [ { - "id": 663, - "name": "account", + "id": 613, + "name": "from", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 642, - "src": "8156:7:2", + "referencedDeclaration": 575, + "src": "5670:4:5", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, { - "arguments": [ - { - "hexValue": "30", - "id": 666, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "number", - "lValueRequested": false, - "nodeType": "Literal", - "src": "8173:1:2", - "typeDescriptions": { - "typeIdentifier": "t_rational_0_by_1", - "typeString": "int_const 0" - }, - "value": "0" - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_rational_0_by_1", - "typeString": "int_const 0" - } - ], - "id": 665, - "isConstant": false, - "isLValue": false, - "isPure": true, - "lValueRequested": false, - "nodeType": "ElementaryTypeNameExpression", - "src": "8165:7:2", - "typeDescriptions": { - "typeIdentifier": "t_type$_t_address_$", - "typeString": "type(address)" - }, - "typeName": { - "id": 664, - "name": "address", - "nodeType": "ElementaryTypeName", - "src": "8165:7:2", - "typeDescriptions": {} - } - }, - "id": 667, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "typeConversion", - "lValueRequested": false, - "nameLocations": [], - "names": [], - "nodeType": "FunctionCall", - "src": "8165:10:2", - "tryCall": false, + "id": 614, + "name": "to", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 577, + "src": "5676:2:5", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, { - "id": 668, + "id": 615, "name": "value", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 644, - "src": "8177:5:2", + "referencedDeclaration": 579, + "src": "5680:5:5", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -7905,18 +7203,18 @@ "typeString": "uint256" } ], - "id": 662, + "id": 612, "name": "_update", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 606, - "src": "8148:7:2", + "referencedDeclaration": 696, + "src": "5662:7:5", "typeDescriptions": { "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$__$", "typeString": "function (address,address,uint256)" } }, - "id": 669, + "id": 616, "isConstant": false, "isLValue": false, "isPure": false, @@ -7925,45 +7223,45 @@ "nameLocations": [], "names": [], "nodeType": "FunctionCall", - "src": "8148:35:2", + "src": "5662:24:5", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, - "id": 670, + "id": 617, "nodeType": "ExpressionStatement", - "src": "8148:35:2" + "src": "5662:24:5" } ] }, "documentation": { - "id": 640, + "id": 573, "nodeType": "StructuredDocumentation", - "src": "7672:307:2", - "text": " @dev Destroys a `value` amount of tokens from `account`, lowering the total supply.\n Relies on the `_update` mechanism.\n Emits a {Transfer} event with `to` set to the zero address.\n NOTE: This function is not virtual, {_update} should be overridden instead" + "src": "5026:362:5", + "text": " @dev Moves a `value` amount of tokens from `from` to `to`.\n This internal function is equivalent to {transfer}, and can be used to\n e.g. implement automatic token fees, slashing mechanisms, etc.\n Emits a {Transfer} event.\n NOTE: This function is not virtual, {_update} should be overridden instead." }, - "id": 672, + "id": 619, "implemented": true, "kind": "function", "modifiers": [], - "name": "_burn", - "nameLocation": "7993:5:2", + "name": "_transfer", + "nameLocation": "5402:9:5", "nodeType": "FunctionDefinition", "parameters": { - "id": 645, + "id": 580, "nodeType": "ParameterList", "parameters": [ { "constant": false, - "id": 642, + "id": 575, "mutability": "mutable", - "name": "account", - "nameLocation": "8007:7:2", + "name": "from", + "nameLocation": "5420:4:5", "nodeType": "VariableDeclaration", - "scope": 672, - "src": "7999:15:2", + "scope": 619, + "src": "5412:12:5", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -7971,10 +7269,10 @@ "typeString": "address" }, "typeName": { - "id": 641, + "id": 574, "name": "address", "nodeType": "ElementaryTypeName", - "src": "7999:7:2", + "src": "5412:7:5", "stateMutability": "nonpayable", "typeDescriptions": { "typeIdentifier": "t_address", @@ -7985,217 +7283,13 @@ }, { "constant": false, - "id": 644, + "id": 577, "mutability": "mutable", - "name": "value", - "nameLocation": "8024:5:2", + "name": "to", + "nameLocation": "5434:2:5", "nodeType": "VariableDeclaration", - "scope": 672, - "src": "8016:13:2", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "typeName": { - "id": 643, - "name": "uint256", - "nodeType": "ElementaryTypeName", - "src": "8016:7:2", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "visibility": "internal" - } - ], - "src": "7998:32:2" - }, - "returnParameters": { - "id": 646, - "nodeType": "ParameterList", - "parameters": [], - "src": "8040:0:2" - }, - "scope": 799, - "src": "7984:206:2", - "stateMutability": "nonpayable", - "virtual": false, - "visibility": "internal" - }, - { - "body": { - "id": 689, - "nodeType": "Block", - "src": "8800:54:2", - "statements": [ - { - "expression": { - "arguments": [ - { - "id": 683, - "name": "owner", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 675, - "src": "8819:5:2", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - { - "id": 684, - "name": "spender", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 677, - "src": "8826:7:2", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - { - "id": 685, - "name": "value", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 679, - "src": "8835:5:2", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - { - "hexValue": "74727565", - "id": 686, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "bool", - "lValueRequested": false, - "nodeType": "Literal", - "src": "8842:4:2", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - }, - "value": "true" - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_address", - "typeString": "address" - }, - { - "typeIdentifier": "t_address", - "typeString": "address" - }, - { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - ], - "id": 682, - "name": "_approve", - "nodeType": "Identifier", - "overloadedDeclarations": [ - 690, - 750 - ], - "referencedDeclaration": 750, - "src": "8810:8:2", - "typeDescriptions": { - "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_address_$_t_uint256_$_t_bool_$returns$__$", - "typeString": "function (address,address,uint256,bool)" - } - }, - "id": 687, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "nameLocations": [], - "names": [], - "nodeType": "FunctionCall", - "src": "8810:37:2", - "tryCall": false, - "typeDescriptions": { - "typeIdentifier": "t_tuple$__$", - "typeString": "tuple()" - } - }, - "id": 688, - "nodeType": "ExpressionStatement", - "src": "8810:37:2" - } - ] - }, - "documentation": { - "id": 673, - "nodeType": "StructuredDocumentation", - "src": "8196:525:2", - "text": " @dev Sets `value` as the allowance of `spender` over the `owner` s tokens.\n This internal function is equivalent to `approve`, and can be used to\n e.g. set automatic allowances for certain subsystems, etc.\n Emits an {Approval} event.\n Requirements:\n - `owner` cannot be the zero address.\n - `spender` cannot be the zero address.\n Overrides to this logic should be done to the variant with an additional `bool emitEvent` argument." - }, - "id": 690, - "implemented": true, - "kind": "function", - "modifiers": [], - "name": "_approve", - "nameLocation": "8735:8:2", - "nodeType": "FunctionDefinition", - "parameters": { - "id": 680, - "nodeType": "ParameterList", - "parameters": [ - { - "constant": false, - "id": 675, - "mutability": "mutable", - "name": "owner", - "nameLocation": "8752:5:2", - "nodeType": "VariableDeclaration", - "scope": 690, - "src": "8744:13:2", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - }, - "typeName": { - "id": 674, - "name": "address", - "nodeType": "ElementaryTypeName", - "src": "8744:7:2", - "stateMutability": "nonpayable", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "visibility": "internal" - }, - { - "constant": false, - "id": 677, - "mutability": "mutable", - "name": "spender", - "nameLocation": "8767:7:2", - "nodeType": "VariableDeclaration", - "scope": 690, - "src": "8759:15:2", + "scope": 619, + "src": "5426:10:5", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -8203,10 +7297,10 @@ "typeString": "address" }, "typeName": { - "id": 676, + "id": 576, "name": "address", "nodeType": "ElementaryTypeName", - "src": "8759:7:2", + "src": "5426:7:5", "stateMutability": "nonpayable", "typeDescriptions": { "typeIdentifier": "t_address", @@ -8217,13 +7311,13 @@ }, { "constant": false, - "id": 679, + "id": 579, "mutability": "mutable", "name": "value", - "nameLocation": "8784:5:2", + "nameLocation": "5446:5:5", "nodeType": "VariableDeclaration", - "scope": 690, - "src": "8776:13:2", + "scope": 619, + "src": "5438:13:5", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -8231,10 +7325,10 @@ "typeString": "uint256" }, "typeName": { - "id": 678, + "id": 578, "name": "uint256", "nodeType": "ElementaryTypeName", - "src": "8776:7:2", + "src": "5438:7:5", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -8243,25 +7337,25 @@ "visibility": "internal" } ], - "src": "8743:47:2" + "src": "5411:41:5" }, "returnParameters": { - "id": 681, + "id": 581, "nodeType": "ParameterList", "parameters": [], - "src": "8800:0:2" + "src": "5462:0:5" }, - "scope": 799, - "src": "8726:128:2", + "scope": 889, + "src": "5393:300:5", "stateMutability": "nonpayable", "virtual": false, "visibility": "internal" }, { "body": { - "id": 749, + "id": 695, "nodeType": "Block", - "src": "9799:334:2", + "src": "6083:1032:5", "statements": [ { "condition": { @@ -8269,18 +7363,18 @@ "typeIdentifier": "t_address", "typeString": "address" }, - "id": 707, + "id": 634, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": { - "id": 702, - "name": "owner", + "id": 629, + "name": "from", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 693, - "src": "9813:5:2", + "referencedDeclaration": 622, + "src": "6097:4:5", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -8292,14 +7386,14 @@ "arguments": [ { "hexValue": "30", - "id": 705, + "id": 632, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", - "src": "9830:1:2", + "src": "6113:1:5", "typeDescriptions": { "typeIdentifier": "t_rational_0_by_1", "typeString": "int_const 0" @@ -8314,26 +7408,26 @@ "typeString": "int_const 0" } ], - "id": 704, + "id": 631, "isConstant": false, "isLValue": false, "isPure": true, "lValueRequested": false, "nodeType": "ElementaryTypeNameExpression", - "src": "9822:7:2", + "src": "6105:7:5", "typeDescriptions": { "typeIdentifier": "t_type$_t_address_$", "typeString": "type(address)" }, "typeName": { - "id": 703, + "id": 630, "name": "address", "nodeType": "ElementaryTypeName", - "src": "9822:7:2", + "src": "6105:7:5", "typeDescriptions": {} } }, - "id": 706, + "id": 633, "isConstant": false, "isLValue": false, "isPure": true, @@ -8342,570 +7436,748 @@ "nameLocations": [], "names": [], "nodeType": "FunctionCall", - "src": "9822:10:2", + "src": "6105:10:5", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, - "src": "9813:19:2", + "src": "6097:18:5", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" } }, - "id": 716, - "nodeType": "IfStatement", - "src": "9809:89:2", - "trueBody": { - "id": 715, + "falseBody": { + "id": 666, "nodeType": "Block", - "src": "9834:64:2", + "src": "6271:362:5", "statements": [ { - "errorCall": { - "arguments": [ - { - "arguments": [ - { - "hexValue": "30", - "id": 711, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "number", - "lValueRequested": false, - "nodeType": "Literal", - "src": "9884:1:2", - "typeDescriptions": { - "typeIdentifier": "t_rational_0_by_1", - "typeString": "int_const 0" - }, - "value": "0" - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_rational_0_by_1", - "typeString": "int_const 0" - } - ], - "id": 710, - "isConstant": false, - "isLValue": false, - "isPure": true, - "lValueRequested": false, - "nodeType": "ElementaryTypeNameExpression", - "src": "9876:7:2", - "typeDescriptions": { - "typeIdentifier": "t_type$_t_address_$", - "typeString": "type(address)" - }, - "typeName": { - "id": 709, - "name": "address", - "nodeType": "ElementaryTypeName", - "src": "9876:7:2", - "typeDescriptions": {} - } - }, - "id": 712, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "typeConversion", - "lValueRequested": false, - "nameLocations": [], - "names": [], - "nodeType": "FunctionCall", - "src": "9876:10:2", - "tryCall": false, + "assignments": [ + 641 + ], + "declarations": [ + { + "constant": false, + "id": 641, + "mutability": "mutable", + "name": "fromBalance", + "nameLocation": "6293:11:5", + "nodeType": "VariableDeclaration", + "scope": 666, + "src": "6285:19:5", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 640, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "6285:7:5", "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" + "typeIdentifier": "t_uint256", + "typeString": "uint256" } + }, + "visibility": "internal" + } + ], + "id": 645, + "initialValue": { + "baseExpression": { + "id": 642, + "name": "_balances", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 397, + "src": "6307:9:5", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$", + "typeString": "mapping(address => uint256)" } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_address", - "typeString": "address" - } - ], - "id": 708, - "name": "ERC20InvalidApprover", + }, + "id": 644, + "indexExpression": { + "id": 643, + "name": "from", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 183, - "src": "9855:20:2", + "referencedDeclaration": 622, + "src": "6317:4:5", "typeDescriptions": { - "typeIdentifier": "t_function_error_pure$_t_address_$returns$__$", - "typeString": "function (address) pure" + "typeIdentifier": "t_address", + "typeString": "address" } }, - "id": 713, "isConstant": false, - "isLValue": false, + "isLValue": true, "isPure": false, - "kind": "functionCall", "lValueRequested": false, - "nameLocations": [], - "names": [], - "nodeType": "FunctionCall", - "src": "9855:32:2", - "tryCall": false, + "nodeType": "IndexAccess", + "src": "6307:15:5", "typeDescriptions": { - "typeIdentifier": "t_tuple$__$", - "typeString": "tuple()" + "typeIdentifier": "t_uint256", + "typeString": "uint256" } }, - "id": 714, - "nodeType": "RevertStatement", - "src": "9848:39:2" - } - ] - } - }, - { - "condition": { - "commonType": { - "typeIdentifier": "t_address", - "typeString": "address" - }, - "id": 722, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftExpression": { - "id": 717, - "name": "spender", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 695, - "src": "9911:7:2", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "nodeType": "BinaryOperation", - "operator": "==", - "rightExpression": { - "arguments": [ - { - "hexValue": "30", - "id": 720, + "nodeType": "VariableDeclarationStatement", + "src": "6285:37:5" + }, + { + "condition": { + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 648, "isConstant": false, "isLValue": false, - "isPure": true, - "kind": "number", + "isPure": false, "lValueRequested": false, - "nodeType": "Literal", - "src": "9930:1:2", - "typeDescriptions": { - "typeIdentifier": "t_rational_0_by_1", - "typeString": "int_const 0" + "leftExpression": { + "id": 646, + "name": "fromBalance", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 641, + "src": "6340:11:5", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } }, - "value": "0" - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_rational_0_by_1", - "typeString": "int_const 0" + "nodeType": "BinaryOperation", + "operator": "<", + "rightExpression": { + "id": 647, + "name": "value", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 626, + "src": "6354:5:5", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "6340:19:5", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" } - ], - "id": 719, - "isConstant": false, - "isLValue": false, - "isPure": true, - "lValueRequested": false, - "nodeType": "ElementaryTypeNameExpression", - "src": "9922:7:2", - "typeDescriptions": { - "typeIdentifier": "t_type$_t_address_$", - "typeString": "type(address)" }, - "typeName": { - "id": 718, - "name": "address", - "nodeType": "ElementaryTypeName", - "src": "9922:7:2", - "typeDescriptions": {} - } - }, - "id": 721, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "typeConversion", - "lValueRequested": false, - "nameLocations": [], - "names": [], - "nodeType": "FunctionCall", - "src": "9922:10:2", - "tryCall": false, - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "src": "9911:21:2", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - }, - "id": 731, - "nodeType": "IfStatement", - "src": "9907:90:2", - "trueBody": { - "id": 730, - "nodeType": "Block", - "src": "9934:63:2", - "statements": [ - { - "errorCall": { - "arguments": [ + "id": 656, + "nodeType": "IfStatement", + "src": "6336:115:5", + "trueBody": { + "id": 655, + "nodeType": "Block", + "src": "6361:90:5", + "statements": [ { - "arguments": [ - { - "hexValue": "30", - "id": 726, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "number", - "lValueRequested": false, - "nodeType": "Literal", - "src": "9983:1:2", - "typeDescriptions": { - "typeIdentifier": "t_rational_0_by_1", - "typeString": "int_const 0" + "errorCall": { + "arguments": [ + { + "id": 650, + "name": "from", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 622, + "src": "6411:4:5", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } }, - "value": "0" - } - ], - "expression": { - "argumentTypes": [ { - "typeIdentifier": "t_rational_0_by_1", - "typeString": "int_const 0" + "id": 651, + "name": "fromBalance", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 641, + "src": "6417:11:5", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + { + "id": 652, + "name": "value", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 626, + "src": "6430:5:5", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } } ], - "id": 725, + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "id": 649, + "name": "ERC20InsufficientBalance", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 249, + "src": "6386:24:5", + "typeDescriptions": { + "typeIdentifier": "t_function_error_pure$_t_address_$_t_uint256_$_t_uint256_$returns$__$", + "typeString": "function (address,uint256,uint256) pure" + } + }, + "id": 653, "isConstant": false, "isLValue": false, - "isPure": true, + "isPure": false, + "kind": "functionCall", "lValueRequested": false, - "nodeType": "ElementaryTypeNameExpression", - "src": "9975:7:2", + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "6386:50:5", + "tryCall": false, "typeDescriptions": { - "typeIdentifier": "t_type$_t_address_$", - "typeString": "type(address)" - }, - "typeName": { - "id": 724, - "name": "address", - "nodeType": "ElementaryTypeName", - "src": "9975:7:2", - "typeDescriptions": {} + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" } }, - "id": 727, + "id": 654, + "nodeType": "RevertStatement", + "src": "6379:57:5" + } + ] + } + }, + { + "id": 665, + "nodeType": "UncheckedBlock", + "src": "6464:159:5", + "statements": [ + { + "expression": { + "id": 663, "isConstant": false, "isLValue": false, - "isPure": true, - "kind": "typeConversion", + "isPure": false, "lValueRequested": false, - "nameLocations": [], - "names": [], - "nodeType": "FunctionCall", - "src": "9975:10:2", - "tryCall": false, - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_address", - "typeString": "address" + "leftHandSide": { + "baseExpression": { + "id": 657, + "name": "_balances", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 397, + "src": "6571:9:5", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$", + "typeString": "mapping(address => uint256)" + } + }, + "id": 659, + "indexExpression": { + "id": 658, + "name": "from", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 622, + "src": "6581:4:5", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": true, + "nodeType": "IndexAccess", + "src": "6571:15:5", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 662, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "id": 660, + "name": "fromBalance", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 641, + "src": "6589:11:5", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "-", + "rightExpression": { + "id": 661, + "name": "value", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 626, + "src": "6603:5:5", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "6589:19:5", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "6571:37:5", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" } - ], - "id": 723, - "name": "ERC20InvalidSpender", + }, + "id": 664, + "nodeType": "ExpressionStatement", + "src": "6571:37:5" + } + ] + } + ] + }, + "id": 667, + "nodeType": "IfStatement", + "src": "6093:540:5", + "trueBody": { + "id": 639, + "nodeType": "Block", + "src": "6117:148:5", + "statements": [ + { + "expression": { + "id": 637, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "id": 635, + "name": "_totalSupply", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 188, - "src": "9955:19:2", + "referencedDeclaration": 405, + "src": "6233:12:5", "typeDescriptions": { - "typeIdentifier": "t_function_error_pure$_t_address_$returns$__$", - "typeString": "function (address) pure" + "typeIdentifier": "t_uint256", + "typeString": "uint256" } }, - "id": 728, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "nameLocations": [], - "names": [], - "nodeType": "FunctionCall", - "src": "9955:31:2", - "tryCall": false, + "nodeType": "Assignment", + "operator": "+=", + "rightHandSide": { + "id": 636, + "name": "value", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 626, + "src": "6249:5:5", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "6233:21:5", "typeDescriptions": { - "typeIdentifier": "t_tuple$__$", - "typeString": "tuple()" + "typeIdentifier": "t_uint256", + "typeString": "uint256" } }, - "id": 729, - "nodeType": "RevertStatement", - "src": "9948:38:2" + "id": 638, + "nodeType": "ExpressionStatement", + "src": "6233:21:5" } ] } }, { - "expression": { - "id": 738, + "condition": { + "commonType": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "id": 673, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, - "leftHandSide": { - "baseExpression": { - "baseExpression": { - "id": 732, - "name": "_allowances", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 313, - "src": "10006:11:2", - "typeDescriptions": { - "typeIdentifier": "t_mapping$_t_address_$_t_mapping$_t_address_$_t_uint256_$_$", - "typeString": "mapping(address => mapping(address => uint256))" - } - }, - "id": 735, - "indexExpression": { - "id": 733, - "name": "owner", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 693, - "src": "10018:5:2", + "leftExpression": { + "id": 668, + "name": "to", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 624, + "src": "6647:2:5", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "nodeType": "BinaryOperation", + "operator": "==", + "rightExpression": { + "arguments": [ + { + "hexValue": "30", + "id": 671, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "6661:1:5", "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" } - }, + ], + "id": 670, "isConstant": false, - "isLValue": true, - "isPure": false, + "isLValue": false, + "isPure": true, "lValueRequested": false, - "nodeType": "IndexAccess", - "src": "10006:18:2", - "typeDescriptions": { - "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$", - "typeString": "mapping(address => uint256)" - } - }, - "id": 736, - "indexExpression": { - "id": 734, - "name": "spender", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 695, - "src": "10025:7:2", + "nodeType": "ElementaryTypeNameExpression", + "src": "6653:7:5", "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" + "typeIdentifier": "t_type$_t_address_$", + "typeString": "type(address)" + }, + "typeName": { + "id": 669, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "6653:7:5", + "typeDescriptions": {} } }, + "id": 672, "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": true, - "nodeType": "IndexAccess", - "src": "10006:27:2", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "nodeType": "Assignment", - "operator": "=", - "rightHandSide": { - "id": 737, - "name": "value", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 697, - "src": "10036:5:2", + "isLValue": false, + "isPure": true, + "kind": "typeConversion", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "6653:10:5", + "tryCall": false, "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" + "typeIdentifier": "t_address", + "typeString": "address" } }, - "src": "10006:35:2", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "id": 739, - "nodeType": "ExpressionStatement", - "src": "10006:35:2" - }, - { - "condition": { - "id": 740, - "name": "emitEvent", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 699, - "src": "10055:9:2", + "src": "6647:16:5", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" } }, - "id": 748, - "nodeType": "IfStatement", - "src": "10051:76:2", - "trueBody": { - "id": 747, + "falseBody": { + "id": 687, "nodeType": "Block", - "src": "10066:61:2", + "src": "6862:206:5", "statements": [ { - "eventCall": { - "arguments": [ - { - "id": 742, - "name": "owner", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 693, - "src": "10094:5:2", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - { - "id": 743, - "name": "spender", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 695, - "src": "10101:7:2", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - { - "id": 744, - "name": "value", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 697, - "src": "10110:5:2", + "id": 686, + "nodeType": "UncheckedBlock", + "src": "6876:182:5", + "statements": [ + { + "expression": { + "id": 684, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "baseExpression": { + "id": 680, + "name": "_balances", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 397, + "src": "7021:9:5", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$", + "typeString": "mapping(address => uint256)" + } + }, + "id": 682, + "indexExpression": { + "id": 681, + "name": "to", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 624, + "src": "7031:2:5", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": true, + "nodeType": "IndexAccess", + "src": "7021:13:5", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "Assignment", + "operator": "+=", + "rightHandSide": { + "id": 683, + "name": "value", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 626, + "src": "7038:5:5", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "7021:22:5", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_address", - "typeString": "address" + }, + "id": 685, + "nodeType": "ExpressionStatement", + "src": "7021:22:5" + } + ] + } + ] + }, + "id": 688, + "nodeType": "IfStatement", + "src": "6643:425:5", + "trueBody": { + "id": 679, + "nodeType": "Block", + "src": "6665:191:5", + "statements": [ + { + "id": 678, + "nodeType": "UncheckedBlock", + "src": "6679:167:5", + "statements": [ + { + "expression": { + "id": 676, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "id": 674, + "name": "_totalSupply", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 405, + "src": "6810:12:5", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } }, - { - "typeIdentifier": "t_address", - "typeString": "address" + "nodeType": "Assignment", + "operator": "-=", + "rightHandSide": { + "id": 675, + "name": "value", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 626, + "src": "6826:5:5", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } }, - { + "src": "6810:21:5", + "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } - ], - "id": 741, - "name": "Approval", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 820, - "src": "10085:8:2", - "typeDescriptions": { - "typeIdentifier": "t_function_event_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$__$", - "typeString": "function (address,address,uint256)" - } - }, - "id": 745, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "nameLocations": [], - "names": [], - "nodeType": "FunctionCall", - "src": "10085:31:2", - "tryCall": false, - "typeDescriptions": { - "typeIdentifier": "t_tuple$__$", - "typeString": "tuple()" + }, + "id": 677, + "nodeType": "ExpressionStatement", + "src": "6810:21:5" } - }, - "id": 746, - "nodeType": "EmitStatement", - "src": "10080:36:2" + ] } ] } + }, + { + "eventCall": { + "arguments": [ + { + "id": 690, + "name": "from", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 622, + "src": "7092:4:5", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "id": 691, + "name": "to", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 624, + "src": "7098:2:5", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "id": 692, + "name": "value", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 626, + "src": "7102:5:5", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "id": 689, + "name": "Transfer", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 901, + "src": "7083:8:5", + "typeDescriptions": { + "typeIdentifier": "t_function_event_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$__$", + "typeString": "function (address,address,uint256)" + } + }, + "id": 693, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "7083:25:5", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 694, + "nodeType": "EmitStatement", + "src": "7078:30:5" } ] }, "documentation": { - "id": 691, + "id": 620, "nodeType": "StructuredDocumentation", - "src": "8860:836:2", - "text": " @dev Variant of {_approve} with an optional flag to enable or disable the {Approval} event.\n By default (when calling {_approve}) the flag is set to true. On the other hand, approval changes made by\n `_spendAllowance` during the `transferFrom` operation set the flag to false. This saves gas by not emitting any\n `Approval` event during `transferFrom` operations.\n Anyone who wishes to continue emitting `Approval` events on the`transferFrom` operation can force the flag to\n true using the following override:\n ```solidity\n function _approve(address owner, address spender, uint256 value, bool) internal virtual override {\n super._approve(owner, spender, value, true);\n }\n ```\n Requirements are the same as {_approve}." + "src": "5699:304:5", + "text": " @dev Transfers a `value` amount of tokens from `from` to `to`, or alternatively mints (or burns) if `from`\n (or `to`) is the zero address. All customizations to transfers, mints, and burns should be done by overriding\n this function.\n Emits a {Transfer} event." }, - "id": 750, + "id": 696, "implemented": true, "kind": "function", "modifiers": [], - "name": "_approve", - "nameLocation": "9710:8:2", + "name": "_update", + "nameLocation": "6017:7:5", "nodeType": "FunctionDefinition", "parameters": { - "id": 700, + "id": 627, "nodeType": "ParameterList", "parameters": [ { "constant": false, - "id": 693, + "id": 622, "mutability": "mutable", - "name": "owner", - "nameLocation": "9727:5:2", + "name": "from", + "nameLocation": "6033:4:5", "nodeType": "VariableDeclaration", - "scope": 750, - "src": "9719:13:2", + "scope": 696, + "src": "6025:12:5", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -8913,10 +8185,10 @@ "typeString": "address" }, "typeName": { - "id": 692, + "id": 621, "name": "address", "nodeType": "ElementaryTypeName", - "src": "9719:7:2", + "src": "6025:7:5", "stateMutability": "nonpayable", "typeDescriptions": { "typeIdentifier": "t_address", @@ -8927,13 +8199,13 @@ }, { "constant": false, - "id": 695, + "id": 624, "mutability": "mutable", - "name": "spender", - "nameLocation": "9742:7:2", + "name": "to", + "nameLocation": "6047:2:5", "nodeType": "VariableDeclaration", - "scope": 750, - "src": "9734:15:2", + "scope": 696, + "src": "6039:10:5", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -8941,10 +8213,10 @@ "typeString": "address" }, "typeName": { - "id": 694, + "id": 623, "name": "address", "nodeType": "ElementaryTypeName", - "src": "9734:7:2", + "src": "6039:7:5", "stateMutability": "nonpayable", "typeDescriptions": { "typeIdentifier": "t_address", @@ -8955,13 +8227,13 @@ }, { "constant": false, - "id": 697, + "id": 626, "mutability": "mutable", "name": "value", - "nameLocation": "9759:5:2", + "nameLocation": "6059:5:5", "nodeType": "VariableDeclaration", - "scope": 750, - "src": "9751:13:2", + "scope": 696, + "src": "6051:13:5", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -8969,805 +8241,407 @@ "typeString": "uint256" }, "typeName": { - "id": 696, + "id": 625, "name": "uint256", "nodeType": "ElementaryTypeName", - "src": "9751:7:2", + "src": "6051:7:5", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, "visibility": "internal" - }, - { - "constant": false, - "id": 699, - "mutability": "mutable", - "name": "emitEvent", - "nameLocation": "9771:9:2", - "nodeType": "VariableDeclaration", - "scope": 750, - "src": "9766:14:2", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - }, - "typeName": { - "id": 698, - "name": "bool", - "nodeType": "ElementaryTypeName", - "src": "9766:4:2", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - }, - "visibility": "internal" } ], - "src": "9718:63:2" + "src": "6024:41:5" }, "returnParameters": { - "id": 701, + "id": 628, "nodeType": "ParameterList", "parameters": [], - "src": "9799:0:2" + "src": "6083:0:5" }, - "scope": 799, - "src": "9701:432:2", + "scope": 889, + "src": "6008:1107:5", "stateMutability": "nonpayable", "virtual": true, "visibility": "internal" }, { "body": { - "id": 797, + "id": 728, "nodeType": "Block", - "src": "10504:388:2", + "src": "7514:152:5", "statements": [ - { - "assignments": [ - 761 - ], - "declarations": [ - { - "constant": false, - "id": 761, - "mutability": "mutable", - "name": "currentAllowance", - "nameLocation": "10522:16:2", - "nodeType": "VariableDeclaration", - "scope": 797, - "src": "10514:24:2", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "typeName": { - "id": 760, - "name": "uint256", - "nodeType": "ElementaryTypeName", - "src": "10514:7:2", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "visibility": "internal" - } - ], - "id": 766, - "initialValue": { - "arguments": [ - { - "id": 763, - "name": "owner", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 753, - "src": "10551:5:2", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - { - "id": 764, - "name": "spender", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 755, - "src": "10558:7:2", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_address", - "typeString": "address" - }, - { - "typeIdentifier": "t_address", - "typeString": "address" - } - ], - "id": 762, - "name": "allowance", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 426, - "src": "10541:9:2", - "typeDescriptions": { - "typeIdentifier": "t_function_internal_view$_t_address_$_t_address_$returns$_t_uint256_$", - "typeString": "function (address,address) view returns (uint256)" - } - }, - "id": 765, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "nameLocations": [], - "names": [], - "nodeType": "FunctionCall", - "src": "10541:25:2", - "tryCall": false, - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "nodeType": "VariableDeclarationStatement", - "src": "10514:52:2" - }, { "condition": { "commonType": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" + "typeIdentifier": "t_address", + "typeString": "address" }, - "id": 773, + "id": 709, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": { - "id": 767, - "name": "currentAllowance", + "id": 704, + "name": "account", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 761, - "src": "10580:16:2", + "referencedDeclaration": 699, + "src": "7528:7:5", "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" + "typeIdentifier": "t_address", + "typeString": "address" } }, "nodeType": "BinaryOperation", - "operator": "!=", + "operator": "==", "rightExpression": { + "arguments": [ + { + "hexValue": "30", + "id": 707, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "7547:1:5", + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + } + ], "expression": { - "arguments": [ + "argumentTypes": [ { - "id": 770, - "isConstant": false, - "isLValue": false, - "isPure": true, - "lValueRequested": false, - "nodeType": "ElementaryTypeNameExpression", - "src": "10605:7:2", - "typeDescriptions": { - "typeIdentifier": "t_type$_t_uint256_$", - "typeString": "type(uint256)" - }, - "typeName": { - "id": 769, - "name": "uint256", - "nodeType": "ElementaryTypeName", - "src": "10605:7:2", - "typeDescriptions": {} - } + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" } ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_type$_t_uint256_$", - "typeString": "type(uint256)" - } - ], - "id": 768, - "name": "type", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": -27, - "src": "10600:4:2", - "typeDescriptions": { - "typeIdentifier": "t_function_metatype_pure$__$returns$__$", - "typeString": "function () pure" - } - }, - "id": 771, + "id": 706, "isConstant": false, "isLValue": false, "isPure": true, - "kind": "functionCall", "lValueRequested": false, - "nameLocations": [], - "names": [], - "nodeType": "FunctionCall", - "src": "10600:13:2", - "tryCall": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "7539:7:5", "typeDescriptions": { - "typeIdentifier": "t_magic_meta_type_t_uint256", - "typeString": "type(uint256)" + "typeIdentifier": "t_type$_t_address_$", + "typeString": "type(address)" + }, + "typeName": { + "id": 705, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "7539:7:5", + "typeDescriptions": {} } }, - "id": 772, + "id": 708, "isConstant": false, "isLValue": false, "isPure": true, + "kind": "typeConversion", "lValueRequested": false, - "memberLocation": "10614:3:2", - "memberName": "max", - "nodeType": "MemberAccess", - "src": "10600:17:2", + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "7539:10:5", + "tryCall": false, "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" + "typeIdentifier": "t_address", + "typeString": "address" } }, - "src": "10580:37:2", + "src": "7528:21:5", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" } }, - "id": 796, + "id": 718, "nodeType": "IfStatement", - "src": "10576:310:2", + "src": "7524:91:5", "trueBody": { - "id": 795, + "id": 717, "nodeType": "Block", - "src": "10619:267:2", + "src": "7551:64:5", "statements": [ { - "condition": { - "commonType": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "id": 776, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftExpression": { - "id": 774, - "name": "currentAllowance", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 761, - "src": "10637:16:2", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" + "errorCall": { + "arguments": [ + { + "arguments": [ + { + "hexValue": "30", + "id": 713, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "7601:1:5", + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + } + ], + "id": 712, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "7593:7:5", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_address_$", + "typeString": "type(address)" + }, + "typeName": { + "id": 711, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "7593:7:5", + "typeDescriptions": {} + } + }, + "id": 714, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "typeConversion", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "7593:10:5", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } } - }, - "nodeType": "BinaryOperation", - "operator": "<", - "rightExpression": { - "id": 775, - "name": "value", + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + } + ], + "id": 710, + "name": "ERC20InvalidReceiver", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 757, - "src": "10656:5:2", + "referencedDeclaration": 259, + "src": "7572:20:5", "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" + "typeIdentifier": "t_function_error_pure$_t_address_$returns$__$", + "typeString": "function (address) pure" } }, - "src": "10637:24:2", + "id": 715, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "7572:32:5", + "tryCall": false, "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" } }, - "id": 784, - "nodeType": "IfStatement", - "src": "10633:130:2", - "trueBody": { - "id": 783, - "nodeType": "Block", - "src": "10663:100:2", - "statements": [ - { - "errorCall": { - "arguments": [ - { - "id": 778, - "name": "spender", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 755, - "src": "10715:7:2", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - { - "id": 779, - "name": "currentAllowance", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 761, - "src": "10724:16:2", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - { - "id": 780, - "name": "value", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 757, - "src": "10742:5:2", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_address", - "typeString": "address" - }, - { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - ], - "id": 777, - "name": "ERC20InsufficientAllowance", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 178, - "src": "10688:26:2", - "typeDescriptions": { - "typeIdentifier": "t_function_error_pure$_t_address_$_t_uint256_$_t_uint256_$returns$__$", - "typeString": "function (address,uint256,uint256) pure" - } - }, - "id": 781, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "nameLocations": [], - "names": [], - "nodeType": "FunctionCall", - "src": "10688:60:2", - "tryCall": false, - "typeDescriptions": { - "typeIdentifier": "t_tuple$__$", - "typeString": "tuple()" - } - }, - "id": 782, - "nodeType": "RevertStatement", - "src": "10681:67:2" - } - ] - } - }, - { - "id": 794, - "nodeType": "UncheckedBlock", - "src": "10776:100:2", - "statements": [ - { - "expression": { - "arguments": [ - { - "id": 786, - "name": "owner", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 753, - "src": "10813:5:2", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - { - "id": 787, - "name": "spender", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 755, - "src": "10820:7:2", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - { - "commonType": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "id": 790, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftExpression": { - "id": 788, - "name": "currentAllowance", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 761, - "src": "10829:16:2", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "nodeType": "BinaryOperation", - "operator": "-", - "rightExpression": { - "id": 789, - "name": "value", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 757, - "src": "10848:5:2", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "src": "10829:24:2", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - { - "hexValue": "66616c7365", - "id": 791, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "bool", - "lValueRequested": false, - "nodeType": "Literal", - "src": "10855:5:2", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - }, - "value": "false" - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_address", - "typeString": "address" - }, - { - "typeIdentifier": "t_address", - "typeString": "address" - }, - { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - ], - "id": 785, - "name": "_approve", - "nodeType": "Identifier", - "overloadedDeclarations": [ - 690, - 750 - ], - "referencedDeclaration": 750, - "src": "10804:8:2", - "typeDescriptions": { - "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_address_$_t_uint256_$_t_bool_$returns$__$", - "typeString": "function (address,address,uint256,bool)" - } - }, - "id": 792, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "nameLocations": [], - "names": [], - "nodeType": "FunctionCall", - "src": "10804:57:2", - "tryCall": false, - "typeDescriptions": { - "typeIdentifier": "t_tuple$__$", - "typeString": "tuple()" - } - }, - "id": 793, - "nodeType": "ExpressionStatement", - "src": "10804:57:2" - } - ] + "id": 716, + "nodeType": "RevertStatement", + "src": "7565:39:5" } ] } - } - ] - }, - "documentation": { - "id": 751, - "nodeType": "StructuredDocumentation", - "src": "10139:271:2", - "text": " @dev Updates `owner` s allowance for `spender` based on spent `value`.\n Does not update the allowance value in case of infinite allowance.\n Revert if not enough allowance is available.\n Does not emit an {Approval} event." - }, - "id": 798, - "implemented": true, - "kind": "function", - "modifiers": [], - "name": "_spendAllowance", - "nameLocation": "10424:15:2", - "nodeType": "FunctionDefinition", - "parameters": { - "id": 758, - "nodeType": "ParameterList", - "parameters": [ - { - "constant": false, - "id": 753, - "mutability": "mutable", - "name": "owner", - "nameLocation": "10448:5:2", - "nodeType": "VariableDeclaration", - "scope": 798, - "src": "10440:13:2", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - }, - "typeName": { - "id": 752, - "name": "address", - "nodeType": "ElementaryTypeName", - "src": "10440:7:2", - "stateMutability": "nonpayable", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "visibility": "internal" }, { - "constant": false, - "id": 755, - "mutability": "mutable", - "name": "spender", - "nameLocation": "10463:7:2", - "nodeType": "VariableDeclaration", - "scope": 798, - "src": "10455:15:2", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - }, - "typeName": { - "id": 754, - "name": "address", - "nodeType": "ElementaryTypeName", - "src": "10455:7:2", - "stateMutability": "nonpayable", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "visibility": "internal" - }, - { - "constant": false, - "id": 757, - "mutability": "mutable", - "name": "value", - "nameLocation": "10480:5:2", - "nodeType": "VariableDeclaration", - "scope": 798, - "src": "10472:13:2", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "typeName": { - "id": 756, - "name": "uint256", - "nodeType": "ElementaryTypeName", - "src": "10472:7:2", + "expression": { + "arguments": [ + { + "arguments": [ + { + "hexValue": "30", + "id": 722, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "7640:1:5", + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + } + ], + "id": 721, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "7632:7:5", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_address_$", + "typeString": "type(address)" + }, + "typeName": { + "id": 720, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "7632:7:5", + "typeDescriptions": {} + } + }, + "id": 723, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "typeConversion", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "7632:10:5", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "id": 724, + "name": "account", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 699, + "src": "7644:7:5", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "id": 725, + "name": "value", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 701, + "src": "7653:5:5", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "id": 719, + "name": "_update", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 696, + "src": "7624:7:5", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$__$", + "typeString": "function (address,address,uint256)" + } + }, + "id": 726, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "7624:35:5", + "tryCall": false, "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" } }, - "visibility": "internal" + "id": 727, + "nodeType": "ExpressionStatement", + "src": "7624:35:5" } - ], - "src": "10439:47:2" - }, - "returnParameters": { - "id": 759, - "nodeType": "ParameterList", - "parameters": [], - "src": "10504:0:2" + ] }, - "scope": 799, - "src": "10415:477:2", - "stateMutability": "nonpayable", - "virtual": true, - "visibility": "internal" - } - ], - "scope": 800, - "src": "1106:9788:2", - "usedErrors": [ - 159, - 164, - 169, - 178, - 183, - 188 - ], - "usedEvents": [ - 811, - 820 - ] - } - ], - "src": "105:10790:2" - }, - "id": 2 - }, - "@openzeppelin/contracts/token/ERC20/IERC20.sol": { - "ast": { - "absolutePath": "@openzeppelin/contracts/token/ERC20/IERC20.sol", - "exportedSymbols": { - "IERC20": [ - 877 - ] - }, - "id": 878, - "license": "MIT", - "nodeType": "SourceUnit", - "nodes": [ - { - "id": 801, - "literals": [ - "solidity", - "^", - "0.8", - ".20" - ], - "nodeType": "PragmaDirective", - "src": "106:24:3" - }, - { - "abstract": false, - "baseContracts": [], - "canonicalName": "IERC20", - "contractDependencies": [], - "contractKind": "interface", - "documentation": { - "id": 802, - "nodeType": "StructuredDocumentation", - "src": "132:71:3", - "text": " @dev Interface of the ERC-20 standard as defined in the ERC." - }, - "fullyImplemented": false, - "id": 877, - "linearizedBaseContracts": [ - 877 - ], - "name": "IERC20", - "nameLocation": "214:6:3", - "nodeType": "ContractDefinition", - "nodes": [ - { - "anonymous": false, "documentation": { - "id": 803, + "id": 697, "nodeType": "StructuredDocumentation", - "src": "227:158:3", - "text": " @dev Emitted when `value` tokens are moved from one account (`from`) to\n another (`to`).\n Note that `value` may be zero." + "src": "7121:332:5", + "text": " @dev Creates a `value` amount of tokens and assigns them to `account`, by transferring it from address(0).\n Relies on the `_update` mechanism\n Emits a {Transfer} event with `from` set to the zero address.\n NOTE: This function is not virtual, {_update} should be overridden instead." }, - "eventSelector": "ddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef", - "id": 811, - "name": "Transfer", - "nameLocation": "396:8:3", - "nodeType": "EventDefinition", + "id": 729, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "_mint", + "nameLocation": "7467:5:5", + "nodeType": "FunctionDefinition", "parameters": { - "id": 810, + "id": 702, "nodeType": "ParameterList", "parameters": [ { "constant": false, - "id": 805, - "indexed": true, - "mutability": "mutable", - "name": "from", - "nameLocation": "421:4:3", - "nodeType": "VariableDeclaration", - "scope": 811, - "src": "405:20:3", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - }, - "typeName": { - "id": 804, - "name": "address", - "nodeType": "ElementaryTypeName", - "src": "405:7:3", - "stateMutability": "nonpayable", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "visibility": "internal" - }, - { - "constant": false, - "id": 807, - "indexed": true, + "id": 699, "mutability": "mutable", - "name": "to", - "nameLocation": "443:2:3", + "name": "account", + "nameLocation": "7481:7:5", "nodeType": "VariableDeclaration", - "scope": 811, - "src": "427:18:3", + "scope": 729, + "src": "7473:15:5", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -9775,10 +8649,10 @@ "typeString": "address" }, "typeName": { - "id": 806, + "id": 698, "name": "address", "nodeType": "ElementaryTypeName", - "src": "427:7:3", + "src": "7473:7:5", "stateMutability": "nonpayable", "typeDescriptions": { "typeIdentifier": "t_address", @@ -9789,14 +8663,13 @@ }, { "constant": false, - "id": 809, - "indexed": false, + "id": 701, "mutability": "mutable", "name": "value", - "nameLocation": "455:5:3", + "nameLocation": "7498:5:5", "nodeType": "VariableDeclaration", - "scope": 811, - "src": "447:13:3", + "scope": 729, + "src": "7490:13:5", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -9804,10 +8677,10 @@ "typeString": "uint256" }, "typeName": { - "id": 808, + "id": 700, "name": "uint256", "nodeType": "ElementaryTypeName", - "src": "447:7:3", + "src": "7490:7:5", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -9816,207 +8689,395 @@ "visibility": "internal" } ], - "src": "404:57:3" + "src": "7472:32:5" }, - "src": "390:72:3" + "returnParameters": { + "id": 703, + "nodeType": "ParameterList", + "parameters": [], + "src": "7514:0:5" + }, + "scope": 889, + "src": "7458:208:5", + "stateMutability": "nonpayable", + "virtual": false, + "visibility": "internal" }, { - "anonymous": false, - "documentation": { - "id": 812, - "nodeType": "StructuredDocumentation", - "src": "468:148:3", - "text": " @dev Emitted when the allowance of a `spender` for an `owner` is set by\n a call to {approve}. `value` is the new allowance." - }, - "eventSelector": "8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925", - "id": 820, - "name": "Approval", - "nameLocation": "627:8:3", - "nodeType": "EventDefinition", - "parameters": { - "id": 819, - "nodeType": "ParameterList", - "parameters": [ + "body": { + "id": 761, + "nodeType": "Block", + "src": "8040:150:5", + "statements": [ { - "constant": false, - "id": 814, - "indexed": true, - "mutability": "mutable", - "name": "owner", - "nameLocation": "652:5:3", - "nodeType": "VariableDeclaration", - "scope": 820, - "src": "636:21:3", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - }, - "typeName": { - "id": 813, - "name": "address", - "nodeType": "ElementaryTypeName", - "src": "636:7:3", - "stateMutability": "nonpayable", - "typeDescriptions": { + "condition": { + "commonType": { "typeIdentifier": "t_address", "typeString": "address" - } - }, - "visibility": "internal" - }, - { - "constant": false, - "id": 816, - "indexed": true, - "mutability": "mutable", - "name": "spender", - "nameLocation": "675:7:3", - "nodeType": "VariableDeclaration", - "scope": 820, - "src": "659:23:3", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - }, - "typeName": { - "id": 815, - "name": "address", - "nodeType": "ElementaryTypeName", - "src": "659:7:3", - "stateMutability": "nonpayable", + }, + "id": 742, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "id": 737, + "name": "account", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 732, + "src": "8054:7:5", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "nodeType": "BinaryOperation", + "operator": "==", + "rightExpression": { + "arguments": [ + { + "hexValue": "30", + "id": 740, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "8073:1:5", + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + } + ], + "id": 739, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "8065:7:5", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_address_$", + "typeString": "type(address)" + }, + "typeName": { + "id": 738, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "8065:7:5", + "typeDescriptions": {} + } + }, + "id": 741, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "typeConversion", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "8065:10:5", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "src": "8054:21:5", "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" + "typeIdentifier": "t_bool", + "typeString": "bool" } }, - "visibility": "internal" + "id": 751, + "nodeType": "IfStatement", + "src": "8050:89:5", + "trueBody": { + "id": 750, + "nodeType": "Block", + "src": "8077:62:5", + "statements": [ + { + "errorCall": { + "arguments": [ + { + "arguments": [ + { + "hexValue": "30", + "id": 746, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "8125:1:5", + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + } + ], + "id": 745, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "8117:7:5", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_address_$", + "typeString": "type(address)" + }, + "typeName": { + "id": 744, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "8117:7:5", + "typeDescriptions": {} + } + }, + "id": 747, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "typeConversion", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "8117:10:5", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + } + ], + "id": 743, + "name": "ERC20InvalidSender", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 254, + "src": "8098:18:5", + "typeDescriptions": { + "typeIdentifier": "t_function_error_pure$_t_address_$returns$__$", + "typeString": "function (address) pure" + } + }, + "id": 748, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "8098:30:5", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 749, + "nodeType": "RevertStatement", + "src": "8091:37:5" + } + ] + } }, { - "constant": false, - "id": 818, - "indexed": false, - "mutability": "mutable", - "name": "value", - "nameLocation": "692:5:3", - "nodeType": "VariableDeclaration", - "scope": 820, - "src": "684:13:3", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "typeName": { - "id": 817, - "name": "uint256", - "nodeType": "ElementaryTypeName", - "src": "684:7:3", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "visibility": "internal" - } - ], - "src": "635:63:3" - }, - "src": "621:78:3" - }, - { - "documentation": { - "id": 821, - "nodeType": "StructuredDocumentation", - "src": "705:65:3", - "text": " @dev Returns the value of tokens in existence." - }, - "functionSelector": "18160ddd", - "id": 826, - "implemented": false, - "kind": "function", - "modifiers": [], - "name": "totalSupply", - "nameLocation": "784:11:3", - "nodeType": "FunctionDefinition", - "parameters": { - "id": 822, - "nodeType": "ParameterList", - "parameters": [], - "src": "795:2:3" - }, - "returnParameters": { - "id": 825, - "nodeType": "ParameterList", - "parameters": [ - { - "constant": false, - "id": 824, - "mutability": "mutable", - "name": "", - "nameLocation": "-1:-1:-1", - "nodeType": "VariableDeclaration", - "scope": 826, - "src": "821:7:3", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "typeName": { - "id": 823, - "name": "uint256", - "nodeType": "ElementaryTypeName", - "src": "821:7:3", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" + "expression": { + "arguments": [ + { + "id": 753, + "name": "account", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 732, + "src": "8156:7:5", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "arguments": [ + { + "hexValue": "30", + "id": 756, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "8173:1:5", + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + } + ], + "id": 755, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "8165:7:5", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_address_$", + "typeString": "type(address)" + }, + "typeName": { + "id": 754, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "8165:7:5", + "typeDescriptions": {} + } + }, + "id": 757, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "typeConversion", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "8165:10:5", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "id": 758, + "name": "value", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 734, + "src": "8177:5:5", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "id": 752, + "name": "_update", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 696, + "src": "8148:7:5", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$__$", + "typeString": "function (address,address,uint256)" + } + }, + "id": 759, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "8148:35:5", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" } }, - "visibility": "internal" + "id": 760, + "nodeType": "ExpressionStatement", + "src": "8148:35:5" } - ], - "src": "820:9:3" + ] }, - "scope": 877, - "src": "775:55:3", - "stateMutability": "view", - "virtual": false, - "visibility": "external" - }, - { "documentation": { - "id": 827, + "id": 730, "nodeType": "StructuredDocumentation", - "src": "836:71:3", - "text": " @dev Returns the value of tokens owned by `account`." + "src": "7672:307:5", + "text": " @dev Destroys a `value` amount of tokens from `account`, lowering the total supply.\n Relies on the `_update` mechanism.\n Emits a {Transfer} event with `to` set to the zero address.\n NOTE: This function is not virtual, {_update} should be overridden instead" }, - "functionSelector": "70a08231", - "id": 834, - "implemented": false, + "id": 762, + "implemented": true, "kind": "function", "modifiers": [], - "name": "balanceOf", - "nameLocation": "921:9:3", + "name": "_burn", + "nameLocation": "7993:5:5", "nodeType": "FunctionDefinition", "parameters": { - "id": 830, + "id": 735, "nodeType": "ParameterList", "parameters": [ { "constant": false, - "id": 829, + "id": 732, "mutability": "mutable", "name": "account", - "nameLocation": "939:7:3", + "nameLocation": "8007:7:5", "nodeType": "VariableDeclaration", - "scope": 834, - "src": "931:15:3", + "scope": 762, + "src": "7999:15:5", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -10024,10 +9085,10 @@ "typeString": "address" }, "typeName": { - "id": 828, + "id": 731, "name": "address", "nodeType": "ElementaryTypeName", - "src": "931:7:3", + "src": "7999:7:5", "stateMutability": "nonpayable", "typeDescriptions": { "typeIdentifier": "t_address", @@ -10035,23 +9096,16 @@ } }, "visibility": "internal" - } - ], - "src": "930:17:3" - }, - "returnParameters": { - "id": 833, - "nodeType": "ParameterList", - "parameters": [ + }, { "constant": false, - "id": 832, + "id": 734, "mutability": "mutable", - "name": "", - "nameLocation": "-1:-1:-1", + "name": "value", + "nameLocation": "8024:5:5", "nodeType": "VariableDeclaration", - "scope": 834, - "src": "971:7:3", + "scope": 762, + "src": "8016:13:5", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -10059,10 +9113,10 @@ "typeString": "uint256" }, "typeName": { - "id": 831, + "id": 733, "name": "uint256", "nodeType": "ElementaryTypeName", - "src": "971:7:3", + "src": "8016:7:5", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -10071,42 +9125,163 @@ "visibility": "internal" } ], - "src": "970:9:3" + "src": "7998:32:5" }, - "scope": 877, - "src": "912:68:3", - "stateMutability": "view", + "returnParameters": { + "id": 736, + "nodeType": "ParameterList", + "parameters": [], + "src": "8040:0:5" + }, + "scope": 889, + "src": "7984:206:5", + "stateMutability": "nonpayable", "virtual": false, - "visibility": "external" + "visibility": "internal" }, { + "body": { + "id": 779, + "nodeType": "Block", + "src": "8800:54:5", + "statements": [ + { + "expression": { + "arguments": [ + { + "id": 773, + "name": "owner", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 765, + "src": "8819:5:5", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "id": 774, + "name": "spender", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 767, + "src": "8826:7:5", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "id": 775, + "name": "value", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 769, + "src": "8835:5:5", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + { + "hexValue": "74727565", + "id": 776, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "bool", + "lValueRequested": false, + "nodeType": "Literal", + "src": "8842:4:5", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "value": "true" + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + ], + "id": 772, + "name": "_approve", + "nodeType": "Identifier", + "overloadedDeclarations": [ + 780, + 840 + ], + "referencedDeclaration": 840, + "src": "8810:8:5", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_address_$_t_uint256_$_t_bool_$returns$__$", + "typeString": "function (address,address,uint256,bool)" + } + }, + "id": 777, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "8810:37:5", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 778, + "nodeType": "ExpressionStatement", + "src": "8810:37:5" + } + ] + }, "documentation": { - "id": 835, + "id": 763, "nodeType": "StructuredDocumentation", - "src": "986:213:3", - "text": " @dev Moves a `value` amount of tokens from the caller's account to `to`.\n Returns a boolean value indicating whether the operation succeeded.\n Emits a {Transfer} event." + "src": "8196:525:5", + "text": " @dev Sets `value` as the allowance of `spender` over the `owner` s tokens.\n This internal function is equivalent to `approve`, and can be used to\n e.g. set automatic allowances for certain subsystems, etc.\n Emits an {Approval} event.\n Requirements:\n - `owner` cannot be the zero address.\n - `spender` cannot be the zero address.\n Overrides to this logic should be done to the variant with an additional `bool emitEvent` argument." }, - "functionSelector": "a9059cbb", - "id": 844, - "implemented": false, + "id": 780, + "implemented": true, "kind": "function", "modifiers": [], - "name": "transfer", - "nameLocation": "1213:8:3", + "name": "_approve", + "nameLocation": "8735:8:5", "nodeType": "FunctionDefinition", "parameters": { - "id": 840, + "id": 770, "nodeType": "ParameterList", "parameters": [ { "constant": false, - "id": 837, + "id": 765, "mutability": "mutable", - "name": "to", - "nameLocation": "1230:2:3", + "name": "owner", + "nameLocation": "8752:5:5", "nodeType": "VariableDeclaration", - "scope": 844, - "src": "1222:10:3", + "scope": 780, + "src": "8744:13:5", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -10114,10 +9289,10 @@ "typeString": "address" }, "typeName": { - "id": 836, + "id": 764, "name": "address", "nodeType": "ElementaryTypeName", - "src": "1222:7:3", + "src": "8744:7:5", "stateMutability": "nonpayable", "typeDescriptions": { "typeIdentifier": "t_address", @@ -10128,231 +9303,24 @@ }, { "constant": false, - "id": 839, + "id": 767, "mutability": "mutable", - "name": "value", - "nameLocation": "1242:5:3", + "name": "spender", + "nameLocation": "8767:7:5", "nodeType": "VariableDeclaration", - "scope": 844, - "src": "1234:13:3", + "scope": 780, + "src": "8759:15:5", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" + "typeIdentifier": "t_address", + "typeString": "address" }, "typeName": { - "id": 838, - "name": "uint256", - "nodeType": "ElementaryTypeName", - "src": "1234:7:3", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "visibility": "internal" - } - ], - "src": "1221:27:3" - }, - "returnParameters": { - "id": 843, - "nodeType": "ParameterList", - "parameters": [ - { - "constant": false, - "id": 842, - "mutability": "mutable", - "name": "", - "nameLocation": "-1:-1:-1", - "nodeType": "VariableDeclaration", - "scope": 844, - "src": "1267:4:3", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - }, - "typeName": { - "id": 841, - "name": "bool", - "nodeType": "ElementaryTypeName", - "src": "1267:4:3", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - }, - "visibility": "internal" - } - ], - "src": "1266:6:3" - }, - "scope": 877, - "src": "1204:69:3", - "stateMutability": "nonpayable", - "virtual": false, - "visibility": "external" - }, - { - "documentation": { - "id": 845, - "nodeType": "StructuredDocumentation", - "src": "1279:264:3", - "text": " @dev Returns the remaining number of tokens that `spender` will be\n allowed to spend on behalf of `owner` through {transferFrom}. This is\n zero by default.\n This value changes when {approve} or {transferFrom} are called." - }, - "functionSelector": "dd62ed3e", - "id": 854, - "implemented": false, - "kind": "function", - "modifiers": [], - "name": "allowance", - "nameLocation": "1557:9:3", - "nodeType": "FunctionDefinition", - "parameters": { - "id": 850, - "nodeType": "ParameterList", - "parameters": [ - { - "constant": false, - "id": 847, - "mutability": "mutable", - "name": "owner", - "nameLocation": "1575:5:3", - "nodeType": "VariableDeclaration", - "scope": 854, - "src": "1567:13:3", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - }, - "typeName": { - "id": 846, - "name": "address", - "nodeType": "ElementaryTypeName", - "src": "1567:7:3", - "stateMutability": "nonpayable", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "visibility": "internal" - }, - { - "constant": false, - "id": 849, - "mutability": "mutable", - "name": "spender", - "nameLocation": "1590:7:3", - "nodeType": "VariableDeclaration", - "scope": 854, - "src": "1582:15:3", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - }, - "typeName": { - "id": 848, - "name": "address", - "nodeType": "ElementaryTypeName", - "src": "1582:7:3", - "stateMutability": "nonpayable", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "visibility": "internal" - } - ], - "src": "1566:32:3" - }, - "returnParameters": { - "id": 853, - "nodeType": "ParameterList", - "parameters": [ - { - "constant": false, - "id": 852, - "mutability": "mutable", - "name": "", - "nameLocation": "-1:-1:-1", - "nodeType": "VariableDeclaration", - "scope": 854, - "src": "1622:7:3", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "typeName": { - "id": 851, - "name": "uint256", - "nodeType": "ElementaryTypeName", - "src": "1622:7:3", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "visibility": "internal" - } - ], - "src": "1621:9:3" - }, - "scope": 877, - "src": "1548:83:3", - "stateMutability": "view", - "virtual": false, - "visibility": "external" - }, - { - "documentation": { - "id": 855, - "nodeType": "StructuredDocumentation", - "src": "1637:667:3", - "text": " @dev Sets a `value` amount of tokens as the allowance of `spender` over the\n caller's tokens.\n Returns a boolean value indicating whether the operation succeeded.\n IMPORTANT: Beware that changing an allowance with this method brings the risk\n that someone may use both the old and the new allowance by unfortunate\n transaction ordering. One possible solution to mitigate this race\n condition is to first reduce the spender's allowance to 0 and set the\n desired value afterwards:\n https://github.com/ethereum/EIPs/issues/20#issuecomment-263524729\n Emits an {Approval} event." - }, - "functionSelector": "095ea7b3", - "id": 864, - "implemented": false, - "kind": "function", - "modifiers": [], - "name": "approve", - "nameLocation": "2318:7:3", - "nodeType": "FunctionDefinition", - "parameters": { - "id": 860, - "nodeType": "ParameterList", - "parameters": [ - { - "constant": false, - "id": 857, - "mutability": "mutable", - "name": "spender", - "nameLocation": "2334:7:3", - "nodeType": "VariableDeclaration", - "scope": 864, - "src": "2326:15:3", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - }, - "typeName": { - "id": 856, + "id": 766, "name": "address", "nodeType": "ElementaryTypeName", - "src": "2326:7:3", + "src": "8759:7:5", "stateMutability": "nonpayable", "typeDescriptions": { "typeIdentifier": "t_address", @@ -10363,13 +9331,13 @@ }, { "constant": false, - "id": 859, + "id": 769, "mutability": "mutable", "name": "value", - "nameLocation": "2351:5:3", + "nameLocation": "8784:5:5", "nodeType": "VariableDeclaration", - "scope": 864, - "src": "2343:13:3", + "scope": 780, + "src": "8776:13:5", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -10377,10 +9345,10 @@ "typeString": "uint256" }, "typeName": { - "id": 858, + "id": 768, "name": "uint256", "nodeType": "ElementaryTypeName", - "src": "2343:7:3", + "src": "8776:7:5", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -10389,782 +9357,725 @@ "visibility": "internal" } ], - "src": "2325:32:3" + "src": "8743:47:5" }, "returnParameters": { - "id": 863, + "id": 771, "nodeType": "ParameterList", - "parameters": [ - { - "constant": false, - "id": 862, - "mutability": "mutable", - "name": "", - "nameLocation": "-1:-1:-1", - "nodeType": "VariableDeclaration", - "scope": 864, - "src": "2376:4:3", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - }, - "typeName": { - "id": 861, - "name": "bool", - "nodeType": "ElementaryTypeName", - "src": "2376:4:3", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - }, - "visibility": "internal" - } - ], - "src": "2375:6:3" + "parameters": [], + "src": "8800:0:5" }, - "scope": 877, - "src": "2309:73:3", + "scope": 889, + "src": "8726:128:5", "stateMutability": "nonpayable", "virtual": false, - "visibility": "external" + "visibility": "internal" }, { - "documentation": { - "id": 865, - "nodeType": "StructuredDocumentation", - "src": "2388:297:3", - "text": " @dev Moves a `value` amount of tokens from `from` to `to` using the\n allowance mechanism. `value` is then deducted from the caller's\n allowance.\n Returns a boolean value indicating whether the operation succeeded.\n Emits a {Transfer} event." - }, - "functionSelector": "23b872dd", - "id": 876, - "implemented": false, - "kind": "function", - "modifiers": [], - "name": "transferFrom", - "nameLocation": "2699:12:3", - "nodeType": "FunctionDefinition", - "parameters": { - "id": 872, - "nodeType": "ParameterList", - "parameters": [ - { - "constant": false, - "id": 867, - "mutability": "mutable", - "name": "from", - "nameLocation": "2720:4:3", - "nodeType": "VariableDeclaration", - "scope": 876, - "src": "2712:12:3", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - }, - "typeName": { - "id": 866, - "name": "address", - "nodeType": "ElementaryTypeName", - "src": "2712:7:3", - "stateMutability": "nonpayable", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "visibility": "internal" - }, + "body": { + "id": 839, + "nodeType": "Block", + "src": "9799:334:5", + "statements": [ { - "constant": false, - "id": 869, - "mutability": "mutable", - "name": "to", - "nameLocation": "2734:2:3", - "nodeType": "VariableDeclaration", - "scope": 876, - "src": "2726:10:3", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - }, - "typeName": { - "id": 868, - "name": "address", - "nodeType": "ElementaryTypeName", - "src": "2726:7:3", - "stateMutability": "nonpayable", - "typeDescriptions": { + "condition": { + "commonType": { "typeIdentifier": "t_address", "typeString": "address" - } - }, - "visibility": "internal" - }, - { - "constant": false, - "id": 871, - "mutability": "mutable", - "name": "value", - "nameLocation": "2746:5:3", - "nodeType": "VariableDeclaration", - "scope": 876, - "src": "2738:13:3", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "typeName": { - "id": 870, - "name": "uint256", - "nodeType": "ElementaryTypeName", - "src": "2738:7:3", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "visibility": "internal" - } - ], - "src": "2711:41:3" - }, - "returnParameters": { - "id": 875, - "nodeType": "ParameterList", - "parameters": [ - { - "constant": false, - "id": 874, - "mutability": "mutable", - "name": "", - "nameLocation": "-1:-1:-1", - "nodeType": "VariableDeclaration", - "scope": 876, - "src": "2771:4:3", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - }, - "typeName": { - "id": 873, - "name": "bool", - "nodeType": "ElementaryTypeName", - "src": "2771:4:3", + }, + "id": 797, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "id": 792, + "name": "owner", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 783, + "src": "9813:5:5", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "nodeType": "BinaryOperation", + "operator": "==", + "rightExpression": { + "arguments": [ + { + "hexValue": "30", + "id": 795, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "9830:1:5", + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + } + ], + "id": 794, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "9822:7:5", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_address_$", + "typeString": "type(address)" + }, + "typeName": { + "id": 793, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "9822:7:5", + "typeDescriptions": {} + } + }, + "id": 796, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "typeConversion", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "9822:10:5", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "src": "9813:19:5", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" } }, - "visibility": "internal" - } - ], - "src": "2770:6:3" - }, - "scope": 877, - "src": "2690:87:3", - "stateMutability": "nonpayable", - "virtual": false, - "visibility": "external" - } - ], - "scope": 878, - "src": "204:2575:3", - "usedErrors": [], - "usedEvents": [ - 811, - 820 - ] - } - ], - "src": "106:2674:3" - }, - "id": 3 - }, - "@openzeppelin/contracts/token/ERC20/extensions/IERC20Metadata.sol": { - "ast": { - "absolutePath": "@openzeppelin/contracts/token/ERC20/extensions/IERC20Metadata.sol", - "exportedSymbols": { - "IERC20": [ - 877 - ], - "IERC20Metadata": [ - 903 - ] - }, - "id": 904, - "license": "MIT", - "nodeType": "SourceUnit", - "nodes": [ - { - "id": 879, - "literals": [ - "solidity", - "^", - "0.8", - ".20" - ], - "nodeType": "PragmaDirective", - "src": "125:24:4" - }, - { - "absolutePath": "@openzeppelin/contracts/token/ERC20/IERC20.sol", - "file": "../IERC20.sol", - "id": 881, - "nameLocation": "-1:-1:-1", - "nodeType": "ImportDirective", - "scope": 904, - "sourceUnit": 878, - "src": "151:37:4", - "symbolAliases": [ - { - "foreign": { - "id": 880, - "name": "IERC20", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 877, - "src": "159:6:4", - "typeDescriptions": {} - }, - "nameLocation": "-1:-1:-1" - } - ], - "unitAlias": "" - }, - { - "abstract": false, - "baseContracts": [ - { - "baseName": { - "id": 883, - "name": "IERC20", - "nameLocations": [ - "306:6:4" - ], - "nodeType": "IdentifierPath", - "referencedDeclaration": 877, - "src": "306:6:4" - }, - "id": 884, - "nodeType": "InheritanceSpecifier", - "src": "306:6:4" - } - ], - "canonicalName": "IERC20Metadata", - "contractDependencies": [], - "contractKind": "interface", - "documentation": { - "id": 882, - "nodeType": "StructuredDocumentation", - "src": "190:87:4", - "text": " @dev Interface for the optional metadata functions from the ERC-20 standard." - }, - "fullyImplemented": false, - "id": 903, - "linearizedBaseContracts": [ - 903, - 877 - ], - "name": "IERC20Metadata", - "nameLocation": "288:14:4", - "nodeType": "ContractDefinition", - "nodes": [ - { - "documentation": { - "id": 885, - "nodeType": "StructuredDocumentation", - "src": "319:54:4", - "text": " @dev Returns the name of the token." - }, - "functionSelector": "06fdde03", - "id": 890, - "implemented": false, - "kind": "function", - "modifiers": [], - "name": "name", - "nameLocation": "387:4:4", - "nodeType": "FunctionDefinition", - "parameters": { - "id": 886, - "nodeType": "ParameterList", - "parameters": [], - "src": "391:2:4" - }, - "returnParameters": { - "id": 889, - "nodeType": "ParameterList", - "parameters": [ - { - "constant": false, - "id": 888, - "mutability": "mutable", - "name": "", - "nameLocation": "-1:-1:-1", - "nodeType": "VariableDeclaration", - "scope": 890, - "src": "417:13:4", - "stateVariable": false, - "storageLocation": "memory", - "typeDescriptions": { - "typeIdentifier": "t_string_memory_ptr", - "typeString": "string" - }, - "typeName": { - "id": 887, - "name": "string", - "nodeType": "ElementaryTypeName", - "src": "417:6:4", - "typeDescriptions": { - "typeIdentifier": "t_string_storage_ptr", - "typeString": "string" - } - }, - "visibility": "internal" - } - ], - "src": "416:15:4" - }, - "scope": 903, - "src": "378:54:4", - "stateMutability": "view", - "virtual": false, - "visibility": "external" - }, - { - "documentation": { - "id": 891, - "nodeType": "StructuredDocumentation", - "src": "438:56:4", - "text": " @dev Returns the symbol of the token." - }, - "functionSelector": "95d89b41", - "id": 896, - "implemented": false, - "kind": "function", - "modifiers": [], - "name": "symbol", - "nameLocation": "508:6:4", - "nodeType": "FunctionDefinition", - "parameters": { - "id": 892, - "nodeType": "ParameterList", - "parameters": [], - "src": "514:2:4" - }, - "returnParameters": { - "id": 895, - "nodeType": "ParameterList", - "parameters": [ - { - "constant": false, - "id": 894, - "mutability": "mutable", - "name": "", - "nameLocation": "-1:-1:-1", - "nodeType": "VariableDeclaration", - "scope": 896, - "src": "540:13:4", - "stateVariable": false, - "storageLocation": "memory", - "typeDescriptions": { - "typeIdentifier": "t_string_memory_ptr", - "typeString": "string" - }, - "typeName": { - "id": 893, - "name": "string", - "nodeType": "ElementaryTypeName", - "src": "540:6:4", - "typeDescriptions": { - "typeIdentifier": "t_string_storage_ptr", - "typeString": "string" - } - }, - "visibility": "internal" - } - ], - "src": "539:15:4" - }, - "scope": 903, - "src": "499:56:4", - "stateMutability": "view", - "virtual": false, - "visibility": "external" - }, - { - "documentation": { - "id": 897, - "nodeType": "StructuredDocumentation", - "src": "561:65:4", - "text": " @dev Returns the decimals places of the token." - }, - "functionSelector": "313ce567", - "id": 902, - "implemented": false, - "kind": "function", - "modifiers": [], - "name": "decimals", - "nameLocation": "640:8:4", - "nodeType": "FunctionDefinition", - "parameters": { - "id": 898, - "nodeType": "ParameterList", - "parameters": [], - "src": "648:2:4" - }, - "returnParameters": { - "id": 901, - "nodeType": "ParameterList", - "parameters": [ - { - "constant": false, - "id": 900, - "mutability": "mutable", - "name": "", - "nameLocation": "-1:-1:-1", - "nodeType": "VariableDeclaration", - "scope": 902, - "src": "674:5:4", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_uint8", - "typeString": "uint8" - }, - "typeName": { - "id": 899, - "name": "uint8", - "nodeType": "ElementaryTypeName", - "src": "674:5:4", - "typeDescriptions": { - "typeIdentifier": "t_uint8", - "typeString": "uint8" - } - }, - "visibility": "internal" - } - ], - "src": "673:7:4" - }, - "scope": 903, - "src": "631:50:4", - "stateMutability": "view", - "virtual": false, - "visibility": "external" - } - ], - "scope": 904, - "src": "278:405:4", - "usedErrors": [], - "usedEvents": [ - 811, - 820 - ] - } - ], - "src": "125:559:4" - }, - "id": 4 - }, - "@openzeppelin/contracts/utils/Context.sol": { - "ast": { - "absolutePath": "@openzeppelin/contracts/utils/Context.sol", - "exportedSymbols": { - "Context": [ - 933 - ] - }, - "id": 934, - "license": "MIT", - "nodeType": "SourceUnit", - "nodes": [ - { - "id": 905, - "literals": [ - "solidity", - "^", - "0.8", - ".20" - ], - "nodeType": "PragmaDirective", - "src": "101:24:5" - }, - { - "abstract": true, - "baseContracts": [], - "canonicalName": "Context", - "contractDependencies": [], - "contractKind": "contract", - "documentation": { - "id": 906, - "nodeType": "StructuredDocumentation", - "src": "127:496:5", - "text": " @dev Provides information about the current execution context, including the\n sender of the transaction and its data. While these are generally available\n via msg.sender and msg.data, they should not be accessed in such a direct\n manner, since when dealing with meta-transactions the account sending and\n paying for execution may not be the actual sender (as far as an application\n is concerned).\n This contract is only required for intermediate, library-like contracts." - }, - "fullyImplemented": true, - "id": 933, - "linearizedBaseContracts": [ - 933 - ], - "name": "Context", - "nameLocation": "642:7:5", - "nodeType": "ContractDefinition", - "nodes": [ - { - "body": { - "id": 914, - "nodeType": "Block", - "src": "718:34:5", - "statements": [ - { - "expression": { - "expression": { - "id": 911, - "name": "msg", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": -15, - "src": "735:3:5", - "typeDescriptions": { - "typeIdentifier": "t_magic_message", - "typeString": "msg" + "id": 806, + "nodeType": "IfStatement", + "src": "9809:89:5", + "trueBody": { + "id": 805, + "nodeType": "Block", + "src": "9834:64:5", + "statements": [ + { + "errorCall": { + "arguments": [ + { + "arguments": [ + { + "hexValue": "30", + "id": 801, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "9884:1:5", + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + } + ], + "id": 800, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "9876:7:5", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_address_$", + "typeString": "type(address)" + }, + "typeName": { + "id": 799, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "9876:7:5", + "typeDescriptions": {} + } + }, + "id": 802, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "typeConversion", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "9876:10:5", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + } + ], + "id": 798, + "name": "ERC20InvalidApprover", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 273, + "src": "9855:20:5", + "typeDescriptions": { + "typeIdentifier": "t_function_error_pure$_t_address_$returns$__$", + "typeString": "function (address) pure" + } + }, + "id": 803, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "9855:32:5", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 804, + "nodeType": "RevertStatement", + "src": "9848:39:5" } + ] + } + }, + { + "condition": { + "commonType": { + "typeIdentifier": "t_address", + "typeString": "address" }, - "id": 912, + "id": 812, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, - "memberLocation": "739:6:5", - "memberName": "sender", - "nodeType": "MemberAccess", - "src": "735:10:5", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "functionReturnParameters": 910, - "id": 913, - "nodeType": "Return", - "src": "728:17:5" - } - ] - }, - "id": 915, - "implemented": true, - "kind": "function", - "modifiers": [], - "name": "_msgSender", - "nameLocation": "665:10:5", - "nodeType": "FunctionDefinition", - "parameters": { - "id": 907, - "nodeType": "ParameterList", - "parameters": [], - "src": "675:2:5" - }, - "returnParameters": { - "id": 910, - "nodeType": "ParameterList", - "parameters": [ - { - "constant": false, - "id": 909, - "mutability": "mutable", - "name": "", - "nameLocation": "-1:-1:-1", - "nodeType": "VariableDeclaration", - "scope": 915, - "src": "709:7:5", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - }, - "typeName": { - "id": 908, - "name": "address", - "nodeType": "ElementaryTypeName", - "src": "709:7:5", - "stateMutability": "nonpayable", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "visibility": "internal" - } - ], - "src": "708:9:5" - }, - "scope": 933, - "src": "656:96:5", - "stateMutability": "view", - "virtual": true, - "visibility": "internal" - }, - { - "body": { - "id": 923, - "nodeType": "Block", - "src": "825:32:5", - "statements": [ - { - "expression": { - "expression": { - "id": 920, - "name": "msg", + "leftExpression": { + "id": 807, + "name": "spender", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": -15, - "src": "842:3:5", + "referencedDeclaration": 785, + "src": "9911:7:5", "typeDescriptions": { - "typeIdentifier": "t_magic_message", - "typeString": "msg" + "typeIdentifier": "t_address", + "typeString": "address" } }, - "id": 921, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "memberLocation": "846:4:5", - "memberName": "data", - "nodeType": "MemberAccess", - "src": "842:8:5", - "typeDescriptions": { - "typeIdentifier": "t_bytes_calldata_ptr", - "typeString": "bytes calldata" - } - }, - "functionReturnParameters": 919, - "id": 922, - "nodeType": "Return", - "src": "835:15:5" - } - ] - }, - "id": 924, - "implemented": true, - "kind": "function", - "modifiers": [], - "name": "_msgData", - "nameLocation": "767:8:5", - "nodeType": "FunctionDefinition", - "parameters": { - "id": 916, - "nodeType": "ParameterList", - "parameters": [], - "src": "775:2:5" - }, - "returnParameters": { - "id": 919, - "nodeType": "ParameterList", - "parameters": [ - { - "constant": false, - "id": 918, - "mutability": "mutable", - "name": "", - "nameLocation": "-1:-1:-1", - "nodeType": "VariableDeclaration", - "scope": 924, - "src": "809:14:5", - "stateVariable": false, - "storageLocation": "calldata", - "typeDescriptions": { - "typeIdentifier": "t_bytes_calldata_ptr", - "typeString": "bytes" - }, - "typeName": { - "id": 917, - "name": "bytes", - "nodeType": "ElementaryTypeName", - "src": "809:5:5", + "nodeType": "BinaryOperation", + "operator": "==", + "rightExpression": { + "arguments": [ + { + "hexValue": "30", + "id": 810, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "9930:1:5", + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + } + ], + "id": 809, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "9922:7:5", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_address_$", + "typeString": "type(address)" + }, + "typeName": { + "id": 808, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "9922:7:5", + "typeDescriptions": {} + } + }, + "id": 811, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "typeConversion", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "9922:10:5", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "src": "9911:21:5", "typeDescriptions": { - "typeIdentifier": "t_bytes_storage_ptr", - "typeString": "bytes" + "typeIdentifier": "t_bool", + "typeString": "bool" } }, - "visibility": "internal" - } - ], - "src": "808:16:5" - }, - "scope": 933, - "src": "758:99:5", - "stateMutability": "view", - "virtual": true, - "visibility": "internal" - }, - { - "body": { - "id": 931, - "nodeType": "Block", - "src": "935:25:5", - "statements": [ + "id": 821, + "nodeType": "IfStatement", + "src": "9907:90:5", + "trueBody": { + "id": 820, + "nodeType": "Block", + "src": "9934:63:5", + "statements": [ + { + "errorCall": { + "arguments": [ + { + "arguments": [ + { + "hexValue": "30", + "id": 816, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "9983:1:5", + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + } + ], + "id": 815, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "9975:7:5", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_address_$", + "typeString": "type(address)" + }, + "typeName": { + "id": 814, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "9975:7:5", + "typeDescriptions": {} + } + }, + "id": 817, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "typeConversion", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "9975:10:5", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + } + ], + "id": 813, + "name": "ERC20InvalidSpender", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 278, + "src": "9955:19:5", + "typeDescriptions": { + "typeIdentifier": "t_function_error_pure$_t_address_$returns$__$", + "typeString": "function (address) pure" + } + }, + "id": 818, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "9955:31:5", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 819, + "nodeType": "RevertStatement", + "src": "9948:38:5" + } + ] + } + }, { "expression": { - "hexValue": "30", - "id": 929, + "id": 828, "isConstant": false, "isLValue": false, - "isPure": true, - "kind": "number", + "isPure": false, "lValueRequested": false, - "nodeType": "Literal", - "src": "952:1:5", - "typeDescriptions": { - "typeIdentifier": "t_rational_0_by_1", - "typeString": "int_const 0" - }, - "value": "0" + "leftHandSide": { + "baseExpression": { + "baseExpression": { + "id": 822, + "name": "_allowances", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 403, + "src": "10006:11:5", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_address_$_t_mapping$_t_address_$_t_uint256_$_$", + "typeString": "mapping(address => mapping(address => uint256))" + } + }, + "id": 825, + "indexExpression": { + "id": 823, + "name": "owner", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 783, + "src": "10018:5:5", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "10006:18:5", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$", + "typeString": "mapping(address => uint256)" + } + }, + "id": 826, + "indexExpression": { + "id": 824, + "name": "spender", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 785, + "src": "10025:7:5", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": true, + "nodeType": "IndexAccess", + "src": "10006:27:5", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "id": 827, + "name": "value", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 787, + "src": "10036:5:5", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "10006:35:5", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } }, - "functionReturnParameters": 928, - "id": 930, - "nodeType": "Return", - "src": "945:8:5" + "id": 829, + "nodeType": "ExpressionStatement", + "src": "10006:35:5" + }, + { + "condition": { + "id": 830, + "name": "emitEvent", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 789, + "src": "10055:9:5", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "id": 838, + "nodeType": "IfStatement", + "src": "10051:76:5", + "trueBody": { + "id": 837, + "nodeType": "Block", + "src": "10066:61:5", + "statements": [ + { + "eventCall": { + "arguments": [ + { + "id": 832, + "name": "owner", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 783, + "src": "10094:5:5", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "id": 833, + "name": "spender", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 785, + "src": "10101:7:5", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "id": 834, + "name": "value", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 787, + "src": "10110:5:5", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "id": 831, + "name": "Approval", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 910, + "src": "10085:8:5", + "typeDescriptions": { + "typeIdentifier": "t_function_event_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$__$", + "typeString": "function (address,address,uint256)" + } + }, + "id": 835, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "10085:31:5", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 836, + "nodeType": "EmitStatement", + "src": "10080:36:5" + } + ] + } } ] }, - "id": 932, + "documentation": { + "id": 781, + "nodeType": "StructuredDocumentation", + "src": "8860:836:5", + "text": " @dev Variant of {_approve} with an optional flag to enable or disable the {Approval} event.\n By default (when calling {_approve}) the flag is set to true. On the other hand, approval changes made by\n `_spendAllowance` during the `transferFrom` operation set the flag to false. This saves gas by not emitting any\n `Approval` event during `transferFrom` operations.\n Anyone who wishes to continue emitting `Approval` events on the`transferFrom` operation can force the flag to\n true using the following override:\n ```solidity\n function _approve(address owner, address spender, uint256 value, bool) internal virtual override {\n super._approve(owner, spender, value, true);\n }\n ```\n Requirements are the same as {_approve}." + }, + "id": 840, "implemented": true, "kind": "function", "modifiers": [], - "name": "_contextSuffixLength", - "nameLocation": "872:20:5", + "name": "_approve", + "nameLocation": "9710:8:5", "nodeType": "FunctionDefinition", "parameters": { - "id": 925, - "nodeType": "ParameterList", - "parameters": [], - "src": "892:2:5" - }, - "returnParameters": { - "id": 928, + "id": 790, "nodeType": "ParameterList", "parameters": [ { "constant": false, - "id": 927, + "id": 783, "mutability": "mutable", - "name": "", - "nameLocation": "-1:-1:-1", + "name": "owner", + "nameLocation": "9727:5:5", + "nodeType": "VariableDeclaration", + "scope": 840, + "src": "9719:13:5", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 782, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "9719:7:5", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 785, + "mutability": "mutable", + "name": "spender", + "nameLocation": "9742:7:5", "nodeType": "VariableDeclaration", - "scope": 932, - "src": "926:7:5", + "scope": 840, + "src": "9734:15:5", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 784, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "9734:7:5", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 787, + "mutability": "mutable", + "name": "value", + "nameLocation": "9759:5:5", + "nodeType": "VariableDeclaration", + "scope": 840, + "src": "9751:13:5", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -11172,404 +10083,149 @@ "typeString": "uint256" }, "typeName": { - "id": 926, + "id": 786, "name": "uint256", "nodeType": "ElementaryTypeName", - "src": "926:7:5", + "src": "9751:7:5", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, "visibility": "internal" + }, + { + "constant": false, + "id": 789, + "mutability": "mutable", + "name": "emitEvent", + "nameLocation": "9771:9:5", + "nodeType": "VariableDeclaration", + "scope": 840, + "src": "9766:14:5", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "typeName": { + "id": 788, + "name": "bool", + "nodeType": "ElementaryTypeName", + "src": "9766:4:5", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "visibility": "internal" } ], - "src": "925:9:5" + "src": "9718:63:5" }, - "scope": 933, - "src": "863:97:5", - "stateMutability": "view", + "returnParameters": { + "id": 791, + "nodeType": "ParameterList", + "parameters": [], + "src": "9799:0:5" + }, + "scope": 889, + "src": "9701:432:5", + "stateMutability": "nonpayable", "virtual": true, "visibility": "internal" - } - ], - "scope": 934, - "src": "624:338:5", - "usedErrors": [], - "usedEvents": [] - } - ], - "src": "101:862:5" - }, - "id": 5 - }, - "@openzeppelin/contracts/utils/Pausable.sol": { - "ast": { - "absolutePath": "@openzeppelin/contracts/utils/Pausable.sol", - "exportedSymbols": { - "Context": [ - 933 - ], - "Pausable": [ - 1050 - ] - }, - "id": 1051, - "license": "MIT", - "nodeType": "SourceUnit", - "nodes": [ - { - "id": 935, - "literals": [ - "solidity", - "^", - "0.8", - ".20" - ], - "nodeType": "PragmaDirective", - "src": "102:24:6" - }, - { - "absolutePath": "@openzeppelin/contracts/utils/Context.sol", - "file": "../utils/Context.sol", - "id": 937, - "nameLocation": "-1:-1:-1", - "nodeType": "ImportDirective", - "scope": 1051, - "sourceUnit": 934, - "src": "128:45:6", - "symbolAliases": [ - { - "foreign": { - "id": 936, - "name": "Context", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 933, - "src": "136:7:6", - "typeDescriptions": {} - }, - "nameLocation": "-1:-1:-1" - } - ], - "unitAlias": "" - }, - { - "abstract": true, - "baseContracts": [ - { - "baseName": { - "id": 939, - "name": "Context", - "nameLocations": [ - "645:7:6" - ], - "nodeType": "IdentifierPath", - "referencedDeclaration": 933, - "src": "645:7:6" - }, - "id": 940, - "nodeType": "InheritanceSpecifier", - "src": "645:7:6" - } - ], - "canonicalName": "Pausable", - "contractDependencies": [], - "contractKind": "contract", - "documentation": { - "id": 938, - "nodeType": "StructuredDocumentation", - "src": "175:439:6", - "text": " @dev Contract module which allows children to implement an emergency stop\n mechanism that can be triggered by an authorized account.\n This module is used through inheritance. It will make available the\n modifiers `whenNotPaused` and `whenPaused`, which can be applied to\n the functions of your contract. Note that they will not be pausable by\n simply including this module, only once the modifiers are put in place." - }, - "fullyImplemented": true, - "id": 1050, - "linearizedBaseContracts": [ - 1050, - 933 - ], - "name": "Pausable", - "nameLocation": "633:8:6", - "nodeType": "ContractDefinition", - "nodes": [ - { - "constant": false, - "id": 942, - "mutability": "mutable", - "name": "_paused", - "nameLocation": "672:7:6", - "nodeType": "VariableDeclaration", - "scope": 1050, - "src": "659:20:6", - "stateVariable": true, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - }, - "typeName": { - "id": 941, - "name": "bool", - "nodeType": "ElementaryTypeName", - "src": "659:4:6", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - }, - "visibility": "private" - }, - { - "anonymous": false, - "documentation": { - "id": 943, - "nodeType": "StructuredDocumentation", - "src": "686:73:6", - "text": " @dev Emitted when the pause is triggered by `account`." - }, - "eventSelector": "62e78cea01bee320cd4e420270b5ea74000d11b0c9f74754ebdbfc544b05a258", - "id": 947, - "name": "Paused", - "nameLocation": "770:6:6", - "nodeType": "EventDefinition", - "parameters": { - "id": 946, - "nodeType": "ParameterList", - "parameters": [ - { - "constant": false, - "id": 945, - "indexed": false, - "mutability": "mutable", - "name": "account", - "nameLocation": "785:7:6", - "nodeType": "VariableDeclaration", - "scope": 947, - "src": "777:15:6", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - }, - "typeName": { - "id": 944, - "name": "address", - "nodeType": "ElementaryTypeName", - "src": "777:7:6", - "stateMutability": "nonpayable", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "visibility": "internal" - } - ], - "src": "776:17:6" - }, - "src": "764:30:6" - }, - { - "anonymous": false, - "documentation": { - "id": 948, - "nodeType": "StructuredDocumentation", - "src": "800:70:6", - "text": " @dev Emitted when the pause is lifted by `account`." - }, - "eventSelector": "5db9ee0a495bf2e6ff9c91a7834c1ba4fdd244a5e8aa4e537bd38aeae4b073aa", - "id": 952, - "name": "Unpaused", - "nameLocation": "881:8:6", - "nodeType": "EventDefinition", - "parameters": { - "id": 951, - "nodeType": "ParameterList", - "parameters": [ - { - "constant": false, - "id": 950, - "indexed": false, - "mutability": "mutable", - "name": "account", - "nameLocation": "898:7:6", - "nodeType": "VariableDeclaration", - "scope": 952, - "src": "890:15:6", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - }, - "typeName": { - "id": 949, - "name": "address", - "nodeType": "ElementaryTypeName", - "src": "890:7:6", - "stateMutability": "nonpayable", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "visibility": "internal" - } - ], - "src": "889:17:6" - }, - "src": "875:32:6" - }, - { - "documentation": { - "id": 953, - "nodeType": "StructuredDocumentation", - "src": "913:76:6", - "text": " @dev The operation failed because the contract is paused." - }, - "errorSelector": "d93c0665", - "id": 955, - "name": "EnforcedPause", - "nameLocation": "1000:13:6", - "nodeType": "ErrorDefinition", - "parameters": { - "id": 954, - "nodeType": "ParameterList", - "parameters": [], - "src": "1013:2:6" - }, - "src": "994:22:6" - }, - { - "documentation": { - "id": 956, - "nodeType": "StructuredDocumentation", - "src": "1022:80:6", - "text": " @dev The operation failed because the contract is not paused." - }, - "errorSelector": "8dfc202b", - "id": 958, - "name": "ExpectedPause", - "nameLocation": "1113:13:6", - "nodeType": "ErrorDefinition", - "parameters": { - "id": 957, - "nodeType": "ParameterList", - "parameters": [], - "src": "1126:2:6" - }, - "src": "1107:22:6" }, { "body": { - "id": 966, + "id": 887, "nodeType": "Block", - "src": "1221:32:6", + "src": "10504:388:5", "statements": [ { - "expression": { - "id": 964, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftHandSide": { - "id": 962, - "name": "_paused", + "assignments": [ + 851 + ], + "declarations": [ + { + "constant": false, + "id": 851, + "mutability": "mutable", + "name": "currentAllowance", + "nameLocation": "10522:16:5", + "nodeType": "VariableDeclaration", + "scope": 887, + "src": "10514:24:5", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 850, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "10514:7:5", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "id": 856, + "initialValue": { + "arguments": [ + { + "id": 853, + "name": "owner", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 843, + "src": "10551:5:5", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "id": 854, + "name": "spender", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 845, + "src": "10558:7:5", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_address", + "typeString": "address" + } + ], + "id": 852, + "name": "allowance", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 942, - "src": "1231:7:6", + "referencedDeclaration": 516, + "src": "10541:9:5", "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" + "typeIdentifier": "t_function_internal_view$_t_address_$_t_address_$returns$_t_uint256_$", + "typeString": "function (address,address) view returns (uint256)" } }, - "nodeType": "Assignment", - "operator": "=", - "rightHandSide": { - "hexValue": "66616c7365", - "id": 963, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "bool", - "lValueRequested": false, - "nodeType": "Literal", - "src": "1241:5:6", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - }, - "value": "false" - }, - "src": "1231:15:6", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - }, - "id": 965, - "nodeType": "ExpressionStatement", - "src": "1231:15:6" - } - ] - }, - "documentation": { - "id": 959, - "nodeType": "StructuredDocumentation", - "src": "1135:67:6", - "text": " @dev Initializes the contract in unpaused state." - }, - "id": 967, - "implemented": true, - "kind": "constructor", - "modifiers": [], - "name": "", - "nameLocation": "-1:-1:-1", - "nodeType": "FunctionDefinition", - "parameters": { - "id": 960, - "nodeType": "ParameterList", - "parameters": [], - "src": "1218:2:6" - }, - "returnParameters": { - "id": 961, - "nodeType": "ParameterList", - "parameters": [], - "src": "1221:0:6" - }, - "scope": 1050, - "src": "1207:46:6", - "stateMutability": "nonpayable", - "virtual": false, - "visibility": "internal" - }, - { - "body": { - "id": 974, - "nodeType": "Block", - "src": "1464:47:6", - "statements": [ - { - "expression": { - "arguments": [], - "expression": { - "argumentTypes": [], - "id": 970, - "name": "_requireNotPaused", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 1004, - "src": "1474:17:6", - "typeDescriptions": { - "typeIdentifier": "t_function_internal_view$__$returns$__$", - "typeString": "function () view" - } - }, - "id": 971, + "id": 855, "isConstant": false, "isLValue": false, "isPure": false, @@ -11578,833 +10234,568 @@ "nameLocations": [], "names": [], "nodeType": "FunctionCall", - "src": "1474:19:6", + "src": "10541:25:5", "tryCall": false, "typeDescriptions": { - "typeIdentifier": "t_tuple$__$", - "typeString": "tuple()" + "typeIdentifier": "t_uint256", + "typeString": "uint256" } }, - "id": 972, - "nodeType": "ExpressionStatement", - "src": "1474:19:6" + "nodeType": "VariableDeclarationStatement", + "src": "10514:52:5" }, { - "id": 973, - "nodeType": "PlaceholderStatement", - "src": "1503:1:6" - } - ] - }, - "documentation": { - "id": 968, - "nodeType": "StructuredDocumentation", - "src": "1259:175:6", - "text": " @dev Modifier to make a function callable only when the contract is not paused.\n Requirements:\n - The contract must not be paused." - }, - "id": 975, - "name": "whenNotPaused", - "nameLocation": "1448:13:6", - "nodeType": "ModifierDefinition", - "parameters": { - "id": 969, - "nodeType": "ParameterList", - "parameters": [], - "src": "1461:2:6" - }, - "src": "1439:72:6", - "virtual": false, - "visibility": "internal" - }, - { - "body": { - "id": 982, - "nodeType": "Block", - "src": "1711:44:6", - "statements": [ - { - "expression": { - "arguments": [], - "expression": { - "argumentTypes": [], - "id": 978, - "name": "_requirePaused", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 1017, - "src": "1721:14:6", - "typeDescriptions": { - "typeIdentifier": "t_function_internal_view$__$returns$__$", - "typeString": "function () view" - } + "condition": { + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" }, - "id": 979, + "id": 863, "isConstant": false, "isLValue": false, "isPure": false, - "kind": "functionCall", "lValueRequested": false, - "nameLocations": [], - "names": [], - "nodeType": "FunctionCall", - "src": "1721:16:6", - "tryCall": false, - "typeDescriptions": { - "typeIdentifier": "t_tuple$__$", - "typeString": "tuple()" - } - }, - "id": 980, - "nodeType": "ExpressionStatement", - "src": "1721:16:6" - }, - { - "id": 981, - "nodeType": "PlaceholderStatement", - "src": "1747:1:6" - } - ] - }, - "documentation": { - "id": 976, - "nodeType": "StructuredDocumentation", - "src": "1517:167:6", - "text": " @dev Modifier to make a function callable only when the contract is paused.\n Requirements:\n - The contract must be paused." - }, - "id": 983, - "name": "whenPaused", - "nameLocation": "1698:10:6", - "nodeType": "ModifierDefinition", - "parameters": { - "id": 977, - "nodeType": "ParameterList", - "parameters": [], - "src": "1708:2:6" - }, - "src": "1689:66:6", - "virtual": false, - "visibility": "internal" - }, - { - "body": { - "id": 991, - "nodeType": "Block", - "src": "1903:31:6", - "statements": [ - { - "expression": { - "id": 989, - "name": "_paused", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 942, - "src": "1920:7:6", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - }, - "functionReturnParameters": 988, - "id": 990, - "nodeType": "Return", - "src": "1913:14:6" - } - ] - }, - "documentation": { - "id": 984, - "nodeType": "StructuredDocumentation", - "src": "1761:84:6", - "text": " @dev Returns true if the contract is paused, and false otherwise." - }, - "functionSelector": "5c975abb", - "id": 992, - "implemented": true, - "kind": "function", - "modifiers": [], - "name": "paused", - "nameLocation": "1859:6:6", - "nodeType": "FunctionDefinition", - "parameters": { - "id": 985, - "nodeType": "ParameterList", - "parameters": [], - "src": "1865:2:6" - }, - "returnParameters": { - "id": 988, - "nodeType": "ParameterList", - "parameters": [ - { - "constant": false, - "id": 987, - "mutability": "mutable", - "name": "", - "nameLocation": "-1:-1:-1", - "nodeType": "VariableDeclaration", - "scope": 992, - "src": "1897:4:6", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - }, - "typeName": { - "id": 986, - "name": "bool", - "nodeType": "ElementaryTypeName", - "src": "1897:4:6", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - }, - "visibility": "internal" - } - ], - "src": "1896:6:6" - }, - "scope": 1050, - "src": "1850:84:6", - "stateMutability": "view", - "virtual": true, - "visibility": "public" - }, - { - "body": { - "id": 1003, - "nodeType": "Block", - "src": "2053:77:6", - "statements": [ - { - "condition": { - "arguments": [], - "expression": { - "argumentTypes": [], - "id": 996, - "name": "paused", + "leftExpression": { + "id": 857, + "name": "currentAllowance", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 992, - "src": "2067:6:6", + "referencedDeclaration": 851, + "src": "10580:16:5", "typeDescriptions": { - "typeIdentifier": "t_function_internal_view$__$returns$_t_bool_$", - "typeString": "function () view returns (bool)" + "typeIdentifier": "t_uint256", + "typeString": "uint256" } }, - "id": 997, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "nameLocations": [], - "names": [], - "nodeType": "FunctionCall", - "src": "2067:8:6", - "tryCall": false, - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - }, - "id": 1002, - "nodeType": "IfStatement", - "src": "2063:61:6", - "trueBody": { - "id": 1001, - "nodeType": "Block", - "src": "2077:47:6", - "statements": [ - { - "errorCall": { - "arguments": [], - "expression": { - "argumentTypes": [], - "id": 998, - "name": "EnforcedPause", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 955, - "src": "2098:13:6", - "typeDescriptions": { - "typeIdentifier": "t_function_error_pure$__$returns$__$", - "typeString": "function () pure" - } - }, - "id": 999, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "nameLocations": [], - "names": [], - "nodeType": "FunctionCall", - "src": "2098:15:6", - "tryCall": false, + "nodeType": "BinaryOperation", + "operator": "!=", + "rightExpression": { + "expression": { + "arguments": [ + { + "id": 860, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "10605:7:5", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_uint256_$", + "typeString": "type(uint256)" + }, + "typeName": { + "id": 859, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "10605:7:5", + "typeDescriptions": {} + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_type$_t_uint256_$", + "typeString": "type(uint256)" + } + ], + "id": 858, + "name": "type", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": -27, + "src": "10600:4:5", "typeDescriptions": { - "typeIdentifier": "t_tuple$__$", - "typeString": "tuple()" + "typeIdentifier": "t_function_metatype_pure$__$returns$__$", + "typeString": "function () pure" } }, - "id": 1000, - "nodeType": "RevertStatement", - "src": "2091:22:6" - } - ] - } - } - ] - }, - "documentation": { - "id": 993, - "nodeType": "StructuredDocumentation", - "src": "1940:57:6", - "text": " @dev Throws if the contract is paused." - }, - "id": 1004, - "implemented": true, - "kind": "function", - "modifiers": [], - "name": "_requireNotPaused", - "nameLocation": "2011:17:6", - "nodeType": "FunctionDefinition", - "parameters": { - "id": 994, - "nodeType": "ParameterList", - "parameters": [], - "src": "2028:2:6" - }, - "returnParameters": { - "id": 995, - "nodeType": "ParameterList", - "parameters": [], - "src": "2053:0:6" - }, - "scope": 1050, - "src": "2002:128:6", - "stateMutability": "view", - "virtual": true, - "visibility": "internal" - }, - { - "body": { - "id": 1016, - "nodeType": "Block", - "src": "2250:78:6", - "statements": [ - { - "condition": { - "id": 1010, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "nodeType": "UnaryOperation", - "operator": "!", - "prefix": true, - "src": "2264:9:6", - "subExpression": { - "arguments": [], - "expression": { - "argumentTypes": [], - "id": 1008, - "name": "paused", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 992, - "src": "2265:6:6", + "id": 861, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "10600:13:5", + "tryCall": false, "typeDescriptions": { - "typeIdentifier": "t_function_internal_view$__$returns$_t_bool_$", - "typeString": "function () view returns (bool)" + "typeIdentifier": "t_magic_meta_type_t_uint256", + "typeString": "type(uint256)" } }, - "id": 1009, + "id": 862, "isConstant": false, "isLValue": false, - "isPure": false, - "kind": "functionCall", + "isPure": true, "lValueRequested": false, - "nameLocations": [], - "names": [], - "nodeType": "FunctionCall", - "src": "2265:8:6", - "tryCall": false, + "memberLocation": "10614:3:5", + "memberName": "max", + "nodeType": "MemberAccess", + "src": "10600:17:5", "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" + "typeIdentifier": "t_uint256", + "typeString": "uint256" } }, + "src": "10580:37:5", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" } }, - "id": 1015, + "id": 886, "nodeType": "IfStatement", - "src": "2260:62:6", + "src": "10576:310:5", "trueBody": { - "id": 1014, + "id": 885, "nodeType": "Block", - "src": "2275:47:6", + "src": "10619:267:5", "statements": [ { - "errorCall": { - "arguments": [], - "expression": { - "argumentTypes": [], - "id": 1011, - "name": "ExpectedPause", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 958, - "src": "2296:13:6", - "typeDescriptions": { - "typeIdentifier": "t_function_error_pure$__$returns$__$", - "typeString": "function () pure" - } + "condition": { + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" }, - "id": 1012, + "id": 866, "isConstant": false, "isLValue": false, "isPure": false, - "kind": "functionCall", "lValueRequested": false, - "nameLocations": [], - "names": [], - "nodeType": "FunctionCall", - "src": "2296:15:6", - "tryCall": false, - "typeDescriptions": { - "typeIdentifier": "t_tuple$__$", - "typeString": "tuple()" - } - }, - "id": 1013, - "nodeType": "RevertStatement", - "src": "2289:22:6" - } - ] - } - } - ] - }, - "documentation": { - "id": 1005, - "nodeType": "StructuredDocumentation", - "src": "2136:61:6", - "text": " @dev Throws if the contract is not paused." - }, - "id": 1017, - "implemented": true, - "kind": "function", - "modifiers": [], - "name": "_requirePaused", - "nameLocation": "2211:14:6", - "nodeType": "FunctionDefinition", - "parameters": { - "id": 1006, - "nodeType": "ParameterList", - "parameters": [], - "src": "2225:2:6" - }, - "returnParameters": { - "id": 1007, - "nodeType": "ParameterList", - "parameters": [], - "src": "2250:0:6" - }, - "scope": 1050, - "src": "2202:126:6", - "stateMutability": "view", - "virtual": true, - "visibility": "internal" - }, - { - "body": { - "id": 1032, - "nodeType": "Block", - "src": "2512:66:6", - "statements": [ - { - "expression": { - "id": 1025, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftHandSide": { - "id": 1023, - "name": "_paused", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 942, - "src": "2522:7:6", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - }, - "nodeType": "Assignment", - "operator": "=", - "rightHandSide": { - "hexValue": "74727565", - "id": 1024, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "bool", - "lValueRequested": false, - "nodeType": "Literal", - "src": "2532:4:6", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - }, - "value": "true" - }, - "src": "2522:14:6", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - }, - "id": 1026, - "nodeType": "ExpressionStatement", - "src": "2522:14:6" - }, - { - "eventCall": { - "arguments": [ - { - "arguments": [], - "expression": { - "argumentTypes": [], - "id": 1028, - "name": "_msgSender", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 915, - "src": "2558:10:6", + "leftExpression": { + "id": 864, + "name": "currentAllowance", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 851, + "src": "10637:16:5", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "<", + "rightExpression": { + "id": 865, + "name": "value", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 847, + "src": "10656:5:5", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "10637:24:5", "typeDescriptions": { - "typeIdentifier": "t_function_internal_view$__$returns$_t_address_$", - "typeString": "function () view returns (address)" + "typeIdentifier": "t_bool", + "typeString": "bool" } }, - "id": 1029, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "nameLocations": [], - "names": [], - "nodeType": "FunctionCall", - "src": "2558:12:6", - "tryCall": false, - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_address", - "typeString": "address" + "id": 874, + "nodeType": "IfStatement", + "src": "10633:130:5", + "trueBody": { + "id": 873, + "nodeType": "Block", + "src": "10663:100:5", + "statements": [ + { + "errorCall": { + "arguments": [ + { + "id": 868, + "name": "spender", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 845, + "src": "10715:7:5", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "id": 869, + "name": "currentAllowance", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 851, + "src": "10724:16:5", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + { + "id": 870, + "name": "value", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 847, + "src": "10742:5:5", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "id": 867, + "name": "ERC20InsufficientAllowance", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 268, + "src": "10688:26:5", + "typeDescriptions": { + "typeIdentifier": "t_function_error_pure$_t_address_$_t_uint256_$_t_uint256_$returns$__$", + "typeString": "function (address,uint256,uint256) pure" + } + }, + "id": 871, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "10688:60:5", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 872, + "nodeType": "RevertStatement", + "src": "10681:67:5" + } + ] } - ], - "id": 1027, - "name": "Paused", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 947, - "src": "2551:6:6", - "typeDescriptions": { - "typeIdentifier": "t_function_event_nonpayable$_t_address_$returns$__$", - "typeString": "function (address)" + }, + { + "id": 884, + "nodeType": "UncheckedBlock", + "src": "10776:100:5", + "statements": [ + { + "expression": { + "arguments": [ + { + "id": 876, + "name": "owner", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 843, + "src": "10813:5:5", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "id": 877, + "name": "spender", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 845, + "src": "10820:7:5", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 880, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "id": 878, + "name": "currentAllowance", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 851, + "src": "10829:16:5", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "-", + "rightExpression": { + "id": 879, + "name": "value", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 847, + "src": "10848:5:5", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "10829:24:5", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + { + "hexValue": "66616c7365", + "id": 881, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "bool", + "lValueRequested": false, + "nodeType": "Literal", + "src": "10855:5:5", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "value": "false" + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + ], + "id": 875, + "name": "_approve", + "nodeType": "Identifier", + "overloadedDeclarations": [ + 780, + 840 + ], + "referencedDeclaration": 840, + "src": "10804:8:5", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_address_$_t_uint256_$_t_bool_$returns$__$", + "typeString": "function (address,address,uint256,bool)" + } + }, + "id": 882, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "10804:57:5", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 883, + "nodeType": "ExpressionStatement", + "src": "10804:57:5" + } + ] } - }, - "id": 1030, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "nameLocations": [], - "names": [], - "nodeType": "FunctionCall", - "src": "2551:20:6", - "tryCall": false, - "typeDescriptions": { - "typeIdentifier": "t_tuple$__$", - "typeString": "tuple()" - } - }, - "id": 1031, - "nodeType": "EmitStatement", - "src": "2546:25:6" + ] + } } ] }, "documentation": { - "id": 1018, + "id": 841, "nodeType": "StructuredDocumentation", - "src": "2334:124:6", - "text": " @dev Triggers stopped state.\n Requirements:\n - The contract must not be paused." + "src": "10139:271:5", + "text": " @dev Updates `owner` s allowance for `spender` based on spent `value`.\n Does not update the allowance value in case of infinite allowance.\n Revert if not enough allowance is available.\n Does not emit an {Approval} event." }, - "id": 1033, + "id": 888, "implemented": true, "kind": "function", - "modifiers": [ - { - "id": 1021, - "kind": "modifierInvocation", - "modifierName": { - "id": 1020, - "name": "whenNotPaused", - "nameLocations": [ - "2498:13:6" - ], - "nodeType": "IdentifierPath", - "referencedDeclaration": 975, - "src": "2498:13:6" - }, - "nodeType": "ModifierInvocation", - "src": "2498:13:6" - } - ], - "name": "_pause", - "nameLocation": "2472:6:6", + "modifiers": [], + "name": "_spendAllowance", + "nameLocation": "10424:15:5", "nodeType": "FunctionDefinition", "parameters": { - "id": 1019, - "nodeType": "ParameterList", - "parameters": [], - "src": "2478:2:6" - }, - "returnParameters": { - "id": 1022, + "id": 848, "nodeType": "ParameterList", - "parameters": [], - "src": "2512:0:6" - }, - "scope": 1050, - "src": "2463:115:6", - "stateMutability": "nonpayable", - "virtual": true, - "visibility": "internal" - }, - { - "body": { - "id": 1048, - "nodeType": "Block", - "src": "2758:69:6", - "statements": [ + "parameters": [ { - "expression": { - "id": 1041, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftHandSide": { - "id": 1039, - "name": "_paused", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 942, - "src": "2768:7:6", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - }, - "nodeType": "Assignment", - "operator": "=", - "rightHandSide": { - "hexValue": "66616c7365", - "id": 1040, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "bool", - "lValueRequested": false, - "nodeType": "Literal", - "src": "2778:5:6", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - }, - "value": "false" - }, - "src": "2768:15:6", + "constant": false, + "id": 843, + "mutability": "mutable", + "name": "owner", + "nameLocation": "10448:5:5", + "nodeType": "VariableDeclaration", + "scope": 888, + "src": "10440:13:5", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 842, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "10440:7:5", + "stateMutability": "nonpayable", "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" + "typeIdentifier": "t_address", + "typeString": "address" } }, - "id": 1042, - "nodeType": "ExpressionStatement", - "src": "2768:15:6" + "visibility": "internal" }, { - "eventCall": { - "arguments": [ - { - "arguments": [], - "expression": { - "argumentTypes": [], - "id": 1044, - "name": "_msgSender", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 915, - "src": "2807:10:6", - "typeDescriptions": { - "typeIdentifier": "t_function_internal_view$__$returns$_t_address_$", - "typeString": "function () view returns (address)" - } - }, - "id": 1045, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "nameLocations": [], - "names": [], - "nodeType": "FunctionCall", - "src": "2807:12:6", - "tryCall": false, - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_address", - "typeString": "address" - } - ], - "id": 1043, - "name": "Unpaused", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 952, - "src": "2798:8:6", - "typeDescriptions": { - "typeIdentifier": "t_function_event_nonpayable$_t_address_$returns$__$", - "typeString": "function (address)" - } - }, - "id": 1046, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "nameLocations": [], - "names": [], - "nodeType": "FunctionCall", - "src": "2798:22:6", - "tryCall": false, + "constant": false, + "id": 845, + "mutability": "mutable", + "name": "spender", + "nameLocation": "10463:7:5", + "nodeType": "VariableDeclaration", + "scope": 888, + "src": "10455:15:5", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 844, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "10455:7:5", + "stateMutability": "nonpayable", "typeDescriptions": { - "typeIdentifier": "t_tuple$__$", - "typeString": "tuple()" + "typeIdentifier": "t_address", + "typeString": "address" } }, - "id": 1047, - "nodeType": "EmitStatement", - "src": "2793:27:6" - } - ] - }, - "documentation": { - "id": 1034, - "nodeType": "StructuredDocumentation", - "src": "2584:121:6", - "text": " @dev Returns to normal state.\n Requirements:\n - The contract must be paused." - }, - "id": 1049, - "implemented": true, - "kind": "function", - "modifiers": [ - { - "id": 1037, - "kind": "modifierInvocation", - "modifierName": { - "id": 1036, - "name": "whenPaused", - "nameLocations": [ - "2747:10:6" - ], - "nodeType": "IdentifierPath", - "referencedDeclaration": 983, - "src": "2747:10:6" + "visibility": "internal" }, - "nodeType": "ModifierInvocation", - "src": "2747:10:6" - } - ], - "name": "_unpause", - "nameLocation": "2719:8:6", - "nodeType": "FunctionDefinition", - "parameters": { - "id": 1035, - "nodeType": "ParameterList", - "parameters": [], - "src": "2727:2:6" + { + "constant": false, + "id": 847, + "mutability": "mutable", + "name": "value", + "nameLocation": "10480:5:5", + "nodeType": "VariableDeclaration", + "scope": 888, + "src": "10472:13:5", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 846, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "10472:7:5", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "src": "10439:47:5" }, "returnParameters": { - "id": 1038, + "id": 849, "nodeType": "ParameterList", "parameters": [], - "src": "2758:0:6" + "src": "10504:0:5" }, - "scope": 1050, - "src": "2710:117:6", + "scope": 889, + "src": "10415:477:5", "stateMutability": "nonpayable", "virtual": true, "visibility": "internal" } ], - "scope": 1051, - "src": "615:2214:6", + "scope": 890, + "src": "1106:9788:5", "usedErrors": [ - 955, - 958 + 249, + 254, + 259, + 268, + 273, + 278 ], "usedEvents": [ - 947, - 952 + 901, + 910 ] } ], - "src": "102:2728:6" + "src": "105:10790:5" }, - "id": 6 + "id": 5 }, - "@openzeppelin/contracts/utils/ReentrancyGuard.sol": { + "@openzeppelin/contracts/token/ERC20/IERC20.sol": { "ast": { - "absolutePath": "@openzeppelin/contracts/utils/ReentrancyGuard.sol", + "absolutePath": "@openzeppelin/contracts/token/ERC20/IERC20.sol", "exportedSymbols": { - "ReentrancyGuard": [ - 1119 + "IERC20": [ + 967 ] }, - "id": 1120, + "id": 968, "license": "MIT", "nodeType": "SourceUnit", "nodes": [ { - "id": 1052, + "id": 891, "literals": [ "solidity", "^", @@ -12412,1133 +10803,832 @@ ".20" ], "nodeType": "PragmaDirective", - "src": "109:24:7" + "src": "106:24:6" }, { - "abstract": true, + "abstract": false, "baseContracts": [], - "canonicalName": "ReentrancyGuard", + "canonicalName": "IERC20", "contractDependencies": [], - "contractKind": "contract", + "contractKind": "interface", "documentation": { - "id": 1053, + "id": 892, "nodeType": "StructuredDocumentation", - "src": "135:894:7", - "text": " @dev Contract module that helps prevent reentrant calls to a function.\n Inheriting from `ReentrancyGuard` will make the {nonReentrant} modifier\n available, which can be applied to functions to make sure there are no nested\n (reentrant) calls to them.\n Note that because there is a single `nonReentrant` guard, functions marked as\n `nonReentrant` may not call one another. This can be worked around by making\n those functions `private`, and then adding `external` `nonReentrant` entry\n points to them.\n TIP: If EIP-1153 (transient storage) is available on the chain you're deploying at,\n consider using {ReentrancyGuardTransient} instead.\n TIP: If you would like to learn more about reentrancy and alternative ways\n to protect against it, check out our blog post\n https://blog.openzeppelin.com/reentrancy-after-istanbul/[Reentrancy After Istanbul]." + "src": "132:71:6", + "text": " @dev Interface of the ERC-20 standard as defined in the ERC." }, - "fullyImplemented": true, - "id": 1119, + "fullyImplemented": false, + "id": 967, "linearizedBaseContracts": [ - 1119 + 967 ], - "name": "ReentrancyGuard", - "nameLocation": "1048:15:7", + "name": "IERC20", + "nameLocation": "214:6:6", "nodeType": "ContractDefinition", "nodes": [ { - "constant": true, - "id": 1056, - "mutability": "constant", - "name": "NOT_ENTERED", - "nameLocation": "1843:11:7", - "nodeType": "VariableDeclaration", - "scope": 1119, - "src": "1818:40:7", - "stateVariable": true, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "typeName": { - "id": 1054, - "name": "uint256", - "nodeType": "ElementaryTypeName", - "src": "1818:7:7", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "value": { - "hexValue": "31", - "id": 1055, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "number", - "lValueRequested": false, - "nodeType": "Literal", - "src": "1857:1:7", - "typeDescriptions": { - "typeIdentifier": "t_rational_1_by_1", - "typeString": "int_const 1" - }, - "value": "1" - }, - "visibility": "private" - }, - { - "constant": true, - "id": 1059, - "mutability": "constant", - "name": "ENTERED", - "nameLocation": "1889:7:7", - "nodeType": "VariableDeclaration", - "scope": 1119, - "src": "1864:36:7", - "stateVariable": true, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" + "anonymous": false, + "documentation": { + "id": 893, + "nodeType": "StructuredDocumentation", + "src": "227:158:6", + "text": " @dev Emitted when `value` tokens are moved from one account (`from`) to\n another (`to`).\n Note that `value` may be zero." }, - "typeName": { - "id": 1057, - "name": "uint256", - "nodeType": "ElementaryTypeName", - "src": "1864:7:7", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "value": { - "hexValue": "32", - "id": 1058, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "number", - "lValueRequested": false, - "nodeType": "Literal", - "src": "1899:1:7", - "typeDescriptions": { - "typeIdentifier": "t_rational_2_by_1", - "typeString": "int_const 2" - }, - "value": "2" - }, - "visibility": "private" - }, - { - "constant": false, - "id": 1061, - "mutability": "mutable", - "name": "_status", - "nameLocation": "1923:7:7", - "nodeType": "VariableDeclaration", - "scope": 1119, - "src": "1907:23:7", - "stateVariable": true, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "typeName": { - "id": 1060, - "name": "uint256", - "nodeType": "ElementaryTypeName", - "src": "1907:7:7", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } + "eventSelector": "ddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef", + "id": 901, + "name": "Transfer", + "nameLocation": "396:8:6", + "nodeType": "EventDefinition", + "parameters": { + "id": 900, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 895, + "indexed": true, + "mutability": "mutable", + "name": "from", + "nameLocation": "421:4:6", + "nodeType": "VariableDeclaration", + "scope": 901, + "src": "405:20:6", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 894, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "405:7:6", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 897, + "indexed": true, + "mutability": "mutable", + "name": "to", + "nameLocation": "443:2:6", + "nodeType": "VariableDeclaration", + "scope": 901, + "src": "427:18:6", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 896, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "427:7:6", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 899, + "indexed": false, + "mutability": "mutable", + "name": "value", + "nameLocation": "455:5:6", + "nodeType": "VariableDeclaration", + "scope": 901, + "src": "447:13:6", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 898, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "447:7:6", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "src": "404:57:6" }, - "visibility": "private" + "src": "390:72:6" }, { + "anonymous": false, "documentation": { - "id": 1062, + "id": 902, "nodeType": "StructuredDocumentation", - "src": "1937:52:7", - "text": " @dev Unauthorized reentrant call." + "src": "468:148:6", + "text": " @dev Emitted when the allowance of a `spender` for an `owner` is set by\n a call to {approve}. `value` is the new allowance." }, - "errorSelector": "3ee5aeb5", - "id": 1064, - "name": "ReentrancyGuardReentrantCall", - "nameLocation": "2000:28:7", - "nodeType": "ErrorDefinition", + "eventSelector": "8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925", + "id": 910, + "name": "Approval", + "nameLocation": "627:8:6", + "nodeType": "EventDefinition", "parameters": { - "id": 1063, + "id": 909, "nodeType": "ParameterList", - "parameters": [], - "src": "2028:2:7" - }, - "src": "1994:37:7" - }, - { - "body": { - "id": 1071, - "nodeType": "Block", - "src": "2051:38:7", - "statements": [ + "parameters": [ { - "expression": { - "id": 1069, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftHandSide": { - "id": 1067, - "name": "_status", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 1061, - "src": "2061:7:7", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "nodeType": "Assignment", - "operator": "=", - "rightHandSide": { - "id": 1068, - "name": "NOT_ENTERED", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 1056, - "src": "2071:11:7", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "src": "2061:21:7", + "constant": false, + "id": 904, + "indexed": true, + "mutability": "mutable", + "name": "owner", + "nameLocation": "652:5:6", + "nodeType": "VariableDeclaration", + "scope": 910, + "src": "636:21:6", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 903, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "636:7:6", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 906, + "indexed": true, + "mutability": "mutable", + "name": "spender", + "nameLocation": "675:7:6", + "nodeType": "VariableDeclaration", + "scope": 910, + "src": "659:23:6", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 905, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "659:7:6", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 908, + "indexed": false, + "mutability": "mutable", + "name": "value", + "nameLocation": "692:5:6", + "nodeType": "VariableDeclaration", + "scope": 910, + "src": "684:13:6", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 907, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "684:7:6", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, - "id": 1070, - "nodeType": "ExpressionStatement", - "src": "2061:21:7" + "visibility": "internal" } - ] + ], + "src": "635:63:6" }, - "id": 1072, - "implemented": true, - "kind": "constructor", + "src": "621:78:6" + }, + { + "documentation": { + "id": 911, + "nodeType": "StructuredDocumentation", + "src": "705:65:6", + "text": " @dev Returns the value of tokens in existence." + }, + "functionSelector": "18160ddd", + "id": 916, + "implemented": false, + "kind": "function", "modifiers": [], - "name": "", - "nameLocation": "-1:-1:-1", + "name": "totalSupply", + "nameLocation": "784:11:6", "nodeType": "FunctionDefinition", "parameters": { - "id": 1065, + "id": 912, "nodeType": "ParameterList", "parameters": [], - "src": "2048:2:7" + "src": "795:2:6" }, "returnParameters": { - "id": 1066, + "id": 915, "nodeType": "ParameterList", - "parameters": [], - "src": "2051:0:7" - }, - "scope": 1119, - "src": "2037:52:7", - "stateMutability": "nonpayable", - "virtual": false, - "visibility": "internal" - }, - { - "body": { - "id": 1082, - "nodeType": "Block", - "src": "2490:79:7", - "statements": [ + "parameters": [ { - "expression": { - "arguments": [], - "expression": { - "argumentTypes": [], - "id": 1075, - "name": "_nonReentrantBefore", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 1099, - "src": "2500:19:7", - "typeDescriptions": { - "typeIdentifier": "t_function_internal_nonpayable$__$returns$__$", - "typeString": "function ()" - } - }, - "id": 1076, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "nameLocations": [], - "names": [], - "nodeType": "FunctionCall", - "src": "2500:21:7", - "tryCall": false, - "typeDescriptions": { - "typeIdentifier": "t_tuple$__$", - "typeString": "tuple()" - } + "constant": false, + "id": 914, + "mutability": "mutable", + "name": "", + "nameLocation": "-1:-1:-1", + "nodeType": "VariableDeclaration", + "scope": 916, + "src": "821:7:6", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" }, - "id": 1077, - "nodeType": "ExpressionStatement", - "src": "2500:21:7" - }, - { - "id": 1078, - "nodeType": "PlaceholderStatement", - "src": "2531:1:7" - }, - { - "expression": { - "arguments": [], - "expression": { - "argumentTypes": [], - "id": 1079, - "name": "_nonReentrantAfter", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 1107, - "src": "2542:18:7", - "typeDescriptions": { - "typeIdentifier": "t_function_internal_nonpayable$__$returns$__$", - "typeString": "function ()" - } - }, - "id": 1080, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "nameLocations": [], - "names": [], - "nodeType": "FunctionCall", - "src": "2542:20:7", - "tryCall": false, + "typeName": { + "id": 913, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "821:7:6", "typeDescriptions": { - "typeIdentifier": "t_tuple$__$", - "typeString": "tuple()" + "typeIdentifier": "t_uint256", + "typeString": "uint256" } }, - "id": 1081, - "nodeType": "ExpressionStatement", - "src": "2542:20:7" + "visibility": "internal" } - ] + ], + "src": "820:9:6" }, + "scope": 967, + "src": "775:55:6", + "stateMutability": "view", + "virtual": false, + "visibility": "external" + }, + { "documentation": { - "id": 1073, + "id": 917, "nodeType": "StructuredDocumentation", - "src": "2095:366:7", - "text": " @dev Prevents a contract from calling itself, directly or indirectly.\n Calling a `nonReentrant` function from another `nonReentrant`\n function is not supported. It is possible to prevent this from happening\n by making the `nonReentrant` function external, and making it call a\n `private` function that does the actual work." + "src": "836:71:6", + "text": " @dev Returns the value of tokens owned by `account`." }, - "id": 1083, - "name": "nonReentrant", - "nameLocation": "2475:12:7", - "nodeType": "ModifierDefinition", + "functionSelector": "70a08231", + "id": 924, + "implemented": false, + "kind": "function", + "modifiers": [], + "name": "balanceOf", + "nameLocation": "921:9:6", + "nodeType": "FunctionDefinition", "parameters": { - "id": 1074, + "id": 920, "nodeType": "ParameterList", - "parameters": [], - "src": "2487:2:7" - }, - "src": "2466:103:7", - "virtual": false, - "visibility": "internal" - }, - { - "body": { - "id": 1098, - "nodeType": "Block", - "src": "2614:268:7", - "statements": [ + "parameters": [ { - "condition": { - "commonType": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "id": 1088, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftExpression": { - "id": 1086, - "name": "_status", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 1061, - "src": "2702:7:7", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "nodeType": "BinaryOperation", - "operator": "==", - "rightExpression": { - "id": 1087, - "name": "ENTERED", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 1059, - "src": "2713:7:7", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "src": "2702:18:7", + "constant": false, + "id": 919, + "mutability": "mutable", + "name": "account", + "nameLocation": "939:7:6", + "nodeType": "VariableDeclaration", + "scope": 924, + "src": "931:15:6", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 918, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "931:7:6", + "stateMutability": "nonpayable", "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" + "typeIdentifier": "t_address", + "typeString": "address" } }, - "id": 1093, - "nodeType": "IfStatement", - "src": "2698:86:7", - "trueBody": { - "id": 1092, - "nodeType": "Block", - "src": "2722:62:7", - "statements": [ - { - "errorCall": { - "arguments": [], - "expression": { - "argumentTypes": [], - "id": 1089, - "name": "ReentrancyGuardReentrantCall", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 1064, - "src": "2743:28:7", - "typeDescriptions": { - "typeIdentifier": "t_function_error_pure$__$returns$__$", - "typeString": "function () pure" - } - }, - "id": 1090, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "nameLocations": [], - "names": [], - "nodeType": "FunctionCall", - "src": "2743:30:7", - "tryCall": false, - "typeDescriptions": { - "typeIdentifier": "t_tuple$__$", - "typeString": "tuple()" - } - }, - "id": 1091, - "nodeType": "RevertStatement", - "src": "2736:37:7" - } - ] - } - }, + "visibility": "internal" + } + ], + "src": "930:17:6" + }, + "returnParameters": { + "id": 923, + "nodeType": "ParameterList", + "parameters": [ { - "expression": { - "id": 1096, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftHandSide": { - "id": 1094, - "name": "_status", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 1061, - "src": "2858:7:7", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "nodeType": "Assignment", - "operator": "=", - "rightHandSide": { - "id": 1095, - "name": "ENTERED", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 1059, - "src": "2868:7:7", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "src": "2858:17:7", + "constant": false, + "id": 922, + "mutability": "mutable", + "name": "", + "nameLocation": "-1:-1:-1", + "nodeType": "VariableDeclaration", + "scope": 924, + "src": "971:7:6", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 921, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "971:7:6", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, - "id": 1097, - "nodeType": "ExpressionStatement", - "src": "2858:17:7" + "visibility": "internal" } - ] + ], + "src": "970:9:6" }, - "id": 1099, - "implemented": true, + "scope": 967, + "src": "912:68:6", + "stateMutability": "view", + "virtual": false, + "visibility": "external" + }, + { + "documentation": { + "id": 925, + "nodeType": "StructuredDocumentation", + "src": "986:213:6", + "text": " @dev Moves a `value` amount of tokens from the caller's account to `to`.\n Returns a boolean value indicating whether the operation succeeded.\n Emits a {Transfer} event." + }, + "functionSelector": "a9059cbb", + "id": 934, + "implemented": false, "kind": "function", "modifiers": [], - "name": "_nonReentrantBefore", - "nameLocation": "2584:19:7", + "name": "transfer", + "nameLocation": "1213:8:6", "nodeType": "FunctionDefinition", "parameters": { - "id": 1084, - "nodeType": "ParameterList", - "parameters": [], - "src": "2603:2:7" - }, - "returnParameters": { - "id": 1085, + "id": 930, "nodeType": "ParameterList", - "parameters": [], - "src": "2614:0:7" - }, - "scope": 1119, - "src": "2575:307:7", - "stateMutability": "nonpayable", - "virtual": false, - "visibility": "private" - }, - { - "body": { - "id": 1106, - "nodeType": "Block", - "src": "2926:170:7", - "statements": [ + "parameters": [ { - "expression": { - "id": 1104, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftHandSide": { - "id": 1102, - "name": "_status", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 1061, - "src": "3068:7:7", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "nodeType": "Assignment", - "operator": "=", - "rightHandSide": { - "id": 1103, - "name": "NOT_ENTERED", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 1056, - "src": "3078:11:7", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "src": "3068:21:7", + "constant": false, + "id": 927, + "mutability": "mutable", + "name": "to", + "nameLocation": "1230:2:6", + "nodeType": "VariableDeclaration", + "scope": 934, + "src": "1222:10:6", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 926, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "1222:7:6", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 929, + "mutability": "mutable", + "name": "value", + "nameLocation": "1242:5:6", + "nodeType": "VariableDeclaration", + "scope": 934, + "src": "1234:13:6", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 928, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "1234:7:6", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, - "id": 1105, - "nodeType": "ExpressionStatement", - "src": "3068:21:7" + "visibility": "internal" } - ] - }, - "id": 1107, - "implemented": true, - "kind": "function", - "modifiers": [], - "name": "_nonReentrantAfter", - "nameLocation": "2897:18:7", - "nodeType": "FunctionDefinition", - "parameters": { - "id": 1100, - "nodeType": "ParameterList", - "parameters": [], - "src": "2915:2:7" + ], + "src": "1221:27:6" }, "returnParameters": { - "id": 1101, + "id": 933, "nodeType": "ParameterList", - "parameters": [], - "src": "2926:0:7" - }, - "scope": 1119, - "src": "2888:208:7", - "stateMutability": "nonpayable", - "virtual": false, - "visibility": "private" - }, - { - "body": { - "id": 1117, - "nodeType": "Block", - "src": "3339:42:7", - "statements": [ + "parameters": [ { - "expression": { - "commonType": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "id": 1115, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftExpression": { - "id": 1113, - "name": "_status", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 1061, - "src": "3356:7:7", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "nodeType": "BinaryOperation", - "operator": "==", - "rightExpression": { - "id": 1114, - "name": "ENTERED", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 1059, - "src": "3367:7:7", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "src": "3356:18:7", + "constant": false, + "id": 932, + "mutability": "mutable", + "name": "", + "nameLocation": "-1:-1:-1", + "nodeType": "VariableDeclaration", + "scope": 934, + "src": "1267:4:6", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "typeName": { + "id": 931, + "name": "bool", + "nodeType": "ElementaryTypeName", + "src": "1267:4:6", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" } }, - "functionReturnParameters": 1112, - "id": 1116, - "nodeType": "Return", - "src": "3349:25:7" + "visibility": "internal" } - ] + ], + "src": "1266:6:6" }, + "scope": 967, + "src": "1204:69:6", + "stateMutability": "nonpayable", + "virtual": false, + "visibility": "external" + }, + { "documentation": { - "id": 1108, + "id": 935, "nodeType": "StructuredDocumentation", - "src": "3102:168:7", - "text": " @dev Returns true if the reentrancy guard is currently set to \"entered\", which indicates there is a\n `nonReentrant` function in the call stack." + "src": "1279:264:6", + "text": " @dev Returns the remaining number of tokens that `spender` will be\n allowed to spend on behalf of `owner` through {transferFrom}. This is\n zero by default.\n This value changes when {approve} or {transferFrom} are called." }, - "id": 1118, - "implemented": true, + "functionSelector": "dd62ed3e", + "id": 944, + "implemented": false, "kind": "function", "modifiers": [], - "name": "_reentrancyGuardEntered", - "nameLocation": "3284:23:7", + "name": "allowance", + "nameLocation": "1557:9:6", "nodeType": "FunctionDefinition", "parameters": { - "id": 1109, + "id": 940, "nodeType": "ParameterList", - "parameters": [], - "src": "3307:2:7" + "parameters": [ + { + "constant": false, + "id": 937, + "mutability": "mutable", + "name": "owner", + "nameLocation": "1575:5:6", + "nodeType": "VariableDeclaration", + "scope": 944, + "src": "1567:13:6", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 936, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "1567:7:6", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 939, + "mutability": "mutable", + "name": "spender", + "nameLocation": "1590:7:6", + "nodeType": "VariableDeclaration", + "scope": 944, + "src": "1582:15:6", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 938, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "1582:7:6", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + } + ], + "src": "1566:32:6" }, "returnParameters": { - "id": 1112, + "id": 943, "nodeType": "ParameterList", "parameters": [ { "constant": false, - "id": 1111, + "id": 942, "mutability": "mutable", "name": "", "nameLocation": "-1:-1:-1", "nodeType": "VariableDeclaration", - "scope": 1118, - "src": "3333:4:7", + "scope": 944, + "src": "1622:7:6", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" + "typeIdentifier": "t_uint256", + "typeString": "uint256" }, "typeName": { - "id": 1110, - "name": "bool", + "id": 941, + "name": "uint256", "nodeType": "ElementaryTypeName", - "src": "3333:4:7", + "src": "1622:7:6", "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" + "typeIdentifier": "t_uint256", + "typeString": "uint256" } }, "visibility": "internal" } ], - "src": "3332:6:7" + "src": "1621:9:6" }, - "scope": 1119, - "src": "3275:106:7", + "scope": 967, + "src": "1548:83:6", "stateMutability": "view", "virtual": false, - "visibility": "internal" - } - ], - "scope": 1120, - "src": "1030:2353:7", - "usedErrors": [ - 1064 - ], - "usedEvents": [] - } - ], - "src": "109:3275:7" - }, - "id": 7 - }, - "contracts/token.sol": { - "ast": { - "absolutePath": "contracts/token.sol", - "exportedSymbols": { - "Context": [ - 933 - ], - "ERC20": [ - 799 - ], - "IERC20": [ - 877 - ], - "IERC20Errors": [ - 189 - ], - "IERC20Metadata": [ - 903 - ], - "MockERC20": [ - 1157 - ], - "Ownable": [ - 147 - ] - }, - "id": 1158, - "license": "MIT", - "nodeType": "SourceUnit", - "nodes": [ - { - "id": 1121, - "literals": [ - "solidity", - "^", - "0.8", - ".0" - ], - "nodeType": "PragmaDirective", - "src": "32:23:8" - }, - { - "absolutePath": "@openzeppelin/contracts/token/ERC20/ERC20.sol", - "file": "@openzeppelin/contracts/token/ERC20/ERC20.sol", - "id": 1122, - "nameLocation": "-1:-1:-1", - "nodeType": "ImportDirective", - "scope": 1158, - "sourceUnit": 800, - "src": "57:55:8", - "symbolAliases": [], - "unitAlias": "" - }, - { - "absolutePath": "@openzeppelin/contracts/access/Ownable.sol", - "file": "@openzeppelin/contracts/access/Ownable.sol", - "id": 1123, - "nameLocation": "-1:-1:-1", - "nodeType": "ImportDirective", - "scope": 1158, - "sourceUnit": 148, - "src": "113:52:8", - "symbolAliases": [], - "unitAlias": "" - }, - { - "abstract": false, - "baseContracts": [ - { - "baseName": { - "id": 1124, - "name": "ERC20", - "nameLocations": [ - "189:5:8" - ], - "nodeType": "IdentifierPath", - "referencedDeclaration": 799, - "src": "189:5:8" - }, - "id": 1125, - "nodeType": "InheritanceSpecifier", - "src": "189:5:8" + "visibility": "external" }, { - "arguments": [ - { - "expression": { - "id": 1127, - "name": "msg", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": -15, - "src": "204:3:8", - "typeDescriptions": { - "typeIdentifier": "t_magic_message", - "typeString": "msg" - } - }, - "id": 1128, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "memberLocation": "208:6:8", - "memberName": "sender", - "nodeType": "MemberAccess", - "src": "204:10:8", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - } - ], - "baseName": { - "id": 1126, - "name": "Ownable", - "nameLocations": [ - "196:7:8" - ], - "nodeType": "IdentifierPath", - "referencedDeclaration": 147, - "src": "196:7:8" - }, - "id": 1129, - "nodeType": "InheritanceSpecifier", - "src": "196:19:8" - } - ], - "canonicalName": "MockERC20", - "contractDependencies": [], - "contractKind": "contract", - "fullyImplemented": true, - "id": 1157, - "linearizedBaseContracts": [ - 1157, - 147, - 799, - 189, - 903, - 877, - 933 - ], - "name": "MockERC20", - "nameLocation": "176:9:8", - "nodeType": "ContractDefinition", - "nodes": [ - { - "body": { - "id": 1140, - "nodeType": "Block", - "src": "296:2:8", - "statements": [] + "documentation": { + "id": 945, + "nodeType": "StructuredDocumentation", + "src": "1637:667:6", + "text": " @dev Sets a `value` amount of tokens as the allowance of `spender` over the\n caller's tokens.\n Returns a boolean value indicating whether the operation succeeded.\n IMPORTANT: Beware that changing an allowance with this method brings the risk\n that someone may use both the old and the new allowance by unfortunate\n transaction ordering. One possible solution to mitigate this race\n condition is to first reduce the spender's allowance to 0 and set the\n desired value afterwards:\n https://github.com/ethereum/EIPs/issues/20#issuecomment-263524729\n Emits an {Approval} event." }, - "id": 1141, - "implemented": true, - "kind": "constructor", - "modifiers": [ - { - "arguments": [ - { - "id": 1136, - "name": "name", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 1131, - "src": "282:4:8", - "typeDescriptions": { - "typeIdentifier": "t_string_memory_ptr", - "typeString": "string memory" - } - }, - { - "id": 1137, - "name": "symbol", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 1133, - "src": "288:6:8", - "typeDescriptions": { - "typeIdentifier": "t_string_memory_ptr", - "typeString": "string memory" - } - } - ], - "id": 1138, - "kind": "baseConstructorSpecifier", - "modifierName": { - "id": 1135, - "name": "ERC20", - "nameLocations": [ - "276:5:8" - ], - "nodeType": "IdentifierPath", - "referencedDeclaration": 799, - "src": "276:5:8" - }, - "nodeType": "ModifierInvocation", - "src": "276:19:8" - } - ], - "name": "", - "nameLocation": "-1:-1:-1", + "functionSelector": "095ea7b3", + "id": 954, + "implemented": false, + "kind": "function", + "modifiers": [], + "name": "approve", + "nameLocation": "2318:7:6", "nodeType": "FunctionDefinition", "parameters": { - "id": 1134, + "id": 950, "nodeType": "ParameterList", "parameters": [ { "constant": false, - "id": 1131, + "id": 947, "mutability": "mutable", - "name": "name", - "nameLocation": "248:4:8", + "name": "spender", + "nameLocation": "2334:7:6", "nodeType": "VariableDeclaration", - "scope": 1141, - "src": "234:18:8", + "scope": 954, + "src": "2326:15:6", "stateVariable": false, - "storageLocation": "memory", + "storageLocation": "default", "typeDescriptions": { - "typeIdentifier": "t_string_memory_ptr", - "typeString": "string" + "typeIdentifier": "t_address", + "typeString": "address" }, "typeName": { - "id": 1130, - "name": "string", + "id": 946, + "name": "address", "nodeType": "ElementaryTypeName", - "src": "234:6:8", + "src": "2326:7:6", + "stateMutability": "nonpayable", "typeDescriptions": { - "typeIdentifier": "t_string_storage_ptr", - "typeString": "string" + "typeIdentifier": "t_address", + "typeString": "address" } }, "visibility": "internal" }, { "constant": false, - "id": 1133, + "id": 949, "mutability": "mutable", - "name": "symbol", - "nameLocation": "268:6:8", + "name": "value", + "nameLocation": "2351:5:6", "nodeType": "VariableDeclaration", - "scope": 1141, - "src": "254:20:8", + "scope": 954, + "src": "2343:13:6", "stateVariable": false, - "storageLocation": "memory", + "storageLocation": "default", "typeDescriptions": { - "typeIdentifier": "t_string_memory_ptr", - "typeString": "string" + "typeIdentifier": "t_uint256", + "typeString": "uint256" }, "typeName": { - "id": 1132, - "name": "string", + "id": 948, + "name": "uint256", "nodeType": "ElementaryTypeName", - "src": "254:6:8", + "src": "2343:7:6", "typeDescriptions": { - "typeIdentifier": "t_string_storage_ptr", - "typeString": "string" + "typeIdentifier": "t_uint256", + "typeString": "uint256" } }, "visibility": "internal" } ], - "src": "233:42:8" + "src": "2325:32:6" }, "returnParameters": { - "id": 1139, - "nodeType": "ParameterList", - "parameters": [], - "src": "296:0:8" - }, - "scope": 1157, - "src": "222:76:8", - "stateMutability": "nonpayable", - "virtual": false, - "visibility": "public" - }, - { - "body": { - "id": 1155, - "nodeType": "Block", - "src": "365:34:8", - "statements": [ - { - "expression": { - "arguments": [ - { - "id": 1151, - "name": "to", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 1143, - "src": "381:2:8", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - { - "id": 1152, - "name": "amount", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 1145, - "src": "385:6:8", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_address", - "typeString": "address" - }, - { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - ], - "id": 1150, - "name": "_mint", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 639, - "src": "375:5:8", - "typeDescriptions": { - "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_uint256_$returns$__$", - "typeString": "function (address,uint256)" - } - }, - "id": 1153, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "nameLocations": [], - "names": [], - "nodeType": "FunctionCall", - "src": "375:17:8", - "tryCall": false, - "typeDescriptions": { - "typeIdentifier": "t_tuple$__$", - "typeString": "tuple()" - } - }, - "id": 1154, - "nodeType": "ExpressionStatement", - "src": "375:17:8" - } - ] - }, - "functionSelector": "40c10f19", - "id": 1156, - "implemented": true, - "kind": "function", - "modifiers": [ - { - "id": 1148, - "kind": "modifierInvocation", - "modifierName": { - "id": 1147, - "name": "onlyOwner", - "nameLocations": [ - "355:9:8" - ], - "nodeType": "IdentifierPath", - "referencedDeclaration": 58, - "src": "355:9:8" - }, - "nodeType": "ModifierInvocation", - "src": "355:9:8" - } - ], - "name": "mint", - "nameLocation": "313:4:8", - "nodeType": "FunctionDefinition", - "parameters": { - "id": 1146, + "id": 953, "nodeType": "ParameterList", "parameters": [ { "constant": false, - "id": 1143, + "id": 952, "mutability": "mutable", - "name": "to", - "nameLocation": "326:2:8", + "name": "", + "nameLocation": "-1:-1:-1", "nodeType": "VariableDeclaration", - "scope": 1156, - "src": "318:10:8", + "scope": 954, + "src": "2376:4:6", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" + "typeIdentifier": "t_bool", + "typeString": "bool" }, "typeName": { - "id": 1142, - "name": "address", + "id": 951, + "name": "bool", "nodeType": "ElementaryTypeName", - "src": "318:7:8", - "stateMutability": "nonpayable", + "src": "2376:4:6", "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" + "typeIdentifier": "t_bool", + "typeString": "bool" } }, "visibility": "internal" - }, - { + } + ], + "src": "2375:6:6" + }, + "scope": 967, + "src": "2309:73:6", + "stateMutability": "nonpayable", + "virtual": false, + "visibility": "external" + }, + { + "documentation": { + "id": 955, + "nodeType": "StructuredDocumentation", + "src": "2388:297:6", + "text": " @dev Moves a `value` amount of tokens from `from` to `to` using the\n allowance mechanism. `value` is then deducted from the caller's\n allowance.\n Returns a boolean value indicating whether the operation succeeded.\n Emits a {Transfer} event." + }, + "functionSelector": "23b872dd", + "id": 966, + "implemented": false, + "kind": "function", + "modifiers": [], + "name": "transferFrom", + "nameLocation": "2699:12:6", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 962, + "nodeType": "ParameterList", + "parameters": [ + { "constant": false, - "id": 1145, + "id": 957, "mutability": "mutable", - "name": "amount", - "nameLocation": "338:6:8", + "name": "from", + "nameLocation": "2720:4:6", + "nodeType": "VariableDeclaration", + "scope": 966, + "src": "2712:12:6", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 956, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "2712:7:6", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 959, + "mutability": "mutable", + "name": "to", + "nameLocation": "2734:2:6", + "nodeType": "VariableDeclaration", + "scope": 966, + "src": "2726:10:6", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 958, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "2726:7:6", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 961, + "mutability": "mutable", + "name": "value", + "nameLocation": "2746:5:6", "nodeType": "VariableDeclaration", - "scope": 1156, - "src": "330:14:8", + "scope": 966, + "src": "2738:13:6", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -13546,10 +11636,10 @@ "typeString": "uint256" }, "typeName": { - "id": 1144, + "id": 960, "name": "uint256", "nodeType": "ElementaryTypeName", - "src": "330:7:8", + "src": "2738:7:6", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -13558,715 +11648,501 @@ "visibility": "internal" } ], - "src": "317:28:8" + "src": "2711:41:6" }, "returnParameters": { - "id": 1149, + "id": 965, "nodeType": "ParameterList", - "parameters": [], - "src": "365:0:8" + "parameters": [ + { + "constant": false, + "id": 964, + "mutability": "mutable", + "name": "", + "nameLocation": "-1:-1:-1", + "nodeType": "VariableDeclaration", + "scope": 966, + "src": "2771:4:6", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "typeName": { + "id": 963, + "name": "bool", + "nodeType": "ElementaryTypeName", + "src": "2771:4:6", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "visibility": "internal" + } + ], + "src": "2770:6:6" }, - "scope": 1157, - "src": "304:95:8", + "scope": 967, + "src": "2690:87:6", "stateMutability": "nonpayable", "virtual": false, "visibility": "external" } ], - "scope": 1158, - "src": "167:234:8", - "usedErrors": [ - 13, - 18, - 159, - 164, - 169, - 178, - 183, - 188 - ], + "scope": 968, + "src": "204:2575:6", + "usedErrors": [], "usedEvents": [ - 24, - 811, - 820 + 901, + 910 ] } ], - "src": "32:370:8" + "src": "106:2674:6" }, - "id": 8 + "id": 6 }, - "contracts/vesting.sol": { + "@openzeppelin/contracts/token/ERC20/extensions/IERC20Metadata.sol": { "ast": { - "absolutePath": "contracts/vesting.sol", + "absolutePath": "@openzeppelin/contracts/token/ERC20/extensions/IERC20Metadata.sol", "exportedSymbols": { - "Context": [ - 933 - ], "IERC20": [ - 877 - ], - "Ownable": [ - 147 - ], - "Pausable": [ - 1050 + 967 ], - "ReentrancyGuard": [ - 1119 - ], - "TokenVesting": [ - 1636 + "IERC20Metadata": [ + 993 ] }, - "id": 1637, + "id": 994, "license": "MIT", "nodeType": "SourceUnit", "nodes": [ { - "id": 1159, + "id": 969, "literals": [ "solidity", "^", "0.8", - ".0" + ".20" ], "nodeType": "PragmaDirective", - "src": "32:23:9" + "src": "125:24:7" }, { "absolutePath": "@openzeppelin/contracts/token/ERC20/IERC20.sol", - "file": "@openzeppelin/contracts/token/ERC20/IERC20.sol", - "id": 1160, - "nameLocation": "-1:-1:-1", - "nodeType": "ImportDirective", - "scope": 1637, - "sourceUnit": 878, - "src": "57:56:9", - "symbolAliases": [], - "unitAlias": "" - }, - { - "absolutePath": "@openzeppelin/contracts/access/Ownable.sol", - "file": "@openzeppelin/contracts/access/Ownable.sol", - "id": 1161, - "nameLocation": "-1:-1:-1", - "nodeType": "ImportDirective", - "scope": 1637, - "sourceUnit": 148, - "src": "114:52:9", - "symbolAliases": [], - "unitAlias": "" - }, - { - "absolutePath": "@openzeppelin/contracts/utils/Pausable.sol", - "file": "@openzeppelin/contracts/utils/Pausable.sol", - "id": 1162, - "nameLocation": "-1:-1:-1", - "nodeType": "ImportDirective", - "scope": 1637, - "sourceUnit": 1051, - "src": "167:52:9", - "symbolAliases": [], - "unitAlias": "" - }, - { - "absolutePath": "@openzeppelin/contracts/utils/ReentrancyGuard.sol", - "file": "@openzeppelin/contracts/utils/ReentrancyGuard.sol", - "id": 1163, + "file": "../IERC20.sol", + "id": 971, "nameLocation": "-1:-1:-1", "nodeType": "ImportDirective", - "scope": 1637, - "sourceUnit": 1120, - "src": "220:59:9", - "symbolAliases": [], + "scope": 994, + "sourceUnit": 968, + "src": "151:37:7", + "symbolAliases": [ + { + "foreign": { + "id": 970, + "name": "IERC20", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 967, + "src": "159:6:7", + "typeDescriptions": {} + }, + "nameLocation": "-1:-1:-1" + } + ], "unitAlias": "" }, { "abstract": false, "baseContracts": [ - { - "arguments": [ - { - "expression": { - "id": 1165, - "name": "msg", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": -15, - "src": "314:3:9", - "typeDescriptions": { - "typeIdentifier": "t_magic_message", - "typeString": "msg" - } - }, - "id": 1166, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "memberLocation": "318:6:9", - "memberName": "sender", - "nodeType": "MemberAccess", - "src": "314:10:9", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - } - ], - "baseName": { - "id": 1164, - "name": "Ownable", - "nameLocations": [ - "306:7:9" - ], - "nodeType": "IdentifierPath", - "referencedDeclaration": 147, - "src": "306:7:9" - }, - "id": 1167, - "nodeType": "InheritanceSpecifier", - "src": "306:19:9" - }, - { - "baseName": { - "id": 1168, - "name": "Pausable", - "nameLocations": [ - "327:8:9" - ], - "nodeType": "IdentifierPath", - "referencedDeclaration": 1050, - "src": "327:8:9" - }, - "id": 1169, - "nodeType": "InheritanceSpecifier", - "src": "327:8:9" - }, { "baseName": { - "id": 1170, - "name": "ReentrancyGuard", + "id": 973, + "name": "IERC20", "nameLocations": [ - "337:15:9" + "306:6:7" ], "nodeType": "IdentifierPath", - "referencedDeclaration": 1119, - "src": "337:15:9" + "referencedDeclaration": 967, + "src": "306:6:7" }, - "id": 1171, + "id": 974, "nodeType": "InheritanceSpecifier", - "src": "337:15:9" + "src": "306:6:7" } ], - "canonicalName": "TokenVesting", + "canonicalName": "IERC20Metadata", "contractDependencies": [], - "contractKind": "contract", - "fullyImplemented": true, - "id": 1636, + "contractKind": "interface", + "documentation": { + "id": 972, + "nodeType": "StructuredDocumentation", + "src": "190:87:7", + "text": " @dev Interface for the optional metadata functions from the ERC-20 standard." + }, + "fullyImplemented": false, + "id": 993, "linearizedBaseContracts": [ - 1636, - 1119, - 1050, - 147, - 933 + 993, + 967 ], - "name": "TokenVesting", - "nameLocation": "290:12:9", + "name": "IERC20Metadata", + "nameLocation": "288:14:7", "nodeType": "ContractDefinition", "nodes": [ { - "canonicalName": "TokenVesting.VestingSchedule", - "id": 1184, - "members": [ - { - "constant": false, - "id": 1173, - "mutability": "mutable", - "name": "totalAmount", - "nameLocation": "400:11:9", - "nodeType": "VariableDeclaration", - "scope": 1184, - "src": "392:19:9", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "typeName": { - "id": 1172, - "name": "uint256", - "nodeType": "ElementaryTypeName", - "src": "392:7:9", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "visibility": "internal" - }, - { - "constant": false, - "id": 1175, - "mutability": "mutable", - "name": "startTime", - "nameLocation": "429:9:9", - "nodeType": "VariableDeclaration", - "scope": 1184, - "src": "421:17:9", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "typeName": { - "id": 1174, - "name": "uint256", - "nodeType": "ElementaryTypeName", - "src": "421:7:9", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "visibility": "internal" - }, - { - "constant": false, - "id": 1177, - "mutability": "mutable", - "name": "cliffDuration", - "nameLocation": "456:13:9", - "nodeType": "VariableDeclaration", - "scope": 1184, - "src": "448:21:9", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "typeName": { - "id": 1176, - "name": "uint256", - "nodeType": "ElementaryTypeName", - "src": "448:7:9", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "visibility": "internal" - }, - { - "constant": false, - "id": 1179, - "mutability": "mutable", - "name": "vestingDuration", - "nameLocation": "487:15:9", - "nodeType": "VariableDeclaration", - "scope": 1184, - "src": "479:23:9", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "typeName": { - "id": 1178, - "name": "uint256", - "nodeType": "ElementaryTypeName", - "src": "479:7:9", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "visibility": "internal" - }, - { - "constant": false, - "id": 1181, - "mutability": "mutable", - "name": "amountClaimed", - "nameLocation": "520:13:9", - "nodeType": "VariableDeclaration", - "scope": 1184, - "src": "512:21:9", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "typeName": { - "id": 1180, - "name": "uint256", - "nodeType": "ElementaryTypeName", - "src": "512:7:9", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "visibility": "internal" - }, - { - "constant": false, - "id": 1183, - "mutability": "mutable", - "name": "revoked", - "nameLocation": "548:7:9", - "nodeType": "VariableDeclaration", - "scope": 1184, - "src": "543:12:9", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - }, - "typeName": { - "id": 1182, - "name": "bool", - "nodeType": "ElementaryTypeName", - "src": "543:4:9", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - }, - "visibility": "internal" - } - ], - "name": "VestingSchedule", - "nameLocation": "366:15:9", - "nodeType": "StructDefinition", - "scope": 1636, - "src": "359:203:9", - "visibility": "public" - }, - { - "constant": false, - "functionSelector": "fc0c546a", - "id": 1187, - "mutability": "immutable", - "name": "token", - "nameLocation": "618:5:9", - "nodeType": "VariableDeclaration", - "scope": 1636, - "src": "594:29:9", - "stateVariable": true, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_contract$_IERC20_$877", - "typeString": "contract IERC20" - }, - "typeName": { - "id": 1186, - "nodeType": "UserDefinedTypeName", - "pathNode": { - "id": 1185, - "name": "IERC20", - "nameLocations": [ - "594:6:9" - ], - "nodeType": "IdentifierPath", - "referencedDeclaration": 877, - "src": "594:6:9" - }, - "referencedDeclaration": 877, - "src": "594:6:9", - "typeDescriptions": { - "typeIdentifier": "t_contract$_IERC20_$877", - "typeString": "contract IERC20" - } - }, - "visibility": "public" - }, - { - "constant": false, - "functionSelector": "fdb20ccb", - "id": 1192, - "mutability": "mutable", - "name": "vestingSchedules", - "nameLocation": "725:16:9", - "nodeType": "VariableDeclaration", - "scope": 1636, - "src": "682:59:9", - "stateVariable": true, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_mapping$_t_address_$_t_struct$_VestingSchedule_$1184_storage_$", - "typeString": "mapping(address => struct TokenVesting.VestingSchedule)" - }, - "typeName": { - "id": 1191, - "keyName": "", - "keyNameLocation": "-1:-1:-1", - "keyType": { - "id": 1188, - "name": "address", - "nodeType": "ElementaryTypeName", - "src": "690:7:9", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "nodeType": "Mapping", - "src": "682:35:9", - "typeDescriptions": { - "typeIdentifier": "t_mapping$_t_address_$_t_struct$_VestingSchedule_$1184_storage_$", - "typeString": "mapping(address => struct TokenVesting.VestingSchedule)" - }, - "valueName": "", - "valueNameLocation": "-1:-1:-1", - "valueType": { - "id": 1190, - "nodeType": "UserDefinedTypeName", - "pathNode": { - "id": 1189, - "name": "VestingSchedule", - "nameLocations": [ - "701:15:9" - ], - "nodeType": "IdentifierPath", - "referencedDeclaration": 1184, - "src": "701:15:9" - }, - "referencedDeclaration": 1184, - "src": "701:15:9", - "typeDescriptions": { - "typeIdentifier": "t_struct$_VestingSchedule_$1184_storage_ptr", - "typeString": "struct TokenVesting.VestingSchedule" - } - } - }, - "visibility": "public" - }, - { - "constant": false, - "functionSelector": "9b19251a", - "id": 1196, - "mutability": "mutable", - "name": "whitelist", - "nameLocation": "814:9:9", - "nodeType": "VariableDeclaration", - "scope": 1636, - "src": "782:41:9", - "stateVariable": true, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_mapping$_t_address_$_t_bool_$", - "typeString": "mapping(address => bool)" - }, - "typeName": { - "id": 1195, - "keyName": "", - "keyNameLocation": "-1:-1:-1", - "keyType": { - "id": 1193, - "name": "address", - "nodeType": "ElementaryTypeName", - "src": "790:7:9", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "nodeType": "Mapping", - "src": "782:24:9", - "typeDescriptions": { - "typeIdentifier": "t_mapping$_t_address_$_t_bool_$", - "typeString": "mapping(address => bool)" - }, - "valueName": "", - "valueNameLocation": "-1:-1:-1", - "valueType": { - "id": 1194, - "name": "bool", - "nodeType": "ElementaryTypeName", - "src": "801:4:9", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - } + "documentation": { + "id": 975, + "nodeType": "StructuredDocumentation", + "src": "319:54:7", + "text": " @dev Returns the name of the token." }, - "visibility": "public" - }, - { - "anonymous": false, - "eventSelector": "969705509595726740fe60cc30769bbd53c883efff4d8e70108a82817e0392a9", - "id": 1202, - "name": "VestingScheduleCreated", - "nameLocation": "850:22:9", - "nodeType": "EventDefinition", + "functionSelector": "06fdde03", + "id": 980, + "implemented": false, + "kind": "function", + "modifiers": [], + "name": "name", + "nameLocation": "387:4:7", + "nodeType": "FunctionDefinition", "parameters": { - "id": 1201, + "id": 976, + "nodeType": "ParameterList", + "parameters": [], + "src": "391:2:7" + }, + "returnParameters": { + "id": 979, "nodeType": "ParameterList", "parameters": [ { "constant": false, - "id": 1198, - "indexed": true, + "id": 978, "mutability": "mutable", - "name": "beneficiary", - "nameLocation": "889:11:9", + "name": "", + "nameLocation": "-1:-1:-1", "nodeType": "VariableDeclaration", - "scope": 1202, - "src": "873:27:9", + "scope": 980, + "src": "417:13:7", "stateVariable": false, - "storageLocation": "default", + "storageLocation": "memory", "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" + "typeIdentifier": "t_string_memory_ptr", + "typeString": "string" }, "typeName": { - "id": 1197, - "name": "address", + "id": 977, + "name": "string", "nodeType": "ElementaryTypeName", - "src": "873:7:9", - "stateMutability": "nonpayable", + "src": "417:6:7", "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "visibility": "internal" - }, - { - "constant": false, - "id": 1200, - "indexed": false, - "mutability": "mutable", - "name": "amount", - "nameLocation": "910:6:9", - "nodeType": "VariableDeclaration", - "scope": 1202, - "src": "902:14:9", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "typeName": { - "id": 1199, - "name": "uint256", - "nodeType": "ElementaryTypeName", - "src": "902:7:9", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" + "typeIdentifier": "t_string_storage_ptr", + "typeString": "string" } }, "visibility": "internal" } ], - "src": "872:45:9" + "src": "416:15:7" }, - "src": "844:74:9" + "scope": 993, + "src": "378:54:7", + "stateMutability": "view", + "virtual": false, + "visibility": "external" }, { - "anonymous": false, - "eventSelector": "896e034966eaaf1adc54acc0f257056febbd300c9e47182cf761982cf1f5e430", - "id": 1208, - "name": "TokensClaimed", - "nameLocation": "929:13:9", - "nodeType": "EventDefinition", + "documentation": { + "id": 981, + "nodeType": "StructuredDocumentation", + "src": "438:56:7", + "text": " @dev Returns the symbol of the token." + }, + "functionSelector": "95d89b41", + "id": 986, + "implemented": false, + "kind": "function", + "modifiers": [], + "name": "symbol", + "nameLocation": "508:6:7", + "nodeType": "FunctionDefinition", "parameters": { - "id": 1207, + "id": 982, + "nodeType": "ParameterList", + "parameters": [], + "src": "514:2:7" + }, + "returnParameters": { + "id": 985, "nodeType": "ParameterList", "parameters": [ { "constant": false, - "id": 1204, - "indexed": true, + "id": 984, "mutability": "mutable", - "name": "beneficiary", - "nameLocation": "959:11:9", + "name": "", + "nameLocation": "-1:-1:-1", "nodeType": "VariableDeclaration", - "scope": 1208, - "src": "943:27:9", + "scope": 986, + "src": "540:13:7", "stateVariable": false, - "storageLocation": "default", + "storageLocation": "memory", "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" + "typeIdentifier": "t_string_memory_ptr", + "typeString": "string" }, "typeName": { - "id": 1203, - "name": "address", + "id": 983, + "name": "string", "nodeType": "ElementaryTypeName", - "src": "943:7:9", - "stateMutability": "nonpayable", + "src": "540:6:7", "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" + "typeIdentifier": "t_string_storage_ptr", + "typeString": "string" } }, "visibility": "internal" - }, + } + ], + "src": "539:15:7" + }, + "scope": 993, + "src": "499:56:7", + "stateMutability": "view", + "virtual": false, + "visibility": "external" + }, + { + "documentation": { + "id": 987, + "nodeType": "StructuredDocumentation", + "src": "561:65:7", + "text": " @dev Returns the decimals places of the token." + }, + "functionSelector": "313ce567", + "id": 992, + "implemented": false, + "kind": "function", + "modifiers": [], + "name": "decimals", + "nameLocation": "640:8:7", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 988, + "nodeType": "ParameterList", + "parameters": [], + "src": "648:2:7" + }, + "returnParameters": { + "id": 991, + "nodeType": "ParameterList", + "parameters": [ { "constant": false, - "id": 1206, - "indexed": false, + "id": 990, "mutability": "mutable", - "name": "amount", - "nameLocation": "980:6:9", + "name": "", + "nameLocation": "-1:-1:-1", "nodeType": "VariableDeclaration", - "scope": 1208, - "src": "972:14:9", + "scope": 992, + "src": "674:5:7", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" + "typeIdentifier": "t_uint8", + "typeString": "uint8" }, "typeName": { - "id": 1205, - "name": "uint256", + "id": 989, + "name": "uint8", "nodeType": "ElementaryTypeName", - "src": "972:7:9", + "src": "674:5:7", "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" + "typeIdentifier": "t_uint8", + "typeString": "uint8" } }, "visibility": "internal" } ], - "src": "942:45:9" + "src": "673:7:7" }, - "src": "923:65:9" - }, + "scope": 993, + "src": "631:50:7", + "stateMutability": "view", + "virtual": false, + "visibility": "external" + } + ], + "scope": 994, + "src": "278:405:7", + "usedErrors": [], + "usedEvents": [ + 901, + 910 + ] + } + ], + "src": "125:559:7" + }, + "id": 7 + }, + "@openzeppelin/contracts/token/ERC20/utils/SafeERC20.sol": { + "ast": { + "absolutePath": "@openzeppelin/contracts/token/ERC20/utils/SafeERC20.sol", + "exportedSymbols": { + "Address": [ + 1663 + ], + "IERC1363": [ + 229 + ], + "IERC20": [ + 967 + ], + "SafeERC20": [ + 1404 + ] + }, + "id": 1405, + "license": "MIT", + "nodeType": "SourceUnit", + "nodes": [ + { + "id": 995, + "literals": [ + "solidity", + "^", + "0.8", + ".20" + ], + "nodeType": "PragmaDirective", + "src": "115:24:8" + }, + { + "absolutePath": "@openzeppelin/contracts/token/ERC20/IERC20.sol", + "file": "../IERC20.sol", + "id": 997, + "nameLocation": "-1:-1:-1", + "nodeType": "ImportDirective", + "scope": 1405, + "sourceUnit": 968, + "src": "141:37:8", + "symbolAliases": [ { - "anonymous": false, - "eventSelector": "68d870ac0aff3819234e8a1fc8f357b40d75212f2dc8594b97690fa205b3bab2", - "id": 1212, - "name": "VestingRevoked", - "nameLocation": "999:14:9", - "nodeType": "EventDefinition", + "foreign": { + "id": 996, + "name": "IERC20", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 967, + "src": "149:6:8", + "typeDescriptions": {} + }, + "nameLocation": "-1:-1:-1" + } + ], + "unitAlias": "" + }, + { + "absolutePath": "@openzeppelin/contracts/interfaces/IERC1363.sol", + "file": "../../../interfaces/IERC1363.sol", + "id": 999, + "nameLocation": "-1:-1:-1", + "nodeType": "ImportDirective", + "scope": 1405, + "sourceUnit": 230, + "src": "179:58:8", + "symbolAliases": [ + { + "foreign": { + "id": 998, + "name": "IERC1363", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 229, + "src": "187:8:8", + "typeDescriptions": {} + }, + "nameLocation": "-1:-1:-1" + } + ], + "unitAlias": "" + }, + { + "absolutePath": "@openzeppelin/contracts/utils/Address.sol", + "file": "../../../utils/Address.sol", + "id": 1001, + "nameLocation": "-1:-1:-1", + "nodeType": "ImportDirective", + "scope": 1405, + "sourceUnit": 1664, + "src": "238:51:8", + "symbolAliases": [ + { + "foreign": { + "id": 1000, + "name": "Address", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1663, + "src": "246:7:8", + "typeDescriptions": {} + }, + "nameLocation": "-1:-1:-1" + } + ], + "unitAlias": "" + }, + { + "abstract": false, + "baseContracts": [], + "canonicalName": "SafeERC20", + "contractDependencies": [], + "contractKind": "library", + "documentation": { + "id": 1002, + "nodeType": "StructuredDocumentation", + "src": "291:458:8", + "text": " @title SafeERC20\n @dev Wrappers around ERC-20 operations that throw on failure (when the token\n contract returns false). Tokens that return no value (and instead revert or\n throw on failure) are also supported, non-reverting calls are assumed to be\n successful.\n To use this library you can add a `using SafeERC20 for IERC20;` statement to your contract,\n which allows you to call the safe operations as `token.safeTransfer(...)`, etc." + }, + "fullyImplemented": true, + "id": 1404, + "linearizedBaseContracts": [ + 1404 + ], + "name": "SafeERC20", + "nameLocation": "758:9:8", + "nodeType": "ContractDefinition", + "nodes": [ + { + "documentation": { + "id": 1003, + "nodeType": "StructuredDocumentation", + "src": "774:65:8", + "text": " @dev An operation with an ERC-20 token failed." + }, + "errorSelector": "5274afe7", + "id": 1007, + "name": "SafeERC20FailedOperation", + "nameLocation": "850:24:8", + "nodeType": "ErrorDefinition", "parameters": { - "id": 1211, + "id": 1006, "nodeType": "ParameterList", "parameters": [ { "constant": false, - "id": 1210, - "indexed": true, + "id": 1005, "mutability": "mutable", - "name": "beneficiary", - "nameLocation": "1030:11:9", + "name": "token", + "nameLocation": "883:5:8", "nodeType": "VariableDeclaration", - "scope": 1212, - "src": "1014:27:9", + "scope": 1007, + "src": "875:13:8", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -14274,10 +12150,10 @@ "typeString": "address" }, "typeName": { - "id": 1209, + "id": 1004, "name": "address", "nodeType": "ElementaryTypeName", - "src": "1014:7:9", + "src": "875:7:8", "stateMutability": "nonpayable", "typeDescriptions": { "typeIdentifier": "t_address", @@ -14287,31 +12163,35 @@ "visibility": "internal" } ], - "src": "1013:29:9" + "src": "874:15:8" }, - "src": "993:50:9" + "src": "844:46:8" }, { - "anonymous": false, - "eventSelector": "07e751107375f503d05dfa76b5038ce1c5b7d46e9e45768f913ac33378039439", - "id": 1216, - "name": "BeneficiaryWhitelisted", - "nameLocation": "1054:22:9", - "nodeType": "EventDefinition", + "documentation": { + "id": 1008, + "nodeType": "StructuredDocumentation", + "src": "896:71:8", + "text": " @dev Indicates a failed `decreaseAllowance` request." + }, + "errorSelector": "e570110f", + "id": 1016, + "name": "SafeERC20FailedDecreaseAllowance", + "nameLocation": "978:32:8", + "nodeType": "ErrorDefinition", "parameters": { - "id": 1215, + "id": 1015, "nodeType": "ParameterList", "parameters": [ { "constant": false, - "id": 1214, - "indexed": true, + "id": 1010, "mutability": "mutable", - "name": "beneficiary", - "nameLocation": "1093:11:9", + "name": "spender", + "nameLocation": "1019:7:8", "nodeType": "VariableDeclaration", - "scope": 1216, - "src": "1077:27:9", + "scope": 1016, + "src": "1011:15:8", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -14319,10 +12199,10 @@ "typeString": "address" }, "typeName": { - "id": 1213, + "id": 1009, "name": "address", "nodeType": "ElementaryTypeName", - "src": "1077:7:9", + "src": "1011:7:8", "stateMutability": "nonpayable", "typeDescriptions": { "typeIdentifier": "t_address", @@ -14330,200 +12210,235 @@ } }, "visibility": "internal" - } - ], - "src": "1076:29:9" - }, - "src": "1048:58:9" - }, - { - "anonymous": false, - "eventSelector": "1ecef1b5180dc14b16608c5c5ec1fa28998e2f94e460b91c1b50bdfb643cc138", - "id": 1220, - "name": "BeneficiaryRemovedFromWhitelist", - "nameLocation": "1117:31:9", - "nodeType": "EventDefinition", - "parameters": { - "id": 1219, - "nodeType": "ParameterList", - "parameters": [ + }, { "constant": false, - "id": 1218, - "indexed": true, + "id": 1012, "mutability": "mutable", - "name": "beneficiary", - "nameLocation": "1165:11:9", + "name": "currentAllowance", + "nameLocation": "1036:16:8", "nodeType": "VariableDeclaration", - "scope": 1220, - "src": "1149:27:9", + "scope": 1016, + "src": "1028:24:8", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" + "typeIdentifier": "t_uint256", + "typeString": "uint256" }, "typeName": { - "id": 1217, - "name": "address", + "id": 1011, + "name": "uint256", "nodeType": "ElementaryTypeName", - "src": "1149:7:9", - "stateMutability": "nonpayable", + "src": "1028:7:8", "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 1014, + "mutability": "mutable", + "name": "requestedDecrease", + "nameLocation": "1062:17:8", + "nodeType": "VariableDeclaration", + "scope": 1016, + "src": "1054:25:8", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 1013, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "1054:7:8", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" } }, "visibility": "internal" } ], - "src": "1148:29:9" + "src": "1010:70:8" }, - "src": "1111:67:9" + "src": "972:109:8" }, { "body": { - "id": 1241, + "id": 1039, "nodeType": "Block", - "src": "1218:115:9", + "src": "1343:88:8", "statements": [ { "expression": { "arguments": [ { - "commonType": { - "typeIdentifier": "t_address", - "typeString": "address" - }, - "id": 1231, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftExpression": { - "id": 1226, - "name": "tokenAddress", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 1222, - "src": "1236:12:9", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "nodeType": "BinaryOperation", - "operator": "!=", - "rightExpression": { - "arguments": [ - { - "hexValue": "30", - "id": 1229, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "number", - "lValueRequested": false, - "nodeType": "Literal", - "src": "1260:1:9", + "id": 1028, + "name": "token", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1020, + "src": "1373:5:8", + "typeDescriptions": { + "typeIdentifier": "t_contract$_IERC20_$967", + "typeString": "contract IERC20" + } + }, + { + "arguments": [ + { + "expression": { + "id": 1031, + "name": "token", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1020, + "src": "1395:5:8", "typeDescriptions": { - "typeIdentifier": "t_rational_0_by_1", - "typeString": "int_const 0" - }, - "value": "0" + "typeIdentifier": "t_contract$_IERC20_$967", + "typeString": "contract IERC20" + } + }, + "id": 1032, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberLocation": "1401:8:8", + "memberName": "transfer", + "nodeType": "MemberAccess", + "referencedDeclaration": 934, + "src": "1395:14:8", + "typeDescriptions": { + "typeIdentifier": "t_function_external_nonpayable$_t_address_$_t_uint256_$returns$_t_bool_$", + "typeString": "function (address,uint256) external returns (bool)" } - ], - "expression": { - "argumentTypes": [ + }, + { + "components": [ { - "typeIdentifier": "t_rational_0_by_1", - "typeString": "int_const 0" + "id": 1033, + "name": "to", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1022, + "src": "1412:2:8", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "id": 1034, + "name": "value", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1024, + "src": "1416:5:8", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } } ], - "id": 1228, + "id": 1035, "isConstant": false, + "isInlineArray": false, "isLValue": false, - "isPure": true, + "isPure": false, "lValueRequested": false, - "nodeType": "ElementaryTypeNameExpression", - "src": "1252:7:9", + "nodeType": "TupleExpression", + "src": "1411:11:8", "typeDescriptions": { - "typeIdentifier": "t_type$_t_address_$", - "typeString": "type(address)" + "typeIdentifier": "t_tuple$_t_address_$_t_uint256_$", + "typeString": "tuple(address,uint256)" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_function_external_nonpayable$_t_address_$_t_uint256_$returns$_t_bool_$", + "typeString": "function (address,uint256) external returns (bool)" }, - "typeName": { - "id": 1227, - "name": "address", - "nodeType": "ElementaryTypeName", - "src": "1252:7:9", - "typeDescriptions": {} + { + "typeIdentifier": "t_tuple$_t_address_$_t_uint256_$", + "typeString": "tuple(address,uint256)" + } + ], + "expression": { + "id": 1029, + "name": "abi", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": -1, + "src": "1380:3:8", + "typeDescriptions": { + "typeIdentifier": "t_magic_abi", + "typeString": "abi" } }, - "id": 1230, + "id": 1030, "isConstant": false, "isLValue": false, "isPure": true, - "kind": "typeConversion", "lValueRequested": false, - "nameLocations": [], - "names": [], - "nodeType": "FunctionCall", - "src": "1252:10:9", - "tryCall": false, + "memberLocation": "1384:10:8", + "memberName": "encodeCall", + "nodeType": "MemberAccess", + "src": "1380:14:8", "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" + "typeIdentifier": "t_function_abiencodecall_pure$__$returns$_t_bytes_memory_ptr_$", + "typeString": "function () pure returns (bytes memory)" } }, - "src": "1236:26:9", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - }, - { - "hexValue": "496e76616c696420746f6b656e2061646472657373", - "id": 1232, + "id": 1036, "isConstant": false, "isLValue": false, - "isPure": true, - "kind": "string", + "isPure": false, + "kind": "functionCall", "lValueRequested": false, - "nodeType": "Literal", - "src": "1264:23:9", + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "1380:43:8", + "tryCall": false, "typeDescriptions": { - "typeIdentifier": "t_stringliteral_d34df3e6e5f402d3417b1a16a0a8a7541b184d7fb338e177a15236f4037e3743", - "typeString": "literal_string \"Invalid token address\"" - }, - "value": "Invalid token address" + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + } } ], "expression": { "argumentTypes": [ { - "typeIdentifier": "t_bool", - "typeString": "bool" + "typeIdentifier": "t_contract$_IERC20_$967", + "typeString": "contract IERC20" }, { - "typeIdentifier": "t_stringliteral_d34df3e6e5f402d3417b1a16a0a8a7541b184d7fb338e177a15236f4037e3743", - "typeString": "literal_string \"Invalid token address\"" + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" } ], - "id": 1225, - "name": "require", + "id": 1027, + "name": "_callOptionalReturn", "nodeType": "Identifier", - "overloadedDeclarations": [ - -18, - -18 - ], - "referencedDeclaration": -18, - "src": "1228:7:9", + "overloadedDeclarations": [], + "referencedDeclaration": 1362, + "src": "1353:19:8", "typeDescriptions": { - "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", - "typeString": "function (bool,string memory) pure" + "typeIdentifier": "t_function_internal_nonpayable$_t_contract$_IERC20_$967_$_t_bytes_memory_ptr_$returns$__$", + "typeString": "function (contract IERC20,bytes memory)" } }, - "id": 1233, + "id": 1037, "isConstant": false, "isLValue": false, "isPure": false, @@ -14532,119 +12447,82 @@ "nameLocations": [], "names": [], "nodeType": "FunctionCall", - "src": "1228:60:9", + "src": "1353:71:8", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, - "id": 1234, - "nodeType": "ExpressionStatement", - "src": "1228:60:9" - }, - { - "expression": { - "id": 1239, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftHandSide": { - "id": 1235, - "name": "token", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 1187, - "src": "1298:5:9", - "typeDescriptions": { - "typeIdentifier": "t_contract$_IERC20_$877", - "typeString": "contract IERC20" - } - }, - "nodeType": "Assignment", - "operator": "=", - "rightHandSide": { - "arguments": [ - { - "id": 1237, - "name": "tokenAddress", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 1222, - "src": "1313:12:9", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_address", - "typeString": "address" - } - ], - "id": 1236, - "name": "IERC20", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 877, - "src": "1306:6:9", - "typeDescriptions": { - "typeIdentifier": "t_type$_t_contract$_IERC20_$877_$", - "typeString": "type(contract IERC20)" - } - }, - "id": 1238, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "typeConversion", - "lValueRequested": false, - "nameLocations": [], - "names": [], - "nodeType": "FunctionCall", - "src": "1306:20:9", - "tryCall": false, - "typeDescriptions": { - "typeIdentifier": "t_contract$_IERC20_$877", - "typeString": "contract IERC20" - } - }, - "src": "1298:28:9", - "typeDescriptions": { - "typeIdentifier": "t_contract$_IERC20_$877", - "typeString": "contract IERC20" - } - }, - "id": 1240, + "id": 1038, "nodeType": "ExpressionStatement", - "src": "1298:28:9" + "src": "1353:71:8" } ] }, - "id": 1242, + "documentation": { + "id": 1017, + "nodeType": "StructuredDocumentation", + "src": "1087:179:8", + "text": " @dev Transfer `value` amount of `token` from the calling contract to `to`. If `token` returns no value,\n non-reverting calls are assumed to be successful." + }, + "id": 1040, "implemented": true, - "kind": "constructor", + "kind": "function", "modifiers": [], - "name": "", - "nameLocation": "-1:-1:-1", + "name": "safeTransfer", + "nameLocation": "1280:12:8", "nodeType": "FunctionDefinition", "parameters": { - "id": 1223, + "id": 1025, "nodeType": "ParameterList", "parameters": [ { "constant": false, - "id": 1222, + "id": 1020, "mutability": "mutable", - "name": "tokenAddress", - "nameLocation": "1204:12:9", + "name": "token", + "nameLocation": "1300:5:8", + "nodeType": "VariableDeclaration", + "scope": 1040, + "src": "1293:12:8", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_contract$_IERC20_$967", + "typeString": "contract IERC20" + }, + "typeName": { + "id": 1019, + "nodeType": "UserDefinedTypeName", + "pathNode": { + "id": 1018, + "name": "IERC20", + "nameLocations": [ + "1293:6:8" + ], + "nodeType": "IdentifierPath", + "referencedDeclaration": 967, + "src": "1293:6:8" + }, + "referencedDeclaration": 967, + "src": "1293:6:8", + "typeDescriptions": { + "typeIdentifier": "t_contract$_IERC20_$967", + "typeString": "contract IERC20" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 1022, + "mutability": "mutable", + "name": "to", + "nameLocation": "1315:2:8", "nodeType": "VariableDeclaration", - "scope": 1242, - "src": "1196:20:9", + "scope": 1040, + "src": "1307:10:8", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -14652,10 +12530,10 @@ "typeString": "address" }, "typeName": { - "id": 1221, + "id": 1021, "name": "address", "nodeType": "ElementaryTypeName", - "src": "1196:7:9", + "src": "1307:7:8", "stateMutability": "nonpayable", "typeDescriptions": { "typeIdentifier": "t_address", @@ -14663,111 +12541,230 @@ } }, "visibility": "internal" + }, + { + "constant": false, + "id": 1024, + "mutability": "mutable", + "name": "value", + "nameLocation": "1327:5:8", + "nodeType": "VariableDeclaration", + "scope": 1040, + "src": "1319:13:8", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 1023, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "1319:7:8", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" } ], - "src": "1195:22:9" + "src": "1292:41:8" }, "returnParameters": { - "id": 1224, + "id": 1026, "nodeType": "ParameterList", "parameters": [], - "src": "1218:0:9" + "src": "1343:0:8" }, - "scope": 1636, - "src": "1184:149:9", + "scope": 1404, + "src": "1271:160:8", "stateMutability": "nonpayable", "virtual": false, - "visibility": "public" + "visibility": "internal" }, { "body": { - "id": 1254, + "id": 1066, "nodeType": "Block", - "src": "1440:90:9", + "src": "1760:98:8", "statements": [ { "expression": { "arguments": [ { - "baseExpression": { - "id": 1247, - "name": "whitelist", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 1196, - "src": "1458:9:9", - "typeDescriptions": { - "typeIdentifier": "t_mapping$_t_address_$_t_bool_$", - "typeString": "mapping(address => bool)" - } - }, - "id": 1249, - "indexExpression": { - "id": 1248, - "name": "beneficiary", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 1244, - "src": "1468:11:9", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": false, - "nodeType": "IndexAccess", - "src": "1458:22:9", + "id": 1054, + "name": "token", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1044, + "src": "1790:5:8", "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" + "typeIdentifier": "t_contract$_IERC20_$967", + "typeString": "contract IERC20" } }, { - "hexValue": "42656e6566696369617279206e6f742077686974656c6973746564", - "id": 1250, + "arguments": [ + { + "expression": { + "id": 1057, + "name": "token", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1044, + "src": "1812:5:8", + "typeDescriptions": { + "typeIdentifier": "t_contract$_IERC20_$967", + "typeString": "contract IERC20" + } + }, + "id": 1058, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberLocation": "1818:12:8", + "memberName": "transferFrom", + "nodeType": "MemberAccess", + "referencedDeclaration": 966, + "src": "1812:18:8", + "typeDescriptions": { + "typeIdentifier": "t_function_external_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$_t_bool_$", + "typeString": "function (address,address,uint256) external returns (bool)" + } + }, + { + "components": [ + { + "id": 1059, + "name": "from", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1046, + "src": "1833:4:8", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "id": 1060, + "name": "to", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1048, + "src": "1839:2:8", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "id": 1061, + "name": "value", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1050, + "src": "1843:5:8", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "id": 1062, + "isConstant": false, + "isInlineArray": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "nodeType": "TupleExpression", + "src": "1832:17:8", + "typeDescriptions": { + "typeIdentifier": "t_tuple$_t_address_$_t_address_$_t_uint256_$", + "typeString": "tuple(address,address,uint256)" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_function_external_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$_t_bool_$", + "typeString": "function (address,address,uint256) external returns (bool)" + }, + { + "typeIdentifier": "t_tuple$_t_address_$_t_address_$_t_uint256_$", + "typeString": "tuple(address,address,uint256)" + } + ], + "expression": { + "id": 1055, + "name": "abi", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": -1, + "src": "1797:3:8", + "typeDescriptions": { + "typeIdentifier": "t_magic_abi", + "typeString": "abi" + } + }, + "id": 1056, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "memberLocation": "1801:10:8", + "memberName": "encodeCall", + "nodeType": "MemberAccess", + "src": "1797:14:8", + "typeDescriptions": { + "typeIdentifier": "t_function_abiencodecall_pure$__$returns$_t_bytes_memory_ptr_$", + "typeString": "function () pure returns (bytes memory)" + } + }, + "id": 1063, "isConstant": false, "isLValue": false, - "isPure": true, - "kind": "string", + "isPure": false, + "kind": "functionCall", "lValueRequested": false, - "nodeType": "Literal", - "src": "1482:29:9", + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "1797:53:8", + "tryCall": false, "typeDescriptions": { - "typeIdentifier": "t_stringliteral_33ba6c59384982a33c8d03efd40cd022501542cd14d2a647b97dcbf1ab55c9a8", - "typeString": "literal_string \"Beneficiary not whitelisted\"" - }, - "value": "Beneficiary not whitelisted" + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + } } ], "expression": { "argumentTypes": [ { - "typeIdentifier": "t_bool", - "typeString": "bool" + "typeIdentifier": "t_contract$_IERC20_$967", + "typeString": "contract IERC20" }, { - "typeIdentifier": "t_stringliteral_33ba6c59384982a33c8d03efd40cd022501542cd14d2a647b97dcbf1ab55c9a8", - "typeString": "literal_string \"Beneficiary not whitelisted\"" + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" } ], - "id": 1246, - "name": "require", + "id": 1053, + "name": "_callOptionalReturn", "nodeType": "Identifier", - "overloadedDeclarations": [ - -18, - -18 - ], - "referencedDeclaration": -18, - "src": "1450:7:9", + "overloadedDeclarations": [], + "referencedDeclaration": 1362, + "src": "1770:19:8", "typeDescriptions": { - "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", - "typeString": "function (bool,string memory) pure" + "typeIdentifier": "t_function_internal_nonpayable$_t_contract$_IERC20_$967_$_t_bytes_memory_ptr_$returns$__$", + "typeString": "function (contract IERC20,bytes memory)" } }, - "id": 1251, + "id": 1064, "isConstant": false, "isLValue": false, "isPure": false, @@ -14776,41 +12773,110 @@ "nameLocations": [], "names": [], "nodeType": "FunctionCall", - "src": "1450:62:9", + "src": "1770:81:8", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, - "id": 1252, + "id": 1065, "nodeType": "ExpressionStatement", - "src": "1450:62:9" - }, - { - "id": 1253, - "nodeType": "PlaceholderStatement", - "src": "1522:1:9" + "src": "1770:81:8" } ] }, - "id": 1255, - "name": "onlyWhitelisted", - "nameLocation": "1403:15:9", - "nodeType": "ModifierDefinition", + "documentation": { + "id": 1041, + "nodeType": "StructuredDocumentation", + "src": "1437:228:8", + "text": " @dev Transfer `value` amount of `token` from `from` to `to`, spending the approval given by `from` to the\n calling contract. If `token` returns no value, non-reverting calls are assumed to be successful." + }, + "id": 1067, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "safeTransferFrom", + "nameLocation": "1679:16:8", + "nodeType": "FunctionDefinition", "parameters": { - "id": 1245, + "id": 1051, "nodeType": "ParameterList", "parameters": [ { "constant": false, - "id": 1244, + "id": 1044, "mutability": "mutable", - "name": "beneficiary", - "nameLocation": "1427:11:9", + "name": "token", + "nameLocation": "1703:5:8", + "nodeType": "VariableDeclaration", + "scope": 1067, + "src": "1696:12:8", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_contract$_IERC20_$967", + "typeString": "contract IERC20" + }, + "typeName": { + "id": 1043, + "nodeType": "UserDefinedTypeName", + "pathNode": { + "id": 1042, + "name": "IERC20", + "nameLocations": [ + "1696:6:8" + ], + "nodeType": "IdentifierPath", + "referencedDeclaration": 967, + "src": "1696:6:8" + }, + "referencedDeclaration": 967, + "src": "1696:6:8", + "typeDescriptions": { + "typeIdentifier": "t_contract$_IERC20_$967", + "typeString": "contract IERC20" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 1046, + "mutability": "mutable", + "name": "from", + "nameLocation": "1718:4:8", + "nodeType": "VariableDeclaration", + "scope": 1067, + "src": "1710:12:8", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 1045, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "1710:7:8", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 1048, + "mutability": "mutable", + "name": "to", + "nameLocation": "1732:2:8", "nodeType": "VariableDeclaration", - "scope": 1255, - "src": "1419:19:9", + "scope": 1067, + "src": "1724:10:8", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -14818,10 +12884,10 @@ "typeString": "address" }, "typeName": { - "id": 1243, + "id": 1047, "name": "address", "nodeType": "ElementaryTypeName", - "src": "1419:7:9", + "src": "1724:7:8", "stateMutability": "nonpayable", "typeDescriptions": { "typeIdentifier": "t_address", @@ -14829,157 +12895,200 @@ } }, "visibility": "internal" + }, + { + "constant": false, + "id": 1050, + "mutability": "mutable", + "name": "value", + "nameLocation": "1744:5:8", + "nodeType": "VariableDeclaration", + "scope": 1067, + "src": "1736:13:8", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 1049, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "1736:7:8", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" } ], - "src": "1418:21:9" + "src": "1695:55:8" + }, + "returnParameters": { + "id": 1052, + "nodeType": "ParameterList", + "parameters": [], + "src": "1760:0:8" }, - "src": "1394:136:9", + "scope": 1404, + "src": "1670:188:8", + "stateMutability": "nonpayable", "virtual": false, "visibility": "internal" }, { "body": { - "id": 1282, + "id": 1097, "nodeType": "Block", - "src": "1600:159:9", + "src": "2600:139:8", "statements": [ { - "expression": { + "assignments": [ + 1079 + ], + "declarations": [ + { + "constant": false, + "id": 1079, + "mutability": "mutable", + "name": "oldAllowance", + "nameLocation": "2618:12:8", + "nodeType": "VariableDeclaration", + "scope": 1097, + "src": "2610:20:8", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 1078, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "2610:7:8", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "id": 1088, + "initialValue": { "arguments": [ { - "commonType": { - "typeIdentifier": "t_address", - "typeString": "address" + "arguments": [ + { + "id": 1084, + "name": "this", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": -28, + "src": "2657:4:8", + "typeDescriptions": { + "typeIdentifier": "t_contract$_SafeERC20_$1404", + "typeString": "library SafeERC20" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_contract$_SafeERC20_$1404", + "typeString": "library SafeERC20" + } + ], + "id": 1083, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "2649:7:8", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_address_$", + "typeString": "type(address)" + }, + "typeName": { + "id": 1082, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "2649:7:8", + "typeDescriptions": {} + } }, - "id": 1268, + "id": 1085, "isConstant": false, "isLValue": false, "isPure": false, + "kind": "typeConversion", "lValueRequested": false, - "leftExpression": { - "id": 1263, - "name": "beneficiary", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 1257, - "src": "1618:11:9", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "nodeType": "BinaryOperation", - "operator": "!=", - "rightExpression": { - "arguments": [ - { - "hexValue": "30", - "id": 1266, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "number", - "lValueRequested": false, - "nodeType": "Literal", - "src": "1641:1:9", - "typeDescriptions": { - "typeIdentifier": "t_rational_0_by_1", - "typeString": "int_const 0" - }, - "value": "0" - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_rational_0_by_1", - "typeString": "int_const 0" - } - ], - "id": 1265, - "isConstant": false, - "isLValue": false, - "isPure": true, - "lValueRequested": false, - "nodeType": "ElementaryTypeNameExpression", - "src": "1633:7:9", - "typeDescriptions": { - "typeIdentifier": "t_type$_t_address_$", - "typeString": "type(address)" - }, - "typeName": { - "id": 1264, - "name": "address", - "nodeType": "ElementaryTypeName", - "src": "1633:7:9", - "typeDescriptions": {} - } - }, - "id": 1267, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "typeConversion", - "lValueRequested": false, - "nameLocations": [], - "names": [], - "nodeType": "FunctionCall", - "src": "1633:10:9", - "tryCall": false, - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "src": "1618:25:9", + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "2649:13:8", + "tryCall": false, "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" + "typeIdentifier": "t_address", + "typeString": "address" } }, { - "hexValue": "496e76616c69642061646472657373", - "id": 1269, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "string", - "lValueRequested": false, - "nodeType": "Literal", - "src": "1645:17:9", + "id": 1086, + "name": "spender", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1073, + "src": "2664:7:8", "typeDescriptions": { - "typeIdentifier": "t_stringliteral_1462473b7a4b33d32b109b815fd2324d00c9e5839b707ecf16d0ab5744f99226", - "typeString": "literal_string \"Invalid address\"" - }, - "value": "Invalid address" + "typeIdentifier": "t_address", + "typeString": "address" + } } ], "expression": { "argumentTypes": [ { - "typeIdentifier": "t_bool", - "typeString": "bool" + "typeIdentifier": "t_address", + "typeString": "address" }, { - "typeIdentifier": "t_stringliteral_1462473b7a4b33d32b109b815fd2324d00c9e5839b707ecf16d0ab5744f99226", - "typeString": "literal_string \"Invalid address\"" + "typeIdentifier": "t_address", + "typeString": "address" } ], - "id": 1262, - "name": "require", - "nodeType": "Identifier", - "overloadedDeclarations": [ - -18, - -18 - ], - "referencedDeclaration": -18, - "src": "1610:7:9", + "expression": { + "id": 1080, + "name": "token", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1071, + "src": "2633:5:8", + "typeDescriptions": { + "typeIdentifier": "t_contract$_IERC20_$967", + "typeString": "contract IERC20" + } + }, + "id": 1081, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberLocation": "2639:9:8", + "memberName": "allowance", + "nodeType": "MemberAccess", + "referencedDeclaration": 944, + "src": "2633:15:8", "typeDescriptions": { - "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", - "typeString": "function (bool,string memory) pure" + "typeIdentifier": "t_function_external_view$_t_address_$_t_address_$returns$_t_uint256_$", + "typeString": "function (address,address) view external returns (uint256)" } }, - "id": 1270, + "id": 1087, "isConstant": false, "isLValue": false, "isPure": false, @@ -14988,124 +13097,113 @@ "nameLocations": [], "names": [], "nodeType": "FunctionCall", - "src": "1610:53:9", + "src": "2633:39:8", "tryCall": false, "typeDescriptions": { - "typeIdentifier": "t_tuple$__$", - "typeString": "tuple()" + "typeIdentifier": "t_uint256", + "typeString": "uint256" } }, - "id": 1271, - "nodeType": "ExpressionStatement", - "src": "1610:53:9" + "nodeType": "VariableDeclarationStatement", + "src": "2610:62:8" }, { "expression": { - "id": 1276, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftHandSide": { - "baseExpression": { - "id": 1272, - "name": "whitelist", + "arguments": [ + { + "id": 1090, + "name": "token", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1196, - "src": "1673:9:9", + "referencedDeclaration": 1071, + "src": "2695:5:8", "typeDescriptions": { - "typeIdentifier": "t_mapping$_t_address_$_t_bool_$", - "typeString": "mapping(address => bool)" + "typeIdentifier": "t_contract$_IERC20_$967", + "typeString": "contract IERC20" } }, - "id": 1274, - "indexExpression": { - "id": 1273, - "name": "beneficiary", + { + "id": 1091, + "name": "spender", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1257, - "src": "1683:11:9", + "referencedDeclaration": 1073, + "src": "2702:7:8", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": true, - "nodeType": "IndexAccess", - "src": "1673:22:9", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - }, - "nodeType": "Assignment", - "operator": "=", - "rightHandSide": { - "hexValue": "74727565", - "id": 1275, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "bool", - "lValueRequested": false, - "nodeType": "Literal", - "src": "1698:4:9", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - }, - "value": "true" - }, - "src": "1673:29:9", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - }, - "id": 1277, - "nodeType": "ExpressionStatement", - "src": "1673:29:9" - }, - { - "eventCall": { - "arguments": [ { - "id": 1279, - "name": "beneficiary", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 1257, - "src": "1740:11:9", + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 1094, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "id": 1092, + "name": "oldAllowance", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1079, + "src": "2711:12:8", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "+", + "rightExpression": { + "id": 1093, + "name": "value", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1075, + "src": "2726:5:8", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "2711:20:8", "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" + "typeIdentifier": "t_uint256", + "typeString": "uint256" } } ], "expression": { "argumentTypes": [ + { + "typeIdentifier": "t_contract$_IERC20_$967", + "typeString": "contract IERC20" + }, { "typeIdentifier": "t_address", "typeString": "address" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" } ], - "id": 1278, - "name": "BeneficiaryWhitelisted", + "id": 1089, + "name": "forceApprove", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1216, - "src": "1717:22:9", + "referencedDeclaration": 1188, + "src": "2682:12:8", "typeDescriptions": { - "typeIdentifier": "t_function_event_nonpayable$_t_address_$returns$__$", - "typeString": "function (address)" + "typeIdentifier": "t_function_internal_nonpayable$_t_contract$_IERC20_$967_$_t_address_$_t_uint256_$returns$__$", + "typeString": "function (contract IERC20,address,uint256)" } }, - "id": 1280, + "id": 1095, "isConstant": false, "isLValue": false, "isPure": false, @@ -15114,263 +13212,82 @@ "nameLocations": [], "names": [], "nodeType": "FunctionCall", - "src": "1717:35:9", + "src": "2682:50:8", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, - "id": 1281, - "nodeType": "EmitStatement", - "src": "1712:40:9" + "id": 1096, + "nodeType": "ExpressionStatement", + "src": "2682:50:8" } ] }, - "functionSelector": "e43252d7", - "id": 1283, + "documentation": { + "id": 1068, + "nodeType": "StructuredDocumentation", + "src": "1864:645:8", + "text": " @dev Increase the calling contract's allowance toward `spender` by `value`. If `token` returns no value,\n non-reverting calls are assumed to be successful.\n IMPORTANT: If the token implements ERC-7674 (ERC-20 with temporary allowance), and if the \"client\"\n smart contract uses ERC-7674 to set temporary allowances, then the \"client\" smart contract should avoid using\n this function. Performing a {safeIncreaseAllowance} or {safeDecreaseAllowance} operation on a token contract\n that has a non-zero temporary allowance (for that particular owner-spender) will result in unexpected behavior." + }, + "id": 1098, "implemented": true, "kind": "function", - "modifiers": [ - { - "id": 1260, - "kind": "modifierInvocation", - "modifierName": { - "id": 1259, - "name": "onlyOwner", - "nameLocations": [ - "1590:9:9" - ], - "nodeType": "IdentifierPath", - "referencedDeclaration": 58, - "src": "1590:9:9" - }, - "nodeType": "ModifierInvocation", - "src": "1590:9:9" - } - ], - "name": "addToWhitelist", - "nameLocation": "1545:14:9", + "modifiers": [], + "name": "safeIncreaseAllowance", + "nameLocation": "2523:21:8", "nodeType": "FunctionDefinition", "parameters": { - "id": 1258, + "id": 1076, "nodeType": "ParameterList", "parameters": [ { "constant": false, - "id": 1257, + "id": 1071, "mutability": "mutable", - "name": "beneficiary", - "nameLocation": "1568:11:9", + "name": "token", + "nameLocation": "2552:5:8", "nodeType": "VariableDeclaration", - "scope": 1283, - "src": "1560:19:9", + "scope": 1098, + "src": "2545:12:8", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" + "typeIdentifier": "t_contract$_IERC20_$967", + "typeString": "contract IERC20" }, "typeName": { - "id": 1256, - "name": "address", - "nodeType": "ElementaryTypeName", - "src": "1560:7:9", - "stateMutability": "nonpayable", + "id": 1070, + "nodeType": "UserDefinedTypeName", + "pathNode": { + "id": 1069, + "name": "IERC20", + "nameLocations": [ + "2545:6:8" + ], + "nodeType": "IdentifierPath", + "referencedDeclaration": 967, + "src": "2545:6:8" + }, + "referencedDeclaration": 967, + "src": "2545:6:8", "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" + "typeIdentifier": "t_contract$_IERC20_$967", + "typeString": "contract IERC20" } }, "visibility": "internal" - } - ], - "src": "1559:21:9" - }, - "returnParameters": { - "id": 1261, - "nodeType": "ParameterList", - "parameters": [], - "src": "1600:0:9" - }, - "scope": 1636, - "src": "1536:223:9", - "stateMutability": "nonpayable", - "virtual": false, - "visibility": "external" - }, - { - "body": { - "id": 1300, - "nodeType": "Block", - "src": "1834:106:9", - "statements": [ - { - "expression": { - "id": 1294, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftHandSide": { - "baseExpression": { - "id": 1290, - "name": "whitelist", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 1196, - "src": "1844:9:9", - "typeDescriptions": { - "typeIdentifier": "t_mapping$_t_address_$_t_bool_$", - "typeString": "mapping(address => bool)" - } - }, - "id": 1292, - "indexExpression": { - "id": 1291, - "name": "beneficiary", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 1285, - "src": "1854:11:9", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": true, - "nodeType": "IndexAccess", - "src": "1844:22:9", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - }, - "nodeType": "Assignment", - "operator": "=", - "rightHandSide": { - "hexValue": "66616c7365", - "id": 1293, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "bool", - "lValueRequested": false, - "nodeType": "Literal", - "src": "1869:5:9", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - }, - "value": "false" - }, - "src": "1844:30:9", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - }, - "id": 1295, - "nodeType": "ExpressionStatement", - "src": "1844:30:9" - }, - { - "eventCall": { - "arguments": [ - { - "id": 1297, - "name": "beneficiary", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 1285, - "src": "1921:11:9", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_address", - "typeString": "address" - } - ], - "id": 1296, - "name": "BeneficiaryRemovedFromWhitelist", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 1220, - "src": "1889:31:9", - "typeDescriptions": { - "typeIdentifier": "t_function_event_nonpayable$_t_address_$returns$__$", - "typeString": "function (address)" - } - }, - "id": 1298, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "nameLocations": [], - "names": [], - "nodeType": "FunctionCall", - "src": "1889:44:9", - "tryCall": false, - "typeDescriptions": { - "typeIdentifier": "t_tuple$__$", - "typeString": "tuple()" - } - }, - "id": 1299, - "nodeType": "EmitStatement", - "src": "1884:49:9" - } - ] - }, - "functionSelector": "8ab1d681", - "id": 1301, - "implemented": true, - "kind": "function", - "modifiers": [ - { - "id": 1288, - "kind": "modifierInvocation", - "modifierName": { - "id": 1287, - "name": "onlyOwner", - "nameLocations": [ - "1824:9:9" - ], - "nodeType": "IdentifierPath", - "referencedDeclaration": 58, - "src": "1824:9:9" }, - "nodeType": "ModifierInvocation", - "src": "1824:9:9" - } - ], - "name": "removeFromWhitelist", - "nameLocation": "1774:19:9", - "nodeType": "FunctionDefinition", - "parameters": { - "id": 1286, - "nodeType": "ParameterList", - "parameters": [ { "constant": false, - "id": 1285, + "id": 1073, "mutability": "mutable", - "name": "beneficiary", - "nameLocation": "1802:11:9", + "name": "spender", + "nameLocation": "2567:7:8", "nodeType": "VariableDeclaration", - "scope": 1301, - "src": "1794:19:9", + "scope": 1098, + "src": "2559:15:8", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -15378,10 +13295,10 @@ "typeString": "address" }, "typeName": { - "id": 1284, + "id": 1072, "name": "address", "nodeType": "ElementaryTypeName", - "src": "1794:7:9", + "src": "2559:7:8", "stateMutability": "nonpayable", "typeDescriptions": { "typeIdentifier": "t_address", @@ -15389,768 +13306,756 @@ } }, "visibility": "internal" + }, + { + "constant": false, + "id": 1075, + "mutability": "mutable", + "name": "value", + "nameLocation": "2584:5:8", + "nodeType": "VariableDeclaration", + "scope": 1098, + "src": "2576:13:8", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 1074, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "2576:7:8", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" } ], - "src": "1793:21:9" + "src": "2544:46:8" }, "returnParameters": { - "id": 1289, + "id": 1077, "nodeType": "ParameterList", "parameters": [], - "src": "1834:0:9" + "src": "2600:0:8" }, - "scope": 1636, - "src": "1765:175:9", + "scope": 1404, + "src": "2514:225:8", "stateMutability": "nonpayable", "virtual": false, - "visibility": "external" + "visibility": "internal" }, { "body": { - "id": 1402, + "id": 1140, "nodeType": "Block", - "src": "2189:989:9", + "src": "3505:370:8", "statements": [ { - "expression": { - "arguments": [ - { - "commonType": { - "typeIdentifier": "t_address", - "typeString": "address" - }, - "id": 1327, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftExpression": { - "id": 1322, - "name": "beneficiary", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 1303, - "src": "2207:11:9", + "id": 1139, + "nodeType": "UncheckedBlock", + "src": "3515:354:8", + "statements": [ + { + "assignments": [ + 1110 + ], + "declarations": [ + { + "constant": false, + "id": 1110, + "mutability": "mutable", + "name": "currentAllowance", + "nameLocation": "3547:16:8", + "nodeType": "VariableDeclaration", + "scope": 1139, + "src": "3539:24:8", + "stateVariable": false, + "storageLocation": "default", "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "nodeType": "BinaryOperation", - "operator": "!=", - "rightExpression": { - "arguments": [ - { - "hexValue": "30", - "id": 1325, + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 1109, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "3539:7:8", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "id": 1119, + "initialValue": { + "arguments": [ + { + "arguments": [ + { + "id": 1115, + "name": "this", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": -28, + "src": "3590:4:8", + "typeDescriptions": { + "typeIdentifier": "t_contract$_SafeERC20_$1404", + "typeString": "library SafeERC20" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_contract$_SafeERC20_$1404", + "typeString": "library SafeERC20" + } + ], + "id": 1114, "isConstant": false, "isLValue": false, "isPure": true, - "kind": "number", "lValueRequested": false, - "nodeType": "Literal", - "src": "2230:1:9", + "nodeType": "ElementaryTypeNameExpression", + "src": "3582:7:8", "typeDescriptions": { - "typeIdentifier": "t_rational_0_by_1", - "typeString": "int_const 0" + "typeIdentifier": "t_type$_t_address_$", + "typeString": "type(address)" }, - "value": "0" - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_rational_0_by_1", - "typeString": "int_const 0" + "typeName": { + "id": 1113, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "3582:7:8", + "typeDescriptions": {} } - ], - "id": 1324, + }, + "id": 1116, "isConstant": false, "isLValue": false, - "isPure": true, + "isPure": false, + "kind": "typeConversion", "lValueRequested": false, - "nodeType": "ElementaryTypeNameExpression", - "src": "2222:7:9", + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "3582:13:8", + "tryCall": false, "typeDescriptions": { - "typeIdentifier": "t_type$_t_address_$", - "typeString": "type(address)" - }, - "typeName": { - "id": 1323, - "name": "address", - "nodeType": "ElementaryTypeName", - "src": "2222:7:9", - "typeDescriptions": {} + "typeIdentifier": "t_address", + "typeString": "address" } }, - "id": 1326, + { + "id": 1117, + "name": "spender", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1104, + "src": "3597:7:8", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_address", + "typeString": "address" + } + ], + "expression": { + "id": 1111, + "name": "token", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1102, + "src": "3566:5:8", + "typeDescriptions": { + "typeIdentifier": "t_contract$_IERC20_$967", + "typeString": "contract IERC20" + } + }, + "id": 1112, "isConstant": false, "isLValue": false, - "isPure": true, - "kind": "typeConversion", + "isPure": false, "lValueRequested": false, - "nameLocations": [], - "names": [], - "nodeType": "FunctionCall", - "src": "2222:10:9", - "tryCall": false, + "memberLocation": "3572:9:8", + "memberName": "allowance", + "nodeType": "MemberAccess", + "referencedDeclaration": 944, + "src": "3566:15:8", "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" + "typeIdentifier": "t_function_external_view$_t_address_$_t_address_$returns$_t_uint256_$", + "typeString": "function (address,address) view external returns (uint256)" } }, - "src": "2207:25:9", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - }, - { - "hexValue": "496e76616c69642062656e6566696369617279", - "id": 1328, + "id": 1118, "isConstant": false, "isLValue": false, - "isPure": true, - "kind": "string", + "isPure": false, + "kind": "functionCall", "lValueRequested": false, - "nodeType": "Literal", - "src": "2234:21:9", + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "3566:39:8", + "tryCall": false, "typeDescriptions": { - "typeIdentifier": "t_stringliteral_86f5acfc12d2804bcf816c0b4c171086bf03352ff286fda75ac8ea27fcfb10a6", - "typeString": "literal_string \"Invalid beneficiary\"" - }, - "value": "Invalid beneficiary" - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_bool", - "typeString": "bool" - }, - { - "typeIdentifier": "t_stringliteral_86f5acfc12d2804bcf816c0b4c171086bf03352ff286fda75ac8ea27fcfb10a6", - "typeString": "literal_string \"Invalid beneficiary\"" + "typeIdentifier": "t_uint256", + "typeString": "uint256" } - ], - "id": 1321, - "name": "require", - "nodeType": "Identifier", - "overloadedDeclarations": [ - -18, - -18 - ], - "referencedDeclaration": -18, - "src": "2199:7:9", - "typeDescriptions": { - "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", - "typeString": "function (bool,string memory) pure" - } + }, + "nodeType": "VariableDeclarationStatement", + "src": "3539:66:8" }, - "id": 1329, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "nameLocations": [], - "names": [], - "nodeType": "FunctionCall", - "src": "2199:57:9", - "tryCall": false, - "typeDescriptions": { - "typeIdentifier": "t_tuple$__$", - "typeString": "tuple()" - } - }, - "id": 1330, - "nodeType": "ExpressionStatement", - "src": "2199:57:9" - }, - { - "expression": { - "arguments": [ - { + { + "condition": { "commonType": { "typeIdentifier": "t_uint256", "typeString": "uint256" }, - "id": 1334, + "id": 1122, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": { - "id": 1332, - "name": "amount", + "id": 1120, + "name": "currentAllowance", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1305, - "src": "2274:6:9", + "referencedDeclaration": 1110, + "src": "3623:16:8", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, "nodeType": "BinaryOperation", - "operator": ">", + "operator": "<", "rightExpression": { - "hexValue": "30", - "id": 1333, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "number", - "lValueRequested": false, - "nodeType": "Literal", - "src": "2283:1:9", - "typeDescriptions": { - "typeIdentifier": "t_rational_0_by_1", - "typeString": "int_const 0" - }, - "value": "0" - }, - "src": "2274:10:9", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - }, - { - "hexValue": "416d6f756e74206d757374206265203e2030", - "id": 1335, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "string", - "lValueRequested": false, - "nodeType": "Literal", - "src": "2286:20:9", - "typeDescriptions": { - "typeIdentifier": "t_stringliteral_01c242f1c806840acb94ec05d87d4647010419c53a053a581e0026b3f6467dbb", - "typeString": "literal_string \"Amount must be > 0\"" - }, - "value": "Amount must be > 0" - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_bool", - "typeString": "bool" - }, - { - "typeIdentifier": "t_stringliteral_01c242f1c806840acb94ec05d87d4647010419c53a053a581e0026b3f6467dbb", - "typeString": "literal_string \"Amount must be > 0\"" - } - ], - "id": 1331, - "name": "require", - "nodeType": "Identifier", - "overloadedDeclarations": [ - -18, - -18 - ], - "referencedDeclaration": -18, - "src": "2266:7:9", - "typeDescriptions": { - "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", - "typeString": "function (bool,string memory) pure" - } - }, - "id": 1336, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "nameLocations": [], - "names": [], - "nodeType": "FunctionCall", - "src": "2266:41:9", - "tryCall": false, - "typeDescriptions": { - "typeIdentifier": "t_tuple$__$", - "typeString": "tuple()" - } - }, - "id": 1337, - "nodeType": "ExpressionStatement", - "src": "2266:41:9" - }, - { - "expression": { - "arguments": [ - { - "commonType": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "id": 1341, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftExpression": { - "id": 1339, - "name": "vestingDuration", + "id": 1121, + "name": "requestedDecrease", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1309, - "src": "2325:15:9", + "referencedDeclaration": 1106, + "src": "3642:17:8", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, - "nodeType": "BinaryOperation", - "operator": ">", - "rightExpression": { - "hexValue": "30", - "id": 1340, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "number", - "lValueRequested": false, - "nodeType": "Literal", - "src": "2343:1:9", - "typeDescriptions": { - "typeIdentifier": "t_rational_0_by_1", - "typeString": "int_const 0" - }, - "value": "0" - }, - "src": "2325:19:9", + "src": "3623:36:8", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" } }, - { - "hexValue": "56657374696e67206475726174696f6e206d757374206265203e2030", - "id": 1342, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "string", - "lValueRequested": false, - "nodeType": "Literal", - "src": "2346:30:9", - "typeDescriptions": { - "typeIdentifier": "t_stringliteral_30b1e5a1edc6414baa83cc329bc7938b54a51203cd3d130b70720aa20811d690", - "typeString": "literal_string \"Vesting duration must be > 0\"" - }, - "value": "Vesting duration must be > 0" - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_bool", - "typeString": "bool" - }, - { - "typeIdentifier": "t_stringliteral_30b1e5a1edc6414baa83cc329bc7938b54a51203cd3d130b70720aa20811d690", - "typeString": "literal_string \"Vesting duration must be > 0\"" - } - ], - "id": 1338, - "name": "require", - "nodeType": "Identifier", - "overloadedDeclarations": [ - -18, - -18 - ], - "referencedDeclaration": -18, - "src": "2317:7:9", - "typeDescriptions": { - "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", - "typeString": "function (bool,string memory) pure" - } - }, - "id": 1343, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "nameLocations": [], - "names": [], - "nodeType": "FunctionCall", - "src": "2317:60:9", - "tryCall": false, - "typeDescriptions": { - "typeIdentifier": "t_tuple$__$", - "typeString": "tuple()" - } - }, - "id": 1344, - "nodeType": "ExpressionStatement", - "src": "2317:60:9" - }, - { - "expression": { - "arguments": [ - { - "commonType": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "id": 1348, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftExpression": { - "id": 1346, - "name": "vestingDuration", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 1309, - "src": "2408:15:9", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "nodeType": "BinaryOperation", - "operator": ">=", - "rightExpression": { - "id": 1347, - "name": "cliffDuration", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 1307, - "src": "2427:13:9", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" + "id": 1130, + "nodeType": "IfStatement", + "src": "3619:160:8", + "trueBody": { + "id": 1129, + "nodeType": "Block", + "src": "3661:118:8", + "statements": [ + { + "errorCall": { + "arguments": [ + { + "id": 1124, + "name": "spender", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1104, + "src": "3719:7:8", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "id": 1125, + "name": "currentAllowance", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1110, + "src": "3728:16:8", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + { + "id": 1126, + "name": "requestedDecrease", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1106, + "src": "3746:17:8", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "id": 1123, + "name": "SafeERC20FailedDecreaseAllowance", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1016, + "src": "3686:32:8", + "typeDescriptions": { + "typeIdentifier": "t_function_error_pure$_t_address_$_t_uint256_$_t_uint256_$returns$__$", + "typeString": "function (address,uint256,uint256) pure" + } + }, + "id": 1127, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "3686:78:8", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 1128, + "nodeType": "RevertStatement", + "src": "3679:85:8" } - }, - "src": "2408:32:9", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - }, - { - "hexValue": "56657374696e67206475726174696f6e206d757374206265203e3d20636c696666", - "id": 1349, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "string", - "lValueRequested": false, - "nodeType": "Literal", - "src": "2454:35:9", - "typeDescriptions": { - "typeIdentifier": "t_stringliteral_4e53fa0d705435dfad68b2037e4c3e913380fae5835e7293c5d3ebab37fd18b6", - "typeString": "literal_string \"Vesting duration must be >= cliff\"" - }, - "value": "Vesting duration must be >= cliff" - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_bool", - "typeString": "bool" - }, - { - "typeIdentifier": "t_stringliteral_4e53fa0d705435dfad68b2037e4c3e913380fae5835e7293c5d3ebab37fd18b6", - "typeString": "literal_string \"Vesting duration must be >= cliff\"" - } - ], - "id": 1345, - "name": "require", - "nodeType": "Identifier", - "overloadedDeclarations": [ - -18, - -18 - ], - "referencedDeclaration": -18, - "src": "2387:7:9", - "typeDescriptions": { - "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", - "typeString": "function (bool,string memory) pure" + ] } }, - "id": 1350, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "nameLocations": [], - "names": [], - "nodeType": "FunctionCall", - "src": "2387:112:9", - "tryCall": false, - "typeDescriptions": { - "typeIdentifier": "t_tuple$__$", - "typeString": "tuple()" - } - }, - "id": 1351, - "nodeType": "ExpressionStatement", - "src": "2387:112:9" - }, - { - "expression": { - "arguments": [ - { - "commonType": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "id": 1358, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftExpression": { - "expression": { - "baseExpression": { - "id": 1353, - "name": "vestingSchedules", + { + "expression": { + "arguments": [ + { + "id": 1132, + "name": "token", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1102, + "src": "3805:5:8", + "typeDescriptions": { + "typeIdentifier": "t_contract$_IERC20_$967", + "typeString": "contract IERC20" + } + }, + { + "id": 1133, + "name": "spender", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1104, + "src": "3812:7:8", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 1136, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "id": 1134, + "name": "currentAllowance", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1192, - "src": "2530:16:9", + "referencedDeclaration": 1110, + "src": "3821:16:8", "typeDescriptions": { - "typeIdentifier": "t_mapping$_t_address_$_t_struct$_VestingSchedule_$1184_storage_$", - "typeString": "mapping(address => struct TokenVesting.VestingSchedule storage ref)" + "typeIdentifier": "t_uint256", + "typeString": "uint256" } }, - "id": 1355, - "indexExpression": { - "id": 1354, - "name": "beneficiary", + "nodeType": "BinaryOperation", + "operator": "-", + "rightExpression": { + "id": 1135, + "name": "requestedDecrease", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1303, - "src": "2547:11:9", + "referencedDeclaration": 1106, + "src": "3840:17:8", "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" + "typeIdentifier": "t_uint256", + "typeString": "uint256" } }, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": false, - "nodeType": "IndexAccess", - "src": "2530:29:9", + "src": "3821:36:8", "typeDescriptions": { - "typeIdentifier": "t_struct$_VestingSchedule_$1184_storage", - "typeString": "struct TokenVesting.VestingSchedule storage ref" + "typeIdentifier": "t_uint256", + "typeString": "uint256" } - }, - "id": 1356, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": false, - "memberLocation": "2560:11:9", - "memberName": "totalAmount", - "nodeType": "MemberAccess", - "referencedDeclaration": 1173, - "src": "2530:41:9", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" } - }, - "nodeType": "BinaryOperation", - "operator": "==", - "rightExpression": { - "hexValue": "30", - "id": 1357, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "number", - "lValueRequested": false, - "nodeType": "Literal", - "src": "2575:1:9", + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_contract$_IERC20_$967", + "typeString": "contract IERC20" + }, + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "id": 1131, + "name": "forceApprove", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1188, + "src": "3792:12:8", "typeDescriptions": { - "typeIdentifier": "t_rational_0_by_1", - "typeString": "int_const 0" - }, - "value": "0" + "typeIdentifier": "t_function_internal_nonpayable$_t_contract$_IERC20_$967_$_t_address_$_t_uint256_$returns$__$", + "typeString": "function (contract IERC20,address,uint256)" + } }, - "src": "2530:46:9", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - }, - { - "hexValue": "5363686564756c6520616c726561647920657869737473", - "id": 1359, + "id": 1137, "isConstant": false, "isLValue": false, - "isPure": true, - "kind": "string", + "isPure": false, + "kind": "functionCall", "lValueRequested": false, - "nodeType": "Literal", - "src": "2590:25:9", + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "3792:66:8", + "tryCall": false, "typeDescriptions": { - "typeIdentifier": "t_stringliteral_2bc716da1b42589a19a25c3316489645c253eec4dab63960fa92efee8bafe791", - "typeString": "literal_string \"Schedule already exists\"" - }, - "value": "Schedule already exists" - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_bool", - "typeString": "bool" - }, - { - "typeIdentifier": "t_stringliteral_2bc716da1b42589a19a25c3316489645c253eec4dab63960fa92efee8bafe791", - "typeString": "literal_string \"Schedule already exists\"" + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" } + }, + "id": 1138, + "nodeType": "ExpressionStatement", + "src": "3792:66:8" + } + ] + } + ] + }, + "documentation": { + "id": 1099, + "nodeType": "StructuredDocumentation", + "src": "2745:657:8", + "text": " @dev Decrease the calling contract's allowance toward `spender` by `requestedDecrease`. If `token` returns no\n value, non-reverting calls are assumed to be successful.\n IMPORTANT: If the token implements ERC-7674 (ERC-20 with temporary allowance), and if the \"client\"\n smart contract uses ERC-7674 to set temporary allowances, then the \"client\" smart contract should avoid using\n this function. Performing a {safeIncreaseAllowance} or {safeDecreaseAllowance} operation on a token contract\n that has a non-zero temporary allowance (for that particular owner-spender) will result in unexpected behavior." + }, + "id": 1141, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "safeDecreaseAllowance", + "nameLocation": "3416:21:8", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 1107, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 1102, + "mutability": "mutable", + "name": "token", + "nameLocation": "3445:5:8", + "nodeType": "VariableDeclaration", + "scope": 1141, + "src": "3438:12:8", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_contract$_IERC20_$967", + "typeString": "contract IERC20" + }, + "typeName": { + "id": 1101, + "nodeType": "UserDefinedTypeName", + "pathNode": { + "id": 1100, + "name": "IERC20", + "nameLocations": [ + "3438:6:8" ], - "id": 1352, - "name": "require", - "nodeType": "Identifier", - "overloadedDeclarations": [ - -18, - -18 - ], - "referencedDeclaration": -18, - "src": "2509:7:9", - "typeDescriptions": { - "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", - "typeString": "function (bool,string memory) pure" - } + "nodeType": "IdentifierPath", + "referencedDeclaration": 967, + "src": "3438:6:8" }, - "id": 1360, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "nameLocations": [], - "names": [], - "nodeType": "FunctionCall", - "src": "2509:116:9", - "tryCall": false, + "referencedDeclaration": 967, + "src": "3438:6:8", "typeDescriptions": { - "typeIdentifier": "t_tuple$__$", - "typeString": "tuple()" + "typeIdentifier": "t_contract$_IERC20_$967", + "typeString": "contract IERC20" } }, - "id": 1361, - "nodeType": "ExpressionStatement", - "src": "2509:116:9" + "visibility": "internal" }, { - "expression": { + "constant": false, + "id": 1104, + "mutability": "mutable", + "name": "spender", + "nameLocation": "3460:7:8", + "nodeType": "VariableDeclaration", + "scope": 1141, + "src": "3452:15:8", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 1103, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "3452:7:8", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 1106, + "mutability": "mutable", + "name": "requestedDecrease", + "nameLocation": "3477:17:8", + "nodeType": "VariableDeclaration", + "scope": 1141, + "src": "3469:25:8", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 1105, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "3469:7:8", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "src": "3437:58:8" + }, + "returnParameters": { + "id": 1108, + "nodeType": "ParameterList", + "parameters": [], + "src": "3505:0:8" + }, + "scope": 1404, + "src": "3407:468:8", + "stateMutability": "nonpayable", + "virtual": false, + "visibility": "internal" + }, + { + "body": { + "id": 1187, + "nodeType": "Block", + "src": "4529:303:8", + "statements": [ + { + "assignments": [ + 1153 + ], + "declarations": [ + { + "constant": false, + "id": 1153, + "mutability": "mutable", + "name": "approvalCall", + "nameLocation": "4552:12:8", + "nodeType": "VariableDeclaration", + "scope": 1187, + "src": "4539:25:8", + "stateVariable": false, + "storageLocation": "memory", + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes" + }, + "typeName": { + "id": 1152, + "name": "bytes", + "nodeType": "ElementaryTypeName", + "src": "4539:5:8", + "typeDescriptions": { + "typeIdentifier": "t_bytes_storage_ptr", + "typeString": "bytes" + } + }, + "visibility": "internal" + } + ], + "id": 1162, + "initialValue": { "arguments": [ { - "commonType": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "id": 1366, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftExpression": { - "id": 1363, - "name": "startTime", + "expression": { + "id": 1156, + "name": "token", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1311, - "src": "2643:9:9", + "referencedDeclaration": 1145, + "src": "4582:5:8", "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" + "typeIdentifier": "t_contract$_IERC20_$967", + "typeString": "contract IERC20" } }, - "nodeType": "BinaryOperation", - "operator": ">=", - "rightExpression": { - "expression": { - "id": 1364, - "name": "block", + "id": 1157, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberLocation": "4588:7:8", + "memberName": "approve", + "nodeType": "MemberAccess", + "referencedDeclaration": 954, + "src": "4582:13:8", + "typeDescriptions": { + "typeIdentifier": "t_function_external_nonpayable$_t_address_$_t_uint256_$returns$_t_bool_$", + "typeString": "function (address,uint256) external returns (bool)" + } + }, + { + "components": [ + { + "id": 1158, + "name": "spender", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": -4, - "src": "2656:5:9", + "referencedDeclaration": 1147, + "src": "4598:7:8", "typeDescriptions": { - "typeIdentifier": "t_magic_block", - "typeString": "block" + "typeIdentifier": "t_address", + "typeString": "address" } }, - "id": 1365, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "memberLocation": "2662:9:9", - "memberName": "timestamp", - "nodeType": "MemberAccess", - "src": "2656:15:9", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" + { + "id": 1159, + "name": "value", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1149, + "src": "4607:5:8", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } } - }, - "src": "2643:28:9", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - }, - { - "hexValue": "53746172742074696d65206d75737420626520696e20667574757265", - "id": 1367, + ], + "id": 1160, "isConstant": false, + "isInlineArray": false, "isLValue": false, - "isPure": true, - "kind": "string", + "isPure": false, "lValueRequested": false, - "nodeType": "Literal", - "src": "2673:30:9", + "nodeType": "TupleExpression", + "src": "4597:16:8", "typeDescriptions": { - "typeIdentifier": "t_stringliteral_5e8b0e873d06a66c9c925ccc2b7b49a9f2193d0e8836f9994126e51985936cff", - "typeString": "literal_string \"Start time must be in future\"" - }, - "value": "Start time must be in future" + "typeIdentifier": "t_tuple$_t_address_$_t_uint256_$", + "typeString": "tuple(address,uint256)" + } } ], "expression": { "argumentTypes": [ { - "typeIdentifier": "t_bool", - "typeString": "bool" + "typeIdentifier": "t_function_external_nonpayable$_t_address_$_t_uint256_$returns$_t_bool_$", + "typeString": "function (address,uint256) external returns (bool)" }, { - "typeIdentifier": "t_stringliteral_5e8b0e873d06a66c9c925ccc2b7b49a9f2193d0e8836f9994126e51985936cff", - "typeString": "literal_string \"Start time must be in future\"" + "typeIdentifier": "t_tuple$_t_address_$_t_uint256_$", + "typeString": "tuple(address,uint256)" } ], - "id": 1362, - "name": "require", - "nodeType": "Identifier", - "overloadedDeclarations": [ - -18, - -18 - ], - "referencedDeclaration": -18, - "src": "2635:7:9", + "expression": { + "id": 1154, + "name": "abi", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": -1, + "src": "4567:3:8", + "typeDescriptions": { + "typeIdentifier": "t_magic_abi", + "typeString": "abi" + } + }, + "id": 1155, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "memberLocation": "4571:10:8", + "memberName": "encodeCall", + "nodeType": "MemberAccess", + "src": "4567:14:8", "typeDescriptions": { - "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", - "typeString": "function (bool,string memory) pure" + "typeIdentifier": "t_function_abiencodecall_pure$__$returns$_t_bytes_memory_ptr_$", + "typeString": "function () pure returns (bytes memory)" } }, - "id": 1368, + "id": 1161, "isConstant": false, "isLValue": false, "isPure": false, @@ -16159,657 +14064,457 @@ "nameLocations": [], "names": [], "nodeType": "FunctionCall", - "src": "2635:69:9", + "src": "4567:47:8", "tryCall": false, "typeDescriptions": { - "typeIdentifier": "t_tuple$__$", - "typeString": "tuple()" + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" } }, - "id": 1369, - "nodeType": "ExpressionStatement", - "src": "2635:69:9" + "nodeType": "VariableDeclarationStatement", + "src": "4539:75:8" }, { - "expression": { - "id": 1381, + "condition": { + "id": 1167, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, - "leftHandSide": { - "baseExpression": { - "id": 1370, - "name": "vestingSchedules", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 1192, - "src": "2715:16:9", - "typeDescriptions": { - "typeIdentifier": "t_mapping$_t_address_$_t_struct$_VestingSchedule_$1184_storage_$", - "typeString": "mapping(address => struct TokenVesting.VestingSchedule storage ref)" - } - }, - "id": 1372, - "indexExpression": { - "id": 1371, - "name": "beneficiary", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 1303, - "src": "2732:11:9", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": true, - "nodeType": "IndexAccess", - "src": "2715:29:9", - "typeDescriptions": { - "typeIdentifier": "t_struct$_VestingSchedule_$1184_storage", - "typeString": "struct TokenVesting.VestingSchedule storage ref" - } - }, - "nodeType": "Assignment", - "operator": "=", - "rightHandSide": { - "arguments": [ - { - "id": 1374, - "name": "amount", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 1305, - "src": "2790:6:9", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - { - "id": 1375, - "name": "startTime", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 1311, - "src": "2821:9:9", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - { - "id": 1376, - "name": "cliffDuration", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 1307, - "src": "2859:13:9", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - { - "id": 1377, - "name": "vestingDuration", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 1309, - "src": "2903:15:9", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - { - "hexValue": "30", - "id": 1378, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "number", - "lValueRequested": false, - "nodeType": "Literal", - "src": "2947:1:9", - "typeDescriptions": { - "typeIdentifier": "t_rational_0_by_1", - "typeString": "int_const 0" - }, - "value": "0" - }, - { - "hexValue": "66616c7365", - "id": 1379, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "bool", - "lValueRequested": false, - "nodeType": "Literal", - "src": "2971:5:9", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - }, - "value": "false" + "nodeType": "UnaryOperation", + "operator": "!", + "prefix": true, + "src": "4629:45:8", + "subExpression": { + "arguments": [ + { + "id": 1164, + "name": "token", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1145, + "src": "4654:5:8", + "typeDescriptions": { + "typeIdentifier": "t_contract$_IERC20_$967", + "typeString": "contract IERC20" + } + }, + { + "id": 1165, + "name": "approvalCall", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1153, + "src": "4661:12:8", + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + } } ], "expression": { "argumentTypes": [ { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - { - "typeIdentifier": "t_rational_0_by_1", - "typeString": "int_const 0" + "typeIdentifier": "t_contract$_IERC20_$967", + "typeString": "contract IERC20" }, { - "typeIdentifier": "t_bool", - "typeString": "bool" + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" } ], - "id": 1373, - "name": "VestingSchedule", + "id": 1163, + "name": "_callOptionalReturnBool", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1184, - "src": "2747:15:9", + "referencedDeclaration": 1403, + "src": "4630:23:8", "typeDescriptions": { - "typeIdentifier": "t_type$_t_struct$_VestingSchedule_$1184_storage_ptr_$", - "typeString": "type(struct TokenVesting.VestingSchedule storage pointer)" + "typeIdentifier": "t_function_internal_nonpayable$_t_contract$_IERC20_$967_$_t_bytes_memory_ptr_$returns$_t_bool_$", + "typeString": "function (contract IERC20,bytes memory) returns (bool)" } }, - "id": 1380, + "id": 1166, "isConstant": false, "isLValue": false, "isPure": false, - "kind": "structConstructorCall", + "kind": "functionCall", "lValueRequested": false, - "nameLocations": [ - "2777:11:9", - "2810:9:9", - "2844:13:9", - "2886:15:9", - "2932:13:9", - "2962:7:9" - ], - "names": [ - "totalAmount", - "startTime", - "cliffDuration", - "vestingDuration", - "amountClaimed", - "revoked" - ], + "nameLocations": [], + "names": [], "nodeType": "FunctionCall", - "src": "2747:240:9", + "src": "4630:44:8", "tryCall": false, "typeDescriptions": { - "typeIdentifier": "t_struct$_VestingSchedule_$1184_memory_ptr", - "typeString": "struct TokenVesting.VestingSchedule memory" + "typeIdentifier": "t_bool", + "typeString": "bool" } }, - "src": "2715:272:9", "typeDescriptions": { - "typeIdentifier": "t_struct$_VestingSchedule_$1184_storage", - "typeString": "struct TokenVesting.VestingSchedule storage ref" + "typeIdentifier": "t_bool", + "typeString": "bool" } }, - "id": 1382, - "nodeType": "ExpressionStatement", - "src": "2715:272:9" - }, - { - "expression": { - "arguments": [ + "id": 1186, + "nodeType": "IfStatement", + "src": "4625:201:8", + "trueBody": { + "id": 1185, + "nodeType": "Block", + "src": "4676:150:8", + "statements": [ { - "arguments": [ - { - "expression": { - "id": 1386, - "name": "msg", + "expression": { + "arguments": [ + { + "id": 1169, + "name": "token", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": -15, - "src": "3038:3:9", + "referencedDeclaration": 1145, + "src": "4710:5:8", "typeDescriptions": { - "typeIdentifier": "t_magic_message", - "typeString": "msg" + "typeIdentifier": "t_contract$_IERC20_$967", + "typeString": "contract IERC20" } }, - "id": 1387, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "memberLocation": "3042:6:9", - "memberName": "sender", - "nodeType": "MemberAccess", - "src": "3038:10:9", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - { - "arguments": [ - { - "id": 1390, - "name": "this", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": -28, - "src": "3058:4:9", - "typeDescriptions": { - "typeIdentifier": "t_contract$_TokenVesting_$1636", - "typeString": "contract TokenVesting" - } - } - ], - "expression": { - "argumentTypes": [ + { + "arguments": [ + { + "expression": { + "id": 1172, + "name": "token", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1145, + "src": "4732:5:8", + "typeDescriptions": { + "typeIdentifier": "t_contract$_IERC20_$967", + "typeString": "contract IERC20" + } + }, + "id": 1173, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberLocation": "4738:7:8", + "memberName": "approve", + "nodeType": "MemberAccess", + "referencedDeclaration": 954, + "src": "4732:13:8", + "typeDescriptions": { + "typeIdentifier": "t_function_external_nonpayable$_t_address_$_t_uint256_$returns$_t_bool_$", + "typeString": "function (address,uint256) external returns (bool)" + } + }, { - "typeIdentifier": "t_contract$_TokenVesting_$1636", - "typeString": "contract TokenVesting" + "components": [ + { + "id": 1174, + "name": "spender", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1147, + "src": "4748:7:8", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "hexValue": "30", + "id": 1175, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "4757:1:8", + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + } + ], + "id": 1176, + "isConstant": false, + "isInlineArray": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "nodeType": "TupleExpression", + "src": "4747:12:8", + "typeDescriptions": { + "typeIdentifier": "t_tuple$_t_address_$_t_rational_0_by_1_$", + "typeString": "tuple(address,int_const 0)" + } } ], - "id": 1389, + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_function_external_nonpayable$_t_address_$_t_uint256_$returns$_t_bool_$", + "typeString": "function (address,uint256) external returns (bool)" + }, + { + "typeIdentifier": "t_tuple$_t_address_$_t_rational_0_by_1_$", + "typeString": "tuple(address,int_const 0)" + } + ], + "expression": { + "id": 1170, + "name": "abi", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": -1, + "src": "4717:3:8", + "typeDescriptions": { + "typeIdentifier": "t_magic_abi", + "typeString": "abi" + } + }, + "id": 1171, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "memberLocation": "4721:10:8", + "memberName": "encodeCall", + "nodeType": "MemberAccess", + "src": "4717:14:8", + "typeDescriptions": { + "typeIdentifier": "t_function_abiencodecall_pure$__$returns$_t_bytes_memory_ptr_$", + "typeString": "function () pure returns (bytes memory)" + } + }, + "id": 1177, "isConstant": false, "isLValue": false, - "isPure": true, + "isPure": false, + "kind": "functionCall", "lValueRequested": false, - "nodeType": "ElementaryTypeNameExpression", - "src": "3050:7:9", + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "4717:43:8", + "tryCall": false, "typeDescriptions": { - "typeIdentifier": "t_type$_t_address_$", - "typeString": "type(address)" - }, - "typeName": { - "id": 1388, - "name": "address", - "nodeType": "ElementaryTypeName", - "src": "3050:7:9", - "typeDescriptions": {} + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" } - }, - "id": 1391, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "typeConversion", - "lValueRequested": false, - "nameLocations": [], - "names": [], - "nodeType": "FunctionCall", - "src": "3050:13:9", - "tryCall": false, - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" } - }, - { - "id": 1392, - "name": "amount", + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_contract$_IERC20_$967", + "typeString": "contract IERC20" + }, + { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + } + ], + "id": 1168, + "name": "_callOptionalReturn", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1305, - "src": "3065:6:9", + "referencedDeclaration": 1362, + "src": "4690:19:8", "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" + "typeIdentifier": "t_function_internal_nonpayable$_t_contract$_IERC20_$967_$_t_bytes_memory_ptr_$returns$__$", + "typeString": "function (contract IERC20,bytes memory)" } - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_address", - "typeString": "address" - }, - { - "typeIdentifier": "t_address", - "typeString": "address" + }, + "id": 1178, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "4690:71:8", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 1179, + "nodeType": "ExpressionStatement", + "src": "4690:71:8" + }, + { + "expression": { + "arguments": [ + { + "id": 1181, + "name": "token", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1145, + "src": "4795:5:8", + "typeDescriptions": { + "typeIdentifier": "t_contract$_IERC20_$967", + "typeString": "contract IERC20" + } }, { - "typeIdentifier": "t_uint256", - "typeString": "uint256" + "id": 1182, + "name": "approvalCall", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1153, + "src": "4802:12:8", + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + } } ], "expression": { - "id": 1384, - "name": "token", + "argumentTypes": [ + { + "typeIdentifier": "t_contract$_IERC20_$967", + "typeString": "contract IERC20" + }, + { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + } + ], + "id": 1180, + "name": "_callOptionalReturn", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1187, - "src": "3019:5:9", + "referencedDeclaration": 1362, + "src": "4775:19:8", "typeDescriptions": { - "typeIdentifier": "t_contract$_IERC20_$877", - "typeString": "contract IERC20" + "typeIdentifier": "t_function_internal_nonpayable$_t_contract$_IERC20_$967_$_t_bytes_memory_ptr_$returns$__$", + "typeString": "function (contract IERC20,bytes memory)" } }, - "id": 1385, + "id": 1183, "isConstant": false, "isLValue": false, "isPure": false, + "kind": "functionCall", "lValueRequested": false, - "memberLocation": "3025:12:9", - "memberName": "transferFrom", - "nodeType": "MemberAccess", - "referencedDeclaration": 876, - "src": "3019:18:9", + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "4775:40:8", + "tryCall": false, "typeDescriptions": { - "typeIdentifier": "t_function_external_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$_t_bool_$", - "typeString": "function (address,address,uint256) external returns (bool)" + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" } }, - "id": 1393, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "nameLocations": [], - "names": [], - "nodeType": "FunctionCall", - "src": "3019:53:9", - "tryCall": false, - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - }, - { - "hexValue": "5472616e73666572206661696c6564", - "id": 1394, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "string", - "lValueRequested": false, - "nodeType": "Literal", - "src": "3086:17:9", - "typeDescriptions": { - "typeIdentifier": "t_stringliteral_25adaa6d082ce15f901e0d8a3d393e7462ef9edf2e6bc8321fa14d1615b6fc51", - "typeString": "literal_string \"Transfer failed\"" - }, - "value": "Transfer failed" - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_bool", - "typeString": "bool" - }, - { - "typeIdentifier": "t_stringliteral_25adaa6d082ce15f901e0d8a3d393e7462ef9edf2e6bc8321fa14d1615b6fc51", - "typeString": "literal_string \"Transfer failed\"" - } - ], - "id": 1383, - "name": "require", - "nodeType": "Identifier", - "overloadedDeclarations": [ - -18, - -18 - ], - "referencedDeclaration": -18, - "src": "2998:7:9", - "typeDescriptions": { - "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", - "typeString": "function (bool,string memory) pure" - } - }, - "id": 1395, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "nameLocations": [], - "names": [], - "nodeType": "FunctionCall", - "src": "2998:115:9", - "tryCall": false, - "typeDescriptions": { - "typeIdentifier": "t_tuple$__$", - "typeString": "tuple()" - } - }, - "id": 1396, - "nodeType": "ExpressionStatement", - "src": "2998:115:9" - }, - { - "eventCall": { - "arguments": [ - { - "id": 1398, - "name": "beneficiary", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 1303, - "src": "3151:11:9", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - { - "id": 1399, - "name": "amount", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 1305, - "src": "3164:6:9", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_address", - "typeString": "address" - }, - { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - ], - "id": 1397, - "name": "VestingScheduleCreated", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 1202, - "src": "3128:22:9", - "typeDescriptions": { - "typeIdentifier": "t_function_event_nonpayable$_t_address_$_t_uint256_$returns$__$", - "typeString": "function (address,uint256)" + "id": 1184, + "nodeType": "ExpressionStatement", + "src": "4775:40:8" } - }, - "id": 1400, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "nameLocations": [], - "names": [], - "nodeType": "FunctionCall", - "src": "3128:43:9", - "tryCall": false, - "typeDescriptions": { - "typeIdentifier": "t_tuple$__$", - "typeString": "tuple()" - } - }, - "id": 1401, - "nodeType": "EmitStatement", - "src": "3123:48:9" + ] + } } ] }, - "functionSelector": "1bf0b08b", - "id": 1403, + "documentation": { + "id": 1142, + "nodeType": "StructuredDocumentation", + "src": "3881:566:8", + "text": " @dev Set the calling contract's allowance toward `spender` to `value`. If `token` returns no value,\n non-reverting calls are assumed to be successful. Meant to be used with tokens that require the approval\n to be set to zero before setting it to a non-zero value, such as USDT.\n NOTE: If the token implements ERC-7674, this function will not modify any temporary allowance. This function\n only sets the \"standard\" allowance. Any temporary allowance will remain active, in addition to the value being\n set here." + }, + "id": 1188, "implemented": true, "kind": "function", - "modifiers": [ - { - "id": 1314, - "kind": "modifierInvocation", - "modifierName": { - "id": 1313, - "name": "onlyOwner", - "nameLocations": [ - "2136:9:9" - ], - "nodeType": "IdentifierPath", - "referencedDeclaration": 58, - "src": "2136:9:9" - }, - "nodeType": "ModifierInvocation", - "src": "2136:9:9" - }, - { - "arguments": [ - { - "id": 1316, - "name": "beneficiary", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 1303, - "src": "2162:11:9", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - } - ], - "id": 1317, - "kind": "modifierInvocation", - "modifierName": { - "id": 1315, - "name": "onlyWhitelisted", - "nameLocations": [ - "2146:15:9" - ], - "nodeType": "IdentifierPath", - "referencedDeclaration": 1255, - "src": "2146:15:9" - }, - "nodeType": "ModifierInvocation", - "src": "2146:28:9" - }, - { - "id": 1319, - "kind": "modifierInvocation", - "modifierName": { - "id": 1318, - "name": "whenNotPaused", - "nameLocations": [ - "2175:13:9" - ], - "nodeType": "IdentifierPath", - "referencedDeclaration": 975, - "src": "2175:13:9" - }, - "nodeType": "ModifierInvocation", - "src": "2175:13:9" - } - ], - "name": "createVestingSchedule", - "nameLocation": "1955:21:9", + "modifiers": [], + "name": "forceApprove", + "nameLocation": "4461:12:8", "nodeType": "FunctionDefinition", "parameters": { - "id": 1312, + "id": 1150, "nodeType": "ParameterList", "parameters": [ { "constant": false, - "id": 1303, + "id": 1145, "mutability": "mutable", - "name": "beneficiary", - "nameLocation": "1994:11:9", + "name": "token", + "nameLocation": "4481:5:8", "nodeType": "VariableDeclaration", - "scope": 1403, - "src": "1986:19:9", + "scope": 1188, + "src": "4474:12:8", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" + "typeIdentifier": "t_contract$_IERC20_$967", + "typeString": "contract IERC20" }, "typeName": { - "id": 1302, - "name": "address", - "nodeType": "ElementaryTypeName", - "src": "1986:7:9", - "stateMutability": "nonpayable", + "id": 1144, + "nodeType": "UserDefinedTypeName", + "pathNode": { + "id": 1143, + "name": "IERC20", + "nameLocations": [ + "4474:6:8" + ], + "nodeType": "IdentifierPath", + "referencedDeclaration": 967, + "src": "4474:6:8" + }, + "referencedDeclaration": 967, + "src": "4474:6:8", "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" + "typeIdentifier": "t_contract$_IERC20_$967", + "typeString": "contract IERC20" } }, "visibility": "internal" }, { "constant": false, - "id": 1305, + "id": 1147, "mutability": "mutable", - "name": "amount", - "nameLocation": "2023:6:9", + "name": "spender", + "nameLocation": "4496:7:8", "nodeType": "VariableDeclaration", - "scope": 1403, - "src": "2015:14:9", + "scope": 1188, + "src": "4488:15:8", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" + "typeIdentifier": "t_address", + "typeString": "address" }, "typeName": { - "id": 1304, - "name": "uint256", + "id": 1146, + "name": "address", "nodeType": "ElementaryTypeName", - "src": "2015:7:9", + "src": "4488:7:8", + "stateMutability": "nonpayable", "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" + "typeIdentifier": "t_address", + "typeString": "address" } }, "visibility": "internal" }, { "constant": false, - "id": 1307, + "id": 1149, "mutability": "mutable", - "name": "cliffDuration", - "nameLocation": "2047:13:9", + "name": "value", + "nameLocation": "4513:5:8", "nodeType": "VariableDeclaration", - "scope": 1403, - "src": "2039:21:9", + "scope": 1188, + "src": "4505:13:8", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -16817,64 +14522,10 @@ "typeString": "uint256" }, "typeName": { - "id": 1306, + "id": 1148, "name": "uint256", "nodeType": "ElementaryTypeName", - "src": "2039:7:9", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "visibility": "internal" - }, - { - "constant": false, - "id": 1309, - "mutability": "mutable", - "name": "vestingDuration", - "nameLocation": "2078:15:9", - "nodeType": "VariableDeclaration", - "scope": 1403, - "src": "2070:23:9", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "typeName": { - "id": 1308, - "name": "uint256", - "nodeType": "ElementaryTypeName", - "src": "2070:7:9", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "visibility": "internal" - }, - { - "constant": false, - "id": 1311, - "mutability": "mutable", - "name": "startTime", - "nameLocation": "2111:9:9", - "nodeType": "VariableDeclaration", - "scope": 1403, - "src": "2103:17:9", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "typeName": { - "id": 1310, - "name": "uint256", - "nodeType": "ElementaryTypeName", - "src": "2103:7:9", + "src": "4505:7:8", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -16883,878 +14534,1076 @@ "visibility": "internal" } ], - "src": "1976:150:9" + "src": "4473:46:8" }, "returnParameters": { - "id": 1320, + "id": 1151, "nodeType": "ParameterList", "parameters": [], - "src": "2189:0:9" + "src": "4529:0:8" }, - "scope": 1636, - "src": "1946:1232:9", + "scope": 1404, + "src": "4452:380:8", "stateMutability": "nonpayable", "virtual": false, - "visibility": "external" + "visibility": "internal" }, { "body": { - "id": 1474, + "id": 1230, "nodeType": "Block", - "src": "3280:627:9", + "src": "5279:219:8", "statements": [ - { - "assignments": [ - 1412 - ], - "declarations": [ - { - "constant": false, - "id": 1412, - "mutability": "mutable", - "name": "schedule", - "nameLocation": "3313:8:9", - "nodeType": "VariableDeclaration", - "scope": 1474, - "src": "3290:31:9", - "stateVariable": false, - "storageLocation": "memory", - "typeDescriptions": { - "typeIdentifier": "t_struct$_VestingSchedule_$1184_memory_ptr", - "typeString": "struct TokenVesting.VestingSchedule" - }, - "typeName": { - "id": 1411, - "nodeType": "UserDefinedTypeName", - "pathNode": { - "id": 1410, - "name": "VestingSchedule", - "nameLocations": [ - "3290:15:9" - ], - "nodeType": "IdentifierPath", - "referencedDeclaration": 1184, - "src": "3290:15:9" - }, - "referencedDeclaration": 1184, - "src": "3290:15:9", - "typeDescriptions": { - "typeIdentifier": "t_struct$_VestingSchedule_$1184_storage_ptr", - "typeString": "struct TokenVesting.VestingSchedule" - } - }, - "visibility": "internal" - } - ], - "id": 1416, - "initialValue": { - "baseExpression": { - "id": 1413, - "name": "vestingSchedules", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 1192, - "src": "3324:16:9", - "typeDescriptions": { - "typeIdentifier": "t_mapping$_t_address_$_t_struct$_VestingSchedule_$1184_storage_$", - "typeString": "mapping(address => struct TokenVesting.VestingSchedule storage ref)" - } - }, - "id": 1415, - "indexExpression": { - "id": 1414, - "name": "beneficiary", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 1405, - "src": "3341:11:9", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": false, - "nodeType": "IndexAccess", - "src": "3324:29:9", - "typeDescriptions": { - "typeIdentifier": "t_struct$_VestingSchedule_$1184_storage", - "typeString": "struct TokenVesting.VestingSchedule storage ref" - } - }, - "nodeType": "VariableDeclarationStatement", - "src": "3290:63:9" - }, { "condition": { "commonType": { - "typeIdentifier": "t_bool", - "typeString": "bool" + "typeIdentifier": "t_uint256", + "typeString": "uint256" }, - "id": 1423, + "id": 1205, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": { - "commonType": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "id": 1420, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftExpression": { + "expression": { "expression": { - "id": 1417, - "name": "schedule", + "id": 1201, + "name": "to", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1412, - "src": "3368:8:9", + "referencedDeclaration": 1194, + "src": "5293:2:8", "typeDescriptions": { - "typeIdentifier": "t_struct$_VestingSchedule_$1184_memory_ptr", - "typeString": "struct TokenVesting.VestingSchedule memory" + "typeIdentifier": "t_address", + "typeString": "address" } }, - "id": 1418, + "id": 1202, "isConstant": false, - "isLValue": true, + "isLValue": false, "isPure": false, "lValueRequested": false, - "memberLocation": "3377:11:9", - "memberName": "totalAmount", + "memberLocation": "5296:4:8", + "memberName": "code", "nodeType": "MemberAccess", - "referencedDeclaration": 1173, - "src": "3368:20:9", + "src": "5293:7:8", "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" } }, - "nodeType": "BinaryOperation", - "operator": "==", - "rightExpression": { - "hexValue": "30", - "id": 1419, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "number", - "lValueRequested": false, - "nodeType": "Literal", - "src": "3392:1:9", - "typeDescriptions": { - "typeIdentifier": "t_rational_0_by_1", - "typeString": "int_const 0" - }, - "value": "0" - }, - "src": "3368:25:9", + "id": 1203, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberLocation": "5301:6:8", + "memberName": "length", + "nodeType": "MemberAccess", + "src": "5293:14:8", "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" + "typeIdentifier": "t_uint256", + "typeString": "uint256" } }, "nodeType": "BinaryOperation", - "operator": "||", + "operator": "==", "rightExpression": { - "expression": { - "id": 1421, - "name": "schedule", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 1412, - "src": "3397:8:9", - "typeDescriptions": { - "typeIdentifier": "t_struct$_VestingSchedule_$1184_memory_ptr", - "typeString": "struct TokenVesting.VestingSchedule memory" - } - }, - "id": 1422, + "hexValue": "30", + "id": 1204, "isConstant": false, - "isLValue": true, - "isPure": false, + "isLValue": false, + "isPure": true, + "kind": "number", "lValueRequested": false, - "memberLocation": "3406:7:9", - "memberName": "revoked", - "nodeType": "MemberAccess", - "referencedDeclaration": 1183, - "src": "3397:16:9", + "nodeType": "Literal", + "src": "5311:1:8", "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" }, - "src": "3368:45:9", + "src": "5293:19:8", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" } }, - "id": 1427, - "nodeType": "IfStatement", - "src": "3364:84:9", - "trueBody": { - "id": 1426, - "nodeType": "Block", - "src": "3415:33:9", - "statements": [ - { + "falseBody": { + "condition": { + "id": 1219, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "nodeType": "UnaryOperation", + "operator": "!", + "prefix": true, + "src": "5379:39:8", + "subExpression": { + "arguments": [ + { + "id": 1215, + "name": "to", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1194, + "src": "5402:2:8", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "id": 1216, + "name": "value", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1196, + "src": "5406:5:8", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + { + "id": 1217, + "name": "data", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1198, + "src": "5413:4:8", + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + } + } + ], "expression": { - "hexValue": "30", - "id": 1424, + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + } + ], + "expression": { + "id": 1213, + "name": "token", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1192, + "src": "5380:5:8", + "typeDescriptions": { + "typeIdentifier": "t_contract$_IERC1363_$229", + "typeString": "contract IERC1363" + } + }, + "id": 1214, "isConstant": false, "isLValue": false, - "isPure": true, - "kind": "number", + "isPure": false, "lValueRequested": false, - "nodeType": "Literal", - "src": "3436:1:9", + "memberLocation": "5386:15:8", + "memberName": "transferAndCall", + "nodeType": "MemberAccess", + "referencedDeclaration": 180, + "src": "5380:21:8", "typeDescriptions": { - "typeIdentifier": "t_rational_0_by_1", - "typeString": "int_const 0" - }, - "value": "0" + "typeIdentifier": "t_function_external_nonpayable$_t_address_$_t_uint256_$_t_bytes_memory_ptr_$returns$_t_bool_$", + "typeString": "function (address,uint256,bytes memory) external returns (bool)" + } }, - "functionReturnParameters": 1409, - "id": 1425, - "nodeType": "Return", - "src": "3429:8:9" - } - ] - } - }, - { - "condition": { - "commonType": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "id": 1435, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftExpression": { - "expression": { - "id": 1428, - "name": "block", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": -4, - "src": "3462:5:9", - "typeDescriptions": { - "typeIdentifier": "t_magic_block", - "typeString": "block" - } - }, - "id": 1429, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "memberLocation": "3468:9:9", - "memberName": "timestamp", - "nodeType": "MemberAccess", - "src": "3462:15:9", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "nodeType": "BinaryOperation", - "operator": "<", - "rightExpression": { - "commonType": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "id": 1434, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftExpression": { - "expression": { - "id": 1430, - "name": "schedule", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 1412, - "src": "3480:8:9", - "typeDescriptions": { - "typeIdentifier": "t_struct$_VestingSchedule_$1184_memory_ptr", - "typeString": "struct TokenVesting.VestingSchedule memory" - } - }, - "id": 1431, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": false, - "memberLocation": "3489:9:9", - "memberName": "startTime", - "nodeType": "MemberAccess", - "referencedDeclaration": 1175, - "src": "3480:18:9", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "nodeType": "BinaryOperation", - "operator": "+", - "rightExpression": { - "expression": { - "id": 1432, - "name": "schedule", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 1412, - "src": "3501:8:9", - "typeDescriptions": { - "typeIdentifier": "t_struct$_VestingSchedule_$1184_memory_ptr", - "typeString": "struct TokenVesting.VestingSchedule memory" - } - }, - "id": 1433, + "id": 1218, "isConstant": false, - "isLValue": true, + "isLValue": false, "isPure": false, + "kind": "functionCall", "lValueRequested": false, - "memberLocation": "3510:13:9", - "memberName": "cliffDuration", - "nodeType": "MemberAccess", - "referencedDeclaration": 1177, - "src": "3501:22:9", + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "5380:38:8", + "tryCall": false, "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" + "typeIdentifier": "t_bool", + "typeString": "bool" } }, - "src": "3480:43:9", "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" + "typeIdentifier": "t_bool", + "typeString": "bool" } }, - "src": "3462:61:9", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" + "id": 1228, + "nodeType": "IfStatement", + "src": "5375:117:8", + "trueBody": { + "id": 1227, + "nodeType": "Block", + "src": "5420:72:8", + "statements": [ + { + "errorCall": { + "arguments": [ + { + "arguments": [ + { + "id": 1223, + "name": "token", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1192, + "src": "5474:5:8", + "typeDescriptions": { + "typeIdentifier": "t_contract$_IERC1363_$229", + "typeString": "contract IERC1363" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_contract$_IERC1363_$229", + "typeString": "contract IERC1363" + } + ], + "id": 1222, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "5466:7:8", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_address_$", + "typeString": "type(address)" + }, + "typeName": { + "id": 1221, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "5466:7:8", + "typeDescriptions": {} + } + }, + "id": 1224, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "typeConversion", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "5466:14:8", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + } + ], + "id": 1220, + "name": "SafeERC20FailedOperation", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1007, + "src": "5441:24:8", + "typeDescriptions": { + "typeIdentifier": "t_function_error_pure$_t_address_$returns$__$", + "typeString": "function (address) pure" + } + }, + "id": 1225, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "5441:40:8", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 1226, + "nodeType": "RevertStatement", + "src": "5434:47:8" + } + ] } }, - "id": 1439, + "id": 1229, "nodeType": "IfStatement", - "src": "3458:100:9", + "src": "5289:203:8", "trueBody": { - "id": 1438, + "id": 1212, "nodeType": "Block", - "src": "3525:33:9", + "src": "5314:55:8", "statements": [ { "expression": { - "hexValue": "30", - "id": 1436, + "arguments": [ + { + "id": 1207, + "name": "token", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1192, + "src": "5341:5:8", + "typeDescriptions": { + "typeIdentifier": "t_contract$_IERC1363_$229", + "typeString": "contract IERC1363" + } + }, + { + "id": 1208, + "name": "to", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1194, + "src": "5348:2:8", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "id": 1209, + "name": "value", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1196, + "src": "5352:5:8", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_contract$_IERC1363_$229", + "typeString": "contract IERC1363" + }, + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "id": 1206, + "name": "safeTransfer", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1040, + "src": "5328:12:8", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_nonpayable$_t_contract$_IERC20_$967_$_t_address_$_t_uint256_$returns$__$", + "typeString": "function (contract IERC20,address,uint256)" + } + }, + "id": 1210, "isConstant": false, "isLValue": false, - "isPure": true, - "kind": "number", + "isPure": false, + "kind": "functionCall", "lValueRequested": false, - "nodeType": "Literal", - "src": "3546:1:9", + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "5328:30:8", + "tryCall": false, "typeDescriptions": { - "typeIdentifier": "t_rational_0_by_1", - "typeString": "int_const 0" - }, - "value": "0" + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } }, - "functionReturnParameters": 1409, - "id": 1437, - "nodeType": "Return", - "src": "3539:8:9" + "id": 1211, + "nodeType": "ExpressionStatement", + "src": "5328:30:8" } ] } - }, + } + ] + }, + "documentation": { + "id": 1189, + "nodeType": "StructuredDocumentation", + "src": "4838:333:8", + "text": " @dev Performs an {ERC1363} transferAndCall, with a fallback to the simple {ERC20} transfer if the target has no\n code. This can be used to implement an {ERC721}-like safe transfer that rely on {ERC1363} checks when\n targeting contracts.\n Reverts if the returned value is other than `true`." + }, + "id": 1231, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "transferAndCallRelaxed", + "nameLocation": "5185:22:8", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 1199, + "nodeType": "ParameterList", + "parameters": [ { - "condition": { - "commonType": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "id": 1447, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftExpression": { - "expression": { - "id": 1440, - "name": "block", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": -4, - "src": "3572:5:9", - "typeDescriptions": { - "typeIdentifier": "t_magic_block", - "typeString": "block" - } - }, - "id": 1441, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "memberLocation": "3578:9:9", - "memberName": "timestamp", - "nodeType": "MemberAccess", - "src": "3572:15:9", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } + "constant": false, + "id": 1192, + "mutability": "mutable", + "name": "token", + "nameLocation": "5217:5:8", + "nodeType": "VariableDeclaration", + "scope": 1231, + "src": "5208:14:8", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_contract$_IERC1363_$229", + "typeString": "contract IERC1363" + }, + "typeName": { + "id": 1191, + "nodeType": "UserDefinedTypeName", + "pathNode": { + "id": 1190, + "name": "IERC1363", + "nameLocations": [ + "5208:8:8" + ], + "nodeType": "IdentifierPath", + "referencedDeclaration": 229, + "src": "5208:8:8" }, - "nodeType": "BinaryOperation", - "operator": ">=", - "rightExpression": { - "commonType": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "id": 1446, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftExpression": { - "expression": { - "id": 1442, - "name": "schedule", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 1412, - "src": "3591:8:9", - "typeDescriptions": { - "typeIdentifier": "t_struct$_VestingSchedule_$1184_memory_ptr", - "typeString": "struct TokenVesting.VestingSchedule memory" - } - }, - "id": 1443, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": false, - "memberLocation": "3600:9:9", - "memberName": "startTime", - "nodeType": "MemberAccess", - "referencedDeclaration": 1175, - "src": "3591:18:9", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "nodeType": "BinaryOperation", - "operator": "+", - "rightExpression": { - "expression": { - "id": 1444, - "name": "schedule", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 1412, - "src": "3612:8:9", - "typeDescriptions": { - "typeIdentifier": "t_struct$_VestingSchedule_$1184_memory_ptr", - "typeString": "struct TokenVesting.VestingSchedule memory" - } - }, - "id": 1445, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": false, - "memberLocation": "3621:15:9", - "memberName": "vestingDuration", - "nodeType": "MemberAccess", - "referencedDeclaration": 1179, - "src": "3612:24:9", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "src": "3591:45:9", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "src": "3572:64:9", + "referencedDeclaration": 229, + "src": "5208:8:8", "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" + "typeIdentifier": "t_contract$_IERC1363_$229", + "typeString": "contract IERC1363" } }, - "id": 1452, - "nodeType": "IfStatement", - "src": "3568:122:9", - "trueBody": { - "id": 1451, - "nodeType": "Block", - "src": "3638:52:9", - "statements": [ - { - "expression": { - "expression": { - "id": 1448, - "name": "schedule", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 1412, - "src": "3659:8:9", - "typeDescriptions": { - "typeIdentifier": "t_struct$_VestingSchedule_$1184_memory_ptr", - "typeString": "struct TokenVesting.VestingSchedule memory" - } - }, - "id": 1449, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": false, - "memberLocation": "3668:11:9", - "memberName": "totalAmount", - "nodeType": "MemberAccess", - "referencedDeclaration": 1173, - "src": "3659:20:9", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "functionReturnParameters": 1409, - "id": 1450, - "nodeType": "Return", - "src": "3652:27:9" - } - ] - } + "visibility": "internal" }, { - "assignments": [ - 1454 - ], - "declarations": [ - { - "constant": false, - "id": 1454, - "mutability": "mutable", - "name": "timeFromStart", - "nameLocation": "3708:13:9", - "nodeType": "VariableDeclaration", - "scope": 1474, - "src": "3700:21:9", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "typeName": { - "id": 1453, - "name": "uint256", - "nodeType": "ElementaryTypeName", - "src": "3700:7:9", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "visibility": "internal" + "constant": false, + "id": 1194, + "mutability": "mutable", + "name": "to", + "nameLocation": "5232:2:8", + "nodeType": "VariableDeclaration", + "scope": 1231, + "src": "5224:10:8", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 1193, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "5224:7:8", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" } - ], - "id": 1460, - "initialValue": { + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 1196, + "mutability": "mutable", + "name": "value", + "nameLocation": "5244:5:8", + "nodeType": "VariableDeclaration", + "scope": 1231, + "src": "5236:13:8", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 1195, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "5236:7:8", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 1198, + "mutability": "mutable", + "name": "data", + "nameLocation": "5264:4:8", + "nodeType": "VariableDeclaration", + "scope": 1231, + "src": "5251:17:8", + "stateVariable": false, + "storageLocation": "memory", + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes" + }, + "typeName": { + "id": 1197, + "name": "bytes", + "nodeType": "ElementaryTypeName", + "src": "5251:5:8", + "typeDescriptions": { + "typeIdentifier": "t_bytes_storage_ptr", + "typeString": "bytes" + } + }, + "visibility": "internal" + } + ], + "src": "5207:62:8" + }, + "returnParameters": { + "id": 1200, + "nodeType": "ParameterList", + "parameters": [], + "src": "5279:0:8" + }, + "scope": 1404, + "src": "5176:322:8", + "stateMutability": "nonpayable", + "virtual": false, + "visibility": "internal" + }, + { + "body": { + "id": 1277, + "nodeType": "Block", + "src": "6017:239:8", + "statements": [ + { + "condition": { "commonType": { "typeIdentifier": "t_uint256", "typeString": "uint256" }, - "id": 1459, + "id": 1250, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": { "expression": { - "id": 1455, - "name": "block", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": -4, - "src": "3724:5:9", + "expression": { + "id": 1246, + "name": "to", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1239, + "src": "6031:2:8", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "id": 1247, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberLocation": "6034:4:8", + "memberName": "code", + "nodeType": "MemberAccess", + "src": "6031:7:8", "typeDescriptions": { - "typeIdentifier": "t_magic_block", - "typeString": "block" + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" } }, - "id": 1456, + "id": 1248, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, - "memberLocation": "3730:9:9", - "memberName": "timestamp", + "memberLocation": "6039:6:8", + "memberName": "length", "nodeType": "MemberAccess", - "src": "3724:15:9", + "src": "6031:14:8", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, "nodeType": "BinaryOperation", - "operator": "-", + "operator": "==", "rightExpression": { - "expression": { - "id": 1457, - "name": "schedule", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 1412, - "src": "3742:8:9", - "typeDescriptions": { - "typeIdentifier": "t_struct$_VestingSchedule_$1184_memory_ptr", - "typeString": "struct TokenVesting.VestingSchedule memory" - } - }, - "id": 1458, + "hexValue": "30", + "id": 1249, "isConstant": false, - "isLValue": true, - "isPure": false, + "isLValue": false, + "isPure": true, + "kind": "number", "lValueRequested": false, - "memberLocation": "3751:9:9", - "memberName": "startTime", - "nodeType": "MemberAccess", - "referencedDeclaration": 1175, - "src": "3742:18:9", + "nodeType": "Literal", + "src": "6049:1:8", "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" }, - "src": "3724:36:9", + "src": "6031:19:8", "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" + "typeIdentifier": "t_bool", + "typeString": "bool" } }, - "nodeType": "VariableDeclarationStatement", - "src": "3700:60:9" - }, - { - "assignments": [ - 1462 - ], - "declarations": [ - { - "constant": false, - "id": 1462, - "mutability": "mutable", - "name": "vestedAmount", - "nameLocation": "3778:12:9", - "nodeType": "VariableDeclaration", - "scope": 1474, - "src": "3770:20:9", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "typeName": { - "id": 1461, - "name": "uint256", - "nodeType": "ElementaryTypeName", - "src": "3770:7:9", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "visibility": "internal" - } - ], - "id": 1471, - "initialValue": { - "commonType": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "id": 1470, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftExpression": { - "components": [ - { - "commonType": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" + "falseBody": { + "condition": { + "id": 1266, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "nodeType": "UnaryOperation", + "operator": "!", + "prefix": true, + "src": "6127:49:8", + "subExpression": { + "arguments": [ + { + "id": 1261, + "name": "from", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1237, + "src": "6154:4:8", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "id": 1262, + "name": "to", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1239, + "src": "6160:2:8", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "id": 1263, + "name": "value", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1241, + "src": "6164:5:8", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + { + "id": 1264, + "name": "data", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1243, + "src": "6171:4:8", + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + } + ], + "expression": { + "id": 1259, + "name": "token", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1235, + "src": "6128:5:8", + "typeDescriptions": { + "typeIdentifier": "t_contract$_IERC1363_$229", + "typeString": "contract IERC1363" + } }, - "id": 1466, + "id": 1260, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, - "leftExpression": { + "memberLocation": "6134:19:8", + "memberName": "transferFromAndCall", + "nodeType": "MemberAccess", + "referencedDeclaration": 206, + "src": "6128:25:8", + "typeDescriptions": { + "typeIdentifier": "t_function_external_nonpayable$_t_address_$_t_address_$_t_uint256_$_t_bytes_memory_ptr_$returns$_t_bool_$", + "typeString": "function (address,address,uint256,bytes memory) external returns (bool)" + } + }, + "id": 1265, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "6128:48:8", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "id": 1275, + "nodeType": "IfStatement", + "src": "6123:127:8", + "trueBody": { + "id": 1274, + "nodeType": "Block", + "src": "6178:72:8", + "statements": [ + { + "errorCall": { + "arguments": [ + { + "arguments": [ + { + "id": 1270, + "name": "token", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1235, + "src": "6232:5:8", + "typeDescriptions": { + "typeIdentifier": "t_contract$_IERC1363_$229", + "typeString": "contract IERC1363" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_contract$_IERC1363_$229", + "typeString": "contract IERC1363" + } + ], + "id": 1269, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "6224:7:8", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_address_$", + "typeString": "type(address)" + }, + "typeName": { + "id": 1268, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "6224:7:8", + "typeDescriptions": {} + } + }, + "id": 1271, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "typeConversion", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "6224:14:8", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + } + ], "expression": { - "id": 1463, - "name": "schedule", + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + } + ], + "id": 1267, + "name": "SafeERC20FailedOperation", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1412, - "src": "3794:8:9", + "referencedDeclaration": 1007, + "src": "6199:24:8", "typeDescriptions": { - "typeIdentifier": "t_struct$_VestingSchedule_$1184_memory_ptr", - "typeString": "struct TokenVesting.VestingSchedule memory" + "typeIdentifier": "t_function_error_pure$_t_address_$returns$__$", + "typeString": "function (address) pure" } }, - "id": 1464, + "id": 1272, "isConstant": false, - "isLValue": true, + "isLValue": false, "isPure": false, + "kind": "functionCall", "lValueRequested": false, - "memberLocation": "3803:11:9", - "memberName": "totalAmount", - "nodeType": "MemberAccess", - "referencedDeclaration": 1173, - "src": "3794:20:9", + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "6199:40:8", + "tryCall": false, "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" } }, - "nodeType": "BinaryOperation", - "operator": "*", - "rightExpression": { - "id": 1465, - "name": "timeFromStart", + "id": 1273, + "nodeType": "RevertStatement", + "src": "6192:47:8" + } + ] + } + }, + "id": 1276, + "nodeType": "IfStatement", + "src": "6027:223:8", + "trueBody": { + "id": 1258, + "nodeType": "Block", + "src": "6052:65:8", + "statements": [ + { + "expression": { + "arguments": [ + { + "id": 1252, + "name": "token", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1235, + "src": "6083:5:8", + "typeDescriptions": { + "typeIdentifier": "t_contract$_IERC1363_$229", + "typeString": "contract IERC1363" + } + }, + { + "id": 1253, + "name": "from", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1237, + "src": "6090:4:8", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "id": 1254, + "name": "to", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1239, + "src": "6096:2:8", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "id": 1255, + "name": "value", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1241, + "src": "6100:5:8", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_contract$_IERC1363_$229", + "typeString": "contract IERC1363" + }, + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "id": 1251, + "name": "safeTransferFrom", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1454, - "src": "3817:13:9", + "referencedDeclaration": 1067, + "src": "6066:16:8", "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" + "typeIdentifier": "t_function_internal_nonpayable$_t_contract$_IERC20_$967_$_t_address_$_t_address_$_t_uint256_$returns$__$", + "typeString": "function (contract IERC20,address,address,uint256)" } }, - "src": "3794:36:9", + "id": 1256, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "6066:40:8", + "tryCall": false, "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" } - } - ], - "id": 1467, - "isConstant": false, - "isInlineArray": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "nodeType": "TupleExpression", - "src": "3793:38:9", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" + }, + "id": 1257, + "nodeType": "ExpressionStatement", + "src": "6066:40:8" } - }, - "nodeType": "BinaryOperation", - "operator": "/", - "rightExpression": { - "expression": { - "id": 1468, - "name": "schedule", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 1412, - "src": "3846:8:9", - "typeDescriptions": { - "typeIdentifier": "t_struct$_VestingSchedule_$1184_memory_ptr", - "typeString": "struct TokenVesting.VestingSchedule memory" - } - }, - "id": 1469, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": false, - "memberLocation": "3855:15:9", - "memberName": "vestingDuration", - "nodeType": "MemberAccess", - "referencedDeclaration": 1179, - "src": "3846:24:9", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "src": "3793:77:9", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "nodeType": "VariableDeclarationStatement", - "src": "3770:100:9" - }, - { - "expression": { - "id": 1472, - "name": "vestedAmount", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 1462, - "src": "3888:12:9", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "functionReturnParameters": 1409, - "id": 1473, - "nodeType": "Return", - "src": "3881:19:9" + ] + } } ] }, - "functionSelector": "ffa06b2a", - "id": 1475, + "documentation": { + "id": 1232, + "nodeType": "StructuredDocumentation", + "src": "5504:341:8", + "text": " @dev Performs an {ERC1363} transferFromAndCall, with a fallback to the simple {ERC20} transferFrom if the target\n has no code. This can be used to implement an {ERC721}-like safe transfer that rely on {ERC1363} checks when\n targeting contracts.\n Reverts if the returned value is other than `true`." + }, + "id": 1278, "implemented": true, "kind": "function", "modifiers": [], - "name": "calculateVestedAmount", - "nameLocation": "3193:21:9", + "name": "transferFromAndCallRelaxed", + "nameLocation": "5859:26:8", "nodeType": "FunctionDefinition", "parameters": { - "id": 1406, + "id": 1244, "nodeType": "ParameterList", "parameters": [ { "constant": false, - "id": 1405, + "id": 1235, "mutability": "mutable", - "name": "beneficiary", - "nameLocation": "3232:11:9", + "name": "token", + "nameLocation": "5904:5:8", + "nodeType": "VariableDeclaration", + "scope": 1278, + "src": "5895:14:8", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_contract$_IERC1363_$229", + "typeString": "contract IERC1363" + }, + "typeName": { + "id": 1234, + "nodeType": "UserDefinedTypeName", + "pathNode": { + "id": 1233, + "name": "IERC1363", + "nameLocations": [ + "5895:8:8" + ], + "nodeType": "IdentifierPath", + "referencedDeclaration": 229, + "src": "5895:8:8" + }, + "referencedDeclaration": 229, + "src": "5895:8:8", + "typeDescriptions": { + "typeIdentifier": "t_contract$_IERC1363_$229", + "typeString": "contract IERC1363" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 1237, + "mutability": "mutable", + "name": "from", + "nameLocation": "5927:4:8", "nodeType": "VariableDeclaration", - "scope": 1475, - "src": "3224:19:9", + "scope": 1278, + "src": "5919:12:8", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -17762,10 +15611,10 @@ "typeString": "address" }, "typeName": { - "id": 1404, + "id": 1236, "name": "address", "nodeType": "ElementaryTypeName", - "src": "3224:7:9", + "src": "5919:7:8", "stateMutability": "nonpayable", "typeDescriptions": { "typeIdentifier": "t_address", @@ -17773,23 +15622,44 @@ } }, "visibility": "internal" - } - ], - "src": "3214:35:9" - }, - "returnParameters": { - "id": 1409, - "nodeType": "ParameterList", - "parameters": [ + }, { "constant": false, - "id": 1408, + "id": 1239, "mutability": "mutable", - "name": "", - "nameLocation": "-1:-1:-1", + "name": "to", + "nameLocation": "5949:2:8", + "nodeType": "VariableDeclaration", + "scope": 1278, + "src": "5941:10:8", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 1238, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "5941:7:8", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 1241, + "mutability": "mutable", + "name": "value", + "nameLocation": "5969:5:8", "nodeType": "VariableDeclaration", - "scope": 1475, - "src": "3271:7:9", + "scope": 1278, + "src": "5961:13:8", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -17797,380 +15667,635 @@ "typeString": "uint256" }, "typeName": { - "id": 1407, + "id": 1240, "name": "uint256", "nodeType": "ElementaryTypeName", - "src": "3271:7:9", + "src": "5961:7:8", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, "visibility": "internal" + }, + { + "constant": false, + "id": 1243, + "mutability": "mutable", + "name": "data", + "nameLocation": "5997:4:8", + "nodeType": "VariableDeclaration", + "scope": 1278, + "src": "5984:17:8", + "stateVariable": false, + "storageLocation": "memory", + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes" + }, + "typeName": { + "id": 1242, + "name": "bytes", + "nodeType": "ElementaryTypeName", + "src": "5984:5:8", + "typeDescriptions": { + "typeIdentifier": "t_bytes_storage_ptr", + "typeString": "bytes" + } + }, + "visibility": "internal" } ], - "src": "3270:9:9" + "src": "5885:122:8" }, - "scope": 1636, - "src": "3184:723:9", - "stateMutability": "view", + "returnParameters": { + "id": 1245, + "nodeType": "ParameterList", + "parameters": [], + "src": "6017:0:8" + }, + "scope": 1404, + "src": "5850:406:8", + "stateMutability": "nonpayable", "virtual": false, - "visibility": "public" + "visibility": "internal" }, { "body": { - "id": 1548, + "id": 1320, "nodeType": "Block", - "src": "3978:592:9", + "src": "7023:218:8", "statements": [ { - "assignments": [ - 1484 - ], - "declarations": [ - { - "constant": false, - "id": 1484, - "mutability": "mutable", - "name": "schedule", - "nameLocation": "4012:8:9", - "nodeType": "VariableDeclaration", - "scope": 1548, - "src": "3988:32:9", - "stateVariable": false, - "storageLocation": "storage", - "typeDescriptions": { - "typeIdentifier": "t_struct$_VestingSchedule_$1184_storage_ptr", - "typeString": "struct TokenVesting.VestingSchedule" - }, - "typeName": { - "id": 1483, - "nodeType": "UserDefinedTypeName", - "pathNode": { - "id": 1482, - "name": "VestingSchedule", - "nameLocations": [ - "3988:15:9" - ], - "nodeType": "IdentifierPath", - "referencedDeclaration": 1184, - "src": "3988:15:9" - }, - "referencedDeclaration": 1184, - "src": "3988:15:9", - "typeDescriptions": { - "typeIdentifier": "t_struct$_VestingSchedule_$1184_storage_ptr", - "typeString": "struct TokenVesting.VestingSchedule" - } - }, - "visibility": "internal" - } - ], - "id": 1489, - "initialValue": { - "baseExpression": { - "id": 1485, - "name": "vestingSchedules", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 1192, - "src": "4023:16:9", - "typeDescriptions": { - "typeIdentifier": "t_mapping$_t_address_$_t_struct$_VestingSchedule_$1184_storage_$", - "typeString": "mapping(address => struct TokenVesting.VestingSchedule storage ref)" - } + "condition": { + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" }, - "id": 1488, - "indexExpression": { + "id": 1295, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { "expression": { - "id": 1486, - "name": "msg", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": -15, - "src": "4040:3:9", + "expression": { + "id": 1291, + "name": "to", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1284, + "src": "7037:2:8", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "id": 1292, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberLocation": "7040:4:8", + "memberName": "code", + "nodeType": "MemberAccess", + "src": "7037:7:8", "typeDescriptions": { - "typeIdentifier": "t_magic_message", - "typeString": "msg" + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" } }, - "id": 1487, + "id": 1293, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, - "memberLocation": "4044:6:9", - "memberName": "sender", + "memberLocation": "7045:6:8", + "memberName": "length", "nodeType": "MemberAccess", - "src": "4040:10:9", + "src": "7037:14:8", "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" + "typeIdentifier": "t_uint256", + "typeString": "uint256" } }, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": false, - "nodeType": "IndexAccess", - "src": "4023:28:9", + "nodeType": "BinaryOperation", + "operator": "==", + "rightExpression": { + "hexValue": "30", + "id": 1294, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "7055:1:8", + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + }, + "src": "7037:19:8", "typeDescriptions": { - "typeIdentifier": "t_struct$_VestingSchedule_$1184_storage", - "typeString": "struct TokenVesting.VestingSchedule storage ref" + "typeIdentifier": "t_bool", + "typeString": "bool" } }, - "nodeType": "VariableDeclarationStatement", - "src": "3988:63:9" - }, - { - "expression": { - "arguments": [ - { - "commonType": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "id": 1494, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftExpression": { - "expression": { - "id": 1491, - "name": "schedule", + "falseBody": { + "condition": { + "id": 1309, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "nodeType": "UnaryOperation", + "operator": "!", + "prefix": true, + "src": "7123:38:8", + "subExpression": { + "arguments": [ + { + "id": 1305, + "name": "to", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1484, - "src": "4069:8:9", + "referencedDeclaration": 1284, + "src": "7145:2:8", "typeDescriptions": { - "typeIdentifier": "t_struct$_VestingSchedule_$1184_storage_ptr", - "typeString": "struct TokenVesting.VestingSchedule storage pointer" + "typeIdentifier": "t_address", + "typeString": "address" } }, - "id": 1492, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": false, - "memberLocation": "4078:11:9", - "memberName": "totalAmount", - "nodeType": "MemberAccess", - "referencedDeclaration": 1173, - "src": "4069:20:9", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "nodeType": "BinaryOperation", - "operator": ">", - "rightExpression": { - "hexValue": "30", - "id": 1493, + { + "id": 1306, + "name": "value", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1286, + "src": "7149:5:8", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + { + "id": 1307, + "name": "data", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1288, + "src": "7156:4:8", + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + } + ], + "expression": { + "id": 1303, + "name": "token", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1282, + "src": "7124:5:8", + "typeDescriptions": { + "typeIdentifier": "t_contract$_IERC1363_$229", + "typeString": "contract IERC1363" + } + }, + "id": 1304, "isConstant": false, "isLValue": false, - "isPure": true, - "kind": "number", + "isPure": false, "lValueRequested": false, - "nodeType": "Literal", - "src": "4092:1:9", + "memberLocation": "7130:14:8", + "memberName": "approveAndCall", + "nodeType": "MemberAccess", + "referencedDeclaration": 228, + "src": "7124:20:8", "typeDescriptions": { - "typeIdentifier": "t_rational_0_by_1", - "typeString": "int_const 0" - }, - "value": "0" + "typeIdentifier": "t_function_external_nonpayable$_t_address_$_t_uint256_$_t_bytes_memory_ptr_$returns$_t_bool_$", + "typeString": "function (address,uint256,bytes memory) external returns (bool)" + } }, - "src": "4069:24:9", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - }, - { - "hexValue": "4e6f2076657374696e67207363686564756c65", - "id": 1495, + "id": 1308, "isConstant": false, "isLValue": false, - "isPure": true, - "kind": "string", + "isPure": false, + "kind": "functionCall", "lValueRequested": false, - "nodeType": "Literal", - "src": "4095:21:9", + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "7124:37:8", + "tryCall": false, "typeDescriptions": { - "typeIdentifier": "t_stringliteral_6bb1866c2b37a7b751163896084042e2548a35de6f3e7b1e063a1cd2115c9ef9", - "typeString": "literal_string \"No vesting schedule\"" - }, - "value": "No vesting schedule" - } - ], - "expression": { - "argumentTypes": [ - { "typeIdentifier": "t_bool", "typeString": "bool" - }, - { - "typeIdentifier": "t_stringliteral_6bb1866c2b37a7b751163896084042e2548a35de6f3e7b1e063a1cd2115c9ef9", - "typeString": "literal_string \"No vesting schedule\"" } - ], - "id": 1490, - "name": "require", - "nodeType": "Identifier", - "overloadedDeclarations": [ - -18, - -18 - ], - "referencedDeclaration": -18, - "src": "4061:7:9", + }, "typeDescriptions": { - "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", - "typeString": "function (bool,string memory) pure" + "typeIdentifier": "t_bool", + "typeString": "bool" } }, - "id": 1496, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "nameLocations": [], - "names": [], - "nodeType": "FunctionCall", - "src": "4061:56:9", - "tryCall": false, - "typeDescriptions": { - "typeIdentifier": "t_tuple$__$", - "typeString": "tuple()" + "id": 1318, + "nodeType": "IfStatement", + "src": "7119:116:8", + "trueBody": { + "id": 1317, + "nodeType": "Block", + "src": "7163:72:8", + "statements": [ + { + "errorCall": { + "arguments": [ + { + "arguments": [ + { + "id": 1313, + "name": "token", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1282, + "src": "7217:5:8", + "typeDescriptions": { + "typeIdentifier": "t_contract$_IERC1363_$229", + "typeString": "contract IERC1363" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_contract$_IERC1363_$229", + "typeString": "contract IERC1363" + } + ], + "id": 1312, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "7209:7:8", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_address_$", + "typeString": "type(address)" + }, + "typeName": { + "id": 1311, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "7209:7:8", + "typeDescriptions": {} + } + }, + "id": 1314, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "typeConversion", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "7209:14:8", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + } + ], + "id": 1310, + "name": "SafeERC20FailedOperation", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1007, + "src": "7184:24:8", + "typeDescriptions": { + "typeIdentifier": "t_function_error_pure$_t_address_$returns$__$", + "typeString": "function (address) pure" + } + }, + "id": 1315, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "7184:40:8", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 1316, + "nodeType": "RevertStatement", + "src": "7177:47:8" + } + ] } }, - "id": 1497, - "nodeType": "ExpressionStatement", - "src": "4061:56:9" - }, - { - "expression": { - "arguments": [ + "id": 1319, + "nodeType": "IfStatement", + "src": "7033:202:8", + "trueBody": { + "id": 1302, + "nodeType": "Block", + "src": "7058:55:8", + "statements": [ { - "id": 1501, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "nodeType": "UnaryOperation", - "operator": "!", - "prefix": true, - "src": "4135:17:9", - "subExpression": { + "expression": { + "arguments": [ + { + "id": 1297, + "name": "token", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1282, + "src": "7085:5:8", + "typeDescriptions": { + "typeIdentifier": "t_contract$_IERC1363_$229", + "typeString": "contract IERC1363" + } + }, + { + "id": 1298, + "name": "to", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1284, + "src": "7092:2:8", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "id": 1299, + "name": "value", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1286, + "src": "7096:5:8", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], "expression": { - "id": 1499, - "name": "schedule", + "argumentTypes": [ + { + "typeIdentifier": "t_contract$_IERC1363_$229", + "typeString": "contract IERC1363" + }, + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "id": 1296, + "name": "forceApprove", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1484, - "src": "4136:8:9", + "referencedDeclaration": 1188, + "src": "7072:12:8", "typeDescriptions": { - "typeIdentifier": "t_struct$_VestingSchedule_$1184_storage_ptr", - "typeString": "struct TokenVesting.VestingSchedule storage pointer" + "typeIdentifier": "t_function_internal_nonpayable$_t_contract$_IERC20_$967_$_t_address_$_t_uint256_$returns$__$", + "typeString": "function (contract IERC20,address,uint256)" } }, - "id": 1500, + "id": 1300, "isConstant": false, - "isLValue": true, + "isLValue": false, "isPure": false, + "kind": "functionCall", "lValueRequested": false, - "memberLocation": "4145:7:9", - "memberName": "revoked", - "nodeType": "MemberAccess", - "referencedDeclaration": 1183, - "src": "4136:16:9", + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "7072:30:8", + "tryCall": false, "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" } }, - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - }, - { - "hexValue": "56657374696e67207265766f6b6564", - "id": 1502, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "string", - "lValueRequested": false, - "nodeType": "Literal", - "src": "4154:17:9", - "typeDescriptions": { - "typeIdentifier": "t_stringliteral_8ecb40193de0ebe87d207ece4ce0c743b9de3a82936a058dc7616916eebf0679", - "typeString": "literal_string \"Vesting revoked\"" - }, - "value": "Vesting revoked" + "id": 1301, + "nodeType": "ExpressionStatement", + "src": "7072:30:8" } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_bool", - "typeString": "bool" - }, - { - "typeIdentifier": "t_stringliteral_8ecb40193de0ebe87d207ece4ce0c743b9de3a82936a058dc7616916eebf0679", - "typeString": "literal_string \"Vesting revoked\"" - } - ], - "id": 1498, - "name": "require", - "nodeType": "Identifier", - "overloadedDeclarations": [ - -18, - -18 + ] + } + } + ] + }, + "documentation": { + "id": 1279, + "nodeType": "StructuredDocumentation", + "src": "6262:654:8", + "text": " @dev Performs an {ERC1363} approveAndCall, with a fallback to the simple {ERC20} approve if the target has no\n code. This can be used to implement an {ERC721}-like safe transfer that rely on {ERC1363} checks when\n targeting contracts.\n NOTE: When the recipient address (`to`) has no code (i.e. is an EOA), this function behaves as {forceApprove}.\n Opposedly, when the recipient address (`to`) has code, this function only attempts to call {ERC1363-approveAndCall}\n once without retrying, and relies on the returned value to be true.\n Reverts if the returned value is other than `true`." + }, + "id": 1321, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "approveAndCallRelaxed", + "nameLocation": "6930:21:8", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 1289, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 1282, + "mutability": "mutable", + "name": "token", + "nameLocation": "6961:5:8", + "nodeType": "VariableDeclaration", + "scope": 1321, + "src": "6952:14:8", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_contract$_IERC1363_$229", + "typeString": "contract IERC1363" + }, + "typeName": { + "id": 1281, + "nodeType": "UserDefinedTypeName", + "pathNode": { + "id": 1280, + "name": "IERC1363", + "nameLocations": [ + "6952:8:8" ], - "referencedDeclaration": -18, - "src": "4127:7:9", - "typeDescriptions": { - "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", - "typeString": "function (bool,string memory) pure" - } + "nodeType": "IdentifierPath", + "referencedDeclaration": 229, + "src": "6952:8:8" }, - "id": 1503, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "nameLocations": [], - "names": [], - "nodeType": "FunctionCall", - "src": "4127:45:9", - "tryCall": false, + "referencedDeclaration": 229, + "src": "6952:8:8", "typeDescriptions": { - "typeIdentifier": "t_tuple$__$", - "typeString": "tuple()" + "typeIdentifier": "t_contract$_IERC1363_$229", + "typeString": "contract IERC1363" } }, - "id": 1504, - "nodeType": "ExpressionStatement", - "src": "4127:45:9" + "visibility": "internal" + }, + { + "constant": false, + "id": 1284, + "mutability": "mutable", + "name": "to", + "nameLocation": "6976:2:8", + "nodeType": "VariableDeclaration", + "scope": 1321, + "src": "6968:10:8", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 1283, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "6968:7:8", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 1286, + "mutability": "mutable", + "name": "value", + "nameLocation": "6988:5:8", + "nodeType": "VariableDeclaration", + "scope": 1321, + "src": "6980:13:8", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 1285, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "6980:7:8", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" }, + { + "constant": false, + "id": 1288, + "mutability": "mutable", + "name": "data", + "nameLocation": "7008:4:8", + "nodeType": "VariableDeclaration", + "scope": 1321, + "src": "6995:17:8", + "stateVariable": false, + "storageLocation": "memory", + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes" + }, + "typeName": { + "id": 1287, + "name": "bytes", + "nodeType": "ElementaryTypeName", + "src": "6995:5:8", + "typeDescriptions": { + "typeIdentifier": "t_bytes_storage_ptr", + "typeString": "bytes" + } + }, + "visibility": "internal" + } + ], + "src": "6951:62:8" + }, + "returnParameters": { + "id": 1290, + "nodeType": "ParameterList", + "parameters": [], + "src": "7023:0:8" + }, + "scope": 1404, + "src": "6921:320:8", + "stateMutability": "nonpayable", + "virtual": false, + "visibility": "internal" + }, + { + "body": { + "id": 1361, + "nodeType": "Block", + "src": "7808:650:8", + "statements": [ { "assignments": [ - 1506 + 1331 ], "declarations": [ { "constant": false, - "id": 1506, + "id": 1331, "mutability": "mutable", - "name": "vestedAmount", - "nameLocation": "4191:12:9", + "name": "returnSize", + "nameLocation": "7826:10:8", "nodeType": "VariableDeclaration", - "scope": 1548, - "src": "4183:20:9", + "scope": 1361, + "src": "7818:18:8", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -18178,10 +16303,10 @@ "typeString": "uint256" }, "typeName": { - "id": 1505, + "id": 1330, "name": "uint256", "nodeType": "ElementaryTypeName", - "src": "4183:7:9", + "src": "7818:7:8", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -18190,88 +16315,24 @@ "visibility": "internal" } ], - "id": 1511, - "initialValue": { - "arguments": [ - { - "expression": { - "id": 1508, - "name": "msg", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": -15, - "src": "4228:3:9", - "typeDescriptions": { - "typeIdentifier": "t_magic_message", - "typeString": "msg" - } - }, - "id": 1509, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "memberLocation": "4232:6:9", - "memberName": "sender", - "nodeType": "MemberAccess", - "src": "4228:10:9", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_address", - "typeString": "address" - } - ], - "id": 1507, - "name": "calculateVestedAmount", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 1475, - "src": "4206:21:9", - "typeDescriptions": { - "typeIdentifier": "t_function_internal_view$_t_address_$returns$_t_uint256_$", - "typeString": "function (address) view returns (uint256)" - } - }, - "id": 1510, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "nameLocations": [], - "names": [], - "nodeType": "FunctionCall", - "src": "4206:33:9", - "tryCall": false, - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, + "id": 1332, "nodeType": "VariableDeclarationStatement", - "src": "4183:56:9" + "src": "7818:18:8" }, { "assignments": [ - 1513 + 1334 ], "declarations": [ { "constant": false, - "id": 1513, + "id": 1334, "mutability": "mutable", - "name": "claimableAmount", - "nameLocation": "4257:15:9", + "name": "returnValue", + "nameLocation": "7854:11:8", "nodeType": "VariableDeclaration", - "scope": 1548, - "src": "4249:23:9", + "scope": 1361, + "src": "7846:19:8", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -18279,10 +16340,10 @@ "typeString": "uint256" }, "typeName": { - "id": 1512, + "id": 1333, "name": "uint256", "nodeType": "ElementaryTypeName", - "src": "4249:7:9", + "src": "7846:7:8", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -18291,884 +16352,825 @@ "visibility": "internal" } ], - "id": 1518, - "initialValue": { - "commonType": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "id": 1517, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftExpression": { - "id": 1514, - "name": "vestedAmount", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 1506, - "src": "4275:12:9", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "nodeType": "BinaryOperation", - "operator": "-", - "rightExpression": { - "expression": { - "id": 1515, - "name": "schedule", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 1484, - "src": "4290:8:9", - "typeDescriptions": { - "typeIdentifier": "t_struct$_VestingSchedule_$1184_storage_ptr", - "typeString": "struct TokenVesting.VestingSchedule storage pointer" - } - }, - "id": 1516, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": false, - "memberLocation": "4299:13:9", - "memberName": "amountClaimed", - "nodeType": "MemberAccess", - "referencedDeclaration": 1181, - "src": "4290:22:9", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "src": "4275:37:9", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, + "id": 1335, "nodeType": "VariableDeclarationStatement", - "src": "4249:63:9" + "src": "7846:19:8" }, { - "expression": { - "arguments": [ + "AST": { + "nodeType": "YulBlock", + "src": "7900:396:8", + "statements": [ { - "commonType": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "id": 1522, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftExpression": { - "id": 1520, - "name": "claimableAmount", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 1513, - "src": "4330:15:9", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "nodeType": "BinaryOperation", - "operator": ">", - "rightExpression": { - "hexValue": "30", - "id": 1521, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "number", - "lValueRequested": false, - "nodeType": "Literal", - "src": "4348:1:9", - "typeDescriptions": { - "typeIdentifier": "t_rational_0_by_1", - "typeString": "int_const 0" + "nodeType": "YulVariableDeclaration", + "src": "7914:75:8", + "value": { + "arguments": [ + { + "arguments": [], + "functionName": { + "name": "gas", + "nodeType": "YulIdentifier", + "src": "7934:3:8" + }, + "nodeType": "YulFunctionCall", + "src": "7934:5:8" + }, + { + "name": "token", + "nodeType": "YulIdentifier", + "src": "7941:5:8" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "7948:1:8", + "type": "", + "value": "0" + }, + { + "arguments": [ + { + "name": "data", + "nodeType": "YulIdentifier", + "src": "7955:4:8" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "7961:4:8", + "type": "", + "value": "0x20" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "7951:3:8" + }, + "nodeType": "YulFunctionCall", + "src": "7951:15:8" + }, + { + "arguments": [ + { + "name": "data", + "nodeType": "YulIdentifier", + "src": "7974:4:8" + } + ], + "functionName": { + "name": "mload", + "nodeType": "YulIdentifier", + "src": "7968:5:8" + }, + "nodeType": "YulFunctionCall", + "src": "7968:11:8" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "7981:1:8", + "type": "", + "value": "0" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "7984:4:8", + "type": "", + "value": "0x20" + } + ], + "functionName": { + "name": "call", + "nodeType": "YulIdentifier", + "src": "7929:4:8" }, - "value": "0" + "nodeType": "YulFunctionCall", + "src": "7929:60:8" + }, + "variables": [ + { + "name": "success", + "nodeType": "YulTypedName", + "src": "7918:7:8", + "type": "" + } + ] + }, + { + "body": { + "nodeType": "YulBlock", + "src": "8050:157:8", + "statements": [ + { + "nodeType": "YulVariableDeclaration", + "src": "8068:22:8", + "value": { + "arguments": [ + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "8085:4:8", + "type": "", + "value": "0x40" + } + ], + "functionName": { + "name": "mload", + "nodeType": "YulIdentifier", + "src": "8079:5:8" + }, + "nodeType": "YulFunctionCall", + "src": "8079:11:8" + }, + "variables": [ + { + "name": "ptr", + "nodeType": "YulTypedName", + "src": "8072:3:8", + "type": "" + } + ] + }, + { + "expression": { + "arguments": [ + { + "name": "ptr", + "nodeType": "YulIdentifier", + "src": "8122:3:8" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "8127:1:8", + "type": "", + "value": "0" + }, + { + "arguments": [], + "functionName": { + "name": "returndatasize", + "nodeType": "YulIdentifier", + "src": "8130:14:8" + }, + "nodeType": "YulFunctionCall", + "src": "8130:16:8" + } + ], + "functionName": { + "name": "returndatacopy", + "nodeType": "YulIdentifier", + "src": "8107:14:8" + }, + "nodeType": "YulFunctionCall", + "src": "8107:40:8" + }, + "nodeType": "YulExpressionStatement", + "src": "8107:40:8" + }, + { + "expression": { + "arguments": [ + { + "name": "ptr", + "nodeType": "YulIdentifier", + "src": "8171:3:8" + }, + { + "arguments": [], + "functionName": { + "name": "returndatasize", + "nodeType": "YulIdentifier", + "src": "8176:14:8" + }, + "nodeType": "YulFunctionCall", + "src": "8176:16:8" + } + ], + "functionName": { + "name": "revert", + "nodeType": "YulIdentifier", + "src": "8164:6:8" + }, + "nodeType": "YulFunctionCall", + "src": "8164:29:8" + }, + "nodeType": "YulExpressionStatement", + "src": "8164:29:8" + } + ] + }, + "condition": { + "arguments": [ + { + "name": "success", + "nodeType": "YulIdentifier", + "src": "8041:7:8" + } + ], + "functionName": { + "name": "iszero", + "nodeType": "YulIdentifier", + "src": "8034:6:8" + }, + "nodeType": "YulFunctionCall", + "src": "8034:15:8" + }, + "nodeType": "YulIf", + "src": "8031:176:8" + }, + { + "nodeType": "YulAssignment", + "src": "8220:30:8", + "value": { + "arguments": [], + "functionName": { + "name": "returndatasize", + "nodeType": "YulIdentifier", + "src": "8234:14:8" + }, + "nodeType": "YulFunctionCall", + "src": "8234:16:8" + }, + "variableNames": [ + { + "name": "returnSize", + "nodeType": "YulIdentifier", + "src": "8220:10:8" + } + ] + }, + { + "nodeType": "YulAssignment", + "src": "8263:23:8", + "value": { + "arguments": [ + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "8284:1:8", + "type": "", + "value": "0" + } + ], + "functionName": { + "name": "mload", + "nodeType": "YulIdentifier", + "src": "8278:5:8" + }, + "nodeType": "YulFunctionCall", + "src": "8278:8:8" }, - "src": "4330:19:9", + "variableNames": [ + { + "name": "returnValue", + "nodeType": "YulIdentifier", + "src": "8263:11:8" + } + ] + } + ] + }, + "evmVersion": "london", + "externalReferences": [ + { + "declaration": 1327, + "isOffset": false, + "isSlot": false, + "src": "7955:4:8", + "valueSize": 1 + }, + { + "declaration": 1327, + "isOffset": false, + "isSlot": false, + "src": "7974:4:8", + "valueSize": 1 + }, + { + "declaration": 1331, + "isOffset": false, + "isSlot": false, + "src": "8220:10:8", + "valueSize": 1 + }, + { + "declaration": 1334, + "isOffset": false, + "isSlot": false, + "src": "8263:11:8", + "valueSize": 1 + }, + { + "declaration": 1325, + "isOffset": false, + "isSlot": false, + "src": "7941:5:8", + "valueSize": 1 + } + ], + "flags": [ + "memory-safe" + ], + "id": 1336, + "nodeType": "InlineAssembly", + "src": "7875:421:8" + }, + { + "condition": { + "condition": { + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 1339, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "id": 1337, + "name": "returnSize", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1331, + "src": "8310:10:8", "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" + "typeIdentifier": "t_uint256", + "typeString": "uint256" } }, - { - "hexValue": "4e6f20746f6b656e7320746f20636c61696d", - "id": 1523, + "nodeType": "BinaryOperation", + "operator": "==", + "rightExpression": { + "hexValue": "30", + "id": 1338, "isConstant": false, "isLValue": false, "isPure": true, - "kind": "string", + "kind": "number", "lValueRequested": false, "nodeType": "Literal", - "src": "4351:20:9", + "src": "8324:1:8", "typeDescriptions": { - "typeIdentifier": "t_stringliteral_0d5449e713a47f03a14de06feb7e7374931b31bbe74b9f8d4277d4797f0eb90e", - "typeString": "literal_string \"No tokens to claim\"" + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" }, - "value": "No tokens to claim" - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_bool", - "typeString": "bool" - }, - { - "typeIdentifier": "t_stringliteral_0d5449e713a47f03a14de06feb7e7374931b31bbe74b9f8d4277d4797f0eb90e", - "typeString": "literal_string \"No tokens to claim\"" - } - ], - "id": 1519, - "name": "require", - "nodeType": "Identifier", - "overloadedDeclarations": [ - -18, - -18 - ], - "referencedDeclaration": -18, - "src": "4322:7:9", - "typeDescriptions": { - "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", - "typeString": "function (bool,string memory) pure" + "value": "0" + }, + "src": "8310:15:8", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" } }, - "id": 1524, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "nameLocations": [], - "names": [], - "nodeType": "FunctionCall", - "src": "4322:50:9", - "tryCall": false, - "typeDescriptions": { - "typeIdentifier": "t_tuple$__$", - "typeString": "tuple()" - } - }, - "id": 1525, - "nodeType": "ExpressionStatement", - "src": "4322:50:9" - }, - { - "expression": { - "id": 1530, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftHandSide": { - "expression": { - "id": 1526, - "name": "schedule", + "falseExpression": { + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 1350, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "id": 1348, + "name": "returnValue", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1484, - "src": "4383:8:9", + "referencedDeclaration": 1334, + "src": "8362:11:8", "typeDescriptions": { - "typeIdentifier": "t_struct$_VestingSchedule_$1184_storage_ptr", - "typeString": "struct TokenVesting.VestingSchedule storage pointer" + "typeIdentifier": "t_uint256", + "typeString": "uint256" } }, - "id": 1528, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": true, - "memberLocation": "4392:13:9", - "memberName": "amountClaimed", - "nodeType": "MemberAccess", - "referencedDeclaration": 1181, - "src": "4383:22:9", + "nodeType": "BinaryOperation", + "operator": "!=", + "rightExpression": { + "hexValue": "31", + "id": 1349, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "8377:1:8", + "typeDescriptions": { + "typeIdentifier": "t_rational_1_by_1", + "typeString": "int_const 1" + }, + "value": "1" + }, + "src": "8362:16:8", "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" + "typeIdentifier": "t_bool", + "typeString": "bool" } }, - "nodeType": "Assignment", - "operator": "+=", - "rightHandSide": { - "id": 1529, - "name": "claimableAmount", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 1513, - "src": "4409:15:9", - "typeDescriptions": { + "id": 1351, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "nodeType": "Conditional", + "src": "8310:68:8", + "trueExpression": { + "commonType": { "typeIdentifier": "t_uint256", "typeString": "uint256" - } - }, - "src": "4383:41:9", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "id": 1531, - "nodeType": "ExpressionStatement", - "src": "4383:41:9" - }, - { - "expression": { - "arguments": [ - { - "arguments": [ - { + }, + "id": 1347, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "expression": { + "expression": { + "arguments": [ + { + "id": 1342, + "name": "token", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1325, + "src": "8336:5:8", + "typeDescriptions": { + "typeIdentifier": "t_contract$_IERC20_$967", + "typeString": "contract IERC20" + } + } + ], "expression": { - "id": 1535, - "name": "msg", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": -15, - "src": "4457:3:9", + "argumentTypes": [ + { + "typeIdentifier": "t_contract$_IERC20_$967", + "typeString": "contract IERC20" + } + ], + "id": 1341, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "8328:7:8", "typeDescriptions": { - "typeIdentifier": "t_magic_message", - "typeString": "msg" + "typeIdentifier": "t_type$_t_address_$", + "typeString": "type(address)" + }, + "typeName": { + "id": 1340, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "8328:7:8", + "typeDescriptions": {} } }, - "id": 1536, + "id": 1343, "isConstant": false, "isLValue": false, "isPure": false, + "kind": "typeConversion", "lValueRequested": false, - "memberLocation": "4461:6:9", - "memberName": "sender", - "nodeType": "MemberAccess", - "src": "4457:10:9", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - { - "id": 1537, - "name": "claimableAmount", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 1513, - "src": "4469:15:9", + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "8328:14:8", + "tryCall": false, "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - } - ], - "expression": { - "argumentTypes": [ - { "typeIdentifier": "t_address", "typeString": "address" - }, - { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - ], - "expression": { - "id": 1533, - "name": "token", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 1187, - "src": "4442:5:9", - "typeDescriptions": { - "typeIdentifier": "t_contract$_IERC20_$877", - "typeString": "contract IERC20" } }, - "id": 1534, + "id": 1344, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, - "memberLocation": "4448:8:9", - "memberName": "transfer", + "memberLocation": "8343:4:8", + "memberName": "code", "nodeType": "MemberAccess", - "referencedDeclaration": 844, - "src": "4442:14:9", + "src": "8328:19:8", "typeDescriptions": { - "typeIdentifier": "t_function_external_nonpayable$_t_address_$_t_uint256_$returns$_t_bool_$", - "typeString": "function (address,uint256) external returns (bool)" + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" } }, - "id": 1538, + "id": 1345, "isConstant": false, "isLValue": false, "isPure": false, - "kind": "functionCall", "lValueRequested": false, - "nameLocations": [], - "names": [], - "nodeType": "FunctionCall", - "src": "4442:43:9", - "tryCall": false, + "memberLocation": "8348:6:8", + "memberName": "length", + "nodeType": "MemberAccess", + "src": "8328:26:8", "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" + "typeIdentifier": "t_uint256", + "typeString": "uint256" } }, - { - "hexValue": "5472616e73666572206661696c6564", - "id": 1539, + "nodeType": "BinaryOperation", + "operator": "==", + "rightExpression": { + "hexValue": "30", + "id": 1346, "isConstant": false, "isLValue": false, "isPure": true, - "kind": "string", + "kind": "number", "lValueRequested": false, "nodeType": "Literal", - "src": "4487:17:9", + "src": "8358:1:8", "typeDescriptions": { - "typeIdentifier": "t_stringliteral_25adaa6d082ce15f901e0d8a3d393e7462ef9edf2e6bc8321fa14d1615b6fc51", - "typeString": "literal_string \"Transfer failed\"" - }, - "value": "Transfer failed" - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_bool", - "typeString": "bool" + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" }, - { - "typeIdentifier": "t_stringliteral_25adaa6d082ce15f901e0d8a3d393e7462ef9edf2e6bc8321fa14d1615b6fc51", - "typeString": "literal_string \"Transfer failed\"" - } - ], - "id": 1532, - "name": "require", - "nodeType": "Identifier", - "overloadedDeclarations": [ - -18, - -18 - ], - "referencedDeclaration": -18, - "src": "4434:7:9", + "value": "0" + }, + "src": "8328:31:8", "typeDescriptions": { - "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", - "typeString": "function (bool,string memory) pure" + "typeIdentifier": "t_bool", + "typeString": "bool" } }, - "id": 1540, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "nameLocations": [], - "names": [], - "nodeType": "FunctionCall", - "src": "4434:71:9", - "tryCall": false, "typeDescriptions": { - "typeIdentifier": "t_tuple$__$", - "typeString": "tuple()" + "typeIdentifier": "t_bool", + "typeString": "bool" } }, - "id": 1541, - "nodeType": "ExpressionStatement", - "src": "4434:71:9" - }, - { - "eventCall": { - "arguments": [ + "id": 1360, + "nodeType": "IfStatement", + "src": "8306:146:8", + "trueBody": { + "id": 1359, + "nodeType": "Block", + "src": "8380:72:8", + "statements": [ { - "expression": { - "id": 1543, - "name": "msg", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": -15, - "src": "4535:3:9", - "typeDescriptions": { - "typeIdentifier": "t_magic_message", - "typeString": "msg" - } - }, - "id": 1544, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "memberLocation": "4539:6:9", - "memberName": "sender", - "nodeType": "MemberAccess", - "src": "4535:10:9", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - { - "id": 1545, - "name": "claimableAmount", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 1513, - "src": "4547:15:9", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_address", - "typeString": "address" + "errorCall": { + "arguments": [ + { + "arguments": [ + { + "id": 1355, + "name": "token", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1325, + "src": "8434:5:8", + "typeDescriptions": { + "typeIdentifier": "t_contract$_IERC20_$967", + "typeString": "contract IERC20" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_contract$_IERC20_$967", + "typeString": "contract IERC20" + } + ], + "id": 1354, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "8426:7:8", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_address_$", + "typeString": "type(address)" + }, + "typeName": { + "id": 1353, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "8426:7:8", + "typeDescriptions": {} + } + }, + "id": 1356, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "typeConversion", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "8426:14:8", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + } + ], + "id": 1352, + "name": "SafeERC20FailedOperation", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1007, + "src": "8401:24:8", + "typeDescriptions": { + "typeIdentifier": "t_function_error_pure$_t_address_$returns$__$", + "typeString": "function (address) pure" + } + }, + "id": 1357, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "8401:40:8", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } }, - { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - ], - "id": 1542, - "name": "TokensClaimed", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 1208, - "src": "4521:13:9", - "typeDescriptions": { - "typeIdentifier": "t_function_event_nonpayable$_t_address_$_t_uint256_$returns$__$", - "typeString": "function (address,uint256)" + "id": 1358, + "nodeType": "RevertStatement", + "src": "8394:47:8" } - }, - "id": 1546, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "nameLocations": [], - "names": [], - "nodeType": "FunctionCall", - "src": "4521:42:9", - "tryCall": false, - "typeDescriptions": { - "typeIdentifier": "t_tuple$__$", - "typeString": "tuple()" - } - }, - "id": 1547, - "nodeType": "EmitStatement", - "src": "4516:47:9" + ] + } } ] }, - "functionSelector": "e74f3fbb", - "id": 1549, + "documentation": { + "id": 1322, + "nodeType": "StructuredDocumentation", + "src": "7247:486:8", + "text": " @dev Imitates a Solidity high-level call (i.e. a regular function call to a contract), relaxing the requirement\n on the return value: the return value is optional (but if data is returned, it must not be false).\n @param token The token targeted by the call.\n @param data The call data (encoded using abi.encode or one of its variants).\n This is a variant of {_callOptionalReturnBool} that reverts if call fails to meet the requirements." + }, + "id": 1362, "implemented": true, "kind": "function", - "modifiers": [ - { - "id": 1478, - "kind": "modifierInvocation", - "modifierName": { - "id": 1477, - "name": "nonReentrant", - "nameLocations": [ - "3951:12:9" - ], - "nodeType": "IdentifierPath", - "referencedDeclaration": 1083, - "src": "3951:12:9" - }, - "nodeType": "ModifierInvocation", - "src": "3951:12:9" - }, - { - "id": 1480, - "kind": "modifierInvocation", - "modifierName": { - "id": 1479, - "name": "whenNotPaused", - "nameLocations": [ - "3964:13:9" - ], - "nodeType": "IdentifierPath", - "referencedDeclaration": 975, - "src": "3964:13:9" - }, - "nodeType": "ModifierInvocation", - "src": "3964:13:9" - } - ], - "name": "claimVestedTokens", - "nameLocation": "3922:17:9", + "modifiers": [], + "name": "_callOptionalReturn", + "nameLocation": "7747:19:8", "nodeType": "FunctionDefinition", "parameters": { - "id": 1476, + "id": 1328, "nodeType": "ParameterList", - "parameters": [], - "src": "3939:2:9" + "parameters": [ + { + "constant": false, + "id": 1325, + "mutability": "mutable", + "name": "token", + "nameLocation": "7774:5:8", + "nodeType": "VariableDeclaration", + "scope": 1362, + "src": "7767:12:8", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_contract$_IERC20_$967", + "typeString": "contract IERC20" + }, + "typeName": { + "id": 1324, + "nodeType": "UserDefinedTypeName", + "pathNode": { + "id": 1323, + "name": "IERC20", + "nameLocations": [ + "7767:6:8" + ], + "nodeType": "IdentifierPath", + "referencedDeclaration": 967, + "src": "7767:6:8" + }, + "referencedDeclaration": 967, + "src": "7767:6:8", + "typeDescriptions": { + "typeIdentifier": "t_contract$_IERC20_$967", + "typeString": "contract IERC20" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 1327, + "mutability": "mutable", + "name": "data", + "nameLocation": "7794:4:8", + "nodeType": "VariableDeclaration", + "scope": 1362, + "src": "7781:17:8", + "stateVariable": false, + "storageLocation": "memory", + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes" + }, + "typeName": { + "id": 1326, + "name": "bytes", + "nodeType": "ElementaryTypeName", + "src": "7781:5:8", + "typeDescriptions": { + "typeIdentifier": "t_bytes_storage_ptr", + "typeString": "bytes" + } + }, + "visibility": "internal" + } + ], + "src": "7766:33:8" }, "returnParameters": { - "id": 1481, + "id": 1329, "nodeType": "ParameterList", "parameters": [], - "src": "3978:0:9" + "src": "7808:0:8" }, - "scope": 1636, - "src": "3913:657:9", + "scope": 1404, + "src": "7738:720:8", "stateMutability": "nonpayable", "virtual": false, - "visibility": "external" + "visibility": "private" }, { "body": { - "id": 1616, + "id": 1402, "nodeType": "Block", - "src": "4639:543:9", + "src": "9049:391:8", "statements": [ { "assignments": [ - 1558 + 1374 ], "declarations": [ { "constant": false, - "id": 1558, + "id": 1374, "mutability": "mutable", - "name": "schedule", - "nameLocation": "4673:8:9", + "name": "success", + "nameLocation": "9064:7:8", "nodeType": "VariableDeclaration", - "scope": 1616, - "src": "4649:32:9", + "scope": 1402, + "src": "9059:12:8", "stateVariable": false, - "storageLocation": "storage", + "storageLocation": "default", "typeDescriptions": { - "typeIdentifier": "t_struct$_VestingSchedule_$1184_storage_ptr", - "typeString": "struct TokenVesting.VestingSchedule" + "typeIdentifier": "t_bool", + "typeString": "bool" }, "typeName": { - "id": 1557, - "nodeType": "UserDefinedTypeName", - "pathNode": { - "id": 1556, - "name": "VestingSchedule", - "nameLocations": [ - "4649:15:9" - ], - "nodeType": "IdentifierPath", - "referencedDeclaration": 1184, - "src": "4649:15:9" - }, - "referencedDeclaration": 1184, - "src": "4649:15:9", + "id": 1373, + "name": "bool", + "nodeType": "ElementaryTypeName", + "src": "9059:4:8", "typeDescriptions": { - "typeIdentifier": "t_struct$_VestingSchedule_$1184_storage_ptr", - "typeString": "struct TokenVesting.VestingSchedule" + "typeIdentifier": "t_bool", + "typeString": "bool" } }, "visibility": "internal" } ], - "id": 1562, - "initialValue": { - "baseExpression": { - "id": 1559, - "name": "vestingSchedules", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 1192, - "src": "4684:16:9", - "typeDescriptions": { - "typeIdentifier": "t_mapping$_t_address_$_t_struct$_VestingSchedule_$1184_storage_$", - "typeString": "mapping(address => struct TokenVesting.VestingSchedule storage ref)" - } - }, - "id": 1561, - "indexExpression": { - "id": 1560, - "name": "beneficiary", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 1551, - "src": "4701:11:9", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": false, - "nodeType": "IndexAccess", - "src": "4684:29:9", - "typeDescriptions": { - "typeIdentifier": "t_struct$_VestingSchedule_$1184_storage", - "typeString": "struct TokenVesting.VestingSchedule storage ref" - } - }, + "id": 1375, "nodeType": "VariableDeclarationStatement", - "src": "4649:64:9" - }, - { - "expression": { - "arguments": [ - { - "commonType": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "id": 1567, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftExpression": { - "expression": { - "id": 1564, - "name": "schedule", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 1558, - "src": "4731:8:9", - "typeDescriptions": { - "typeIdentifier": "t_struct$_VestingSchedule_$1184_storage_ptr", - "typeString": "struct TokenVesting.VestingSchedule storage pointer" - } - }, - "id": 1565, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": false, - "memberLocation": "4740:11:9", - "memberName": "totalAmount", - "nodeType": "MemberAccess", - "referencedDeclaration": 1173, - "src": "4731:20:9", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "nodeType": "BinaryOperation", - "operator": ">", - "rightExpression": { - "hexValue": "30", - "id": 1566, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "number", - "lValueRequested": false, - "nodeType": "Literal", - "src": "4754:1:9", - "typeDescriptions": { - "typeIdentifier": "t_rational_0_by_1", - "typeString": "int_const 0" - }, - "value": "0" - }, - "src": "4731:24:9", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - }, - { - "hexValue": "4e6f2076657374696e67207363686564756c65", - "id": 1568, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "string", - "lValueRequested": false, - "nodeType": "Literal", - "src": "4757:21:9", - "typeDescriptions": { - "typeIdentifier": "t_stringliteral_6bb1866c2b37a7b751163896084042e2548a35de6f3e7b1e063a1cd2115c9ef9", - "typeString": "literal_string \"No vesting schedule\"" - }, - "value": "No vesting schedule" - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_bool", - "typeString": "bool" - }, - { - "typeIdentifier": "t_stringliteral_6bb1866c2b37a7b751163896084042e2548a35de6f3e7b1e063a1cd2115c9ef9", - "typeString": "literal_string \"No vesting schedule\"" - } - ], - "id": 1563, - "name": "require", - "nodeType": "Identifier", - "overloadedDeclarations": [ - -18, - -18 - ], - "referencedDeclaration": -18, - "src": "4723:7:9", - "typeDescriptions": { - "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", - "typeString": "function (bool,string memory) pure" - } - }, - "id": 1569, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "nameLocations": [], - "names": [], - "nodeType": "FunctionCall", - "src": "4723:56:9", - "tryCall": false, - "typeDescriptions": { - "typeIdentifier": "t_tuple$__$", - "typeString": "tuple()" - } - }, - "id": 1570, - "nodeType": "ExpressionStatement", - "src": "4723:56:9" - }, - { - "expression": { - "arguments": [ - { - "id": 1574, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "nodeType": "UnaryOperation", - "operator": "!", - "prefix": true, - "src": "4797:17:9", - "subExpression": { - "expression": { - "id": 1572, - "name": "schedule", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 1558, - "src": "4798:8:9", - "typeDescriptions": { - "typeIdentifier": "t_struct$_VestingSchedule_$1184_storage_ptr", - "typeString": "struct TokenVesting.VestingSchedule storage pointer" - } - }, - "id": 1573, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": false, - "memberLocation": "4807:7:9", - "memberName": "revoked", - "nodeType": "MemberAccess", - "referencedDeclaration": 1183, - "src": "4798:16:9", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - }, - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - }, - { - "hexValue": "416c7265616479207265766f6b6564", - "id": 1575, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "string", - "lValueRequested": false, - "nodeType": "Literal", - "src": "4816:17:9", - "typeDescriptions": { - "typeIdentifier": "t_stringliteral_ff30964d1d2e395450954287443a47ce4b7aeb0e55cf0d440f942617fe7e784c", - "typeString": "literal_string \"Already revoked\"" - }, - "value": "Already revoked" - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_bool", - "typeString": "bool" - }, - { - "typeIdentifier": "t_stringliteral_ff30964d1d2e395450954287443a47ce4b7aeb0e55cf0d440f942617fe7e784c", - "typeString": "literal_string \"Already revoked\"" - } - ], - "id": 1571, - "name": "require", - "nodeType": "Identifier", - "overloadedDeclarations": [ - -18, - -18 - ], - "referencedDeclaration": -18, - "src": "4789:7:9", - "typeDescriptions": { - "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", - "typeString": "function (bool,string memory) pure" - } - }, - "id": 1576, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "nameLocations": [], - "names": [], - "nodeType": "FunctionCall", - "src": "4789:45:9", - "tryCall": false, - "typeDescriptions": { - "typeIdentifier": "t_tuple$__$", - "typeString": "tuple()" - } - }, - "id": 1577, - "nodeType": "ExpressionStatement", - "src": "4789:45:9" + "src": "9059:12:8" }, { "assignments": [ - 1579 + 1377 ], "declarations": [ { "constant": false, - "id": 1579, + "id": 1377, "mutability": "mutable", - "name": "vestedAmount", - "nameLocation": "4853:12:9", + "name": "returnSize", + "nameLocation": "9089:10:8", "nodeType": "VariableDeclaration", - "scope": 1616, - "src": "4845:20:9", + "scope": 1402, + "src": "9081:18:8", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -19176,10 +17178,10 @@ "typeString": "uint256" }, "typeName": { - "id": 1578, + "id": 1376, "name": "uint256", "nodeType": "ElementaryTypeName", - "src": "4845:7:9", + "src": "9081:7:8", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -19188,73 +17190,24 @@ "visibility": "internal" } ], - "id": 1583, - "initialValue": { - "arguments": [ - { - "id": 1581, - "name": "beneficiary", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 1551, - "src": "4890:11:9", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_address", - "typeString": "address" - } - ], - "id": 1580, - "name": "calculateVestedAmount", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 1475, - "src": "4868:21:9", - "typeDescriptions": { - "typeIdentifier": "t_function_internal_view$_t_address_$returns$_t_uint256_$", - "typeString": "function (address) view returns (uint256)" - } - }, - "id": 1582, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "nameLocations": [], - "names": [], - "nodeType": "FunctionCall", - "src": "4868:34:9", - "tryCall": false, - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, + "id": 1378, "nodeType": "VariableDeclarationStatement", - "src": "4845:57:9" + "src": "9081:18:8" }, { "assignments": [ - 1585 + 1380 ], "declarations": [ { "constant": false, - "id": 1585, + "id": 1380, "mutability": "mutable", - "name": "unvestedAmount", - "nameLocation": "4920:14:9", + "name": "returnValue", + "nameLocation": "9117:11:8", "nodeType": "VariableDeclaration", - "scope": 1616, - "src": "4912:22:9", + "scope": 1402, + "src": "9109:19:8", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -19262,10 +17215,10 @@ "typeString": "uint256" }, "typeName": { - "id": 1584, + "id": 1379, "name": "uint256", "nodeType": "ElementaryTypeName", - "src": "4912:7:9", + "src": "9109:7:8", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -19274,9152 +17227,15357 @@ "visibility": "internal" } ], - "id": 1590, - "initialValue": { - "commonType": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "id": 1589, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftExpression": { - "expression": { - "id": 1586, - "name": "schedule", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 1558, - "src": "4937:8:9", - "typeDescriptions": { - "typeIdentifier": "t_struct$_VestingSchedule_$1184_storage_ptr", - "typeString": "struct TokenVesting.VestingSchedule storage pointer" - } - }, - "id": 1587, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": false, - "memberLocation": "4946:11:9", - "memberName": "totalAmount", - "nodeType": "MemberAccess", - "referencedDeclaration": 1173, - "src": "4937:20:9", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "nodeType": "BinaryOperation", - "operator": "-", - "rightExpression": { - "id": 1588, - "name": "vestedAmount", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 1579, - "src": "4960:12:9", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "src": "4937:35:9", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, + "id": 1381, "nodeType": "VariableDeclarationStatement", - "src": "4912:60:9" + "src": "9109:19:8" }, { - "expression": { - "id": 1595, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftHandSide": { - "expression": { - "id": 1591, - "name": "schedule", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 1558, - "src": "4983:8:9", - "typeDescriptions": { - "typeIdentifier": "t_struct$_VestingSchedule_$1184_storage_ptr", - "typeString": "struct TokenVesting.VestingSchedule storage pointer" - } + "AST": { + "nodeType": "YulBlock", + "src": "9163:174:8", + "statements": [ + { + "nodeType": "YulAssignment", + "src": "9177:71:8", + "value": { + "arguments": [ + { + "arguments": [], + "functionName": { + "name": "gas", + "nodeType": "YulIdentifier", + "src": "9193:3:8" + }, + "nodeType": "YulFunctionCall", + "src": "9193:5:8" + }, + { + "name": "token", + "nodeType": "YulIdentifier", + "src": "9200:5:8" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "9207:1:8", + "type": "", + "value": "0" + }, + { + "arguments": [ + { + "name": "data", + "nodeType": "YulIdentifier", + "src": "9214:4:8" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "9220:4:8", + "type": "", + "value": "0x20" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "9210:3:8" + }, + "nodeType": "YulFunctionCall", + "src": "9210:15:8" + }, + { + "arguments": [ + { + "name": "data", + "nodeType": "YulIdentifier", + "src": "9233:4:8" + } + ], + "functionName": { + "name": "mload", + "nodeType": "YulIdentifier", + "src": "9227:5:8" + }, + "nodeType": "YulFunctionCall", + "src": "9227:11:8" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "9240:1:8", + "type": "", + "value": "0" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "9243:4:8", + "type": "", + "value": "0x20" + } + ], + "functionName": { + "name": "call", + "nodeType": "YulIdentifier", + "src": "9188:4:8" + }, + "nodeType": "YulFunctionCall", + "src": "9188:60:8" + }, + "variableNames": [ + { + "name": "success", + "nodeType": "YulIdentifier", + "src": "9177:7:8" + } + ] }, - "id": 1593, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": true, - "memberLocation": "4992:7:9", - "memberName": "revoked", - "nodeType": "MemberAccess", - "referencedDeclaration": 1183, - "src": "4983:16:9", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" + { + "nodeType": "YulAssignment", + "src": "9261:30:8", + "value": { + "arguments": [], + "functionName": { + "name": "returndatasize", + "nodeType": "YulIdentifier", + "src": "9275:14:8" + }, + "nodeType": "YulFunctionCall", + "src": "9275:16:8" + }, + "variableNames": [ + { + "name": "returnSize", + "nodeType": "YulIdentifier", + "src": "9261:10:8" + } + ] + }, + { + "nodeType": "YulAssignment", + "src": "9304:23:8", + "value": { + "arguments": [ + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "9325:1:8", + "type": "", + "value": "0" + } + ], + "functionName": { + "name": "mload", + "nodeType": "YulIdentifier", + "src": "9319:5:8" + }, + "nodeType": "YulFunctionCall", + "src": "9319:8:8" + }, + "variableNames": [ + { + "name": "returnValue", + "nodeType": "YulIdentifier", + "src": "9304:11:8" + } + ] } + ] + }, + "evmVersion": "london", + "externalReferences": [ + { + "declaration": 1368, + "isOffset": false, + "isSlot": false, + "src": "9214:4:8", + "valueSize": 1 }, - "nodeType": "Assignment", - "operator": "=", - "rightHandSide": { - "hexValue": "74727565", - "id": 1594, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "bool", - "lValueRequested": false, - "nodeType": "Literal", - "src": "5002:4:9", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - }, - "value": "true" + { + "declaration": 1368, + "isOffset": false, + "isSlot": false, + "src": "9233:4:8", + "valueSize": 1 }, - "src": "4983:23:9", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" + { + "declaration": 1377, + "isOffset": false, + "isSlot": false, + "src": "9261:10:8", + "valueSize": 1 + }, + { + "declaration": 1380, + "isOffset": false, + "isSlot": false, + "src": "9304:11:8", + "valueSize": 1 + }, + { + "declaration": 1374, + "isOffset": false, + "isSlot": false, + "src": "9177:7:8", + "valueSize": 1 + }, + { + "declaration": 1366, + "isOffset": false, + "isSlot": false, + "src": "9200:5:8", + "valueSize": 1 } - }, - "id": 1596, - "nodeType": "ExpressionStatement", - "src": "4983:23:9" + ], + "flags": [ + "memory-safe" + ], + "id": 1382, + "nodeType": "InlineAssembly", + "src": "9138:199:8" }, { - "condition": { + "expression": { "commonType": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" + "typeIdentifier": "t_bool", + "typeString": "bool" }, - "id": 1599, + "id": 1400, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": { - "id": 1597, - "name": "unvestedAmount", + "id": 1383, + "name": "success", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1585, - "src": "5021:14:9", + "referencedDeclaration": 1374, + "src": "9353:7:8", "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" + "typeIdentifier": "t_bool", + "typeString": "bool" } }, "nodeType": "BinaryOperation", - "operator": ">", + "operator": "&&", "rightExpression": { - "hexValue": "30", - "id": 1598, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "number", - "lValueRequested": false, - "nodeType": "Literal", - "src": "5038:1:9", - "typeDescriptions": { - "typeIdentifier": "t_rational_0_by_1", - "typeString": "int_const 0" - }, - "value": "0" - }, - "src": "5021:18:9", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - }, - "id": 1611, - "nodeType": "IfStatement", - "src": "5017:116:9", - "trueBody": { - "id": 1610, - "nodeType": "Block", - "src": "5041:92:9", - "statements": [ - { - "expression": { - "arguments": [ - { - "arguments": [ - { - "arguments": [], - "expression": { - "argumentTypes": [], - "id": 1603, - "name": "owner", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 67, - "src": "5078:5:9", - "typeDescriptions": { - "typeIdentifier": "t_function_internal_view$__$returns$_t_address_$", - "typeString": "function () view returns (address)" - } - }, - "id": 1604, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "nameLocations": [], - "names": [], - "nodeType": "FunctionCall", - "src": "5078:7:9", - "tryCall": false, - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - { - "id": 1605, - "name": "unvestedAmount", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 1585, - "src": "5087:14:9", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - } - ], + "components": [ + { + "condition": { + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 1386, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "id": 1384, + "name": "returnSize", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1377, + "src": "9365:10:8", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "==", + "rightExpression": { + "hexValue": "30", + "id": 1385, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "9379:1:8", + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + }, + "src": "9365:15:8", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "falseExpression": { + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 1397, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "id": 1395, + "name": "returnValue", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1380, + "src": "9416:11:8", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "==", + "rightExpression": { + "hexValue": "31", + "id": 1396, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "9431:1:8", + "typeDescriptions": { + "typeIdentifier": "t_rational_1_by_1", + "typeString": "int_const 1" + }, + "value": "1" + }, + "src": "9416:16:8", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "id": 1398, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "nodeType": "Conditional", + "src": "9365:67:8", + "trueExpression": { + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 1394, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_address", - "typeString": "address" - }, - { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - ], "expression": { - "id": 1601, - "name": "token", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 1187, - "src": "5063:5:9", + "arguments": [ + { + "id": 1389, + "name": "token", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1366, + "src": "9391:5:8", + "typeDescriptions": { + "typeIdentifier": "t_contract$_IERC20_$967", + "typeString": "contract IERC20" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_contract$_IERC20_$967", + "typeString": "contract IERC20" + } + ], + "id": 1388, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "9383:7:8", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_address_$", + "typeString": "type(address)" + }, + "typeName": { + "id": 1387, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "9383:7:8", + "typeDescriptions": {} + } + }, + "id": 1390, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "typeConversion", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "9383:14:8", + "tryCall": false, "typeDescriptions": { - "typeIdentifier": "t_contract$_IERC20_$877", - "typeString": "contract IERC20" + "typeIdentifier": "t_address", + "typeString": "address" } }, - "id": 1602, + "id": 1391, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, - "memberLocation": "5069:8:9", - "memberName": "transfer", + "memberLocation": "9398:4:8", + "memberName": "code", "nodeType": "MemberAccess", - "referencedDeclaration": 844, - "src": "5063:14:9", + "src": "9383:19:8", "typeDescriptions": { - "typeIdentifier": "t_function_external_nonpayable$_t_address_$_t_uint256_$returns$_t_bool_$", - "typeString": "function (address,uint256) external returns (bool)" + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" } }, - "id": 1606, + "id": 1392, "isConstant": false, "isLValue": false, "isPure": false, - "kind": "functionCall", "lValueRequested": false, - "nameLocations": [], - "names": [], - "nodeType": "FunctionCall", - "src": "5063:39:9", - "tryCall": false, + "memberLocation": "9403:6:8", + "memberName": "length", + "nodeType": "MemberAccess", + "src": "9383:26:8", "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" + "typeIdentifier": "t_uint256", + "typeString": "uint256" } }, - { - "hexValue": "5472616e73666572206661696c6564", - "id": 1607, + "nodeType": "BinaryOperation", + "operator": ">", + "rightExpression": { + "hexValue": "30", + "id": 1393, "isConstant": false, "isLValue": false, "isPure": true, - "kind": "string", + "kind": "number", "lValueRequested": false, "nodeType": "Literal", - "src": "5104:17:9", + "src": "9412:1:8", "typeDescriptions": { - "typeIdentifier": "t_stringliteral_25adaa6d082ce15f901e0d8a3d393e7462ef9edf2e6bc8321fa14d1615b6fc51", - "typeString": "literal_string \"Transfer failed\"" - }, - "value": "Transfer failed" - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_bool", - "typeString": "bool" + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" }, - { - "typeIdentifier": "t_stringliteral_25adaa6d082ce15f901e0d8a3d393e7462ef9edf2e6bc8321fa14d1615b6fc51", - "typeString": "literal_string \"Transfer failed\"" - } - ], - "id": 1600, - "name": "require", - "nodeType": "Identifier", - "overloadedDeclarations": [ - -18, - -18 - ], - "referencedDeclaration": -18, - "src": "5055:7:9", + "value": "0" + }, + "src": "9383:30:8", "typeDescriptions": { - "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", - "typeString": "function (bool,string memory) pure" + "typeIdentifier": "t_bool", + "typeString": "bool" } }, - "id": 1608, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "nameLocations": [], - "names": [], - "nodeType": "FunctionCall", - "src": "5055:67:9", - "tryCall": false, "typeDescriptions": { - "typeIdentifier": "t_tuple$__$", - "typeString": "tuple()" + "typeIdentifier": "t_bool", + "typeString": "bool" } - }, - "id": 1609, - "nodeType": "ExpressionStatement", - "src": "5055:67:9" - } - ] - } - }, - { - "eventCall": { - "arguments": [ - { - "id": 1613, - "name": "beneficiary", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 1551, - "src": "5163:11:9", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_address", - "typeString": "address" } ], - "id": 1612, - "name": "VestingRevoked", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 1212, - "src": "5148:14:9", + "id": 1399, + "isConstant": false, + "isInlineArray": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "nodeType": "TupleExpression", + "src": "9364:69:8", "typeDescriptions": { - "typeIdentifier": "t_function_event_nonpayable$_t_address_$returns$__$", - "typeString": "function (address)" + "typeIdentifier": "t_bool", + "typeString": "bool" } }, - "id": 1614, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "nameLocations": [], - "names": [], - "nodeType": "FunctionCall", - "src": "5148:27:9", - "tryCall": false, + "src": "9353:80:8", "typeDescriptions": { - "typeIdentifier": "t_tuple$__$", - "typeString": "tuple()" + "typeIdentifier": "t_bool", + "typeString": "bool" } }, - "id": 1615, - "nodeType": "EmitStatement", - "src": "5143:32:9" + "functionReturnParameters": 1372, + "id": 1401, + "nodeType": "Return", + "src": "9346:87:8" } ] }, - "functionSelector": "3b0da260", - "id": 1617, + "documentation": { + "id": 1363, + "nodeType": "StructuredDocumentation", + "src": "8464:491:8", + "text": " @dev Imitates a Solidity high-level call (i.e. a regular function call to a contract), relaxing the requirement\n on the return value: the return value is optional (but if data is returned, it must not be false).\n @param token The token targeted by the call.\n @param data The call data (encoded using abi.encode or one of its variants).\n This is a variant of {_callOptionalReturn} that silently catches all reverts and returns a bool instead." + }, + "id": 1403, "implemented": true, "kind": "function", - "modifiers": [ - { - "id": 1554, - "kind": "modifierInvocation", - "modifierName": { - "id": 1553, - "name": "onlyOwner", - "nameLocations": [ - "4629:9:9" - ], - "nodeType": "IdentifierPath", - "referencedDeclaration": 58, - "src": "4629:9:9" - }, - "nodeType": "ModifierInvocation", - "src": "4629:9:9" - } - ], - "name": "revokeVesting", - "nameLocation": "4585:13:9", + "modifiers": [], + "name": "_callOptionalReturnBool", + "nameLocation": "8969:23:8", "nodeType": "FunctionDefinition", "parameters": { - "id": 1552, + "id": 1369, "nodeType": "ParameterList", "parameters": [ { "constant": false, - "id": 1551, + "id": 1366, "mutability": "mutable", - "name": "beneficiary", - "nameLocation": "4607:11:9", + "name": "token", + "nameLocation": "9000:5:8", "nodeType": "VariableDeclaration", - "scope": 1617, - "src": "4599:19:9", + "scope": 1403, + "src": "8993:12:8", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" + "typeIdentifier": "t_contract$_IERC20_$967", + "typeString": "contract IERC20" }, "typeName": { - "id": 1550, - "name": "address", + "id": 1365, + "nodeType": "UserDefinedTypeName", + "pathNode": { + "id": 1364, + "name": "IERC20", + "nameLocations": [ + "8993:6:8" + ], + "nodeType": "IdentifierPath", + "referencedDeclaration": 967, + "src": "8993:6:8" + }, + "referencedDeclaration": 967, + "src": "8993:6:8", + "typeDescriptions": { + "typeIdentifier": "t_contract$_IERC20_$967", + "typeString": "contract IERC20" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 1368, + "mutability": "mutable", + "name": "data", + "nameLocation": "9020:4:8", + "nodeType": "VariableDeclaration", + "scope": 1403, + "src": "9007:17:8", + "stateVariable": false, + "storageLocation": "memory", + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes" + }, + "typeName": { + "id": 1367, + "name": "bytes", "nodeType": "ElementaryTypeName", - "src": "4599:7:9", - "stateMutability": "nonpayable", + "src": "9007:5:8", "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" + "typeIdentifier": "t_bytes_storage_ptr", + "typeString": "bytes" } }, "visibility": "internal" } ], - "src": "4598:21:9" + "src": "8992:33:8" }, "returnParameters": { - "id": 1555, + "id": 1372, "nodeType": "ParameterList", - "parameters": [], - "src": "4639:0:9" - }, - "scope": 1636, - "src": "4576:606:9", - "stateMutability": "nonpayable", - "virtual": false, - "visibility": "external" - }, - { - "body": { - "id": 1625, - "nodeType": "Block", - "src": "5224:25:9", - "statements": [ + "parameters": [ { - "expression": { - "arguments": [], - "expression": { - "argumentTypes": [], - "id": 1622, - "name": "_pause", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 1033, - "src": "5234:6:9", - "typeDescriptions": { - "typeIdentifier": "t_function_internal_nonpayable$__$returns$__$", - "typeString": "function ()" - } - }, - "id": 1623, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "nameLocations": [], - "names": [], - "nodeType": "FunctionCall", - "src": "5234:8:9", - "tryCall": false, - "typeDescriptions": { - "typeIdentifier": "t_tuple$__$", - "typeString": "tuple()" - } + "constant": false, + "id": 1371, + "mutability": "mutable", + "name": "", + "nameLocation": "-1:-1:-1", + "nodeType": "VariableDeclaration", + "scope": 1403, + "src": "9043:4:8", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" }, - "id": 1624, - "nodeType": "ExpressionStatement", - "src": "5234:8:9" - } - ] - }, - "functionSelector": "8456cb59", - "id": 1626, - "implemented": true, - "kind": "function", - "modifiers": [ - { - "id": 1620, - "kind": "modifierInvocation", - "modifierName": { - "id": 1619, - "name": "onlyOwner", - "nameLocations": [ - "5214:9:9" - ], - "nodeType": "IdentifierPath", - "referencedDeclaration": 58, - "src": "5214:9:9" - }, - "nodeType": "ModifierInvocation", - "src": "5214:9:9" - } - ], - "name": "pause", - "nameLocation": "5197:5:9", - "nodeType": "FunctionDefinition", - "parameters": { - "id": 1618, - "nodeType": "ParameterList", - "parameters": [], - "src": "5202:2:9" - }, - "returnParameters": { - "id": 1621, - "nodeType": "ParameterList", - "parameters": [], - "src": "5224:0:9" - }, - "scope": 1636, - "src": "5188:61:9", - "stateMutability": "nonpayable", - "virtual": false, - "visibility": "external" - }, - { - "body": { - "id": 1634, - "nodeType": "Block", - "src": "5293:27:9", - "statements": [ - { - "expression": { - "arguments": [], - "expression": { - "argumentTypes": [], - "id": 1631, - "name": "_unpause", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 1049, - "src": "5303:8:9", - "typeDescriptions": { - "typeIdentifier": "t_function_internal_nonpayable$__$returns$__$", - "typeString": "function ()" - } - }, - "id": 1632, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "nameLocations": [], - "names": [], - "nodeType": "FunctionCall", - "src": "5303:10:9", - "tryCall": false, + "typeName": { + "id": 1370, + "name": "bool", + "nodeType": "ElementaryTypeName", + "src": "9043:4:8", "typeDescriptions": { - "typeIdentifier": "t_tuple$__$", - "typeString": "tuple()" + "typeIdentifier": "t_bool", + "typeString": "bool" } }, - "id": 1633, - "nodeType": "ExpressionStatement", - "src": "5303:10:9" + "visibility": "internal" } - ] - }, - "functionSelector": "3f4ba83a", - "id": 1635, - "implemented": true, - "kind": "function", - "modifiers": [ - { - "id": 1629, - "kind": "modifierInvocation", - "modifierName": { - "id": 1628, - "name": "onlyOwner", - "nameLocations": [ - "5283:9:9" - ], - "nodeType": "IdentifierPath", - "referencedDeclaration": 58, - "src": "5283:9:9" - }, - "nodeType": "ModifierInvocation", - "src": "5283:9:9" - } - ], - "name": "unpause", - "nameLocation": "5264:7:9", - "nodeType": "FunctionDefinition", - "parameters": { - "id": 1627, - "nodeType": "ParameterList", - "parameters": [], - "src": "5271:2:9" - }, - "returnParameters": { - "id": 1630, - "nodeType": "ParameterList", - "parameters": [], - "src": "5293:0:9" + ], + "src": "9042:6:8" }, - "scope": 1636, - "src": "5255:65:9", + "scope": 1404, + "src": "8960:480:8", "stateMutability": "nonpayable", "virtual": false, - "visibility": "external" + "visibility": "private" } ], - "scope": 1637, - "src": "281:5041:9", + "scope": 1405, + "src": "750:8692:8", "usedErrors": [ - 13, - 18, - 955, - 958, - 1064 + 1007, + 1016 ], - "usedEvents": [ - 24, - 947, - 952, - 1202, - 1208, - 1212, - 1216, - 1220 - ] + "usedEvents": [] } ], - "src": "32:5291:9" + "src": "115:9328:8" }, - "id": 9 - } - }, - "contracts": { - "@openzeppelin/contracts/access/Ownable.sol": { - "Ownable": { - "abi": [ + "id": 8 + }, + "@openzeppelin/contracts/utils/Address.sol": { + "ast": { + "absolutePath": "@openzeppelin/contracts/utils/Address.sol", + "exportedSymbols": { + "Address": [ + 1663 + ], + "Errors": [ + 1715 + ] + }, + "id": 1664, + "license": "MIT", + "nodeType": "SourceUnit", + "nodes": [ { - "inputs": [ - { - "internalType": "address", - "name": "owner", - "type": "address" - } + "id": 1406, + "literals": [ + "solidity", + "^", + "0.8", + ".20" ], - "name": "OwnableInvalidOwner", - "type": "error" + "nodeType": "PragmaDirective", + "src": "101:24:9" }, { - "inputs": [ + "absolutePath": "@openzeppelin/contracts/utils/Errors.sol", + "file": "./Errors.sol", + "id": 1408, + "nameLocation": "-1:-1:-1", + "nodeType": "ImportDirective", + "scope": 1664, + "sourceUnit": 1716, + "src": "127:36:9", + "symbolAliases": [ { - "internalType": "address", - "name": "account", - "type": "address" + "foreign": { + "id": 1407, + "name": "Errors", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1715, + "src": "135:6:9", + "typeDescriptions": {} + }, + "nameLocation": "-1:-1:-1" } ], - "name": "OwnableUnauthorizedAccount", - "type": "error" + "unitAlias": "" }, { - "anonymous": false, - "inputs": [ + "abstract": false, + "baseContracts": [], + "canonicalName": "Address", + "contractDependencies": [], + "contractKind": "library", + "documentation": { + "id": 1409, + "nodeType": "StructuredDocumentation", + "src": "165:67:9", + "text": " @dev Collection of functions related to the address type" + }, + "fullyImplemented": true, + "id": 1663, + "linearizedBaseContracts": [ + 1663 + ], + "name": "Address", + "nameLocation": "241:7:9", + "nodeType": "ContractDefinition", + "nodes": [ { - "indexed": true, - "internalType": "address", - "name": "previousOwner", - "type": "address" + "documentation": { + "id": 1410, + "nodeType": "StructuredDocumentation", + "src": "255:75:9", + "text": " @dev There's no code at `target` (it is not a contract)." + }, + "errorSelector": "9996b315", + "id": 1414, + "name": "AddressEmptyCode", + "nameLocation": "341:16:9", + "nodeType": "ErrorDefinition", + "parameters": { + "id": 1413, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 1412, + "mutability": "mutable", + "name": "target", + "nameLocation": "366:6:9", + "nodeType": "VariableDeclaration", + "scope": 1414, + "src": "358:14:9", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 1411, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "358:7:9", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + } + ], + "src": "357:16:9" + }, + "src": "335:39:9" }, { - "indexed": true, - "internalType": "address", - "name": "newOwner", - "type": "address" - } - ], - "name": "OwnershipTransferred", - "type": "event" - }, - { - "inputs": [], - "name": "owner", - "outputs": [ - { - "internalType": "address", - "name": "", - "type": "address" - } - ], - "stateMutability": "view", - "type": "function" - }, - { - "inputs": [], - "name": "renounceOwnership", - "outputs": [], - "stateMutability": "nonpayable", - "type": "function" - }, - { - "inputs": [ - { - "internalType": "address", - "name": "newOwner", - "type": "address" - } - ], - "name": "transferOwnership", - "outputs": [], - "stateMutability": "nonpayable", - "type": "function" - } - ], - "evm": { - "bytecode": { - "functionDebugData": {}, - "generatedSources": [], - "linkReferences": {}, - "object": "", - "opcodes": "", - "sourceMap": "" - }, - "deployedBytecode": { - "functionDebugData": {}, - "generatedSources": [], - "immutableReferences": {}, - "linkReferences": {}, - "object": "", - "opcodes": "", - "sourceMap": "" - }, - "methodIdentifiers": { - "owner()": "8da5cb5b", - "renounceOwnership()": "715018a6", - "transferOwnership(address)": "f2fde38b" - } - }, - "metadata": "{\"compiler\":{\"version\":\"0.8.20+commit.a1b79de6\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"}],\"name\":\"OwnableInvalidOwner\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"OwnableUnauthorizedAccount\",\"type\":\"error\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"previousOwner\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"newOwner\",\"type\":\"address\"}],\"name\":\"OwnershipTransferred\",\"type\":\"event\"},{\"inputs\":[],\"name\":\"owner\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"renounceOwnership\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"newOwner\",\"type\":\"address\"}],\"name\":\"transferOwnership\",\"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. The initial owner is set to the address provided by the deployer. This can later be changed with {transferOwnership}. 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.\",\"errors\":{\"OwnableInvalidOwner(address)\":[{\"details\":\"The owner is not a valid owner account. (eg. `address(0)`)\"}],\"OwnableUnauthorizedAccount(address)\":[{\"details\":\"The caller account is not authorized to perform an operation.\"}]},\"kind\":\"dev\",\"methods\":{\"constructor\":{\"details\":\"Initializes the contract setting the address provided by the deployer as the initial owner.\"},\"owner()\":{\"details\":\"Returns the address of the current owner.\"},\"renounceOwnership()\":{\"details\":\"Leaves the contract without owner. It will not be possible to call `onlyOwner` functions. Can only be called by the current owner. NOTE: Renouncing ownership will leave the contract without an owner, thereby disabling any functionality that is only available to the owner.\"},\"transferOwnership(address)\":{\"details\":\"Transfers ownership of the contract to a new account (`newOwner`). Can only be called by the current owner.\"}},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"@openzeppelin/contracts/access/Ownable.sol\":\"Ownable\"},\"evmVersion\":\"paris\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":200},\"remappings\":[]},\"sources\":{\"@openzeppelin/contracts/access/Ownable.sol\":{\"keccak256\":\"0xff6d0bb2e285473e5311d9d3caacb525ae3538a80758c10649a4d61029b017bb\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://8ed324d3920bb545059d66ab97d43e43ee85fd3bd52e03e401f020afb0b120f6\",\"dweb:/ipfs/QmfEckWLmZkDDcoWrkEvMWhms66xwTLff9DDhegYpvHo1a\"]},\"@openzeppelin/contracts/utils/Context.sol\":{\"keccak256\":\"0x493033a8d1b176a037b2cc6a04dad01a5c157722049bbecf632ca876224dd4b2\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://6a708e8a5bdb1011c2c381c9a5cfd8a9a956d7d0a9dc1bd8bcdaf52f76ef2f12\",\"dweb:/ipfs/Qmax9WHBnVsZP46ZxEMNRQpLQnrdE4dK8LehML1Py8FowF\"]}},\"version\":1}" - } - }, - "@openzeppelin/contracts/interfaces/draft-IERC6093.sol": { - "IERC1155Errors": { - "abi": [ - { - "inputs": [ - { - "internalType": "address", - "name": "sender", - "type": "address" - }, - { - "internalType": "uint256", - "name": "balance", - "type": "uint256" - }, - { - "internalType": "uint256", - "name": "needed", - "type": "uint256" - }, - { - "internalType": "uint256", - "name": "tokenId", - "type": "uint256" - } - ], - "name": "ERC1155InsufficientBalance", - "type": "error" - }, - { - "inputs": [ - { - "internalType": "address", - "name": "approver", - "type": "address" - } - ], - "name": "ERC1155InvalidApprover", - "type": "error" - }, - { - "inputs": [ - { - "internalType": "uint256", - "name": "idsLength", - "type": "uint256" - }, - { - "internalType": "uint256", - "name": "valuesLength", - "type": "uint256" - } - ], - "name": "ERC1155InvalidArrayLength", - "type": "error" - }, - { - "inputs": [ - { - "internalType": "address", - "name": "operator", - "type": "address" - } - ], - "name": "ERC1155InvalidOperator", - "type": "error" - }, - { - "inputs": [ - { - "internalType": "address", - "name": "receiver", - "type": "address" - } - ], - "name": "ERC1155InvalidReceiver", - "type": "error" - }, - { - "inputs": [ - { - "internalType": "address", - "name": "sender", - "type": "address" - } - ], - "name": "ERC1155InvalidSender", - "type": "error" - }, - { - "inputs": [ - { - "internalType": "address", - "name": "operator", - "type": "address" - }, - { - "internalType": "address", - "name": "owner", - "type": "address" - } - ], - "name": "ERC1155MissingApprovalForAll", - "type": "error" - } - ], - "evm": { - "bytecode": { - "functionDebugData": {}, - "generatedSources": [], - "linkReferences": {}, - "object": "", - "opcodes": "", - "sourceMap": "" - }, - "deployedBytecode": { - "functionDebugData": {}, - "generatedSources": [], - "immutableReferences": {}, - "linkReferences": {}, - "object": "", - "opcodes": "", - "sourceMap": "" - }, - "methodIdentifiers": {} - }, - "metadata": "{\"compiler\":{\"version\":\"0.8.20+commit.a1b79de6\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"balance\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"needed\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"}],\"name\":\"ERC1155InsufficientBalance\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"approver\",\"type\":\"address\"}],\"name\":\"ERC1155InvalidApprover\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"idsLength\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"valuesLength\",\"type\":\"uint256\"}],\"name\":\"ERC1155InvalidArrayLength\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"}],\"name\":\"ERC1155InvalidOperator\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"receiver\",\"type\":\"address\"}],\"name\":\"ERC1155InvalidReceiver\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"}],\"name\":\"ERC1155InvalidSender\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"}],\"name\":\"ERC1155MissingApprovalForAll\",\"type\":\"error\"}],\"devdoc\":{\"details\":\"Standard ERC-1155 Errors Interface of the https://eips.ethereum.org/EIPS/eip-6093[ERC-6093] custom errors for ERC-1155 tokens.\",\"errors\":{\"ERC1155InsufficientBalance(address,uint256,uint256,uint256)\":[{\"details\":\"Indicates an error related to the current `balance` of a `sender`. Used in transfers.\",\"params\":{\"balance\":\"Current balance for the interacting account.\",\"needed\":\"Minimum amount required to perform a transfer.\",\"sender\":\"Address whose tokens are being transferred.\",\"tokenId\":\"Identifier number of a token.\"}}],\"ERC1155InvalidApprover(address)\":[{\"details\":\"Indicates a failure with the `approver` of a token to be approved. Used in approvals.\",\"params\":{\"approver\":\"Address initiating an approval operation.\"}}],\"ERC1155InvalidArrayLength(uint256,uint256)\":[{\"details\":\"Indicates an array length mismatch between ids and values in a safeBatchTransferFrom operation. Used in batch transfers.\",\"params\":{\"idsLength\":\"Length of the array of token identifiers\",\"valuesLength\":\"Length of the array of token amounts\"}}],\"ERC1155InvalidOperator(address)\":[{\"details\":\"Indicates a failure with the `operator` to be approved. Used in approvals.\",\"params\":{\"operator\":\"Address that may be allowed to operate on tokens without being their owner.\"}}],\"ERC1155InvalidReceiver(address)\":[{\"details\":\"Indicates a failure with the token `receiver`. Used in transfers.\",\"params\":{\"receiver\":\"Address to which tokens are being transferred.\"}}],\"ERC1155InvalidSender(address)\":[{\"details\":\"Indicates a failure with the token `sender`. Used in transfers.\",\"params\":{\"sender\":\"Address whose tokens are being transferred.\"}}],\"ERC1155MissingApprovalForAll(address,address)\":[{\"details\":\"Indicates a failure with the `operator`\\u2019s approval. Used in transfers.\",\"params\":{\"operator\":\"Address that may be allowed to operate on tokens without being their owner.\",\"owner\":\"Address of the current owner of a token.\"}}]},\"kind\":\"dev\",\"methods\":{},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"@openzeppelin/contracts/interfaces/draft-IERC6093.sol\":\"IERC1155Errors\"},\"evmVersion\":\"paris\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":200},\"remappings\":[]},\"sources\":{\"@openzeppelin/contracts/interfaces/draft-IERC6093.sol\":{\"keccak256\":\"0x880da465c203cec76b10d72dbd87c80f387df4102274f23eea1f9c9b0918792b\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://399594cd8bb0143bc9e55e0f1d071d0d8c850a394fb7a319d50edd55d9ed822b\",\"dweb:/ipfs/QmbPZzgtT6LEm9CMqWfagQFwETbV1ztpECBB1DtQHrKiRz\"]}},\"version\":1}" - }, - "IERC20Errors": { - "abi": [ - { - "inputs": [ - { - "internalType": "address", - "name": "spender", - "type": "address" - }, - { - "internalType": "uint256", - "name": "allowance", - "type": "uint256" - }, - { - "internalType": "uint256", - "name": "needed", - "type": "uint256" - } - ], - "name": "ERC20InsufficientAllowance", - "type": "error" - }, - { - "inputs": [ - { - "internalType": "address", - "name": "sender", - "type": "address" - }, - { - "internalType": "uint256", - "name": "balance", - "type": "uint256" - }, - { - "internalType": "uint256", - "name": "needed", - "type": "uint256" - } - ], - "name": "ERC20InsufficientBalance", - "type": "error" - }, - { - "inputs": [ - { - "internalType": "address", - "name": "approver", - "type": "address" - } - ], - "name": "ERC20InvalidApprover", - "type": "error" - }, - { - "inputs": [ - { - "internalType": "address", - "name": "receiver", - "type": "address" - } - ], - "name": "ERC20InvalidReceiver", - "type": "error" - }, - { - "inputs": [ - { - "internalType": "address", - "name": "sender", - "type": "address" - } - ], - "name": "ERC20InvalidSender", - "type": "error" - }, - { - "inputs": [ - { - "internalType": "address", - "name": "spender", - "type": "address" - } - ], - "name": "ERC20InvalidSpender", - "type": "error" - } - ], - "evm": { - "bytecode": { - "functionDebugData": {}, - "generatedSources": [], - "linkReferences": {}, - "object": "", - "opcodes": "", - "sourceMap": "" - }, - "deployedBytecode": { - "functionDebugData": {}, - "generatedSources": [], - "immutableReferences": {}, - "linkReferences": {}, - "object": "", - "opcodes": "", - "sourceMap": "" - }, - "methodIdentifiers": {} - }, - "metadata": "{\"compiler\":{\"version\":\"0.8.20+commit.a1b79de6\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"allowance\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"needed\",\"type\":\"uint256\"}],\"name\":\"ERC20InsufficientAllowance\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"balance\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"needed\",\"type\":\"uint256\"}],\"name\":\"ERC20InsufficientBalance\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"approver\",\"type\":\"address\"}],\"name\":\"ERC20InvalidApprover\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"receiver\",\"type\":\"address\"}],\"name\":\"ERC20InvalidReceiver\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"}],\"name\":\"ERC20InvalidSender\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"}],\"name\":\"ERC20InvalidSpender\",\"type\":\"error\"}],\"devdoc\":{\"details\":\"Standard ERC-20 Errors Interface of the https://eips.ethereum.org/EIPS/eip-6093[ERC-6093] custom errors for ERC-20 tokens.\",\"errors\":{\"ERC20InsufficientAllowance(address,uint256,uint256)\":[{\"details\":\"Indicates a failure with the `spender`\\u2019s `allowance`. Used in transfers.\",\"params\":{\"allowance\":\"Amount of tokens a `spender` is allowed to operate with.\",\"needed\":\"Minimum amount required to perform a transfer.\",\"spender\":\"Address that may be allowed to operate on tokens without being their owner.\"}}],\"ERC20InsufficientBalance(address,uint256,uint256)\":[{\"details\":\"Indicates an error related to the current `balance` of a `sender`. Used in transfers.\",\"params\":{\"balance\":\"Current balance for the interacting account.\",\"needed\":\"Minimum amount required to perform a transfer.\",\"sender\":\"Address whose tokens are being transferred.\"}}],\"ERC20InvalidApprover(address)\":[{\"details\":\"Indicates a failure with the `approver` of a token to be approved. Used in approvals.\",\"params\":{\"approver\":\"Address initiating an approval operation.\"}}],\"ERC20InvalidReceiver(address)\":[{\"details\":\"Indicates a failure with the token `receiver`. Used in transfers.\",\"params\":{\"receiver\":\"Address to which tokens are being transferred.\"}}],\"ERC20InvalidSender(address)\":[{\"details\":\"Indicates a failure with the token `sender`. Used in transfers.\",\"params\":{\"sender\":\"Address whose tokens are being transferred.\"}}],\"ERC20InvalidSpender(address)\":[{\"details\":\"Indicates a failure with the `spender` to be approved. Used in approvals.\",\"params\":{\"spender\":\"Address that may be allowed to operate on tokens without being their owner.\"}}]},\"kind\":\"dev\",\"methods\":{},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"@openzeppelin/contracts/interfaces/draft-IERC6093.sol\":\"IERC20Errors\"},\"evmVersion\":\"paris\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":200},\"remappings\":[]},\"sources\":{\"@openzeppelin/contracts/interfaces/draft-IERC6093.sol\":{\"keccak256\":\"0x880da465c203cec76b10d72dbd87c80f387df4102274f23eea1f9c9b0918792b\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://399594cd8bb0143bc9e55e0f1d071d0d8c850a394fb7a319d50edd55d9ed822b\",\"dweb:/ipfs/QmbPZzgtT6LEm9CMqWfagQFwETbV1ztpECBB1DtQHrKiRz\"]}},\"version\":1}" - }, - "IERC721Errors": { - "abi": [ - { - "inputs": [ - { - "internalType": "address", - "name": "sender", - "type": "address" - }, - { - "internalType": "uint256", - "name": "tokenId", - "type": "uint256" - }, - { - "internalType": "address", - "name": "owner", - "type": "address" - } - ], - "name": "ERC721IncorrectOwner", - "type": "error" - }, - { - "inputs": [ - { - "internalType": "address", - "name": "operator", - "type": "address" - }, - { - "internalType": "uint256", - "name": "tokenId", - "type": "uint256" - } - ], - "name": "ERC721InsufficientApproval", - "type": "error" - }, - { - "inputs": [ - { - "internalType": "address", - "name": "approver", - "type": "address" - } - ], - "name": "ERC721InvalidApprover", - "type": "error" - }, - { - "inputs": [ - { - "internalType": "address", - "name": "operator", - "type": "address" - } - ], - "name": "ERC721InvalidOperator", - "type": "error" - }, - { - "inputs": [ - { - "internalType": "address", - "name": "owner", - "type": "address" - } - ], - "name": "ERC721InvalidOwner", - "type": "error" - }, - { - "inputs": [ - { - "internalType": "address", - "name": "receiver", - "type": "address" - } - ], - "name": "ERC721InvalidReceiver", - "type": "error" - }, - { - "inputs": [ - { - "internalType": "address", - "name": "sender", - "type": "address" - } - ], - "name": "ERC721InvalidSender", - "type": "error" - }, - { - "inputs": [ - { - "internalType": "uint256", - "name": "tokenId", - "type": "uint256" - } - ], - "name": "ERC721NonexistentToken", - "type": "error" - } - ], - "evm": { - "bytecode": { - "functionDebugData": {}, - "generatedSources": [], - "linkReferences": {}, - "object": "", - "opcodes": "", - "sourceMap": "" - }, - "deployedBytecode": { - "functionDebugData": {}, - "generatedSources": [], - "immutableReferences": {}, - "linkReferences": {}, - "object": "", - "opcodes": "", - "sourceMap": "" - }, - "methodIdentifiers": {} - }, - "metadata": "{\"compiler\":{\"version\":\"0.8.20+commit.a1b79de6\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"}],\"name\":\"ERC721IncorrectOwner\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"}],\"name\":\"ERC721InsufficientApproval\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"approver\",\"type\":\"address\"}],\"name\":\"ERC721InvalidApprover\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"}],\"name\":\"ERC721InvalidOperator\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"}],\"name\":\"ERC721InvalidOwner\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"receiver\",\"type\":\"address\"}],\"name\":\"ERC721InvalidReceiver\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"}],\"name\":\"ERC721InvalidSender\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"}],\"name\":\"ERC721NonexistentToken\",\"type\":\"error\"}],\"devdoc\":{\"details\":\"Standard ERC-721 Errors Interface of the https://eips.ethereum.org/EIPS/eip-6093[ERC-6093] custom errors for ERC-721 tokens.\",\"errors\":{\"ERC721IncorrectOwner(address,uint256,address)\":[{\"details\":\"Indicates an error related to the ownership over a particular token. Used in transfers.\",\"params\":{\"owner\":\"Address of the current owner of a token.\",\"sender\":\"Address whose tokens are being transferred.\",\"tokenId\":\"Identifier number of a token.\"}}],\"ERC721InsufficientApproval(address,uint256)\":[{\"details\":\"Indicates a failure with the `operator`\\u2019s approval. Used in transfers.\",\"params\":{\"operator\":\"Address that may be allowed to operate on tokens without being their owner.\",\"tokenId\":\"Identifier number of a token.\"}}],\"ERC721InvalidApprover(address)\":[{\"details\":\"Indicates a failure with the `approver` of a token to be approved. Used in approvals.\",\"params\":{\"approver\":\"Address initiating an approval operation.\"}}],\"ERC721InvalidOperator(address)\":[{\"details\":\"Indicates a failure with the `operator` to be approved. Used in approvals.\",\"params\":{\"operator\":\"Address that may be allowed to operate on tokens without being their owner.\"}}],\"ERC721InvalidOwner(address)\":[{\"details\":\"Indicates that an address can't be an owner. For example, `address(0)` is a forbidden owner in ERC-20. Used in balance queries.\",\"params\":{\"owner\":\"Address of the current owner of a token.\"}}],\"ERC721InvalidReceiver(address)\":[{\"details\":\"Indicates a failure with the token `receiver`. Used in transfers.\",\"params\":{\"receiver\":\"Address to which tokens are being transferred.\"}}],\"ERC721InvalidSender(address)\":[{\"details\":\"Indicates a failure with the token `sender`. Used in transfers.\",\"params\":{\"sender\":\"Address whose tokens are being transferred.\"}}],\"ERC721NonexistentToken(uint256)\":[{\"details\":\"Indicates a `tokenId` whose `owner` is the zero address.\",\"params\":{\"tokenId\":\"Identifier number of a token.\"}}]},\"kind\":\"dev\",\"methods\":{},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"@openzeppelin/contracts/interfaces/draft-IERC6093.sol\":\"IERC721Errors\"},\"evmVersion\":\"paris\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":200},\"remappings\":[]},\"sources\":{\"@openzeppelin/contracts/interfaces/draft-IERC6093.sol\":{\"keccak256\":\"0x880da465c203cec76b10d72dbd87c80f387df4102274f23eea1f9c9b0918792b\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://399594cd8bb0143bc9e55e0f1d071d0d8c850a394fb7a319d50edd55d9ed822b\",\"dweb:/ipfs/QmbPZzgtT6LEm9CMqWfagQFwETbV1ztpECBB1DtQHrKiRz\"]}},\"version\":1}" - } - }, - "@openzeppelin/contracts/token/ERC20/ERC20.sol": { - "ERC20": { - "abi": [ - { - "inputs": [ - { - "internalType": "address", - "name": "spender", - "type": "address" - }, - { - "internalType": "uint256", - "name": "allowance", - "type": "uint256" - }, - { - "internalType": "uint256", - "name": "needed", - "type": "uint256" - } - ], - "name": "ERC20InsufficientAllowance", - "type": "error" - }, - { - "inputs": [ - { - "internalType": "address", - "name": "sender", - "type": "address" - }, - { - "internalType": "uint256", - "name": "balance", - "type": "uint256" - }, - { - "internalType": "uint256", - "name": "needed", - "type": "uint256" - } - ], - "name": "ERC20InsufficientBalance", - "type": "error" - }, - { - "inputs": [ - { - "internalType": "address", - "name": "approver", - "type": "address" - } - ], - "name": "ERC20InvalidApprover", - "type": "error" - }, - { - "inputs": [ - { - "internalType": "address", - "name": "receiver", - "type": "address" - } - ], - "name": "ERC20InvalidReceiver", - "type": "error" - }, - { - "inputs": [ - { - "internalType": "address", - "name": "sender", - "type": "address" - } - ], - "name": "ERC20InvalidSender", - "type": "error" - }, - { - "inputs": [ - { - "internalType": "address", - "name": "spender", - "type": "address" - } - ], - "name": "ERC20InvalidSpender", - "type": "error" - }, - { - "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": "value", - "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": "decimals", - "outputs": [ - { - "internalType": "uint8", - "name": "", - "type": "uint8" - } - ], - "stateMutability": "view", - "type": "function" - }, - { - "inputs": [], - "name": "name", - "outputs": [ - { - "internalType": "string", - "name": "", - "type": "string" - } - ], - "stateMutability": "view", - "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": [ - { - "internalType": "address", - "name": "to", - "type": "address" - }, - { - "internalType": "uint256", - "name": "value", - "type": "uint256" - } - ], - "name": "transfer", - "outputs": [ - { - "internalType": "bool", - "name": "", - "type": "bool" - } - ], - "stateMutability": "nonpayable", - "type": "function" - }, - { - "inputs": [ - { - "internalType": "address", - "name": "from", - "type": "address" - }, - { - "internalType": "address", - "name": "to", - "type": "address" - }, - { - "internalType": "uint256", - "name": "value", - "type": "uint256" - } - ], - "name": "transferFrom", - "outputs": [ - { - "internalType": "bool", - "name": "", - "type": "bool" - } - ], - "stateMutability": "nonpayable", - "type": "function" - } - ], - "evm": { - "bytecode": { - "functionDebugData": {}, - "generatedSources": [], - "linkReferences": {}, - "object": "", - "opcodes": "", - "sourceMap": "" - }, - "deployedBytecode": { - "functionDebugData": {}, - "generatedSources": [], - "immutableReferences": {}, - "linkReferences": {}, - "object": "", - "opcodes": "", - "sourceMap": "" - }, - "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" - } - }, - "metadata": "{\"compiler\":{\"version\":\"0.8.20+commit.a1b79de6\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"allowance\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"needed\",\"type\":\"uint256\"}],\"name\":\"ERC20InsufficientAllowance\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"balance\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"needed\",\"type\":\"uint256\"}],\"name\":\"ERC20InsufficientBalance\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"approver\",\"type\":\"address\"}],\"name\":\"ERC20InvalidApprover\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"receiver\",\"type\":\"address\"}],\"name\":\"ERC20InvalidReceiver\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"}],\"name\":\"ERC20InvalidSender\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"}],\"name\":\"ERC20InvalidSpender\",\"type\":\"error\"},{\"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\":\"value\",\"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\":\"decimals\",\"outputs\":[{\"internalType\":\"uint8\",\"name\":\"\",\"type\":\"uint8\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"name\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"stateMutability\":\"view\",\"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\":[{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"name\":\"transfer\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"name\":\"transferFrom\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"}],\"devdoc\":{\"details\":\"Implementation of the {IERC20} interface. This implementation is agnostic to the way tokens are created. This means that a supply mechanism has to be added in a derived contract using {_mint}. TIP: For a detailed writeup see our guide https://forum.openzeppelin.com/t/how-to-implement-erc20-supply-mechanisms/226[How to implement supply mechanisms]. The default value of {decimals} is 18. To change this, you should override this function so it returns a different value. We have followed general OpenZeppelin Contracts guidelines: functions revert instead returning `false` on failure. This behavior is nonetheless conventional and does not conflict with the expectations of ERC-20 applications.\",\"errors\":{\"ERC20InsufficientAllowance(address,uint256,uint256)\":[{\"details\":\"Indicates a failure with the `spender`\\u2019s `allowance`. Used in transfers.\",\"params\":{\"allowance\":\"Amount of tokens a `spender` is allowed to operate with.\",\"needed\":\"Minimum amount required to perform a transfer.\",\"spender\":\"Address that may be allowed to operate on tokens without being their owner.\"}}],\"ERC20InsufficientBalance(address,uint256,uint256)\":[{\"details\":\"Indicates an error related to the current `balance` of a `sender`. Used in transfers.\",\"params\":{\"balance\":\"Current balance for the interacting account.\",\"needed\":\"Minimum amount required to perform a transfer.\",\"sender\":\"Address whose tokens are being transferred.\"}}],\"ERC20InvalidApprover(address)\":[{\"details\":\"Indicates a failure with the `approver` of a token to be approved. Used in approvals.\",\"params\":{\"approver\":\"Address initiating an approval operation.\"}}],\"ERC20InvalidReceiver(address)\":[{\"details\":\"Indicates a failure with the token `receiver`. Used in transfers.\",\"params\":{\"receiver\":\"Address to which tokens are being transferred.\"}}],\"ERC20InvalidSender(address)\":[{\"details\":\"Indicates a failure with the token `sender`. Used in transfers.\",\"params\":{\"sender\":\"Address whose tokens are being transferred.\"}}],\"ERC20InvalidSpender(address)\":[{\"details\":\"Indicates a failure with the `spender` to be approved. Used in approvals.\",\"params\":{\"spender\":\"Address that may be allowed to operate on tokens without being their owner.\"}}]},\"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\":\"See {IERC20-allowance}.\"},\"approve(address,uint256)\":{\"details\":\"See {IERC20-approve}. NOTE: If `value` is the maximum `uint256`, the allowance is not updated on `transferFrom`. This is semantically equivalent to an infinite approval. Requirements: - `spender` cannot be the zero address.\"},\"balanceOf(address)\":{\"details\":\"See {IERC20-balanceOf}.\"},\"constructor\":{\"details\":\"Sets the values for {name} and {symbol}. All two of these values are immutable: they can only be set once during construction.\"},\"decimals()\":{\"details\":\"Returns the number of decimals used to get its user representation. For example, if `decimals` equals `2`, a balance of `505` tokens should be displayed to a user as `5.05` (`505 / 10 ** 2`). Tokens usually opt for a value of 18, imitating the relationship between Ether and Wei. This is the default value returned by this function, unless it's overridden. NOTE: This information is only used for _display_ purposes: it in no way affects any of the arithmetic of the contract, including {IERC20-balanceOf} and {IERC20-transfer}.\"},\"name()\":{\"details\":\"Returns the name of the token.\"},\"symbol()\":{\"details\":\"Returns the symbol of the token, usually a shorter version of the name.\"},\"totalSupply()\":{\"details\":\"See {IERC20-totalSupply}.\"},\"transfer(address,uint256)\":{\"details\":\"See {IERC20-transfer}. Requirements: - `to` cannot be the zero address. - the caller must have a balance of at least `value`.\"},\"transferFrom(address,address,uint256)\":{\"details\":\"See {IERC20-transferFrom}. Skips emitting an {Approval} event indicating an allowance update. This is not required by the ERC. See {xref-ERC20-_approve-address-address-uint256-bool-}[_approve]. NOTE: Does not update the allowance if the current allowance is the maximum `uint256`. Requirements: - `from` and `to` cannot be the zero address. - `from` must have a balance of at least `value`. - the caller must have allowance for ``from``'s tokens of at least `value`.\"}},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"@openzeppelin/contracts/token/ERC20/ERC20.sol\":\"ERC20\"},\"evmVersion\":\"paris\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":200},\"remappings\":[]},\"sources\":{\"@openzeppelin/contracts/interfaces/draft-IERC6093.sol\":{\"keccak256\":\"0x880da465c203cec76b10d72dbd87c80f387df4102274f23eea1f9c9b0918792b\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://399594cd8bb0143bc9e55e0f1d071d0d8c850a394fb7a319d50edd55d9ed822b\",\"dweb:/ipfs/QmbPZzgtT6LEm9CMqWfagQFwETbV1ztpECBB1DtQHrKiRz\"]},\"@openzeppelin/contracts/token/ERC20/ERC20.sol\":{\"keccak256\":\"0xbf61ab2ae1d575a17ea58fbb99ca232baddcc4e0eeea180e84cbc74b0c348b31\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://4e0968705bad99747a8e5288aa008678c2be2f471f919dce3925a3cc4f1dee09\",\"dweb:/ipfs/QmbAFnCQfo4tw6ssfQSjhA5LzwHWNNryXN8bX7ty8jiqqn\"]},\"@openzeppelin/contracts/token/ERC20/IERC20.sol\":{\"keccak256\":\"0xe06a3f08a987af6ad2e1c1e774405d4fe08f1694b67517438b467cecf0da0ef7\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://df6f0c459663c9858b6cba2cda1d14a7d05a985bed6d2de72bd8e78c25ee79db\",\"dweb:/ipfs/QmeTTxZ7qVk9rjEv2R4CpCwdf8UMCcRqDNMvzNxHc3Fnn9\"]},\"@openzeppelin/contracts/token/ERC20/extensions/IERC20Metadata.sol\":{\"keccak256\":\"0x70f2f713b13b7ce4610bcd0ac9fec0f3cc43693b043abcb8dc40a42a726eb330\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://c13d13304ac79a83ab1c30168967d19e2203342ebbd6a9bbce4db7550522dcbf\",\"dweb:/ipfs/QmeN5jKMN2vw5bhacr6tkg78afbTTZUeaacNHqjWt4Ew1r\"]},\"@openzeppelin/contracts/utils/Context.sol\":{\"keccak256\":\"0x493033a8d1b176a037b2cc6a04dad01a5c157722049bbecf632ca876224dd4b2\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://6a708e8a5bdb1011c2c381c9a5cfd8a9a956d7d0a9dc1bd8bcdaf52f76ef2f12\",\"dweb:/ipfs/Qmax9WHBnVsZP46ZxEMNRQpLQnrdE4dK8LehML1Py8FowF\"]}},\"version\":1}" - } - }, - "@openzeppelin/contracts/token/ERC20/IERC20.sol": { - "IERC20": { - "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": "value", - "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": "to", - "type": "address" - }, - { - "internalType": "uint256", - "name": "value", - "type": "uint256" - } - ], - "name": "transfer", - "outputs": [ - { - "internalType": "bool", - "name": "", - "type": "bool" - } - ], - "stateMutability": "nonpayable", - "type": "function" - }, - { - "inputs": [ - { - "internalType": "address", - "name": "from", - "type": "address" - }, - { - "internalType": "address", - "name": "to", - "type": "address" - }, - { - "internalType": "uint256", - "name": "value", - "type": "uint256" - } - ], - "name": "transferFrom", - "outputs": [ - { - "internalType": "bool", - "name": "", - "type": "bool" - } - ], - "stateMutability": "nonpayable", - "type": "function" - } - ], - "evm": { - "bytecode": { - "functionDebugData": {}, - "generatedSources": [], - "linkReferences": {}, - "object": "", - "opcodes": "", - "sourceMap": "" - }, - "deployedBytecode": { - "functionDebugData": {}, - "generatedSources": [], - "immutableReferences": {}, - "linkReferences": {}, - "object": "", - "opcodes": "", - "sourceMap": "" - }, - "methodIdentifiers": { - "allowance(address,address)": "dd62ed3e", - "approve(address,uint256)": "095ea7b3", - "balanceOf(address)": "70a08231", - "totalSupply()": "18160ddd", - "transfer(address,uint256)": "a9059cbb", - "transferFrom(address,address,uint256)": "23b872dd" - } - }, - "metadata": "{\"compiler\":{\"version\":\"0.8.20+commit.a1b79de6\"},\"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\":\"value\",\"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\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"name\":\"transfer\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"name\":\"transferFrom\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"}],\"devdoc\":{\"details\":\"Interface of the ERC-20 standard as defined in the ERC.\",\"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 a `value` amount of tokens 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 value of tokens owned by `account`.\"},\"totalSupply()\":{\"details\":\"Returns the value of tokens in existence.\"},\"transfer(address,uint256)\":{\"details\":\"Moves a `value` amount of tokens from the caller's account to `to`. Returns a boolean value indicating whether the operation succeeded. Emits a {Transfer} event.\"},\"transferFrom(address,address,uint256)\":{\"details\":\"Moves a `value` amount of tokens from `from` to `to` using the allowance mechanism. `value` 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\":{\"@openzeppelin/contracts/token/ERC20/IERC20.sol\":\"IERC20\"},\"evmVersion\":\"paris\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":200},\"remappings\":[]},\"sources\":{\"@openzeppelin/contracts/token/ERC20/IERC20.sol\":{\"keccak256\":\"0xe06a3f08a987af6ad2e1c1e774405d4fe08f1694b67517438b467cecf0da0ef7\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://df6f0c459663c9858b6cba2cda1d14a7d05a985bed6d2de72bd8e78c25ee79db\",\"dweb:/ipfs/QmeTTxZ7qVk9rjEv2R4CpCwdf8UMCcRqDNMvzNxHc3Fnn9\"]}},\"version\":1}" - } - }, - "@openzeppelin/contracts/token/ERC20/extensions/IERC20Metadata.sol": { - "IERC20Metadata": { - "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": "value", - "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": "decimals", - "outputs": [ - { - "internalType": "uint8", - "name": "", - "type": "uint8" - } - ], - "stateMutability": "view", - "type": "function" - }, - { - "inputs": [], - "name": "name", - "outputs": [ - { - "internalType": "string", - "name": "", - "type": "string" - } - ], - "stateMutability": "view", - "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": [ - { - "internalType": "address", - "name": "to", - "type": "address" - }, - { - "internalType": "uint256", - "name": "value", - "type": "uint256" - } - ], - "name": "transfer", - "outputs": [ - { - "internalType": "bool", - "name": "", - "type": "bool" - } - ], - "stateMutability": "nonpayable", - "type": "function" - }, - { - "inputs": [ - { - "internalType": "address", - "name": "from", - "type": "address" - }, - { - "internalType": "address", - "name": "to", - "type": "address" - }, - { - "internalType": "uint256", - "name": "value", - "type": "uint256" - } - ], - "name": "transferFrom", - "outputs": [ - { - "internalType": "bool", - "name": "", - "type": "bool" - } - ], - "stateMutability": "nonpayable", - "type": "function" - } - ], - "evm": { - "bytecode": { - "functionDebugData": {}, - "generatedSources": [], - "linkReferences": {}, - "object": "", - "opcodes": "", - "sourceMap": "" - }, - "deployedBytecode": { - "functionDebugData": {}, - "generatedSources": [], - "immutableReferences": {}, - "linkReferences": {}, - "object": "", - "opcodes": "", - "sourceMap": "" - }, - "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" - } - }, - "metadata": "{\"compiler\":{\"version\":\"0.8.20+commit.a1b79de6\"},\"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\":\"value\",\"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\":\"decimals\",\"outputs\":[{\"internalType\":\"uint8\",\"name\":\"\",\"type\":\"uint8\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"name\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"stateMutability\":\"view\",\"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\":[{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"name\":\"transfer\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"name\":\"transferFrom\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"}],\"devdoc\":{\"details\":\"Interface for the optional metadata functions from the ERC-20 standard.\",\"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 a `value` amount of tokens 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 value of tokens owned by `account`.\"},\"decimals()\":{\"details\":\"Returns the decimals places of the token.\"},\"name()\":{\"details\":\"Returns the name of the token.\"},\"symbol()\":{\"details\":\"Returns the symbol of the token.\"},\"totalSupply()\":{\"details\":\"Returns the value of tokens in existence.\"},\"transfer(address,uint256)\":{\"details\":\"Moves a `value` amount of tokens from the caller's account to `to`. Returns a boolean value indicating whether the operation succeeded. Emits a {Transfer} event.\"},\"transferFrom(address,address,uint256)\":{\"details\":\"Moves a `value` amount of tokens from `from` to `to` using the allowance mechanism. `value` 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\":{\"@openzeppelin/contracts/token/ERC20/extensions/IERC20Metadata.sol\":\"IERC20Metadata\"},\"evmVersion\":\"paris\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":200},\"remappings\":[]},\"sources\":{\"@openzeppelin/contracts/token/ERC20/IERC20.sol\":{\"keccak256\":\"0xe06a3f08a987af6ad2e1c1e774405d4fe08f1694b67517438b467cecf0da0ef7\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://df6f0c459663c9858b6cba2cda1d14a7d05a985bed6d2de72bd8e78c25ee79db\",\"dweb:/ipfs/QmeTTxZ7qVk9rjEv2R4CpCwdf8UMCcRqDNMvzNxHc3Fnn9\"]},\"@openzeppelin/contracts/token/ERC20/extensions/IERC20Metadata.sol\":{\"keccak256\":\"0x70f2f713b13b7ce4610bcd0ac9fec0f3cc43693b043abcb8dc40a42a726eb330\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://c13d13304ac79a83ab1c30168967d19e2203342ebbd6a9bbce4db7550522dcbf\",\"dweb:/ipfs/QmeN5jKMN2vw5bhacr6tkg78afbTTZUeaacNHqjWt4Ew1r\"]}},\"version\":1}" - } - }, - "@openzeppelin/contracts/utils/Context.sol": { - "Context": { - "abi": [], - "evm": { - "bytecode": { - "functionDebugData": {}, - "generatedSources": [], - "linkReferences": {}, - "object": "", - "opcodes": "", - "sourceMap": "" - }, - "deployedBytecode": { - "functionDebugData": {}, - "generatedSources": [], - "immutableReferences": {}, - "linkReferences": {}, - "object": "", - "opcodes": "", - "sourceMap": "" - }, - "methodIdentifiers": {} - }, - "metadata": "{\"compiler\":{\"version\":\"0.8.20+commit.a1b79de6\"},\"language\":\"Solidity\",\"output\":{\"abi\":[],\"devdoc\":{\"details\":\"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 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.\",\"kind\":\"dev\",\"methods\":{},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"@openzeppelin/contracts/utils/Context.sol\":\"Context\"},\"evmVersion\":\"paris\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":200},\"remappings\":[]},\"sources\":{\"@openzeppelin/contracts/utils/Context.sol\":{\"keccak256\":\"0x493033a8d1b176a037b2cc6a04dad01a5c157722049bbecf632ca876224dd4b2\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://6a708e8a5bdb1011c2c381c9a5cfd8a9a956d7d0a9dc1bd8bcdaf52f76ef2f12\",\"dweb:/ipfs/Qmax9WHBnVsZP46ZxEMNRQpLQnrdE4dK8LehML1Py8FowF\"]}},\"version\":1}" - } - }, - "@openzeppelin/contracts/utils/Pausable.sol": { - "Pausable": { - "abi": [ - { - "inputs": [], - "name": "EnforcedPause", - "type": "error" - }, - { - "inputs": [], - "name": "ExpectedPause", - "type": "error" - }, - { - "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": "paused", - "outputs": [ - { - "internalType": "bool", - "name": "", - "type": "bool" - } - ], - "stateMutability": "view", - "type": "function" - } - ], - "evm": { - "bytecode": { - "functionDebugData": {}, - "generatedSources": [], - "linkReferences": {}, - "object": "", - "opcodes": "", - "sourceMap": "" - }, - "deployedBytecode": { - "functionDebugData": {}, - "generatedSources": [], - "immutableReferences": {}, - "linkReferences": {}, - "object": "", - "opcodes": "", - "sourceMap": "" - }, - "methodIdentifiers": { - "paused()": "5c975abb" - } - }, - "metadata": "{\"compiler\":{\"version\":\"0.8.20+commit.a1b79de6\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[],\"name\":\"EnforcedPause\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"ExpectedPause\",\"type\":\"error\"},{\"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\":\"paused\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"}],\"devdoc\":{\"details\":\"Contract module which allows children to implement an emergency stop mechanism that can be triggered by an authorized account. This module is used through inheritance. It will make available the modifiers `whenNotPaused` and `whenPaused`, which can be applied to the functions of your contract. Note that they will not be pausable by simply including this module, only once the modifiers are put in place.\",\"errors\":{\"EnforcedPause()\":[{\"details\":\"The operation failed because the contract is paused.\"}],\"ExpectedPause()\":[{\"details\":\"The operation failed because the contract is not paused.\"}]},\"events\":{\"Paused(address)\":{\"details\":\"Emitted when the pause is triggered by `account`.\"},\"Unpaused(address)\":{\"details\":\"Emitted when the pause is lifted by `account`.\"}},\"kind\":\"dev\",\"methods\":{\"constructor\":{\"details\":\"Initializes the contract in unpaused state.\"},\"paused()\":{\"details\":\"Returns true if the contract is paused, and false otherwise.\"}},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"@openzeppelin/contracts/utils/Pausable.sol\":\"Pausable\"},\"evmVersion\":\"paris\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":200},\"remappings\":[]},\"sources\":{\"@openzeppelin/contracts/utils/Context.sol\":{\"keccak256\":\"0x493033a8d1b176a037b2cc6a04dad01a5c157722049bbecf632ca876224dd4b2\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://6a708e8a5bdb1011c2c381c9a5cfd8a9a956d7d0a9dc1bd8bcdaf52f76ef2f12\",\"dweb:/ipfs/Qmax9WHBnVsZP46ZxEMNRQpLQnrdE4dK8LehML1Py8FowF\"]},\"@openzeppelin/contracts/utils/Pausable.sol\":{\"keccak256\":\"0xb2e5f50762c27fb4b123e3619c3c02bdcba5e515309382e5bfb6f7d6486510bd\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://1a4b83328c98d518a2699c2cbe9e9b055e78aa57fa8639f1b88deb8b3750b5dc\",\"dweb:/ipfs/QmXdcYj5v7zQxXFPULShHkR5p4Wa2zYuupbHnFdV3cHYtc\"]}},\"version\":1}" - } - }, - "@openzeppelin/contracts/utils/ReentrancyGuard.sol": { - "ReentrancyGuard": { - "abi": [ - { - "inputs": [], - "name": "ReentrancyGuardReentrantCall", - "type": "error" - } - ], - "evm": { - "bytecode": { - "functionDebugData": {}, - "generatedSources": [], - "linkReferences": {}, - "object": "", - "opcodes": "", - "sourceMap": "" - }, - "deployedBytecode": { - "functionDebugData": {}, - "generatedSources": [], - "immutableReferences": {}, - "linkReferences": {}, - "object": "", - "opcodes": "", - "sourceMap": "" - }, - "methodIdentifiers": {} - }, - "metadata": "{\"compiler\":{\"version\":\"0.8.20+commit.a1b79de6\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[],\"name\":\"ReentrancyGuardReentrantCall\",\"type\":\"error\"}],\"devdoc\":{\"details\":\"Contract module that helps prevent reentrant calls to a function. Inheriting from `ReentrancyGuard` will make the {nonReentrant} modifier available, which can be applied to functions to make sure there are no nested (reentrant) calls to them. Note that because there is a single `nonReentrant` guard, functions marked as `nonReentrant` may not call one another. This can be worked around by making those functions `private`, and then adding `external` `nonReentrant` entry points to them. TIP: If EIP-1153 (transient storage) is available on the chain you're deploying at, consider using {ReentrancyGuardTransient} instead. TIP: If you would like to learn more about reentrancy and alternative ways to protect against it, check out our blog post https://blog.openzeppelin.com/reentrancy-after-istanbul/[Reentrancy After Istanbul].\",\"errors\":{\"ReentrancyGuardReentrantCall()\":[{\"details\":\"Unauthorized reentrant call.\"}]},\"kind\":\"dev\",\"methods\":{},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"@openzeppelin/contracts/utils/ReentrancyGuard.sol\":\"ReentrancyGuard\"},\"evmVersion\":\"paris\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":200},\"remappings\":[]},\"sources\":{\"@openzeppelin/contracts/utils/ReentrancyGuard.sol\":{\"keccak256\":\"0x11a5a79827df29e915a12740caf62fe21ebe27c08c9ae3e09abe9ee3ba3866d3\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://3cf0c69ab827e3251db9ee6a50647d62c90ba580a4d7bbff21f2bea39e7b2f4a\",\"dweb:/ipfs/QmZiKwtKU1SBX4RGfQtY7PZfiapbbu6SZ9vizGQD9UHjRA\"]}},\"version\":1}" - } - }, - "contracts/token.sol": { - "MockERC20": { - "abi": [ - { - "inputs": [ - { - "internalType": "string", - "name": "name", - "type": "string" - }, - { - "internalType": "string", - "name": "symbol", - "type": "string" - } - ], - "stateMutability": "nonpayable", - "type": "constructor" - }, - { - "inputs": [ - { - "internalType": "address", - "name": "spender", - "type": "address" - }, - { - "internalType": "uint256", - "name": "allowance", - "type": "uint256" - }, - { - "internalType": "uint256", - "name": "needed", - "type": "uint256" - } - ], - "name": "ERC20InsufficientAllowance", - "type": "error" - }, - { - "inputs": [ - { - "internalType": "address", - "name": "sender", - "type": "address" - }, - { - "internalType": "uint256", - "name": "balance", - "type": "uint256" - }, - { - "internalType": "uint256", - "name": "needed", - "type": "uint256" - } - ], - "name": "ERC20InsufficientBalance", - "type": "error" - }, - { - "inputs": [ - { - "internalType": "address", - "name": "approver", - "type": "address" - } - ], - "name": "ERC20InvalidApprover", - "type": "error" - }, - { - "inputs": [ - { - "internalType": "address", - "name": "receiver", - "type": "address" - } - ], - "name": "ERC20InvalidReceiver", - "type": "error" - }, - { - "inputs": [ - { - "internalType": "address", - "name": "sender", - "type": "address" - } - ], - "name": "ERC20InvalidSender", - "type": "error" - }, - { - "inputs": [ - { - "internalType": "address", - "name": "spender", - "type": "address" - } - ], - "name": "ERC20InvalidSpender", - "type": "error" - }, - { - "inputs": [ - { - "internalType": "address", - "name": "owner", - "type": "address" - } - ], - "name": "OwnableInvalidOwner", - "type": "error" - }, - { - "inputs": [ - { - "internalType": "address", - "name": "account", - "type": "address" - } - ], - "name": "OwnableUnauthorizedAccount", - "type": "error" - }, - { - "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": "previousOwner", - "type": "address" - }, - { - "indexed": true, - "internalType": "address", - "name": "newOwner", - "type": "address" - } - ], - "name": "OwnershipTransferred", - "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": "value", - "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": "decimals", - "outputs": [ - { - "internalType": "uint8", - "name": "", - "type": "uint8" - } - ], - "stateMutability": "view", - "type": "function" - }, - { - "inputs": [ - { - "internalType": "address", - "name": "to", - "type": "address" - }, - { - "internalType": "uint256", - "name": "amount", - "type": "uint256" - } - ], - "name": "mint", - "outputs": [], - "stateMutability": "nonpayable", - "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": "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": [ - { - "internalType": "address", - "name": "to", - "type": "address" - }, - { - "internalType": "uint256", - "name": "value", - "type": "uint256" - } - ], - "name": "transfer", - "outputs": [ - { - "internalType": "bool", - "name": "", - "type": "bool" - } - ], - "stateMutability": "nonpayable", - "type": "function" - }, - { - "inputs": [ - { - "internalType": "address", - "name": "from", - "type": "address" - }, - { - "internalType": "address", - "name": "to", - "type": "address" - }, - { - "internalType": "uint256", - "name": "value", - "type": "uint256" - } - ], - "name": "transferFrom", - "outputs": [ - { - "internalType": "bool", - "name": "", - "type": "bool" - } - ], - "stateMutability": "nonpayable", - "type": "function" - }, - { - "inputs": [ - { - "internalType": "address", - "name": "newOwner", - "type": "address" - } - ], - "name": "transferOwnership", - "outputs": [], - "stateMutability": "nonpayable", - "type": "function" - } - ], - "evm": { - "bytecode": { - "functionDebugData": { - "@_1141": { - "entryPoint": null, - "id": 1141, - "parameterSlots": 2, - "returnSlots": 0 - }, - "@_336": { - "entryPoint": null, - "id": 336, - "parameterSlots": 2, - "returnSlots": 0 - }, - "@_50": { - "entryPoint": null, - "id": 50, - "parameterSlots": 1, - "returnSlots": 0 - }, - "@_transferOwnership_146": { - "entryPoint": 154, - "id": 146, - "parameterSlots": 1, - "returnSlots": 0 - }, - "abi_decode_string_fromMemory": { - "entryPoint": 258, - "id": null, - "parameterSlots": 2, - "returnSlots": 1 - }, - "abi_decode_tuple_t_string_memory_ptrt_string_memory_ptr_fromMemory": { - "entryPoint": 433, - "id": null, - "parameterSlots": 2, - "returnSlots": 2 - }, - "abi_encode_tuple_t_address__to_t_address__fromStack_reversed": { - "entryPoint": null, - "id": null, - "parameterSlots": 2, - "returnSlots": 1 - }, - "array_dataslot_string_storage": { - "entryPoint": null, - "id": null, - "parameterSlots": 1, - "returnSlots": 1 - }, - "clean_up_bytearray_end_slots_string_storage": { - "entryPoint": 599, - "id": null, - "parameterSlots": 3, - "returnSlots": 0 - }, - "copy_byte_array_to_storage_from_t_string_memory_ptr_to_t_string_storage": { - "entryPoint": 682, - "id": null, - "parameterSlots": 2, - "returnSlots": 0 - }, - "extract_byte_array_length": { - "entryPoint": 539, - "id": null, - "parameterSlots": 1, - "returnSlots": 1 - }, - "extract_used_part_and_set_length_of_short_byte_array": { - "entryPoint": null, - "id": null, - "parameterSlots": 2, - "returnSlots": 1 - }, - "panic_error_0x41": { - "entryPoint": 236, - "id": null, - "parameterSlots": 0, - "returnSlots": 0 - } - }, - "generatedSources": [ - { - "ast": { - "nodeType": "YulBlock", - "src": "0:4352:10", - "statements": [ - { - "nodeType": "YulBlock", - "src": "6:3:10", - "statements": [] - }, - { - "body": { - "nodeType": "YulBlock", - "src": "46:95:10", - "statements": [ - { - "expression": { - "arguments": [ - { - "kind": "number", - "nodeType": "YulLiteral", - "src": "63:1:10", - "type": "", - "value": "0" - }, - { - "arguments": [ - { - "kind": "number", - "nodeType": "YulLiteral", - "src": "70:3:10", - "type": "", - "value": "224" - }, - { - "kind": "number", - "nodeType": "YulLiteral", - "src": "75:10:10", - "type": "", - "value": "0x4e487b71" - } - ], - "functionName": { - "name": "shl", - "nodeType": "YulIdentifier", - "src": "66:3:10" - }, - "nodeType": "YulFunctionCall", - "src": "66:20:10" - } - ], - "functionName": { - "name": "mstore", - "nodeType": "YulIdentifier", - "src": "56:6:10" - }, - "nodeType": "YulFunctionCall", - "src": "56:31:10" - }, - "nodeType": "YulExpressionStatement", - "src": "56:31:10" - }, - { - "expression": { - "arguments": [ - { - "kind": "number", - "nodeType": "YulLiteral", - "src": "103:1:10", - "type": "", - "value": "4" - }, - { - "kind": "number", - "nodeType": "YulLiteral", - "src": "106:4:10", - "type": "", - "value": "0x41" - } - ], - "functionName": { - "name": "mstore", - "nodeType": "YulIdentifier", - "src": "96:6:10" - }, - "nodeType": "YulFunctionCall", - "src": "96:15:10" - }, - "nodeType": "YulExpressionStatement", - "src": "96:15:10" - }, - { - "expression": { - "arguments": [ - { - "kind": "number", - "nodeType": "YulLiteral", - "src": "127:1:10", - "type": "", - "value": "0" - }, - { - "kind": "number", - "nodeType": "YulLiteral", - "src": "130:4:10", - "type": "", - "value": "0x24" - } - ], - "functionName": { - "name": "revert", - "nodeType": "YulIdentifier", - "src": "120:6:10" - }, - "nodeType": "YulFunctionCall", - "src": "120:15:10" - }, - "nodeType": "YulExpressionStatement", - "src": "120:15:10" - } - ] - }, - "name": "panic_error_0x41", - "nodeType": "YulFunctionDefinition", - "src": "14:127:10" - }, - { - "body": { - "nodeType": "YulBlock", - "src": "210:776:10", - "statements": [ - { - "body": { - "nodeType": "YulBlock", - "src": "259:16:10", - "statements": [ - { - "expression": { - "arguments": [ - { - "kind": "number", - "nodeType": "YulLiteral", - "src": "268:1:10", - "type": "", - "value": "0" - }, - { - "kind": "number", - "nodeType": "YulLiteral", - "src": "271:1:10", - "type": "", - "value": "0" - } - ], - "functionName": { - "name": "revert", - "nodeType": "YulIdentifier", - "src": "261:6:10" - }, - "nodeType": "YulFunctionCall", - "src": "261:12:10" - }, - "nodeType": "YulExpressionStatement", - "src": "261:12:10" - } - ] - }, - "condition": { - "arguments": [ - { - "arguments": [ - { - "arguments": [ - { - "name": "offset", - "nodeType": "YulIdentifier", - "src": "238:6:10" - }, - { - "kind": "number", - "nodeType": "YulLiteral", - "src": "246:4:10", - "type": "", - "value": "0x1f" - } - ], - "functionName": { - "name": "add", - "nodeType": "YulIdentifier", - "src": "234:3:10" - }, - "nodeType": "YulFunctionCall", - "src": "234:17:10" - }, - { - "name": "end", - "nodeType": "YulIdentifier", - "src": "253:3:10" - } - ], - "functionName": { - "name": "slt", - "nodeType": "YulIdentifier", - "src": "230:3:10" - }, - "nodeType": "YulFunctionCall", - "src": "230:27:10" - } - ], - "functionName": { - "name": "iszero", - "nodeType": "YulIdentifier", - "src": "223:6:10" - }, - "nodeType": "YulFunctionCall", - "src": "223:35:10" - }, - "nodeType": "YulIf", - "src": "220:55:10" - }, - { - "nodeType": "YulVariableDeclaration", - "src": "284:23:10", - "value": { - "arguments": [ - { - "name": "offset", - "nodeType": "YulIdentifier", - "src": "300:6:10" - } - ], - "functionName": { - "name": "mload", - "nodeType": "YulIdentifier", - "src": "294:5:10" - }, - "nodeType": "YulFunctionCall", - "src": "294:13:10" - }, - "variables": [ - { - "name": "_1", - "nodeType": "YulTypedName", - "src": "288:2:10", - "type": "" - } - ] - }, - { - "nodeType": "YulVariableDeclaration", - "src": "316:28:10", - "value": { - "arguments": [ - { - "arguments": [ - { - "kind": "number", - "nodeType": "YulLiteral", - "src": "334:2:10", - "type": "", - "value": "64" - }, - { - "kind": "number", - "nodeType": "YulLiteral", - "src": "338:1:10", - "type": "", - "value": "1" - } - ], - "functionName": { - "name": "shl", - "nodeType": "YulIdentifier", - "src": "330:3:10" - }, - "nodeType": "YulFunctionCall", - "src": "330:10:10" - }, - { - "kind": "number", - "nodeType": "YulLiteral", - "src": "342:1:10", - "type": "", - "value": "1" - } - ], - "functionName": { - "name": "sub", - "nodeType": "YulIdentifier", - "src": "326:3:10" - }, - "nodeType": "YulFunctionCall", - "src": "326:18:10" - }, - "variables": [ - { - "name": "_2", - "nodeType": "YulTypedName", - "src": "320:2:10", - "type": "" - } - ] - }, - { - "body": { - "nodeType": "YulBlock", - "src": "367:22:10", - "statements": [ - { - "expression": { - "arguments": [], - "functionName": { - "name": "panic_error_0x41", - "nodeType": "YulIdentifier", - "src": "369:16:10" - }, - "nodeType": "YulFunctionCall", - "src": "369:18:10" - }, - "nodeType": "YulExpressionStatement", - "src": "369:18:10" - } - ] - }, - "condition": { - "arguments": [ - { - "name": "_1", - "nodeType": "YulIdentifier", - "src": "359:2:10" - }, - { - "name": "_2", - "nodeType": "YulIdentifier", - "src": "363:2:10" - } - ], - "functionName": { - "name": "gt", - "nodeType": "YulIdentifier", - "src": "356:2:10" - }, - "nodeType": "YulFunctionCall", - "src": "356:10:10" - }, - "nodeType": "YulIf", - "src": "353:36:10" - }, - { - "nodeType": "YulVariableDeclaration", - "src": "398:17:10", - "value": { - "arguments": [ - { - "kind": "number", - "nodeType": "YulLiteral", - "src": "412:2:10", - "type": "", - "value": "31" - } - ], - "functionName": { - "name": "not", - "nodeType": "YulIdentifier", - "src": "408:3:10" - }, - "nodeType": "YulFunctionCall", - "src": "408:7:10" - }, - "variables": [ - { - "name": "_3", - "nodeType": "YulTypedName", - "src": "402:2:10", - "type": "" - } - ] - }, - { - "nodeType": "YulVariableDeclaration", - "src": "424:23:10", - "value": { - "arguments": [ - { - "kind": "number", - "nodeType": "YulLiteral", - "src": "444:2:10", - "type": "", - "value": "64" - } - ], - "functionName": { - "name": "mload", - "nodeType": "YulIdentifier", - "src": "438:5:10" - }, - "nodeType": "YulFunctionCall", - "src": "438:9:10" - }, - "variables": [ - { - "name": "memPtr", - "nodeType": "YulTypedName", - "src": "428:6:10", - "type": "" - } - ] - }, - { - "nodeType": "YulVariableDeclaration", - "src": "456:71:10", - "value": { - "arguments": [ - { - "name": "memPtr", - "nodeType": "YulIdentifier", - "src": "478:6:10" - }, - { - "arguments": [ - { - "arguments": [ - { - "arguments": [ - { - "arguments": [ - { - "name": "_1", - "nodeType": "YulIdentifier", - "src": "502:2:10" - }, - { - "kind": "number", - "nodeType": "YulLiteral", - "src": "506:4:10", - "type": "", - "value": "0x1f" - } - ], - "functionName": { - "name": "add", - "nodeType": "YulIdentifier", - "src": "498:3:10" - }, - "nodeType": "YulFunctionCall", - "src": "498:13:10" - }, - { - "name": "_3", - "nodeType": "YulIdentifier", - "src": "513:2:10" - } - ], - "functionName": { - "name": "and", - "nodeType": "YulIdentifier", - "src": "494:3:10" - }, - "nodeType": "YulFunctionCall", - "src": "494:22:10" - }, - { - "kind": "number", - "nodeType": "YulLiteral", - "src": "518:2:10", - "type": "", - "value": "63" - } - ], - "functionName": { - "name": "add", - "nodeType": "YulIdentifier", - "src": "490:3:10" - }, - "nodeType": "YulFunctionCall", - "src": "490:31:10" - }, - { - "name": "_3", - "nodeType": "YulIdentifier", - "src": "523:2:10" - } - ], - "functionName": { - "name": "and", - "nodeType": "YulIdentifier", - "src": "486:3:10" - }, - "nodeType": "YulFunctionCall", - "src": "486:40:10" - } - ], - "functionName": { - "name": "add", - "nodeType": "YulIdentifier", - "src": "474:3:10" - }, - "nodeType": "YulFunctionCall", - "src": "474:53:10" - }, - "variables": [ - { - "name": "newFreePtr", - "nodeType": "YulTypedName", - "src": "460:10:10", - "type": "" - } - ] - }, - { - "body": { - "nodeType": "YulBlock", - "src": "586:22:10", - "statements": [ - { - "expression": { - "arguments": [], - "functionName": { - "name": "panic_error_0x41", - "nodeType": "YulIdentifier", - "src": "588:16:10" - }, - "nodeType": "YulFunctionCall", - "src": "588:18:10" - }, - "nodeType": "YulExpressionStatement", - "src": "588:18:10" - } - ] - }, - "condition": { - "arguments": [ - { - "arguments": [ - { - "name": "newFreePtr", - "nodeType": "YulIdentifier", - "src": "545:10:10" - }, - { - "name": "_2", - "nodeType": "YulIdentifier", - "src": "557:2:10" - } - ], - "functionName": { - "name": "gt", - "nodeType": "YulIdentifier", - "src": "542:2:10" - }, - "nodeType": "YulFunctionCall", - "src": "542:18:10" - }, - { - "arguments": [ - { - "name": "newFreePtr", - "nodeType": "YulIdentifier", - "src": "565:10:10" - }, - { - "name": "memPtr", - "nodeType": "YulIdentifier", - "src": "577:6:10" - } - ], - "functionName": { - "name": "lt", - "nodeType": "YulIdentifier", - "src": "562:2:10" - }, - "nodeType": "YulFunctionCall", - "src": "562:22:10" - } - ], - "functionName": { - "name": "or", - "nodeType": "YulIdentifier", - "src": "539:2:10" - }, - "nodeType": "YulFunctionCall", - "src": "539:46:10" - }, - "nodeType": "YulIf", - "src": "536:72:10" - }, - { - "expression": { - "arguments": [ - { - "kind": "number", - "nodeType": "YulLiteral", - "src": "624:2:10", - "type": "", - "value": "64" - }, - { - "name": "newFreePtr", - "nodeType": "YulIdentifier", - "src": "628:10:10" - } - ], - "functionName": { - "name": "mstore", - "nodeType": "YulIdentifier", - "src": "617:6:10" - }, - "nodeType": "YulFunctionCall", - "src": "617:22:10" - }, - "nodeType": "YulExpressionStatement", - "src": "617:22:10" - }, - { - "expression": { - "arguments": [ - { - "name": "memPtr", - "nodeType": "YulIdentifier", - "src": "655:6:10" - }, - { - "name": "_1", - "nodeType": "YulIdentifier", - "src": "663:2:10" - } - ], - "functionName": { - "name": "mstore", - "nodeType": "YulIdentifier", - "src": "648:6:10" - }, - "nodeType": "YulFunctionCall", - "src": "648:18:10" - }, - "nodeType": "YulExpressionStatement", - "src": "648:18:10" - }, - { - "nodeType": "YulVariableDeclaration", - "src": "675:14:10", - "value": { - "kind": "number", - "nodeType": "YulLiteral", - "src": "685:4:10", - "type": "", - "value": "0x20" - }, - "variables": [ - { - "name": "_4", - "nodeType": "YulTypedName", - "src": "679:2:10", - "type": "" - } - ] - }, - { - "body": { - "nodeType": "YulBlock", - "src": "735:16:10", - "statements": [ - { - "expression": { - "arguments": [ - { - "kind": "number", - "nodeType": "YulLiteral", - "src": "744:1:10", - "type": "", - "value": "0" - }, - { - "kind": "number", - "nodeType": "YulLiteral", - "src": "747:1:10", - "type": "", - "value": "0" - } - ], - "functionName": { - "name": "revert", - "nodeType": "YulIdentifier", - "src": "737:6:10" - }, - "nodeType": "YulFunctionCall", - "src": "737:12:10" - }, - "nodeType": "YulExpressionStatement", - "src": "737:12:10" - } - ] - }, - "condition": { - "arguments": [ - { - "arguments": [ - { - "arguments": [ - { - "name": "offset", - "nodeType": "YulIdentifier", - "src": "712:6:10" - }, - { - "name": "_1", - "nodeType": "YulIdentifier", - "src": "720:2:10" - } - ], - "functionName": { - "name": "add", - "nodeType": "YulIdentifier", - "src": "708:3:10" - }, - "nodeType": "YulFunctionCall", - "src": "708:15:10" - }, - { - "name": "_4", - "nodeType": "YulIdentifier", - "src": "725:2:10" - } - ], - "functionName": { - "name": "add", - "nodeType": "YulIdentifier", - "src": "704:3:10" - }, - "nodeType": "YulFunctionCall", - "src": "704:24:10" - }, - { - "name": "end", - "nodeType": "YulIdentifier", - "src": "730:3:10" - } - ], - "functionName": { - "name": "gt", - "nodeType": "YulIdentifier", - "src": "701:2:10" - }, - "nodeType": "YulFunctionCall", - "src": "701:33:10" - }, - "nodeType": "YulIf", - "src": "698:53:10" - }, - { - "nodeType": "YulVariableDeclaration", - "src": "760:10:10", - "value": { - "kind": "number", - "nodeType": "YulLiteral", - "src": "769:1:10", - "type": "", - "value": "0" - }, - "variables": [ - { - "name": "i", - "nodeType": "YulTypedName", - "src": "764:1:10", - "type": "" - } - ] - }, - { - "body": { - "nodeType": "YulBlock", - "src": "825:87:10", - "statements": [ - { - "expression": { - "arguments": [ - { - "arguments": [ - { - "arguments": [ - { - "name": "memPtr", - "nodeType": "YulIdentifier", - "src": "854:6:10" - }, - { - "name": "i", - "nodeType": "YulIdentifier", - "src": "862:1:10" - } - ], - "functionName": { - "name": "add", - "nodeType": "YulIdentifier", - "src": "850:3:10" - }, - "nodeType": "YulFunctionCall", - "src": "850:14:10" - }, - { - "name": "_4", - "nodeType": "YulIdentifier", - "src": "866:2:10" - } - ], - "functionName": { - "name": "add", - "nodeType": "YulIdentifier", - "src": "846:3:10" - }, - "nodeType": "YulFunctionCall", - "src": "846:23:10" - }, - { - "arguments": [ - { - "arguments": [ - { - "arguments": [ - { - "name": "offset", - "nodeType": "YulIdentifier", - "src": "885:6:10" - }, - { - "name": "i", - "nodeType": "YulIdentifier", - "src": "893:1:10" - } - ], - "functionName": { - "name": "add", - "nodeType": "YulIdentifier", - "src": "881:3:10" - }, - "nodeType": "YulFunctionCall", - "src": "881:14:10" - }, - { - "name": "_4", - "nodeType": "YulIdentifier", - "src": "897:2:10" - } - ], - "functionName": { - "name": "add", - "nodeType": "YulIdentifier", - "src": "877:3:10" - }, - "nodeType": "YulFunctionCall", - "src": "877:23:10" - } - ], - "functionName": { - "name": "mload", - "nodeType": "YulIdentifier", - "src": "871:5:10" - }, - "nodeType": "YulFunctionCall", - "src": "871:30:10" - } - ], - "functionName": { - "name": "mstore", - "nodeType": "YulIdentifier", - "src": "839:6:10" - }, - "nodeType": "YulFunctionCall", - "src": "839:63:10" - }, - "nodeType": "YulExpressionStatement", - "src": "839:63:10" - } - ] - }, - "condition": { - "arguments": [ - { - "name": "i", - "nodeType": "YulIdentifier", - "src": "790:1:10" - }, - { - "name": "_1", - "nodeType": "YulIdentifier", - "src": "793:2:10" - } - ], - "functionName": { - "name": "lt", - "nodeType": "YulIdentifier", - "src": "787:2:10" - }, - "nodeType": "YulFunctionCall", - "src": "787:9:10" - }, - "nodeType": "YulForLoop", - "post": { - "nodeType": "YulBlock", - "src": "797:19:10", - "statements": [ - { - "nodeType": "YulAssignment", - "src": "799:15:10", - "value": { - "arguments": [ - { - "name": "i", - "nodeType": "YulIdentifier", - "src": "808:1:10" - }, - { - "name": "_4", - "nodeType": "YulIdentifier", - "src": "811:2:10" - } - ], - "functionName": { - "name": "add", - "nodeType": "YulIdentifier", - "src": "804:3:10" - }, - "nodeType": "YulFunctionCall", - "src": "804:10:10" - }, - "variableNames": [ - { - "name": "i", - "nodeType": "YulIdentifier", - "src": "799:1:10" - } - ] - } - ] - }, - "pre": { - "nodeType": "YulBlock", - "src": "783:3:10", - "statements": [] - }, - "src": "779:133:10" - }, - { - "expression": { - "arguments": [ - { - "arguments": [ - { - "arguments": [ - { - "name": "memPtr", - "nodeType": "YulIdentifier", - "src": "936:6:10" - }, - { - "name": "_1", - "nodeType": "YulIdentifier", - "src": "944:2:10" - } - ], - "functionName": { - "name": "add", - "nodeType": "YulIdentifier", - "src": "932:3:10" - }, - "nodeType": "YulFunctionCall", - "src": "932:15:10" - }, - { - "name": "_4", - "nodeType": "YulIdentifier", - "src": "949:2:10" - } - ], - "functionName": { - "name": "add", - "nodeType": "YulIdentifier", - "src": "928:3:10" - }, - "nodeType": "YulFunctionCall", - "src": "928:24:10" - }, - { - "kind": "number", - "nodeType": "YulLiteral", - "src": "954:1:10", - "type": "", - "value": "0" - } - ], - "functionName": { - "name": "mstore", - "nodeType": "YulIdentifier", - "src": "921:6:10" - }, - "nodeType": "YulFunctionCall", - "src": "921:35:10" - }, - "nodeType": "YulExpressionStatement", - "src": "921:35:10" - }, - { - "nodeType": "YulAssignment", - "src": "965:15:10", - "value": { - "name": "memPtr", - "nodeType": "YulIdentifier", - "src": "974:6:10" - }, - "variableNames": [ - { - "name": "array", - "nodeType": "YulIdentifier", - "src": "965:5:10" - } - ] - } - ] - }, - "name": "abi_decode_string_fromMemory", - "nodeType": "YulFunctionDefinition", - "parameters": [ - { - "name": "offset", - "nodeType": "YulTypedName", - "src": "184:6:10", - "type": "" - }, - { - "name": "end", - "nodeType": "YulTypedName", - "src": "192:3:10", - "type": "" - } - ], - "returnVariables": [ - { - "name": "array", - "nodeType": "YulTypedName", - "src": "200:5:10", - "type": "" - } - ], - "src": "146:840:10" - }, - { - "body": { - "nodeType": "YulBlock", - "src": "1109:444:10", - "statements": [ - { - "body": { - "nodeType": "YulBlock", - "src": "1155:16:10", - "statements": [ - { - "expression": { - "arguments": [ - { - "kind": "number", - "nodeType": "YulLiteral", - "src": "1164:1:10", - "type": "", - "value": "0" - }, - { - "kind": "number", - "nodeType": "YulLiteral", - "src": "1167:1:10", - "type": "", - "value": "0" - } - ], - "functionName": { - "name": "revert", - "nodeType": "YulIdentifier", - "src": "1157:6:10" - }, - "nodeType": "YulFunctionCall", - "src": "1157:12:10" - }, - "nodeType": "YulExpressionStatement", - "src": "1157:12:10" - } - ] - }, - "condition": { - "arguments": [ - { - "arguments": [ - { - "name": "dataEnd", - "nodeType": "YulIdentifier", - "src": "1130:7:10" - }, - { - "name": "headStart", - "nodeType": "YulIdentifier", - "src": "1139:9:10" - } - ], - "functionName": { - "name": "sub", - "nodeType": "YulIdentifier", - "src": "1126:3:10" - }, - "nodeType": "YulFunctionCall", - "src": "1126:23:10" - }, - { - "kind": "number", - "nodeType": "YulLiteral", - "src": "1151:2:10", - "type": "", - "value": "64" - } - ], - "functionName": { - "name": "slt", - "nodeType": "YulIdentifier", - "src": "1122:3:10" - }, - "nodeType": "YulFunctionCall", - "src": "1122:32:10" - }, - "nodeType": "YulIf", - "src": "1119:52:10" - }, - { - "nodeType": "YulVariableDeclaration", - "src": "1180:30:10", - "value": { - "arguments": [ - { - "name": "headStart", - "nodeType": "YulIdentifier", - "src": "1200:9:10" - } - ], - "functionName": { - "name": "mload", - "nodeType": "YulIdentifier", - "src": "1194:5:10" - }, - "nodeType": "YulFunctionCall", - "src": "1194:16:10" - }, - "variables": [ - { - "name": "offset", - "nodeType": "YulTypedName", - "src": "1184:6:10", - "type": "" - } - ] - }, - { - "nodeType": "YulVariableDeclaration", - "src": "1219:28:10", - "value": { - "arguments": [ - { - "arguments": [ - { - "kind": "number", - "nodeType": "YulLiteral", - "src": "1237:2:10", - "type": "", - "value": "64" - }, - { - "kind": "number", - "nodeType": "YulLiteral", - "src": "1241:1:10", - "type": "", - "value": "1" - } - ], - "functionName": { - "name": "shl", - "nodeType": "YulIdentifier", - "src": "1233:3:10" - }, - "nodeType": "YulFunctionCall", - "src": "1233:10:10" - }, - { - "kind": "number", - "nodeType": "YulLiteral", - "src": "1245:1:10", - "type": "", - "value": "1" - } - ], - "functionName": { - "name": "sub", - "nodeType": "YulIdentifier", - "src": "1229:3:10" - }, - "nodeType": "YulFunctionCall", - "src": "1229:18:10" - }, - "variables": [ - { - "name": "_1", - "nodeType": "YulTypedName", - "src": "1223:2:10", - "type": "" - } - ] - }, - { - "body": { - "nodeType": "YulBlock", - "src": "1274:16:10", - "statements": [ - { - "expression": { - "arguments": [ - { - "kind": "number", - "nodeType": "YulLiteral", - "src": "1283:1:10", - "type": "", - "value": "0" - }, - { - "kind": "number", - "nodeType": "YulLiteral", - "src": "1286:1:10", - "type": "", - "value": "0" - } - ], - "functionName": { - "name": "revert", - "nodeType": "YulIdentifier", - "src": "1276:6:10" - }, - "nodeType": "YulFunctionCall", - "src": "1276:12:10" - }, - "nodeType": "YulExpressionStatement", - "src": "1276:12:10" - } - ] - }, - "condition": { - "arguments": [ - { - "name": "offset", - "nodeType": "YulIdentifier", - "src": "1262:6:10" - }, - { - "name": "_1", - "nodeType": "YulIdentifier", - "src": "1270:2:10" - } - ], - "functionName": { - "name": "gt", - "nodeType": "YulIdentifier", - "src": "1259:2:10" - }, - "nodeType": "YulFunctionCall", - "src": "1259:14:10" - }, - "nodeType": "YulIf", - "src": "1256:34:10" - }, - { - "nodeType": "YulAssignment", - "src": "1299:71:10", - "value": { - "arguments": [ - { - "arguments": [ - { - "name": "headStart", - "nodeType": "YulIdentifier", - "src": "1342:9:10" - }, - { - "name": "offset", - "nodeType": "YulIdentifier", - "src": "1353:6:10" - } - ], - "functionName": { - "name": "add", - "nodeType": "YulIdentifier", - "src": "1338:3:10" - }, - "nodeType": "YulFunctionCall", - "src": "1338:22:10" - }, - { - "name": "dataEnd", - "nodeType": "YulIdentifier", - "src": "1362:7:10" - } - ], - "functionName": { - "name": "abi_decode_string_fromMemory", - "nodeType": "YulIdentifier", - "src": "1309:28:10" - }, - "nodeType": "YulFunctionCall", - "src": "1309:61:10" - }, - "variableNames": [ - { - "name": "value0", - "nodeType": "YulIdentifier", - "src": "1299:6:10" - } - ] - }, - { - "nodeType": "YulVariableDeclaration", - "src": "1379:41:10", - "value": { - "arguments": [ - { - "arguments": [ - { - "name": "headStart", - "nodeType": "YulIdentifier", - "src": "1405:9:10" - }, - { - "kind": "number", - "nodeType": "YulLiteral", - "src": "1416:2:10", - "type": "", - "value": "32" - } - ], - "functionName": { - "name": "add", - "nodeType": "YulIdentifier", - "src": "1401:3:10" - }, - "nodeType": "YulFunctionCall", - "src": "1401:18:10" - } - ], - "functionName": { - "name": "mload", - "nodeType": "YulIdentifier", - "src": "1395:5:10" - }, - "nodeType": "YulFunctionCall", - "src": "1395:25:10" - }, - "variables": [ - { - "name": "offset_1", - "nodeType": "YulTypedName", - "src": "1383:8:10", - "type": "" - } - ] - }, - { - "body": { - "nodeType": "YulBlock", - "src": "1449:16:10", - "statements": [ - { - "expression": { - "arguments": [ - { - "kind": "number", - "nodeType": "YulLiteral", - "src": "1458:1:10", - "type": "", - "value": "0" - }, - { - "kind": "number", - "nodeType": "YulLiteral", - "src": "1461:1:10", - "type": "", - "value": "0" - } - ], - "functionName": { - "name": "revert", - "nodeType": "YulIdentifier", - "src": "1451:6:10" - }, - "nodeType": "YulFunctionCall", - "src": "1451:12:10" - }, - "nodeType": "YulExpressionStatement", - "src": "1451:12:10" - } - ] - }, - "condition": { - "arguments": [ - { - "name": "offset_1", - "nodeType": "YulIdentifier", - "src": "1435:8:10" - }, - { - "name": "_1", - "nodeType": "YulIdentifier", - "src": "1445:2:10" - } - ], - "functionName": { - "name": "gt", - "nodeType": "YulIdentifier", - "src": "1432:2:10" - }, - "nodeType": "YulFunctionCall", - "src": "1432:16:10" - }, - "nodeType": "YulIf", - "src": "1429:36:10" - }, - { - "nodeType": "YulAssignment", - "src": "1474:73:10", - "value": { - "arguments": [ - { - "arguments": [ - { - "name": "headStart", - "nodeType": "YulIdentifier", - "src": "1517:9:10" - }, - { - "name": "offset_1", - "nodeType": "YulIdentifier", - "src": "1528:8:10" - } - ], - "functionName": { - "name": "add", - "nodeType": "YulIdentifier", - "src": "1513:3:10" - }, - "nodeType": "YulFunctionCall", - "src": "1513:24:10" - }, - { - "name": "dataEnd", - "nodeType": "YulIdentifier", - "src": "1539:7:10" - } - ], - "functionName": { - "name": "abi_decode_string_fromMemory", - "nodeType": "YulIdentifier", - "src": "1484:28:10" - }, - "nodeType": "YulFunctionCall", - "src": "1484:63:10" - }, - "variableNames": [ - { - "name": "value1", - "nodeType": "YulIdentifier", - "src": "1474:6:10" - } - ] - } - ] - }, - "name": "abi_decode_tuple_t_string_memory_ptrt_string_memory_ptr_fromMemory", - "nodeType": "YulFunctionDefinition", - "parameters": [ - { - "name": "headStart", - "nodeType": "YulTypedName", - "src": "1067:9:10", - "type": "" - }, - { - "name": "dataEnd", - "nodeType": "YulTypedName", - "src": "1078:7:10", - "type": "" - } - ], - "returnVariables": [ - { - "name": "value0", - "nodeType": "YulTypedName", - "src": "1090:6:10", - "type": "" - }, - { - "name": "value1", - "nodeType": "YulTypedName", - "src": "1098:6:10", - "type": "" - } - ], - "src": "991:562:10" - }, - { - "body": { - "nodeType": "YulBlock", - "src": "1613:325:10", - "statements": [ - { - "nodeType": "YulAssignment", - "src": "1623:22:10", - "value": { - "arguments": [ - { - "kind": "number", - "nodeType": "YulLiteral", - "src": "1637:1:10", - "type": "", - "value": "1" - }, - { - "name": "data", - "nodeType": "YulIdentifier", - "src": "1640:4:10" - } - ], - "functionName": { - "name": "shr", - "nodeType": "YulIdentifier", - "src": "1633:3:10" - }, - "nodeType": "YulFunctionCall", - "src": "1633:12:10" - }, - "variableNames": [ - { - "name": "length", - "nodeType": "YulIdentifier", - "src": "1623:6:10" - } - ] - }, - { - "nodeType": "YulVariableDeclaration", - "src": "1654:38:10", - "value": { - "arguments": [ - { - "name": "data", - "nodeType": "YulIdentifier", - "src": "1684:4:10" - }, - { - "kind": "number", - "nodeType": "YulLiteral", - "src": "1690:1:10", - "type": "", - "value": "1" - } - ], - "functionName": { - "name": "and", - "nodeType": "YulIdentifier", - "src": "1680:3:10" - }, - "nodeType": "YulFunctionCall", - "src": "1680:12:10" - }, - "variables": [ - { - "name": "outOfPlaceEncoding", - "nodeType": "YulTypedName", - "src": "1658:18:10", - "type": "" - } - ] - }, - { - "body": { - "nodeType": "YulBlock", - "src": "1731:31:10", - "statements": [ - { - "nodeType": "YulAssignment", - "src": "1733:27:10", - "value": { - "arguments": [ - { - "name": "length", - "nodeType": "YulIdentifier", - "src": "1747:6:10" - }, - { - "kind": "number", - "nodeType": "YulLiteral", - "src": "1755:4:10", - "type": "", - "value": "0x7f" - } - ], - "functionName": { - "name": "and", - "nodeType": "YulIdentifier", - "src": "1743:3:10" - }, - "nodeType": "YulFunctionCall", - "src": "1743:17:10" - }, - "variableNames": [ - { - "name": "length", - "nodeType": "YulIdentifier", - "src": "1733:6:10" - } - ] - } - ] - }, - "condition": { - "arguments": [ - { - "name": "outOfPlaceEncoding", - "nodeType": "YulIdentifier", - "src": "1711:18:10" - } - ], - "functionName": { - "name": "iszero", - "nodeType": "YulIdentifier", - "src": "1704:6:10" - }, - "nodeType": "YulFunctionCall", - "src": "1704:26:10" - }, - "nodeType": "YulIf", - "src": "1701:61:10" - }, - { - "body": { - "nodeType": "YulBlock", - "src": "1821:111:10", - "statements": [ - { - "expression": { - "arguments": [ - { - "kind": "number", - "nodeType": "YulLiteral", - "src": "1842:1:10", - "type": "", - "value": "0" - }, - { - "arguments": [ - { - "kind": "number", - "nodeType": "YulLiteral", - "src": "1849:3:10", - "type": "", - "value": "224" - }, - { - "kind": "number", - "nodeType": "YulLiteral", - "src": "1854:10:10", - "type": "", - "value": "0x4e487b71" - } - ], - "functionName": { - "name": "shl", - "nodeType": "YulIdentifier", - "src": "1845:3:10" - }, - "nodeType": "YulFunctionCall", - "src": "1845:20:10" - } - ], - "functionName": { - "name": "mstore", - "nodeType": "YulIdentifier", - "src": "1835:6:10" - }, - "nodeType": "YulFunctionCall", - "src": "1835:31:10" - }, - "nodeType": "YulExpressionStatement", - "src": "1835:31:10" - }, - { - "expression": { - "arguments": [ - { - "kind": "number", - "nodeType": "YulLiteral", - "src": "1886:1:10", - "type": "", - "value": "4" - }, - { - "kind": "number", - "nodeType": "YulLiteral", - "src": "1889:4:10", - "type": "", - "value": "0x22" - } - ], - "functionName": { - "name": "mstore", - "nodeType": "YulIdentifier", - "src": "1879:6:10" - }, - "nodeType": "YulFunctionCall", - "src": "1879:15:10" - }, - "nodeType": "YulExpressionStatement", - "src": "1879:15:10" - }, - { - "expression": { - "arguments": [ - { - "kind": "number", - "nodeType": "YulLiteral", - "src": "1914:1:10", - "type": "", - "value": "0" - }, - { - "kind": "number", - "nodeType": "YulLiteral", - "src": "1917:4:10", - "type": "", - "value": "0x24" - } - ], - "functionName": { - "name": "revert", - "nodeType": "YulIdentifier", - "src": "1907:6:10" - }, - "nodeType": "YulFunctionCall", - "src": "1907:15:10" - }, - "nodeType": "YulExpressionStatement", - "src": "1907:15:10" - } - ] - }, - "condition": { - "arguments": [ - { - "name": "outOfPlaceEncoding", - "nodeType": "YulIdentifier", - "src": "1777:18:10" - }, - { - "arguments": [ - { - "name": "length", - "nodeType": "YulIdentifier", - "src": "1800:6:10" - }, - { - "kind": "number", - "nodeType": "YulLiteral", - "src": "1808:2:10", - "type": "", - "value": "32" - } - ], - "functionName": { - "name": "lt", - "nodeType": "YulIdentifier", - "src": "1797:2:10" - }, - "nodeType": "YulFunctionCall", - "src": "1797:14:10" - } - ], - "functionName": { - "name": "eq", - "nodeType": "YulIdentifier", - "src": "1774:2:10" - }, - "nodeType": "YulFunctionCall", - "src": "1774:38:10" - }, - "nodeType": "YulIf", - "src": "1771:161:10" - } - ] - }, - "name": "extract_byte_array_length", - "nodeType": "YulFunctionDefinition", - "parameters": [ - { - "name": "data", - "nodeType": "YulTypedName", - "src": "1593:4:10", - "type": "" - } - ], - "returnVariables": [ - { - "name": "length", - "nodeType": "YulTypedName", - "src": "1602:6:10", - "type": "" - } - ], - "src": "1558:380:10" - }, + "body": { + "id": 1460, + "nodeType": "Block", + "src": "1361:278:9", + "statements": [ { - "body": { - "nodeType": "YulBlock", - "src": "1999:65:10", - "statements": [ - { + "condition": { + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 1428, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "expression": { + "arguments": [ + { + "id": 1424, + "name": "this", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": -28, + "src": "1383:4:9", + "typeDescriptions": { + "typeIdentifier": "t_contract$_Address_$1663", + "typeString": "library Address" + } + } + ], "expression": { - "arguments": [ - { - "kind": "number", - "nodeType": "YulLiteral", - "src": "2016:1:10", - "type": "", - "value": "0" - }, + "argumentTypes": [ { - "name": "ptr", - "nodeType": "YulIdentifier", - "src": "2019:3:10" + "typeIdentifier": "t_contract$_Address_$1663", + "typeString": "library Address" } ], - "functionName": { - "name": "mstore", - "nodeType": "YulIdentifier", - "src": "2009:6:10" + "id": 1423, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "1375:7:9", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_address_$", + "typeString": "type(address)" }, - "nodeType": "YulFunctionCall", - "src": "2009:14:10" + "typeName": { + "id": 1422, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "1375:7:9", + "typeDescriptions": {} + } }, - "nodeType": "YulExpressionStatement", - "src": "2009:14:10" + "id": 1425, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "typeConversion", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "1375:13:9", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } }, - { - "nodeType": "YulAssignment", - "src": "2032:26:10", - "value": { - "arguments": [ - { - "kind": "number", - "nodeType": "YulLiteral", - "src": "2050:1:10", - "type": "", - "value": "0" - }, - { - "kind": "number", - "nodeType": "YulLiteral", - "src": "2053:4:10", - "type": "", - "value": "0x20" - } - ], - "functionName": { - "name": "keccak256", - "nodeType": "YulIdentifier", - "src": "2040:9:10" - }, - "nodeType": "YulFunctionCall", - "src": "2040:18:10" - }, - "variableNames": [ - { - "name": "data", - "nodeType": "YulIdentifier", - "src": "2032:4:10" - } - ] - } - ] - }, - "name": "array_dataslot_string_storage", - "nodeType": "YulFunctionDefinition", - "parameters": [ - { - "name": "ptr", - "nodeType": "YulTypedName", - "src": "1982:3:10", - "type": "" - } - ], - "returnVariables": [ - { - "name": "data", - "nodeType": "YulTypedName", - "src": "1990:4:10", - "type": "" + "id": 1426, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberLocation": "1389:7:9", + "memberName": "balance", + "nodeType": "MemberAccess", + "src": "1375:21:9", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "<", + "rightExpression": { + "id": 1427, + "name": "amount", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1419, + "src": "1399:6:9", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "1375:30:9", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" } - ], - "src": "1943:121:10" - }, - { - "body": { - "nodeType": "YulBlock", - "src": "2150:464:10", + }, + "id": 1441, + "nodeType": "IfStatement", + "src": "1371:125:9", + "trueBody": { + "id": 1440, + "nodeType": "Block", + "src": "1407:89:9", "statements": [ { - "body": { - "nodeType": "YulBlock", - "src": "2183:425:10", - "statements": [ - { - "nodeType": "YulVariableDeclaration", - "src": "2197:11:10", - "value": { - "kind": "number", - "nodeType": "YulLiteral", - "src": "2207:1:10", - "type": "", - "value": "0" - }, - "variables": [ - { - "name": "_1", - "nodeType": "YulTypedName", - "src": "2201:2:10", - "type": "" - } - ] - }, + "errorCall": { + "arguments": [ { "expression": { "arguments": [ { - "name": "_1", - "nodeType": "YulIdentifier", - "src": "2228:2:10" - }, - { - "name": "array", - "nodeType": "YulIdentifier", - "src": "2232:5:10" - } - ], - "functionName": { - "name": "mstore", - "nodeType": "YulIdentifier", - "src": "2221:6:10" - }, - "nodeType": "YulFunctionCall", - "src": "2221:17:10" - }, - "nodeType": "YulExpressionStatement", - "src": "2221:17:10" - }, - { - "nodeType": "YulVariableDeclaration", - "src": "2251:31:10", - "value": { - "arguments": [ - { - "name": "_1", - "nodeType": "YulIdentifier", - "src": "2273:2:10" - }, - { - "kind": "number", - "nodeType": "YulLiteral", - "src": "2277:4:10", - "type": "", - "value": "0x20" - } - ], - "functionName": { - "name": "keccak256", - "nodeType": "YulIdentifier", - "src": "2263:9:10" - }, - "nodeType": "YulFunctionCall", - "src": "2263:19:10" - }, - "variables": [ - { - "name": "data", - "nodeType": "YulTypedName", - "src": "2255:4:10", - "type": "" - } - ] - }, - { - "nodeType": "YulVariableDeclaration", - "src": "2295:57:10", - "value": { - "arguments": [ - { - "name": "data", - "nodeType": "YulIdentifier", - "src": "2318:4:10" - }, - { - "arguments": [ - { - "kind": "number", - "nodeType": "YulLiteral", - "src": "2328:1:10", - "type": "", - "value": "5" - }, - { - "arguments": [ - { - "name": "startIndex", - "nodeType": "YulIdentifier", - "src": "2335:10:10" - }, - { - "kind": "number", - "nodeType": "YulLiteral", - "src": "2347:2:10", - "type": "", - "value": "31" - } - ], - "functionName": { - "name": "add", - "nodeType": "YulIdentifier", - "src": "2331:3:10" - }, - "nodeType": "YulFunctionCall", - "src": "2331:19:10" - } - ], - "functionName": { - "name": "shr", - "nodeType": "YulIdentifier", - "src": "2324:3:10" - }, - "nodeType": "YulFunctionCall", - "src": "2324:27:10" - } - ], - "functionName": { - "name": "add", - "nodeType": "YulIdentifier", - "src": "2314:3:10" - }, - "nodeType": "YulFunctionCall", - "src": "2314:38:10" - }, - "variables": [ - { - "name": "deleteStart", - "nodeType": "YulTypedName", - "src": "2299:11:10", - "type": "" - } - ] - }, - { - "body": { - "nodeType": "YulBlock", - "src": "2389:23:10", - "statements": [ - { - "nodeType": "YulAssignment", - "src": "2391:19:10", - "value": { - "name": "data", - "nodeType": "YulIdentifier", - "src": "2406:4:10" - }, - "variableNames": [ - { - "name": "deleteStart", - "nodeType": "YulIdentifier", - "src": "2391:11:10" - } - ] - } - ] - }, - "condition": { - "arguments": [ - { - "name": "startIndex", - "nodeType": "YulIdentifier", - "src": "2371:10:10" - }, - { - "kind": "number", - "nodeType": "YulLiteral", - "src": "2383:4:10", - "type": "", - "value": "0x20" + "id": 1434, + "name": "this", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": -28, + "src": "1463:4:9", + "typeDescriptions": { + "typeIdentifier": "t_contract$_Address_$1663", + "typeString": "library Address" + } } ], - "functionName": { - "name": "lt", - "nodeType": "YulIdentifier", - "src": "2368:2:10" - }, - "nodeType": "YulFunctionCall", - "src": "2368:20:10" - }, - "nodeType": "YulIf", - "src": "2365:47:10" - }, - { - "nodeType": "YulVariableDeclaration", - "src": "2425:41:10", - "value": { - "arguments": [ - { - "name": "data", - "nodeType": "YulIdentifier", - "src": "2439:4:10" + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_contract$_Address_$1663", + "typeString": "library Address" + } + ], + "id": 1433, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "1455:7:9", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_address_$", + "typeString": "type(address)" }, - { - "arguments": [ - { - "kind": "number", - "nodeType": "YulLiteral", - "src": "2449:1:10", - "type": "", - "value": "5" - }, - { - "arguments": [ - { - "name": "len", - "nodeType": "YulIdentifier", - "src": "2456:3:10" - }, - { - "kind": "number", - "nodeType": "YulLiteral", - "src": "2461:2:10", - "type": "", - "value": "31" - } - ], - "functionName": { - "name": "add", - "nodeType": "YulIdentifier", - "src": "2452:3:10" - }, - "nodeType": "YulFunctionCall", - "src": "2452:12:10" - } - ], - "functionName": { - "name": "shr", - "nodeType": "YulIdentifier", - "src": "2445:3:10" - }, - "nodeType": "YulFunctionCall", - "src": "2445:20:10" + "typeName": { + "id": 1432, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "1455:7:9", + "typeDescriptions": {} } - ], - "functionName": { - "name": "add", - "nodeType": "YulIdentifier", - "src": "2435:3:10" }, - "nodeType": "YulFunctionCall", - "src": "2435:31:10" - }, - "variables": [ - { - "name": "_2", - "nodeType": "YulTypedName", - "src": "2429:2:10", - "type": "" + "id": 1435, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "typeConversion", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "1455:13:9", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" } - ] + }, + "id": 1436, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberLocation": "1469:7:9", + "memberName": "balance", + "nodeType": "MemberAccess", + "src": "1455:21:9", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + { + "id": 1437, + "name": "amount", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1419, + "src": "1478:6:9", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "expression": { + "id": 1429, + "name": "Errors", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1715, + "src": "1428:6:9", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_contract$_Errors_$1715_$", + "typeString": "type(library Errors)" + } + }, + "id": 1431, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberLocation": "1435:19:9", + "memberName": "InsufficientBalance", + "nodeType": "MemberAccess", + "referencedDeclaration": 1703, + "src": "1428:26:9", + "typeDescriptions": { + "typeIdentifier": "t_function_error_pure$_t_uint256_$_t_uint256_$returns$__$", + "typeString": "function (uint256,uint256) pure" + } + }, + "id": 1438, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "1428:57:9", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 1439, + "nodeType": "RevertStatement", + "src": "1421:64:9" + } + ] + } + }, + { + "assignments": [ + 1443, + null + ], + "declarations": [ + { + "constant": false, + "id": 1443, + "mutability": "mutable", + "name": "success", + "nameLocation": "1512:7:9", + "nodeType": "VariableDeclaration", + "scope": 1460, + "src": "1507:12:9", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "typeName": { + "id": 1442, + "name": "bool", + "nodeType": "ElementaryTypeName", + "src": "1507:4:9", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "visibility": "internal" + }, + null + ], + "id": 1450, + "initialValue": { + "arguments": [ + { + "hexValue": "", + "id": 1448, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "string", + "lValueRequested": false, + "nodeType": "Literal", + "src": "1555:2:9", + "typeDescriptions": { + "typeIdentifier": "t_stringliteral_c5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470", + "typeString": "literal_string \"\"" + }, + "value": "" + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_stringliteral_c5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470", + "typeString": "literal_string \"\"" + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_stringliteral_c5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470", + "typeString": "literal_string \"\"" + } + ], + "expression": { + "id": 1444, + "name": "recipient", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1417, + "src": "1525:9:9", + "typeDescriptions": { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + } + }, + "id": 1445, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberLocation": "1535:4:9", + "memberName": "call", + "nodeType": "MemberAccess", + "src": "1525:14:9", + "typeDescriptions": { + "typeIdentifier": "t_function_barecall_payable$_t_bytes_memory_ptr_$returns$_t_bool_$_t_bytes_memory_ptr_$", + "typeString": "function (bytes memory) payable returns (bool,bytes memory)" + } + }, + "id": 1447, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "names": [ + "value" + ], + "nodeType": "FunctionCallOptions", + "options": [ + { + "id": 1446, + "name": "amount", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1419, + "src": "1547:6:9", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "src": "1525:29:9", + "typeDescriptions": { + "typeIdentifier": "t_function_barecall_payable$_t_bytes_memory_ptr_$returns$_t_bool_$_t_bytes_memory_ptr_$value", + "typeString": "function (bytes memory) payable returns (bool,bytes memory)" + } + }, + "id": 1449, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "1525:33:9", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$_t_bool_$_t_bytes_memory_ptr_$", + "typeString": "tuple(bool,bytes memory)" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "1506:52:9" + }, + { + "condition": { + "id": 1452, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "nodeType": "UnaryOperation", + "operator": "!", + "prefix": true, + "src": "1572:8:9", + "subExpression": { + "id": 1451, + "name": "success", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1443, + "src": "1573:7:9", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "id": 1459, + "nodeType": "IfStatement", + "src": "1568:65:9", + "trueBody": { + "id": 1458, + "nodeType": "Block", + "src": "1582:51:9", + "statements": [ + { + "errorCall": { + "arguments": [], + "expression": { + "argumentTypes": [], + "expression": { + "id": 1453, + "name": "Errors", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1715, + "src": "1603:6:9", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_contract$_Errors_$1715_$", + "typeString": "type(library Errors)" + } }, + "id": 1455, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberLocation": "1610:10:9", + "memberName": "FailedCall", + "nodeType": "MemberAccess", + "referencedDeclaration": 1706, + "src": "1603:17:9", + "typeDescriptions": { + "typeIdentifier": "t_function_error_pure$__$returns$__$", + "typeString": "function () pure" + } + }, + "id": 1456, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "1603:19:9", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 1457, + "nodeType": "RevertStatement", + "src": "1596:26:9" + } + ] + } + } + ] + }, + "documentation": { + "id": 1415, + "nodeType": "StructuredDocumentation", + "src": "380:905:9", + "text": " @dev Replacement for Solidity's `transfer`: sends `amount` wei to\n `recipient`, forwarding all available gas and reverting on errors.\n https://eips.ethereum.org/EIPS/eip-1884[EIP1884] increases the gas cost\n of certain opcodes, possibly making contracts go over the 2300 gas limit\n imposed by `transfer`, making them unable to receive funds via\n `transfer`. {sendValue} removes this limitation.\n https://consensys.net/diligence/blog/2019/09/stop-using-soliditys-transfer-now/[Learn more].\n IMPORTANT: because control is transferred to `recipient`, care must be\n taken to not create reentrancy vulnerabilities. Consider using\n {ReentrancyGuard} or the\n https://solidity.readthedocs.io/en/v0.8.20/security-considerations.html#use-the-checks-effects-interactions-pattern[checks-effects-interactions pattern]." + }, + "id": 1461, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "sendValue", + "nameLocation": "1299:9:9", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 1420, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 1417, + "mutability": "mutable", + "name": "recipient", + "nameLocation": "1325:9:9", + "nodeType": "VariableDeclaration", + "scope": 1461, + "src": "1309:25:9", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + }, + "typeName": { + "id": 1416, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "1309:15:9", + "stateMutability": "payable", + "typeDescriptions": { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 1419, + "mutability": "mutable", + "name": "amount", + "nameLocation": "1344:6:9", + "nodeType": "VariableDeclaration", + "scope": 1461, + "src": "1336:14:9", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 1418, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "1336:7:9", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "src": "1308:43:9" + }, + "returnParameters": { + "id": 1421, + "nodeType": "ParameterList", + "parameters": [], + "src": "1361:0:9" + }, + "scope": 1663, + "src": "1290:349:9", + "stateMutability": "nonpayable", + "virtual": false, + "visibility": "internal" + }, + { + "body": { + "id": 1477, + "nodeType": "Block", + "src": "2573:62:9", + "statements": [ + { + "expression": { + "arguments": [ + { + "id": 1472, + "name": "target", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1464, + "src": "2612:6:9", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "id": 1473, + "name": "data", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1466, + "src": "2620:4:9", + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + } + }, + { + "hexValue": "30", + "id": 1474, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "2626:1:9", + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + }, + { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + } + ], + "id": 1471, + "name": "functionCallWithValue", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1528, + "src": "2590:21:9", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_bytes_memory_ptr_$_t_uint256_$returns$_t_bytes_memory_ptr_$", + "typeString": "function (address,bytes memory,uint256) returns (bytes memory)" + } + }, + "id": 1475, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "2590:38:9", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + } + }, + "functionReturnParameters": 1470, + "id": 1476, + "nodeType": "Return", + "src": "2583:45:9" + } + ] + }, + "documentation": { + "id": 1462, + "nodeType": "StructuredDocumentation", + "src": "1645:834:9", + "text": " @dev Performs a Solidity function call using a low level `call`. A\n plain `call` is an unsafe replacement for a function call: use this\n function instead.\n If `target` reverts with a revert reason or custom error, it is bubbled\n up by this function (like regular Solidity function calls). However, if\n the call reverted with no returned reason, this function reverts with a\n {Errors.FailedCall} error.\n Returns the raw returned data. To convert to the expected return value,\n use https://solidity.readthedocs.io/en/latest/units-and-global-variables.html?highlight=abi.decode#abi-encoding-and-decoding-functions[`abi.decode`].\n Requirements:\n - `target` must be a contract.\n - calling `target` with `data` must not revert." + }, + "id": 1478, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "functionCall", + "nameLocation": "2493:12:9", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 1467, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 1464, + "mutability": "mutable", + "name": "target", + "nameLocation": "2514:6:9", + "nodeType": "VariableDeclaration", + "scope": 1478, + "src": "2506:14:9", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 1463, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "2506:7:9", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 1466, + "mutability": "mutable", + "name": "data", + "nameLocation": "2535:4:9", + "nodeType": "VariableDeclaration", + "scope": 1478, + "src": "2522:17:9", + "stateVariable": false, + "storageLocation": "memory", + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes" + }, + "typeName": { + "id": 1465, + "name": "bytes", + "nodeType": "ElementaryTypeName", + "src": "2522:5:9", + "typeDescriptions": { + "typeIdentifier": "t_bytes_storage_ptr", + "typeString": "bytes" + } + }, + "visibility": "internal" + } + ], + "src": "2505:35:9" + }, + "returnParameters": { + "id": 1470, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 1469, + "mutability": "mutable", + "name": "", + "nameLocation": "-1:-1:-1", + "nodeType": "VariableDeclaration", + "scope": 1478, + "src": "2559:12:9", + "stateVariable": false, + "storageLocation": "memory", + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes" + }, + "typeName": { + "id": 1468, + "name": "bytes", + "nodeType": "ElementaryTypeName", + "src": "2559:5:9", + "typeDescriptions": { + "typeIdentifier": "t_bytes_storage_ptr", + "typeString": "bytes" + } + }, + "visibility": "internal" + } + ], + "src": "2558:14:9" + }, + "scope": 1663, + "src": "2484:151:9", + "stateMutability": "nonpayable", + "virtual": false, + "visibility": "internal" + }, + { + "body": { + "id": 1527, + "nodeType": "Block", + "src": "3072:294:9", + "statements": [ + { + "condition": { + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 1496, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "expression": { + "arguments": [ + { + "id": 1492, + "name": "this", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": -28, + "src": "3094:4:9", + "typeDescriptions": { + "typeIdentifier": "t_contract$_Address_$1663", + "typeString": "library Address" + } + } + ], + "expression": { + "argumentTypes": [ { - "nodeType": "YulVariableDeclaration", - "src": "2479:24:10", - "value": { - "name": "deleteStart", - "nodeType": "YulIdentifier", - "src": "2492:11:10" - }, - "variables": [ - { - "name": "start", - "nodeType": "YulTypedName", - "src": "2483:5:10", - "type": "" - } - ] - }, + "typeIdentifier": "t_contract$_Address_$1663", + "typeString": "library Address" + } + ], + "id": 1491, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "3086:7:9", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_address_$", + "typeString": "type(address)" + }, + "typeName": { + "id": 1490, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "3086:7:9", + "typeDescriptions": {} + } + }, + "id": 1493, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "typeConversion", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "3086:13:9", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "id": 1494, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberLocation": "3100:7:9", + "memberName": "balance", + "nodeType": "MemberAccess", + "src": "3086:21:9", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "<", + "rightExpression": { + "id": 1495, + "name": "value", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1485, + "src": "3110:5:9", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "3086:29:9", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "id": 1509, + "nodeType": "IfStatement", + "src": "3082:123:9", + "trueBody": { + "id": 1508, + "nodeType": "Block", + "src": "3117:88:9", + "statements": [ + { + "errorCall": { + "arguments": [ { - "body": { - "nodeType": "YulBlock", - "src": "2577:21:10", - "statements": [ - { - "expression": { - "arguments": [ - { - "name": "start", - "nodeType": "YulIdentifier", - "src": "2586:5:10" - }, - { - "name": "_1", - "nodeType": "YulIdentifier", - "src": "2593:2:10" - } - ], - "functionName": { - "name": "sstore", - "nodeType": "YulIdentifier", - "src": "2579:6:10" - }, - "nodeType": "YulFunctionCall", - "src": "2579:17:10" - }, - "nodeType": "YulExpressionStatement", - "src": "2579:17:10" - } - ] - }, - "condition": { + "expression": { "arguments": [ { - "name": "start", - "nodeType": "YulIdentifier", - "src": "2527:5:10" - }, - { - "name": "_2", - "nodeType": "YulIdentifier", - "src": "2534:2:10" + "id": 1502, + "name": "this", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": -28, + "src": "3173:4:9", + "typeDescriptions": { + "typeIdentifier": "t_contract$_Address_$1663", + "typeString": "library Address" + } } ], - "functionName": { - "name": "lt", - "nodeType": "YulIdentifier", - "src": "2524:2:10" - }, - "nodeType": "YulFunctionCall", - "src": "2524:13:10" - }, - "nodeType": "YulForLoop", - "post": { - "nodeType": "YulBlock", - "src": "2538:26:10", - "statements": [ - { - "nodeType": "YulAssignment", - "src": "2540:22:10", - "value": { - "arguments": [ - { - "name": "start", - "nodeType": "YulIdentifier", - "src": "2553:5:10" - }, - { - "kind": "number", - "nodeType": "YulLiteral", - "src": "2560:1:10", - "type": "", - "value": "1" - } - ], - "functionName": { - "name": "add", - "nodeType": "YulIdentifier", - "src": "2549:3:10" - }, - "nodeType": "YulFunctionCall", - "src": "2549:13:10" - }, - "variableNames": [ - { - "name": "start", - "nodeType": "YulIdentifier", - "src": "2540:5:10" - } - ] + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_contract$_Address_$1663", + "typeString": "library Address" + } + ], + "id": 1501, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "3165:7:9", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_address_$", + "typeString": "type(address)" + }, + "typeName": { + "id": 1500, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "3165:7:9", + "typeDescriptions": {} } - ] - }, - "pre": { - "nodeType": "YulBlock", - "src": "2520:3:10", - "statements": [] + }, + "id": 1503, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "typeConversion", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "3165:13:9", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } }, - "src": "2516:82:10" - } - ] - }, - "condition": { - "arguments": [ - { - "name": "len", - "nodeType": "YulIdentifier", - "src": "2166:3:10" + "id": 1504, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberLocation": "3179:7:9", + "memberName": "balance", + "nodeType": "MemberAccess", + "src": "3165:21:9", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } }, { - "kind": "number", - "nodeType": "YulLiteral", - "src": "2171:2:10", - "type": "", - "value": "31" + "id": 1505, + "name": "value", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1485, + "src": "3188:5:9", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } } ], - "functionName": { - "name": "gt", - "nodeType": "YulIdentifier", - "src": "2163:2:10" + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "expression": { + "id": 1497, + "name": "Errors", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1715, + "src": "3138:6:9", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_contract$_Errors_$1715_$", + "typeString": "type(library Errors)" + } + }, + "id": 1499, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberLocation": "3145:19:9", + "memberName": "InsufficientBalance", + "nodeType": "MemberAccess", + "referencedDeclaration": 1703, + "src": "3138:26:9", + "typeDescriptions": { + "typeIdentifier": "t_function_error_pure$_t_uint256_$_t_uint256_$returns$__$", + "typeString": "function (uint256,uint256) pure" + } }, - "nodeType": "YulFunctionCall", - "src": "2163:11:10" + "id": 1506, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "3138:56:9", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 1507, + "nodeType": "RevertStatement", + "src": "3131:63:9" + } + ] + } + }, + { + "assignments": [ + 1511, + 1513 + ], + "declarations": [ + { + "constant": false, + "id": 1511, + "mutability": "mutable", + "name": "success", + "nameLocation": "3220:7:9", + "nodeType": "VariableDeclaration", + "scope": 1527, + "src": "3215:12:9", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "typeName": { + "id": 1510, + "name": "bool", + "nodeType": "ElementaryTypeName", + "src": "3215:4:9", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 1513, + "mutability": "mutable", + "name": "returndata", + "nameLocation": "3242:10:9", + "nodeType": "VariableDeclaration", + "scope": 1527, + "src": "3229:23:9", + "stateVariable": false, + "storageLocation": "memory", + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes" + }, + "typeName": { + "id": 1512, + "name": "bytes", + "nodeType": "ElementaryTypeName", + "src": "3229:5:9", + "typeDescriptions": { + "typeIdentifier": "t_bytes_storage_ptr", + "typeString": "bytes" + } + }, + "visibility": "internal" + } + ], + "id": 1520, + "initialValue": { + "arguments": [ + { + "id": 1518, + "name": "data", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1483, + "src": "3282:4:9", + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + } + ], + "expression": { + "id": 1514, + "name": "target", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1481, + "src": "3256:6:9", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } }, - "nodeType": "YulIf", - "src": "2160:448:10" + "id": 1515, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberLocation": "3263:4:9", + "memberName": "call", + "nodeType": "MemberAccess", + "src": "3256:11:9", + "typeDescriptions": { + "typeIdentifier": "t_function_barecall_payable$_t_bytes_memory_ptr_$returns$_t_bool_$_t_bytes_memory_ptr_$", + "typeString": "function (bytes memory) payable returns (bool,bytes memory)" + } + }, + "id": 1517, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "names": [ + "value" + ], + "nodeType": "FunctionCallOptions", + "options": [ + { + "id": 1516, + "name": "value", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1485, + "src": "3275:5:9", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "src": "3256:25:9", + "typeDescriptions": { + "typeIdentifier": "t_function_barecall_payable$_t_bytes_memory_ptr_$returns$_t_bool_$_t_bytes_memory_ptr_$value", + "typeString": "function (bytes memory) payable returns (bool,bytes memory)" } - ] - }, - "name": "clean_up_bytearray_end_slots_string_storage", - "nodeType": "YulFunctionDefinition", - "parameters": [ - { - "name": "array", - "nodeType": "YulTypedName", - "src": "2122:5:10", - "type": "" - }, - { - "name": "len", - "nodeType": "YulTypedName", - "src": "2129:3:10", - "type": "" }, - { - "name": "startIndex", - "nodeType": "YulTypedName", - "src": "2134:10:10", - "type": "" + "id": 1519, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "3256:31:9", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$_t_bool_$_t_bytes_memory_ptr_$", + "typeString": "tuple(bool,bytes memory)" } - ], - "src": "2069:545:10" + }, + "nodeType": "VariableDeclarationStatement", + "src": "3214:73:9" }, { - "body": { - "nodeType": "YulBlock", - "src": "2704:81:10", - "statements": [ + "expression": { + "arguments": [ { - "nodeType": "YulAssignment", - "src": "2714:65:10", - "value": { - "arguments": [ - { - "arguments": [ - { - "name": "data", - "nodeType": "YulIdentifier", - "src": "2729:4:10" - }, - { - "arguments": [ - { - "arguments": [ - { - "arguments": [ - { - "kind": "number", - "nodeType": "YulLiteral", - "src": "2747:1:10", - "type": "", - "value": "3" - }, - { - "name": "len", - "nodeType": "YulIdentifier", - "src": "2750:3:10" - } - ], - "functionName": { - "name": "shl", - "nodeType": "YulIdentifier", - "src": "2743:3:10" - }, - "nodeType": "YulFunctionCall", - "src": "2743:11:10" - }, - { - "arguments": [ - { - "kind": "number", - "nodeType": "YulLiteral", - "src": "2760:1:10", - "type": "", - "value": "0" - } - ], - "functionName": { - "name": "not", - "nodeType": "YulIdentifier", - "src": "2756:3:10" - }, - "nodeType": "YulFunctionCall", - "src": "2756:6:10" - } - ], - "functionName": { - "name": "shr", - "nodeType": "YulIdentifier", - "src": "2739:3:10" - }, - "nodeType": "YulFunctionCall", - "src": "2739:24:10" - } - ], - "functionName": { - "name": "not", - "nodeType": "YulIdentifier", - "src": "2735:3:10" - }, - "nodeType": "YulFunctionCall", - "src": "2735:29:10" - } - ], - "functionName": { - "name": "and", - "nodeType": "YulIdentifier", - "src": "2725:3:10" - }, - "nodeType": "YulFunctionCall", - "src": "2725:40:10" - }, - { - "arguments": [ - { - "kind": "number", - "nodeType": "YulLiteral", - "src": "2771:1:10", - "type": "", - "value": "1" - }, - { - "name": "len", - "nodeType": "YulIdentifier", - "src": "2774:3:10" - } - ], - "functionName": { - "name": "shl", - "nodeType": "YulIdentifier", - "src": "2767:3:10" - }, - "nodeType": "YulFunctionCall", - "src": "2767:11:10" - } - ], - "functionName": { - "name": "or", - "nodeType": "YulIdentifier", - "src": "2722:2:10" - }, - "nodeType": "YulFunctionCall", - "src": "2722:57:10" + "id": 1522, + "name": "target", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1481, + "src": "3331:6:9", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "id": 1523, + "name": "success", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1511, + "src": "3339:7:9", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + { + "id": 1524, + "name": "returndata", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1513, + "src": "3348:10:9", + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" }, - "variableNames": [ - { - "name": "used", - "nodeType": "YulIdentifier", - "src": "2714:4:10" - } - ] + { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + } + ], + "id": 1521, + "name": "verifyCallResultFromTarget", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1620, + "src": "3304:26:9", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_view$_t_address_$_t_bool_$_t_bytes_memory_ptr_$returns$_t_bytes_memory_ptr_$", + "typeString": "function (address,bool,bytes memory) view returns (bytes memory)" } - ] + }, + "id": 1525, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "3304:55:9", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + } + }, + "functionReturnParameters": 1489, + "id": 1526, + "nodeType": "Return", + "src": "3297:62:9" + } + ] + }, + "documentation": { + "id": 1479, + "nodeType": "StructuredDocumentation", + "src": "2641:313:9", + "text": " @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`],\n but also transferring `value` wei to `target`.\n Requirements:\n - the calling contract must have an ETH balance of at least `value`.\n - the called Solidity function must be `payable`." + }, + "id": 1528, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "functionCallWithValue", + "nameLocation": "2968:21:9", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 1486, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 1481, + "mutability": "mutable", + "name": "target", + "nameLocation": "2998:6:9", + "nodeType": "VariableDeclaration", + "scope": 1528, + "src": "2990:14:9", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" }, - "name": "extract_used_part_and_set_length_of_short_byte_array", - "nodeType": "YulFunctionDefinition", - "parameters": [ - { - "name": "data", - "nodeType": "YulTypedName", - "src": "2681:4:10", - "type": "" - }, - { - "name": "len", - "nodeType": "YulTypedName", - "src": "2687:3:10", - "type": "" + "typeName": { + "id": 1480, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "2990:7:9", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" } - ], - "returnVariables": [ - { - "name": "used", - "nodeType": "YulTypedName", - "src": "2695:4:10", - "type": "" + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 1483, + "mutability": "mutable", + "name": "data", + "nameLocation": "3019:4:9", + "nodeType": "VariableDeclaration", + "scope": 1528, + "src": "3006:17:9", + "stateVariable": false, + "storageLocation": "memory", + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes" + }, + "typeName": { + "id": 1482, + "name": "bytes", + "nodeType": "ElementaryTypeName", + "src": "3006:5:9", + "typeDescriptions": { + "typeIdentifier": "t_bytes_storage_ptr", + "typeString": "bytes" } - ], - "src": "2619:166:10" + }, + "visibility": "internal" }, { - "body": { - "nodeType": "YulBlock", - "src": "2886:1256:10", - "statements": [ - { - "nodeType": "YulVariableDeclaration", - "src": "2896:24:10", - "value": { - "arguments": [ - { - "name": "src", - "nodeType": "YulIdentifier", - "src": "2916:3:10" - } - ], - "functionName": { - "name": "mload", - "nodeType": "YulIdentifier", - "src": "2910:5:10" - }, - "nodeType": "YulFunctionCall", - "src": "2910:10:10" - }, - "variables": [ - { - "name": "newLen", - "nodeType": "YulTypedName", - "src": "2900:6:10", - "type": "" - } - ] + "constant": false, + "id": 1485, + "mutability": "mutable", + "name": "value", + "nameLocation": "3033:5:9", + "nodeType": "VariableDeclaration", + "scope": 1528, + "src": "3025:13:9", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 1484, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "3025:7:9", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "src": "2989:50:9" + }, + "returnParameters": { + "id": 1489, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 1488, + "mutability": "mutable", + "name": "", + "nameLocation": "-1:-1:-1", + "nodeType": "VariableDeclaration", + "scope": 1528, + "src": "3058:12:9", + "stateVariable": false, + "storageLocation": "memory", + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes" + }, + "typeName": { + "id": 1487, + "name": "bytes", + "nodeType": "ElementaryTypeName", + "src": "3058:5:9", + "typeDescriptions": { + "typeIdentifier": "t_bytes_storage_ptr", + "typeString": "bytes" + } + }, + "visibility": "internal" + } + ], + "src": "3057:14:9" + }, + "scope": 1663, + "src": "2959:407:9", + "stateMutability": "nonpayable", + "virtual": false, + "visibility": "internal" + }, + { + "body": { + "id": 1553, + "nodeType": "Block", + "src": "3605:154:9", + "statements": [ + { + "assignments": [ + 1539, + 1541 + ], + "declarations": [ + { + "constant": false, + "id": 1539, + "mutability": "mutable", + "name": "success", + "nameLocation": "3621:7:9", + "nodeType": "VariableDeclaration", + "scope": 1553, + "src": "3616:12:9", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "typeName": { + "id": 1538, + "name": "bool", + "nodeType": "ElementaryTypeName", + "src": "3616:4:9", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 1541, + "mutability": "mutable", + "name": "returndata", + "nameLocation": "3643:10:9", + "nodeType": "VariableDeclaration", + "scope": 1553, + "src": "3630:23:9", + "stateVariable": false, + "storageLocation": "memory", + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes" + }, + "typeName": { + "id": 1540, + "name": "bytes", + "nodeType": "ElementaryTypeName", + "src": "3630:5:9", + "typeDescriptions": { + "typeIdentifier": "t_bytes_storage_ptr", + "typeString": "bytes" + } }, + "visibility": "internal" + } + ], + "id": 1546, + "initialValue": { + "arguments": [ { - "body": { - "nodeType": "YulBlock", - "src": "2963:22:10", - "statements": [ - { - "expression": { - "arguments": [], - "functionName": { - "name": "panic_error_0x41", - "nodeType": "YulIdentifier", - "src": "2965:16:10" - }, - "nodeType": "YulFunctionCall", - "src": "2965:18:10" - }, - "nodeType": "YulExpressionStatement", - "src": "2965:18:10" - } - ] - }, - "condition": { - "arguments": [ - { - "name": "newLen", - "nodeType": "YulIdentifier", - "src": "2935:6:10" - }, - { - "arguments": [ - { - "arguments": [ - { - "kind": "number", - "nodeType": "YulLiteral", - "src": "2951:2:10", - "type": "", - "value": "64" - }, - { - "kind": "number", - "nodeType": "YulLiteral", - "src": "2955:1:10", - "type": "", - "value": "1" - } - ], - "functionName": { - "name": "shl", - "nodeType": "YulIdentifier", - "src": "2947:3:10" - }, - "nodeType": "YulFunctionCall", - "src": "2947:10:10" - }, - { - "kind": "number", - "nodeType": "YulLiteral", - "src": "2959:1:10", - "type": "", - "value": "1" - } - ], - "functionName": { - "name": "sub", - "nodeType": "YulIdentifier", - "src": "2943:3:10" - }, - "nodeType": "YulFunctionCall", - "src": "2943:18:10" - } - ], - "functionName": { - "name": "gt", - "nodeType": "YulIdentifier", - "src": "2932:2:10" - }, - "nodeType": "YulFunctionCall", - "src": "2932:30:10" - }, - "nodeType": "YulIf", - "src": "2929:56:10" + "id": 1544, + "name": "data", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1533, + "src": "3675:4:9", + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + } + ], + "expression": { + "id": 1542, + "name": "target", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1531, + "src": "3657:6:9", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } }, + "id": 1543, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberLocation": "3664:10:9", + "memberName": "staticcall", + "nodeType": "MemberAccess", + "src": "3657:17:9", + "typeDescriptions": { + "typeIdentifier": "t_function_barestaticcall_view$_t_bytes_memory_ptr_$returns$_t_bool_$_t_bytes_memory_ptr_$", + "typeString": "function (bytes memory) view returns (bool,bytes memory)" + } + }, + "id": 1545, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "3657:23:9", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$_t_bool_$_t_bytes_memory_ptr_$", + "typeString": "tuple(bool,bytes memory)" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "3615:65:9" + }, + { + "expression": { + "arguments": [ { - "expression": { - "arguments": [ - { - "name": "slot", - "nodeType": "YulIdentifier", - "src": "3038:4:10" - }, - { - "arguments": [ - { - "arguments": [ - { - "name": "slot", - "nodeType": "YulIdentifier", - "src": "3076:4:10" - } - ], - "functionName": { - "name": "sload", - "nodeType": "YulIdentifier", - "src": "3070:5:10" - }, - "nodeType": "YulFunctionCall", - "src": "3070:11:10" - } - ], - "functionName": { - "name": "extract_byte_array_length", - "nodeType": "YulIdentifier", - "src": "3044:25:10" - }, - "nodeType": "YulFunctionCall", - "src": "3044:38:10" - }, - { - "name": "newLen", - "nodeType": "YulIdentifier", - "src": "3084:6:10" - } - ], - "functionName": { - "name": "clean_up_bytearray_end_slots_string_storage", - "nodeType": "YulIdentifier", - "src": "2994:43:10" - }, - "nodeType": "YulFunctionCall", - "src": "2994:97:10" - }, - "nodeType": "YulExpressionStatement", - "src": "2994:97:10" + "id": 1548, + "name": "target", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1531, + "src": "3724:6:9", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } }, { - "nodeType": "YulVariableDeclaration", - "src": "3100:18:10", - "value": { - "kind": "number", - "nodeType": "YulLiteral", - "src": "3117:1:10", - "type": "", - "value": "0" - }, - "variables": [ - { - "name": "srcOffset", - "nodeType": "YulTypedName", - "src": "3104:9:10", - "type": "" - } - ] + "id": 1549, + "name": "success", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1539, + "src": "3732:7:9", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } }, { - "nodeType": "YulVariableDeclaration", - "src": "3127:23:10", - "value": { - "kind": "number", - "nodeType": "YulLiteral", - "src": "3146:4:10", - "type": "", - "value": "0x20" + "id": 1550, + "name": "returndata", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1541, + "src": "3741:10:9", + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" }, - "variables": [ - { - "name": "srcOffset_1", - "nodeType": "YulTypedName", - "src": "3131:11:10", - "type": "" - } - ] - }, - { - "nodeType": "YulAssignment", - "src": "3159:24:10", - "value": { - "name": "srcOffset_1", - "nodeType": "YulIdentifier", - "src": "3172:11:10" + { + "typeIdentifier": "t_bool", + "typeString": "bool" }, - "variableNames": [ - { - "name": "srcOffset", - "nodeType": "YulIdentifier", - "src": "3159:9:10" - } - ] + { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + } + ], + "id": 1547, + "name": "verifyCallResultFromTarget", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1620, + "src": "3697:26:9", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_view$_t_address_$_t_bool_$_t_bytes_memory_ptr_$returns$_t_bytes_memory_ptr_$", + "typeString": "function (address,bool,bytes memory) view returns (bytes memory)" + } + }, + "id": 1551, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "3697:55:9", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + } + }, + "functionReturnParameters": 1537, + "id": 1552, + "nodeType": "Return", + "src": "3690:62:9" + } + ] + }, + "documentation": { + "id": 1529, + "nodeType": "StructuredDocumentation", + "src": "3372:128:9", + "text": " @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`],\n but performing a static call." + }, + "id": 1554, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "functionStaticCall", + "nameLocation": "3514:18:9", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 1534, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 1531, + "mutability": "mutable", + "name": "target", + "nameLocation": "3541:6:9", + "nodeType": "VariableDeclaration", + "scope": 1554, + "src": "3533:14:9", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 1530, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "3533:7:9", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 1533, + "mutability": "mutable", + "name": "data", + "nameLocation": "3562:4:9", + "nodeType": "VariableDeclaration", + "scope": 1554, + "src": "3549:17:9", + "stateVariable": false, + "storageLocation": "memory", + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes" + }, + "typeName": { + "id": 1532, + "name": "bytes", + "nodeType": "ElementaryTypeName", + "src": "3549:5:9", + "typeDescriptions": { + "typeIdentifier": "t_bytes_storage_ptr", + "typeString": "bytes" + } + }, + "visibility": "internal" + } + ], + "src": "3532:35:9" + }, + "returnParameters": { + "id": 1537, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 1536, + "mutability": "mutable", + "name": "", + "nameLocation": "-1:-1:-1", + "nodeType": "VariableDeclaration", + "scope": 1554, + "src": "3591:12:9", + "stateVariable": false, + "storageLocation": "memory", + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes" + }, + "typeName": { + "id": 1535, + "name": "bytes", + "nodeType": "ElementaryTypeName", + "src": "3591:5:9", + "typeDescriptions": { + "typeIdentifier": "t_bytes_storage_ptr", + "typeString": "bytes" + } + }, + "visibility": "internal" + } + ], + "src": "3590:14:9" + }, + "scope": 1663, + "src": "3505:254:9", + "stateMutability": "view", + "virtual": false, + "visibility": "internal" + }, + { + "body": { + "id": 1579, + "nodeType": "Block", + "src": "3997:156:9", + "statements": [ + { + "assignments": [ + 1565, + 1567 + ], + "declarations": [ + { + "constant": false, + "id": 1565, + "mutability": "mutable", + "name": "success", + "nameLocation": "4013:7:9", + "nodeType": "VariableDeclaration", + "scope": 1579, + "src": "4008:12:9", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" }, - { - "cases": [ - { - "body": { - "nodeType": "YulBlock", - "src": "3229:656:10", - "statements": [ - { - "nodeType": "YulVariableDeclaration", - "src": "3243:35:10", - "value": { - "arguments": [ - { - "name": "newLen", - "nodeType": "YulIdentifier", - "src": "3262:6:10" - }, - { - "arguments": [ - { - "kind": "number", - "nodeType": "YulLiteral", - "src": "3274:2:10", - "type": "", - "value": "31" - } - ], - "functionName": { - "name": "not", - "nodeType": "YulIdentifier", - "src": "3270:3:10" - }, - "nodeType": "YulFunctionCall", - "src": "3270:7:10" - } - ], - "functionName": { - "name": "and", - "nodeType": "YulIdentifier", - "src": "3258:3:10" - }, - "nodeType": "YulFunctionCall", - "src": "3258:20:10" - }, - "variables": [ - { - "name": "loopEnd", - "nodeType": "YulTypedName", - "src": "3247:7:10", - "type": "" - } - ] - }, - { - "nodeType": "YulVariableDeclaration", - "src": "3291:49:10", - "value": { - "arguments": [ - { - "name": "slot", - "nodeType": "YulIdentifier", - "src": "3335:4:10" - } - ], - "functionName": { - "name": "array_dataslot_string_storage", - "nodeType": "YulIdentifier", - "src": "3305:29:10" - }, - "nodeType": "YulFunctionCall", - "src": "3305:35:10" - }, - "variables": [ - { - "name": "dstPtr", - "nodeType": "YulTypedName", - "src": "3295:6:10", - "type": "" - } - ] - }, - { - "nodeType": "YulVariableDeclaration", - "src": "3353:10:10", - "value": { - "kind": "number", - "nodeType": "YulLiteral", - "src": "3362:1:10", - "type": "", - "value": "0" - }, - "variables": [ - { - "name": "i", - "nodeType": "YulTypedName", - "src": "3357:1:10", - "type": "" - } - ] - }, - { - "body": { - "nodeType": "YulBlock", - "src": "3440:172:10", - "statements": [ - { - "expression": { - "arguments": [ - { - "name": "dstPtr", - "nodeType": "YulIdentifier", - "src": "3465:6:10" - }, - { - "arguments": [ - { - "arguments": [ - { - "name": "src", - "nodeType": "YulIdentifier", - "src": "3483:3:10" - }, - { - "name": "srcOffset", - "nodeType": "YulIdentifier", - "src": "3488:9:10" - } - ], - "functionName": { - "name": "add", - "nodeType": "YulIdentifier", - "src": "3479:3:10" - }, - "nodeType": "YulFunctionCall", - "src": "3479:19:10" - } - ], - "functionName": { - "name": "mload", - "nodeType": "YulIdentifier", - "src": "3473:5:10" - }, - "nodeType": "YulFunctionCall", - "src": "3473:26:10" - } - ], - "functionName": { - "name": "sstore", - "nodeType": "YulIdentifier", - "src": "3458:6:10" - }, - "nodeType": "YulFunctionCall", - "src": "3458:42:10" - }, - "nodeType": "YulExpressionStatement", - "src": "3458:42:10" - }, - { - "nodeType": "YulAssignment", - "src": "3517:24:10", - "value": { - "arguments": [ - { - "name": "dstPtr", - "nodeType": "YulIdentifier", - "src": "3531:6:10" - }, - { - "kind": "number", - "nodeType": "YulLiteral", - "src": "3539:1:10", - "type": "", - "value": "1" - } - ], - "functionName": { - "name": "add", - "nodeType": "YulIdentifier", - "src": "3527:3:10" - }, - "nodeType": "YulFunctionCall", - "src": "3527:14:10" - }, - "variableNames": [ - { - "name": "dstPtr", - "nodeType": "YulIdentifier", - "src": "3517:6:10" - } - ] - }, - { - "nodeType": "YulAssignment", - "src": "3558:40:10", - "value": { - "arguments": [ - { - "name": "srcOffset", - "nodeType": "YulIdentifier", - "src": "3575:9:10" - }, - { - "name": "srcOffset_1", - "nodeType": "YulIdentifier", - "src": "3586:11:10" - } - ], - "functionName": { - "name": "add", - "nodeType": "YulIdentifier", - "src": "3571:3:10" - }, - "nodeType": "YulFunctionCall", - "src": "3571:27:10" - }, - "variableNames": [ - { - "name": "srcOffset", - "nodeType": "YulIdentifier", - "src": "3558:9:10" - } - ] - } - ] - }, - "condition": { - "arguments": [ - { - "name": "i", - "nodeType": "YulIdentifier", - "src": "3387:1:10" - }, - { - "name": "loopEnd", - "nodeType": "YulIdentifier", - "src": "3390:7:10" - } - ], - "functionName": { - "name": "lt", - "nodeType": "YulIdentifier", - "src": "3384:2:10" - }, - "nodeType": "YulFunctionCall", - "src": "3384:14:10" - }, - "nodeType": "YulForLoop", - "post": { - "nodeType": "YulBlock", - "src": "3399:28:10", - "statements": [ - { - "nodeType": "YulAssignment", - "src": "3401:24:10", - "value": { - "arguments": [ - { - "name": "i", - "nodeType": "YulIdentifier", - "src": "3410:1:10" - }, - { - "name": "srcOffset_1", - "nodeType": "YulIdentifier", - "src": "3413:11:10" - } - ], - "functionName": { - "name": "add", - "nodeType": "YulIdentifier", - "src": "3406:3:10" - }, - "nodeType": "YulFunctionCall", - "src": "3406:19:10" - }, - "variableNames": [ - { - "name": "i", - "nodeType": "YulIdentifier", - "src": "3401:1:10" - } - ] - } - ] - }, - "pre": { - "nodeType": "YulBlock", - "src": "3380:3:10", - "statements": [] - }, - "src": "3376:236:10" + "typeName": { + "id": 1564, + "name": "bool", + "nodeType": "ElementaryTypeName", + "src": "4008:4:9", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 1567, + "mutability": "mutable", + "name": "returndata", + "nameLocation": "4035:10:9", + "nodeType": "VariableDeclaration", + "scope": 1579, + "src": "4022:23:9", + "stateVariable": false, + "storageLocation": "memory", + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes" + }, + "typeName": { + "id": 1566, + "name": "bytes", + "nodeType": "ElementaryTypeName", + "src": "4022:5:9", + "typeDescriptions": { + "typeIdentifier": "t_bytes_storage_ptr", + "typeString": "bytes" + } + }, + "visibility": "internal" + } + ], + "id": 1572, + "initialValue": { + "arguments": [ + { + "id": 1570, + "name": "data", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1559, + "src": "4069:4:9", + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + } + ], + "expression": { + "id": 1568, + "name": "target", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1557, + "src": "4049:6:9", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "id": 1569, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberLocation": "4056:12:9", + "memberName": "delegatecall", + "nodeType": "MemberAccess", + "src": "4049:19:9", + "typeDescriptions": { + "typeIdentifier": "t_function_baredelegatecall_nonpayable$_t_bytes_memory_ptr_$returns$_t_bool_$_t_bytes_memory_ptr_$", + "typeString": "function (bytes memory) returns (bool,bytes memory)" + } + }, + "id": 1571, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "4049:25:9", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$_t_bool_$_t_bytes_memory_ptr_$", + "typeString": "tuple(bool,bytes memory)" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "4007:67:9" + }, + { + "expression": { + "arguments": [ + { + "id": 1574, + "name": "target", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1557, + "src": "4118:6:9", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "id": 1575, + "name": "success", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1565, + "src": "4126:7:9", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + { + "id": 1576, + "name": "returndata", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1567, + "src": "4135:10:9", + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + } + ], + "id": 1573, + "name": "verifyCallResultFromTarget", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1620, + "src": "4091:26:9", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_view$_t_address_$_t_bool_$_t_bytes_memory_ptr_$returns$_t_bytes_memory_ptr_$", + "typeString": "function (address,bool,bytes memory) view returns (bytes memory)" + } + }, + "id": 1577, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "4091:55:9", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + } + }, + "functionReturnParameters": 1563, + "id": 1578, + "nodeType": "Return", + "src": "4084:62:9" + } + ] + }, + "documentation": { + "id": 1555, + "nodeType": "StructuredDocumentation", + "src": "3765:130:9", + "text": " @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`],\n but performing a delegate call." + }, + "id": 1580, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "functionDelegateCall", + "nameLocation": "3909:20:9", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 1560, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 1557, + "mutability": "mutable", + "name": "target", + "nameLocation": "3938:6:9", + "nodeType": "VariableDeclaration", + "scope": 1580, + "src": "3930:14:9", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 1556, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "3930:7:9", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 1559, + "mutability": "mutable", + "name": "data", + "nameLocation": "3959:4:9", + "nodeType": "VariableDeclaration", + "scope": 1580, + "src": "3946:17:9", + "stateVariable": false, + "storageLocation": "memory", + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes" + }, + "typeName": { + "id": 1558, + "name": "bytes", + "nodeType": "ElementaryTypeName", + "src": "3946:5:9", + "typeDescriptions": { + "typeIdentifier": "t_bytes_storage_ptr", + "typeString": "bytes" + } + }, + "visibility": "internal" + } + ], + "src": "3929:35:9" + }, + "returnParameters": { + "id": 1563, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 1562, + "mutability": "mutable", + "name": "", + "nameLocation": "-1:-1:-1", + "nodeType": "VariableDeclaration", + "scope": 1580, + "src": "3983:12:9", + "stateVariable": false, + "storageLocation": "memory", + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes" + }, + "typeName": { + "id": 1561, + "name": "bytes", + "nodeType": "ElementaryTypeName", + "src": "3983:5:9", + "typeDescriptions": { + "typeIdentifier": "t_bytes_storage_ptr", + "typeString": "bytes" + } + }, + "visibility": "internal" + } + ], + "src": "3982:14:9" + }, + "scope": 1663, + "src": "3900:253:9", + "stateMutability": "nonpayable", + "virtual": false, + "visibility": "internal" + }, + { + "body": { + "id": 1619, + "nodeType": "Block", + "src": "4579:424:9", + "statements": [ + { + "condition": { + "id": 1593, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "nodeType": "UnaryOperation", + "operator": "!", + "prefix": true, + "src": "4593:8:9", + "subExpression": { + "id": 1592, + "name": "success", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1585, + "src": "4594:7:9", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "falseBody": { + "id": 1617, + "nodeType": "Block", + "src": "4653:344:9", + "statements": [ + { + "condition": { + "commonType": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "id": 1608, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 1602, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "expression": { + "id": 1599, + "name": "returndata", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1587, + "src": "4841:10:9", + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + } + }, + "id": 1600, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberLocation": "4852:6:9", + "memberName": "length", + "nodeType": "MemberAccess", + "src": "4841:17:9", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "==", + "rightExpression": { + "hexValue": "30", + "id": 1601, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "4862:1:9", + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + }, + "src": "4841:22:9", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "nodeType": "BinaryOperation", + "operator": "&&", + "rightExpression": { + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 1607, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "expression": { + "expression": { + "id": 1603, + "name": "target", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1583, + "src": "4867:6:9", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } }, - { - "body": { - "nodeType": "YulBlock", - "src": "3660:166:10", - "statements": [ - { - "nodeType": "YulVariableDeclaration", - "src": "3678:43:10", - "value": { - "arguments": [ - { - "arguments": [ - { - "name": "src", - "nodeType": "YulIdentifier", - "src": "3705:3:10" - }, - { - "name": "srcOffset", - "nodeType": "YulIdentifier", - "src": "3710:9:10" - } - ], - "functionName": { - "name": "add", - "nodeType": "YulIdentifier", - "src": "3701:3:10" - }, - "nodeType": "YulFunctionCall", - "src": "3701:19:10" - } - ], - "functionName": { - "name": "mload", - "nodeType": "YulIdentifier", - "src": "3695:5:10" - }, - "nodeType": "YulFunctionCall", - "src": "3695:26:10" - }, - "variables": [ - { - "name": "lastValue", - "nodeType": "YulTypedName", - "src": "3682:9:10", - "type": "" - } - ] - }, - { - "expression": { - "arguments": [ - { - "name": "dstPtr", - "nodeType": "YulIdentifier", - "src": "3745:6:10" - }, - { - "arguments": [ - { - "name": "lastValue", - "nodeType": "YulIdentifier", - "src": "3757:9:10" - }, - { - "arguments": [ - { - "arguments": [ - { - "arguments": [ - { - "arguments": [ - { - "kind": "number", - "nodeType": "YulLiteral", - "src": "3784:1:10", - "type": "", - "value": "3" - }, - { - "name": "newLen", - "nodeType": "YulIdentifier", - "src": "3787:6:10" - } - ], - "functionName": { - "name": "shl", - "nodeType": "YulIdentifier", - "src": "3780:3:10" - }, - "nodeType": "YulFunctionCall", - "src": "3780:14:10" - }, - { - "kind": "number", - "nodeType": "YulLiteral", - "src": "3796:3:10", - "type": "", - "value": "248" - } - ], - "functionName": { - "name": "and", - "nodeType": "YulIdentifier", - "src": "3776:3:10" - }, - "nodeType": "YulFunctionCall", - "src": "3776:24:10" - }, - { - "arguments": [ - { - "kind": "number", - "nodeType": "YulLiteral", - "src": "3806:1:10", - "type": "", - "value": "0" - } - ], - "functionName": { - "name": "not", - "nodeType": "YulIdentifier", - "src": "3802:3:10" - }, - "nodeType": "YulFunctionCall", - "src": "3802:6:10" - } - ], - "functionName": { - "name": "shr", - "nodeType": "YulIdentifier", - "src": "3772:3:10" - }, - "nodeType": "YulFunctionCall", - "src": "3772:37:10" - } - ], - "functionName": { - "name": "not", - "nodeType": "YulIdentifier", - "src": "3768:3:10" - }, - "nodeType": "YulFunctionCall", - "src": "3768:42:10" - } - ], - "functionName": { - "name": "and", - "nodeType": "YulIdentifier", - "src": "3753:3:10" - }, - "nodeType": "YulFunctionCall", - "src": "3753:58:10" - } - ], - "functionName": { - "name": "sstore", - "nodeType": "YulIdentifier", - "src": "3738:6:10" - }, - "nodeType": "YulFunctionCall", - "src": "3738:74:10" - }, - "nodeType": "YulExpressionStatement", - "src": "3738:74:10" - } - ] - }, - "condition": { - "arguments": [ - { - "name": "loopEnd", - "nodeType": "YulIdentifier", - "src": "3631:7:10" - }, - { - "name": "newLen", - "nodeType": "YulIdentifier", - "src": "3640:6:10" - } - ], - "functionName": { - "name": "lt", - "nodeType": "YulIdentifier", - "src": "3628:2:10" - }, - "nodeType": "YulFunctionCall", - "src": "3628:19:10" - }, - "nodeType": "YulIf", - "src": "3625:201:10" + "id": 1604, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberLocation": "4874:4:9", + "memberName": "code", + "nodeType": "MemberAccess", + "src": "4867:11:9", + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + } + }, + "id": 1605, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberLocation": "4879:6:9", + "memberName": "length", + "nodeType": "MemberAccess", + "src": "4867:18:9", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "==", + "rightExpression": { + "hexValue": "30", + "id": 1606, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "4889:1:9", + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + }, + "src": "4867:23:9", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "src": "4841:49:9", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "id": 1614, + "nodeType": "IfStatement", + "src": "4837:119:9", + "trueBody": { + "id": 1613, + "nodeType": "Block", + "src": "4892:64:9", + "statements": [ + { + "errorCall": { + "arguments": [ + { + "id": 1610, + "name": "target", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1583, + "src": "4934:6:9", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + } + ], + "id": 1609, + "name": "AddressEmptyCode", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1414, + "src": "4917:16:9", + "typeDescriptions": { + "typeIdentifier": "t_function_error_pure$_t_address_$returns$__$", + "typeString": "function (address) pure" + } + }, + "id": 1611, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "4917:24:9", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 1612, + "nodeType": "RevertStatement", + "src": "4910:31:9" + } + ] + } + }, + { + "expression": { + "id": 1615, + "name": "returndata", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1587, + "src": "4976:10:9", + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + } + }, + "functionReturnParameters": 1591, + "id": 1616, + "nodeType": "Return", + "src": "4969:17:9" + } + ] + }, + "id": 1618, + "nodeType": "IfStatement", + "src": "4589:408:9", + "trueBody": { + "id": 1598, + "nodeType": "Block", + "src": "4603:44:9", + "statements": [ + { + "expression": { + "arguments": [ + { + "id": 1595, + "name": "returndata", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1587, + "src": "4625:10:9", + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + } + ], + "id": 1594, + "name": "_revert", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1662, + "src": "4617:7:9", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_pure$_t_bytes_memory_ptr_$returns$__$", + "typeString": "function (bytes memory) pure" + } + }, + "id": 1596, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "4617:19:9", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 1597, + "nodeType": "ExpressionStatement", + "src": "4617:19:9" + } + ] + } + } + ] + }, + "documentation": { + "id": 1581, + "nodeType": "StructuredDocumentation", + "src": "4159:257:9", + "text": " @dev Tool to verify that a low level call to smart-contract was successful, and reverts if the target\n was not a contract or bubbling up the revert reason (falling back to {Errors.FailedCall}) in case\n of an unsuccessful call." + }, + "id": 1620, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "verifyCallResultFromTarget", + "nameLocation": "4430:26:9", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 1588, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 1583, + "mutability": "mutable", + "name": "target", + "nameLocation": "4474:6:9", + "nodeType": "VariableDeclaration", + "scope": 1620, + "src": "4466:14:9", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 1582, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "4466:7:9", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 1585, + "mutability": "mutable", + "name": "success", + "nameLocation": "4495:7:9", + "nodeType": "VariableDeclaration", + "scope": 1620, + "src": "4490:12:9", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "typeName": { + "id": 1584, + "name": "bool", + "nodeType": "ElementaryTypeName", + "src": "4490:4:9", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 1587, + "mutability": "mutable", + "name": "returndata", + "nameLocation": "4525:10:9", + "nodeType": "VariableDeclaration", + "scope": 1620, + "src": "4512:23:9", + "stateVariable": false, + "storageLocation": "memory", + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes" + }, + "typeName": { + "id": 1586, + "name": "bytes", + "nodeType": "ElementaryTypeName", + "src": "4512:5:9", + "typeDescriptions": { + "typeIdentifier": "t_bytes_storage_ptr", + "typeString": "bytes" + } + }, + "visibility": "internal" + } + ], + "src": "4456:85:9" + }, + "returnParameters": { + "id": 1591, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 1590, + "mutability": "mutable", + "name": "", + "nameLocation": "-1:-1:-1", + "nodeType": "VariableDeclaration", + "scope": 1620, + "src": "4565:12:9", + "stateVariable": false, + "storageLocation": "memory", + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes" + }, + "typeName": { + "id": 1589, + "name": "bytes", + "nodeType": "ElementaryTypeName", + "src": "4565:5:9", + "typeDescriptions": { + "typeIdentifier": "t_bytes_storage_ptr", + "typeString": "bytes" + } + }, + "visibility": "internal" + } + ], + "src": "4564:14:9" + }, + "scope": 1663, + "src": "4421:582:9", + "stateMutability": "view", + "virtual": false, + "visibility": "internal" + }, + { + "body": { + "id": 1641, + "nodeType": "Block", + "src": "5307:122:9", + "statements": [ + { + "condition": { + "id": 1631, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "nodeType": "UnaryOperation", + "operator": "!", + "prefix": true, + "src": "5321:8:9", + "subExpression": { + "id": 1630, + "name": "success", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1623, + "src": "5322:7:9", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "falseBody": { + "id": 1639, + "nodeType": "Block", + "src": "5381:42:9", + "statements": [ + { + "expression": { + "id": 1637, + "name": "returndata", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1625, + "src": "5402:10:9", + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + } + }, + "functionReturnParameters": 1629, + "id": 1638, + "nodeType": "Return", + "src": "5395:17:9" + } + ] + }, + "id": 1640, + "nodeType": "IfStatement", + "src": "5317:106:9", + "trueBody": { + "id": 1636, + "nodeType": "Block", + "src": "5331:44:9", + "statements": [ + { + "expression": { + "arguments": [ + { + "id": 1633, + "name": "returndata", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1625, + "src": "5353:10:9", + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + } + ], + "id": 1632, + "name": "_revert", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1662, + "src": "5345:7:9", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_pure$_t_bytes_memory_ptr_$returns$__$", + "typeString": "function (bytes memory) pure" + } + }, + "id": 1634, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "5345:19:9", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 1635, + "nodeType": "ExpressionStatement", + "src": "5345:19:9" + } + ] + } + } + ] + }, + "documentation": { + "id": 1621, + "nodeType": "StructuredDocumentation", + "src": "5009:191:9", + "text": " @dev Tool to verify that a low level call was successful, and reverts if it wasn't, either by bubbling the\n revert reason or with a default {Errors.FailedCall} error." + }, + "id": 1642, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "verifyCallResult", + "nameLocation": "5214:16:9", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 1626, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 1623, + "mutability": "mutable", + "name": "success", + "nameLocation": "5236:7:9", + "nodeType": "VariableDeclaration", + "scope": 1642, + "src": "5231:12:9", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "typeName": { + "id": 1622, + "name": "bool", + "nodeType": "ElementaryTypeName", + "src": "5231:4:9", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 1625, + "mutability": "mutable", + "name": "returndata", + "nameLocation": "5258:10:9", + "nodeType": "VariableDeclaration", + "scope": 1642, + "src": "5245:23:9", + "stateVariable": false, + "storageLocation": "memory", + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes" + }, + "typeName": { + "id": 1624, + "name": "bytes", + "nodeType": "ElementaryTypeName", + "src": "5245:5:9", + "typeDescriptions": { + "typeIdentifier": "t_bytes_storage_ptr", + "typeString": "bytes" + } + }, + "visibility": "internal" + } + ], + "src": "5230:39:9" + }, + "returnParameters": { + "id": 1629, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 1628, + "mutability": "mutable", + "name": "", + "nameLocation": "-1:-1:-1", + "nodeType": "VariableDeclaration", + "scope": 1642, + "src": "5293:12:9", + "stateVariable": false, + "storageLocation": "memory", + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes" + }, + "typeName": { + "id": 1627, + "name": "bytes", + "nodeType": "ElementaryTypeName", + "src": "5293:5:9", + "typeDescriptions": { + "typeIdentifier": "t_bytes_storage_ptr", + "typeString": "bytes" + } + }, + "visibility": "internal" + } + ], + "src": "5292:14:9" + }, + "scope": 1663, + "src": "5205:224:9", + "stateMutability": "pure", + "virtual": false, + "visibility": "internal" + }, + { + "body": { + "id": 1661, + "nodeType": "Block", + "src": "5598:432:9", + "statements": [ + { + "condition": { + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 1651, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "expression": { + "id": 1648, + "name": "returndata", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1645, + "src": "5674:10:9", + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + } + }, + "id": 1649, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberLocation": "5685:6:9", + "memberName": "length", + "nodeType": "MemberAccess", + "src": "5674:17:9", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": ">", + "rightExpression": { + "hexValue": "30", + "id": 1650, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "5694:1:9", + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + }, + "src": "5674:21:9", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "falseBody": { + "id": 1659, + "nodeType": "Block", + "src": "5973:51:9", + "statements": [ + { + "errorCall": { + "arguments": [], + "expression": { + "argumentTypes": [], + "expression": { + "id": 1654, + "name": "Errors", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1715, + "src": "5994:6:9", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_contract$_Errors_$1715_$", + "typeString": "type(library Errors)" + } + }, + "id": 1656, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberLocation": "6001:10:9", + "memberName": "FailedCall", + "nodeType": "MemberAccess", + "referencedDeclaration": 1706, + "src": "5994:17:9", + "typeDescriptions": { + "typeIdentifier": "t_function_error_pure$__$returns$__$", + "typeString": "function () pure" + } + }, + "id": 1657, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "5994:19:9", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 1658, + "nodeType": "RevertStatement", + "src": "5987:26:9" + } + ] + }, + "id": 1660, + "nodeType": "IfStatement", + "src": "5670:354:9", + "trueBody": { + "id": 1653, + "nodeType": "Block", + "src": "5697:270:9", + "statements": [ + { + "AST": { + "nodeType": "YulBlock", + "src": "5824:133:9", + "statements": [ + { + "nodeType": "YulVariableDeclaration", + "src": "5842:40:9", + "value": { + "arguments": [ + { + "name": "returndata", + "nodeType": "YulIdentifier", + "src": "5871:10:9" + } + ], + "functionName": { + "name": "mload", + "nodeType": "YulIdentifier", + "src": "5865:5:9" }, - { - "expression": { - "arguments": [ - { - "name": "slot", - "nodeType": "YulIdentifier", - "src": "3846:4:10" - }, - { - "arguments": [ - { - "arguments": [ - { - "kind": "number", - "nodeType": "YulLiteral", - "src": "3860:1:10", - "type": "", - "value": "1" - }, - { - "name": "newLen", - "nodeType": "YulIdentifier", - "src": "3863:6:10" - } - ], - "functionName": { - "name": "shl", - "nodeType": "YulIdentifier", - "src": "3856:3:10" - }, - "nodeType": "YulFunctionCall", - "src": "3856:14:10" - }, - { - "kind": "number", - "nodeType": "YulLiteral", - "src": "3872:1:10", - "type": "", - "value": "1" - } - ], - "functionName": { - "name": "add", - "nodeType": "YulIdentifier", - "src": "3852:3:10" - }, - "nodeType": "YulFunctionCall", - "src": "3852:22:10" + "nodeType": "YulFunctionCall", + "src": "5865:17:9" + }, + "variables": [ + { + "name": "returndata_size", + "nodeType": "YulTypedName", + "src": "5846:15:9", + "type": "" + } + ] + }, + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "5910:2:9", + "type": "", + "value": "32" + }, + { + "name": "returndata", + "nodeType": "YulIdentifier", + "src": "5914:10:9" } ], "functionName": { - "name": "sstore", + "name": "add", "nodeType": "YulIdentifier", - "src": "3839:6:10" + "src": "5906:3:9" }, "nodeType": "YulFunctionCall", - "src": "3839:36:10" + "src": "5906:19:9" }, - "nodeType": "YulExpressionStatement", - "src": "3839:36:10" - } - ] + { + "name": "returndata_size", + "nodeType": "YulIdentifier", + "src": "5927:15:9" + } + ], + "functionName": { + "name": "revert", + "nodeType": "YulIdentifier", + "src": "5899:6:9" + }, + "nodeType": "YulFunctionCall", + "src": "5899:44:9" + }, + "nodeType": "YulExpressionStatement", + "src": "5899:44:9" + } + ] + }, + "evmVersion": "london", + "externalReferences": [ + { + "declaration": 1645, + "isOffset": false, + "isSlot": false, + "src": "5871:10:9", + "valueSize": 1 + }, + { + "declaration": 1645, + "isOffset": false, + "isSlot": false, + "src": "5914:10:9", + "valueSize": 1 + } + ], + "flags": [ + "memory-safe" + ], + "id": 1652, + "nodeType": "InlineAssembly", + "src": "5799:158:9" + } + ] + } + } + ] + }, + "documentation": { + "id": 1643, + "nodeType": "StructuredDocumentation", + "src": "5435:103:9", + "text": " @dev Reverts with returndata if present. Otherwise reverts with {Errors.FailedCall}." + }, + "id": 1662, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "_revert", + "nameLocation": "5552:7:9", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 1646, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 1645, + "mutability": "mutable", + "name": "returndata", + "nameLocation": "5573:10:9", + "nodeType": "VariableDeclaration", + "scope": 1662, + "src": "5560:23:9", + "stateVariable": false, + "storageLocation": "memory", + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes" + }, + "typeName": { + "id": 1644, + "name": "bytes", + "nodeType": "ElementaryTypeName", + "src": "5560:5:9", + "typeDescriptions": { + "typeIdentifier": "t_bytes_storage_ptr", + "typeString": "bytes" + } + }, + "visibility": "internal" + } + ], + "src": "5559:25:9" + }, + "returnParameters": { + "id": 1647, + "nodeType": "ParameterList", + "parameters": [], + "src": "5598:0:9" + }, + "scope": 1663, + "src": "5543:487:9", + "stateMutability": "pure", + "virtual": false, + "visibility": "private" + } + ], + "scope": 1664, + "src": "233:5799:9", + "usedErrors": [ + 1414 + ], + "usedEvents": [] + } + ], + "src": "101:5932:9" + }, + "id": 9 + }, + "@openzeppelin/contracts/utils/Context.sol": { + "ast": { + "absolutePath": "@openzeppelin/contracts/utils/Context.sol", + "exportedSymbols": { + "Context": [ + 1693 + ] + }, + "id": 1694, + "license": "MIT", + "nodeType": "SourceUnit", + "nodes": [ + { + "id": 1665, + "literals": [ + "solidity", + "^", + "0.8", + ".20" + ], + "nodeType": "PragmaDirective", + "src": "101:24:10" + }, + { + "abstract": true, + "baseContracts": [], + "canonicalName": "Context", + "contractDependencies": [], + "contractKind": "contract", + "documentation": { + "id": 1666, + "nodeType": "StructuredDocumentation", + "src": "127:496:10", + "text": " @dev Provides information about the current execution context, including the\n sender of the transaction and its data. While these are generally available\n via msg.sender and msg.data, they should not be accessed in such a direct\n manner, since when dealing with meta-transactions the account sending and\n paying for execution may not be the actual sender (as far as an application\n is concerned).\n This contract is only required for intermediate, library-like contracts." + }, + "fullyImplemented": true, + "id": 1693, + "linearizedBaseContracts": [ + 1693 + ], + "name": "Context", + "nameLocation": "642:7:10", + "nodeType": "ContractDefinition", + "nodes": [ + { + "body": { + "id": 1674, + "nodeType": "Block", + "src": "718:34:10", + "statements": [ + { + "expression": { + "expression": { + "id": 1671, + "name": "msg", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": -15, + "src": "735:3:10", + "typeDescriptions": { + "typeIdentifier": "t_magic_message", + "typeString": "msg" + } + }, + "id": 1672, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberLocation": "739:6:10", + "memberName": "sender", + "nodeType": "MemberAccess", + "src": "735:10:10", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "functionReturnParameters": 1670, + "id": 1673, + "nodeType": "Return", + "src": "728:17:10" + } + ] + }, + "id": 1675, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "_msgSender", + "nameLocation": "665:10:10", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 1667, + "nodeType": "ParameterList", + "parameters": [], + "src": "675:2:10" + }, + "returnParameters": { + "id": 1670, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 1669, + "mutability": "mutable", + "name": "", + "nameLocation": "-1:-1:-1", + "nodeType": "VariableDeclaration", + "scope": 1675, + "src": "709:7:10", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 1668, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "709:7:10", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + } + ], + "src": "708:9:10" + }, + "scope": 1693, + "src": "656:96:10", + "stateMutability": "view", + "virtual": true, + "visibility": "internal" + }, + { + "body": { + "id": 1683, + "nodeType": "Block", + "src": "825:32:10", + "statements": [ + { + "expression": { + "expression": { + "id": 1680, + "name": "msg", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": -15, + "src": "842:3:10", + "typeDescriptions": { + "typeIdentifier": "t_magic_message", + "typeString": "msg" + } + }, + "id": 1681, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberLocation": "846:4:10", + "memberName": "data", + "nodeType": "MemberAccess", + "src": "842:8:10", + "typeDescriptions": { + "typeIdentifier": "t_bytes_calldata_ptr", + "typeString": "bytes calldata" + } + }, + "functionReturnParameters": 1679, + "id": 1682, + "nodeType": "Return", + "src": "835:15:10" + } + ] + }, + "id": 1684, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "_msgData", + "nameLocation": "767:8:10", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 1676, + "nodeType": "ParameterList", + "parameters": [], + "src": "775:2:10" + }, + "returnParameters": { + "id": 1679, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 1678, + "mutability": "mutable", + "name": "", + "nameLocation": "-1:-1:-1", + "nodeType": "VariableDeclaration", + "scope": 1684, + "src": "809:14:10", + "stateVariable": false, + "storageLocation": "calldata", + "typeDescriptions": { + "typeIdentifier": "t_bytes_calldata_ptr", + "typeString": "bytes" + }, + "typeName": { + "id": 1677, + "name": "bytes", + "nodeType": "ElementaryTypeName", + "src": "809:5:10", + "typeDescriptions": { + "typeIdentifier": "t_bytes_storage_ptr", + "typeString": "bytes" + } + }, + "visibility": "internal" + } + ], + "src": "808:16:10" + }, + "scope": 1693, + "src": "758:99:10", + "stateMutability": "view", + "virtual": true, + "visibility": "internal" + }, + { + "body": { + "id": 1691, + "nodeType": "Block", + "src": "935:25:10", + "statements": [ + { + "expression": { + "hexValue": "30", + "id": 1689, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "952:1:10", + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + }, + "functionReturnParameters": 1688, + "id": 1690, + "nodeType": "Return", + "src": "945:8:10" + } + ] + }, + "id": 1692, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "_contextSuffixLength", + "nameLocation": "872:20:10", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 1685, + "nodeType": "ParameterList", + "parameters": [], + "src": "892:2:10" + }, + "returnParameters": { + "id": 1688, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 1687, + "mutability": "mutable", + "name": "", + "nameLocation": "-1:-1:-1", + "nodeType": "VariableDeclaration", + "scope": 1692, + "src": "926:7:10", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 1686, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "926:7:10", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "src": "925:9:10" + }, + "scope": 1693, + "src": "863:97:10", + "stateMutability": "view", + "virtual": true, + "visibility": "internal" + } + ], + "scope": 1694, + "src": "624:338:10", + "usedErrors": [], + "usedEvents": [] + } + ], + "src": "101:862:10" + }, + "id": 10 + }, + "@openzeppelin/contracts/utils/Errors.sol": { + "ast": { + "absolutePath": "@openzeppelin/contracts/utils/Errors.sol", + "exportedSymbols": { + "Errors": [ + 1715 + ] + }, + "id": 1716, + "license": "MIT", + "nodeType": "SourceUnit", + "nodes": [ + { + "id": 1695, + "literals": [ + "solidity", + "^", + "0.8", + ".20" + ], + "nodeType": "PragmaDirective", + "src": "100:24:11" + }, + { + "abstract": false, + "baseContracts": [], + "canonicalName": "Errors", + "contractDependencies": [], + "contractKind": "library", + "documentation": { + "id": 1696, + "nodeType": "StructuredDocumentation", + "src": "126:284:11", + "text": " @dev Collection of common custom errors used in multiple contracts\n IMPORTANT: Backwards compatibility is not guaranteed in future versions of the library.\n It is recommended to avoid relying on the error API for critical functionality.\n _Available since v5.1._" + }, + "fullyImplemented": true, + "id": 1715, + "linearizedBaseContracts": [ + 1715 + ], + "name": "Errors", + "nameLocation": "419:6:11", + "nodeType": "ContractDefinition", + "nodes": [ + { + "documentation": { + "id": 1697, + "nodeType": "StructuredDocumentation", + "src": "432:94:11", + "text": " @dev The ETH balance of the account is not enough to perform the operation." + }, + "errorSelector": "cf479181", + "id": 1703, + "name": "InsufficientBalance", + "nameLocation": "537:19:11", + "nodeType": "ErrorDefinition", + "parameters": { + "id": 1702, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 1699, + "mutability": "mutable", + "name": "balance", + "nameLocation": "565:7:11", + "nodeType": "VariableDeclaration", + "scope": 1703, + "src": "557:15:11", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 1698, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "557:7:11", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 1701, + "mutability": "mutable", + "name": "needed", + "nameLocation": "582:6:11", + "nodeType": "VariableDeclaration", + "scope": 1703, + "src": "574:14:11", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 1700, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "574:7:11", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "src": "556:33:11" + }, + "src": "531:59:11" + }, + { + "documentation": { + "id": 1704, + "nodeType": "StructuredDocumentation", + "src": "596:89:11", + "text": " @dev A call to an address target failed. The target may have reverted." + }, + "errorSelector": "d6bda275", + "id": 1706, + "name": "FailedCall", + "nameLocation": "696:10:11", + "nodeType": "ErrorDefinition", + "parameters": { + "id": 1705, + "nodeType": "ParameterList", + "parameters": [], + "src": "706:2:11" + }, + "src": "690:19:11" + }, + { + "documentation": { + "id": 1707, + "nodeType": "StructuredDocumentation", + "src": "715:46:11", + "text": " @dev The deployment failed." + }, + "errorSelector": "b06ebf3d", + "id": 1709, + "name": "FailedDeployment", + "nameLocation": "772:16:11", + "nodeType": "ErrorDefinition", + "parameters": { + "id": 1708, + "nodeType": "ParameterList", + "parameters": [], + "src": "788:2:11" + }, + "src": "766:25:11" + }, + { + "documentation": { + "id": 1710, + "nodeType": "StructuredDocumentation", + "src": "797:58:11", + "text": " @dev A necessary precompile is missing." + }, + "errorSelector": "42b01bce", + "id": 1714, + "name": "MissingPrecompile", + "nameLocation": "866:17:11", + "nodeType": "ErrorDefinition", + "parameters": { + "id": 1713, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 1712, + "mutability": "mutable", + "name": "", + "nameLocation": "-1:-1:-1", + "nodeType": "VariableDeclaration", + "scope": 1714, + "src": "884:7:11", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 1711, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "884:7:11", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + } + ], + "src": "883:9:11" + }, + "src": "860:33:11" + } + ], + "scope": 1716, + "src": "411:484:11", + "usedErrors": [ + 1703, + 1706, + 1709, + 1714 + ], + "usedEvents": [] + } + ], + "src": "100:796:11" + }, + "id": 11 + }, + "@openzeppelin/contracts/utils/Pausable.sol": { + "ast": { + "absolutePath": "@openzeppelin/contracts/utils/Pausable.sol", + "exportedSymbols": { + "Context": [ + 1693 + ], + "Pausable": [ + 1832 + ] + }, + "id": 1833, + "license": "MIT", + "nodeType": "SourceUnit", + "nodes": [ + { + "id": 1717, + "literals": [ + "solidity", + "^", + "0.8", + ".20" + ], + "nodeType": "PragmaDirective", + "src": "102:24:12" + }, + { + "absolutePath": "@openzeppelin/contracts/utils/Context.sol", + "file": "../utils/Context.sol", + "id": 1719, + "nameLocation": "-1:-1:-1", + "nodeType": "ImportDirective", + "scope": 1833, + "sourceUnit": 1694, + "src": "128:45:12", + "symbolAliases": [ + { + "foreign": { + "id": 1718, + "name": "Context", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1693, + "src": "136:7:12", + "typeDescriptions": {} + }, + "nameLocation": "-1:-1:-1" + } + ], + "unitAlias": "" + }, + { + "abstract": true, + "baseContracts": [ + { + "baseName": { + "id": 1721, + "name": "Context", + "nameLocations": [ + "645:7:12" + ], + "nodeType": "IdentifierPath", + "referencedDeclaration": 1693, + "src": "645:7:12" + }, + "id": 1722, + "nodeType": "InheritanceSpecifier", + "src": "645:7:12" + } + ], + "canonicalName": "Pausable", + "contractDependencies": [], + "contractKind": "contract", + "documentation": { + "id": 1720, + "nodeType": "StructuredDocumentation", + "src": "175:439:12", + "text": " @dev Contract module which allows children to implement an emergency stop\n mechanism that can be triggered by an authorized account.\n This module is used through inheritance. It will make available the\n modifiers `whenNotPaused` and `whenPaused`, which can be applied to\n the functions of your contract. Note that they will not be pausable by\n simply including this module, only once the modifiers are put in place." + }, + "fullyImplemented": true, + "id": 1832, + "linearizedBaseContracts": [ + 1832, + 1693 + ], + "name": "Pausable", + "nameLocation": "633:8:12", + "nodeType": "ContractDefinition", + "nodes": [ + { + "constant": false, + "id": 1724, + "mutability": "mutable", + "name": "_paused", + "nameLocation": "672:7:12", + "nodeType": "VariableDeclaration", + "scope": 1832, + "src": "659:20:12", + "stateVariable": true, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "typeName": { + "id": 1723, + "name": "bool", + "nodeType": "ElementaryTypeName", + "src": "659:4:12", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "visibility": "private" + }, + { + "anonymous": false, + "documentation": { + "id": 1725, + "nodeType": "StructuredDocumentation", + "src": "686:73:12", + "text": " @dev Emitted when the pause is triggered by `account`." + }, + "eventSelector": "62e78cea01bee320cd4e420270b5ea74000d11b0c9f74754ebdbfc544b05a258", + "id": 1729, + "name": "Paused", + "nameLocation": "770:6:12", + "nodeType": "EventDefinition", + "parameters": { + "id": 1728, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 1727, + "indexed": false, + "mutability": "mutable", + "name": "account", + "nameLocation": "785:7:12", + "nodeType": "VariableDeclaration", + "scope": 1729, + "src": "777:15:12", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 1726, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "777:7:12", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + } + ], + "src": "776:17:12" + }, + "src": "764:30:12" + }, + { + "anonymous": false, + "documentation": { + "id": 1730, + "nodeType": "StructuredDocumentation", + "src": "800:70:12", + "text": " @dev Emitted when the pause is lifted by `account`." + }, + "eventSelector": "5db9ee0a495bf2e6ff9c91a7834c1ba4fdd244a5e8aa4e537bd38aeae4b073aa", + "id": 1734, + "name": "Unpaused", + "nameLocation": "881:8:12", + "nodeType": "EventDefinition", + "parameters": { + "id": 1733, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 1732, + "indexed": false, + "mutability": "mutable", + "name": "account", + "nameLocation": "898:7:12", + "nodeType": "VariableDeclaration", + "scope": 1734, + "src": "890:15:12", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 1731, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "890:7:12", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + } + ], + "src": "889:17:12" + }, + "src": "875:32:12" + }, + { + "documentation": { + "id": 1735, + "nodeType": "StructuredDocumentation", + "src": "913:76:12", + "text": " @dev The operation failed because the contract is paused." + }, + "errorSelector": "d93c0665", + "id": 1737, + "name": "EnforcedPause", + "nameLocation": "1000:13:12", + "nodeType": "ErrorDefinition", + "parameters": { + "id": 1736, + "nodeType": "ParameterList", + "parameters": [], + "src": "1013:2:12" + }, + "src": "994:22:12" + }, + { + "documentation": { + "id": 1738, + "nodeType": "StructuredDocumentation", + "src": "1022:80:12", + "text": " @dev The operation failed because the contract is not paused." + }, + "errorSelector": "8dfc202b", + "id": 1740, + "name": "ExpectedPause", + "nameLocation": "1113:13:12", + "nodeType": "ErrorDefinition", + "parameters": { + "id": 1739, + "nodeType": "ParameterList", + "parameters": [], + "src": "1126:2:12" + }, + "src": "1107:22:12" + }, + { + "body": { + "id": 1748, + "nodeType": "Block", + "src": "1221:32:12", + "statements": [ + { + "expression": { + "id": 1746, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "id": 1744, + "name": "_paused", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1724, + "src": "1231:7:12", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "hexValue": "66616c7365", + "id": 1745, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "bool", + "lValueRequested": false, + "nodeType": "Literal", + "src": "1241:5:12", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "value": "false" + }, + "src": "1231:15:12", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "id": 1747, + "nodeType": "ExpressionStatement", + "src": "1231:15:12" + } + ] + }, + "documentation": { + "id": 1741, + "nodeType": "StructuredDocumentation", + "src": "1135:67:12", + "text": " @dev Initializes the contract in unpaused state." + }, + "id": 1749, + "implemented": true, + "kind": "constructor", + "modifiers": [], + "name": "", + "nameLocation": "-1:-1:-1", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 1742, + "nodeType": "ParameterList", + "parameters": [], + "src": "1218:2:12" + }, + "returnParameters": { + "id": 1743, + "nodeType": "ParameterList", + "parameters": [], + "src": "1221:0:12" + }, + "scope": 1832, + "src": "1207:46:12", + "stateMutability": "nonpayable", + "virtual": false, + "visibility": "internal" + }, + { + "body": { + "id": 1756, + "nodeType": "Block", + "src": "1464:47:12", + "statements": [ + { + "expression": { + "arguments": [], + "expression": { + "argumentTypes": [], + "id": 1752, + "name": "_requireNotPaused", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1786, + "src": "1474:17:12", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_view$__$returns$__$", + "typeString": "function () view" + } + }, + "id": 1753, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "1474:19:12", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 1754, + "nodeType": "ExpressionStatement", + "src": "1474:19:12" + }, + { + "id": 1755, + "nodeType": "PlaceholderStatement", + "src": "1503:1:12" + } + ] + }, + "documentation": { + "id": 1750, + "nodeType": "StructuredDocumentation", + "src": "1259:175:12", + "text": " @dev Modifier to make a function callable only when the contract is not paused.\n Requirements:\n - The contract must not be paused." + }, + "id": 1757, + "name": "whenNotPaused", + "nameLocation": "1448:13:12", + "nodeType": "ModifierDefinition", + "parameters": { + "id": 1751, + "nodeType": "ParameterList", + "parameters": [], + "src": "1461:2:12" + }, + "src": "1439:72:12", + "virtual": false, + "visibility": "internal" + }, + { + "body": { + "id": 1764, + "nodeType": "Block", + "src": "1711:44:12", + "statements": [ + { + "expression": { + "arguments": [], + "expression": { + "argumentTypes": [], + "id": 1760, + "name": "_requirePaused", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1799, + "src": "1721:14:12", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_view$__$returns$__$", + "typeString": "function () view" + } + }, + "id": 1761, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "1721:16:12", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 1762, + "nodeType": "ExpressionStatement", + "src": "1721:16:12" + }, + { + "id": 1763, + "nodeType": "PlaceholderStatement", + "src": "1747:1:12" + } + ] + }, + "documentation": { + "id": 1758, + "nodeType": "StructuredDocumentation", + "src": "1517:167:12", + "text": " @dev Modifier to make a function callable only when the contract is paused.\n Requirements:\n - The contract must be paused." + }, + "id": 1765, + "name": "whenPaused", + "nameLocation": "1698:10:12", + "nodeType": "ModifierDefinition", + "parameters": { + "id": 1759, + "nodeType": "ParameterList", + "parameters": [], + "src": "1708:2:12" + }, + "src": "1689:66:12", + "virtual": false, + "visibility": "internal" + }, + { + "body": { + "id": 1773, + "nodeType": "Block", + "src": "1903:31:12", + "statements": [ + { + "expression": { + "id": 1771, + "name": "_paused", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1724, + "src": "1920:7:12", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "functionReturnParameters": 1770, + "id": 1772, + "nodeType": "Return", + "src": "1913:14:12" + } + ] + }, + "documentation": { + "id": 1766, + "nodeType": "StructuredDocumentation", + "src": "1761:84:12", + "text": " @dev Returns true if the contract is paused, and false otherwise." + }, + "functionSelector": "5c975abb", + "id": 1774, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "paused", + "nameLocation": "1859:6:12", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 1767, + "nodeType": "ParameterList", + "parameters": [], + "src": "1865:2:12" + }, + "returnParameters": { + "id": 1770, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 1769, + "mutability": "mutable", + "name": "", + "nameLocation": "-1:-1:-1", + "nodeType": "VariableDeclaration", + "scope": 1774, + "src": "1897:4:12", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "typeName": { + "id": 1768, + "name": "bool", + "nodeType": "ElementaryTypeName", + "src": "1897:4:12", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "visibility": "internal" + } + ], + "src": "1896:6:12" + }, + "scope": 1832, + "src": "1850:84:12", + "stateMutability": "view", + "virtual": true, + "visibility": "public" + }, + { + "body": { + "id": 1785, + "nodeType": "Block", + "src": "2053:77:12", + "statements": [ + { + "condition": { + "arguments": [], + "expression": { + "argumentTypes": [], + "id": 1778, + "name": "paused", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1774, + "src": "2067:6:12", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_view$__$returns$_t_bool_$", + "typeString": "function () view returns (bool)" + } + }, + "id": 1779, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "2067:8:12", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "id": 1784, + "nodeType": "IfStatement", + "src": "2063:61:12", + "trueBody": { + "id": 1783, + "nodeType": "Block", + "src": "2077:47:12", + "statements": [ + { + "errorCall": { + "arguments": [], + "expression": { + "argumentTypes": [], + "id": 1780, + "name": "EnforcedPause", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1737, + "src": "2098:13:12", + "typeDescriptions": { + "typeIdentifier": "t_function_error_pure$__$returns$__$", + "typeString": "function () pure" + } + }, + "id": 1781, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "2098:15:12", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 1782, + "nodeType": "RevertStatement", + "src": "2091:22:12" + } + ] + } + } + ] + }, + "documentation": { + "id": 1775, + "nodeType": "StructuredDocumentation", + "src": "1940:57:12", + "text": " @dev Throws if the contract is paused." + }, + "id": 1786, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "_requireNotPaused", + "nameLocation": "2011:17:12", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 1776, + "nodeType": "ParameterList", + "parameters": [], + "src": "2028:2:12" + }, + "returnParameters": { + "id": 1777, + "nodeType": "ParameterList", + "parameters": [], + "src": "2053:0:12" + }, + "scope": 1832, + "src": "2002:128:12", + "stateMutability": "view", + "virtual": true, + "visibility": "internal" + }, + { + "body": { + "id": 1798, + "nodeType": "Block", + "src": "2250:78:12", + "statements": [ + { + "condition": { + "id": 1792, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "nodeType": "UnaryOperation", + "operator": "!", + "prefix": true, + "src": "2264:9:12", + "subExpression": { + "arguments": [], + "expression": { + "argumentTypes": [], + "id": 1790, + "name": "paused", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1774, + "src": "2265:6:12", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_view$__$returns$_t_bool_$", + "typeString": "function () view returns (bool)" + } + }, + "id": 1791, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "2265:8:12", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "id": 1797, + "nodeType": "IfStatement", + "src": "2260:62:12", + "trueBody": { + "id": 1796, + "nodeType": "Block", + "src": "2275:47:12", + "statements": [ + { + "errorCall": { + "arguments": [], + "expression": { + "argumentTypes": [], + "id": 1793, + "name": "ExpectedPause", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1740, + "src": "2296:13:12", + "typeDescriptions": { + "typeIdentifier": "t_function_error_pure$__$returns$__$", + "typeString": "function () pure" + } + }, + "id": 1794, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "2296:15:12", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 1795, + "nodeType": "RevertStatement", + "src": "2289:22:12" + } + ] + } + } + ] + }, + "documentation": { + "id": 1787, + "nodeType": "StructuredDocumentation", + "src": "2136:61:12", + "text": " @dev Throws if the contract is not paused." + }, + "id": 1799, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "_requirePaused", + "nameLocation": "2211:14:12", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 1788, + "nodeType": "ParameterList", + "parameters": [], + "src": "2225:2:12" + }, + "returnParameters": { + "id": 1789, + "nodeType": "ParameterList", + "parameters": [], + "src": "2250:0:12" + }, + "scope": 1832, + "src": "2202:126:12", + "stateMutability": "view", + "virtual": true, + "visibility": "internal" + }, + { + "body": { + "id": 1814, + "nodeType": "Block", + "src": "2512:66:12", + "statements": [ + { + "expression": { + "id": 1807, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "id": 1805, + "name": "_paused", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1724, + "src": "2522:7:12", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "hexValue": "74727565", + "id": 1806, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "bool", + "lValueRequested": false, + "nodeType": "Literal", + "src": "2532:4:12", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "value": "true" + }, + "src": "2522:14:12", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "id": 1808, + "nodeType": "ExpressionStatement", + "src": "2522:14:12" + }, + { + "eventCall": { + "arguments": [ + { + "arguments": [], + "expression": { + "argumentTypes": [], + "id": 1810, + "name": "_msgSender", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1675, + "src": "2558:10:12", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_view$__$returns$_t_address_$", + "typeString": "function () view returns (address)" + } + }, + "id": 1811, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "2558:12:12", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + } + ], + "id": 1809, + "name": "Paused", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1729, + "src": "2551:6:12", + "typeDescriptions": { + "typeIdentifier": "t_function_event_nonpayable$_t_address_$returns$__$", + "typeString": "function (address)" + } + }, + "id": 1812, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "2551:20:12", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 1813, + "nodeType": "EmitStatement", + "src": "2546:25:12" + } + ] + }, + "documentation": { + "id": 1800, + "nodeType": "StructuredDocumentation", + "src": "2334:124:12", + "text": " @dev Triggers stopped state.\n Requirements:\n - The contract must not be paused." + }, + "id": 1815, + "implemented": true, + "kind": "function", + "modifiers": [ + { + "id": 1803, + "kind": "modifierInvocation", + "modifierName": { + "id": 1802, + "name": "whenNotPaused", + "nameLocations": [ + "2498:13:12" + ], + "nodeType": "IdentifierPath", + "referencedDeclaration": 1757, + "src": "2498:13:12" + }, + "nodeType": "ModifierInvocation", + "src": "2498:13:12" + } + ], + "name": "_pause", + "nameLocation": "2472:6:12", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 1801, + "nodeType": "ParameterList", + "parameters": [], + "src": "2478:2:12" + }, + "returnParameters": { + "id": 1804, + "nodeType": "ParameterList", + "parameters": [], + "src": "2512:0:12" + }, + "scope": 1832, + "src": "2463:115:12", + "stateMutability": "nonpayable", + "virtual": true, + "visibility": "internal" + }, + { + "body": { + "id": 1830, + "nodeType": "Block", + "src": "2758:69:12", + "statements": [ + { + "expression": { + "id": 1823, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "id": 1821, + "name": "_paused", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1724, + "src": "2768:7:12", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "hexValue": "66616c7365", + "id": 1822, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "bool", + "lValueRequested": false, + "nodeType": "Literal", + "src": "2778:5:12", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "value": "false" + }, + "src": "2768:15:12", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "id": 1824, + "nodeType": "ExpressionStatement", + "src": "2768:15:12" + }, + { + "eventCall": { + "arguments": [ + { + "arguments": [], + "expression": { + "argumentTypes": [], + "id": 1826, + "name": "_msgSender", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1675, + "src": "2807:10:12", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_view$__$returns$_t_address_$", + "typeString": "function () view returns (address)" + } + }, + "id": 1827, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "2807:12:12", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + } + ], + "id": 1825, + "name": "Unpaused", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1734, + "src": "2798:8:12", + "typeDescriptions": { + "typeIdentifier": "t_function_event_nonpayable$_t_address_$returns$__$", + "typeString": "function (address)" + } + }, + "id": 1828, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "2798:22:12", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 1829, + "nodeType": "EmitStatement", + "src": "2793:27:12" + } + ] + }, + "documentation": { + "id": 1816, + "nodeType": "StructuredDocumentation", + "src": "2584:121:12", + "text": " @dev Returns to normal state.\n Requirements:\n - The contract must be paused." + }, + "id": 1831, + "implemented": true, + "kind": "function", + "modifiers": [ + { + "id": 1819, + "kind": "modifierInvocation", + "modifierName": { + "id": 1818, + "name": "whenPaused", + "nameLocations": [ + "2747:10:12" + ], + "nodeType": "IdentifierPath", + "referencedDeclaration": 1765, + "src": "2747:10:12" + }, + "nodeType": "ModifierInvocation", + "src": "2747:10:12" + } + ], + "name": "_unpause", + "nameLocation": "2719:8:12", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 1817, + "nodeType": "ParameterList", + "parameters": [], + "src": "2727:2:12" + }, + "returnParameters": { + "id": 1820, + "nodeType": "ParameterList", + "parameters": [], + "src": "2758:0:12" + }, + "scope": 1832, + "src": "2710:117:12", + "stateMutability": "nonpayable", + "virtual": true, + "visibility": "internal" + } + ], + "scope": 1833, + "src": "615:2214:12", + "usedErrors": [ + 1737, + 1740 + ], + "usedEvents": [ + 1729, + 1734 + ] + } + ], + "src": "102:2728:12" + }, + "id": 12 + }, + "@openzeppelin/contracts/utils/ReentrancyGuard.sol": { + "ast": { + "absolutePath": "@openzeppelin/contracts/utils/ReentrancyGuard.sol", + "exportedSymbols": { + "ReentrancyGuard": [ + 1901 + ] + }, + "id": 1902, + "license": "MIT", + "nodeType": "SourceUnit", + "nodes": [ + { + "id": 1834, + "literals": [ + "solidity", + "^", + "0.8", + ".20" + ], + "nodeType": "PragmaDirective", + "src": "109:24:13" + }, + { + "abstract": true, + "baseContracts": [], + "canonicalName": "ReentrancyGuard", + "contractDependencies": [], + "contractKind": "contract", + "documentation": { + "id": 1835, + "nodeType": "StructuredDocumentation", + "src": "135:894:13", + "text": " @dev Contract module that helps prevent reentrant calls to a function.\n Inheriting from `ReentrancyGuard` will make the {nonReentrant} modifier\n available, which can be applied to functions to make sure there are no nested\n (reentrant) calls to them.\n Note that because there is a single `nonReentrant` guard, functions marked as\n `nonReentrant` may not call one another. This can be worked around by making\n those functions `private`, and then adding `external` `nonReentrant` entry\n points to them.\n TIP: If EIP-1153 (transient storage) is available on the chain you're deploying at,\n consider using {ReentrancyGuardTransient} instead.\n TIP: If you would like to learn more about reentrancy and alternative ways\n to protect against it, check out our blog post\n https://blog.openzeppelin.com/reentrancy-after-istanbul/[Reentrancy After Istanbul]." + }, + "fullyImplemented": true, + "id": 1901, + "linearizedBaseContracts": [ + 1901 + ], + "name": "ReentrancyGuard", + "nameLocation": "1048:15:13", + "nodeType": "ContractDefinition", + "nodes": [ + { + "constant": true, + "id": 1838, + "mutability": "constant", + "name": "NOT_ENTERED", + "nameLocation": "1843:11:13", + "nodeType": "VariableDeclaration", + "scope": 1901, + "src": "1818:40:13", + "stateVariable": true, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 1836, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "1818:7:13", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": { + "hexValue": "31", + "id": 1837, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "1857:1:13", + "typeDescriptions": { + "typeIdentifier": "t_rational_1_by_1", + "typeString": "int_const 1" + }, + "value": "1" + }, + "visibility": "private" + }, + { + "constant": true, + "id": 1841, + "mutability": "constant", + "name": "ENTERED", + "nameLocation": "1889:7:13", + "nodeType": "VariableDeclaration", + "scope": 1901, + "src": "1864:36:13", + "stateVariable": true, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 1839, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "1864:7:13", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": { + "hexValue": "32", + "id": 1840, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "1899:1:13", + "typeDescriptions": { + "typeIdentifier": "t_rational_2_by_1", + "typeString": "int_const 2" + }, + "value": "2" + }, + "visibility": "private" + }, + { + "constant": false, + "id": 1843, + "mutability": "mutable", + "name": "_status", + "nameLocation": "1923:7:13", + "nodeType": "VariableDeclaration", + "scope": 1901, + "src": "1907:23:13", + "stateVariable": true, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 1842, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "1907:7:13", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "private" + }, + { + "documentation": { + "id": 1844, + "nodeType": "StructuredDocumentation", + "src": "1937:52:13", + "text": " @dev Unauthorized reentrant call." + }, + "errorSelector": "3ee5aeb5", + "id": 1846, + "name": "ReentrancyGuardReentrantCall", + "nameLocation": "2000:28:13", + "nodeType": "ErrorDefinition", + "parameters": { + "id": 1845, + "nodeType": "ParameterList", + "parameters": [], + "src": "2028:2:13" + }, + "src": "1994:37:13" + }, + { + "body": { + "id": 1853, + "nodeType": "Block", + "src": "2051:38:13", + "statements": [ + { + "expression": { + "id": 1851, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "id": 1849, + "name": "_status", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1843, + "src": "2061:7:13", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "id": 1850, + "name": "NOT_ENTERED", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1838, + "src": "2071:11:13", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "2061:21:13", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 1852, + "nodeType": "ExpressionStatement", + "src": "2061:21:13" + } + ] + }, + "id": 1854, + "implemented": true, + "kind": "constructor", + "modifiers": [], + "name": "", + "nameLocation": "-1:-1:-1", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 1847, + "nodeType": "ParameterList", + "parameters": [], + "src": "2048:2:13" + }, + "returnParameters": { + "id": 1848, + "nodeType": "ParameterList", + "parameters": [], + "src": "2051:0:13" + }, + "scope": 1901, + "src": "2037:52:13", + "stateMutability": "nonpayable", + "virtual": false, + "visibility": "internal" + }, + { + "body": { + "id": 1864, + "nodeType": "Block", + "src": "2490:79:13", + "statements": [ + { + "expression": { + "arguments": [], + "expression": { + "argumentTypes": [], + "id": 1857, + "name": "_nonReentrantBefore", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1881, + "src": "2500:19:13", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_nonpayable$__$returns$__$", + "typeString": "function ()" + } + }, + "id": 1858, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "2500:21:13", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 1859, + "nodeType": "ExpressionStatement", + "src": "2500:21:13" + }, + { + "id": 1860, + "nodeType": "PlaceholderStatement", + "src": "2531:1:13" + }, + { + "expression": { + "arguments": [], + "expression": { + "argumentTypes": [], + "id": 1861, + "name": "_nonReentrantAfter", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1889, + "src": "2542:18:13", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_nonpayable$__$returns$__$", + "typeString": "function ()" + } + }, + "id": 1862, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "2542:20:13", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 1863, + "nodeType": "ExpressionStatement", + "src": "2542:20:13" + } + ] + }, + "documentation": { + "id": 1855, + "nodeType": "StructuredDocumentation", + "src": "2095:366:13", + "text": " @dev Prevents a contract from calling itself, directly or indirectly.\n Calling a `nonReentrant` function from another `nonReentrant`\n function is not supported. It is possible to prevent this from happening\n by making the `nonReentrant` function external, and making it call a\n `private` function that does the actual work." + }, + "id": 1865, + "name": "nonReentrant", + "nameLocation": "2475:12:13", + "nodeType": "ModifierDefinition", + "parameters": { + "id": 1856, + "nodeType": "ParameterList", + "parameters": [], + "src": "2487:2:13" + }, + "src": "2466:103:13", + "virtual": false, + "visibility": "internal" + }, + { + "body": { + "id": 1880, + "nodeType": "Block", + "src": "2614:268:13", + "statements": [ + { + "condition": { + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 1870, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "id": 1868, + "name": "_status", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1843, + "src": "2702:7:13", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "==", + "rightExpression": { + "id": 1869, + "name": "ENTERED", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1841, + "src": "2713:7:13", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "2702:18:13", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "id": 1875, + "nodeType": "IfStatement", + "src": "2698:86:13", + "trueBody": { + "id": 1874, + "nodeType": "Block", + "src": "2722:62:13", + "statements": [ + { + "errorCall": { + "arguments": [], + "expression": { + "argumentTypes": [], + "id": 1871, + "name": "ReentrancyGuardReentrantCall", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1846, + "src": "2743:28:13", + "typeDescriptions": { + "typeIdentifier": "t_function_error_pure$__$returns$__$", + "typeString": "function () pure" + } + }, + "id": 1872, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "2743:30:13", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 1873, + "nodeType": "RevertStatement", + "src": "2736:37:13" + } + ] + } + }, + { + "expression": { + "id": 1878, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "id": 1876, + "name": "_status", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1843, + "src": "2858:7:13", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "id": 1877, + "name": "ENTERED", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1841, + "src": "2868:7:13", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "2858:17:13", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 1879, + "nodeType": "ExpressionStatement", + "src": "2858:17:13" + } + ] + }, + "id": 1881, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "_nonReentrantBefore", + "nameLocation": "2584:19:13", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 1866, + "nodeType": "ParameterList", + "parameters": [], + "src": "2603:2:13" + }, + "returnParameters": { + "id": 1867, + "nodeType": "ParameterList", + "parameters": [], + "src": "2614:0:13" + }, + "scope": 1901, + "src": "2575:307:13", + "stateMutability": "nonpayable", + "virtual": false, + "visibility": "private" + }, + { + "body": { + "id": 1888, + "nodeType": "Block", + "src": "2926:170:13", + "statements": [ + { + "expression": { + "id": 1886, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "id": 1884, + "name": "_status", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1843, + "src": "3068:7:13", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "id": 1885, + "name": "NOT_ENTERED", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1838, + "src": "3078:11:13", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "3068:21:13", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 1887, + "nodeType": "ExpressionStatement", + "src": "3068:21:13" + } + ] + }, + "id": 1889, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "_nonReentrantAfter", + "nameLocation": "2897:18:13", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 1882, + "nodeType": "ParameterList", + "parameters": [], + "src": "2915:2:13" + }, + "returnParameters": { + "id": 1883, + "nodeType": "ParameterList", + "parameters": [], + "src": "2926:0:13" + }, + "scope": 1901, + "src": "2888:208:13", + "stateMutability": "nonpayable", + "virtual": false, + "visibility": "private" + }, + { + "body": { + "id": 1899, + "nodeType": "Block", + "src": "3339:42:13", + "statements": [ + { + "expression": { + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 1897, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "id": 1895, + "name": "_status", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1843, + "src": "3356:7:13", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "==", + "rightExpression": { + "id": 1896, + "name": "ENTERED", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1841, + "src": "3367:7:13", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "3356:18:13", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "functionReturnParameters": 1894, + "id": 1898, + "nodeType": "Return", + "src": "3349:25:13" + } + ] + }, + "documentation": { + "id": 1890, + "nodeType": "StructuredDocumentation", + "src": "3102:168:13", + "text": " @dev Returns true if the reentrancy guard is currently set to \"entered\", which indicates there is a\n `nonReentrant` function in the call stack." + }, + "id": 1900, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "_reentrancyGuardEntered", + "nameLocation": "3284:23:13", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 1891, + "nodeType": "ParameterList", + "parameters": [], + "src": "3307:2:13" + }, + "returnParameters": { + "id": 1894, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 1893, + "mutability": "mutable", + "name": "", + "nameLocation": "-1:-1:-1", + "nodeType": "VariableDeclaration", + "scope": 1900, + "src": "3333:4:13", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "typeName": { + "id": 1892, + "name": "bool", + "nodeType": "ElementaryTypeName", + "src": "3333:4:13", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "visibility": "internal" + } + ], + "src": "3332:6:13" + }, + "scope": 1901, + "src": "3275:106:13", + "stateMutability": "view", + "virtual": false, + "visibility": "internal" + } + ], + "scope": 1902, + "src": "1030:2353:13", + "usedErrors": [ + 1846 + ], + "usedEvents": [] + } + ], + "src": "109:3275:13" + }, + "id": 13 + }, + "@openzeppelin/contracts/utils/introspection/IERC165.sol": { + "ast": { + "absolutePath": "@openzeppelin/contracts/utils/introspection/IERC165.sol", + "exportedSymbols": { + "IERC165": [ + 1913 + ] + }, + "id": 1914, + "license": "MIT", + "nodeType": "SourceUnit", + "nodes": [ + { + "id": 1903, + "literals": [ + "solidity", + "^", + "0.8", + ".20" + ], + "nodeType": "PragmaDirective", + "src": "115:24:14" + }, + { + "abstract": false, + "baseContracts": [], + "canonicalName": "IERC165", + "contractDependencies": [], + "contractKind": "interface", + "documentation": { + "id": 1904, + "nodeType": "StructuredDocumentation", + "src": "141:280:14", + "text": " @dev Interface of the ERC-165 standard, as defined in the\n https://eips.ethereum.org/EIPS/eip-165[ERC].\n Implementers can declare support of contract interfaces, which can then be\n queried by others ({ERC165Checker}).\n For an implementation, see {ERC165}." + }, + "fullyImplemented": false, + "id": 1913, + "linearizedBaseContracts": [ + 1913 + ], + "name": "IERC165", + "nameLocation": "432:7:14", + "nodeType": "ContractDefinition", + "nodes": [ + { + "documentation": { + "id": 1905, + "nodeType": "StructuredDocumentation", + "src": "446:340:14", + "text": " @dev Returns true if this contract implements the interface defined by\n `interfaceId`. See the corresponding\n https://eips.ethereum.org/EIPS/eip-165#how-interfaces-are-identified[ERC section]\n to learn more about how these ids are created.\n This function call must use less than 30 000 gas." + }, + "functionSelector": "01ffc9a7", + "id": 1912, + "implemented": false, + "kind": "function", + "modifiers": [], + "name": "supportsInterface", + "nameLocation": "800:17:14", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 1908, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 1907, + "mutability": "mutable", + "name": "interfaceId", + "nameLocation": "825:11:14", + "nodeType": "VariableDeclaration", + "scope": 1912, + "src": "818:18:14", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes4", + "typeString": "bytes4" + }, + "typeName": { + "id": 1906, + "name": "bytes4", + "nodeType": "ElementaryTypeName", + "src": "818:6:14", + "typeDescriptions": { + "typeIdentifier": "t_bytes4", + "typeString": "bytes4" + } + }, + "visibility": "internal" + } + ], + "src": "817:20:14" + }, + "returnParameters": { + "id": 1911, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 1910, + "mutability": "mutable", + "name": "", + "nameLocation": "-1:-1:-1", + "nodeType": "VariableDeclaration", + "scope": 1912, + "src": "861:4:14", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "typeName": { + "id": 1909, + "name": "bool", + "nodeType": "ElementaryTypeName", + "src": "861:4:14", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "visibility": "internal" + } + ], + "src": "860:6:14" + }, + "scope": 1913, + "src": "791:76:14", + "stateMutability": "view", + "virtual": false, + "visibility": "external" + } + ], + "scope": 1914, + "src": "422:447:14", + "usedErrors": [], + "usedEvents": [] + } + ], + "src": "115:755:14" + }, + "id": 14 + }, + "contracts/TokenVesting.sol": { + "ast": { + "absolutePath": "contracts/TokenVesting.sol", + "exportedSymbols": { + "Address": [ + 1663 + ], + "Context": [ + 1693 + ], + "IERC1363": [ + 229 + ], + "IERC20": [ + 967 + ], + "Ownable": [ + 147 + ], + "Pausable": [ + 1832 + ], + "ReentrancyGuard": [ + 1901 + ], + "SafeERC20": [ + 1404 + ], + "TokenVesting": [ + 2399 + ] + }, + "id": 2400, + "license": "MIT", + "nodeType": "SourceUnit", + "nodes": [ + { + "id": 1915, + "literals": [ + "solidity", + "^", + "0.8", + ".0" + ], + "nodeType": "PragmaDirective", + "src": "817:23:15" + }, + { + "absolutePath": "@openzeppelin/contracts/token/ERC20/IERC20.sol", + "file": "@openzeppelin/contracts/token/ERC20/IERC20.sol", + "id": 1916, + "nameLocation": "-1:-1:-1", + "nodeType": "ImportDirective", + "scope": 2400, + "sourceUnit": 968, + "src": "842:56:15", + "symbolAliases": [], + "unitAlias": "" + }, + { + "absolutePath": "@openzeppelin/contracts/token/ERC20/utils/SafeERC20.sol", + "file": "@openzeppelin/contracts/token/ERC20/utils/SafeERC20.sol", + "id": 1917, + "nameLocation": "-1:-1:-1", + "nodeType": "ImportDirective", + "scope": 2400, + "sourceUnit": 1405, + "src": "899:65:15", + "symbolAliases": [], + "unitAlias": "" + }, + { + "absolutePath": "@openzeppelin/contracts/access/Ownable.sol", + "file": "@openzeppelin/contracts/access/Ownable.sol", + "id": 1918, + "nameLocation": "-1:-1:-1", + "nodeType": "ImportDirective", + "scope": 2400, + "sourceUnit": 148, + "src": "965:52:15", + "symbolAliases": [], + "unitAlias": "" + }, + { + "absolutePath": "@openzeppelin/contracts/utils/Pausable.sol", + "file": "@openzeppelin/contracts/utils/Pausable.sol", + "id": 1919, + "nameLocation": "-1:-1:-1", + "nodeType": "ImportDirective", + "scope": 2400, + "sourceUnit": 1833, + "src": "1018:52:15", + "symbolAliases": [], + "unitAlias": "" + }, + { + "absolutePath": "@openzeppelin/contracts/utils/ReentrancyGuard.sol", + "file": "@openzeppelin/contracts/utils/ReentrancyGuard.sol", + "id": 1920, + "nameLocation": "-1:-1:-1", + "nodeType": "ImportDirective", + "scope": 2400, + "sourceUnit": 1902, + "src": "1071:59:15", + "symbolAliases": [], + "unitAlias": "" + }, + { + "abstract": false, + "baseContracts": [ + { + "arguments": [ + { + "expression": { + "id": 1922, + "name": "msg", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": -15, + "src": "1165:3:15", + "typeDescriptions": { + "typeIdentifier": "t_magic_message", + "typeString": "msg" + } + }, + "id": 1923, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberLocation": "1169:6:15", + "memberName": "sender", + "nodeType": "MemberAccess", + "src": "1165:10:15", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + } + ], + "baseName": { + "id": 1921, + "name": "Ownable", + "nameLocations": [ + "1157:7:15" + ], + "nodeType": "IdentifierPath", + "referencedDeclaration": 147, + "src": "1157:7:15" + }, + "id": 1924, + "nodeType": "InheritanceSpecifier", + "src": "1157:19:15" + }, + { + "baseName": { + "id": 1925, + "name": "Pausable", + "nameLocations": [ + "1178:8:15" + ], + "nodeType": "IdentifierPath", + "referencedDeclaration": 1832, + "src": "1178:8:15" + }, + "id": 1926, + "nodeType": "InheritanceSpecifier", + "src": "1178:8:15" + }, + { + "baseName": { + "id": 1927, + "name": "ReentrancyGuard", + "nameLocations": [ + "1188:15:15" + ], + "nodeType": "IdentifierPath", + "referencedDeclaration": 1901, + "src": "1188:15:15" + }, + "id": 1928, + "nodeType": "InheritanceSpecifier", + "src": "1188:15:15" + } + ], + "canonicalName": "TokenVesting", + "contractDependencies": [], + "contractKind": "contract", + "fullyImplemented": true, + "id": 2399, + "linearizedBaseContracts": [ + 2399, + 1901, + 1832, + 147, + 1693 + ], + "name": "TokenVesting", + "nameLocation": "1141:12:15", + "nodeType": "ContractDefinition", + "nodes": [ + { + "canonicalName": "TokenVesting.VestingSchedule", + "id": 1941, + "members": [ + { + "constant": false, + "id": 1930, + "mutability": "mutable", + "name": "totalAmount", + "nameLocation": "1303:11:15", + "nodeType": "VariableDeclaration", + "scope": 1941, + "src": "1295:19:15", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 1929, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "1295:7:15", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 1932, + "mutability": "mutable", + "name": "startTime", + "nameLocation": "1332:9:15", + "nodeType": "VariableDeclaration", + "scope": 1941, + "src": "1324:17:15", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 1931, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "1324:7:15", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 1934, + "mutability": "mutable", + "name": "cliffDuration", + "nameLocation": "1359:13:15", + "nodeType": "VariableDeclaration", + "scope": 1941, + "src": "1351:21:15", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 1933, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "1351:7:15", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 1936, + "mutability": "mutable", + "name": "vestingDuration", + "nameLocation": "1390:15:15", + "nodeType": "VariableDeclaration", + "scope": 1941, + "src": "1382:23:15", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 1935, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "1382:7:15", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 1938, + "mutability": "mutable", + "name": "amountClaimed", + "nameLocation": "1423:13:15", + "nodeType": "VariableDeclaration", + "scope": 1941, + "src": "1415:21:15", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 1937, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "1415:7:15", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 1940, + "mutability": "mutable", + "name": "revoked", + "nameLocation": "1451:7:15", + "nodeType": "VariableDeclaration", + "scope": 1941, + "src": "1446:12:15", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "typeName": { + "id": 1939, + "name": "bool", + "nodeType": "ElementaryTypeName", + "src": "1446:4:15", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "visibility": "internal" + } + ], + "name": "VestingSchedule", + "nameLocation": "1217:15:15", + "nodeType": "StructDefinition", + "scope": 2399, + "src": "1210:255:15", + "visibility": "public" + }, + { + "global": false, + "id": 1945, + "libraryName": { + "id": 1942, + "name": "SafeERC20", + "nameLocations": [ + "1503:9:15" + ], + "nodeType": "IdentifierPath", + "referencedDeclaration": 1404, + "src": "1503:9:15" + }, + "nodeType": "UsingForDirective", + "src": "1497:27:15", + "typeName": { + "id": 1944, + "nodeType": "UserDefinedTypeName", + "pathNode": { + "id": 1943, + "name": "IERC20", + "nameLocations": [ + "1517:6:15" + ], + "nodeType": "IdentifierPath", + "referencedDeclaration": 967, + "src": "1517:6:15" + }, + "referencedDeclaration": 967, + "src": "1517:6:15", + "typeDescriptions": { + "typeIdentifier": "t_contract$_IERC20_$967", + "typeString": "contract IERC20" + } + } + }, + { + "constant": false, + "functionSelector": "fc0c546a", + "id": 1948, + "mutability": "mutable", + "name": "token", + "nameLocation": "1543:5:15", + "nodeType": "VariableDeclaration", + "scope": 2399, + "src": "1529:19:15", + "stateVariable": true, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_contract$_IERC20_$967", + "typeString": "contract IERC20" + }, + "typeName": { + "id": 1947, + "nodeType": "UserDefinedTypeName", + "pathNode": { + "id": 1946, + "name": "IERC20", + "nameLocations": [ + "1529:6:15" + ], + "nodeType": "IdentifierPath", + "referencedDeclaration": 967, + "src": "1529:6:15" + }, + "referencedDeclaration": 967, + "src": "1529:6:15", + "typeDescriptions": { + "typeIdentifier": "t_contract$_IERC20_$967", + "typeString": "contract IERC20" + } + }, + "visibility": "public" + }, + { + "constant": false, + "functionSelector": "fdb20ccb", + "id": 1953, + "mutability": "mutable", + "name": "vestingSchedules", + "nameLocation": "1683:16:15", + "nodeType": "VariableDeclaration", + "scope": 2399, + "src": "1640:59:15", + "stateVariable": true, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_address_$_t_struct$_VestingSchedule_$1941_storage_$", + "typeString": "mapping(address => struct TokenVesting.VestingSchedule)" + }, + "typeName": { + "id": 1952, + "keyName": "", + "keyNameLocation": "-1:-1:-1", + "keyType": { + "id": 1949, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "1648:7:15", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "nodeType": "Mapping", + "src": "1640:35:15", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_address_$_t_struct$_VestingSchedule_$1941_storage_$", + "typeString": "mapping(address => struct TokenVesting.VestingSchedule)" + }, + "valueName": "", + "valueNameLocation": "-1:-1:-1", + "valueType": { + "id": 1951, + "nodeType": "UserDefinedTypeName", + "pathNode": { + "id": 1950, + "name": "VestingSchedule", + "nameLocations": [ + "1659:15:15" + ], + "nodeType": "IdentifierPath", + "referencedDeclaration": 1941, + "src": "1659:15:15" + }, + "referencedDeclaration": 1941, + "src": "1659:15:15", + "typeDescriptions": { + "typeIdentifier": "t_struct$_VestingSchedule_$1941_storage_ptr", + "typeString": "struct TokenVesting.VestingSchedule" + } + } + }, + "visibility": "public" + }, + { + "constant": false, + "functionSelector": "9b19251a", + "id": 1957, + "mutability": "mutable", + "name": "whitelist", + "nameLocation": "1805:9:15", + "nodeType": "VariableDeclaration", + "scope": 2399, + "src": "1773:41:15", + "stateVariable": true, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_address_$_t_bool_$", + "typeString": "mapping(address => bool)" + }, + "typeName": { + "id": 1956, + "keyName": "", + "keyNameLocation": "-1:-1:-1", + "keyType": { + "id": 1954, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "1781:7:15", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "nodeType": "Mapping", + "src": "1773:24:15", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_address_$_t_bool_$", + "typeString": "mapping(address => bool)" + }, + "valueName": "", + "valueNameLocation": "-1:-1:-1", + "valueType": { + "id": 1955, + "name": "bool", + "nodeType": "ElementaryTypeName", + "src": "1792:4:15", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + } + }, + "visibility": "public" + }, + { + "anonymous": false, + "eventSelector": "969705509595726740fe60cc30769bbd53c883efff4d8e70108a82817e0392a9", + "id": 1963, + "name": "VestingScheduleCreated", + "nameLocation": "1841:22:15", + "nodeType": "EventDefinition", + "parameters": { + "id": 1962, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 1959, + "indexed": true, + "mutability": "mutable", + "name": "beneficiary", + "nameLocation": "1880:11:15", + "nodeType": "VariableDeclaration", + "scope": 1963, + "src": "1864:27:15", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 1958, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "1864:7:15", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 1961, + "indexed": false, + "mutability": "mutable", + "name": "amount", + "nameLocation": "1901:6:15", + "nodeType": "VariableDeclaration", + "scope": 1963, + "src": "1893:14:15", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 1960, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "1893:7:15", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "src": "1863:45:15" + }, + "src": "1835:74:15" + }, + { + "anonymous": false, + "eventSelector": "896e034966eaaf1adc54acc0f257056febbd300c9e47182cf761982cf1f5e430", + "id": 1969, + "name": "TokensClaimed", + "nameLocation": "1920:13:15", + "nodeType": "EventDefinition", + "parameters": { + "id": 1968, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 1965, + "indexed": true, + "mutability": "mutable", + "name": "beneficiary", + "nameLocation": "1950:11:15", + "nodeType": "VariableDeclaration", + "scope": 1969, + "src": "1934:27:15", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 1964, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "1934:7:15", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 1967, + "indexed": false, + "mutability": "mutable", + "name": "amount", + "nameLocation": "1971:6:15", + "nodeType": "VariableDeclaration", + "scope": 1969, + "src": "1963:14:15", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 1966, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "1963:7:15", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "src": "1933:45:15" + }, + "src": "1914:65:15" + }, + { + "anonymous": false, + "eventSelector": "68d870ac0aff3819234e8a1fc8f357b40d75212f2dc8594b97690fa205b3bab2", + "id": 1973, + "name": "VestingRevoked", + "nameLocation": "1990:14:15", + "nodeType": "EventDefinition", + "parameters": { + "id": 1972, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 1971, + "indexed": true, + "mutability": "mutable", + "name": "beneficiary", + "nameLocation": "2021:11:15", + "nodeType": "VariableDeclaration", + "scope": 1973, + "src": "2005:27:15", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 1970, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "2005:7:15", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + } + ], + "src": "2004:29:15" + }, + "src": "1984:50:15" + }, + { + "anonymous": false, + "eventSelector": "07e751107375f503d05dfa76b5038ce1c5b7d46e9e45768f913ac33378039439", + "id": 1977, + "name": "BeneficiaryWhitelisted", + "nameLocation": "2045:22:15", + "nodeType": "EventDefinition", + "parameters": { + "id": 1976, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 1975, + "indexed": true, + "mutability": "mutable", + "name": "beneficiary", + "nameLocation": "2084:11:15", + "nodeType": "VariableDeclaration", + "scope": 1977, + "src": "2068:27:15", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 1974, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "2068:7:15", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + } + ], + "src": "2067:29:15" + }, + "src": "2039:58:15" + }, + { + "anonymous": false, + "eventSelector": "1ecef1b5180dc14b16608c5c5ec1fa28998e2f94e460b91c1b50bdfb643cc138", + "id": 1981, + "name": "BeneficiaryRemovedFromWhitelist", + "nameLocation": "2108:31:15", + "nodeType": "EventDefinition", + "parameters": { + "id": 1980, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 1979, + "indexed": true, + "mutability": "mutable", + "name": "beneficiary", + "nameLocation": "2156:11:15", + "nodeType": "VariableDeclaration", + "scope": 1981, + "src": "2140:27:15", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 1978, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "2140:7:15", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + } + ], + "src": "2139:29:15" + }, + "src": "2102:67:15" + }, + { + "body": { + "id": 2002, + "nodeType": "Block", + "src": "2209:156:15", + "statements": [ + { + "expression": { + "arguments": [ + { + "commonType": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "id": 1992, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "id": 1987, + "name": "tokenAddress", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1983, + "src": "2268:12:15", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "nodeType": "BinaryOperation", + "operator": "!=", + "rightExpression": { + "arguments": [ + { + "hexValue": "30", + "id": 1990, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "2292:1:15", + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + } + ], + "id": 1989, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "2284:7:15", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_address_$", + "typeString": "type(address)" }, - "nodeType": "YulCase", - "src": "3222:663:10", - "value": { + "typeName": { + "id": 1988, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "2284:7:15", + "typeDescriptions": {} + } + }, + "id": 1991, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "typeConversion", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "2284:10:15", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "src": "2268:26:15", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + { + "hexValue": "496e76616c696420746f6b656e2061646472657373", + "id": 1993, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "string", + "lValueRequested": false, + "nodeType": "Literal", + "src": "2296:23:15", + "typeDescriptions": { + "typeIdentifier": "t_stringliteral_d34df3e6e5f402d3417b1a16a0a8a7541b184d7fb338e177a15236f4037e3743", + "typeString": "literal_string \"Invalid token address\"" + }, + "value": "Invalid token address" + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + { + "typeIdentifier": "t_stringliteral_d34df3e6e5f402d3417b1a16a0a8a7541b184d7fb338e177a15236f4037e3743", + "typeString": "literal_string \"Invalid token address\"" + } + ], + "id": 1986, + "name": "require", + "nodeType": "Identifier", + "overloadedDeclarations": [ + -18, + -18 + ], + "referencedDeclaration": -18, + "src": "2260:7:15", + "typeDescriptions": { + "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", + "typeString": "function (bool,string memory) pure" + } + }, + "id": 1994, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "2260:60:15", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 1995, + "nodeType": "ExpressionStatement", + "src": "2260:60:15" + }, + { + "expression": { + "id": 2000, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "id": 1996, + "name": "token", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1948, + "src": "2330:5:15", + "typeDescriptions": { + "typeIdentifier": "t_contract$_IERC20_$967", + "typeString": "contract IERC20" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "arguments": [ + { + "id": 1998, + "name": "tokenAddress", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1983, + "src": "2345:12:15", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + } + ], + "id": 1997, + "name": "IERC20", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 967, + "src": "2338:6:15", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_contract$_IERC20_$967_$", + "typeString": "type(contract IERC20)" + } + }, + "id": 1999, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "typeConversion", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "2338:20:15", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_contract$_IERC20_$967", + "typeString": "contract IERC20" + } + }, + "src": "2330:28:15", + "typeDescriptions": { + "typeIdentifier": "t_contract$_IERC20_$967", + "typeString": "contract IERC20" + } + }, + "id": 2001, + "nodeType": "ExpressionStatement", + "src": "2330:28:15" + } + ] + }, + "id": 2003, + "implemented": true, + "kind": "constructor", + "modifiers": [], + "name": "", + "nameLocation": "-1:-1:-1", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 1984, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 1983, + "mutability": "mutable", + "name": "tokenAddress", + "nameLocation": "2195:12:15", + "nodeType": "VariableDeclaration", + "scope": 2003, + "src": "2187:20:15", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 1982, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "2187:7:15", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + } + ], + "src": "2186:22:15" + }, + "returnParameters": { + "id": 1985, + "nodeType": "ParameterList", + "parameters": [], + "src": "2209:0:15" + }, + "scope": 2399, + "src": "2175:190:15", + "stateMutability": "nonpayable", + "virtual": false, + "visibility": "public" + }, + { + "body": { + "id": 2015, + "nodeType": "Block", + "src": "2472:90:15", + "statements": [ + { + "expression": { + "arguments": [ + { + "baseExpression": { + "id": 2008, + "name": "whitelist", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1957, + "src": "2490:9:15", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_address_$_t_bool_$", + "typeString": "mapping(address => bool)" + } + }, + "id": 2010, + "indexExpression": { + "id": 2009, + "name": "beneficiary", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2005, + "src": "2500:11:15", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "2490:22:15", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + { + "hexValue": "42656e6566696369617279206e6f742077686974656c6973746564", + "id": 2011, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "string", + "lValueRequested": false, + "nodeType": "Literal", + "src": "2514:29:15", + "typeDescriptions": { + "typeIdentifier": "t_stringliteral_33ba6c59384982a33c8d03efd40cd022501542cd14d2a647b97dcbf1ab55c9a8", + "typeString": "literal_string \"Beneficiary not whitelisted\"" + }, + "value": "Beneficiary not whitelisted" + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + { + "typeIdentifier": "t_stringliteral_33ba6c59384982a33c8d03efd40cd022501542cd14d2a647b97dcbf1ab55c9a8", + "typeString": "literal_string \"Beneficiary not whitelisted\"" + } + ], + "id": 2007, + "name": "require", + "nodeType": "Identifier", + "overloadedDeclarations": [ + -18, + -18 + ], + "referencedDeclaration": -18, + "src": "2482:7:15", + "typeDescriptions": { + "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", + "typeString": "function (bool,string memory) pure" + } + }, + "id": 2012, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "2482:62:15", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 2013, + "nodeType": "ExpressionStatement", + "src": "2482:62:15" + }, + { + "id": 2014, + "nodeType": "PlaceholderStatement", + "src": "2554:1:15" + } + ] + }, + "id": 2016, + "name": "onlyWhitelisted", + "nameLocation": "2435:15:15", + "nodeType": "ModifierDefinition", + "parameters": { + "id": 2006, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 2005, + "mutability": "mutable", + "name": "beneficiary", + "nameLocation": "2459:11:15", + "nodeType": "VariableDeclaration", + "scope": 2016, + "src": "2451:19:15", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 2004, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "2451:7:15", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + } + ], + "src": "2450:21:15" + }, + "src": "2426:136:15", + "virtual": false, + "visibility": "internal" + }, + { + "body": { + "id": 2043, + "nodeType": "Block", + "src": "2632:159:15", + "statements": [ + { + "expression": { + "arguments": [ + { + "commonType": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "id": 2029, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "id": 2024, + "name": "beneficiary", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2018, + "src": "2650:11:15", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "nodeType": "BinaryOperation", + "operator": "!=", + "rightExpression": { + "arguments": [ + { + "hexValue": "30", + "id": 2027, + "isConstant": false, + "isLValue": false, + "isPure": true, "kind": "number", - "nodeType": "YulLiteral", - "src": "3227:1:10", - "type": "", - "value": "1" + "lValueRequested": false, + "nodeType": "Literal", + "src": "2673:1:15", + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + } + ], + "id": 2026, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "2665:7:15", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_address_$", + "typeString": "type(address)" + }, + "typeName": { + "id": 2025, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "2665:7:15", + "typeDescriptions": {} + } + }, + "id": 2028, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "typeConversion", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "2665:10:15", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "src": "2650:25:15", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + { + "hexValue": "496e76616c69642061646472657373", + "id": 2030, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "string", + "lValueRequested": false, + "nodeType": "Literal", + "src": "2677:17:15", + "typeDescriptions": { + "typeIdentifier": "t_stringliteral_1462473b7a4b33d32b109b815fd2324d00c9e5839b707ecf16d0ab5744f99226", + "typeString": "literal_string \"Invalid address\"" + }, + "value": "Invalid address" + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + { + "typeIdentifier": "t_stringliteral_1462473b7a4b33d32b109b815fd2324d00c9e5839b707ecf16d0ab5744f99226", + "typeString": "literal_string \"Invalid address\"" + } + ], + "id": 2023, + "name": "require", + "nodeType": "Identifier", + "overloadedDeclarations": [ + -18, + -18 + ], + "referencedDeclaration": -18, + "src": "2642:7:15", + "typeDescriptions": { + "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", + "typeString": "function (bool,string memory) pure" + } + }, + "id": 2031, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "2642:53:15", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 2032, + "nodeType": "ExpressionStatement", + "src": "2642:53:15" + }, + { + "expression": { + "id": 2037, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "baseExpression": { + "id": 2033, + "name": "whitelist", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1957, + "src": "2705:9:15", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_address_$_t_bool_$", + "typeString": "mapping(address => bool)" + } + }, + "id": 2035, + "indexExpression": { + "id": 2034, + "name": "beneficiary", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2018, + "src": "2715:11:15", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": true, + "nodeType": "IndexAccess", + "src": "2705:22:15", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "hexValue": "74727565", + "id": 2036, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "bool", + "lValueRequested": false, + "nodeType": "Literal", + "src": "2730:4:15", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "value": "true" + }, + "src": "2705:29:15", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "id": 2038, + "nodeType": "ExpressionStatement", + "src": "2705:29:15" + }, + { + "eventCall": { + "arguments": [ + { + "id": 2040, + "name": "beneficiary", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2018, + "src": "2772:11:15", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + } + ], + "id": 2039, + "name": "BeneficiaryWhitelisted", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1977, + "src": "2749:22:15", + "typeDescriptions": { + "typeIdentifier": "t_function_event_nonpayable$_t_address_$returns$__$", + "typeString": "function (address)" + } + }, + "id": 2041, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "2749:35:15", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 2042, + "nodeType": "EmitStatement", + "src": "2744:40:15" + } + ] + }, + "functionSelector": "e43252d7", + "id": 2044, + "implemented": true, + "kind": "function", + "modifiers": [ + { + "id": 2021, + "kind": "modifierInvocation", + "modifierName": { + "id": 2020, + "name": "onlyOwner", + "nameLocations": [ + "2622:9:15" + ], + "nodeType": "IdentifierPath", + "referencedDeclaration": 58, + "src": "2622:9:15" + }, + "nodeType": "ModifierInvocation", + "src": "2622:9:15" + } + ], + "name": "addToWhitelist", + "nameLocation": "2577:14:15", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 2019, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 2018, + "mutability": "mutable", + "name": "beneficiary", + "nameLocation": "2600:11:15", + "nodeType": "VariableDeclaration", + "scope": 2044, + "src": "2592:19:15", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 2017, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "2592:7:15", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + } + ], + "src": "2591:21:15" + }, + "returnParameters": { + "id": 2022, + "nodeType": "ParameterList", + "parameters": [], + "src": "2632:0:15" + }, + "scope": 2399, + "src": "2568:223:15", + "stateMutability": "nonpayable", + "virtual": false, + "visibility": "external" + }, + { + "body": { + "id": 2061, + "nodeType": "Block", + "src": "2866:106:15", + "statements": [ + { + "expression": { + "id": 2055, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "baseExpression": { + "id": 2051, + "name": "whitelist", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1957, + "src": "2876:9:15", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_address_$_t_bool_$", + "typeString": "mapping(address => bool)" + } + }, + "id": 2053, + "indexExpression": { + "id": 2052, + "name": "beneficiary", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2046, + "src": "2886:11:15", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": true, + "nodeType": "IndexAccess", + "src": "2876:22:15", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "hexValue": "66616c7365", + "id": 2054, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "bool", + "lValueRequested": false, + "nodeType": "Literal", + "src": "2901:5:15", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "value": "false" + }, + "src": "2876:30:15", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "id": 2056, + "nodeType": "ExpressionStatement", + "src": "2876:30:15" + }, + { + "eventCall": { + "arguments": [ + { + "id": 2058, + "name": "beneficiary", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2046, + "src": "2953:11:15", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + } + ], + "id": 2057, + "name": "BeneficiaryRemovedFromWhitelist", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1981, + "src": "2921:31:15", + "typeDescriptions": { + "typeIdentifier": "t_function_event_nonpayable$_t_address_$returns$__$", + "typeString": "function (address)" + } + }, + "id": 2059, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "2921:44:15", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 2060, + "nodeType": "EmitStatement", + "src": "2916:49:15" + } + ] + }, + "functionSelector": "8ab1d681", + "id": 2062, + "implemented": true, + "kind": "function", + "modifiers": [ + { + "id": 2049, + "kind": "modifierInvocation", + "modifierName": { + "id": 2048, + "name": "onlyOwner", + "nameLocations": [ + "2856:9:15" + ], + "nodeType": "IdentifierPath", + "referencedDeclaration": 58, + "src": "2856:9:15" + }, + "nodeType": "ModifierInvocation", + "src": "2856:9:15" + } + ], + "name": "removeFromWhitelist", + "nameLocation": "2806:19:15", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 2047, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 2046, + "mutability": "mutable", + "name": "beneficiary", + "nameLocation": "2834:11:15", + "nodeType": "VariableDeclaration", + "scope": 2062, + "src": "2826:19:15", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 2045, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "2826:7:15", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + } + ], + "src": "2825:21:15" + }, + "returnParameters": { + "id": 2050, + "nodeType": "ParameterList", + "parameters": [], + "src": "2866:0:15" + }, + "scope": 2399, + "src": "2797:175:15", + "stateMutability": "nonpayable", + "virtual": false, + "visibility": "external" + }, + { + "body": { + "id": 2153, + "nodeType": "Block", + "src": "3221:913:15", + "statements": [ + { + "expression": { + "arguments": [ + { + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 2086, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "id": 2083, + "name": "startTime", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2072, + "src": "3305:9:15", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": ">", + "rightExpression": { + "expression": { + "id": 2084, + "name": "block", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": -4, + "src": "3317:5:15", + "typeDescriptions": { + "typeIdentifier": "t_magic_block", + "typeString": "block" } }, - { - "body": { - "nodeType": "YulBlock", - "src": "3902:234:10", - "statements": [ - { - "nodeType": "YulVariableDeclaration", - "src": "3916:14:10", - "value": { - "kind": "number", - "nodeType": "YulLiteral", - "src": "3929:1:10", - "type": "", - "value": "0" - }, - "variables": [ - { - "name": "value", - "nodeType": "YulTypedName", - "src": "3920:5:10", - "type": "" - } - ] - }, - { - "body": { - "nodeType": "YulBlock", - "src": "3965:67:10", - "statements": [ - { - "nodeType": "YulAssignment", - "src": "3983:35:10", - "value": { - "arguments": [ - { - "arguments": [ - { - "name": "src", - "nodeType": "YulIdentifier", - "src": "4002:3:10" - }, - { - "name": "srcOffset", - "nodeType": "YulIdentifier", - "src": "4007:9:10" - } - ], - "functionName": { - "name": "add", - "nodeType": "YulIdentifier", - "src": "3998:3:10" - }, - "nodeType": "YulFunctionCall", - "src": "3998:19:10" - } - ], - "functionName": { - "name": "mload", - "nodeType": "YulIdentifier", - "src": "3992:5:10" - }, - "nodeType": "YulFunctionCall", - "src": "3992:26:10" - }, - "variableNames": [ - { - "name": "value", - "nodeType": "YulIdentifier", - "src": "3983:5:10" - } - ] - } - ] - }, - "condition": { - "name": "newLen", - "nodeType": "YulIdentifier", - "src": "3946:6:10" - }, - "nodeType": "YulIf", - "src": "3943:89:10" - }, - { - "expression": { - "arguments": [ - { - "name": "slot", - "nodeType": "YulIdentifier", - "src": "4052:4:10" - }, - { - "arguments": [ - { - "name": "value", - "nodeType": "YulIdentifier", - "src": "4111:5:10" - }, - { - "name": "newLen", - "nodeType": "YulIdentifier", - "src": "4118:6:10" - } - ], - "functionName": { - "name": "extract_used_part_and_set_length_of_short_byte_array", - "nodeType": "YulIdentifier", - "src": "4058:52:10" - }, - "nodeType": "YulFunctionCall", - "src": "4058:67:10" - } - ], - "functionName": { - "name": "sstore", - "nodeType": "YulIdentifier", - "src": "4045:6:10" - }, - "nodeType": "YulFunctionCall", - "src": "4045:81:10" - }, - "nodeType": "YulExpressionStatement", - "src": "4045:81:10" - } - ] - }, - "nodeType": "YulCase", - "src": "3894:242:10", - "value": "default" + "id": 2085, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberLocation": "3323:9:15", + "memberName": "timestamp", + "nodeType": "MemberAccess", + "src": "3317:15:15", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "3305:27:15", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + { + "hexValue": "53746172742074696d65206d75737420626520696e2074686520667574757265", + "id": 2087, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "string", + "lValueRequested": false, + "nodeType": "Literal", + "src": "3346:34:15", + "typeDescriptions": { + "typeIdentifier": "t_stringliteral_91f1f2e511bedf319ad6ce391862732cf90c76883618f4f508c8f5e61f705466", + "typeString": "literal_string \"Start time must be in the future\"" + }, + "value": "Start time must be in the future" + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + { + "typeIdentifier": "t_stringliteral_91f1f2e511bedf319ad6ce391862732cf90c76883618f4f508c8f5e61f705466", + "typeString": "literal_string \"Start time must be in the future\"" + } + ], + "id": 2082, + "name": "require", + "nodeType": "Identifier", + "overloadedDeclarations": [ + -18, + -18 + ], + "referencedDeclaration": -18, + "src": "3284:7:15", + "typeDescriptions": { + "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", + "typeString": "function (bool,string memory) pure" + } + }, + "id": 2088, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "3284:106:15", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 2089, + "nodeType": "ExpressionStatement", + "src": "3284:106:15" + }, + { + "expression": { + "arguments": [ + { + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 2093, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "id": 2091, + "name": "cliffDuration", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2068, + "src": "3408:13:15", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": ">", + "rightExpression": { + "hexValue": "30", + "id": 2092, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "3424:1:15", + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + }, + "src": "3408:17:15", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + { + "hexValue": "436c696666206475726174696f6e206d7573742062652067726561746572207468616e2030", + "id": 2094, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "string", + "lValueRequested": false, + "nodeType": "Literal", + "src": "3427:39:15", + "typeDescriptions": { + "typeIdentifier": "t_stringliteral_839ed8254ffca5ca01218b9b2173f9b1e14f13a19eb201692e63da7b37ccc026", + "typeString": "literal_string \"Cliff duration must be greater than 0\"" + }, + "value": "Cliff duration must be greater than 0" + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + { + "typeIdentifier": "t_stringliteral_839ed8254ffca5ca01218b9b2173f9b1e14f13a19eb201692e63da7b37ccc026", + "typeString": "literal_string \"Cliff duration must be greater than 0\"" + } + ], + "id": 2090, + "name": "require", + "nodeType": "Identifier", + "overloadedDeclarations": [ + -18, + -18 + ], + "referencedDeclaration": -18, + "src": "3400:7:15", + "typeDescriptions": { + "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", + "typeString": "function (bool,string memory) pure" + } + }, + "id": 2095, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "3400:67:15", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 2096, + "nodeType": "ExpressionStatement", + "src": "3400:67:15" + }, + { + "expression": { + "arguments": [ + { + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 2100, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "id": 2098, + "name": "vestingDuration", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2070, + "src": "3485:15:15", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": ">", + "rightExpression": { + "hexValue": "30", + "id": 2099, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "3503:1:15", + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + }, + "src": "3485:19:15", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + { + "hexValue": "56657374696e67206475726174696f6e206d7573742062652067726561746572207468616e2030", + "id": 2101, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "string", + "lValueRequested": false, + "nodeType": "Literal", + "src": "3506:41:15", + "typeDescriptions": { + "typeIdentifier": "t_stringliteral_1017f1b07ba3fa3e0d85c11bf6ba26e6987d24ff7513f1d1b9df5c982d07c93f", + "typeString": "literal_string \"Vesting duration must be greater than 0\"" + }, + "value": "Vesting duration must be greater than 0" + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + { + "typeIdentifier": "t_stringliteral_1017f1b07ba3fa3e0d85c11bf6ba26e6987d24ff7513f1d1b9df5c982d07c93f", + "typeString": "literal_string \"Vesting duration must be greater than 0\"" + } + ], + "id": 2097, + "name": "require", + "nodeType": "Identifier", + "overloadedDeclarations": [ + -18, + -18 + ], + "referencedDeclaration": -18, + "src": "3477:7:15", + "typeDescriptions": { + "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", + "typeString": "function (bool,string memory) pure" + } + }, + "id": 2102, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "3477:71:15", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 2103, + "nodeType": "ExpressionStatement", + "src": "3477:71:15" + }, + { + "expression": { + "arguments": [ + { + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 2107, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "id": 2105, + "name": "amount", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2066, + "src": "3566:6:15", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" } - ], - "expression": { - "arguments": [ - { - "name": "newLen", - "nodeType": "YulIdentifier", - "src": "3202:6:10" - }, - { - "kind": "number", - "nodeType": "YulLiteral", - "src": "3210:2:10", - "type": "", - "value": "31" - } - ], - "functionName": { - "name": "gt", - "nodeType": "YulIdentifier", - "src": "3199:2:10" + }, + "nodeType": "BinaryOperation", + "operator": ">", + "rightExpression": { + "hexValue": "30", + "id": 2106, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "3575:1:15", + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" }, - "nodeType": "YulFunctionCall", - "src": "3199:14:10" + "value": "0" }, - "nodeType": "YulSwitch", - "src": "3192:944:10" + "src": "3566:10:15", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + { + "hexValue": "416d6f756e74206d7573742062652067726561746572207468616e2030", + "id": 2108, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "string", + "lValueRequested": false, + "nodeType": "Literal", + "src": "3578:31:15", + "typeDescriptions": { + "typeIdentifier": "t_stringliteral_3e76f273c719bb7d23db533a2dc9a822ae7d899fcd42eb8910272e24764e8296", + "typeString": "literal_string \"Amount must be greater than 0\"" + }, + "value": "Amount must be greater than 0" + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + { + "typeIdentifier": "t_stringliteral_3e76f273c719bb7d23db533a2dc9a822ae7d899fcd42eb8910272e24764e8296", + "typeString": "literal_string \"Amount must be greater than 0\"" + } + ], + "id": 2104, + "name": "require", + "nodeType": "Identifier", + "overloadedDeclarations": [ + -18, + -18 + ], + "referencedDeclaration": -18, + "src": "3558:7:15", + "typeDescriptions": { + "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", + "typeString": "function (bool,string memory) pure" } - ] - }, - "name": "copy_byte_array_to_storage_from_t_string_memory_ptr_to_t_string_storage", - "nodeType": "YulFunctionDefinition", - "parameters": [ - { - "name": "slot", - "nodeType": "YulTypedName", - "src": "2871:4:10", - "type": "" }, - { - "name": "src", - "nodeType": "YulTypedName", - "src": "2877:3:10", - "type": "" + "id": 2109, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "3558:52:15", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" } - ], - "src": "2790:1352:10" + }, + "id": 2110, + "nodeType": "ExpressionStatement", + "src": "3558:52:15" }, { - "body": { - "nodeType": "YulBlock", - "src": "4248:102:10", - "statements": [ + "expression": { + "arguments": [ { - "nodeType": "YulAssignment", - "src": "4258:26:10", - "value": { - "arguments": [ - { - "name": "headStart", - "nodeType": "YulIdentifier", - "src": "4270:9:10" - }, - { - "kind": "number", - "nodeType": "YulLiteral", - "src": "4281:2:10", - "type": "", - "value": "32" - } - ], - "functionName": { - "name": "add", - "nodeType": "YulIdentifier", - "src": "4266:3:10" - }, - "nodeType": "YulFunctionCall", - "src": "4266:18:10" + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" }, - "variableNames": [ - { - "name": "tail", - "nodeType": "YulIdentifier", - "src": "4258:4:10" + "id": 2114, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "id": 2112, + "name": "vestingDuration", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2070, + "src": "3641:15:15", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" } - ] + }, + "nodeType": "BinaryOperation", + "operator": ">", + "rightExpression": { + "id": 2113, + "name": "cliffDuration", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2068, + "src": "3659:13:15", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "3641:31:15", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } }, { - "expression": { - "arguments": [ - { - "name": "headStart", - "nodeType": "YulIdentifier", - "src": "4300:9:10" - }, - { - "arguments": [ - { - "name": "value0", - "nodeType": "YulIdentifier", - "src": "4315:6:10" - }, - { - "arguments": [ - { - "arguments": [ - { - "kind": "number", - "nodeType": "YulLiteral", - "src": "4331:3:10", - "type": "", - "value": "160" - }, - { - "kind": "number", - "nodeType": "YulLiteral", - "src": "4336:1:10", - "type": "", - "value": "1" - } - ], - "functionName": { - "name": "shl", - "nodeType": "YulIdentifier", - "src": "4327:3:10" - }, - "nodeType": "YulFunctionCall", - "src": "4327:11:10" - }, - { - "kind": "number", - "nodeType": "YulLiteral", - "src": "4340:1:10", - "type": "", - "value": "1" - } - ], - "functionName": { - "name": "sub", - "nodeType": "YulIdentifier", - "src": "4323:3:10" - }, - "nodeType": "YulFunctionCall", - "src": "4323:19:10" - } - ], - "functionName": { - "name": "and", - "nodeType": "YulIdentifier", - "src": "4311:3:10" - }, - "nodeType": "YulFunctionCall", - "src": "4311:32:10" - } - ], - "functionName": { - "name": "mstore", - "nodeType": "YulIdentifier", - "src": "4293:6:10" - }, - "nodeType": "YulFunctionCall", - "src": "4293:51:10" + "hexValue": "56657374696e67206475726174696f6e206d7573742062652067726561746572207468616e20636c696666206475726174696f6e", + "id": 2115, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "string", + "lValueRequested": false, + "nodeType": "Literal", + "src": "3686:54:15", + "typeDescriptions": { + "typeIdentifier": "t_stringliteral_7bccacb3ef1b76a239d24792d8e953985aa4e1666ef83909e9156bbd66ed8fe3", + "typeString": "literal_string \"Vesting duration must be greater than cliff duration\"" }, - "nodeType": "YulExpressionStatement", - "src": "4293:51:10" + "value": "Vesting duration must be greater than cliff duration" + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + { + "typeIdentifier": "t_stringliteral_7bccacb3ef1b76a239d24792d8e953985aa4e1666ef83909e9156bbd66ed8fe3", + "typeString": "literal_string \"Vesting duration must be greater than cliff duration\"" + } + ], + "id": 2111, + "name": "require", + "nodeType": "Identifier", + "overloadedDeclarations": [ + -18, + -18 + ], + "referencedDeclaration": -18, + "src": "3620:7:15", + "typeDescriptions": { + "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", + "typeString": "function (bool,string memory) pure" } - ] - }, - "name": "abi_encode_tuple_t_address__to_t_address__fromStack_reversed", - "nodeType": "YulFunctionDefinition", - "parameters": [ - { - "name": "headStart", - "nodeType": "YulTypedName", - "src": "4217:9:10", - "type": "" }, - { - "name": "value0", - "nodeType": "YulTypedName", - "src": "4228:6:10", - "type": "" - } - ], - "returnVariables": [ - { - "name": "tail", - "nodeType": "YulTypedName", - "src": "4239:4:10", - "type": "" - } - ], - "src": "4147:203:10" - } - ] - }, - "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 mstore(add(add(memPtr, _1), _4), 0)\n array := memPtr\n }\n function abi_decode_tuple_t_string_memory_ptrt_string_memory_ptr_fromMemory(headStart, dataEnd) -> value0, value1\n {\n if slt(sub(dataEnd, headStart), 64) { revert(0, 0) }\n let offset := mload(headStart)\n let _1 := sub(shl(64, 1), 1)\n if gt(offset, _1) { revert(0, 0) }\n value0 := abi_decode_string_fromMemory(add(headStart, offset), dataEnd)\n let offset_1 := mload(add(headStart, 32))\n if gt(offset_1, _1) { revert(0, 0) }\n value1 := 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 function array_dataslot_string_storage(ptr) -> data\n {\n mstore(0, ptr)\n data := keccak256(0, 0x20)\n }\n function clean_up_bytearray_end_slots_string_storage(array, len, startIndex)\n {\n if gt(len, 31)\n {\n let _1 := 0\n mstore(_1, array)\n let data := keccak256(_1, 0x20)\n let deleteStart := add(data, shr(5, add(startIndex, 31)))\n if lt(startIndex, 0x20) { deleteStart := data }\n let _2 := add(data, shr(5, add(len, 31)))\n let start := deleteStart\n for { } lt(start, _2) { start := add(start, 1) }\n { sstore(start, _1) }\n }\n }\n function extract_used_part_and_set_length_of_short_byte_array(data, len) -> used\n {\n used := or(and(data, not(shr(shl(3, len), not(0)))), shl(1, len))\n }\n function copy_byte_array_to_storage_from_t_string_memory_ptr_to_t_string_storage(slot, src)\n {\n let newLen := mload(src)\n if gt(newLen, sub(shl(64, 1), 1)) { panic_error_0x41() }\n clean_up_bytearray_end_slots_string_storage(slot, extract_byte_array_length(sload(slot)), newLen)\n let srcOffset := 0\n let srcOffset_1 := 0x20\n srcOffset := srcOffset_1\n switch gt(newLen, 31)\n case 1 {\n let loopEnd := and(newLen, not(31))\n let dstPtr := array_dataslot_string_storage(slot)\n let i := 0\n for { } lt(i, loopEnd) { i := add(i, srcOffset_1) }\n {\n sstore(dstPtr, mload(add(src, srcOffset)))\n dstPtr := add(dstPtr, 1)\n srcOffset := add(srcOffset, srcOffset_1)\n }\n if lt(loopEnd, newLen)\n {\n let lastValue := mload(add(src, srcOffset))\n sstore(dstPtr, and(lastValue, not(shr(and(shl(3, newLen), 248), not(0)))))\n }\n sstore(slot, add(shl(1, newLen), 1))\n }\n default {\n let value := 0\n if newLen\n {\n value := mload(add(src, srcOffset))\n }\n sstore(slot, extract_used_part_and_set_length_of_short_byte_array(value, newLen))\n }\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": 10, - "language": "Yul", - "name": "#utility.yul" - } - ], - "linkReferences": {}, - "object": "60806040523480156200001157600080fd5b5060405162000c4a38038062000c4a8339810160408190526200003491620001b1565b3382826003620000458382620002aa565b506004620000548282620002aa565b5050506001600160a01b0381166200008657604051631e4fbdf760e01b81526000600482015260240160405180910390fd5b62000091816200009a565b50505062000376565b600580546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b634e487b7160e01b600052604160045260246000fd5b600082601f8301126200011457600080fd5b81516001600160401b0380821115620001315762000131620000ec565b604051601f8301601f19908116603f011681019082821181831017156200015c576200015c620000ec565b816040528381526020925086838588010111156200017957600080fd5b600091505b838210156200019d57858201830151818301840152908201906200017e565b600093810190920192909252949350505050565b60008060408385031215620001c557600080fd5b82516001600160401b0380821115620001dd57600080fd5b620001eb8683870162000102565b935060208501519150808211156200020257600080fd5b50620002118582860162000102565b9150509250929050565b600181811c908216806200023057607f821691505b6020821081036200025157634e487b7160e01b600052602260045260246000fd5b50919050565b601f821115620002a557600081815260208120601f850160051c81016020861015620002805750805b601f850160051c820191505b81811015620002a1578281556001016200028c565b5050505b505050565b81516001600160401b03811115620002c657620002c6620000ec565b620002de81620002d784546200021b565b8462000257565b602080601f831160018114620003165760008415620002fd5750858301515b600019600386901b1c1916600185901b178555620002a1565b600085815260208120601f198616915b82811015620003475788860151825594840194600190910190840162000326565b5085821015620003665787850151600019600388901b60f8161c191681555b5050505050600190811b01905550565b6108c480620003866000396000f3fe608060405234801561001057600080fd5b50600436106100cf5760003560e01c806370a082311161008c57806395d89b411161006657806395d89b41146101aa578063a9059cbb146101b2578063dd62ed3e146101c5578063f2fde38b146101fe57600080fd5b806370a082311461015e578063715018a6146101875780638da5cb5b1461018f57600080fd5b806306fdde03146100d4578063095ea7b3146100f257806318160ddd1461011557806323b872dd14610127578063313ce5671461013a57806340c10f1914610149575b600080fd5b6100dc610211565b6040516100e9919061070e565b60405180910390f35b610105610100366004610778565b6102a3565b60405190151581526020016100e9565b6002545b6040519081526020016100e9565b6101056101353660046107a2565b6102bd565b604051601281526020016100e9565b61015c610157366004610778565b6102e1565b005b61011961016c3660046107de565b6001600160a01b031660009081526020819052604090205490565b61015c6102f7565b6005546040516001600160a01b0390911681526020016100e9565b6100dc61030b565b6101056101c0366004610778565b61031a565b6101196101d3366004610800565b6001600160a01b03918216600090815260016020908152604080832093909416825291909152205490565b61015c61020c3660046107de565b610328565b60606003805461022090610833565b80601f016020809104026020016040519081016040528092919081815260200182805461024c90610833565b80156102995780601f1061026e57610100808354040283529160200191610299565b820191906000526020600020905b81548152906001019060200180831161027c57829003601f168201915b5050505050905090565b6000336102b181858561036b565b60019150505b92915050565b6000336102cb85828561037d565b6102d68585856103fb565b506001949350505050565b6102e961045a565b6102f38282610487565b5050565b6102ff61045a565b61030960006104bd565b565b60606004805461022090610833565b6000336102b18185856103fb565b61033061045a565b6001600160a01b03811661035f57604051631e4fbdf760e01b8152600060048201526024015b60405180910390fd5b610368816104bd565b50565b610378838383600161050f565b505050565b6001600160a01b0383811660009081526001602090815260408083209386168352929052205460001981146103f557818110156103e657604051637dc7a0d960e11b81526001600160a01b03841660048201526024810182905260448101839052606401610356565b6103f58484848403600061050f565b50505050565b6001600160a01b03831661042557604051634b637e8f60e11b815260006004820152602401610356565b6001600160a01b03821661044f5760405163ec442f0560e01b815260006004820152602401610356565b6103788383836105e4565b6005546001600160a01b031633146103095760405163118cdaa760e01b8152336004820152602401610356565b6001600160a01b0382166104b15760405163ec442f0560e01b815260006004820152602401610356565b6102f3600083836105e4565b600580546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b6001600160a01b0384166105395760405163e602df0560e01b815260006004820152602401610356565b6001600160a01b03831661056357604051634a1406b160e11b815260006004820152602401610356565b6001600160a01b03808516600090815260016020908152604080832093871683529290522082905580156103f557826001600160a01b0316846001600160a01b03167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925846040516105d691815260200190565b60405180910390a350505050565b6001600160a01b03831661060f578060026000828254610604919061086d565b909155506106819050565b6001600160a01b038316600090815260208190526040902054818110156106625760405163391434e360e21b81526001600160a01b03851660048201526024810182905260448101839052606401610356565b6001600160a01b03841660009081526020819052604090209082900390555b6001600160a01b03821661069d576002805482900390556106bc565b6001600160a01b03821660009081526020819052604090208054820190555b816001600160a01b0316836001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8360405161070191815260200190565b60405180910390a3505050565b600060208083528351808285015260005b8181101561073b5785810183015185820160400152820161071f565b506000604082860101526040601f19601f8301168501019250505092915050565b80356001600160a01b038116811461077357600080fd5b919050565b6000806040838503121561078b57600080fd5b6107948361075c565b946020939093013593505050565b6000806000606084860312156107b757600080fd5b6107c08461075c565b92506107ce6020850161075c565b9150604084013590509250925092565b6000602082840312156107f057600080fd5b6107f98261075c565b9392505050565b6000806040838503121561081357600080fd5b61081c8361075c565b915061082a6020840161075c565b90509250929050565b600181811c9082168061084757607f821691505b60208210810361086757634e487b7160e01b600052602260045260246000fd5b50919050565b808201808211156102b757634e487b7160e01b600052601160045260246000fdfea2646970667358221220109b9a599f0badc23fa957fb1510c08b12fb54cd8baf3ac22829364fb2029e0564736f6c63430008140033", - "opcodes": "PUSH1 0x80 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH3 0x11 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x40 MLOAD PUSH3 0xC4A CODESIZE SUB DUP1 PUSH3 0xC4A DUP4 CODECOPY DUP2 ADD PUSH1 0x40 DUP2 SWAP1 MSTORE PUSH3 0x34 SWAP2 PUSH3 0x1B1 JUMP JUMPDEST CALLER DUP3 DUP3 PUSH1 0x3 PUSH3 0x45 DUP4 DUP3 PUSH3 0x2AA JUMP JUMPDEST POP PUSH1 0x4 PUSH3 0x54 DUP3 DUP3 PUSH3 0x2AA JUMP JUMPDEST POP POP POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND PUSH3 0x86 JUMPI PUSH1 0x40 MLOAD PUSH4 0x1E4FBDF7 PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x0 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x24 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH3 0x91 DUP2 PUSH3 0x9A JUMP JUMPDEST POP POP POP PUSH3 0x376 JUMP JUMPDEST PUSH1 0x5 DUP1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP4 DUP2 AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB NOT DUP4 AND DUP2 OR SWAP1 SWAP4 SSTORE PUSH1 0x40 MLOAD SWAP2 AND SWAP2 SWAP1 DUP3 SWAP1 PUSH32 0x8BE0079C531659141344CD1FD0A4F28419497F9722A3DAAFE3B4186F6B6457E0 SWAP1 PUSH1 0x0 SWAP1 LOG3 POP POP 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 0x114 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB DUP1 DUP3 GT ISZERO PUSH3 0x131 JUMPI PUSH3 0x131 PUSH3 0xEC 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 0x15C JUMPI PUSH3 0x15C PUSH3 0xEC JUMP JUMPDEST DUP2 PUSH1 0x40 MSTORE DUP4 DUP2 MSTORE PUSH1 0x20 SWAP3 POP DUP7 DUP4 DUP6 DUP9 ADD ADD GT ISZERO PUSH3 0x179 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 SWAP2 POP JUMPDEST DUP4 DUP3 LT ISZERO PUSH3 0x19D JUMPI DUP6 DUP3 ADD DUP4 ADD MLOAD DUP2 DUP4 ADD DUP5 ADD MSTORE SWAP1 DUP3 ADD SWAP1 PUSH3 0x17E JUMP JUMPDEST PUSH1 0x0 SWAP4 DUP2 ADD SWAP1 SWAP3 ADD SWAP3 SWAP1 SWAP3 MSTORE SWAP5 SWAP4 POP POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH3 0x1C5 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB DUP1 DUP3 GT ISZERO PUSH3 0x1DD JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH3 0x1EB DUP7 DUP4 DUP8 ADD PUSH3 0x102 JUMP JUMPDEST SWAP4 POP PUSH1 0x20 DUP6 ADD MLOAD SWAP2 POP DUP1 DUP3 GT ISZERO PUSH3 0x202 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH3 0x211 DUP6 DUP3 DUP7 ADD PUSH3 0x102 JUMP JUMPDEST SWAP2 POP POP SWAP3 POP SWAP3 SWAP1 POP JUMP JUMPDEST PUSH1 0x1 DUP2 DUP2 SHR SWAP1 DUP3 AND DUP1 PUSH3 0x230 JUMPI PUSH1 0x7F DUP3 AND SWAP2 POP JUMPDEST PUSH1 0x20 DUP3 LT DUP2 SUB PUSH3 0x251 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 0x1F DUP3 GT ISZERO PUSH3 0x2A5 JUMPI PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0x20 DUP2 KECCAK256 PUSH1 0x1F DUP6 ADD PUSH1 0x5 SHR DUP2 ADD PUSH1 0x20 DUP7 LT ISZERO PUSH3 0x280 JUMPI POP DUP1 JUMPDEST PUSH1 0x1F DUP6 ADD PUSH1 0x5 SHR DUP3 ADD SWAP2 POP JUMPDEST DUP2 DUP2 LT ISZERO PUSH3 0x2A1 JUMPI DUP3 DUP2 SSTORE PUSH1 0x1 ADD PUSH3 0x28C JUMP JUMPDEST POP POP POP JUMPDEST POP POP POP JUMP JUMPDEST DUP2 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB DUP2 GT ISZERO PUSH3 0x2C6 JUMPI PUSH3 0x2C6 PUSH3 0xEC JUMP JUMPDEST PUSH3 0x2DE DUP2 PUSH3 0x2D7 DUP5 SLOAD PUSH3 0x21B JUMP JUMPDEST DUP5 PUSH3 0x257 JUMP JUMPDEST PUSH1 0x20 DUP1 PUSH1 0x1F DUP4 GT PUSH1 0x1 DUP2 EQ PUSH3 0x316 JUMPI PUSH1 0x0 DUP5 ISZERO PUSH3 0x2FD JUMPI POP DUP6 DUP4 ADD MLOAD JUMPDEST PUSH1 0x0 NOT PUSH1 0x3 DUP7 SWAP1 SHL SHR NOT AND PUSH1 0x1 DUP6 SWAP1 SHL OR DUP6 SSTORE PUSH3 0x2A1 JUMP JUMPDEST PUSH1 0x0 DUP6 DUP2 MSTORE PUSH1 0x20 DUP2 KECCAK256 PUSH1 0x1F NOT DUP7 AND SWAP2 JUMPDEST DUP3 DUP2 LT ISZERO PUSH3 0x347 JUMPI DUP9 DUP7 ADD MLOAD DUP3 SSTORE SWAP5 DUP5 ADD SWAP5 PUSH1 0x1 SWAP1 SWAP2 ADD SWAP1 DUP5 ADD PUSH3 0x326 JUMP JUMPDEST POP DUP6 DUP3 LT ISZERO PUSH3 0x366 JUMPI DUP8 DUP6 ADD MLOAD PUSH1 0x0 NOT PUSH1 0x3 DUP9 SWAP1 SHL PUSH1 0xF8 AND SHR NOT AND DUP2 SSTORE JUMPDEST POP POP POP POP POP PUSH1 0x1 SWAP1 DUP2 SHL ADD SWAP1 SSTORE POP JUMP JUMPDEST PUSH2 0x8C4 DUP1 PUSH3 0x386 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 0xCF JUMPI PUSH1 0x0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0x70A08231 GT PUSH2 0x8C JUMPI DUP1 PUSH4 0x95D89B41 GT PUSH2 0x66 JUMPI DUP1 PUSH4 0x95D89B41 EQ PUSH2 0x1AA JUMPI DUP1 PUSH4 0xA9059CBB EQ PUSH2 0x1B2 JUMPI DUP1 PUSH4 0xDD62ED3E EQ PUSH2 0x1C5 JUMPI DUP1 PUSH4 0xF2FDE38B EQ PUSH2 0x1FE JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 PUSH4 0x70A08231 EQ PUSH2 0x15E JUMPI DUP1 PUSH4 0x715018A6 EQ PUSH2 0x187 JUMPI DUP1 PUSH4 0x8DA5CB5B EQ PUSH2 0x18F JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 PUSH4 0x6FDDE03 EQ PUSH2 0xD4 JUMPI DUP1 PUSH4 0x95EA7B3 EQ PUSH2 0xF2 JUMPI DUP1 PUSH4 0x18160DDD EQ PUSH2 0x115 JUMPI DUP1 PUSH4 0x23B872DD EQ PUSH2 0x127 JUMPI DUP1 PUSH4 0x313CE567 EQ PUSH2 0x13A JUMPI DUP1 PUSH4 0x40C10F19 EQ PUSH2 0x149 JUMPI JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0xDC PUSH2 0x211 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0xE9 SWAP2 SWAP1 PUSH2 0x70E JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0x105 PUSH2 0x100 CALLDATASIZE PUSH1 0x4 PUSH2 0x778 JUMP JUMPDEST PUSH2 0x2A3 JUMP JUMPDEST PUSH1 0x40 MLOAD SWAP1 ISZERO ISZERO DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0xE9 JUMP JUMPDEST PUSH1 0x2 SLOAD JUMPDEST PUSH1 0x40 MLOAD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0xE9 JUMP JUMPDEST PUSH2 0x105 PUSH2 0x135 CALLDATASIZE PUSH1 0x4 PUSH2 0x7A2 JUMP JUMPDEST PUSH2 0x2BD JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x12 DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0xE9 JUMP JUMPDEST PUSH2 0x15C PUSH2 0x157 CALLDATASIZE PUSH1 0x4 PUSH2 0x778 JUMP JUMPDEST PUSH2 0x2E1 JUMP JUMPDEST STOP JUMPDEST PUSH2 0x119 PUSH2 0x16C CALLDATASIZE PUSH1 0x4 PUSH2 0x7DE JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x20 DUP2 SWAP1 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD SWAP1 JUMP JUMPDEST PUSH2 0x15C PUSH2 0x2F7 JUMP JUMPDEST PUSH1 0x5 SLOAD PUSH1 0x40 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 SWAP2 AND DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0xE9 JUMP JUMPDEST PUSH2 0xDC PUSH2 0x30B JUMP JUMPDEST PUSH2 0x105 PUSH2 0x1C0 CALLDATASIZE PUSH1 0x4 PUSH2 0x778 JUMP JUMPDEST PUSH2 0x31A JUMP JUMPDEST PUSH2 0x119 PUSH2 0x1D3 CALLDATASIZE PUSH1 0x4 PUSH2 0x800 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP2 DUP3 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x1 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 0x15C PUSH2 0x20C CALLDATASIZE PUSH1 0x4 PUSH2 0x7DE JUMP JUMPDEST PUSH2 0x328 JUMP JUMPDEST PUSH1 0x60 PUSH1 0x3 DUP1 SLOAD PUSH2 0x220 SWAP1 PUSH2 0x833 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 0x24C SWAP1 PUSH2 0x833 JUMP JUMPDEST DUP1 ISZERO PUSH2 0x299 JUMPI DUP1 PUSH1 0x1F LT PUSH2 0x26E JUMPI PUSH2 0x100 DUP1 DUP4 SLOAD DIV MUL DUP4 MSTORE SWAP2 PUSH1 0x20 ADD SWAP2 PUSH2 0x299 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 0x27C JUMPI DUP3 SWAP1 SUB PUSH1 0x1F AND DUP3 ADD SWAP2 JUMPDEST POP POP POP POP POP SWAP1 POP SWAP1 JUMP JUMPDEST PUSH1 0x0 CALLER PUSH2 0x2B1 DUP2 DUP6 DUP6 PUSH2 0x36B JUMP JUMPDEST PUSH1 0x1 SWAP2 POP POP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 CALLER PUSH2 0x2CB DUP6 DUP3 DUP6 PUSH2 0x37D JUMP JUMPDEST PUSH2 0x2D6 DUP6 DUP6 DUP6 PUSH2 0x3FB JUMP JUMPDEST POP PUSH1 0x1 SWAP5 SWAP4 POP POP POP POP JUMP JUMPDEST PUSH2 0x2E9 PUSH2 0x45A JUMP JUMPDEST PUSH2 0x2F3 DUP3 DUP3 PUSH2 0x487 JUMP JUMPDEST POP POP JUMP JUMPDEST PUSH2 0x2FF PUSH2 0x45A JUMP JUMPDEST PUSH2 0x309 PUSH1 0x0 PUSH2 0x4BD JUMP JUMPDEST JUMP JUMPDEST PUSH1 0x60 PUSH1 0x4 DUP1 SLOAD PUSH2 0x220 SWAP1 PUSH2 0x833 JUMP JUMPDEST PUSH1 0x0 CALLER PUSH2 0x2B1 DUP2 DUP6 DUP6 PUSH2 0x3FB JUMP JUMPDEST PUSH2 0x330 PUSH2 0x45A JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND PUSH2 0x35F JUMPI PUSH1 0x40 MLOAD PUSH4 0x1E4FBDF7 PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x0 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x24 ADD JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH2 0x368 DUP2 PUSH2 0x4BD JUMP JUMPDEST POP JUMP JUMPDEST PUSH2 0x378 DUP4 DUP4 DUP4 PUSH1 0x1 PUSH2 0x50F JUMP JUMPDEST POP POP POP JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP4 DUP2 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x1 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 SWAP4 DUP7 AND DUP4 MSTORE SWAP3 SWAP1 MSTORE KECCAK256 SLOAD PUSH1 0x0 NOT DUP2 EQ PUSH2 0x3F5 JUMPI DUP2 DUP2 LT ISZERO PUSH2 0x3E6 JUMPI PUSH1 0x40 MLOAD PUSH4 0x7DC7A0D9 PUSH1 0xE1 SHL DUP2 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP5 AND PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x24 DUP2 ADD DUP3 SWAP1 MSTORE PUSH1 0x44 DUP2 ADD DUP4 SWAP1 MSTORE PUSH1 0x64 ADD PUSH2 0x356 JUMP JUMPDEST PUSH2 0x3F5 DUP5 DUP5 DUP5 DUP5 SUB PUSH1 0x0 PUSH2 0x50F JUMP JUMPDEST POP POP POP POP JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP4 AND PUSH2 0x425 JUMPI PUSH1 0x40 MLOAD PUSH4 0x4B637E8F PUSH1 0xE1 SHL DUP2 MSTORE PUSH1 0x0 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x24 ADD PUSH2 0x356 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP3 AND PUSH2 0x44F JUMPI PUSH1 0x40 MLOAD PUSH4 0xEC442F05 PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x0 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x24 ADD PUSH2 0x356 JUMP JUMPDEST PUSH2 0x378 DUP4 DUP4 DUP4 PUSH2 0x5E4 JUMP JUMPDEST PUSH1 0x5 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND CALLER EQ PUSH2 0x309 JUMPI PUSH1 0x40 MLOAD PUSH4 0x118CDAA7 PUSH1 0xE0 SHL DUP2 MSTORE CALLER PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x24 ADD PUSH2 0x356 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP3 AND PUSH2 0x4B1 JUMPI PUSH1 0x40 MLOAD PUSH4 0xEC442F05 PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x0 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x24 ADD PUSH2 0x356 JUMP JUMPDEST PUSH2 0x2F3 PUSH1 0x0 DUP4 DUP4 PUSH2 0x5E4 JUMP JUMPDEST PUSH1 0x5 DUP1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP4 DUP2 AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB NOT DUP4 AND DUP2 OR SWAP1 SWAP4 SSTORE PUSH1 0x40 MLOAD SWAP2 AND SWAP2 SWAP1 DUP3 SWAP1 PUSH32 0x8BE0079C531659141344CD1FD0A4F28419497F9722A3DAAFE3B4186F6B6457E0 SWAP1 PUSH1 0x0 SWAP1 LOG3 POP POP JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP5 AND PUSH2 0x539 JUMPI PUSH1 0x40 MLOAD PUSH4 0xE602DF05 PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x0 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x24 ADD PUSH2 0x356 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP4 AND PUSH2 0x563 JUMPI PUSH1 0x40 MLOAD PUSH4 0x4A1406B1 PUSH1 0xE1 SHL DUP2 MSTORE PUSH1 0x0 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x24 ADD PUSH2 0x356 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP1 DUP6 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x1 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 SWAP4 DUP8 AND DUP4 MSTORE SWAP3 SWAP1 MSTORE KECCAK256 DUP3 SWAP1 SSTORE DUP1 ISZERO PUSH2 0x3F5 JUMPI DUP3 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP5 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH32 0x8C5BE1E5EBEC7D5BD14F71427D1E84F3DD0314C0F7B2291E5B200AC8C7C3B925 DUP5 PUSH1 0x40 MLOAD PUSH2 0x5D6 SWAP2 DUP2 MSTORE PUSH1 0x20 ADD SWAP1 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG3 POP POP POP POP JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP4 AND PUSH2 0x60F JUMPI DUP1 PUSH1 0x2 PUSH1 0x0 DUP3 DUP3 SLOAD PUSH2 0x604 SWAP2 SWAP1 PUSH2 0x86D JUMP JUMPDEST SWAP1 SWAP2 SSTORE POP PUSH2 0x681 SWAP1 POP JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP4 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x20 DUP2 SWAP1 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD DUP2 DUP2 LT ISZERO PUSH2 0x662 JUMPI PUSH1 0x40 MLOAD PUSH4 0x391434E3 PUSH1 0xE2 SHL DUP2 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP6 AND PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x24 DUP2 ADD DUP3 SWAP1 MSTORE PUSH1 0x44 DUP2 ADD DUP4 SWAP1 MSTORE PUSH1 0x64 ADD PUSH2 0x356 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP5 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x20 DUP2 SWAP1 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SWAP1 DUP3 SWAP1 SUB SWAP1 SSTORE JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP3 AND PUSH2 0x69D JUMPI PUSH1 0x2 DUP1 SLOAD DUP3 SWAP1 SUB SWAP1 SSTORE PUSH2 0x6BC JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP3 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x20 DUP2 SWAP1 MSTORE PUSH1 0x40 SWAP1 KECCAK256 DUP1 SLOAD DUP3 ADD SWAP1 SSTORE JUMPDEST DUP2 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP4 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH32 0xDDF252AD1BE2C89B69C2B068FC378DAA952BA7F163C4A11628F55A4DF523B3EF DUP4 PUSH1 0x40 MLOAD PUSH2 0x701 SWAP2 DUP2 MSTORE PUSH1 0x20 ADD SWAP1 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG3 POP POP 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 0x73B JUMPI DUP6 DUP2 ADD DUP4 ADD MLOAD DUP6 DUP3 ADD PUSH1 0x40 ADD MSTORE DUP3 ADD PUSH2 0x71F JUMP JUMPDEST POP PUSH1 0x0 PUSH1 0x40 DUP3 DUP7 ADD ADD MSTORE PUSH1 0x40 PUSH1 0x1F NOT PUSH1 0x1F DUP4 ADD AND DUP6 ADD ADD SWAP3 POP POP POP SWAP3 SWAP2 POP POP JUMP JUMPDEST DUP1 CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND DUP2 EQ PUSH2 0x773 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH2 0x78B JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x794 DUP4 PUSH2 0x75C 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 0x7B7 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x7C0 DUP5 PUSH2 0x75C JUMP JUMPDEST SWAP3 POP PUSH2 0x7CE PUSH1 0x20 DUP6 ADD PUSH2 0x75C JUMP JUMPDEST SWAP2 POP PUSH1 0x40 DUP5 ADD CALLDATALOAD SWAP1 POP SWAP3 POP SWAP3 POP SWAP3 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x7F0 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x7F9 DUP3 PUSH2 0x75C JUMP JUMPDEST SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH2 0x813 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x81C DUP4 PUSH2 0x75C JUMP JUMPDEST SWAP2 POP PUSH2 0x82A PUSH1 0x20 DUP5 ADD PUSH2 0x75C JUMP JUMPDEST SWAP1 POP SWAP3 POP SWAP3 SWAP1 POP JUMP JUMPDEST PUSH1 0x1 DUP2 DUP2 SHR SWAP1 DUP3 AND DUP1 PUSH2 0x847 JUMPI PUSH1 0x7F DUP3 AND SWAP2 POP JUMPDEST PUSH1 0x20 DUP3 LT DUP2 SUB PUSH2 0x867 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 DUP1 DUP3 ADD DUP1 DUP3 GT ISZERO PUSH2 0x2B7 JUMPI PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH1 0x0 MSTORE PUSH1 0x11 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 LT SWAP12 SWAP11 MSIZE SWAP16 SIGNEXTEND 0xAD 0xC2 EXTCODEHASH 0xA9 JUMPI 0xFB ISZERO LT 0xC0 DUP12 SLT 0xFB SLOAD 0xCD DUP12 0xAF GASPRICE 0xC2 0x28 0x29 CALLDATASIZE 0x4F 0xB2 MUL SWAP15 SDIV PUSH5 0x736F6C6343 STOP ADDMOD EQ STOP CALLER ", - "sourceMap": "167:234:8:-:0;;;222:76;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;204:10;282:4;288:6;1667:5:2;:13;282:4:8;1667:5:2;:13;:::i;:::-;-1:-1:-1;1690:7:2;:17;1700:7;1690;:17;:::i;:::-;-1:-1:-1;;;;;;;;1273:26:0;;1269:95;;1322:31;;-1:-1:-1;;;1322:31:0;;1350:1;1322:31;;;4293:51:10;4266:18;;1322:31:0;;;;;;;1269:95;1373:32;1392:12;1373:18;:32::i;:::-;1225:187;222:76:8;;167:234;;2912:187:0;3004:6;;;-1:-1:-1;;;;;3020:17:0;;;-1:-1:-1;;;;;;3020:17:0;;;;;;;3052:40;;3004:6;;;3020:17;3004:6;;3052:40;;2985:16;;3052:40;2975:124;2912:187;:::o;14:127:10:-;75:10;70:3;66:20;63:1;56:31;106:4;103:1;96:15;130:4;127:1;120:15;146:840;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:10;;;353:36;;;369:18;;:::i;:::-;444:2;438:9;412:2;498:13;;-1:-1:-1;;494:22:10;;;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;;;954:1;932:15;;;928:24;;;921:35;;;;936:6;146:840;-1:-1:-1;;;;146:840:10:o;991:562::-;1090:6;1098;1151:2;1139:9;1130:7;1126:23;1122:32;1119:52;;;1167:1;1164;1157:12;1119:52;1194:16;;-1:-1:-1;;;;;1259:14:10;;;1256:34;;;1286:1;1283;1276:12;1256:34;1309:61;1362:7;1353:6;1342:9;1338:22;1309:61;:::i;:::-;1299:71;;1416:2;1405:9;1401:18;1395:25;1379:41;;1445:2;1435:8;1432:16;1429:36;;;1461:1;1458;1451:12;1429:36;;1484:63;1539:7;1528:8;1517:9;1513:24;1484:63;:::i;:::-;1474:73;;;991:562;;;;;:::o;1558:380::-;1637:1;1633:12;;;;1680;;;1701:61;;1755:4;1747:6;1743:17;1733:27;;1701:61;1808:2;1800:6;1797:14;1777:18;1774:38;1771:161;;1854:10;1849:3;1845:20;1842:1;1835:31;1889:4;1886:1;1879:15;1917:4;1914:1;1907:15;1771:161;;1558:380;;;:::o;2069:545::-;2171:2;2166:3;2163:11;2160:448;;;2207:1;2232:5;2228:2;2221:17;2277:4;2273:2;2263:19;2347:2;2335:10;2331:19;2328:1;2324:27;2318:4;2314:38;2383:4;2371:10;2368:20;2365:47;;;-1:-1:-1;2406:4:10;2365:47;2461:2;2456:3;2452:12;2449:1;2445:20;2439:4;2435:31;2425:41;;2516:82;2534:2;2527:5;2524:13;2516:82;;;2579:17;;;2560:1;2549:13;2516:82;;;2520:3;;;2160:448;2069:545;;;:::o;2790:1352::-;2910:10;;-1:-1:-1;;;;;2932:30:10;;2929:56;;;2965:18;;:::i;:::-;2994:97;3084:6;3044:38;3076:4;3070:11;3044:38;:::i;:::-;3038:4;2994:97;:::i;:::-;3146:4;;3210:2;3199:14;;3227:1;3222:663;;;;3929:1;3946:6;3943:89;;;-1:-1:-1;3998:19:10;;;3992:26;3943:89;-1:-1:-1;;2747:1:10;2743:11;;;2739:24;2735:29;2725:40;2771:1;2767:11;;;2722:57;4045:81;;3192:944;;3222:663;2016:1;2009:14;;;2053:4;2040:18;;-1:-1:-1;;3258:20:10;;;3376:236;3390:7;3387:1;3384:14;3376:236;;;3479:19;;;3473:26;3458:42;;3571:27;;;;3539:1;3527:14;;;;3406:19;;3376:236;;;3380:3;3640:6;3631:7;3628:19;3625:201;;;3701:19;;;3695:26;-1:-1:-1;;3784:1:10;3780:14;;;3796:3;3776:24;3772:37;3768:42;3753:58;3738:74;;3625:201;-1:-1:-1;;;;;3872:1:10;3856:14;;;3852:22;3839:36;;-1:-1:-1;2790:1352:10:o;4147:203::-;167:234:8;;;;;;" - }, - "deployedBytecode": { - "functionDebugData": { - "@_approve_690": { - "entryPoint": 875, - "id": 690, - "parameterSlots": 3, - "returnSlots": 0 - }, - "@_approve_750": { - "entryPoint": 1295, - "id": 750, - "parameterSlots": 4, - "returnSlots": 0 - }, - "@_checkOwner_84": { - "entryPoint": 1114, - "id": 84, - "parameterSlots": 0, - "returnSlots": 0 - }, - "@_mint_639": { - "entryPoint": 1159, - "id": 639, - "parameterSlots": 2, - "returnSlots": 0 - }, - "@_msgSender_915": { - "entryPoint": null, - "id": 915, - "parameterSlots": 0, - "returnSlots": 1 - }, - "@_spendAllowance_798": { - "entryPoint": 893, - "id": 798, - "parameterSlots": 3, - "returnSlots": 0 - }, - "@_transferOwnership_146": { - "entryPoint": 1213, - "id": 146, - "parameterSlots": 1, - "returnSlots": 0 - }, - "@_transfer_529": { - "entryPoint": 1019, - "id": 529, - "parameterSlots": 3, - "returnSlots": 0 - }, - "@_update_606": { - "entryPoint": 1508, - "id": 606, - "parameterSlots": 3, - "returnSlots": 0 - }, - "@allowance_426": { - "entryPoint": null, - "id": 426, - "parameterSlots": 2, - "returnSlots": 1 - }, - "@approve_450": { - "entryPoint": 675, - "id": 450, - "parameterSlots": 2, - "returnSlots": 1 - }, - "@balanceOf_385": { - "entryPoint": null, - "id": 385, - "parameterSlots": 1, - "returnSlots": 1 - }, - "@decimals_363": { - "entryPoint": null, - "id": 363, - "parameterSlots": 0, - "returnSlots": 1 - }, - "@mint_1156": { - "entryPoint": 737, - "id": 1156, - "parameterSlots": 2, - "returnSlots": 0 - }, - "@name_345": { - "entryPoint": 529, - "id": 345, - "parameterSlots": 0, - "returnSlots": 1 - }, - "@owner_67": { - "entryPoint": null, - "id": 67, - "parameterSlots": 0, - "returnSlots": 1 - }, - "@renounceOwnership_98": { - "entryPoint": 759, - "id": 98, - "parameterSlots": 0, - "returnSlots": 0 - }, - "@symbol_354": { - "entryPoint": 779, - "id": 354, - "parameterSlots": 0, - "returnSlots": 1 - }, - "@totalSupply_372": { - "entryPoint": null, - "id": 372, - "parameterSlots": 0, - "returnSlots": 1 - }, - "@transferFrom_482": { - "entryPoint": 701, - "id": 482, - "parameterSlots": 3, - "returnSlots": 1 - }, - "@transferOwnership_126": { - "entryPoint": 808, - "id": 126, - "parameterSlots": 1, - "returnSlots": 0 - }, - "@transfer_409": { - "entryPoint": 794, - "id": 409, - "parameterSlots": 2, - "returnSlots": 1 - }, - "abi_decode_address": { - "entryPoint": 1884, - "id": null, - "parameterSlots": 1, - "returnSlots": 1 - }, - "abi_decode_tuple_t_address": { - "entryPoint": 2014, - "id": null, - "parameterSlots": 2, - "returnSlots": 1 - }, - "abi_decode_tuple_t_addresst_address": { - "entryPoint": 2048, - "id": null, - "parameterSlots": 2, - "returnSlots": 2 - }, - "abi_decode_tuple_t_addresst_addresst_uint256": { - "entryPoint": 1954, - "id": null, - "parameterSlots": 2, - "returnSlots": 3 - }, - "abi_decode_tuple_t_addresst_uint256": { - "entryPoint": 1912, - "id": null, - "parameterSlots": 2, - "returnSlots": 2 - }, - "abi_encode_tuple_t_address__to_t_address__fromStack_reversed": { - "entryPoint": null, - "id": null, - "parameterSlots": 2, - "returnSlots": 1 - }, - "abi_encode_tuple_t_address_t_uint256_t_uint256__to_t_address_t_uint256_t_uint256__fromStack_reversed": { - "entryPoint": null, - "id": null, - "parameterSlots": 4, - "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": 1806, - "id": null, - "parameterSlots": 2, - "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": 2157, - "id": null, - "parameterSlots": 2, - "returnSlots": 1 - }, - "extract_byte_array_length": { - "entryPoint": 2099, - "id": null, - "parameterSlots": 1, - "returnSlots": 1 - } - }, - "generatedSources": [ - { - "ast": { - "nodeType": "YulBlock", - "src": "0:3523:10", - "statements": [ - { - "nodeType": "YulBlock", - "src": "6:3:10", - "statements": [] + "id": 2116, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "3620:130:15", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 2117, + "nodeType": "ExpressionStatement", + "src": "3620:130:15" }, { - "body": { - "nodeType": "YulBlock", - "src": "135:427:10", - "statements": [ - { - "nodeType": "YulVariableDeclaration", - "src": "145:12:10", - "value": { - "kind": "number", - "nodeType": "YulLiteral", - "src": "155:2:10", - "type": "", - "value": "32" + "assignments": [ + 2120 + ], + "declarations": [ + { + "constant": false, + "id": 2120, + "mutability": "mutable", + "name": "schedule", + "nameLocation": "3784:8:15", + "nodeType": "VariableDeclaration", + "scope": 2153, + "src": "3761:31:15", + "stateVariable": false, + "storageLocation": "memory", + "typeDescriptions": { + "typeIdentifier": "t_struct$_VestingSchedule_$1941_memory_ptr", + "typeString": "struct TokenVesting.VestingSchedule" + }, + "typeName": { + "id": 2119, + "nodeType": "UserDefinedTypeName", + "pathNode": { + "id": 2118, + "name": "VestingSchedule", + "nameLocations": [ + "3761:15:15" + ], + "nodeType": "IdentifierPath", + "referencedDeclaration": 1941, + "src": "3761:15:15" }, - "variables": [ - { - "name": "_1", - "nodeType": "YulTypedName", - "src": "149:2:10", - "type": "" - } - ] + "referencedDeclaration": 1941, + "src": "3761:15:15", + "typeDescriptions": { + "typeIdentifier": "t_struct$_VestingSchedule_$1941_storage_ptr", + "typeString": "struct TokenVesting.VestingSchedule" + } }, + "visibility": "internal" + } + ], + "id": 2129, + "initialValue": { + "arguments": [ { - "expression": { - "arguments": [ - { - "name": "headStart", - "nodeType": "YulIdentifier", - "src": "173:9:10" - }, - { - "name": "_1", - "nodeType": "YulIdentifier", - "src": "184:2:10" - } - ], - "functionName": { - "name": "mstore", - "nodeType": "YulIdentifier", - "src": "166:6:10" - }, - "nodeType": "YulFunctionCall", - "src": "166:21:10" + "id": 2122, + "name": "amount", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2066, + "src": "3824:6:15", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + { + "id": 2123, + "name": "startTime", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2072, + "src": "3844:9:15", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + { + "id": 2124, + "name": "cliffDuration", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2068, + "src": "3867:13:15", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + { + "id": 2125, + "name": "vestingDuration", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2070, + "src": "3894:15:15", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + { + "hexValue": "30", + "id": 2126, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "3923:1:15", + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" }, - "nodeType": "YulExpressionStatement", - "src": "166:21:10" + "value": "0" }, { - "nodeType": "YulVariableDeclaration", - "src": "196:27:10", - "value": { - "arguments": [ - { - "name": "value0", - "nodeType": "YulIdentifier", - "src": "216:6:10" - } - ], - "functionName": { - "name": "mload", - "nodeType": "YulIdentifier", - "src": "210:5:10" - }, - "nodeType": "YulFunctionCall", - "src": "210:13:10" + "hexValue": "66616c7365", + "id": 2127, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "bool", + "lValueRequested": false, + "nodeType": "Literal", + "src": "3938:5:15", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" }, - "variables": [ - { - "name": "length", - "nodeType": "YulTypedName", - "src": "200:6:10", - "type": "" + "value": "false" + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + ], + "id": 2121, + "name": "VestingSchedule", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1941, + "src": "3795:15:15", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_struct$_VestingSchedule_$1941_storage_ptr_$", + "typeString": "type(struct TokenVesting.VestingSchedule storage pointer)" + } + }, + "id": 2128, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "structConstructorCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "3795:158:15", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_struct$_VestingSchedule_$1941_memory_ptr", + "typeString": "struct TokenVesting.VestingSchedule memory" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "3761:192:15" + }, + { + "expression": { + "id": 2134, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "baseExpression": { + "id": 2130, + "name": "vestingSchedules", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1953, + "src": "3963:16:15", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_address_$_t_struct$_VestingSchedule_$1941_storage_$", + "typeString": "mapping(address => struct TokenVesting.VestingSchedule storage ref)" + } + }, + "id": 2132, + "indexExpression": { + "id": 2131, + "name": "beneficiary", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2064, + "src": "3980:11:15", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": true, + "nodeType": "IndexAccess", + "src": "3963:29:15", + "typeDescriptions": { + "typeIdentifier": "t_struct$_VestingSchedule_$1941_storage", + "typeString": "struct TokenVesting.VestingSchedule storage ref" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "id": 2133, + "name": "schedule", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2120, + "src": "3995:8:15", + "typeDescriptions": { + "typeIdentifier": "t_struct$_VestingSchedule_$1941_memory_ptr", + "typeString": "struct TokenVesting.VestingSchedule memory" + } + }, + "src": "3963:40:15", + "typeDescriptions": { + "typeIdentifier": "t_struct$_VestingSchedule_$1941_storage", + "typeString": "struct TokenVesting.VestingSchedule storage ref" + } + }, + "id": 2135, + "nodeType": "ExpressionStatement", + "src": "3963:40:15" + }, + { + "expression": { + "arguments": [ + { + "arguments": [], + "expression": { + "argumentTypes": [], + "id": 2139, + "name": "owner", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 67, + "src": "4037:5:15", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_view$__$returns$_t_address_$", + "typeString": "function () view returns (address)" } - ] + }, + "id": 2140, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "4037:7:15", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } }, { + "arguments": [ + { + "id": 2143, + "name": "this", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": -28, + "src": "4054:4:15", + "typeDescriptions": { + "typeIdentifier": "t_contract$_TokenVesting_$2399", + "typeString": "contract TokenVesting" + } + } + ], "expression": { - "arguments": [ - { - "arguments": [ - { - "name": "headStart", - "nodeType": "YulIdentifier", - "src": "243:9:10" - }, - { - "name": "_1", - "nodeType": "YulIdentifier", - "src": "254:2:10" - } - ], - "functionName": { - "name": "add", - "nodeType": "YulIdentifier", - "src": "239:3:10" - }, - "nodeType": "YulFunctionCall", - "src": "239:18:10" - }, + "argumentTypes": [ { - "name": "length", - "nodeType": "YulIdentifier", - "src": "259:6:10" + "typeIdentifier": "t_contract$_TokenVesting_$2399", + "typeString": "contract TokenVesting" } ], - "functionName": { - "name": "mstore", - "nodeType": "YulIdentifier", - "src": "232:6:10" + "id": 2142, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "4046:7:15", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_address_$", + "typeString": "type(address)" }, - "nodeType": "YulFunctionCall", - "src": "232:34:10" - }, - "nodeType": "YulExpressionStatement", - "src": "232:34:10" - }, - { - "nodeType": "YulVariableDeclaration", - "src": "275:10:10", - "value": { - "kind": "number", - "nodeType": "YulLiteral", - "src": "284:1:10", - "type": "", - "value": "0" - }, - "variables": [ - { - "name": "i", - "nodeType": "YulTypedName", - "src": "279:1:10", - "type": "" + "typeName": { + "id": 2141, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "4046:7:15", + "typeDescriptions": {} } - ] + }, + "id": 2144, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "typeConversion", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "4046:13:15", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } }, { - "body": { - "nodeType": "YulBlock", - "src": "344:90:10", - "statements": [ - { - "expression": { - "arguments": [ - { - "arguments": [ - { - "arguments": [ - { - "name": "headStart", - "nodeType": "YulIdentifier", - "src": "373:9:10" - }, - { - "name": "i", - "nodeType": "YulIdentifier", - "src": "384:1:10" - } - ], - "functionName": { - "name": "add", - "nodeType": "YulIdentifier", - "src": "369:3:10" - }, - "nodeType": "YulFunctionCall", - "src": "369:17:10" - }, - { - "kind": "number", - "nodeType": "YulLiteral", - "src": "388:2:10", - "type": "", - "value": "64" - } - ], - "functionName": { - "name": "add", - "nodeType": "YulIdentifier", - "src": "365:3:10" - }, - "nodeType": "YulFunctionCall", - "src": "365:26:10" - }, - { - "arguments": [ - { - "arguments": [ - { - "arguments": [ - { - "name": "value0", - "nodeType": "YulIdentifier", - "src": "407:6:10" - }, - { - "name": "i", - "nodeType": "YulIdentifier", - "src": "415:1:10" - } - ], - "functionName": { - "name": "add", - "nodeType": "YulIdentifier", - "src": "403:3:10" - }, - "nodeType": "YulFunctionCall", - "src": "403:14:10" - }, - { - "name": "_1", - "nodeType": "YulIdentifier", - "src": "419:2:10" - } - ], - "functionName": { - "name": "add", - "nodeType": "YulIdentifier", - "src": "399:3:10" - }, - "nodeType": "YulFunctionCall", - "src": "399:23:10" - } - ], - "functionName": { - "name": "mload", - "nodeType": "YulIdentifier", - "src": "393:5:10" - }, - "nodeType": "YulFunctionCall", - "src": "393:30:10" - } - ], - "functionName": { - "name": "mstore", - "nodeType": "YulIdentifier", - "src": "358:6:10" - }, - "nodeType": "YulFunctionCall", - "src": "358:66:10" - }, - "nodeType": "YulExpressionStatement", - "src": "358:66:10" - } - ] + "id": 2145, + "name": "amount", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2066, + "src": "4061:6:15", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" }, - "condition": { - "arguments": [ - { - "name": "i", - "nodeType": "YulIdentifier", - "src": "305:1:10" - }, - { - "name": "length", - "nodeType": "YulIdentifier", - "src": "308:6:10" - } - ], - "functionName": { - "name": "lt", - "nodeType": "YulIdentifier", - "src": "302:2:10" - }, - "nodeType": "YulFunctionCall", - "src": "302:13:10" + { + "typeIdentifier": "t_address", + "typeString": "address" }, - "nodeType": "YulForLoop", - "post": { - "nodeType": "YulBlock", - "src": "316:19:10", - "statements": [ - { - "nodeType": "YulAssignment", - "src": "318:15:10", - "value": { - "arguments": [ - { - "name": "i", - "nodeType": "YulIdentifier", - "src": "327:1:10" - }, - { - "name": "_1", - "nodeType": "YulIdentifier", - "src": "330:2:10" - } - ], - "functionName": { - "name": "add", - "nodeType": "YulIdentifier", - "src": "323:3:10" - }, - "nodeType": "YulFunctionCall", - "src": "323:10:10" - }, - "variableNames": [ - { - "name": "i", - "nodeType": "YulIdentifier", - "src": "318:1:10" - } - ] - } - ] + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "expression": { + "id": 2136, + "name": "token", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1948, + "src": "4014:5:15", + "typeDescriptions": { + "typeIdentifier": "t_contract$_IERC20_$967", + "typeString": "contract IERC20" + } + }, + "id": 2138, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberLocation": "4020:16:15", + "memberName": "safeTransferFrom", + "nodeType": "MemberAccess", + "referencedDeclaration": 1067, + "src": "4014:22:15", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_nonpayable$_t_contract$_IERC20_$967_$_t_address_$_t_address_$_t_uint256_$returns$__$attached_to$_t_contract$_IERC20_$967_$", + "typeString": "function (contract IERC20,address,address,uint256)" + } + }, + "id": 2146, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "4014:54:15", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 2147, + "nodeType": "ExpressionStatement", + "src": "4014:54:15" + }, + { + "eventCall": { + "arguments": [ + { + "id": 2149, + "name": "beneficiary", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2064, + "src": "4107:11:15", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "id": 2150, + "name": "amount", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2066, + "src": "4120:6:15", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" }, - "pre": { - "nodeType": "YulBlock", - "src": "298:3:10", - "statements": [] + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "id": 2148, + "name": "VestingScheduleCreated", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1963, + "src": "4084:22:15", + "typeDescriptions": { + "typeIdentifier": "t_function_event_nonpayable$_t_address_$_t_uint256_$returns$__$", + "typeString": "function (address,uint256)" + } + }, + "id": 2151, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "4084:43:15", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 2152, + "nodeType": "EmitStatement", + "src": "4079:48:15" + } + ] + }, + "functionSelector": "1bf0b08b", + "id": 2154, + "implemented": true, + "kind": "function", + "modifiers": [ + { + "id": 2075, + "kind": "modifierInvocation", + "modifierName": { + "id": 2074, + "name": "onlyOwner", + "nameLocations": [ + "3168:9:15" + ], + "nodeType": "IdentifierPath", + "referencedDeclaration": 58, + "src": "3168:9:15" + }, + "nodeType": "ModifierInvocation", + "src": "3168:9:15" + }, + { + "arguments": [ + { + "id": 2077, + "name": "beneficiary", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2064, + "src": "3194:11:15", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + } + ], + "id": 2078, + "kind": "modifierInvocation", + "modifierName": { + "id": 2076, + "name": "onlyWhitelisted", + "nameLocations": [ + "3178:15:15" + ], + "nodeType": "IdentifierPath", + "referencedDeclaration": 2016, + "src": "3178:15:15" + }, + "nodeType": "ModifierInvocation", + "src": "3178:28:15" + }, + { + "id": 2080, + "kind": "modifierInvocation", + "modifierName": { + "id": 2079, + "name": "whenNotPaused", + "nameLocations": [ + "3207:13:15" + ], + "nodeType": "IdentifierPath", + "referencedDeclaration": 1757, + "src": "3207:13:15" + }, + "nodeType": "ModifierInvocation", + "src": "3207:13:15" + } + ], + "name": "createVestingSchedule", + "nameLocation": "2987:21:15", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 2073, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 2064, + "mutability": "mutable", + "name": "beneficiary", + "nameLocation": "3026:11:15", + "nodeType": "VariableDeclaration", + "scope": 2154, + "src": "3018:19:15", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 2063, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "3018:7:15", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 2066, + "mutability": "mutable", + "name": "amount", + "nameLocation": "3055:6:15", + "nodeType": "VariableDeclaration", + "scope": 2154, + "src": "3047:14:15", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 2065, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "3047:7:15", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 2068, + "mutability": "mutable", + "name": "cliffDuration", + "nameLocation": "3079:13:15", + "nodeType": "VariableDeclaration", + "scope": 2154, + "src": "3071:21:15", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 2067, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "3071:7:15", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 2070, + "mutability": "mutable", + "name": "vestingDuration", + "nameLocation": "3110:15:15", + "nodeType": "VariableDeclaration", + "scope": 2154, + "src": "3102:23:15", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 2069, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "3102:7:15", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 2072, + "mutability": "mutable", + "name": "startTime", + "nameLocation": "3143:9:15", + "nodeType": "VariableDeclaration", + "scope": 2154, + "src": "3135:17:15", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 2071, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "3135:7:15", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "src": "3008:150:15" + }, + "returnParameters": { + "id": 2081, + "nodeType": "ParameterList", + "parameters": [], + "src": "3221:0:15" + }, + "scope": 2399, + "src": "2978:1156:15", + "stateMutability": "nonpayable", + "virtual": false, + "visibility": "external" + }, + { + "body": { + "id": 2223, + "nodeType": "Block", + "src": "4236:673:15", + "statements": [ + { + "assignments": [ + 2163 + ], + "declarations": [ + { + "constant": false, + "id": 2163, + "mutability": "mutable", + "name": "schedule", + "nameLocation": "4322:8:15", + "nodeType": "VariableDeclaration", + "scope": 2223, + "src": "4299:31:15", + "stateVariable": false, + "storageLocation": "memory", + "typeDescriptions": { + "typeIdentifier": "t_struct$_VestingSchedule_$1941_memory_ptr", + "typeString": "struct TokenVesting.VestingSchedule" + }, + "typeName": { + "id": 2162, + "nodeType": "UserDefinedTypeName", + "pathNode": { + "id": 2161, + "name": "VestingSchedule", + "nameLocations": [ + "4299:15:15" + ], + "nodeType": "IdentifierPath", + "referencedDeclaration": 1941, + "src": "4299:15:15" }, - "src": "294:140:10" + "referencedDeclaration": 1941, + "src": "4299:15:15", + "typeDescriptions": { + "typeIdentifier": "t_struct$_VestingSchedule_$1941_storage_ptr", + "typeString": "struct TokenVesting.VestingSchedule" + } }, + "visibility": "internal" + } + ], + "id": 2167, + "initialValue": { + "baseExpression": { + "id": 2164, + "name": "vestingSchedules", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1953, + "src": "4333:16:15", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_address_$_t_struct$_VestingSchedule_$1941_storage_$", + "typeString": "mapping(address => struct TokenVesting.VestingSchedule storage ref)" + } + }, + "id": 2166, + "indexExpression": { + "id": 2165, + "name": "beneficiary", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2156, + "src": "4350:11:15", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "4333:29:15", + "typeDescriptions": { + "typeIdentifier": "t_struct$_VestingSchedule_$1941_storage", + "typeString": "struct TokenVesting.VestingSchedule storage ref" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "4299:63:15" + }, + { + "expression": { + "arguments": [ { - "expression": { - "arguments": [ - { - "arguments": [ - { - "arguments": [ - { - "name": "headStart", - "nodeType": "YulIdentifier", - "src": "458:9:10" - }, - { - "name": "length", - "nodeType": "YulIdentifier", - "src": "469:6:10" - } - ], - "functionName": { - "name": "add", - "nodeType": "YulIdentifier", - "src": "454:3:10" - }, - "nodeType": "YulFunctionCall", - "src": "454:22:10" - }, - { - "kind": "number", - "nodeType": "YulLiteral", - "src": "478:2:10", - "type": "", - "value": "64" - } - ], - "functionName": { - "name": "add", - "nodeType": "YulIdentifier", - "src": "450:3:10" - }, - "nodeType": "YulFunctionCall", - "src": "450:31:10" - }, - { - "kind": "number", - "nodeType": "YulLiteral", - "src": "483:1:10", - "type": "", - "value": "0" + "id": 2171, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "nodeType": "UnaryOperation", + "operator": "!", + "prefix": true, + "src": "4380:17:15", + "subExpression": { + "expression": { + "id": 2169, + "name": "schedule", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2163, + "src": "4381:8:15", + "typeDescriptions": { + "typeIdentifier": "t_struct$_VestingSchedule_$1941_memory_ptr", + "typeString": "struct TokenVesting.VestingSchedule memory" } - ], - "functionName": { - "name": "mstore", - "nodeType": "YulIdentifier", - "src": "443:6:10" }, - "nodeType": "YulFunctionCall", - "src": "443:42:10" + "id": 2170, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberLocation": "4390:7:15", + "memberName": "revoked", + "nodeType": "MemberAccess", + "referencedDeclaration": 1940, + "src": "4381:16:15", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } }, - "nodeType": "YulExpressionStatement", - "src": "443:42:10" + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } }, { - "nodeType": "YulAssignment", - "src": "494:62:10", - "value": { - "arguments": [ - { - "arguments": [ - { - "name": "headStart", - "nodeType": "YulIdentifier", - "src": "510:9:10" - }, - { - "arguments": [ - { - "arguments": [ - { - "name": "length", - "nodeType": "YulIdentifier", - "src": "529:6:10" - }, - { - "kind": "number", - "nodeType": "YulLiteral", - "src": "537:2:10", - "type": "", - "value": "31" - } - ], - "functionName": { - "name": "add", - "nodeType": "YulIdentifier", - "src": "525:3:10" - }, - "nodeType": "YulFunctionCall", - "src": "525:15:10" - }, - { - "arguments": [ - { - "kind": "number", - "nodeType": "YulLiteral", - "src": "546:2:10", - "type": "", - "value": "31" - } - ], - "functionName": { - "name": "not", - "nodeType": "YulIdentifier", - "src": "542:3:10" - }, - "nodeType": "YulFunctionCall", - "src": "542:7:10" - } - ], - "functionName": { - "name": "and", - "nodeType": "YulIdentifier", - "src": "521:3:10" - }, - "nodeType": "YulFunctionCall", - "src": "521:29:10" - } - ], - "functionName": { - "name": "add", - "nodeType": "YulIdentifier", - "src": "506:3:10" - }, - "nodeType": "YulFunctionCall", - "src": "506:45:10" - }, - { - "kind": "number", - "nodeType": "YulLiteral", - "src": "553:2:10", - "type": "", - "value": "64" - } - ], - "functionName": { - "name": "add", - "nodeType": "YulIdentifier", - "src": "502:3:10" - }, - "nodeType": "YulFunctionCall", - "src": "502:54:10" + "hexValue": "56657374696e67207363686564756c65207265766f6b6564", + "id": 2172, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "string", + "lValueRequested": false, + "nodeType": "Literal", + "src": "4399:26:15", + "typeDescriptions": { + "typeIdentifier": "t_stringliteral_b8b87812c352fc8e39cdfe1757bfbcecb484013d66c0da14d0ba3b167d668ffe", + "typeString": "literal_string \"Vesting schedule revoked\"" }, - "variableNames": [ - { - "name": "tail", - "nodeType": "YulIdentifier", - "src": "494:4:10" - } - ] + "value": "Vesting schedule revoked" + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + { + "typeIdentifier": "t_stringliteral_b8b87812c352fc8e39cdfe1757bfbcecb484013d66c0da14d0ba3b167d668ffe", + "typeString": "literal_string \"Vesting schedule revoked\"" + } + ], + "id": 2168, + "name": "require", + "nodeType": "Identifier", + "overloadedDeclarations": [ + -18, + -18 + ], + "referencedDeclaration": -18, + "src": "4372:7:15", + "typeDescriptions": { + "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", + "typeString": "function (bool,string memory) pure" } - ] - }, - "name": "abi_encode_tuple_t_string_memory_ptr__to_t_string_memory_ptr__fromStack_reversed", - "nodeType": "YulFunctionDefinition", - "parameters": [ - { - "name": "headStart", - "nodeType": "YulTypedName", - "src": "104:9:10", - "type": "" }, - { - "name": "value0", - "nodeType": "YulTypedName", - "src": "115:6:10", - "type": "" + "id": 2173, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "4372:54:15", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" } + }, + "id": 2174, + "nodeType": "ExpressionStatement", + "src": "4372:54:15" + }, + { + "assignments": [ + 2176 ], - "returnVariables": [ + "declarations": [ { - "name": "tail", - "nodeType": "YulTypedName", - "src": "126:4:10", - "type": "" + "constant": false, + "id": 2176, + "mutability": "mutable", + "name": "currentTime", + "nameLocation": "4445:11:15", + "nodeType": "VariableDeclaration", + "scope": 2223, + "src": "4437:19:15", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 2175, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "4437:7:15", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" } ], - "src": "14:548:10" + "id": 2179, + "initialValue": { + "expression": { + "id": 2177, + "name": "block", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": -4, + "src": "4459:5:15", + "typeDescriptions": { + "typeIdentifier": "t_magic_block", + "typeString": "block" + } + }, + "id": 2178, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberLocation": "4465:9:15", + "memberName": "timestamp", + "nodeType": "MemberAccess", + "src": "4459:15:15", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "4437:37:15" }, { - "body": { - "nodeType": "YulBlock", - "src": "616:124:10", - "statements": [ - { - "nodeType": "YulAssignment", - "src": "626:29:10", - "value": { - "arguments": [ - { - "name": "offset", - "nodeType": "YulIdentifier", - "src": "648:6:10" - } - ], - "functionName": { - "name": "calldataload", - "nodeType": "YulIdentifier", - "src": "635:12:10" - }, - "nodeType": "YulFunctionCall", - "src": "635:20:10" + "condition": { + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 2186, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "id": 2180, + "name": "currentTime", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2176, + "src": "4487:11:15", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "<", + "rightExpression": { + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 2185, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "expression": { + "id": 2181, + "name": "schedule", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2163, + "src": "4501:8:15", + "typeDescriptions": { + "typeIdentifier": "t_struct$_VestingSchedule_$1941_memory_ptr", + "typeString": "struct TokenVesting.VestingSchedule memory" + } }, - "variableNames": [ - { - "name": "value", - "nodeType": "YulIdentifier", - "src": "626:5:10" + "id": 2182, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberLocation": "4510:9:15", + "memberName": "startTime", + "nodeType": "MemberAccess", + "referencedDeclaration": 1932, + "src": "4501:18:15", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "+", + "rightExpression": { + "expression": { + "id": 2183, + "name": "schedule", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2163, + "src": "4522:8:15", + "typeDescriptions": { + "typeIdentifier": "t_struct$_VestingSchedule_$1941_memory_ptr", + "typeString": "struct TokenVesting.VestingSchedule memory" } - ] + }, + "id": 2184, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberLocation": "4531:13:15", + "memberName": "cliffDuration", + "nodeType": "MemberAccess", + "referencedDeclaration": 1934, + "src": "4522:22:15", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } }, + "src": "4501:43:15", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "4487:57:15", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "id": 2190, + "nodeType": "IfStatement", + "src": "4484:95:15", + "trueBody": { + "id": 2189, + "nodeType": "Block", + "src": "4546:33:15", + "statements": [ { - "body": { - "nodeType": "YulBlock", - "src": "718:16:10", - "statements": [ - { - "expression": { - "arguments": [ - { - "kind": "number", - "nodeType": "YulLiteral", - "src": "727:1:10", - "type": "", - "value": "0" - }, - { - "kind": "number", - "nodeType": "YulLiteral", - "src": "730:1:10", - "type": "", - "value": "0" - } - ], - "functionName": { - "name": "revert", - "nodeType": "YulIdentifier", - "src": "720:6:10" - }, - "nodeType": "YulFunctionCall", - "src": "720:12:10" - }, - "nodeType": "YulExpressionStatement", - "src": "720:12:10" - } - ] + "expression": { + "hexValue": "30", + "id": 2187, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "4567:1:15", + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" }, - "condition": { - "arguments": [ - { - "arguments": [ - { - "name": "value", - "nodeType": "YulIdentifier", - "src": "677:5:10" - }, - { - "arguments": [ - { - "name": "value", - "nodeType": "YulIdentifier", - "src": "688:5:10" - }, - { - "arguments": [ - { - "arguments": [ - { - "kind": "number", - "nodeType": "YulLiteral", - "src": "703:3:10", - "type": "", - "value": "160" - }, - { - "kind": "number", - "nodeType": "YulLiteral", - "src": "708:1:10", - "type": "", - "value": "1" - } - ], - "functionName": { - "name": "shl", - "nodeType": "YulIdentifier", - "src": "699:3:10" - }, - "nodeType": "YulFunctionCall", - "src": "699:11:10" - }, - { - "kind": "number", - "nodeType": "YulLiteral", - "src": "712:1:10", - "type": "", - "value": "1" - } - ], - "functionName": { - "name": "sub", - "nodeType": "YulIdentifier", - "src": "695:3:10" - }, - "nodeType": "YulFunctionCall", - "src": "695:19:10" - } - ], - "functionName": { - "name": "and", - "nodeType": "YulIdentifier", - "src": "684:3:10" - }, - "nodeType": "YulFunctionCall", - "src": "684:31:10" - } - ], - "functionName": { - "name": "eq", - "nodeType": "YulIdentifier", - "src": "674:2:10" - }, - "nodeType": "YulFunctionCall", - "src": "674:42:10" + "functionReturnParameters": 2160, + "id": 2188, + "nodeType": "Return", + "src": "4560:8:15" + } + ] + } + }, + { + "condition": { + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 2197, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "id": 2191, + "name": "currentTime", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2176, + "src": "4592:11:15", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": ">=", + "rightExpression": { + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 2196, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "expression": { + "id": 2192, + "name": "schedule", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2163, + "src": "4607:8:15", + "typeDescriptions": { + "typeIdentifier": "t_struct$_VestingSchedule_$1941_memory_ptr", + "typeString": "struct TokenVesting.VestingSchedule memory" + } + }, + "id": 2193, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberLocation": "4616:9:15", + "memberName": "startTime", + "nodeType": "MemberAccess", + "referencedDeclaration": 1932, + "src": "4607:18:15", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "+", + "rightExpression": { + "expression": { + "id": 2194, + "name": "schedule", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2163, + "src": "4628:8:15", + "typeDescriptions": { + "typeIdentifier": "t_struct$_VestingSchedule_$1941_memory_ptr", + "typeString": "struct TokenVesting.VestingSchedule memory" + } + }, + "id": 2195, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberLocation": "4637:15:15", + "memberName": "vestingDuration", + "nodeType": "MemberAccess", + "referencedDeclaration": 1936, + "src": "4628:24:15", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "4607:45:15", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "4592:60:15", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "id": 2202, + "nodeType": "IfStatement", + "src": "4589:117:15", + "trueBody": { + "id": 2201, + "nodeType": "Block", + "src": "4654:52:15", + "statements": [ + { + "expression": { + "expression": { + "id": 2198, + "name": "schedule", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2163, + "src": "4675:8:15", + "typeDescriptions": { + "typeIdentifier": "t_struct$_VestingSchedule_$1941_memory_ptr", + "typeString": "struct TokenVesting.VestingSchedule memory" } - ], - "functionName": { - "name": "iszero", - "nodeType": "YulIdentifier", - "src": "667:6:10" }, - "nodeType": "YulFunctionCall", - "src": "667:50:10" + "id": 2199, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberLocation": "4684:11:15", + "memberName": "totalAmount", + "nodeType": "MemberAccess", + "referencedDeclaration": 1930, + "src": "4675:20:15", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } }, - "nodeType": "YulIf", - "src": "664:70:10" + "functionReturnParameters": 2160, + "id": 2200, + "nodeType": "Return", + "src": "4668:27:15" } ] - }, - "name": "abi_decode_address", - "nodeType": "YulFunctionDefinition", - "parameters": [ - { - "name": "offset", - "nodeType": "YulTypedName", - "src": "595:6:10", - "type": "" - } + } + }, + { + "assignments": [ + 2204 ], - "returnVariables": [ + "declarations": [ { - "name": "value", - "nodeType": "YulTypedName", - "src": "606:5:10", - "type": "" + "constant": false, + "id": 2204, + "mutability": "mutable", + "name": "vestedDuration", + "nameLocation": "4724:14:15", + "nodeType": "VariableDeclaration", + "scope": 2223, + "src": "4716:22:15", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 2203, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "4716:7:15", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" } ], - "src": "567:173:10" + "id": 2209, + "initialValue": { + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 2208, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "id": 2205, + "name": "currentTime", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2176, + "src": "4741:11:15", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "-", + "rightExpression": { + "expression": { + "id": 2206, + "name": "schedule", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2163, + "src": "4755:8:15", + "typeDescriptions": { + "typeIdentifier": "t_struct$_VestingSchedule_$1941_memory_ptr", + "typeString": "struct TokenVesting.VestingSchedule memory" + } + }, + "id": 2207, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberLocation": "4764:9:15", + "memberName": "startTime", + "nodeType": "MemberAccess", + "referencedDeclaration": 1932, + "src": "4755:18:15", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "4741:32:15", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "4716:57:15" }, { - "body": { - "nodeType": "YulBlock", - "src": "832:167:10", - "statements": [ - { - "body": { - "nodeType": "YulBlock", - "src": "878:16:10", - "statements": [ - { - "expression": { - "arguments": [ - { - "kind": "number", - "nodeType": "YulLiteral", - "src": "887:1:10", - "type": "", - "value": "0" - }, - { - "kind": "number", - "nodeType": "YulLiteral", - "src": "890:1:10", - "type": "", - "value": "0" - } - ], - "functionName": { - "name": "revert", - "nodeType": "YulIdentifier", - "src": "880:6:10" - }, - "nodeType": "YulFunctionCall", - "src": "880:12:10" - }, - "nodeType": "YulExpressionStatement", - "src": "880:12:10" - } - ] - }, - "condition": { - "arguments": [ - { - "arguments": [ - { - "name": "dataEnd", - "nodeType": "YulIdentifier", - "src": "853:7:10" - }, - { - "name": "headStart", - "nodeType": "YulIdentifier", - "src": "862:9:10" - } - ], - "functionName": { - "name": "sub", - "nodeType": "YulIdentifier", - "src": "849:3:10" - }, - "nodeType": "YulFunctionCall", - "src": "849:23:10" + "assignments": [ + 2211 + ], + "declarations": [ + { + "constant": false, + "id": 2211, + "mutability": "mutable", + "name": "vestedAmount", + "nameLocation": "4791:12:15", + "nodeType": "VariableDeclaration", + "scope": 2223, + "src": "4783:20:15", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 2210, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "4783:7:15", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "id": 2220, + "initialValue": { + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 2219, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "components": [ + { + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 2215, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "expression": { + "id": 2212, + "name": "schedule", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2163, + "src": "4807:8:15", + "typeDescriptions": { + "typeIdentifier": "t_struct$_VestingSchedule_$1941_memory_ptr", + "typeString": "struct TokenVesting.VestingSchedule memory" + } }, - { - "kind": "number", - "nodeType": "YulLiteral", - "src": "874:2:10", - "type": "", - "value": "64" + "id": 2213, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberLocation": "4816:11:15", + "memberName": "totalAmount", + "nodeType": "MemberAccess", + "referencedDeclaration": 1930, + "src": "4807:20:15", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" } - ], - "functionName": { - "name": "slt", - "nodeType": "YulIdentifier", - "src": "845:3:10" }, - "nodeType": "YulFunctionCall", - "src": "845:32:10" - }, - "nodeType": "YulIf", - "src": "842:52:10" - }, - { - "nodeType": "YulAssignment", - "src": "903:39:10", - "value": { - "arguments": [ - { - "name": "headStart", - "nodeType": "YulIdentifier", - "src": "932:9:10" + "nodeType": "BinaryOperation", + "operator": "*", + "rightExpression": { + "id": 2214, + "name": "vestedDuration", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2204, + "src": "4830:14:15", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" } - ], - "functionName": { - "name": "abi_decode_address", - "nodeType": "YulIdentifier", - "src": "913:18:10" }, - "nodeType": "YulFunctionCall", - "src": "913:29:10" - }, - "variableNames": [ - { - "name": "value0", - "nodeType": "YulIdentifier", - "src": "903:6:10" + "src": "4807:37:15", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" } - ] + } + ], + "id": 2216, + "isConstant": false, + "isInlineArray": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "nodeType": "TupleExpression", + "src": "4806:39:15", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "/", + "rightExpression": { + "expression": { + "id": 2217, + "name": "schedule", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2163, + "src": "4848:8:15", + "typeDescriptions": { + "typeIdentifier": "t_struct$_VestingSchedule_$1941_memory_ptr", + "typeString": "struct TokenVesting.VestingSchedule memory" + } }, - { - "nodeType": "YulAssignment", - "src": "951:42:10", - "value": { - "arguments": [ - { - "arguments": [ - { - "name": "headStart", - "nodeType": "YulIdentifier", - "src": "978:9:10" - }, - { - "kind": "number", - "nodeType": "YulLiteral", - "src": "989:2:10", - "type": "", - "value": "32" - } - ], - "functionName": { - "name": "add", - "nodeType": "YulIdentifier", - "src": "974:3:10" - }, - "nodeType": "YulFunctionCall", - "src": "974:18:10" - } - ], - "functionName": { - "name": "calldataload", - "nodeType": "YulIdentifier", - "src": "961:12:10" - }, - "nodeType": "YulFunctionCall", - "src": "961:32:10" - }, - "variableNames": [ - { - "name": "value1", - "nodeType": "YulIdentifier", - "src": "951:6:10" - } - ] + "id": 2218, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberLocation": "4857:15:15", + "memberName": "vestingDuration", + "nodeType": "MemberAccess", + "referencedDeclaration": 1936, + "src": "4848:24:15", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" } - ] - }, - "name": "abi_decode_tuple_t_addresst_uint256", - "nodeType": "YulFunctionDefinition", - "parameters": [ - { - "name": "headStart", - "nodeType": "YulTypedName", - "src": "790:9:10", - "type": "" }, - { - "name": "dataEnd", - "nodeType": "YulTypedName", - "src": "801:7:10", - "type": "" + "src": "4806:66:15", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "4783:89:15" + }, + { + "expression": { + "id": 2221, + "name": "vestedAmount", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2211, + "src": "4890:12:15", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "functionReturnParameters": 2160, + "id": 2222, + "nodeType": "Return", + "src": "4883:19:15" + } + ] + }, + "functionSelector": "ffa06b2a", + "id": 2224, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "calculateVestedAmount", + "nameLocation": "4149:21:15", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 2157, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 2156, + "mutability": "mutable", + "name": "beneficiary", + "nameLocation": "4188:11:15", + "nodeType": "VariableDeclaration", + "scope": 2224, + "src": "4180:19:15", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 2155, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "4180:7:15", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + } + ], + "src": "4170:35:15" + }, + "returnParameters": { + "id": 2160, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 2159, + "mutability": "mutable", + "name": "", + "nameLocation": "-1:-1:-1", + "nodeType": "VariableDeclaration", + "scope": 2224, + "src": "4227:7:15", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 2158, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "4227:7:15", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" } + }, + "visibility": "internal" + } + ], + "src": "4226:9:15" + }, + "scope": 2399, + "src": "4140:769:15", + "stateMutability": "view", + "virtual": false, + "visibility": "public" + }, + { + "body": { + "id": 2302, + "nodeType": "Block", + "src": "4980:719:15", + "statements": [ + { + "assignments": [ + 2232 ], - "returnVariables": [ - { - "name": "value0", - "nodeType": "YulTypedName", - "src": "813:6:10", - "type": "" - }, + "declarations": [ { - "name": "value1", - "nodeType": "YulTypedName", - "src": "821:6:10", - "type": "" + "constant": false, + "id": 2232, + "mutability": "mutable", + "name": "beneficiary", + "nameLocation": "5040:11:15", + "nodeType": "VariableDeclaration", + "scope": 2302, + "src": "5032:19:15", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 2231, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "5032:7:15", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" } ], - "src": "745:254:10" - }, - { - "body": { - "nodeType": "YulBlock", - "src": "1099:92:10", - "statements": [ - { - "nodeType": "YulAssignment", - "src": "1109:26:10", - "value": { - "arguments": [ - { - "name": "headStart", - "nodeType": "YulIdentifier", - "src": "1121:9:10" - }, - { - "kind": "number", - "nodeType": "YulLiteral", - "src": "1132:2:10", - "type": "", - "value": "32" - } - ], - "functionName": { - "name": "add", - "nodeType": "YulIdentifier", - "src": "1117:3:10" - }, - "nodeType": "YulFunctionCall", - "src": "1117:18:10" - }, - "variableNames": [ - { - "name": "tail", - "nodeType": "YulIdentifier", - "src": "1109:4:10" - } - ] - }, - { - "expression": { - "arguments": [ - { - "name": "headStart", - "nodeType": "YulIdentifier", - "src": "1151:9:10" - }, - { - "arguments": [ - { - "arguments": [ - { - "name": "value0", - "nodeType": "YulIdentifier", - "src": "1176:6:10" - } - ], - "functionName": { - "name": "iszero", - "nodeType": "YulIdentifier", - "src": "1169:6:10" - }, - "nodeType": "YulFunctionCall", - "src": "1169:14:10" - } - ], - "functionName": { - "name": "iszero", - "nodeType": "YulIdentifier", - "src": "1162:6:10" - }, - "nodeType": "YulFunctionCall", - "src": "1162:22:10" - } - ], - "functionName": { - "name": "mstore", - "nodeType": "YulIdentifier", - "src": "1144:6:10" - }, - "nodeType": "YulFunctionCall", - "src": "1144:41:10" - }, - "nodeType": "YulExpressionStatement", - "src": "1144:41:10" + "id": 2235, + "initialValue": { + "expression": { + "id": 2233, + "name": "msg", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": -15, + "src": "5054:3:15", + "typeDescriptions": { + "typeIdentifier": "t_magic_message", + "typeString": "msg" } - ] - }, - "name": "abi_encode_tuple_t_bool__to_t_bool__fromStack_reversed", - "nodeType": "YulFunctionDefinition", - "parameters": [ - { - "name": "headStart", - "nodeType": "YulTypedName", - "src": "1068:9:10", - "type": "" }, - { - "name": "value0", - "nodeType": "YulTypedName", - "src": "1079:6:10", - "type": "" - } - ], - "returnVariables": [ - { - "name": "tail", - "nodeType": "YulTypedName", - "src": "1090:4:10", - "type": "" + "id": 2234, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberLocation": "5058:6:15", + "memberName": "sender", + "nodeType": "MemberAccess", + "src": "5054:10:15", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" } - ], - "src": "1004:187:10" + }, + "nodeType": "VariableDeclarationStatement", + "src": "5032:32:15" }, { - "body": { - "nodeType": "YulBlock", - "src": "1297:76:10", - "statements": [ - { - "nodeType": "YulAssignment", - "src": "1307:26:10", - "value": { - "arguments": [ - { - "name": "headStart", - "nodeType": "YulIdentifier", - "src": "1319:9:10" - }, - { - "kind": "number", - "nodeType": "YulLiteral", - "src": "1330:2:10", - "type": "", - "value": "32" - } - ], - "functionName": { - "name": "add", - "nodeType": "YulIdentifier", - "src": "1315:3:10" - }, - "nodeType": "YulFunctionCall", - "src": "1315:18:10" - }, - "variableNames": [ - { - "name": "tail", - "nodeType": "YulIdentifier", - "src": "1307:4:10" - } - ] + "assignments": [ + 2238 + ], + "declarations": [ + { + "constant": false, + "id": 2238, + "mutability": "mutable", + "name": "schedule", + "nameLocation": "5098:8:15", + "nodeType": "VariableDeclaration", + "scope": 2302, + "src": "5074:32:15", + "stateVariable": false, + "storageLocation": "storage", + "typeDescriptions": { + "typeIdentifier": "t_struct$_VestingSchedule_$1941_storage_ptr", + "typeString": "struct TokenVesting.VestingSchedule" }, - { - "expression": { - "arguments": [ - { - "name": "headStart", - "nodeType": "YulIdentifier", - "src": "1349:9:10" - }, - { - "name": "value0", - "nodeType": "YulIdentifier", - "src": "1360:6:10" - } + "typeName": { + "id": 2237, + "nodeType": "UserDefinedTypeName", + "pathNode": { + "id": 2236, + "name": "VestingSchedule", + "nameLocations": [ + "5074:15:15" ], - "functionName": { - "name": "mstore", - "nodeType": "YulIdentifier", - "src": "1342:6:10" - }, - "nodeType": "YulFunctionCall", - "src": "1342:25:10" + "nodeType": "IdentifierPath", + "referencedDeclaration": 1941, + "src": "5074:15:15" }, - "nodeType": "YulExpressionStatement", - "src": "1342:25:10" - } - ] - }, - "name": "abi_encode_tuple_t_uint256__to_t_uint256__fromStack_reversed", - "nodeType": "YulFunctionDefinition", - "parameters": [ - { - "name": "headStart", - "nodeType": "YulTypedName", - "src": "1266:9:10", - "type": "" - }, - { - "name": "value0", - "nodeType": "YulTypedName", - "src": "1277:6:10", - "type": "" + "referencedDeclaration": 1941, + "src": "5074:15:15", + "typeDescriptions": { + "typeIdentifier": "t_struct$_VestingSchedule_$1941_storage_ptr", + "typeString": "struct TokenVesting.VestingSchedule" + } + }, + "visibility": "internal" } ], - "returnVariables": [ - { - "name": "tail", - "nodeType": "YulTypedName", - "src": "1288:4:10", - "type": "" + "id": 2242, + "initialValue": { + "baseExpression": { + "id": 2239, + "name": "vestingSchedules", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1953, + "src": "5109:16:15", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_address_$_t_struct$_VestingSchedule_$1941_storage_$", + "typeString": "mapping(address => struct TokenVesting.VestingSchedule storage ref)" + } + }, + "id": 2241, + "indexExpression": { + "id": 2240, + "name": "beneficiary", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2232, + "src": "5126:11:15", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "5109:29:15", + "typeDescriptions": { + "typeIdentifier": "t_struct$_VestingSchedule_$1941_storage", + "typeString": "struct TokenVesting.VestingSchedule storage ref" } - ], - "src": "1196:177:10" + }, + "nodeType": "VariableDeclarationStatement", + "src": "5074:64:15" }, { - "body": { - "nodeType": "YulBlock", - "src": "1482:224:10", - "statements": [ + "expression": { + "arguments": [ { - "body": { - "nodeType": "YulBlock", - "src": "1528:16:10", - "statements": [ - { - "expression": { - "arguments": [ - { - "kind": "number", - "nodeType": "YulLiteral", - "src": "1537:1:10", - "type": "", - "value": "0" - }, - { - "kind": "number", - "nodeType": "YulLiteral", - "src": "1540:1:10", - "type": "", - "value": "0" - } - ], - "functionName": { - "name": "revert", - "nodeType": "YulIdentifier", - "src": "1530:6:10" - }, - "nodeType": "YulFunctionCall", - "src": "1530:12:10" - }, - "nodeType": "YulExpressionStatement", - "src": "1530:12:10" - } - ] + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" }, - "condition": { - "arguments": [ - { - "arguments": [ - { - "name": "dataEnd", - "nodeType": "YulIdentifier", - "src": "1503:7:10" - }, - { - "name": "headStart", - "nodeType": "YulIdentifier", - "src": "1512:9:10" - } - ], - "functionName": { - "name": "sub", - "nodeType": "YulIdentifier", - "src": "1499:3:10" - }, - "nodeType": "YulFunctionCall", - "src": "1499:23:10" + "id": 2251, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 2248, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "expression": { + "id": 2244, + "name": "schedule", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2238, + "src": "5157:8:15", + "typeDescriptions": { + "typeIdentifier": "t_struct$_VestingSchedule_$1941_storage_ptr", + "typeString": "struct TokenVesting.VestingSchedule storage pointer" + } }, - { - "kind": "number", - "nodeType": "YulLiteral", - "src": "1524:2:10", - "type": "", - "value": "96" + "id": 2245, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberLocation": "5166:9:15", + "memberName": "startTime", + "nodeType": "MemberAccess", + "referencedDeclaration": 1932, + "src": "5157:18:15", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" } - ], - "functionName": { - "name": "slt", - "nodeType": "YulIdentifier", - "src": "1495:3:10" }, - "nodeType": "YulFunctionCall", - "src": "1495:32:10" - }, - "nodeType": "YulIf", - "src": "1492:52:10" - }, - { - "nodeType": "YulAssignment", - "src": "1553:39:10", - "value": { - "arguments": [ - { - "name": "headStart", - "nodeType": "YulIdentifier", - "src": "1582:9:10" + "nodeType": "BinaryOperation", + "operator": "+", + "rightExpression": { + "expression": { + "id": 2246, + "name": "schedule", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2238, + "src": "5178:8:15", + "typeDescriptions": { + "typeIdentifier": "t_struct$_VestingSchedule_$1941_storage_ptr", + "typeString": "struct TokenVesting.VestingSchedule storage pointer" + } + }, + "id": 2247, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberLocation": "5187:13:15", + "memberName": "cliffDuration", + "nodeType": "MemberAccess", + "referencedDeclaration": 1934, + "src": "5178:22:15", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" } - ], - "functionName": { - "name": "abi_decode_address", - "nodeType": "YulIdentifier", - "src": "1563:18:10" }, - "nodeType": "YulFunctionCall", - "src": "1563:29:10" + "src": "5157:43:15", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } }, - "variableNames": [ - { - "name": "value0", - "nodeType": "YulIdentifier", - "src": "1553:6:10" + "nodeType": "BinaryOperation", + "operator": "<", + "rightExpression": { + "expression": { + "id": 2249, + "name": "block", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": -4, + "src": "5203:5:15", + "typeDescriptions": { + "typeIdentifier": "t_magic_block", + "typeString": "block" + } + }, + "id": 2250, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberLocation": "5209:9:15", + "memberName": "timestamp", + "nodeType": "MemberAccess", + "src": "5203:15:15", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" } - ] + }, + "src": "5157:61:15", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } }, { - "nodeType": "YulAssignment", - "src": "1601:48:10", - "value": { - "arguments": [ - { - "arguments": [ - { - "name": "headStart", - "nodeType": "YulIdentifier", - "src": "1634:9:10" - }, - { - "kind": "number", - "nodeType": "YulLiteral", - "src": "1645:2:10", - "type": "", - "value": "32" - } - ], - "functionName": { - "name": "add", - "nodeType": "YulIdentifier", - "src": "1630:3:10" - }, - "nodeType": "YulFunctionCall", - "src": "1630:18:10" + "hexValue": "4e6f20746f6b656e7320746f20636c61696d", + "id": 2252, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "string", + "lValueRequested": false, + "nodeType": "Literal", + "src": "5220:20:15", + "typeDescriptions": { + "typeIdentifier": "t_stringliteral_0d5449e713a47f03a14de06feb7e7374931b31bbe74b9f8d4277d4797f0eb90e", + "typeString": "literal_string \"No tokens to claim\"" + }, + "value": "No tokens to claim" + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + { + "typeIdentifier": "t_stringliteral_0d5449e713a47f03a14de06feb7e7374931b31bbe74b9f8d4277d4797f0eb90e", + "typeString": "literal_string \"No tokens to claim\"" + } + ], + "id": 2243, + "name": "require", + "nodeType": "Identifier", + "overloadedDeclarations": [ + -18, + -18 + ], + "referencedDeclaration": -18, + "src": "5149:7:15", + "typeDescriptions": { + "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", + "typeString": "function (bool,string memory) pure" + } + }, + "id": 2253, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "5149:92:15", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 2254, + "nodeType": "ExpressionStatement", + "src": "5149:92:15" + }, + { + "expression": { + "arguments": [ + { + "id": 2258, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "nodeType": "UnaryOperation", + "operator": "!", + "prefix": true, + "src": "5259:17:15", + "subExpression": { + "expression": { + "id": 2256, + "name": "schedule", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2238, + "src": "5260:8:15", + "typeDescriptions": { + "typeIdentifier": "t_struct$_VestingSchedule_$1941_storage_ptr", + "typeString": "struct TokenVesting.VestingSchedule storage pointer" } - ], - "functionName": { - "name": "abi_decode_address", - "nodeType": "YulIdentifier", - "src": "1611:18:10" }, - "nodeType": "YulFunctionCall", - "src": "1611:38:10" - }, - "variableNames": [ - { - "name": "value1", - "nodeType": "YulIdentifier", - "src": "1601:6:10" + "id": 2257, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberLocation": "5269:7:15", + "memberName": "revoked", + "nodeType": "MemberAccess", + "referencedDeclaration": 1940, + "src": "5260:16:15", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" } - ] + }, + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } }, { - "nodeType": "YulAssignment", - "src": "1658:42:10", - "value": { - "arguments": [ - { - "arguments": [ - { - "name": "headStart", - "nodeType": "YulIdentifier", - "src": "1685:9:10" - }, - { - "kind": "number", - "nodeType": "YulLiteral", - "src": "1696:2:10", - "type": "", - "value": "64" - } - ], - "functionName": { - "name": "add", - "nodeType": "YulIdentifier", - "src": "1681:3:10" - }, - "nodeType": "YulFunctionCall", - "src": "1681:18:10" - } - ], - "functionName": { - "name": "calldataload", - "nodeType": "YulIdentifier", - "src": "1668:12:10" - }, - "nodeType": "YulFunctionCall", - "src": "1668:32:10" + "hexValue": "56657374696e67207363686564756c65207265766f6b6564", + "id": 2259, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "string", + "lValueRequested": false, + "nodeType": "Literal", + "src": "5278:26:15", + "typeDescriptions": { + "typeIdentifier": "t_stringliteral_b8b87812c352fc8e39cdfe1757bfbcecb484013d66c0da14d0ba3b167d668ffe", + "typeString": "literal_string \"Vesting schedule revoked\"" }, - "variableNames": [ - { - "name": "value2", - "nodeType": "YulIdentifier", - "src": "1658:6:10" - } - ] + "value": "Vesting schedule revoked" + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + { + "typeIdentifier": "t_stringliteral_b8b87812c352fc8e39cdfe1757bfbcecb484013d66c0da14d0ba3b167d668ffe", + "typeString": "literal_string \"Vesting schedule revoked\"" + } + ], + "id": 2255, + "name": "require", + "nodeType": "Identifier", + "overloadedDeclarations": [ + -18, + -18 + ], + "referencedDeclaration": -18, + "src": "5251:7:15", + "typeDescriptions": { + "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", + "typeString": "function (bool,string memory) pure" } - ] - }, - "name": "abi_decode_tuple_t_addresst_addresst_uint256", - "nodeType": "YulFunctionDefinition", - "parameters": [ - { - "name": "headStart", - "nodeType": "YulTypedName", - "src": "1432:9:10", - "type": "" - }, - { - "name": "dataEnd", - "nodeType": "YulTypedName", - "src": "1443:7:10", - "type": "" - } - ], - "returnVariables": [ - { - "name": "value0", - "nodeType": "YulTypedName", - "src": "1455:6:10", - "type": "" - }, - { - "name": "value1", - "nodeType": "YulTypedName", - "src": "1463:6:10", - "type": "" }, - { - "name": "value2", - "nodeType": "YulTypedName", - "src": "1471:6:10", - "type": "" + "id": 2260, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "5251:54:15", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" } - ], - "src": "1378:328:10" + }, + "id": 2261, + "nodeType": "ExpressionStatement", + "src": "5251:54:15" }, { - "body": { - "nodeType": "YulBlock", - "src": "1808:87:10", - "statements": [ + "expression": { + "arguments": [ { - "nodeType": "YulAssignment", - "src": "1818:26:10", - "value": { - "arguments": [ - { - "name": "headStart", - "nodeType": "YulIdentifier", - "src": "1830:9:10" - }, - { - "kind": "number", - "nodeType": "YulLiteral", - "src": "1841:2:10", - "type": "", - "value": "32" + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 2266, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "expression": { + "id": 2263, + "name": "schedule", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2238, + "src": "5323:8:15", + "typeDescriptions": { + "typeIdentifier": "t_struct$_VestingSchedule_$1941_storage_ptr", + "typeString": "struct TokenVesting.VestingSchedule storage pointer" } - ], - "functionName": { - "name": "add", - "nodeType": "YulIdentifier", - "src": "1826:3:10" }, - "nodeType": "YulFunctionCall", - "src": "1826:18:10" - }, - "variableNames": [ - { - "name": "tail", - "nodeType": "YulIdentifier", - "src": "1818:4:10" + "id": 2264, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberLocation": "5332:11:15", + "memberName": "totalAmount", + "nodeType": "MemberAccess", + "referencedDeclaration": 1930, + "src": "5323:20:15", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" } - ] + }, + "nodeType": "BinaryOperation", + "operator": ">", + "rightExpression": { + "hexValue": "30", + "id": 2265, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "5346:1:15", + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + }, + "src": "5323:24:15", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + { + "hexValue": "546f74616c20616d6f756e74206d757374206265206c6172676572207468616e2030", + "id": 2267, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "string", + "lValueRequested": false, + "nodeType": "Literal", + "src": "5349:36:15", + "typeDescriptions": { + "typeIdentifier": "t_stringliteral_2d980113b746b646b1f1c170ff650a967a1fe1a7065543628c00dcab2441d666", + "typeString": "literal_string \"Total amount must be larger than 0\"" + }, + "value": "Total amount must be larger than 0" + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + { + "typeIdentifier": "t_stringliteral_2d980113b746b646b1f1c170ff650a967a1fe1a7065543628c00dcab2441d666", + "typeString": "literal_string \"Total amount must be larger than 0\"" + } + ], + "id": 2262, + "name": "require", + "nodeType": "Identifier", + "overloadedDeclarations": [ + -18, + -18 + ], + "referencedDeclaration": -18, + "src": "5315:7:15", + "typeDescriptions": { + "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", + "typeString": "function (bool,string memory) pure" + } + }, + "id": 2268, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "5315:71:15", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 2269, + "nodeType": "ExpressionStatement", + "src": "5315:71:15" + }, + { + "assignments": [ + 2271 + ], + "declarations": [ + { + "constant": false, + "id": 2271, + "mutability": "mutable", + "name": "vestedAmount", + "nameLocation": "5405:12:15", + "nodeType": "VariableDeclaration", + "scope": 2302, + "src": "5397:20:15", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 2270, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "5397:7:15", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } }, + "visibility": "internal" + } + ], + "id": 2276, + "initialValue": { + "arguments": [ { "expression": { - "arguments": [ - { - "name": "headStart", - "nodeType": "YulIdentifier", - "src": "1860:9:10" - }, - { - "arguments": [ - { - "name": "value0", - "nodeType": "YulIdentifier", - "src": "1875:6:10" - }, - { - "kind": "number", - "nodeType": "YulLiteral", - "src": "1883:4:10", - "type": "", - "value": "0xff" - } - ], - "functionName": { - "name": "and", - "nodeType": "YulIdentifier", - "src": "1871:3:10" - }, - "nodeType": "YulFunctionCall", - "src": "1871:17:10" - } - ], - "functionName": { - "name": "mstore", - "nodeType": "YulIdentifier", - "src": "1853:6:10" - }, - "nodeType": "YulFunctionCall", - "src": "1853:36:10" + "id": 2273, + "name": "msg", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": -15, + "src": "5442:3:15", + "typeDescriptions": { + "typeIdentifier": "t_magic_message", + "typeString": "msg" + } }, - "nodeType": "YulExpressionStatement", - "src": "1853:36:10" + "id": 2274, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberLocation": "5446:6:15", + "memberName": "sender", + "nodeType": "MemberAccess", + "src": "5442:10:15", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + } + ], + "id": 2272, + "name": "calculateVestedAmount", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2224, + "src": "5420:21:15", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_view$_t_address_$returns$_t_uint256_$", + "typeString": "function (address) view returns (uint256)" } - ] - }, - "name": "abi_encode_tuple_t_uint8__to_t_uint8__fromStack_reversed", - "nodeType": "YulFunctionDefinition", - "parameters": [ - { - "name": "headStart", - "nodeType": "YulTypedName", - "src": "1777:9:10", - "type": "" }, - { - "name": "value0", - "nodeType": "YulTypedName", - "src": "1788:6:10", - "type": "" + "id": 2275, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "5420:33:15", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" } + }, + "nodeType": "VariableDeclarationStatement", + "src": "5397:56:15" + }, + { + "assignments": [ + 2278 ], - "returnVariables": [ + "declarations": [ { - "name": "tail", - "nodeType": "YulTypedName", - "src": "1799:4:10", - "type": "" + "constant": false, + "id": 2278, + "mutability": "mutable", + "name": "receivableAmount", + "nameLocation": "5471:16:15", + "nodeType": "VariableDeclaration", + "scope": 2302, + "src": "5463:24:15", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 2277, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "5463:7:15", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" } ], - "src": "1711:184:10" + "id": 2283, + "initialValue": { + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 2282, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "id": 2279, + "name": "vestedAmount", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2271, + "src": "5490:12:15", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "-", + "rightExpression": { + "expression": { + "id": 2280, + "name": "schedule", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2238, + "src": "5505:8:15", + "typeDescriptions": { + "typeIdentifier": "t_struct$_VestingSchedule_$1941_storage_ptr", + "typeString": "struct TokenVesting.VestingSchedule storage pointer" + } + }, + "id": 2281, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberLocation": "5514:13:15", + "memberName": "amountClaimed", + "nodeType": "MemberAccess", + "referencedDeclaration": 1938, + "src": "5505:22:15", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "5490:37:15", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "5463:64:15" }, { - "body": { - "nodeType": "YulBlock", - "src": "1970:116:10", - "statements": [ - { - "body": { - "nodeType": "YulBlock", - "src": "2016:16:10", - "statements": [ - { - "expression": { - "arguments": [ - { - "kind": "number", - "nodeType": "YulLiteral", - "src": "2025:1:10", - "type": "", - "value": "0" - }, - { - "kind": "number", - "nodeType": "YulLiteral", - "src": "2028:1:10", - "type": "", - "value": "0" - } - ], - "functionName": { - "name": "revert", - "nodeType": "YulIdentifier", - "src": "2018:6:10" - }, - "nodeType": "YulFunctionCall", - "src": "2018:12:10" - }, - "nodeType": "YulExpressionStatement", - "src": "2018:12:10" - } - ] - }, - "condition": { - "arguments": [ - { - "arguments": [ - { - "name": "dataEnd", - "nodeType": "YulIdentifier", - "src": "1991:7:10" - }, - { - "name": "headStart", - "nodeType": "YulIdentifier", - "src": "2000:9:10" - } - ], - "functionName": { - "name": "sub", - "nodeType": "YulIdentifier", - "src": "1987:3:10" - }, - "nodeType": "YulFunctionCall", - "src": "1987:23:10" - }, - { - "kind": "number", - "nodeType": "YulLiteral", - "src": "2012:2:10", - "type": "", - "value": "32" - } - ], - "functionName": { - "name": "slt", - "nodeType": "YulIdentifier", - "src": "1983:3:10" - }, - "nodeType": "YulFunctionCall", - "src": "1983:32:10" - }, - "nodeType": "YulIf", - "src": "1980:52:10" + "expression": { + "id": 2288, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "expression": { + "id": 2284, + "name": "schedule", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2238, + "src": "5537:8:15", + "typeDescriptions": { + "typeIdentifier": "t_struct$_VestingSchedule_$1941_storage_ptr", + "typeString": "struct TokenVesting.VestingSchedule storage pointer" + } }, + "id": 2286, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": true, + "memberLocation": "5546:13:15", + "memberName": "amountClaimed", + "nodeType": "MemberAccess", + "referencedDeclaration": 1938, + "src": "5537:22:15", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "Assignment", + "operator": "+=", + "rightHandSide": { + "id": 2287, + "name": "vestedAmount", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2271, + "src": "5563:12:15", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "5537:38:15", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 2289, + "nodeType": "ExpressionStatement", + "src": "5537:38:15" + }, + { + "expression": { + "arguments": [ { - "nodeType": "YulAssignment", - "src": "2041:39:10", - "value": { - "arguments": [ - { - "name": "headStart", - "nodeType": "YulIdentifier", - "src": "2070:9:10" - } - ], - "functionName": { - "name": "abi_decode_address", - "nodeType": "YulIdentifier", - "src": "2051:18:10" - }, - "nodeType": "YulFunctionCall", - "src": "2051:29:10" + "id": 2293, + "name": "beneficiary", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2232, + "src": "5605:11:15", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "id": 2294, + "name": "receivableAmount", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2278, + "src": "5618:16:15", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" }, - "variableNames": [ - { - "name": "value0", - "nodeType": "YulIdentifier", - "src": "2041:6:10" - } - ] + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "expression": { + "id": 2290, + "name": "token", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1948, + "src": "5586:5:15", + "typeDescriptions": { + "typeIdentifier": "t_contract$_IERC20_$967", + "typeString": "contract IERC20" + } + }, + "id": 2292, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberLocation": "5592:12:15", + "memberName": "safeTransfer", + "nodeType": "MemberAccess", + "referencedDeclaration": 1040, + "src": "5586:18:15", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_nonpayable$_t_contract$_IERC20_$967_$_t_address_$_t_uint256_$returns$__$attached_to$_t_contract$_IERC20_$967_$", + "typeString": "function (contract IERC20,address,uint256)" } - ] - }, - "name": "abi_decode_tuple_t_address", - "nodeType": "YulFunctionDefinition", - "parameters": [ - { - "name": "headStart", - "nodeType": "YulTypedName", - "src": "1936:9:10", - "type": "" }, - { - "name": "dataEnd", - "nodeType": "YulTypedName", - "src": "1947:7:10", - "type": "" - } - ], - "returnVariables": [ - { - "name": "value0", - "nodeType": "YulTypedName", - "src": "1959:6:10", - "type": "" + "id": 2295, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "5586:49:15", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" } - ], - "src": "1900:186:10" + }, + "id": 2296, + "nodeType": "ExpressionStatement", + "src": "5586:49:15" }, { - "body": { - "nodeType": "YulBlock", - "src": "2192:102:10", - "statements": [ + "eventCall": { + "arguments": [ { - "nodeType": "YulAssignment", - "src": "2202:26:10", - "value": { - "arguments": [ - { - "name": "headStart", - "nodeType": "YulIdentifier", - "src": "2214:9:10" - }, - { - "kind": "number", - "nodeType": "YulLiteral", - "src": "2225:2:10", - "type": "", - "value": "32" - } - ], - "functionName": { - "name": "add", - "nodeType": "YulIdentifier", - "src": "2210:3:10" - }, - "nodeType": "YulFunctionCall", - "src": "2210:18:10" - }, - "variableNames": [ - { - "name": "tail", - "nodeType": "YulIdentifier", - "src": "2202:4:10" - } - ] + "id": 2298, + "name": "beneficiary", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2232, + "src": "5665:11:15", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } }, { - "expression": { - "arguments": [ - { - "name": "headStart", - "nodeType": "YulIdentifier", - "src": "2244:9:10" - }, - { - "arguments": [ - { - "name": "value0", - "nodeType": "YulIdentifier", - "src": "2259:6:10" - }, - { - "arguments": [ - { - "arguments": [ - { - "kind": "number", - "nodeType": "YulLiteral", - "src": "2275:3:10", - "type": "", - "value": "160" - }, - { - "kind": "number", - "nodeType": "YulLiteral", - "src": "2280:1:10", - "type": "", - "value": "1" - } - ], - "functionName": { - "name": "shl", - "nodeType": "YulIdentifier", - "src": "2271:3:10" - }, - "nodeType": "YulFunctionCall", - "src": "2271:11:10" - }, - { - "kind": "number", - "nodeType": "YulLiteral", - "src": "2284:1:10", - "type": "", - "value": "1" - } - ], - "functionName": { - "name": "sub", - "nodeType": "YulIdentifier", - "src": "2267:3:10" - }, - "nodeType": "YulFunctionCall", - "src": "2267:19:10" - } - ], - "functionName": { - "name": "and", - "nodeType": "YulIdentifier", - "src": "2255:3:10" - }, - "nodeType": "YulFunctionCall", - "src": "2255:32:10" - } - ], - "functionName": { - "name": "mstore", - "nodeType": "YulIdentifier", - "src": "2237:6:10" - }, - "nodeType": "YulFunctionCall", - "src": "2237:51:10" + "id": 2299, + "name": "vestedAmount", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2271, + "src": "5678:12:15", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" }, - "nodeType": "YulExpressionStatement", - "src": "2237:51:10" + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "id": 2297, + "name": "TokensClaimed", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1969, + "src": "5651:13:15", + "typeDescriptions": { + "typeIdentifier": "t_function_event_nonpayable$_t_address_$_t_uint256_$returns$__$", + "typeString": "function (address,uint256)" } - ] - }, - "name": "abi_encode_tuple_t_address__to_t_address__fromStack_reversed", - "nodeType": "YulFunctionDefinition", - "parameters": [ - { - "name": "headStart", - "nodeType": "YulTypedName", - "src": "2161:9:10", - "type": "" }, - { - "name": "value0", - "nodeType": "YulTypedName", - "src": "2172:6:10", - "type": "" + "id": 2300, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "5651:40:15", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" } + }, + "id": 2301, + "nodeType": "EmitStatement", + "src": "5646:45:15" + } + ] + }, + "functionSelector": "e74f3fbb", + "id": 2303, + "implemented": true, + "kind": "function", + "modifiers": [ + { + "id": 2227, + "kind": "modifierInvocation", + "modifierName": { + "id": 2226, + "name": "nonReentrant", + "nameLocations": [ + "4953:12:15" ], - "returnVariables": [ - { - "name": "tail", - "nodeType": "YulTypedName", - "src": "2183:4:10", - "type": "" - } + "nodeType": "IdentifierPath", + "referencedDeclaration": 1865, + "src": "4953:12:15" + }, + "nodeType": "ModifierInvocation", + "src": "4953:12:15" + }, + { + "id": 2229, + "kind": "modifierInvocation", + "modifierName": { + "id": 2228, + "name": "whenNotPaused", + "nameLocations": [ + "4966:13:15" ], - "src": "2091:203:10" + "nodeType": "IdentifierPath", + "referencedDeclaration": 1757, + "src": "4966:13:15" }, + "nodeType": "ModifierInvocation", + "src": "4966:13:15" + } + ], + "name": "claimVestedTokens", + "nameLocation": "4924:17:15", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 2225, + "nodeType": "ParameterList", + "parameters": [], + "src": "4941:2:15" + }, + "returnParameters": { + "id": 2230, + "nodeType": "ParameterList", + "parameters": [], + "src": "4980:0:15" + }, + "scope": 2399, + "src": "4915:784:15", + "stateMutability": "nonpayable", + "virtual": false, + "visibility": "external" + }, + { + "body": { + "id": 2379, + "nodeType": "Block", + "src": "5768:705:15", + "statements": [ { - "body": { - "nodeType": "YulBlock", - "src": "2386:173:10", - "statements": [ - { - "body": { - "nodeType": "YulBlock", - "src": "2432:16:10", - "statements": [ - { - "expression": { - "arguments": [ - { - "kind": "number", - "nodeType": "YulLiteral", - "src": "2441:1:10", - "type": "", - "value": "0" - }, - { - "kind": "number", - "nodeType": "YulLiteral", - "src": "2444:1:10", - "type": "", - "value": "0" - } - ], - "functionName": { - "name": "revert", - "nodeType": "YulIdentifier", - "src": "2434:6:10" - }, - "nodeType": "YulFunctionCall", - "src": "2434:12:10" - }, - "nodeType": "YulExpressionStatement", - "src": "2434:12:10" - } - ] - }, - "condition": { - "arguments": [ - { - "arguments": [ - { - "name": "dataEnd", - "nodeType": "YulIdentifier", - "src": "2407:7:10" - }, - { - "name": "headStart", - "nodeType": "YulIdentifier", - "src": "2416:9:10" - } - ], - "functionName": { - "name": "sub", - "nodeType": "YulIdentifier", - "src": "2403:3:10" - }, - "nodeType": "YulFunctionCall", - "src": "2403:23:10" - }, - { - "kind": "number", - "nodeType": "YulLiteral", - "src": "2428:2:10", - "type": "", - "value": "64" - } - ], - "functionName": { - "name": "slt", - "nodeType": "YulIdentifier", - "src": "2399:3:10" - }, - "nodeType": "YulFunctionCall", - "src": "2399:32:10" - }, - "nodeType": "YulIf", - "src": "2396:52:10" + "assignments": [ + 2312 + ], + "declarations": [ + { + "constant": false, + "id": 2312, + "mutability": "mutable", + "name": "schedule", + "nameLocation": "5848:8:15", + "nodeType": "VariableDeclaration", + "scope": 2379, + "src": "5824:32:15", + "stateVariable": false, + "storageLocation": "storage", + "typeDescriptions": { + "typeIdentifier": "t_struct$_VestingSchedule_$1941_storage_ptr", + "typeString": "struct TokenVesting.VestingSchedule" }, - { - "nodeType": "YulAssignment", - "src": "2457:39:10", - "value": { - "arguments": [ - { - "name": "headStart", - "nodeType": "YulIdentifier", - "src": "2486:9:10" - } + "typeName": { + "id": 2311, + "nodeType": "UserDefinedTypeName", + "pathNode": { + "id": 2310, + "name": "VestingSchedule", + "nameLocations": [ + "5824:15:15" ], - "functionName": { - "name": "abi_decode_address", - "nodeType": "YulIdentifier", - "src": "2467:18:10" - }, - "nodeType": "YulFunctionCall", - "src": "2467:29:10" + "nodeType": "IdentifierPath", + "referencedDeclaration": 1941, + "src": "5824:15:15" }, - "variableNames": [ - { - "name": "value0", - "nodeType": "YulIdentifier", - "src": "2457:6:10" - } - ] + "referencedDeclaration": 1941, + "src": "5824:15:15", + "typeDescriptions": { + "typeIdentifier": "t_struct$_VestingSchedule_$1941_storage_ptr", + "typeString": "struct TokenVesting.VestingSchedule" + } }, + "visibility": "internal" + } + ], + "id": 2316, + "initialValue": { + "baseExpression": { + "id": 2313, + "name": "vestingSchedules", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1953, + "src": "5859:16:15", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_address_$_t_struct$_VestingSchedule_$1941_storage_$", + "typeString": "mapping(address => struct TokenVesting.VestingSchedule storage ref)" + } + }, + "id": 2315, + "indexExpression": { + "id": 2314, + "name": "beneficiary", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2305, + "src": "5876:11:15", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "5859:29:15", + "typeDescriptions": { + "typeIdentifier": "t_struct$_VestingSchedule_$1941_storage", + "typeString": "struct TokenVesting.VestingSchedule storage ref" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "5824:64:15" + }, + { + "expression": { + "arguments": [ { - "nodeType": "YulAssignment", - "src": "2505:48:10", - "value": { - "arguments": [ - { - "arguments": [ - { - "name": "headStart", - "nodeType": "YulIdentifier", - "src": "2538:9:10" - }, - { - "kind": "number", - "nodeType": "YulLiteral", - "src": "2549:2:10", - "type": "", - "value": "32" - } - ], - "functionName": { - "name": "add", - "nodeType": "YulIdentifier", - "src": "2534:3:10" - }, - "nodeType": "YulFunctionCall", - "src": "2534:18:10" + "id": 2320, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "nodeType": "UnaryOperation", + "operator": "!", + "prefix": true, + "src": "5906:17:15", + "subExpression": { + "expression": { + "id": 2318, + "name": "schedule", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2312, + "src": "5907:8:15", + "typeDescriptions": { + "typeIdentifier": "t_struct$_VestingSchedule_$1941_storage_ptr", + "typeString": "struct TokenVesting.VestingSchedule storage pointer" } - ], - "functionName": { - "name": "abi_decode_address", - "nodeType": "YulIdentifier", - "src": "2515:18:10" }, - "nodeType": "YulFunctionCall", - "src": "2515:38:10" - }, - "variableNames": [ - { - "name": "value1", - "nodeType": "YulIdentifier", - "src": "2505:6:10" + "id": 2319, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberLocation": "5916:7:15", + "memberName": "revoked", + "nodeType": "MemberAccess", + "referencedDeclaration": 1940, + "src": "5907:16:15", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" } - ] + }, + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + { + "hexValue": "56657374696e67207363686564756c65207265766f6b6564", + "id": 2321, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "string", + "lValueRequested": false, + "nodeType": "Literal", + "src": "5925:26:15", + "typeDescriptions": { + "typeIdentifier": "t_stringliteral_b8b87812c352fc8e39cdfe1757bfbcecb484013d66c0da14d0ba3b167d668ffe", + "typeString": "literal_string \"Vesting schedule revoked\"" + }, + "value": "Vesting schedule revoked" + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + { + "typeIdentifier": "t_stringliteral_b8b87812c352fc8e39cdfe1757bfbcecb484013d66c0da14d0ba3b167d668ffe", + "typeString": "literal_string \"Vesting schedule revoked\"" + } + ], + "id": 2317, + "name": "require", + "nodeType": "Identifier", + "overloadedDeclarations": [ + -18, + -18 + ], + "referencedDeclaration": -18, + "src": "5898:7:15", + "typeDescriptions": { + "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", + "typeString": "function (bool,string memory) pure" } - ] - }, - "name": "abi_decode_tuple_t_addresst_address", - "nodeType": "YulFunctionDefinition", - "parameters": [ - { - "name": "headStart", - "nodeType": "YulTypedName", - "src": "2344:9:10", - "type": "" }, - { - "name": "dataEnd", - "nodeType": "YulTypedName", - "src": "2355:7:10", - "type": "" + "id": 2322, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "5898:54:15", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" } + }, + "id": 2323, + "nodeType": "ExpressionStatement", + "src": "5898:54:15" + }, + { + "assignments": [ + 2325 ], - "returnVariables": [ + "declarations": [ { - "name": "value0", - "nodeType": "YulTypedName", - "src": "2367:6:10", - "type": "" + "constant": false, + "id": 2325, + "mutability": "mutable", + "name": "vestedAmount", + "nameLocation": "5972:12:15", + "nodeType": "VariableDeclaration", + "scope": 2379, + "src": "5964:20:15", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 2324, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "5964:7:15", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "id": 2329, + "initialValue": { + "arguments": [ + { + "id": 2327, + "name": "beneficiary", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2305, + "src": "6009:11:15", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + } + ], + "id": 2326, + "name": "calculateVestedAmount", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2224, + "src": "5987:21:15", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_view$_t_address_$returns$_t_uint256_$", + "typeString": "function (address) view returns (uint256)" + } }, + "id": 2328, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "5987:34:15", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "5964:57:15" + }, + { + "assignments": [ + 2331 + ], + "declarations": [ { - "name": "value1", - "nodeType": "YulTypedName", - "src": "2375:6:10", - "type": "" + "constant": false, + "id": 2331, + "mutability": "mutable", + "name": "unclaimedAmount", + "nameLocation": "6039:15:15", + "nodeType": "VariableDeclaration", + "scope": 2379, + "src": "6031:23:15", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 2330, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "6031:7:15", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" } ], - "src": "2299:260:10" + "id": 2336, + "initialValue": { + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 2335, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "id": 2332, + "name": "vestedAmount", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2325, + "src": "6057:12:15", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "-", + "rightExpression": { + "expression": { + "id": 2333, + "name": "schedule", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2312, + "src": "6072:8:15", + "typeDescriptions": { + "typeIdentifier": "t_struct$_VestingSchedule_$1941_storage_ptr", + "typeString": "struct TokenVesting.VestingSchedule storage pointer" + } + }, + "id": 2334, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberLocation": "6081:13:15", + "memberName": "amountClaimed", + "nodeType": "MemberAccess", + "referencedDeclaration": 1938, + "src": "6072:22:15", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "6057:37:15", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "6031:63:15" }, - { - "body": { - "nodeType": "YulBlock", - "src": "2619:325:10", - "statements": [ - { - "nodeType": "YulAssignment", - "src": "2629:22:10", - "value": { - "arguments": [ - { - "kind": "number", - "nodeType": "YulLiteral", - "src": "2643:1:10", - "type": "", - "value": "1" - }, - { - "name": "data", - "nodeType": "YulIdentifier", - "src": "2646:4:10" - } - ], - "functionName": { - "name": "shr", - "nodeType": "YulIdentifier", - "src": "2639:3:10" - }, - "nodeType": "YulFunctionCall", - "src": "2639:12:10" - }, - "variableNames": [ - { - "name": "length", - "nodeType": "YulIdentifier", - "src": "2629:6:10" - } - ] + { + "assignments": [ + 2338 + ], + "declarations": [ + { + "constant": false, + "id": 2338, + "mutability": "mutable", + "name": "unvestedAmount", + "nameLocation": "6112:14:15", + "nodeType": "VariableDeclaration", + "scope": 2379, + "src": "6104:22:15", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" }, - { - "nodeType": "YulVariableDeclaration", - "src": "2660:38:10", - "value": { - "arguments": [ - { - "name": "data", - "nodeType": "YulIdentifier", - "src": "2690:4:10" - }, - { - "kind": "number", - "nodeType": "YulLiteral", - "src": "2696:1:10", - "type": "", - "value": "1" - } - ], - "functionName": { - "name": "and", - "nodeType": "YulIdentifier", - "src": "2686:3:10" - }, - "nodeType": "YulFunctionCall", - "src": "2686:12:10" - }, - "variables": [ - { - "name": "outOfPlaceEncoding", - "nodeType": "YulTypedName", - "src": "2664:18:10", - "type": "" - } - ] + "typeName": { + "id": 2337, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "6104:7:15", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } }, - { - "body": { - "nodeType": "YulBlock", - "src": "2737:31:10", - "statements": [ - { - "nodeType": "YulAssignment", - "src": "2739:27:10", - "value": { - "arguments": [ - { - "name": "length", - "nodeType": "YulIdentifier", - "src": "2753:6:10" - }, - { - "kind": "number", - "nodeType": "YulLiteral", - "src": "2761:4:10", - "type": "", - "value": "0x7f" - } - ], - "functionName": { - "name": "and", - "nodeType": "YulIdentifier", - "src": "2749:3:10" - }, - "nodeType": "YulFunctionCall", - "src": "2749:17:10" - }, - "variableNames": [ - { - "name": "length", - "nodeType": "YulIdentifier", - "src": "2739:6:10" - } - ] - } - ] - }, - "condition": { - "arguments": [ - { - "name": "outOfPlaceEncoding", - "nodeType": "YulIdentifier", - "src": "2717:18:10" - } - ], - "functionName": { - "name": "iszero", - "nodeType": "YulIdentifier", - "src": "2710:6:10" - }, - "nodeType": "YulFunctionCall", - "src": "2710:26:10" - }, - "nodeType": "YulIf", - "src": "2707:61:10" + "visibility": "internal" + } + ], + "id": 2343, + "initialValue": { + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 2342, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "expression": { + "id": 2339, + "name": "schedule", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2312, + "src": "6129:8:15", + "typeDescriptions": { + "typeIdentifier": "t_struct$_VestingSchedule_$1941_storage_ptr", + "typeString": "struct TokenVesting.VestingSchedule storage pointer" + } }, - { - "body": { - "nodeType": "YulBlock", - "src": "2827:111:10", - "statements": [ - { - "expression": { - "arguments": [ - { - "kind": "number", - "nodeType": "YulLiteral", - "src": "2848:1:10", - "type": "", - "value": "0" - }, - { - "arguments": [ - { - "kind": "number", - "nodeType": "YulLiteral", - "src": "2855:3:10", - "type": "", - "value": "224" - }, - { - "kind": "number", - "nodeType": "YulLiteral", - "src": "2860:10:10", - "type": "", - "value": "0x4e487b71" - } - ], - "functionName": { - "name": "shl", - "nodeType": "YulIdentifier", - "src": "2851:3:10" - }, - "nodeType": "YulFunctionCall", - "src": "2851:20:10" - } - ], - "functionName": { - "name": "mstore", - "nodeType": "YulIdentifier", - "src": "2841:6:10" - }, - "nodeType": "YulFunctionCall", - "src": "2841:31:10" - }, - "nodeType": "YulExpressionStatement", - "src": "2841:31:10" - }, - { - "expression": { - "arguments": [ - { - "kind": "number", - "nodeType": "YulLiteral", - "src": "2892:1:10", - "type": "", - "value": "4" - }, - { - "kind": "number", - "nodeType": "YulLiteral", - "src": "2895:4:10", - "type": "", - "value": "0x22" - } - ], - "functionName": { - "name": "mstore", - "nodeType": "YulIdentifier", - "src": "2885:6:10" - }, - "nodeType": "YulFunctionCall", - "src": "2885:15:10" - }, - "nodeType": "YulExpressionStatement", - "src": "2885:15:10" - }, - { - "expression": { - "arguments": [ - { - "kind": "number", - "nodeType": "YulLiteral", - "src": "2920:1:10", - "type": "", - "value": "0" - }, - { - "kind": "number", - "nodeType": "YulLiteral", - "src": "2923:4:10", - "type": "", - "value": "0x24" - } - ], - "functionName": { - "name": "revert", - "nodeType": "YulIdentifier", - "src": "2913:6:10" - }, - "nodeType": "YulFunctionCall", - "src": "2913:15:10" - }, - "nodeType": "YulExpressionStatement", - "src": "2913:15:10" - } - ] - }, - "condition": { - "arguments": [ - { - "name": "outOfPlaceEncoding", - "nodeType": "YulIdentifier", - "src": "2783:18:10" - }, - { - "arguments": [ - { - "name": "length", - "nodeType": "YulIdentifier", - "src": "2806:6:10" - }, - { - "kind": "number", - "nodeType": "YulLiteral", - "src": "2814:2:10", - "type": "", - "value": "32" - } - ], - "functionName": { - "name": "lt", - "nodeType": "YulIdentifier", - "src": "2803:2:10" - }, - "nodeType": "YulFunctionCall", - "src": "2803:14:10" - } - ], - "functionName": { - "name": "eq", - "nodeType": "YulIdentifier", - "src": "2780:2:10" - }, - "nodeType": "YulFunctionCall", - "src": "2780:38:10" - }, - "nodeType": "YulIf", - "src": "2777:161:10" + "id": 2340, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberLocation": "6138:11:15", + "memberName": "totalAmount", + "nodeType": "MemberAccess", + "referencedDeclaration": 1930, + "src": "6129:20:15", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "-", + "rightExpression": { + "id": 2341, + "name": "vestedAmount", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2325, + "src": "6152:12:15", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" } - ] - }, - "name": "extract_byte_array_length", - "nodeType": "YulFunctionDefinition", - "parameters": [ - { - "name": "data", - "nodeType": "YulTypedName", - "src": "2599:4:10", - "type": "" + }, + "src": "6129:35:15", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" } - ], - "returnVariables": [ - { - "name": "length", - "nodeType": "YulTypedName", - "src": "2608:6:10", - "type": "" + }, + "nodeType": "VariableDeclarationStatement", + "src": "6104:60:15" + }, + { + "expression": { + "id": 2348, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "expression": { + "id": 2344, + "name": "schedule", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2312, + "src": "6183:8:15", + "typeDescriptions": { + "typeIdentifier": "t_struct$_VestingSchedule_$1941_storage_ptr", + "typeString": "struct TokenVesting.VestingSchedule storage pointer" + } + }, + "id": 2346, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": true, + "memberLocation": "6192:7:15", + "memberName": "revoked", + "nodeType": "MemberAccess", + "referencedDeclaration": 1940, + "src": "6183:16:15", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "hexValue": "74727565", + "id": 2347, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "bool", + "lValueRequested": false, + "nodeType": "Literal", + "src": "6202:4:15", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "value": "true" + }, + "src": "6183:23:15", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" } - ], - "src": "2564:380:10" + }, + "id": 2349, + "nodeType": "ExpressionStatement", + "src": "6183:23:15" }, { - "body": { - "nodeType": "YulBlock", - "src": "3106:188:10", - "statements": [ - { - "nodeType": "YulAssignment", - "src": "3116:26:10", - "value": { - "arguments": [ - { - "name": "headStart", - "nodeType": "YulIdentifier", - "src": "3128:9:10" - }, - { - "kind": "number", - "nodeType": "YulLiteral", - "src": "3139:2:10", - "type": "", - "value": "96" - } - ], - "functionName": { - "name": "add", - "nodeType": "YulIdentifier", - "src": "3124:3:10" - }, - "nodeType": "YulFunctionCall", - "src": "3124:18:10" - }, - "variableNames": [ - { - "name": "tail", - "nodeType": "YulIdentifier", - "src": "3116:4:10" - } - ] + "condition": { + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 2352, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "id": 2350, + "name": "unclaimedAmount", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2331, + "src": "6229:15:15", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": ">", + "rightExpression": { + "hexValue": "30", + "id": 2351, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "6247:1:15", + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" }, + "value": "0" + }, + "src": "6229:19:15", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "id": 2361, + "nodeType": "IfStatement", + "src": "6225:98:15", + "trueBody": { + "id": 2360, + "nodeType": "Block", + "src": "6250:73:15", + "statements": [ { "expression": { "arguments": [ { - "name": "headStart", - "nodeType": "YulIdentifier", - "src": "3158:9:10" + "id": 2356, + "name": "beneficiary", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2305, + "src": "6283:11:15", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } }, { - "arguments": [ - { - "name": "value0", - "nodeType": "YulIdentifier", - "src": "3173:6:10" - }, - { - "arguments": [ - { - "arguments": [ - { - "kind": "number", - "nodeType": "YulLiteral", - "src": "3189:3:10", - "type": "", - "value": "160" - }, - { - "kind": "number", - "nodeType": "YulLiteral", - "src": "3194:1:10", - "type": "", - "value": "1" - } - ], - "functionName": { - "name": "shl", - "nodeType": "YulIdentifier", - "src": "3185:3:10" - }, - "nodeType": "YulFunctionCall", - "src": "3185:11:10" - }, - { - "kind": "number", - "nodeType": "YulLiteral", - "src": "3198:1:10", - "type": "", - "value": "1" - } - ], - "functionName": { - "name": "sub", - "nodeType": "YulIdentifier", - "src": "3181:3:10" - }, - "nodeType": "YulFunctionCall", - "src": "3181:19:10" - } - ], - "functionName": { - "name": "and", - "nodeType": "YulIdentifier", - "src": "3169:3:10" - }, - "nodeType": "YulFunctionCall", - "src": "3169:32:10" + "id": 2357, + "name": "unclaimedAmount", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2331, + "src": "6296:15:15", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } } ], - "functionName": { - "name": "mstore", - "nodeType": "YulIdentifier", - "src": "3151:6:10" - }, - "nodeType": "YulFunctionCall", - "src": "3151:51:10" - }, - "nodeType": "YulExpressionStatement", - "src": "3151:51:10" - }, - { - "expression": { - "arguments": [ - { - "arguments": [ - { - "name": "headStart", - "nodeType": "YulIdentifier", - "src": "3222:9:10" - }, - { - "kind": "number", - "nodeType": "YulLiteral", - "src": "3233:2:10", - "type": "", - "value": "32" - } - ], - "functionName": { - "name": "add", - "nodeType": "YulIdentifier", - "src": "3218:3:10" + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" }, - "nodeType": "YulFunctionCall", - "src": "3218:18:10" - }, - { - "name": "value1", - "nodeType": "YulIdentifier", - "src": "3238:6:10" + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "expression": { + "id": 2353, + "name": "token", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1948, + "src": "6264:5:15", + "typeDescriptions": { + "typeIdentifier": "t_contract$_IERC20_$967", + "typeString": "contract IERC20" + } + }, + "id": 2355, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberLocation": "6270:12:15", + "memberName": "safeTransfer", + "nodeType": "MemberAccess", + "referencedDeclaration": 1040, + "src": "6264:18:15", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_nonpayable$_t_contract$_IERC20_$967_$_t_address_$_t_uint256_$returns$__$attached_to$_t_contract$_IERC20_$967_$", + "typeString": "function (contract IERC20,address,uint256)" } - ], - "functionName": { - "name": "mstore", - "nodeType": "YulIdentifier", - "src": "3211:6:10" }, - "nodeType": "YulFunctionCall", - "src": "3211:34:10" + "id": 2358, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "6264:48:15", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } }, - "nodeType": "YulExpressionStatement", - "src": "3211:34:10" + "id": 2359, + "nodeType": "ExpressionStatement", + "src": "6264:48:15" + } + ] + } + }, + { + "condition": { + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 2364, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "id": 2362, + "name": "unvestedAmount", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2338, + "src": "6336:14:15", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": ">", + "rightExpression": { + "hexValue": "30", + "id": 2363, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "6353:1:15", + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" }, + "value": "0" + }, + "src": "6336:18:15", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "id": 2374, + "nodeType": "IfStatement", + "src": "6332:92:15", + "trueBody": { + "id": 2373, + "nodeType": "Block", + "src": "6356:68:15", + "statements": [ { "expression": { "arguments": [ { - "arguments": [ - { - "name": "headStart", - "nodeType": "YulIdentifier", - "src": "3265:9:10" - }, - { - "kind": "number", - "nodeType": "YulLiteral", - "src": "3276:2:10", - "type": "", - "value": "64" + "arguments": [], + "expression": { + "argumentTypes": [], + "id": 2368, + "name": "owner", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 67, + "src": "6389:5:15", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_view$__$returns$_t_address_$", + "typeString": "function () view returns (address)" } - ], - "functionName": { - "name": "add", - "nodeType": "YulIdentifier", - "src": "3261:3:10" }, - "nodeType": "YulFunctionCall", - "src": "3261:18:10" + "id": 2369, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "6389:7:15", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } }, { - "name": "value2", - "nodeType": "YulIdentifier", - "src": "3281:6:10" + "id": 2370, + "name": "unvestedAmount", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2338, + "src": "6398:14:15", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } } ], - "functionName": { - "name": "mstore", - "nodeType": "YulIdentifier", - "src": "3254:6:10" + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "expression": { + "id": 2365, + "name": "token", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1948, + "src": "6370:5:15", + "typeDescriptions": { + "typeIdentifier": "t_contract$_IERC20_$967", + "typeString": "contract IERC20" + } + }, + "id": 2367, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberLocation": "6376:12:15", + "memberName": "safeTransfer", + "nodeType": "MemberAccess", + "referencedDeclaration": 1040, + "src": "6370:18:15", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_nonpayable$_t_contract$_IERC20_$967_$_t_address_$_t_uint256_$returns$__$attached_to$_t_contract$_IERC20_$967_$", + "typeString": "function (contract IERC20,address,uint256)" + } }, - "nodeType": "YulFunctionCall", - "src": "3254:34:10" + "id": 2371, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "6370:43:15", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } }, - "nodeType": "YulExpressionStatement", - "src": "3254:34:10" + "id": 2372, + "nodeType": "ExpressionStatement", + "src": "6370:43:15" + } + ] + } + }, + { + "eventCall": { + "arguments": [ + { + "id": 2376, + "name": "beneficiary", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2305, + "src": "6454:11:15", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + } + ], + "id": 2375, + "name": "VestingRevoked", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1973, + "src": "6439:14:15", + "typeDescriptions": { + "typeIdentifier": "t_function_event_nonpayable$_t_address_$returns$__$", + "typeString": "function (address)" + } + }, + "id": 2377, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "6439:27:15", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 2378, + "nodeType": "EmitStatement", + "src": "6434:32:15" + } + ] + }, + "functionSelector": "3b0da260", + "id": 2380, + "implemented": true, + "kind": "function", + "modifiers": [ + { + "id": 2308, + "kind": "modifierInvocation", + "modifierName": { + "id": 2307, + "name": "onlyOwner", + "nameLocations": [ + "5758:9:15" + ], + "nodeType": "IdentifierPath", + "referencedDeclaration": 58, + "src": "5758:9:15" + }, + "nodeType": "ModifierInvocation", + "src": "5758:9:15" + } + ], + "name": "revokeVesting", + "nameLocation": "5714:13:15", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 2306, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 2305, + "mutability": "mutable", + "name": "beneficiary", + "nameLocation": "5736:11:15", + "nodeType": "VariableDeclaration", + "scope": 2380, + "src": "5728:19:15", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 2304, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "5728:7:15", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + } + ], + "src": "5727:21:15" + }, + "returnParameters": { + "id": 2309, + "nodeType": "ParameterList", + "parameters": [], + "src": "5768:0:15" + }, + "scope": 2399, + "src": "5705:768:15", + "stateMutability": "nonpayable", + "virtual": false, + "visibility": "external" + }, + { + "body": { + "id": 2388, + "nodeType": "Block", + "src": "6515:25:15", + "statements": [ + { + "expression": { + "arguments": [], + "expression": { + "argumentTypes": [], + "id": 2385, + "name": "_pause", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1815, + "src": "6525:6:15", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_nonpayable$__$returns$__$", + "typeString": "function ()" } - ] + }, + "id": 2386, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "6525:8:15", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 2387, + "nodeType": "ExpressionStatement", + "src": "6525:8:15" + } + ] + }, + "functionSelector": "8456cb59", + "id": 2389, + "implemented": true, + "kind": "function", + "modifiers": [ + { + "id": 2383, + "kind": "modifierInvocation", + "modifierName": { + "id": 2382, + "name": "onlyOwner", + "nameLocations": [ + "6505:9:15" + ], + "nodeType": "IdentifierPath", + "referencedDeclaration": 58, + "src": "6505:9:15" + }, + "nodeType": "ModifierInvocation", + "src": "6505:9:15" + } + ], + "name": "pause", + "nameLocation": "6488:5:15", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 2381, + "nodeType": "ParameterList", + "parameters": [], + "src": "6493:2:15" + }, + "returnParameters": { + "id": 2384, + "nodeType": "ParameterList", + "parameters": [], + "src": "6515:0:15" + }, + "scope": 2399, + "src": "6479:61:15", + "stateMutability": "nonpayable", + "virtual": false, + "visibility": "external" + }, + { + "body": { + "id": 2397, + "nodeType": "Block", + "src": "6584:27:15", + "statements": [ + { + "expression": { + "arguments": [], + "expression": { + "argumentTypes": [], + "id": 2394, + "name": "_unpause", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1831, + "src": "6594:8:15", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_nonpayable$__$returns$__$", + "typeString": "function ()" + } + }, + "id": 2395, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "6594:10:15", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 2396, + "nodeType": "ExpressionStatement", + "src": "6594:10:15" + } + ] + }, + "functionSelector": "3f4ba83a", + "id": 2398, + "implemented": true, + "kind": "function", + "modifiers": [ + { + "id": 2392, + "kind": "modifierInvocation", + "modifierName": { + "id": 2391, + "name": "onlyOwner", + "nameLocations": [ + "6574:9:15" + ], + "nodeType": "IdentifierPath", + "referencedDeclaration": 58, + "src": "6574:9:15" + }, + "nodeType": "ModifierInvocation", + "src": "6574:9:15" + } + ], + "name": "unpause", + "nameLocation": "6555:7:15", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 2390, + "nodeType": "ParameterList", + "parameters": [], + "src": "6562:2:15" + }, + "returnParameters": { + "id": 2393, + "nodeType": "ParameterList", + "parameters": [], + "src": "6584:0:15" + }, + "scope": 2399, + "src": "6546:65:15", + "stateMutability": "nonpayable", + "virtual": false, + "visibility": "external" + } + ], + "scope": 2400, + "src": "1132:5481:15", + "usedErrors": [ + 13, + 18, + 1007, + 1737, + 1740, + 1846 + ], + "usedEvents": [ + 24, + 1729, + 1734, + 1963, + 1969, + 1973, + 1977, + 1981 + ] + } + ], + "src": "817:6749:15" + }, + "id": 15 + }, + "contracts/token.sol": { + "ast": { + "absolutePath": "contracts/token.sol", + "exportedSymbols": { + "Context": [ + 1693 + ], + "ERC20": [ + 889 + ], + "IERC20": [ + 967 + ], + "IERC20Errors": [ + 279 + ], + "IERC20Metadata": [ + 993 + ], + "MockERC20": [ + 2437 + ], + "Ownable": [ + 147 + ] + }, + "id": 2438, + "license": "MIT", + "nodeType": "SourceUnit", + "nodes": [ + { + "id": 2401, + "literals": [ + "solidity", + "^", + "0.8", + ".0" + ], + "nodeType": "PragmaDirective", + "src": "32:23:16" + }, + { + "absolutePath": "@openzeppelin/contracts/token/ERC20/ERC20.sol", + "file": "@openzeppelin/contracts/token/ERC20/ERC20.sol", + "id": 2402, + "nameLocation": "-1:-1:-1", + "nodeType": "ImportDirective", + "scope": 2438, + "sourceUnit": 890, + "src": "57:55:16", + "symbolAliases": [], + "unitAlias": "" + }, + { + "absolutePath": "@openzeppelin/contracts/access/Ownable.sol", + "file": "@openzeppelin/contracts/access/Ownable.sol", + "id": 2403, + "nameLocation": "-1:-1:-1", + "nodeType": "ImportDirective", + "scope": 2438, + "sourceUnit": 148, + "src": "113:52:16", + "symbolAliases": [], + "unitAlias": "" + }, + { + "abstract": false, + "baseContracts": [ + { + "baseName": { + "id": 2404, + "name": "ERC20", + "nameLocations": [ + "189:5:16" + ], + "nodeType": "IdentifierPath", + "referencedDeclaration": 889, + "src": "189:5:16" + }, + "id": 2405, + "nodeType": "InheritanceSpecifier", + "src": "189:5:16" + }, + { + "arguments": [ + { + "expression": { + "id": 2407, + "name": "msg", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": -15, + "src": "204:3:16", + "typeDescriptions": { + "typeIdentifier": "t_magic_message", + "typeString": "msg" + } + }, + "id": 2408, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberLocation": "208:6:16", + "memberName": "sender", + "nodeType": "MemberAccess", + "src": "204:10:16", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + } + ], + "baseName": { + "id": 2406, + "name": "Ownable", + "nameLocations": [ + "196:7:16" + ], + "nodeType": "IdentifierPath", + "referencedDeclaration": 147, + "src": "196:7:16" + }, + "id": 2409, + "nodeType": "InheritanceSpecifier", + "src": "196:19:16" + } + ], + "canonicalName": "MockERC20", + "contractDependencies": [], + "contractKind": "contract", + "fullyImplemented": true, + "id": 2437, + "linearizedBaseContracts": [ + 2437, + 147, + 889, + 279, + 993, + 967, + 1693 + ], + "name": "MockERC20", + "nameLocation": "176:9:16", + "nodeType": "ContractDefinition", + "nodes": [ + { + "body": { + "id": 2420, + "nodeType": "Block", + "src": "296:2:16", + "statements": [] + }, + "id": 2421, + "implemented": true, + "kind": "constructor", + "modifiers": [ + { + "arguments": [ + { + "id": 2416, + "name": "name", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2411, + "src": "282:4:16", + "typeDescriptions": { + "typeIdentifier": "t_string_memory_ptr", + "typeString": "string memory" + } }, - "name": "abi_encode_tuple_t_address_t_uint256_t_uint256__to_t_address_t_uint256_t_uint256__fromStack_reversed", - "nodeType": "YulFunctionDefinition", - "parameters": [ - { - "name": "headStart", - "nodeType": "YulTypedName", - "src": "3059:9:10", - "type": "" - }, - { - "name": "value2", - "nodeType": "YulTypedName", - "src": "3070:6:10", - "type": "" - }, - { - "name": "value1", - "nodeType": "YulTypedName", - "src": "3078:6:10", - "type": "" - }, - { - "name": "value0", - "nodeType": "YulTypedName", - "src": "3086:6:10", - "type": "" + { + "id": 2417, + "name": "symbol", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2413, + "src": "288:6:16", + "typeDescriptions": { + "typeIdentifier": "t_string_memory_ptr", + "typeString": "string memory" } + } + ], + "id": 2418, + "kind": "baseConstructorSpecifier", + "modifierName": { + "id": 2415, + "name": "ERC20", + "nameLocations": [ + "276:5:16" ], - "returnVariables": [ - { - "name": "tail", - "nodeType": "YulTypedName", - "src": "3097:4:10", - "type": "" + "nodeType": "IdentifierPath", + "referencedDeclaration": 889, + "src": "276:5:16" + }, + "nodeType": "ModifierInvocation", + "src": "276:19:16" + } + ], + "name": "", + "nameLocation": "-1:-1:-1", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 2414, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 2411, + "mutability": "mutable", + "name": "name", + "nameLocation": "248:4:16", + "nodeType": "VariableDeclaration", + "scope": 2421, + "src": "234:18:16", + "stateVariable": false, + "storageLocation": "memory", + "typeDescriptions": { + "typeIdentifier": "t_string_memory_ptr", + "typeString": "string" + }, + "typeName": { + "id": 2410, + "name": "string", + "nodeType": "ElementaryTypeName", + "src": "234:6:16", + "typeDescriptions": { + "typeIdentifier": "t_string_storage_ptr", + "typeString": "string" } - ], - "src": "2949:345:10" + }, + "visibility": "internal" }, { - "body": { - "nodeType": "YulBlock", - "src": "3347:174:10", - "statements": [ - { - "nodeType": "YulAssignment", - "src": "3357:16:10", - "value": { - "arguments": [ - { - "name": "x", - "nodeType": "YulIdentifier", - "src": "3368:1:10" - }, - { - "name": "y", - "nodeType": "YulIdentifier", - "src": "3371:1:10" - } - ], - "functionName": { - "name": "add", - "nodeType": "YulIdentifier", - "src": "3364:3:10" - }, - "nodeType": "YulFunctionCall", - "src": "3364:9:10" - }, - "variableNames": [ - { - "name": "sum", - "nodeType": "YulIdentifier", - "src": "3357:3:10" - } - ] - }, - { - "body": { - "nodeType": "YulBlock", - "src": "3404:111:10", - "statements": [ - { - "expression": { - "arguments": [ - { - "kind": "number", - "nodeType": "YulLiteral", - "src": "3425:1:10", - "type": "", - "value": "0" - }, - { - "arguments": [ - { - "kind": "number", - "nodeType": "YulLiteral", - "src": "3432:3:10", - "type": "", - "value": "224" - }, - { - "kind": "number", - "nodeType": "YulLiteral", - "src": "3437:10:10", - "type": "", - "value": "0x4e487b71" - } - ], - "functionName": { - "name": "shl", - "nodeType": "YulIdentifier", - "src": "3428:3:10" - }, - "nodeType": "YulFunctionCall", - "src": "3428:20:10" - } - ], - "functionName": { - "name": "mstore", - "nodeType": "YulIdentifier", - "src": "3418:6:10" - }, - "nodeType": "YulFunctionCall", - "src": "3418:31:10" - }, - "nodeType": "YulExpressionStatement", - "src": "3418:31:10" - }, - { - "expression": { - "arguments": [ - { - "kind": "number", - "nodeType": "YulLiteral", - "src": "3469:1:10", - "type": "", - "value": "4" - }, - { - "kind": "number", - "nodeType": "YulLiteral", - "src": "3472:4:10", - "type": "", - "value": "0x11" - } - ], - "functionName": { - "name": "mstore", - "nodeType": "YulIdentifier", - "src": "3462:6:10" - }, - "nodeType": "YulFunctionCall", - "src": "3462:15:10" - }, - "nodeType": "YulExpressionStatement", - "src": "3462:15:10" - }, - { - "expression": { - "arguments": [ - { - "kind": "number", - "nodeType": "YulLiteral", - "src": "3497:1:10", - "type": "", - "value": "0" - }, - { - "kind": "number", - "nodeType": "YulLiteral", - "src": "3500:4:10", - "type": "", - "value": "0x24" - } - ], - "functionName": { - "name": "revert", - "nodeType": "YulIdentifier", - "src": "3490:6:10" - }, - "nodeType": "YulFunctionCall", - "src": "3490:15:10" - }, - "nodeType": "YulExpressionStatement", - "src": "3490:15:10" - } - ] - }, - "condition": { - "arguments": [ - { - "name": "x", - "nodeType": "YulIdentifier", - "src": "3388:1:10" - }, - { - "name": "sum", - "nodeType": "YulIdentifier", - "src": "3391:3:10" - } - ], - "functionName": { - "name": "gt", - "nodeType": "YulIdentifier", - "src": "3385:2:10" - }, - "nodeType": "YulFunctionCall", - "src": "3385:10:10" + "constant": false, + "id": 2413, + "mutability": "mutable", + "name": "symbol", + "nameLocation": "268:6:16", + "nodeType": "VariableDeclaration", + "scope": 2421, + "src": "254:20:16", + "stateVariable": false, + "storageLocation": "memory", + "typeDescriptions": { + "typeIdentifier": "t_string_memory_ptr", + "typeString": "string" + }, + "typeName": { + "id": 2412, + "name": "string", + "nodeType": "ElementaryTypeName", + "src": "254:6:16", + "typeDescriptions": { + "typeIdentifier": "t_string_storage_ptr", + "typeString": "string" + } + }, + "visibility": "internal" + } + ], + "src": "233:42:16" + }, + "returnParameters": { + "id": 2419, + "nodeType": "ParameterList", + "parameters": [], + "src": "296:0:16" + }, + "scope": 2437, + "src": "222:76:16", + "stateMutability": "nonpayable", + "virtual": false, + "visibility": "public" + }, + { + "body": { + "id": 2435, + "nodeType": "Block", + "src": "365:34:16", + "statements": [ + { + "expression": { + "arguments": [ + { + "id": 2431, + "name": "to", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2423, + "src": "381:2:16", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "id": 2432, + "name": "amount", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2425, + "src": "385:6:16", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" }, - "nodeType": "YulIf", - "src": "3382:133:10" + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "id": 2430, + "name": "_mint", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 729, + "src": "375:5:16", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_uint256_$returns$__$", + "typeString": "function (address,uint256)" } - ] - }, - "name": "checked_add_t_uint256", - "nodeType": "YulFunctionDefinition", - "parameters": [ - { - "name": "x", - "nodeType": "YulTypedName", - "src": "3330:1:10", - "type": "" }, - { - "name": "y", - "nodeType": "YulTypedName", - "src": "3333:1:10", - "type": "" + "id": 2433, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "375:17:16", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" } + }, + "id": 2434, + "nodeType": "ExpressionStatement", + "src": "375:17:16" + } + ] + }, + "functionSelector": "40c10f19", + "id": 2436, + "implemented": true, + "kind": "function", + "modifiers": [ + { + "id": 2428, + "kind": "modifierInvocation", + "modifierName": { + "id": 2427, + "name": "onlyOwner", + "nameLocations": [ + "355:9:16" ], - "returnVariables": [ - { - "name": "sum", - "nodeType": "YulTypedName", - "src": "3339:3:10", - "type": "" + "nodeType": "IdentifierPath", + "referencedDeclaration": 58, + "src": "355:9:16" + }, + "nodeType": "ModifierInvocation", + "src": "355:9:16" + } + ], + "name": "mint", + "nameLocation": "313:4:16", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 2426, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 2423, + "mutability": "mutable", + "name": "to", + "nameLocation": "326:2:16", + "nodeType": "VariableDeclaration", + "scope": 2436, + "src": "318:10:16", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 2422, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "318:7:16", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" } - ], - "src": "3299:222:10" + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 2425, + "mutability": "mutable", + "name": "amount", + "nameLocation": "338:6:16", + "nodeType": "VariableDeclaration", + "scope": 2436, + "src": "330:14:16", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 2424, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "330:7:16", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" } - ] + ], + "src": "317:28:16" }, - "contents": "{\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 mstore(add(add(headStart, length), 64), 0)\n tail := add(add(headStart, and(add(length, 31), not(31))), 64)\n }\n function abi_decode_address(offset) -> value\n {\n value := calldataload(offset)\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 value0 := abi_decode_address(headStart)\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_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 value0 := abi_decode_address(headStart)\n value1 := abi_decode_address(add(headStart, 32))\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 value0 := abi_decode_address(headStart)\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_addresst_address(headStart, dataEnd) -> value0, value1\n {\n if slt(sub(dataEnd, headStart), 64) { revert(0, 0) }\n value0 := abi_decode_address(headStart)\n value1 := abi_decode_address(add(headStart, 32))\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_address_t_uint256_t_uint256__to_t_address_t_uint256_t_uint256__fromStack_reversed(headStart, value2, value1, value0) -> tail\n {\n tail := add(headStart, 96)\n mstore(headStart, and(value0, sub(shl(160, 1), 1)))\n mstore(add(headStart, 32), value1)\n mstore(add(headStart, 64), value2)\n }\n function checked_add_t_uint256(x, y) -> sum\n {\n sum := add(x, y)\n if gt(x, sum)\n {\n mstore(0, shl(224, 0x4e487b71))\n mstore(4, 0x11)\n revert(0, 0x24)\n }\n }\n}", - "id": 10, - "language": "Yul", - "name": "#utility.yul" + "returnParameters": { + "id": 2429, + "nodeType": "ParameterList", + "parameters": [], + "src": "365:0:16" + }, + "scope": 2437, + "src": "304:95:16", + "stateMutability": "nonpayable", + "virtual": false, + "visibility": "external" + } + ], + "scope": 2438, + "src": "167:234:16", + "usedErrors": [ + 13, + 18, + 249, + 254, + 259, + 268, + 273, + 278 + ], + "usedEvents": [ + 24, + 901, + 910 + ] + } + ], + "src": "32:370:16" + }, + "id": 16 + } + }, + "contracts": { + "@openzeppelin/contracts/access/Ownable.sol": { + "Ownable": { + "abi": [ + { + "inputs": [ + { + "internalType": "address", + "name": "owner", + "type": "address" + } + ], + "name": "OwnableInvalidOwner", + "type": "error" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "account", + "type": "address" + } + ], + "name": "OwnableUnauthorizedAccount", + "type": "error" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "address", + "name": "previousOwner", + "type": "address" + }, + { + "indexed": true, + "internalType": "address", + "name": "newOwner", + "type": "address" + } + ], + "name": "OwnershipTransferred", + "type": "event" + }, + { + "inputs": [], + "name": "owner", + "outputs": [ + { + "internalType": "address", + "name": "", + "type": "address" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "renounceOwnership", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "newOwner", + "type": "address" + } + ], + "name": "transferOwnership", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + } + ], + "evm": { + "bytecode": { + "functionDebugData": {}, + "generatedSources": [], + "linkReferences": {}, + "object": "", + "opcodes": "", + "sourceMap": "" + }, + "deployedBytecode": { + "functionDebugData": {}, + "generatedSources": [], + "immutableReferences": {}, + "linkReferences": {}, + "object": "", + "opcodes": "", + "sourceMap": "" + }, + "methodIdentifiers": { + "owner()": "8da5cb5b", + "renounceOwnership()": "715018a6", + "transferOwnership(address)": "f2fde38b" + } + }, + "metadata": "{\"compiler\":{\"version\":\"0.8.20+commit.a1b79de6\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"}],\"name\":\"OwnableInvalidOwner\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"OwnableUnauthorizedAccount\",\"type\":\"error\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"previousOwner\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"newOwner\",\"type\":\"address\"}],\"name\":\"OwnershipTransferred\",\"type\":\"event\"},{\"inputs\":[],\"name\":\"owner\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"renounceOwnership\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"newOwner\",\"type\":\"address\"}],\"name\":\"transferOwnership\",\"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. The initial owner is set to the address provided by the deployer. This can later be changed with {transferOwnership}. 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.\",\"errors\":{\"OwnableInvalidOwner(address)\":[{\"details\":\"The owner is not a valid owner account. (eg. `address(0)`)\"}],\"OwnableUnauthorizedAccount(address)\":[{\"details\":\"The caller account is not authorized to perform an operation.\"}]},\"kind\":\"dev\",\"methods\":{\"constructor\":{\"details\":\"Initializes the contract setting the address provided by the deployer as the initial owner.\"},\"owner()\":{\"details\":\"Returns the address of the current owner.\"},\"renounceOwnership()\":{\"details\":\"Leaves the contract without owner. It will not be possible to call `onlyOwner` functions. Can only be called by the current owner. NOTE: Renouncing ownership will leave the contract without an owner, thereby disabling any functionality that is only available to the owner.\"},\"transferOwnership(address)\":{\"details\":\"Transfers ownership of the contract to a new account (`newOwner`). Can only be called by the current owner.\"}},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"@openzeppelin/contracts/access/Ownable.sol\":\"Ownable\"},\"evmVersion\":\"london\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":200},\"remappings\":[]},\"sources\":{\"@openzeppelin/contracts/access/Ownable.sol\":{\"keccak256\":\"0xff6d0bb2e285473e5311d9d3caacb525ae3538a80758c10649a4d61029b017bb\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://8ed324d3920bb545059d66ab97d43e43ee85fd3bd52e03e401f020afb0b120f6\",\"dweb:/ipfs/QmfEckWLmZkDDcoWrkEvMWhms66xwTLff9DDhegYpvHo1a\"]},\"@openzeppelin/contracts/utils/Context.sol\":{\"keccak256\":\"0x493033a8d1b176a037b2cc6a04dad01a5c157722049bbecf632ca876224dd4b2\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://6a708e8a5bdb1011c2c381c9a5cfd8a9a956d7d0a9dc1bd8bcdaf52f76ef2f12\",\"dweb:/ipfs/Qmax9WHBnVsZP46ZxEMNRQpLQnrdE4dK8LehML1Py8FowF\"]}},\"version\":1}" + } + }, + "@openzeppelin/contracts/interfaces/IERC1363.sol": { + "IERC1363": { + "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": "value", + "type": "uint256" + } + ], + "name": "approve", + "outputs": [ + { + "internalType": "bool", + "name": "", + "type": "bool" + } + ], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "spender", + "type": "address" + }, + { + "internalType": "uint256", + "name": "value", + "type": "uint256" + } + ], + "name": "approveAndCall", + "outputs": [ + { + "internalType": "bool", + "name": "", + "type": "bool" + } + ], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "spender", + "type": "address" + }, + { + "internalType": "uint256", + "name": "value", + "type": "uint256" + }, + { + "internalType": "bytes", + "name": "data", + "type": "bytes" + } + ], + "name": "approveAndCall", + "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": "bytes4", + "name": "interfaceId", + "type": "bytes4" + } + ], + "name": "supportsInterface", + "outputs": [ + { + "internalType": "bool", + "name": "", + "type": "bool" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "totalSupply", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "to", + "type": "address" + }, + { + "internalType": "uint256", + "name": "value", + "type": "uint256" + } + ], + "name": "transfer", + "outputs": [ + { + "internalType": "bool", + "name": "", + "type": "bool" + } + ], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "to", + "type": "address" + }, + { + "internalType": "uint256", + "name": "value", + "type": "uint256" + } + ], + "name": "transferAndCall", + "outputs": [ + { + "internalType": "bool", + "name": "", + "type": "bool" + } + ], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "to", + "type": "address" + }, + { + "internalType": "uint256", + "name": "value", + "type": "uint256" + }, + { + "internalType": "bytes", + "name": "data", + "type": "bytes" + } + ], + "name": "transferAndCall", + "outputs": [ + { + "internalType": "bool", + "name": "", + "type": "bool" + } + ], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "from", + "type": "address" + }, + { + "internalType": "address", + "name": "to", + "type": "address" + }, + { + "internalType": "uint256", + "name": "value", + "type": "uint256" + } + ], + "name": "transferFrom", + "outputs": [ + { + "internalType": "bool", + "name": "", + "type": "bool" + } + ], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "from", + "type": "address" + }, + { + "internalType": "address", + "name": "to", + "type": "address" + }, + { + "internalType": "uint256", + "name": "value", + "type": "uint256" + }, + { + "internalType": "bytes", + "name": "data", + "type": "bytes" + } + ], + "name": "transferFromAndCall", + "outputs": [ + { + "internalType": "bool", + "name": "", + "type": "bool" + } + ], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "from", + "type": "address" + }, + { + "internalType": "address", + "name": "to", + "type": "address" + }, + { + "internalType": "uint256", + "name": "value", + "type": "uint256" + } + ], + "name": "transferFromAndCall", + "outputs": [ + { + "internalType": "bool", + "name": "", + "type": "bool" + } + ], + "stateMutability": "nonpayable", + "type": "function" + } + ], + "evm": { + "bytecode": { + "functionDebugData": {}, + "generatedSources": [], + "linkReferences": {}, + "object": "", + "opcodes": "", + "sourceMap": "" + }, + "deployedBytecode": { + "functionDebugData": {}, + "generatedSources": [], + "immutableReferences": {}, + "linkReferences": {}, + "object": "", + "opcodes": "", + "sourceMap": "" + }, + "methodIdentifiers": { + "allowance(address,address)": "dd62ed3e", + "approve(address,uint256)": "095ea7b3", + "approveAndCall(address,uint256)": "3177029f", + "approveAndCall(address,uint256,bytes)": "cae9ca51", + "balanceOf(address)": "70a08231", + "supportsInterface(bytes4)": "01ffc9a7", + "totalSupply()": "18160ddd", + "transfer(address,uint256)": "a9059cbb", + "transferAndCall(address,uint256)": "1296ee62", + "transferAndCall(address,uint256,bytes)": "4000aea0", + "transferFrom(address,address,uint256)": "23b872dd", + "transferFromAndCall(address,address,uint256)": "d8fbe994", + "transferFromAndCall(address,address,uint256,bytes)": "c1d34b89" + } + }, + "metadata": "{\"compiler\":{\"version\":\"0.8.20+commit.a1b79de6\"},\"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\":\"value\",\"type\":\"uint256\"}],\"name\":\"approve\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"name\":\"approveAndCall\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"},{\"internalType\":\"bytes\",\"name\":\"data\",\"type\":\"bytes\"}],\"name\":\"approveAndCall\",\"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\":\"bytes4\",\"name\":\"interfaceId\",\"type\":\"bytes4\"}],\"name\":\"supportsInterface\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"totalSupply\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"name\":\"transfer\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"name\":\"transferAndCall\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"},{\"internalType\":\"bytes\",\"name\":\"data\",\"type\":\"bytes\"}],\"name\":\"transferAndCall\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"name\":\"transferFrom\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"},{\"internalType\":\"bytes\",\"name\":\"data\",\"type\":\"bytes\"}],\"name\":\"transferFromAndCall\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"name\":\"transferFromAndCall\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"}],\"devdoc\":{\"details\":\"Interface of the ERC-1363 standard as defined in the https://eips.ethereum.org/EIPS/eip-1363[ERC-1363]. Defines an extension interface for ERC-20 tokens that supports executing code on a recipient contract after `transfer` or `transferFrom`, or code on a spender contract after `approve`, in a single transaction.\",\"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 a `value` amount of tokens 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.\"},\"approveAndCall(address,uint256)\":{\"details\":\"Sets a `value` amount of tokens as the allowance of `spender` over the caller's tokens and then calls {IERC1363Spender-onApprovalReceived} on `spender`.\",\"params\":{\"spender\":\"The address which will spend the funds.\",\"value\":\"The amount of tokens to be spent.\"},\"returns\":{\"_0\":\"A boolean value indicating whether the operation succeeded unless throwing.\"}},\"approveAndCall(address,uint256,bytes)\":{\"details\":\"Sets a `value` amount of tokens as the allowance of `spender` over the caller's tokens and then calls {IERC1363Spender-onApprovalReceived} on `spender`.\",\"params\":{\"data\":\"Additional data with no specified format, sent in call to `spender`.\",\"spender\":\"The address which will spend the funds.\",\"value\":\"The amount of tokens to be spent.\"},\"returns\":{\"_0\":\"A boolean value indicating whether the operation succeeded unless throwing.\"}},\"balanceOf(address)\":{\"details\":\"Returns the value of tokens owned by `account`.\"},\"supportsInterface(bytes4)\":{\"details\":\"Returns true if this contract implements the interface defined by `interfaceId`. See the corresponding https://eips.ethereum.org/EIPS/eip-165#how-interfaces-are-identified[ERC section] to learn more about how these ids are created. This function call must use less than 30 000 gas.\"},\"totalSupply()\":{\"details\":\"Returns the value of tokens in existence.\"},\"transfer(address,uint256)\":{\"details\":\"Moves a `value` amount of tokens from the caller's account to `to`. Returns a boolean value indicating whether the operation succeeded. Emits a {Transfer} event.\"},\"transferAndCall(address,uint256)\":{\"details\":\"Moves a `value` amount of tokens from the caller's account to `to` and then calls {IERC1363Receiver-onTransferReceived} on `to`.\",\"params\":{\"to\":\"The address which you want to transfer to.\",\"value\":\"The amount of tokens to be transferred.\"},\"returns\":{\"_0\":\"A boolean value indicating whether the operation succeeded unless throwing.\"}},\"transferAndCall(address,uint256,bytes)\":{\"details\":\"Moves a `value` amount of tokens from the caller's account to `to` and then calls {IERC1363Receiver-onTransferReceived} on `to`.\",\"params\":{\"data\":\"Additional data with no specified format, sent in call to `to`.\",\"to\":\"The address which you want to transfer to.\",\"value\":\"The amount of tokens to be transferred.\"},\"returns\":{\"_0\":\"A boolean value indicating whether the operation succeeded unless throwing.\"}},\"transferFrom(address,address,uint256)\":{\"details\":\"Moves a `value` amount of tokens from `from` to `to` using the allowance mechanism. `value` is then deducted from the caller's allowance. Returns a boolean value indicating whether the operation succeeded. Emits a {Transfer} event.\"},\"transferFromAndCall(address,address,uint256)\":{\"details\":\"Moves a `value` amount of tokens from `from` to `to` using the allowance mechanism and then calls {IERC1363Receiver-onTransferReceived} on `to`.\",\"params\":{\"from\":\"The address which you want to send tokens from.\",\"to\":\"The address which you want to transfer to.\",\"value\":\"The amount of tokens to be transferred.\"},\"returns\":{\"_0\":\"A boolean value indicating whether the operation succeeded unless throwing.\"}},\"transferFromAndCall(address,address,uint256,bytes)\":{\"details\":\"Moves a `value` amount of tokens from `from` to `to` using the allowance mechanism and then calls {IERC1363Receiver-onTransferReceived} on `to`.\",\"params\":{\"data\":\"Additional data with no specified format, sent in call to `to`.\",\"from\":\"The address which you want to send tokens from.\",\"to\":\"The address which you want to transfer to.\",\"value\":\"The amount of tokens to be transferred.\"},\"returns\":{\"_0\":\"A boolean value indicating whether the operation succeeded unless throwing.\"}}},\"title\":\"IERC1363\",\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"@openzeppelin/contracts/interfaces/IERC1363.sol\":\"IERC1363\"},\"evmVersion\":\"london\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":200},\"remappings\":[]},\"sources\":{\"@openzeppelin/contracts/interfaces/IERC1363.sol\":{\"keccak256\":\"0x9b6b3e7803bc5f2f8cd7ad57db8ac1def61a9930a5a3107df4882e028a9605d7\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://da62d6be1f5c6edf577f0cb45666a8aa9c2086a4bac87d95d65f02e2f4c36a4b\",\"dweb:/ipfs/QmNkpvBpoCMvX8JwAFNSc5XxJ2q5BXJpL5L1txb4QkqVFF\"]},\"@openzeppelin/contracts/interfaces/IERC165.sol\":{\"keccak256\":\"0xde7e9fd9aee8d4f40772f96bb3b58836cbc6dfc0227014a061947f8821ea9724\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://11fea9f8bc98949ac6709f0c1699db7430d2948137aa94d5a9e95a91f61a710a\",\"dweb:/ipfs/QmQdfRXxQjwP6yn3DVo1GHPpriKNcFghSPi94Z1oKEFUNS\"]},\"@openzeppelin/contracts/interfaces/IERC20.sol\":{\"keccak256\":\"0xce41876e78d1badc0512229b4d14e4daf83bc1003d7f83978d18e0e56f965b9c\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://a2608291cb038b388d80b79a06b6118a42f7894ff67b7da10ec0dbbf5b2973ba\",\"dweb:/ipfs/QmWohqcBLbcxmA4eGPhZDXe5RYMMEEpFq22nfkaUMvTfw1\"]},\"@openzeppelin/contracts/token/ERC20/IERC20.sol\":{\"keccak256\":\"0xe06a3f08a987af6ad2e1c1e774405d4fe08f1694b67517438b467cecf0da0ef7\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://df6f0c459663c9858b6cba2cda1d14a7d05a985bed6d2de72bd8e78c25ee79db\",\"dweb:/ipfs/QmeTTxZ7qVk9rjEv2R4CpCwdf8UMCcRqDNMvzNxHc3Fnn9\"]},\"@openzeppelin/contracts/utils/introspection/IERC165.sol\":{\"keccak256\":\"0x79796192ec90263f21b464d5bc90b777a525971d3de8232be80d9c4f9fb353b8\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://f6fda447a62815e8064f47eff0dd1cf58d9207ad69b5d32280f8d7ed1d1e4621\",\"dweb:/ipfs/QmfDRc7pxfaXB2Dh9np5Uf29Na3pQ7tafRS684wd3GLjVL\"]}},\"version\":1}" + } + }, + "@openzeppelin/contracts/interfaces/draft-IERC6093.sol": { + "IERC1155Errors": { + "abi": [ + { + "inputs": [ + { + "internalType": "address", + "name": "sender", + "type": "address" + }, + { + "internalType": "uint256", + "name": "balance", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "needed", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "tokenId", + "type": "uint256" + } + ], + "name": "ERC1155InsufficientBalance", + "type": "error" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "approver", + "type": "address" + } + ], + "name": "ERC1155InvalidApprover", + "type": "error" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "idsLength", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "valuesLength", + "type": "uint256" + } + ], + "name": "ERC1155InvalidArrayLength", + "type": "error" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "operator", + "type": "address" + } + ], + "name": "ERC1155InvalidOperator", + "type": "error" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "receiver", + "type": "address" + } + ], + "name": "ERC1155InvalidReceiver", + "type": "error" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "sender", + "type": "address" + } + ], + "name": "ERC1155InvalidSender", + "type": "error" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "operator", + "type": "address" + }, + { + "internalType": "address", + "name": "owner", + "type": "address" + } + ], + "name": "ERC1155MissingApprovalForAll", + "type": "error" + } + ], + "evm": { + "bytecode": { + "functionDebugData": {}, + "generatedSources": [], + "linkReferences": {}, + "object": "", + "opcodes": "", + "sourceMap": "" + }, + "deployedBytecode": { + "functionDebugData": {}, + "generatedSources": [], + "immutableReferences": {}, + "linkReferences": {}, + "object": "", + "opcodes": "", + "sourceMap": "" + }, + "methodIdentifiers": {} + }, + "metadata": "{\"compiler\":{\"version\":\"0.8.20+commit.a1b79de6\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"balance\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"needed\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"}],\"name\":\"ERC1155InsufficientBalance\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"approver\",\"type\":\"address\"}],\"name\":\"ERC1155InvalidApprover\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"idsLength\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"valuesLength\",\"type\":\"uint256\"}],\"name\":\"ERC1155InvalidArrayLength\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"}],\"name\":\"ERC1155InvalidOperator\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"receiver\",\"type\":\"address\"}],\"name\":\"ERC1155InvalidReceiver\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"}],\"name\":\"ERC1155InvalidSender\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"}],\"name\":\"ERC1155MissingApprovalForAll\",\"type\":\"error\"}],\"devdoc\":{\"details\":\"Standard ERC-1155 Errors Interface of the https://eips.ethereum.org/EIPS/eip-6093[ERC-6093] custom errors for ERC-1155 tokens.\",\"errors\":{\"ERC1155InsufficientBalance(address,uint256,uint256,uint256)\":[{\"details\":\"Indicates an error related to the current `balance` of a `sender`. Used in transfers.\",\"params\":{\"balance\":\"Current balance for the interacting account.\",\"needed\":\"Minimum amount required to perform a transfer.\",\"sender\":\"Address whose tokens are being transferred.\",\"tokenId\":\"Identifier number of a token.\"}}],\"ERC1155InvalidApprover(address)\":[{\"details\":\"Indicates a failure with the `approver` of a token to be approved. Used in approvals.\",\"params\":{\"approver\":\"Address initiating an approval operation.\"}}],\"ERC1155InvalidArrayLength(uint256,uint256)\":[{\"details\":\"Indicates an array length mismatch between ids and values in a safeBatchTransferFrom operation. Used in batch transfers.\",\"params\":{\"idsLength\":\"Length of the array of token identifiers\",\"valuesLength\":\"Length of the array of token amounts\"}}],\"ERC1155InvalidOperator(address)\":[{\"details\":\"Indicates a failure with the `operator` to be approved. Used in approvals.\",\"params\":{\"operator\":\"Address that may be allowed to operate on tokens without being their owner.\"}}],\"ERC1155InvalidReceiver(address)\":[{\"details\":\"Indicates a failure with the token `receiver`. Used in transfers.\",\"params\":{\"receiver\":\"Address to which tokens are being transferred.\"}}],\"ERC1155InvalidSender(address)\":[{\"details\":\"Indicates a failure with the token `sender`. Used in transfers.\",\"params\":{\"sender\":\"Address whose tokens are being transferred.\"}}],\"ERC1155MissingApprovalForAll(address,address)\":[{\"details\":\"Indicates a failure with the `operator`\\u2019s approval. Used in transfers.\",\"params\":{\"operator\":\"Address that may be allowed to operate on tokens without being their owner.\",\"owner\":\"Address of the current owner of a token.\"}}]},\"kind\":\"dev\",\"methods\":{},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"@openzeppelin/contracts/interfaces/draft-IERC6093.sol\":\"IERC1155Errors\"},\"evmVersion\":\"london\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":200},\"remappings\":[]},\"sources\":{\"@openzeppelin/contracts/interfaces/draft-IERC6093.sol\":{\"keccak256\":\"0x880da465c203cec76b10d72dbd87c80f387df4102274f23eea1f9c9b0918792b\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://399594cd8bb0143bc9e55e0f1d071d0d8c850a394fb7a319d50edd55d9ed822b\",\"dweb:/ipfs/QmbPZzgtT6LEm9CMqWfagQFwETbV1ztpECBB1DtQHrKiRz\"]}},\"version\":1}" + }, + "IERC20Errors": { + "abi": [ + { + "inputs": [ + { + "internalType": "address", + "name": "spender", + "type": "address" + }, + { + "internalType": "uint256", + "name": "allowance", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "needed", + "type": "uint256" + } + ], + "name": "ERC20InsufficientAllowance", + "type": "error" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "sender", + "type": "address" + }, + { + "internalType": "uint256", + "name": "balance", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "needed", + "type": "uint256" + } + ], + "name": "ERC20InsufficientBalance", + "type": "error" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "approver", + "type": "address" + } + ], + "name": "ERC20InvalidApprover", + "type": "error" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "receiver", + "type": "address" + } + ], + "name": "ERC20InvalidReceiver", + "type": "error" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "sender", + "type": "address" + } + ], + "name": "ERC20InvalidSender", + "type": "error" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "spender", + "type": "address" + } + ], + "name": "ERC20InvalidSpender", + "type": "error" + } + ], + "evm": { + "bytecode": { + "functionDebugData": {}, + "generatedSources": [], + "linkReferences": {}, + "object": "", + "opcodes": "", + "sourceMap": "" + }, + "deployedBytecode": { + "functionDebugData": {}, + "generatedSources": [], + "immutableReferences": {}, + "linkReferences": {}, + "object": "", + "opcodes": "", + "sourceMap": "" + }, + "methodIdentifiers": {} + }, + "metadata": "{\"compiler\":{\"version\":\"0.8.20+commit.a1b79de6\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"allowance\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"needed\",\"type\":\"uint256\"}],\"name\":\"ERC20InsufficientAllowance\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"balance\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"needed\",\"type\":\"uint256\"}],\"name\":\"ERC20InsufficientBalance\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"approver\",\"type\":\"address\"}],\"name\":\"ERC20InvalidApprover\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"receiver\",\"type\":\"address\"}],\"name\":\"ERC20InvalidReceiver\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"}],\"name\":\"ERC20InvalidSender\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"}],\"name\":\"ERC20InvalidSpender\",\"type\":\"error\"}],\"devdoc\":{\"details\":\"Standard ERC-20 Errors Interface of the https://eips.ethereum.org/EIPS/eip-6093[ERC-6093] custom errors for ERC-20 tokens.\",\"errors\":{\"ERC20InsufficientAllowance(address,uint256,uint256)\":[{\"details\":\"Indicates a failure with the `spender`\\u2019s `allowance`. Used in transfers.\",\"params\":{\"allowance\":\"Amount of tokens a `spender` is allowed to operate with.\",\"needed\":\"Minimum amount required to perform a transfer.\",\"spender\":\"Address that may be allowed to operate on tokens without being their owner.\"}}],\"ERC20InsufficientBalance(address,uint256,uint256)\":[{\"details\":\"Indicates an error related to the current `balance` of a `sender`. Used in transfers.\",\"params\":{\"balance\":\"Current balance for the interacting account.\",\"needed\":\"Minimum amount required to perform a transfer.\",\"sender\":\"Address whose tokens are being transferred.\"}}],\"ERC20InvalidApprover(address)\":[{\"details\":\"Indicates a failure with the `approver` of a token to be approved. Used in approvals.\",\"params\":{\"approver\":\"Address initiating an approval operation.\"}}],\"ERC20InvalidReceiver(address)\":[{\"details\":\"Indicates a failure with the token `receiver`. Used in transfers.\",\"params\":{\"receiver\":\"Address to which tokens are being transferred.\"}}],\"ERC20InvalidSender(address)\":[{\"details\":\"Indicates a failure with the token `sender`. Used in transfers.\",\"params\":{\"sender\":\"Address whose tokens are being transferred.\"}}],\"ERC20InvalidSpender(address)\":[{\"details\":\"Indicates a failure with the `spender` to be approved. Used in approvals.\",\"params\":{\"spender\":\"Address that may be allowed to operate on tokens without being their owner.\"}}]},\"kind\":\"dev\",\"methods\":{},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"@openzeppelin/contracts/interfaces/draft-IERC6093.sol\":\"IERC20Errors\"},\"evmVersion\":\"london\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":200},\"remappings\":[]},\"sources\":{\"@openzeppelin/contracts/interfaces/draft-IERC6093.sol\":{\"keccak256\":\"0x880da465c203cec76b10d72dbd87c80f387df4102274f23eea1f9c9b0918792b\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://399594cd8bb0143bc9e55e0f1d071d0d8c850a394fb7a319d50edd55d9ed822b\",\"dweb:/ipfs/QmbPZzgtT6LEm9CMqWfagQFwETbV1ztpECBB1DtQHrKiRz\"]}},\"version\":1}" + }, + "IERC721Errors": { + "abi": [ + { + "inputs": [ + { + "internalType": "address", + "name": "sender", + "type": "address" + }, + { + "internalType": "uint256", + "name": "tokenId", + "type": "uint256" + }, + { + "internalType": "address", + "name": "owner", + "type": "address" + } + ], + "name": "ERC721IncorrectOwner", + "type": "error" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "operator", + "type": "address" + }, + { + "internalType": "uint256", + "name": "tokenId", + "type": "uint256" + } + ], + "name": "ERC721InsufficientApproval", + "type": "error" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "approver", + "type": "address" + } + ], + "name": "ERC721InvalidApprover", + "type": "error" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "operator", + "type": "address" + } + ], + "name": "ERC721InvalidOperator", + "type": "error" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "owner", + "type": "address" + } + ], + "name": "ERC721InvalidOwner", + "type": "error" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "receiver", + "type": "address" + } + ], + "name": "ERC721InvalidReceiver", + "type": "error" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "sender", + "type": "address" + } + ], + "name": "ERC721InvalidSender", + "type": "error" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "tokenId", + "type": "uint256" + } + ], + "name": "ERC721NonexistentToken", + "type": "error" + } + ], + "evm": { + "bytecode": { + "functionDebugData": {}, + "generatedSources": [], + "linkReferences": {}, + "object": "", + "opcodes": "", + "sourceMap": "" + }, + "deployedBytecode": { + "functionDebugData": {}, + "generatedSources": [], + "immutableReferences": {}, + "linkReferences": {}, + "object": "", + "opcodes": "", + "sourceMap": "" + }, + "methodIdentifiers": {} + }, + "metadata": "{\"compiler\":{\"version\":\"0.8.20+commit.a1b79de6\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"}],\"name\":\"ERC721IncorrectOwner\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"}],\"name\":\"ERC721InsufficientApproval\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"approver\",\"type\":\"address\"}],\"name\":\"ERC721InvalidApprover\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"}],\"name\":\"ERC721InvalidOperator\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"}],\"name\":\"ERC721InvalidOwner\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"receiver\",\"type\":\"address\"}],\"name\":\"ERC721InvalidReceiver\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"}],\"name\":\"ERC721InvalidSender\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"}],\"name\":\"ERC721NonexistentToken\",\"type\":\"error\"}],\"devdoc\":{\"details\":\"Standard ERC-721 Errors Interface of the https://eips.ethereum.org/EIPS/eip-6093[ERC-6093] custom errors for ERC-721 tokens.\",\"errors\":{\"ERC721IncorrectOwner(address,uint256,address)\":[{\"details\":\"Indicates an error related to the ownership over a particular token. Used in transfers.\",\"params\":{\"owner\":\"Address of the current owner of a token.\",\"sender\":\"Address whose tokens are being transferred.\",\"tokenId\":\"Identifier number of a token.\"}}],\"ERC721InsufficientApproval(address,uint256)\":[{\"details\":\"Indicates a failure with the `operator`\\u2019s approval. Used in transfers.\",\"params\":{\"operator\":\"Address that may be allowed to operate on tokens without being their owner.\",\"tokenId\":\"Identifier number of a token.\"}}],\"ERC721InvalidApprover(address)\":[{\"details\":\"Indicates a failure with the `approver` of a token to be approved. Used in approvals.\",\"params\":{\"approver\":\"Address initiating an approval operation.\"}}],\"ERC721InvalidOperator(address)\":[{\"details\":\"Indicates a failure with the `operator` to be approved. Used in approvals.\",\"params\":{\"operator\":\"Address that may be allowed to operate on tokens without being their owner.\"}}],\"ERC721InvalidOwner(address)\":[{\"details\":\"Indicates that an address can't be an owner. For example, `address(0)` is a forbidden owner in ERC-20. Used in balance queries.\",\"params\":{\"owner\":\"Address of the current owner of a token.\"}}],\"ERC721InvalidReceiver(address)\":[{\"details\":\"Indicates a failure with the token `receiver`. Used in transfers.\",\"params\":{\"receiver\":\"Address to which tokens are being transferred.\"}}],\"ERC721InvalidSender(address)\":[{\"details\":\"Indicates a failure with the token `sender`. Used in transfers.\",\"params\":{\"sender\":\"Address whose tokens are being transferred.\"}}],\"ERC721NonexistentToken(uint256)\":[{\"details\":\"Indicates a `tokenId` whose `owner` is the zero address.\",\"params\":{\"tokenId\":\"Identifier number of a token.\"}}]},\"kind\":\"dev\",\"methods\":{},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"@openzeppelin/contracts/interfaces/draft-IERC6093.sol\":\"IERC721Errors\"},\"evmVersion\":\"london\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":200},\"remappings\":[]},\"sources\":{\"@openzeppelin/contracts/interfaces/draft-IERC6093.sol\":{\"keccak256\":\"0x880da465c203cec76b10d72dbd87c80f387df4102274f23eea1f9c9b0918792b\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://399594cd8bb0143bc9e55e0f1d071d0d8c850a394fb7a319d50edd55d9ed822b\",\"dweb:/ipfs/QmbPZzgtT6LEm9CMqWfagQFwETbV1ztpECBB1DtQHrKiRz\"]}},\"version\":1}" + } + }, + "@openzeppelin/contracts/token/ERC20/ERC20.sol": { + "ERC20": { + "abi": [ + { + "inputs": [ + { + "internalType": "address", + "name": "spender", + "type": "address" + }, + { + "internalType": "uint256", + "name": "allowance", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "needed", + "type": "uint256" + } + ], + "name": "ERC20InsufficientAllowance", + "type": "error" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "sender", + "type": "address" + }, + { + "internalType": "uint256", + "name": "balance", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "needed", + "type": "uint256" + } + ], + "name": "ERC20InsufficientBalance", + "type": "error" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "approver", + "type": "address" + } + ], + "name": "ERC20InvalidApprover", + "type": "error" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "receiver", + "type": "address" + } + ], + "name": "ERC20InvalidReceiver", + "type": "error" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "sender", + "type": "address" + } + ], + "name": "ERC20InvalidSender", + "type": "error" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "spender", + "type": "address" + } + ], + "name": "ERC20InvalidSpender", + "type": "error" + }, + { + "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": "value", + "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": "decimals", + "outputs": [ + { + "internalType": "uint8", + "name": "", + "type": "uint8" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "name", + "outputs": [ + { + "internalType": "string", + "name": "", + "type": "string" + } + ], + "stateMutability": "view", + "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": [ + { + "internalType": "address", + "name": "to", + "type": "address" + }, + { + "internalType": "uint256", + "name": "value", + "type": "uint256" + } + ], + "name": "transfer", + "outputs": [ + { + "internalType": "bool", + "name": "", + "type": "bool" + } + ], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "from", + "type": "address" + }, + { + "internalType": "address", + "name": "to", + "type": "address" + }, + { + "internalType": "uint256", + "name": "value", + "type": "uint256" + } + ], + "name": "transferFrom", + "outputs": [ + { + "internalType": "bool", + "name": "", + "type": "bool" + } + ], + "stateMutability": "nonpayable", + "type": "function" + } + ], + "evm": { + "bytecode": { + "functionDebugData": {}, + "generatedSources": [], + "linkReferences": {}, + "object": "", + "opcodes": "", + "sourceMap": "" + }, + "deployedBytecode": { + "functionDebugData": {}, + "generatedSources": [], + "immutableReferences": {}, + "linkReferences": {}, + "object": "", + "opcodes": "", + "sourceMap": "" + }, + "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" + } + }, + "metadata": "{\"compiler\":{\"version\":\"0.8.20+commit.a1b79de6\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"allowance\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"needed\",\"type\":\"uint256\"}],\"name\":\"ERC20InsufficientAllowance\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"balance\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"needed\",\"type\":\"uint256\"}],\"name\":\"ERC20InsufficientBalance\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"approver\",\"type\":\"address\"}],\"name\":\"ERC20InvalidApprover\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"receiver\",\"type\":\"address\"}],\"name\":\"ERC20InvalidReceiver\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"}],\"name\":\"ERC20InvalidSender\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"}],\"name\":\"ERC20InvalidSpender\",\"type\":\"error\"},{\"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\":\"value\",\"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\":\"decimals\",\"outputs\":[{\"internalType\":\"uint8\",\"name\":\"\",\"type\":\"uint8\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"name\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"stateMutability\":\"view\",\"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\":[{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"name\":\"transfer\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"name\":\"transferFrom\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"}],\"devdoc\":{\"details\":\"Implementation of the {IERC20} interface. This implementation is agnostic to the way tokens are created. This means that a supply mechanism has to be added in a derived contract using {_mint}. TIP: For a detailed writeup see our guide https://forum.openzeppelin.com/t/how-to-implement-erc20-supply-mechanisms/226[How to implement supply mechanisms]. The default value of {decimals} is 18. To change this, you should override this function so it returns a different value. We have followed general OpenZeppelin Contracts guidelines: functions revert instead returning `false` on failure. This behavior is nonetheless conventional and does not conflict with the expectations of ERC-20 applications.\",\"errors\":{\"ERC20InsufficientAllowance(address,uint256,uint256)\":[{\"details\":\"Indicates a failure with the `spender`\\u2019s `allowance`. Used in transfers.\",\"params\":{\"allowance\":\"Amount of tokens a `spender` is allowed to operate with.\",\"needed\":\"Minimum amount required to perform a transfer.\",\"spender\":\"Address that may be allowed to operate on tokens without being their owner.\"}}],\"ERC20InsufficientBalance(address,uint256,uint256)\":[{\"details\":\"Indicates an error related to the current `balance` of a `sender`. Used in transfers.\",\"params\":{\"balance\":\"Current balance for the interacting account.\",\"needed\":\"Minimum amount required to perform a transfer.\",\"sender\":\"Address whose tokens are being transferred.\"}}],\"ERC20InvalidApprover(address)\":[{\"details\":\"Indicates a failure with the `approver` of a token to be approved. Used in approvals.\",\"params\":{\"approver\":\"Address initiating an approval operation.\"}}],\"ERC20InvalidReceiver(address)\":[{\"details\":\"Indicates a failure with the token `receiver`. Used in transfers.\",\"params\":{\"receiver\":\"Address to which tokens are being transferred.\"}}],\"ERC20InvalidSender(address)\":[{\"details\":\"Indicates a failure with the token `sender`. Used in transfers.\",\"params\":{\"sender\":\"Address whose tokens are being transferred.\"}}],\"ERC20InvalidSpender(address)\":[{\"details\":\"Indicates a failure with the `spender` to be approved. Used in approvals.\",\"params\":{\"spender\":\"Address that may be allowed to operate on tokens without being their owner.\"}}]},\"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\":\"See {IERC20-allowance}.\"},\"approve(address,uint256)\":{\"details\":\"See {IERC20-approve}. NOTE: If `value` is the maximum `uint256`, the allowance is not updated on `transferFrom`. This is semantically equivalent to an infinite approval. Requirements: - `spender` cannot be the zero address.\"},\"balanceOf(address)\":{\"details\":\"See {IERC20-balanceOf}.\"},\"constructor\":{\"details\":\"Sets the values for {name} and {symbol}. All two of these values are immutable: they can only be set once during construction.\"},\"decimals()\":{\"details\":\"Returns the number of decimals used to get its user representation. For example, if `decimals` equals `2`, a balance of `505` tokens should be displayed to a user as `5.05` (`505 / 10 ** 2`). Tokens usually opt for a value of 18, imitating the relationship between Ether and Wei. This is the default value returned by this function, unless it's overridden. NOTE: This information is only used for _display_ purposes: it in no way affects any of the arithmetic of the contract, including {IERC20-balanceOf} and {IERC20-transfer}.\"},\"name()\":{\"details\":\"Returns the name of the token.\"},\"symbol()\":{\"details\":\"Returns the symbol of the token, usually a shorter version of the name.\"},\"totalSupply()\":{\"details\":\"See {IERC20-totalSupply}.\"},\"transfer(address,uint256)\":{\"details\":\"See {IERC20-transfer}. Requirements: - `to` cannot be the zero address. - the caller must have a balance of at least `value`.\"},\"transferFrom(address,address,uint256)\":{\"details\":\"See {IERC20-transferFrom}. Skips emitting an {Approval} event indicating an allowance update. This is not required by the ERC. See {xref-ERC20-_approve-address-address-uint256-bool-}[_approve]. NOTE: Does not update the allowance if the current allowance is the maximum `uint256`. Requirements: - `from` and `to` cannot be the zero address. - `from` must have a balance of at least `value`. - the caller must have allowance for ``from``'s tokens of at least `value`.\"}},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"@openzeppelin/contracts/token/ERC20/ERC20.sol\":\"ERC20\"},\"evmVersion\":\"london\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":200},\"remappings\":[]},\"sources\":{\"@openzeppelin/contracts/interfaces/draft-IERC6093.sol\":{\"keccak256\":\"0x880da465c203cec76b10d72dbd87c80f387df4102274f23eea1f9c9b0918792b\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://399594cd8bb0143bc9e55e0f1d071d0d8c850a394fb7a319d50edd55d9ed822b\",\"dweb:/ipfs/QmbPZzgtT6LEm9CMqWfagQFwETbV1ztpECBB1DtQHrKiRz\"]},\"@openzeppelin/contracts/token/ERC20/ERC20.sol\":{\"keccak256\":\"0xbf61ab2ae1d575a17ea58fbb99ca232baddcc4e0eeea180e84cbc74b0c348b31\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://4e0968705bad99747a8e5288aa008678c2be2f471f919dce3925a3cc4f1dee09\",\"dweb:/ipfs/QmbAFnCQfo4tw6ssfQSjhA5LzwHWNNryXN8bX7ty8jiqqn\"]},\"@openzeppelin/contracts/token/ERC20/IERC20.sol\":{\"keccak256\":\"0xe06a3f08a987af6ad2e1c1e774405d4fe08f1694b67517438b467cecf0da0ef7\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://df6f0c459663c9858b6cba2cda1d14a7d05a985bed6d2de72bd8e78c25ee79db\",\"dweb:/ipfs/QmeTTxZ7qVk9rjEv2R4CpCwdf8UMCcRqDNMvzNxHc3Fnn9\"]},\"@openzeppelin/contracts/token/ERC20/extensions/IERC20Metadata.sol\":{\"keccak256\":\"0x70f2f713b13b7ce4610bcd0ac9fec0f3cc43693b043abcb8dc40a42a726eb330\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://c13d13304ac79a83ab1c30168967d19e2203342ebbd6a9bbce4db7550522dcbf\",\"dweb:/ipfs/QmeN5jKMN2vw5bhacr6tkg78afbTTZUeaacNHqjWt4Ew1r\"]},\"@openzeppelin/contracts/utils/Context.sol\":{\"keccak256\":\"0x493033a8d1b176a037b2cc6a04dad01a5c157722049bbecf632ca876224dd4b2\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://6a708e8a5bdb1011c2c381c9a5cfd8a9a956d7d0a9dc1bd8bcdaf52f76ef2f12\",\"dweb:/ipfs/Qmax9WHBnVsZP46ZxEMNRQpLQnrdE4dK8LehML1Py8FowF\"]}},\"version\":1}" + } + }, + "@openzeppelin/contracts/token/ERC20/IERC20.sol": { + "IERC20": { + "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": "value", + "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": "to", + "type": "address" + }, + { + "internalType": "uint256", + "name": "value", + "type": "uint256" + } + ], + "name": "transfer", + "outputs": [ + { + "internalType": "bool", + "name": "", + "type": "bool" + } + ], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "from", + "type": "address" + }, + { + "internalType": "address", + "name": "to", + "type": "address" + }, + { + "internalType": "uint256", + "name": "value", + "type": "uint256" + } + ], + "name": "transferFrom", + "outputs": [ + { + "internalType": "bool", + "name": "", + "type": "bool" + } + ], + "stateMutability": "nonpayable", + "type": "function" + } + ], + "evm": { + "bytecode": { + "functionDebugData": {}, + "generatedSources": [], + "linkReferences": {}, + "object": "", + "opcodes": "", + "sourceMap": "" + }, + "deployedBytecode": { + "functionDebugData": {}, + "generatedSources": [], + "immutableReferences": {}, + "linkReferences": {}, + "object": "", + "opcodes": "", + "sourceMap": "" + }, + "methodIdentifiers": { + "allowance(address,address)": "dd62ed3e", + "approve(address,uint256)": "095ea7b3", + "balanceOf(address)": "70a08231", + "totalSupply()": "18160ddd", + "transfer(address,uint256)": "a9059cbb", + "transferFrom(address,address,uint256)": "23b872dd" + } + }, + "metadata": "{\"compiler\":{\"version\":\"0.8.20+commit.a1b79de6\"},\"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\":\"value\",\"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\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"name\":\"transfer\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"name\":\"transferFrom\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"}],\"devdoc\":{\"details\":\"Interface of the ERC-20 standard as defined in the ERC.\",\"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 a `value` amount of tokens 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 value of tokens owned by `account`.\"},\"totalSupply()\":{\"details\":\"Returns the value of tokens in existence.\"},\"transfer(address,uint256)\":{\"details\":\"Moves a `value` amount of tokens from the caller's account to `to`. Returns a boolean value indicating whether the operation succeeded. Emits a {Transfer} event.\"},\"transferFrom(address,address,uint256)\":{\"details\":\"Moves a `value` amount of tokens from `from` to `to` using the allowance mechanism. `value` 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\":{\"@openzeppelin/contracts/token/ERC20/IERC20.sol\":\"IERC20\"},\"evmVersion\":\"london\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":200},\"remappings\":[]},\"sources\":{\"@openzeppelin/contracts/token/ERC20/IERC20.sol\":{\"keccak256\":\"0xe06a3f08a987af6ad2e1c1e774405d4fe08f1694b67517438b467cecf0da0ef7\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://df6f0c459663c9858b6cba2cda1d14a7d05a985bed6d2de72bd8e78c25ee79db\",\"dweb:/ipfs/QmeTTxZ7qVk9rjEv2R4CpCwdf8UMCcRqDNMvzNxHc3Fnn9\"]}},\"version\":1}" + } + }, + "@openzeppelin/contracts/token/ERC20/extensions/IERC20Metadata.sol": { + "IERC20Metadata": { + "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": "value", + "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": "decimals", + "outputs": [ + { + "internalType": "uint8", + "name": "", + "type": "uint8" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "name", + "outputs": [ + { + "internalType": "string", + "name": "", + "type": "string" + } + ], + "stateMutability": "view", + "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": [ + { + "internalType": "address", + "name": "to", + "type": "address" + }, + { + "internalType": "uint256", + "name": "value", + "type": "uint256" + } + ], + "name": "transfer", + "outputs": [ + { + "internalType": "bool", + "name": "", + "type": "bool" + } + ], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "from", + "type": "address" + }, + { + "internalType": "address", + "name": "to", + "type": "address" + }, + { + "internalType": "uint256", + "name": "value", + "type": "uint256" + } + ], + "name": "transferFrom", + "outputs": [ + { + "internalType": "bool", + "name": "", + "type": "bool" + } + ], + "stateMutability": "nonpayable", + "type": "function" + } + ], + "evm": { + "bytecode": { + "functionDebugData": {}, + "generatedSources": [], + "linkReferences": {}, + "object": "", + "opcodes": "", + "sourceMap": "" + }, + "deployedBytecode": { + "functionDebugData": {}, + "generatedSources": [], + "immutableReferences": {}, + "linkReferences": {}, + "object": "", + "opcodes": "", + "sourceMap": "" + }, + "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" + } + }, + "metadata": "{\"compiler\":{\"version\":\"0.8.20+commit.a1b79de6\"},\"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\":\"value\",\"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\":\"decimals\",\"outputs\":[{\"internalType\":\"uint8\",\"name\":\"\",\"type\":\"uint8\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"name\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"stateMutability\":\"view\",\"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\":[{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"name\":\"transfer\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"name\":\"transferFrom\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"}],\"devdoc\":{\"details\":\"Interface for the optional metadata functions from the ERC-20 standard.\",\"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 a `value` amount of tokens 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 value of tokens owned by `account`.\"},\"decimals()\":{\"details\":\"Returns the decimals places of the token.\"},\"name()\":{\"details\":\"Returns the name of the token.\"},\"symbol()\":{\"details\":\"Returns the symbol of the token.\"},\"totalSupply()\":{\"details\":\"Returns the value of tokens in existence.\"},\"transfer(address,uint256)\":{\"details\":\"Moves a `value` amount of tokens from the caller's account to `to`. Returns a boolean value indicating whether the operation succeeded. Emits a {Transfer} event.\"},\"transferFrom(address,address,uint256)\":{\"details\":\"Moves a `value` amount of tokens from `from` to `to` using the allowance mechanism. `value` 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\":{\"@openzeppelin/contracts/token/ERC20/extensions/IERC20Metadata.sol\":\"IERC20Metadata\"},\"evmVersion\":\"london\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":200},\"remappings\":[]},\"sources\":{\"@openzeppelin/contracts/token/ERC20/IERC20.sol\":{\"keccak256\":\"0xe06a3f08a987af6ad2e1c1e774405d4fe08f1694b67517438b467cecf0da0ef7\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://df6f0c459663c9858b6cba2cda1d14a7d05a985bed6d2de72bd8e78c25ee79db\",\"dweb:/ipfs/QmeTTxZ7qVk9rjEv2R4CpCwdf8UMCcRqDNMvzNxHc3Fnn9\"]},\"@openzeppelin/contracts/token/ERC20/extensions/IERC20Metadata.sol\":{\"keccak256\":\"0x70f2f713b13b7ce4610bcd0ac9fec0f3cc43693b043abcb8dc40a42a726eb330\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://c13d13304ac79a83ab1c30168967d19e2203342ebbd6a9bbce4db7550522dcbf\",\"dweb:/ipfs/QmeN5jKMN2vw5bhacr6tkg78afbTTZUeaacNHqjWt4Ew1r\"]}},\"version\":1}" + } + }, + "@openzeppelin/contracts/token/ERC20/utils/SafeERC20.sol": { + "SafeERC20": { + "abi": [ + { + "inputs": [ + { + "internalType": "address", + "name": "spender", + "type": "address" + }, + { + "internalType": "uint256", + "name": "currentAllowance", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "requestedDecrease", + "type": "uint256" + } + ], + "name": "SafeERC20FailedDecreaseAllowance", + "type": "error" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "token", + "type": "address" + } + ], + "name": "SafeERC20FailedOperation", + "type": "error" + } + ], + "evm": { + "bytecode": { + "functionDebugData": {}, + "generatedSources": [], + "linkReferences": {}, + "object": "60566037600b82828239805160001a607314602a57634e487b7160e01b600052600060045260246000fd5b30600052607381538281f3fe73000000000000000000000000000000000000000030146080604052600080fdfea2646970667358221220888909e9934ce3ce04a61de5c7faa264230238bf4afdfc33c172020041a3e21e64736f6c63430008140033", + "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 DUP9 DUP10 MULMOD 0xE9 SWAP4 0x4C 0xE3 0xCE DIV 0xA6 SAR 0xE5 0xC7 STATICCALL LOG2 PUSH5 0x230238BF4A REVERT 0xFC CALLER 0xC1 PUSH19 0x20041A3E21E64736F6C634300081400330000 ", + "sourceMap": "750:8692:8:-:0;;;;;;;;;;;;;;;-1:-1:-1;;;750:8692:8;;;;;;;;;;;;;;;;;" + }, + "deployedBytecode": { + "functionDebugData": {}, + "generatedSources": [], + "immutableReferences": {}, + "linkReferences": {}, + "object": "73000000000000000000000000000000000000000030146080604052600080fdfea2646970667358221220888909e9934ce3ce04a61de5c7faa264230238bf4afdfc33c172020041a3e21e64736f6c63430008140033", + "opcodes": "PUSH20 0x0 ADDRESS EQ PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x0 DUP1 REVERT INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 DUP9 DUP10 MULMOD 0xE9 SWAP4 0x4C 0xE3 0xCE DIV 0xA6 SAR 0xE5 0xC7 STATICCALL LOG2 PUSH5 0x230238BF4A REVERT 0xFC CALLER 0xC1 PUSH19 0x20041A3E21E64736F6C634300081400330000 ", + "sourceMap": "750:8692:8:-:0;;;;;;;;" + }, + "methodIdentifiers": {} + }, + "metadata": "{\"compiler\":{\"version\":\"0.8.20+commit.a1b79de6\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"currentAllowance\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"requestedDecrease\",\"type\":\"uint256\"}],\"name\":\"SafeERC20FailedDecreaseAllowance\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"}],\"name\":\"SafeERC20FailedOperation\",\"type\":\"error\"}],\"devdoc\":{\"details\":\"Wrappers around ERC-20 operations that throw on failure (when the token contract returns false). Tokens that return no value (and instead revert or throw on failure) are also supported, non-reverting calls are assumed to be successful. To use this library you can add a `using SafeERC20 for IERC20;` statement to your contract, which allows you to call the safe operations as `token.safeTransfer(...)`, etc.\",\"errors\":{\"SafeERC20FailedDecreaseAllowance(address,uint256,uint256)\":[{\"details\":\"Indicates a failed `decreaseAllowance` request.\"}],\"SafeERC20FailedOperation(address)\":[{\"details\":\"An operation with an ERC-20 token failed.\"}]},\"kind\":\"dev\",\"methods\":{},\"title\":\"SafeERC20\",\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"@openzeppelin/contracts/token/ERC20/utils/SafeERC20.sol\":\"SafeERC20\"},\"evmVersion\":\"london\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":200},\"remappings\":[]},\"sources\":{\"@openzeppelin/contracts/interfaces/IERC1363.sol\":{\"keccak256\":\"0x9b6b3e7803bc5f2f8cd7ad57db8ac1def61a9930a5a3107df4882e028a9605d7\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://da62d6be1f5c6edf577f0cb45666a8aa9c2086a4bac87d95d65f02e2f4c36a4b\",\"dweb:/ipfs/QmNkpvBpoCMvX8JwAFNSc5XxJ2q5BXJpL5L1txb4QkqVFF\"]},\"@openzeppelin/contracts/interfaces/IERC165.sol\":{\"keccak256\":\"0xde7e9fd9aee8d4f40772f96bb3b58836cbc6dfc0227014a061947f8821ea9724\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://11fea9f8bc98949ac6709f0c1699db7430d2948137aa94d5a9e95a91f61a710a\",\"dweb:/ipfs/QmQdfRXxQjwP6yn3DVo1GHPpriKNcFghSPi94Z1oKEFUNS\"]},\"@openzeppelin/contracts/interfaces/IERC20.sol\":{\"keccak256\":\"0xce41876e78d1badc0512229b4d14e4daf83bc1003d7f83978d18e0e56f965b9c\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://a2608291cb038b388d80b79a06b6118a42f7894ff67b7da10ec0dbbf5b2973ba\",\"dweb:/ipfs/QmWohqcBLbcxmA4eGPhZDXe5RYMMEEpFq22nfkaUMvTfw1\"]},\"@openzeppelin/contracts/token/ERC20/IERC20.sol\":{\"keccak256\":\"0xe06a3f08a987af6ad2e1c1e774405d4fe08f1694b67517438b467cecf0da0ef7\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://df6f0c459663c9858b6cba2cda1d14a7d05a985bed6d2de72bd8e78c25ee79db\",\"dweb:/ipfs/QmeTTxZ7qVk9rjEv2R4CpCwdf8UMCcRqDNMvzNxHc3Fnn9\"]},\"@openzeppelin/contracts/token/ERC20/utils/SafeERC20.sol\":{\"keccak256\":\"0xca2ae13e0610f6a99238dd00b97bd786bc92732dae6d6b9d61f573ec51018310\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://75f8c71ce0c91c40dd5f249ace0b7d8270f8f1767231bcf71490f7157d6ba862\",\"dweb:/ipfs/QmYXgxeDyFHvz3JsXxLEYN6GNUR44ThHeFj5XkpkgMoG4w\"]},\"@openzeppelin/contracts/utils/Address.sol\":{\"keccak256\":\"0x9d8da059267bac779a2dbbb9a26c2acf00ca83085e105d62d5d4ef96054a47f5\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://c78e2aa4313323cecd1ef12a8d6265b96beee1a199923abf55d9a2a9e291ad23\",\"dweb:/ipfs/QmUTs2KStXucZezzFo3EYeqYu47utu56qrF7jj1Gue65vb\"]},\"@openzeppelin/contracts/utils/Errors.sol\":{\"keccak256\":\"0x6afa713bfd42cf0f7656efa91201007ac465e42049d7de1d50753a373648c123\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://ba1d02f4847670a1b83dec9f7d37f0b0418d6043447b69f3a29a5f9efc547fcf\",\"dweb:/ipfs/QmQ7iH2keLNUKgq2xSWcRmuBE5eZ3F5whYAkAGzCNNoEWB\"]},\"@openzeppelin/contracts/utils/introspection/IERC165.sol\":{\"keccak256\":\"0x79796192ec90263f21b464d5bc90b777a525971d3de8232be80d9c4f9fb353b8\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://f6fda447a62815e8064f47eff0dd1cf58d9207ad69b5d32280f8d7ed1d1e4621\",\"dweb:/ipfs/QmfDRc7pxfaXB2Dh9np5Uf29Na3pQ7tafRS684wd3GLjVL\"]}},\"version\":1}" + } + }, + "@openzeppelin/contracts/utils/Address.sol": { + "Address": { + "abi": [ + { + "inputs": [ + { + "internalType": "address", + "name": "target", + "type": "address" + } + ], + "name": "AddressEmptyCode", + "type": "error" + } + ], + "evm": { + "bytecode": { + "functionDebugData": {}, + "generatedSources": [], + "linkReferences": {}, + "object": "60566037600b82828239805160001a607314602a57634e487b7160e01b600052600060045260246000fd5b30600052607381538281f3fe73000000000000000000000000000000000000000030146080604052600080fdfea2646970667358221220b6deed298a044b43b833e2722cd86b981323d15ab99233eb5ed6d55abfe168bd64736f6c63430008140033", + "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 0xB6 0xDE 0xED 0x29 DUP11 DIV 0x4B NUMBER 0xB8 CALLER 0xE2 PUSH19 0x2CD86B981323D15AB99233EB5ED6D55ABFE168 0xBD PUSH5 0x736F6C6343 STOP ADDMOD EQ STOP CALLER ", + "sourceMap": "233:5799:9:-:0;;;;;;;;;;;;;;;-1:-1:-1;;;233:5799:9;;;;;;;;;;;;;;;;;" + }, + "deployedBytecode": { + "functionDebugData": {}, + "generatedSources": [], + "immutableReferences": {}, + "linkReferences": {}, + "object": "73000000000000000000000000000000000000000030146080604052600080fdfea2646970667358221220b6deed298a044b43b833e2722cd86b981323d15ab99233eb5ed6d55abfe168bd64736f6c63430008140033", + "opcodes": "PUSH20 0x0 ADDRESS EQ PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x0 DUP1 REVERT INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 0xB6 0xDE 0xED 0x29 DUP11 DIV 0x4B NUMBER 0xB8 CALLER 0xE2 PUSH19 0x2CD86B981323D15AB99233EB5ED6D55ABFE168 0xBD PUSH5 0x736F6C6343 STOP ADDMOD EQ STOP CALLER ", + "sourceMap": "233:5799:9:-:0;;;;;;;;" + }, + "methodIdentifiers": {} + }, + "metadata": "{\"compiler\":{\"version\":\"0.8.20+commit.a1b79de6\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"internalType\":\"address\",\"name\":\"target\",\"type\":\"address\"}],\"name\":\"AddressEmptyCode\",\"type\":\"error\"}],\"devdoc\":{\"details\":\"Collection of functions related to the address type\",\"errors\":{\"AddressEmptyCode(address)\":[{\"details\":\"There's no code at `target` (it is not a contract).\"}]},\"kind\":\"dev\",\"methods\":{},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"@openzeppelin/contracts/utils/Address.sol\":\"Address\"},\"evmVersion\":\"london\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":200},\"remappings\":[]},\"sources\":{\"@openzeppelin/contracts/utils/Address.sol\":{\"keccak256\":\"0x9d8da059267bac779a2dbbb9a26c2acf00ca83085e105d62d5d4ef96054a47f5\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://c78e2aa4313323cecd1ef12a8d6265b96beee1a199923abf55d9a2a9e291ad23\",\"dweb:/ipfs/QmUTs2KStXucZezzFo3EYeqYu47utu56qrF7jj1Gue65vb\"]},\"@openzeppelin/contracts/utils/Errors.sol\":{\"keccak256\":\"0x6afa713bfd42cf0f7656efa91201007ac465e42049d7de1d50753a373648c123\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://ba1d02f4847670a1b83dec9f7d37f0b0418d6043447b69f3a29a5f9efc547fcf\",\"dweb:/ipfs/QmQ7iH2keLNUKgq2xSWcRmuBE5eZ3F5whYAkAGzCNNoEWB\"]}},\"version\":1}" + } + }, + "@openzeppelin/contracts/utils/Context.sol": { + "Context": { + "abi": [], + "evm": { + "bytecode": { + "functionDebugData": {}, + "generatedSources": [], + "linkReferences": {}, + "object": "", + "opcodes": "", + "sourceMap": "" + }, + "deployedBytecode": { + "functionDebugData": {}, + "generatedSources": [], + "immutableReferences": {}, + "linkReferences": {}, + "object": "", + "opcodes": "", + "sourceMap": "" + }, + "methodIdentifiers": {} + }, + "metadata": "{\"compiler\":{\"version\":\"0.8.20+commit.a1b79de6\"},\"language\":\"Solidity\",\"output\":{\"abi\":[],\"devdoc\":{\"details\":\"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 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.\",\"kind\":\"dev\",\"methods\":{},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"@openzeppelin/contracts/utils/Context.sol\":\"Context\"},\"evmVersion\":\"london\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":200},\"remappings\":[]},\"sources\":{\"@openzeppelin/contracts/utils/Context.sol\":{\"keccak256\":\"0x493033a8d1b176a037b2cc6a04dad01a5c157722049bbecf632ca876224dd4b2\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://6a708e8a5bdb1011c2c381c9a5cfd8a9a956d7d0a9dc1bd8bcdaf52f76ef2f12\",\"dweb:/ipfs/Qmax9WHBnVsZP46ZxEMNRQpLQnrdE4dK8LehML1Py8FowF\"]}},\"version\":1}" + } + }, + "@openzeppelin/contracts/utils/Errors.sol": { + "Errors": { + "abi": [ + { + "inputs": [], + "name": "FailedCall", + "type": "error" + }, + { + "inputs": [], + "name": "FailedDeployment", + "type": "error" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "balance", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "needed", + "type": "uint256" + } + ], + "name": "InsufficientBalance", + "type": "error" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "", + "type": "address" + } + ], + "name": "MissingPrecompile", + "type": "error" + } + ], + "evm": { + "bytecode": { + "functionDebugData": {}, + "generatedSources": [], + "linkReferences": {}, + "object": "60566037600b82828239805160001a607314602a57634e487b7160e01b600052600060045260246000fd5b30600052607381538281f3fe73000000000000000000000000000000000000000030146080604052600080fdfea26469706673582212203ac9df17201a715caef22058d4b510a096420c0006c148beb74e9595655db2b264736f6c63430008140033", + "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 GASPRICE 0xC9 0xDF OR KECCAK256 BYTE PUSH18 0x5CAEF22058D4B510A096420C0006C148BEB7 0x4E SWAP6 SWAP6 PUSH6 0x5DB2B264736F PUSH13 0x63430008140033000000000000 ", + "sourceMap": "411:484:11:-:0;;;;;;;;;;;;;;;-1:-1:-1;;;411:484:11;;;;;;;;;;;;;;;;;" + }, + "deployedBytecode": { + "functionDebugData": {}, + "generatedSources": [], + "immutableReferences": {}, + "linkReferences": {}, + "object": "73000000000000000000000000000000000000000030146080604052600080fdfea26469706673582212203ac9df17201a715caef22058d4b510a096420c0006c148beb74e9595655db2b264736f6c63430008140033", + "opcodes": "PUSH20 0x0 ADDRESS EQ PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x0 DUP1 REVERT INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 GASPRICE 0xC9 0xDF OR KECCAK256 BYTE PUSH18 0x5CAEF22058D4B510A096420C0006C148BEB7 0x4E SWAP6 SWAP6 PUSH6 0x5DB2B264736F PUSH13 0x63430008140033000000000000 ", + "sourceMap": "411:484:11:-:0;;;;;;;;" + }, + "methodIdentifiers": {} + }, + "metadata": "{\"compiler\":{\"version\":\"0.8.20+commit.a1b79de6\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[],\"name\":\"FailedCall\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"FailedDeployment\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"balance\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"needed\",\"type\":\"uint256\"}],\"name\":\"InsufficientBalance\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"name\":\"MissingPrecompile\",\"type\":\"error\"}],\"devdoc\":{\"details\":\"Collection of common custom errors used in multiple contracts IMPORTANT: Backwards compatibility is not guaranteed in future versions of the library. It is recommended to avoid relying on the error API for critical functionality. _Available since v5.1._\",\"errors\":{\"FailedCall()\":[{\"details\":\"A call to an address target failed. The target may have reverted.\"}],\"FailedDeployment()\":[{\"details\":\"The deployment failed.\"}],\"InsufficientBalance(uint256,uint256)\":[{\"details\":\"The ETH balance of the account is not enough to perform the operation.\"}],\"MissingPrecompile(address)\":[{\"details\":\"A necessary precompile is missing.\"}]},\"kind\":\"dev\",\"methods\":{},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"@openzeppelin/contracts/utils/Errors.sol\":\"Errors\"},\"evmVersion\":\"london\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":200},\"remappings\":[]},\"sources\":{\"@openzeppelin/contracts/utils/Errors.sol\":{\"keccak256\":\"0x6afa713bfd42cf0f7656efa91201007ac465e42049d7de1d50753a373648c123\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://ba1d02f4847670a1b83dec9f7d37f0b0418d6043447b69f3a29a5f9efc547fcf\",\"dweb:/ipfs/QmQ7iH2keLNUKgq2xSWcRmuBE5eZ3F5whYAkAGzCNNoEWB\"]}},\"version\":1}" + } + }, + "@openzeppelin/contracts/utils/Pausable.sol": { + "Pausable": { + "abi": [ + { + "inputs": [], + "name": "EnforcedPause", + "type": "error" + }, + { + "inputs": [], + "name": "ExpectedPause", + "type": "error" + }, + { + "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": "paused", + "outputs": [ + { + "internalType": "bool", + "name": "", + "type": "bool" + } + ], + "stateMutability": "view", + "type": "function" + } + ], + "evm": { + "bytecode": { + "functionDebugData": {}, + "generatedSources": [], + "linkReferences": {}, + "object": "", + "opcodes": "", + "sourceMap": "" + }, + "deployedBytecode": { + "functionDebugData": {}, + "generatedSources": [], + "immutableReferences": {}, + "linkReferences": {}, + "object": "", + "opcodes": "", + "sourceMap": "" + }, + "methodIdentifiers": { + "paused()": "5c975abb" + } + }, + "metadata": "{\"compiler\":{\"version\":\"0.8.20+commit.a1b79de6\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[],\"name\":\"EnforcedPause\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"ExpectedPause\",\"type\":\"error\"},{\"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\":\"paused\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"}],\"devdoc\":{\"details\":\"Contract module which allows children to implement an emergency stop mechanism that can be triggered by an authorized account. This module is used through inheritance. It will make available the modifiers `whenNotPaused` and `whenPaused`, which can be applied to the functions of your contract. Note that they will not be pausable by simply including this module, only once the modifiers are put in place.\",\"errors\":{\"EnforcedPause()\":[{\"details\":\"The operation failed because the contract is paused.\"}],\"ExpectedPause()\":[{\"details\":\"The operation failed because the contract is not paused.\"}]},\"events\":{\"Paused(address)\":{\"details\":\"Emitted when the pause is triggered by `account`.\"},\"Unpaused(address)\":{\"details\":\"Emitted when the pause is lifted by `account`.\"}},\"kind\":\"dev\",\"methods\":{\"constructor\":{\"details\":\"Initializes the contract in unpaused state.\"},\"paused()\":{\"details\":\"Returns true if the contract is paused, and false otherwise.\"}},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"@openzeppelin/contracts/utils/Pausable.sol\":\"Pausable\"},\"evmVersion\":\"london\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":200},\"remappings\":[]},\"sources\":{\"@openzeppelin/contracts/utils/Context.sol\":{\"keccak256\":\"0x493033a8d1b176a037b2cc6a04dad01a5c157722049bbecf632ca876224dd4b2\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://6a708e8a5bdb1011c2c381c9a5cfd8a9a956d7d0a9dc1bd8bcdaf52f76ef2f12\",\"dweb:/ipfs/Qmax9WHBnVsZP46ZxEMNRQpLQnrdE4dK8LehML1Py8FowF\"]},\"@openzeppelin/contracts/utils/Pausable.sol\":{\"keccak256\":\"0xb2e5f50762c27fb4b123e3619c3c02bdcba5e515309382e5bfb6f7d6486510bd\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://1a4b83328c98d518a2699c2cbe9e9b055e78aa57fa8639f1b88deb8b3750b5dc\",\"dweb:/ipfs/QmXdcYj5v7zQxXFPULShHkR5p4Wa2zYuupbHnFdV3cHYtc\"]}},\"version\":1}" + } + }, + "@openzeppelin/contracts/utils/ReentrancyGuard.sol": { + "ReentrancyGuard": { + "abi": [ + { + "inputs": [], + "name": "ReentrancyGuardReentrantCall", + "type": "error" + } + ], + "evm": { + "bytecode": { + "functionDebugData": {}, + "generatedSources": [], + "linkReferences": {}, + "object": "", + "opcodes": "", + "sourceMap": "" + }, + "deployedBytecode": { + "functionDebugData": {}, + "generatedSources": [], + "immutableReferences": {}, + "linkReferences": {}, + "object": "", + "opcodes": "", + "sourceMap": "" + }, + "methodIdentifiers": {} + }, + "metadata": "{\"compiler\":{\"version\":\"0.8.20+commit.a1b79de6\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[],\"name\":\"ReentrancyGuardReentrantCall\",\"type\":\"error\"}],\"devdoc\":{\"details\":\"Contract module that helps prevent reentrant calls to a function. Inheriting from `ReentrancyGuard` will make the {nonReentrant} modifier available, which can be applied to functions to make sure there are no nested (reentrant) calls to them. Note that because there is a single `nonReentrant` guard, functions marked as `nonReentrant` may not call one another. This can be worked around by making those functions `private`, and then adding `external` `nonReentrant` entry points to them. TIP: If EIP-1153 (transient storage) is available on the chain you're deploying at, consider using {ReentrancyGuardTransient} instead. TIP: If you would like to learn more about reentrancy and alternative ways to protect against it, check out our blog post https://blog.openzeppelin.com/reentrancy-after-istanbul/[Reentrancy After Istanbul].\",\"errors\":{\"ReentrancyGuardReentrantCall()\":[{\"details\":\"Unauthorized reentrant call.\"}]},\"kind\":\"dev\",\"methods\":{},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"@openzeppelin/contracts/utils/ReentrancyGuard.sol\":\"ReentrancyGuard\"},\"evmVersion\":\"london\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":200},\"remappings\":[]},\"sources\":{\"@openzeppelin/contracts/utils/ReentrancyGuard.sol\":{\"keccak256\":\"0x11a5a79827df29e915a12740caf62fe21ebe27c08c9ae3e09abe9ee3ba3866d3\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://3cf0c69ab827e3251db9ee6a50647d62c90ba580a4d7bbff21f2bea39e7b2f4a\",\"dweb:/ipfs/QmZiKwtKU1SBX4RGfQtY7PZfiapbbu6SZ9vizGQD9UHjRA\"]}},\"version\":1}" + } + }, + "@openzeppelin/contracts/utils/introspection/IERC165.sol": { + "IERC165": { + "abi": [ + { + "inputs": [ + { + "internalType": "bytes4", + "name": "interfaceId", + "type": "bytes4" + } + ], + "name": "supportsInterface", + "outputs": [ + { + "internalType": "bool", + "name": "", + "type": "bool" } ], + "stateMutability": "view", + "type": "function" + } + ], + "evm": { + "bytecode": { + "functionDebugData": {}, + "generatedSources": [], + "linkReferences": {}, + "object": "", + "opcodes": "", + "sourceMap": "" + }, + "deployedBytecode": { + "functionDebugData": {}, + "generatedSources": [], "immutableReferences": {}, "linkReferences": {}, - "object": "608060405234801561001057600080fd5b50600436106100cf5760003560e01c806370a082311161008c57806395d89b411161006657806395d89b41146101aa578063a9059cbb146101b2578063dd62ed3e146101c5578063f2fde38b146101fe57600080fd5b806370a082311461015e578063715018a6146101875780638da5cb5b1461018f57600080fd5b806306fdde03146100d4578063095ea7b3146100f257806318160ddd1461011557806323b872dd14610127578063313ce5671461013a57806340c10f1914610149575b600080fd5b6100dc610211565b6040516100e9919061070e565b60405180910390f35b610105610100366004610778565b6102a3565b60405190151581526020016100e9565b6002545b6040519081526020016100e9565b6101056101353660046107a2565b6102bd565b604051601281526020016100e9565b61015c610157366004610778565b6102e1565b005b61011961016c3660046107de565b6001600160a01b031660009081526020819052604090205490565b61015c6102f7565b6005546040516001600160a01b0390911681526020016100e9565b6100dc61030b565b6101056101c0366004610778565b61031a565b6101196101d3366004610800565b6001600160a01b03918216600090815260016020908152604080832093909416825291909152205490565b61015c61020c3660046107de565b610328565b60606003805461022090610833565b80601f016020809104026020016040519081016040528092919081815260200182805461024c90610833565b80156102995780601f1061026e57610100808354040283529160200191610299565b820191906000526020600020905b81548152906001019060200180831161027c57829003601f168201915b5050505050905090565b6000336102b181858561036b565b60019150505b92915050565b6000336102cb85828561037d565b6102d68585856103fb565b506001949350505050565b6102e961045a565b6102f38282610487565b5050565b6102ff61045a565b61030960006104bd565b565b60606004805461022090610833565b6000336102b18185856103fb565b61033061045a565b6001600160a01b03811661035f57604051631e4fbdf760e01b8152600060048201526024015b60405180910390fd5b610368816104bd565b50565b610378838383600161050f565b505050565b6001600160a01b0383811660009081526001602090815260408083209386168352929052205460001981146103f557818110156103e657604051637dc7a0d960e11b81526001600160a01b03841660048201526024810182905260448101839052606401610356565b6103f58484848403600061050f565b50505050565b6001600160a01b03831661042557604051634b637e8f60e11b815260006004820152602401610356565b6001600160a01b03821661044f5760405163ec442f0560e01b815260006004820152602401610356565b6103788383836105e4565b6005546001600160a01b031633146103095760405163118cdaa760e01b8152336004820152602401610356565b6001600160a01b0382166104b15760405163ec442f0560e01b815260006004820152602401610356565b6102f3600083836105e4565b600580546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b6001600160a01b0384166105395760405163e602df0560e01b815260006004820152602401610356565b6001600160a01b03831661056357604051634a1406b160e11b815260006004820152602401610356565b6001600160a01b03808516600090815260016020908152604080832093871683529290522082905580156103f557826001600160a01b0316846001600160a01b03167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925846040516105d691815260200190565b60405180910390a350505050565b6001600160a01b03831661060f578060026000828254610604919061086d565b909155506106819050565b6001600160a01b038316600090815260208190526040902054818110156106625760405163391434e360e21b81526001600160a01b03851660048201526024810182905260448101839052606401610356565b6001600160a01b03841660009081526020819052604090209082900390555b6001600160a01b03821661069d576002805482900390556106bc565b6001600160a01b03821660009081526020819052604090208054820190555b816001600160a01b0316836001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8360405161070191815260200190565b60405180910390a3505050565b600060208083528351808285015260005b8181101561073b5785810183015185820160400152820161071f565b506000604082860101526040601f19601f8301168501019250505092915050565b80356001600160a01b038116811461077357600080fd5b919050565b6000806040838503121561078b57600080fd5b6107948361075c565b946020939093013593505050565b6000806000606084860312156107b757600080fd5b6107c08461075c565b92506107ce6020850161075c565b9150604084013590509250925092565b6000602082840312156107f057600080fd5b6107f98261075c565b9392505050565b6000806040838503121561081357600080fd5b61081c8361075c565b915061082a6020840161075c565b90509250929050565b600181811c9082168061084757607f821691505b60208210810361086757634e487b7160e01b600052602260045260246000fd5b50919050565b808201808211156102b757634e487b7160e01b600052601160045260246000fdfea2646970667358221220109b9a599f0badc23fa957fb1510c08b12fb54cd8baf3ac22829364fb2029e0564736f6c63430008140033", - "opcodes": "PUSH1 0x80 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH2 0x10 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x4 CALLDATASIZE LT PUSH2 0xCF JUMPI PUSH1 0x0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0x70A08231 GT PUSH2 0x8C JUMPI DUP1 PUSH4 0x95D89B41 GT PUSH2 0x66 JUMPI DUP1 PUSH4 0x95D89B41 EQ PUSH2 0x1AA JUMPI DUP1 PUSH4 0xA9059CBB EQ PUSH2 0x1B2 JUMPI DUP1 PUSH4 0xDD62ED3E EQ PUSH2 0x1C5 JUMPI DUP1 PUSH4 0xF2FDE38B EQ PUSH2 0x1FE JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 PUSH4 0x70A08231 EQ PUSH2 0x15E JUMPI DUP1 PUSH4 0x715018A6 EQ PUSH2 0x187 JUMPI DUP1 PUSH4 0x8DA5CB5B EQ PUSH2 0x18F JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 PUSH4 0x6FDDE03 EQ PUSH2 0xD4 JUMPI DUP1 PUSH4 0x95EA7B3 EQ PUSH2 0xF2 JUMPI DUP1 PUSH4 0x18160DDD EQ PUSH2 0x115 JUMPI DUP1 PUSH4 0x23B872DD EQ PUSH2 0x127 JUMPI DUP1 PUSH4 0x313CE567 EQ PUSH2 0x13A JUMPI DUP1 PUSH4 0x40C10F19 EQ PUSH2 0x149 JUMPI JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0xDC PUSH2 0x211 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0xE9 SWAP2 SWAP1 PUSH2 0x70E JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0x105 PUSH2 0x100 CALLDATASIZE PUSH1 0x4 PUSH2 0x778 JUMP JUMPDEST PUSH2 0x2A3 JUMP JUMPDEST PUSH1 0x40 MLOAD SWAP1 ISZERO ISZERO DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0xE9 JUMP JUMPDEST PUSH1 0x2 SLOAD JUMPDEST PUSH1 0x40 MLOAD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0xE9 JUMP JUMPDEST PUSH2 0x105 PUSH2 0x135 CALLDATASIZE PUSH1 0x4 PUSH2 0x7A2 JUMP JUMPDEST PUSH2 0x2BD JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x12 DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0xE9 JUMP JUMPDEST PUSH2 0x15C PUSH2 0x157 CALLDATASIZE PUSH1 0x4 PUSH2 0x778 JUMP JUMPDEST PUSH2 0x2E1 JUMP JUMPDEST STOP JUMPDEST PUSH2 0x119 PUSH2 0x16C CALLDATASIZE PUSH1 0x4 PUSH2 0x7DE JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x20 DUP2 SWAP1 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD SWAP1 JUMP JUMPDEST PUSH2 0x15C PUSH2 0x2F7 JUMP JUMPDEST PUSH1 0x5 SLOAD PUSH1 0x40 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 SWAP2 AND DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0xE9 JUMP JUMPDEST PUSH2 0xDC PUSH2 0x30B JUMP JUMPDEST PUSH2 0x105 PUSH2 0x1C0 CALLDATASIZE PUSH1 0x4 PUSH2 0x778 JUMP JUMPDEST PUSH2 0x31A JUMP JUMPDEST PUSH2 0x119 PUSH2 0x1D3 CALLDATASIZE PUSH1 0x4 PUSH2 0x800 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP2 DUP3 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x1 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 0x15C PUSH2 0x20C CALLDATASIZE PUSH1 0x4 PUSH2 0x7DE JUMP JUMPDEST PUSH2 0x328 JUMP JUMPDEST PUSH1 0x60 PUSH1 0x3 DUP1 SLOAD PUSH2 0x220 SWAP1 PUSH2 0x833 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 0x24C SWAP1 PUSH2 0x833 JUMP JUMPDEST DUP1 ISZERO PUSH2 0x299 JUMPI DUP1 PUSH1 0x1F LT PUSH2 0x26E JUMPI PUSH2 0x100 DUP1 DUP4 SLOAD DIV MUL DUP4 MSTORE SWAP2 PUSH1 0x20 ADD SWAP2 PUSH2 0x299 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 0x27C JUMPI DUP3 SWAP1 SUB PUSH1 0x1F AND DUP3 ADD SWAP2 JUMPDEST POP POP POP POP POP SWAP1 POP SWAP1 JUMP JUMPDEST PUSH1 0x0 CALLER PUSH2 0x2B1 DUP2 DUP6 DUP6 PUSH2 0x36B JUMP JUMPDEST PUSH1 0x1 SWAP2 POP POP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 CALLER PUSH2 0x2CB DUP6 DUP3 DUP6 PUSH2 0x37D JUMP JUMPDEST PUSH2 0x2D6 DUP6 DUP6 DUP6 PUSH2 0x3FB JUMP JUMPDEST POP PUSH1 0x1 SWAP5 SWAP4 POP POP POP POP JUMP JUMPDEST PUSH2 0x2E9 PUSH2 0x45A JUMP JUMPDEST PUSH2 0x2F3 DUP3 DUP3 PUSH2 0x487 JUMP JUMPDEST POP POP JUMP JUMPDEST PUSH2 0x2FF PUSH2 0x45A JUMP JUMPDEST PUSH2 0x309 PUSH1 0x0 PUSH2 0x4BD JUMP JUMPDEST JUMP JUMPDEST PUSH1 0x60 PUSH1 0x4 DUP1 SLOAD PUSH2 0x220 SWAP1 PUSH2 0x833 JUMP JUMPDEST PUSH1 0x0 CALLER PUSH2 0x2B1 DUP2 DUP6 DUP6 PUSH2 0x3FB JUMP JUMPDEST PUSH2 0x330 PUSH2 0x45A JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND PUSH2 0x35F JUMPI PUSH1 0x40 MLOAD PUSH4 0x1E4FBDF7 PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x0 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x24 ADD JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH2 0x368 DUP2 PUSH2 0x4BD JUMP JUMPDEST POP JUMP JUMPDEST PUSH2 0x378 DUP4 DUP4 DUP4 PUSH1 0x1 PUSH2 0x50F JUMP JUMPDEST POP POP POP JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP4 DUP2 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x1 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 SWAP4 DUP7 AND DUP4 MSTORE SWAP3 SWAP1 MSTORE KECCAK256 SLOAD PUSH1 0x0 NOT DUP2 EQ PUSH2 0x3F5 JUMPI DUP2 DUP2 LT ISZERO PUSH2 0x3E6 JUMPI PUSH1 0x40 MLOAD PUSH4 0x7DC7A0D9 PUSH1 0xE1 SHL DUP2 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP5 AND PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x24 DUP2 ADD DUP3 SWAP1 MSTORE PUSH1 0x44 DUP2 ADD DUP4 SWAP1 MSTORE PUSH1 0x64 ADD PUSH2 0x356 JUMP JUMPDEST PUSH2 0x3F5 DUP5 DUP5 DUP5 DUP5 SUB PUSH1 0x0 PUSH2 0x50F JUMP JUMPDEST POP POP POP POP JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP4 AND PUSH2 0x425 JUMPI PUSH1 0x40 MLOAD PUSH4 0x4B637E8F PUSH1 0xE1 SHL DUP2 MSTORE PUSH1 0x0 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x24 ADD PUSH2 0x356 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP3 AND PUSH2 0x44F JUMPI PUSH1 0x40 MLOAD PUSH4 0xEC442F05 PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x0 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x24 ADD PUSH2 0x356 JUMP JUMPDEST PUSH2 0x378 DUP4 DUP4 DUP4 PUSH2 0x5E4 JUMP JUMPDEST PUSH1 0x5 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND CALLER EQ PUSH2 0x309 JUMPI PUSH1 0x40 MLOAD PUSH4 0x118CDAA7 PUSH1 0xE0 SHL DUP2 MSTORE CALLER PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x24 ADD PUSH2 0x356 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP3 AND PUSH2 0x4B1 JUMPI PUSH1 0x40 MLOAD PUSH4 0xEC442F05 PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x0 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x24 ADD PUSH2 0x356 JUMP JUMPDEST PUSH2 0x2F3 PUSH1 0x0 DUP4 DUP4 PUSH2 0x5E4 JUMP JUMPDEST PUSH1 0x5 DUP1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP4 DUP2 AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB NOT DUP4 AND DUP2 OR SWAP1 SWAP4 SSTORE PUSH1 0x40 MLOAD SWAP2 AND SWAP2 SWAP1 DUP3 SWAP1 PUSH32 0x8BE0079C531659141344CD1FD0A4F28419497F9722A3DAAFE3B4186F6B6457E0 SWAP1 PUSH1 0x0 SWAP1 LOG3 POP POP JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP5 AND PUSH2 0x539 JUMPI PUSH1 0x40 MLOAD PUSH4 0xE602DF05 PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x0 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x24 ADD PUSH2 0x356 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP4 AND PUSH2 0x563 JUMPI PUSH1 0x40 MLOAD PUSH4 0x4A1406B1 PUSH1 0xE1 SHL DUP2 MSTORE PUSH1 0x0 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x24 ADD PUSH2 0x356 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP1 DUP6 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x1 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 SWAP4 DUP8 AND DUP4 MSTORE SWAP3 SWAP1 MSTORE KECCAK256 DUP3 SWAP1 SSTORE DUP1 ISZERO PUSH2 0x3F5 JUMPI DUP3 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP5 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH32 0x8C5BE1E5EBEC7D5BD14F71427D1E84F3DD0314C0F7B2291E5B200AC8C7C3B925 DUP5 PUSH1 0x40 MLOAD PUSH2 0x5D6 SWAP2 DUP2 MSTORE PUSH1 0x20 ADD SWAP1 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG3 POP POP POP POP JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP4 AND PUSH2 0x60F JUMPI DUP1 PUSH1 0x2 PUSH1 0x0 DUP3 DUP3 SLOAD PUSH2 0x604 SWAP2 SWAP1 PUSH2 0x86D JUMP JUMPDEST SWAP1 SWAP2 SSTORE POP PUSH2 0x681 SWAP1 POP JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP4 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x20 DUP2 SWAP1 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD DUP2 DUP2 LT ISZERO PUSH2 0x662 JUMPI PUSH1 0x40 MLOAD PUSH4 0x391434E3 PUSH1 0xE2 SHL DUP2 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP6 AND PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x24 DUP2 ADD DUP3 SWAP1 MSTORE PUSH1 0x44 DUP2 ADD DUP4 SWAP1 MSTORE PUSH1 0x64 ADD PUSH2 0x356 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP5 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x20 DUP2 SWAP1 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SWAP1 DUP3 SWAP1 SUB SWAP1 SSTORE JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP3 AND PUSH2 0x69D JUMPI PUSH1 0x2 DUP1 SLOAD DUP3 SWAP1 SUB SWAP1 SSTORE PUSH2 0x6BC JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP3 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x20 DUP2 SWAP1 MSTORE PUSH1 0x40 SWAP1 KECCAK256 DUP1 SLOAD DUP3 ADD SWAP1 SSTORE JUMPDEST DUP2 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP4 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH32 0xDDF252AD1BE2C89B69C2B068FC378DAA952BA7F163C4A11628F55A4DF523B3EF DUP4 PUSH1 0x40 MLOAD PUSH2 0x701 SWAP2 DUP2 MSTORE PUSH1 0x20 ADD SWAP1 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG3 POP POP 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 0x73B JUMPI DUP6 DUP2 ADD DUP4 ADD MLOAD DUP6 DUP3 ADD PUSH1 0x40 ADD MSTORE DUP3 ADD PUSH2 0x71F JUMP JUMPDEST POP PUSH1 0x0 PUSH1 0x40 DUP3 DUP7 ADD ADD MSTORE PUSH1 0x40 PUSH1 0x1F NOT PUSH1 0x1F DUP4 ADD AND DUP6 ADD ADD SWAP3 POP POP POP SWAP3 SWAP2 POP POP JUMP JUMPDEST DUP1 CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND DUP2 EQ PUSH2 0x773 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH2 0x78B JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x794 DUP4 PUSH2 0x75C 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 0x7B7 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x7C0 DUP5 PUSH2 0x75C JUMP JUMPDEST SWAP3 POP PUSH2 0x7CE PUSH1 0x20 DUP6 ADD PUSH2 0x75C JUMP JUMPDEST SWAP2 POP PUSH1 0x40 DUP5 ADD CALLDATALOAD SWAP1 POP SWAP3 POP SWAP3 POP SWAP3 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x7F0 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x7F9 DUP3 PUSH2 0x75C JUMP JUMPDEST SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH2 0x813 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x81C DUP4 PUSH2 0x75C JUMP JUMPDEST SWAP2 POP PUSH2 0x82A PUSH1 0x20 DUP5 ADD PUSH2 0x75C JUMP JUMPDEST SWAP1 POP SWAP3 POP SWAP3 SWAP1 POP JUMP JUMPDEST PUSH1 0x1 DUP2 DUP2 SHR SWAP1 DUP3 AND DUP1 PUSH2 0x847 JUMPI PUSH1 0x7F DUP3 AND SWAP2 POP JUMPDEST PUSH1 0x20 DUP3 LT DUP2 SUB PUSH2 0x867 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 DUP1 DUP3 ADD DUP1 DUP3 GT ISZERO PUSH2 0x2B7 JUMPI PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH1 0x0 MSTORE PUSH1 0x11 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 LT SWAP12 SWAP11 MSIZE SWAP16 SIGNEXTEND 0xAD 0xC2 EXTCODEHASH 0xA9 JUMPI 0xFB ISZERO LT 0xC0 DUP12 SLT 0xFB SLOAD 0xCD DUP12 0xAF GASPRICE 0xC2 0x28 0x29 CALLDATASIZE 0x4F 0xB2 MUL SWAP15 SDIV PUSH5 0x736F6C6343 STOP ADDMOD EQ STOP CALLER ", - "sourceMap": "167:234:8:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1779:89:2;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;3998:186;;;;;;:::i;:::-;;:::i;:::-;;;1169:14:10;;1162:22;1144:41;;1132:2;1117:18;3998:186:2;1004:187:10;2849:97:2;2927:12;;2849:97;;;1342:25:10;;;1330:2;1315:18;2849:97:2;1196:177:10;4776:244:2;;;;;;:::i;:::-;;:::i;2707:82::-;;;2780:2;1853:36:10;;1841:2;1826:18;2707:82:2;1711:184:10;304:95:8;;;;;;:::i;:::-;;:::i;:::-;;3004:116:2;;;;;;:::i;:::-;-1:-1:-1;;;;;3095:18:2;3069:7;3095:18;;;;;;;;;;;;3004:116;2293:101:0;;;:::i;1638:85::-;1710:6;;1638:85;;-1:-1:-1;;;;;1710:6:0;;;2237:51:10;;2225:2;2210:18;1638:85:0;2091:203:10;1981:93:2;;;:::i;3315:178::-;;;;;;:::i;:::-;;:::i;3551:140::-;;;;;;:::i;:::-;-1:-1:-1;;;;;3657:18:2;;;3631:7;3657:18;;;:11;:18;;;;;;;;:27;;;;;;;;;;;;;3551:140;2543:215:0;;;;;;:::i;:::-;;:::i;1779:89:2:-;1824:13;1856:5;1849:12;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1779:89;:::o;3998:186::-;4071:4;735:10:5;4125:31:2;735:10:5;4141:7:2;4150:5;4125:8;:31::i;:::-;4173:4;4166:11;;;3998:186;;;;;:::o;4776:244::-;4863:4;735:10:5;4919:37:2;4935:4;735:10:5;4950:5:2;4919:15;:37::i;:::-;4966:26;4976:4;4982:2;4986:5;4966:9;:26::i;:::-;-1:-1:-1;5009:4:2;;4776:244;-1:-1:-1;;;;4776:244:2:o;304:95:8:-;1531:13:0;:11;:13::i;:::-;375:17:8::1;381:2;385:6;375:5;:17::i;:::-;304:95:::0;;:::o;2293:101:0:-;1531:13;:11;:13::i;:::-;2357:30:::1;2384:1;2357:18;:30::i;:::-;2293:101::o:0;1981:93:2:-;2028:13;2060:7;2053:14;;;;;:::i;3315:178::-;3384:4;735:10:5;3438:27:2;735:10:5;3455:2:2;3459:5;3438:9;:27::i;2543:215:0:-;1531:13;:11;:13::i;:::-;-1:-1:-1;;;;;2627:22:0;::::1;2623:91;;2672:31;::::0;-1:-1:-1;;;2672:31:0;;2700:1:::1;2672:31;::::0;::::1;2237:51:10::0;2210:18;;2672:31:0::1;;;;;;;;2623:91;2723:28;2742:8;2723:18;:28::i;:::-;2543:215:::0;:::o;8726:128:2:-;8810:37;8819:5;8826:7;8835:5;8842:4;8810:8;:37::i;:::-;8726:128;;;:::o;10415:477::-;-1:-1:-1;;;;;3657:18:2;;;10514:24;3657:18;;;:11;:18;;;;;;;;:27;;;;;;;;;;-1:-1:-1;;10580:37:2;;10576:310;;10656:5;10637:16;:24;10633:130;;;10688:60;;-1:-1:-1;;;10688:60:2;;-1:-1:-1;;;;;3169:32:10;;10688:60:2;;;3151:51:10;3218:18;;;3211:34;;;3261:18;;;3254:34;;;3124:18;;10688:60:2;2949:345:10;10633:130:2;10804:57;10813:5;10820:7;10848:5;10829:16;:24;10855:5;10804:8;:57::i;:::-;10504:388;10415:477;;;:::o;5393:300::-;-1:-1:-1;;;;;5476:18:2;;5472:86;;5517:30;;-1:-1:-1;;;5517:30:2;;5544:1;5517:30;;;2237:51:10;2210:18;;5517:30:2;2091:203:10;5472:86:2;-1:-1:-1;;;;;5571:16:2;;5567:86;;5610:32;;-1:-1:-1;;;5610:32:2;;5639:1;5610:32;;;2237:51:10;2210:18;;5610:32:2;2091:203:10;5567:86:2;5662:24;5670:4;5676:2;5680:5;5662:7;:24::i;1796:162:0:-;1710:6;;-1:-1:-1;;;;;1710:6:0;735:10:5;1855:23:0;1851:101;;1901:40;;-1:-1:-1;;;1901:40:0;;735:10:5;1901:40:0;;;2237:51:10;2210:18;;1901:40:0;2091:203:10;7458:208:2;-1:-1:-1;;;;;7528:21:2;;7524:91;;7572:32;;-1:-1:-1;;;7572:32:2;;7601:1;7572:32;;;2237:51:10;2210:18;;7572:32:2;2091:203:10;7524:91:2;7624:35;7640:1;7644:7;7653:5;7624:7;:35::i;2912:187:0:-;3004:6;;;-1:-1:-1;;;;;3020:17:0;;;-1:-1:-1;;;;;;3020:17:0;;;;;;;3052:40;;3004:6;;;3020:17;3004:6;;3052:40;;2985:16;;3052:40;2975:124;2912:187;:::o;9701:432:2:-;-1:-1:-1;;;;;9813:19:2;;9809:89;;9855:32;;-1:-1:-1;;;9855:32:2;;9884:1;9855:32;;;2237:51:10;2210:18;;9855:32:2;2091:203:10;9809:89:2;-1:-1:-1;;;;;9911:21:2;;9907:90;;9955:31;;-1:-1:-1;;;9955:31:2;;9983:1;9955:31;;;2237:51:10;2210:18;;9955:31:2;2091:203:10;9907:90:2;-1:-1:-1;;;;;10006:18:2;;;;;;;:11;:18;;;;;;;;:27;;;;;;;;;:35;;;10051:76;;;;10101:7;-1:-1:-1;;;;;10085:31:2;10094:5;-1:-1:-1;;;;;10085:31:2;;10110:5;10085:31;;;;1342:25:10;;1330:2;1315:18;;1196:177;10085:31:2;;;;;;;;9701:432;;;;:::o;6008:1107::-;-1:-1:-1;;;;;6097:18:2;;6093:540;;6249:5;6233:12;;:21;;;;;;;:::i;:::-;;;;-1:-1:-1;6093:540:2;;-1:-1:-1;6093:540:2;;-1:-1:-1;;;;;6307:15:2;;6285:19;6307:15;;;;;;;;;;;6340:19;;;6336:115;;;6386:50;;-1:-1:-1;;;6386:50:2;;-1:-1:-1;;;;;3169:32:10;;6386:50:2;;;3151:51:10;3218:18;;;3211:34;;;3261:18;;;3254:34;;;3124:18;;6386:50:2;2949:345:10;6336:115:2;-1:-1:-1;;;;;6571:15:2;;:9;:15;;;;;;;;;;6589:19;;;;6571:37;;6093:540;-1:-1:-1;;;;;6647:16:2;;6643:425;;6810:12;:21;;;;;;;6643:425;;;-1:-1:-1;;;;;7021:13:2;;:9;:13;;;;;;;;;;:22;;;;;;6643:425;7098:2;-1:-1:-1;;;;;7083:25:2;7092:4;-1:-1:-1;;;;;7083:25:2;;7102:5;7083:25;;;;1342::10;;1330:2;1315:18;;1196:177;7083:25:2;;;;;;;;6008:1107;;;:::o;14:548:10:-;126:4;155:2;184;173:9;166:21;216:6;210:13;259:6;254:2;243:9;239:18;232:34;284:1;294:140;308:6;305:1;302:13;294:140;;;403:14;;;399:23;;393:30;369:17;;;388:2;365:26;358:66;323:10;;294:140;;;298:3;483:1;478:2;469:6;458:9;454:22;450:31;443:42;553:2;546;542:7;537:2;529:6;525:15;521:29;510:9;506:45;502:54;494:62;;;;14:548;;;;:::o;567:173::-;635:20;;-1:-1:-1;;;;;684:31:10;;674:42;;664:70;;730:1;727;720:12;664:70;567:173;;;:::o;745:254::-;813:6;821;874:2;862:9;853:7;849:23;845:32;842:52;;;890:1;887;880:12;842:52;913:29;932:9;913:29;:::i;:::-;903:39;989:2;974:18;;;;961:32;;-1:-1:-1;;;745:254:10:o;1378:328::-;1455:6;1463;1471;1524:2;1512:9;1503:7;1499:23;1495:32;1492:52;;;1540:1;1537;1530:12;1492:52;1563:29;1582:9;1563:29;:::i;:::-;1553:39;;1611:38;1645:2;1634:9;1630:18;1611:38;:::i;:::-;1601:48;;1696:2;1685:9;1681:18;1668:32;1658:42;;1378:328;;;;;:::o;1900:186::-;1959:6;2012:2;2000:9;1991:7;1987:23;1983:32;1980:52;;;2028:1;2025;2018:12;1980:52;2051:29;2070:9;2051:29;:::i;:::-;2041:39;1900:186;-1:-1:-1;;;1900:186:10:o;2299:260::-;2367:6;2375;2428:2;2416:9;2407:7;2403:23;2399:32;2396:52;;;2444:1;2441;2434:12;2396:52;2467:29;2486:9;2467:29;:::i;:::-;2457:39;;2515:38;2549:2;2538:9;2534:18;2515:38;:::i;:::-;2505:48;;2299:260;;;;;:::o;2564:380::-;2643:1;2639:12;;;;2686;;;2707:61;;2761:4;2753:6;2749:17;2739:27;;2707:61;2814:2;2806:6;2803:14;2783:18;2780:38;2777:161;;2860:10;2855:3;2851:20;2848:1;2841:31;2895:4;2892:1;2885:15;2923:4;2920:1;2913:15;2777:161;;2564:380;;;:::o;3299:222::-;3364:9;;;3385:10;;;3382:133;;;3437:10;3432:3;3428:20;3425:1;3418:31;3472:4;3469:1;3462:15;3500:4;3497:1;3490:15" + "object": "", + "opcodes": "", + "sourceMap": "" }, "methodIdentifiers": { - "allowance(address,address)": "dd62ed3e", - "approve(address,uint256)": "095ea7b3", - "balanceOf(address)": "70a08231", - "decimals()": "313ce567", - "mint(address,uint256)": "40c10f19", - "name()": "06fdde03", - "owner()": "8da5cb5b", - "renounceOwnership()": "715018a6", - "symbol()": "95d89b41", - "totalSupply()": "18160ddd", - "transfer(address,uint256)": "a9059cbb", - "transferFrom(address,address,uint256)": "23b872dd", - "transferOwnership(address)": "f2fde38b" + "supportsInterface(bytes4)": "01ffc9a7" } }, - "metadata": "{\"compiler\":{\"version\":\"0.8.20+commit.a1b79de6\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"internalType\":\"string\",\"name\":\"name\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"symbol\",\"type\":\"string\"}],\"stateMutability\":\"nonpayable\",\"type\":\"constructor\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"allowance\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"needed\",\"type\":\"uint256\"}],\"name\":\"ERC20InsufficientAllowance\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"balance\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"needed\",\"type\":\"uint256\"}],\"name\":\"ERC20InsufficientBalance\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"approver\",\"type\":\"address\"}],\"name\":\"ERC20InvalidApprover\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"receiver\",\"type\":\"address\"}],\"name\":\"ERC20InvalidReceiver\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"}],\"name\":\"ERC20InvalidSender\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"}],\"name\":\"ERC20InvalidSpender\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"}],\"name\":\"OwnableInvalidOwner\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"OwnableUnauthorizedAccount\",\"type\":\"error\"},{\"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\":\"previousOwner\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"newOwner\",\"type\":\"address\"}],\"name\":\"OwnershipTransferred\",\"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\":\"value\",\"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\":\"decimals\",\"outputs\":[{\"internalType\":\"uint8\",\"name\":\"\",\"type\":\"uint8\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"mint\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"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\":\"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\":[{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"name\":\"transfer\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"name\":\"transferFrom\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"newOwner\",\"type\":\"address\"}],\"name\":\"transferOwnership\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"}],\"devdoc\":{\"errors\":{\"ERC20InsufficientAllowance(address,uint256,uint256)\":[{\"details\":\"Indicates a failure with the `spender`\\u2019s `allowance`. Used in transfers.\",\"params\":{\"allowance\":\"Amount of tokens a `spender` is allowed to operate with.\",\"needed\":\"Minimum amount required to perform a transfer.\",\"spender\":\"Address that may be allowed to operate on tokens without being their owner.\"}}],\"ERC20InsufficientBalance(address,uint256,uint256)\":[{\"details\":\"Indicates an error related to the current `balance` of a `sender`. Used in transfers.\",\"params\":{\"balance\":\"Current balance for the interacting account.\",\"needed\":\"Minimum amount required to perform a transfer.\",\"sender\":\"Address whose tokens are being transferred.\"}}],\"ERC20InvalidApprover(address)\":[{\"details\":\"Indicates a failure with the `approver` of a token to be approved. Used in approvals.\",\"params\":{\"approver\":\"Address initiating an approval operation.\"}}],\"ERC20InvalidReceiver(address)\":[{\"details\":\"Indicates a failure with the token `receiver`. Used in transfers.\",\"params\":{\"receiver\":\"Address to which tokens are being transferred.\"}}],\"ERC20InvalidSender(address)\":[{\"details\":\"Indicates a failure with the token `sender`. Used in transfers.\",\"params\":{\"sender\":\"Address whose tokens are being transferred.\"}}],\"ERC20InvalidSpender(address)\":[{\"details\":\"Indicates a failure with the `spender` to be approved. Used in approvals.\",\"params\":{\"spender\":\"Address that may be allowed to operate on tokens without being their owner.\"}}],\"OwnableInvalidOwner(address)\":[{\"details\":\"The owner is not a valid owner account. (eg. `address(0)`)\"}],\"OwnableUnauthorizedAccount(address)\":[{\"details\":\"The caller account is not authorized to perform an operation.\"}]},\"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\":\"See {IERC20-allowance}.\"},\"approve(address,uint256)\":{\"details\":\"See {IERC20-approve}. NOTE: If `value` is the maximum `uint256`, the allowance is not updated on `transferFrom`. This is semantically equivalent to an infinite approval. Requirements: - `spender` cannot be the zero address.\"},\"balanceOf(address)\":{\"details\":\"See {IERC20-balanceOf}.\"},\"decimals()\":{\"details\":\"Returns the number of decimals used to get its user representation. For example, if `decimals` equals `2`, a balance of `505` tokens should be displayed to a user as `5.05` (`505 / 10 ** 2`). Tokens usually opt for a value of 18, imitating the relationship between Ether and Wei. This is the default value returned by this function, unless it's overridden. NOTE: This information is only used for _display_ purposes: it in no way affects any of the arithmetic of the contract, including {IERC20-balanceOf} and {IERC20-transfer}.\"},\"name()\":{\"details\":\"Returns the name of the token.\"},\"owner()\":{\"details\":\"Returns the address of the current owner.\"},\"renounceOwnership()\":{\"details\":\"Leaves the contract without owner. It will not be possible to call `onlyOwner` functions. Can only be called by the current owner. NOTE: Renouncing ownership will leave the contract without an owner, thereby disabling any functionality that is only available to the owner.\"},\"symbol()\":{\"details\":\"Returns the symbol of the token, usually a shorter version of the name.\"},\"totalSupply()\":{\"details\":\"See {IERC20-totalSupply}.\"},\"transfer(address,uint256)\":{\"details\":\"See {IERC20-transfer}. Requirements: - `to` cannot be the zero address. - the caller must have a balance of at least `value`.\"},\"transferFrom(address,address,uint256)\":{\"details\":\"See {IERC20-transferFrom}. Skips emitting an {Approval} event indicating an allowance update. This is not required by the ERC. See {xref-ERC20-_approve-address-address-uint256-bool-}[_approve]. NOTE: Does not update the allowance if the current allowance is the maximum `uint256`. Requirements: - `from` and `to` cannot be the zero address. - `from` must have a balance of at least `value`. - the caller must have allowance for ``from``'s tokens of at least `value`.\"},\"transferOwnership(address)\":{\"details\":\"Transfers ownership of the contract to a new account (`newOwner`). Can only be called by the current owner.\"}},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"contracts/token.sol\":\"MockERC20\"},\"evmVersion\":\"paris\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":200},\"remappings\":[]},\"sources\":{\"@openzeppelin/contracts/access/Ownable.sol\":{\"keccak256\":\"0xff6d0bb2e285473e5311d9d3caacb525ae3538a80758c10649a4d61029b017bb\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://8ed324d3920bb545059d66ab97d43e43ee85fd3bd52e03e401f020afb0b120f6\",\"dweb:/ipfs/QmfEckWLmZkDDcoWrkEvMWhms66xwTLff9DDhegYpvHo1a\"]},\"@openzeppelin/contracts/interfaces/draft-IERC6093.sol\":{\"keccak256\":\"0x880da465c203cec76b10d72dbd87c80f387df4102274f23eea1f9c9b0918792b\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://399594cd8bb0143bc9e55e0f1d071d0d8c850a394fb7a319d50edd55d9ed822b\",\"dweb:/ipfs/QmbPZzgtT6LEm9CMqWfagQFwETbV1ztpECBB1DtQHrKiRz\"]},\"@openzeppelin/contracts/token/ERC20/ERC20.sol\":{\"keccak256\":\"0xbf61ab2ae1d575a17ea58fbb99ca232baddcc4e0eeea180e84cbc74b0c348b31\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://4e0968705bad99747a8e5288aa008678c2be2f471f919dce3925a3cc4f1dee09\",\"dweb:/ipfs/QmbAFnCQfo4tw6ssfQSjhA5LzwHWNNryXN8bX7ty8jiqqn\"]},\"@openzeppelin/contracts/token/ERC20/IERC20.sol\":{\"keccak256\":\"0xe06a3f08a987af6ad2e1c1e774405d4fe08f1694b67517438b467cecf0da0ef7\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://df6f0c459663c9858b6cba2cda1d14a7d05a985bed6d2de72bd8e78c25ee79db\",\"dweb:/ipfs/QmeTTxZ7qVk9rjEv2R4CpCwdf8UMCcRqDNMvzNxHc3Fnn9\"]},\"@openzeppelin/contracts/token/ERC20/extensions/IERC20Metadata.sol\":{\"keccak256\":\"0x70f2f713b13b7ce4610bcd0ac9fec0f3cc43693b043abcb8dc40a42a726eb330\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://c13d13304ac79a83ab1c30168967d19e2203342ebbd6a9bbce4db7550522dcbf\",\"dweb:/ipfs/QmeN5jKMN2vw5bhacr6tkg78afbTTZUeaacNHqjWt4Ew1r\"]},\"@openzeppelin/contracts/utils/Context.sol\":{\"keccak256\":\"0x493033a8d1b176a037b2cc6a04dad01a5c157722049bbecf632ca876224dd4b2\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://6a708e8a5bdb1011c2c381c9a5cfd8a9a956d7d0a9dc1bd8bcdaf52f76ef2f12\",\"dweb:/ipfs/Qmax9WHBnVsZP46ZxEMNRQpLQnrdE4dK8LehML1Py8FowF\"]},\"contracts/token.sol\":{\"keccak256\":\"0x4874a2e3f9d67fbca4fb6ef851240dad663fc99fdb997f99ec5d22a34e272686\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://af2033c0ab6a8d782aa73c188952028956fffdb730d892a9175a6fe1440cd9d5\",\"dweb:/ipfs/QmPnYSZGg4kkYPMzzWTPyzU1vzCmHsjU57pKmqFdJnFraj\"]}},\"version\":1}" + "metadata": "{\"compiler\":{\"version\":\"0.8.20+commit.a1b79de6\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"internalType\":\"bytes4\",\"name\":\"interfaceId\",\"type\":\"bytes4\"}],\"name\":\"supportsInterface\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"}],\"devdoc\":{\"details\":\"Interface of the ERC-165 standard, as defined in the https://eips.ethereum.org/EIPS/eip-165[ERC]. Implementers can declare support of contract interfaces, which can then be queried by others ({ERC165Checker}). For an implementation, see {ERC165}.\",\"kind\":\"dev\",\"methods\":{\"supportsInterface(bytes4)\":{\"details\":\"Returns true if this contract implements the interface defined by `interfaceId`. See the corresponding https://eips.ethereum.org/EIPS/eip-165#how-interfaces-are-identified[ERC section] to learn more about how these ids are created. This function call must use less than 30 000 gas.\"}},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"@openzeppelin/contracts/utils/introspection/IERC165.sol\":\"IERC165\"},\"evmVersion\":\"london\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":200},\"remappings\":[]},\"sources\":{\"@openzeppelin/contracts/utils/introspection/IERC165.sol\":{\"keccak256\":\"0x79796192ec90263f21b464d5bc90b777a525971d3de8232be80d9c4f9fb353b8\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://f6fda447a62815e8064f47eff0dd1cf58d9207ad69b5d32280f8d7ed1d1e4621\",\"dweb:/ipfs/QmfDRc7pxfaXB2Dh9np5Uf29Na3pQ7tafRS684wd3GLjVL\"]}},\"version\":1}" } }, - "contracts/vesting.sol": { + "contracts/TokenVesting.sol": { "TokenVesting": { "abi": [ { @@ -28470,6 +32628,17 @@ "name": "ReentrancyGuardReentrantCall", "type": "error" }, + { + "inputs": [ + { + "internalType": "address", + "name": "token", + "type": "address" + } + ], + "name": "SafeERC20FailedOperation", + "type": "error" + }, { "anonymous": false, "inputs": [ @@ -28751,289 +32920,4970 @@ "type": "address" } ], - "name": "transferOwnership", - "outputs": [], - "stateMutability": "nonpayable", - "type": "function" - }, - { - "inputs": [], - "name": "unpause", - "outputs": [], - "stateMutability": "nonpayable", - "type": "function" + "name": "transferOwnership", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [], + "name": "unpause", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "", + "type": "address" + } + ], + "name": "vestingSchedules", + "outputs": [ + { + "internalType": "uint256", + "name": "totalAmount", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "startTime", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "cliffDuration", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "vestingDuration", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "amountClaimed", + "type": "uint256" + }, + { + "internalType": "bool", + "name": "revoked", + "type": "bool" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "", + "type": "address" + } + ], + "name": "whitelist", + "outputs": [ + { + "internalType": "bool", + "name": "", + "type": "bool" + } + ], + "stateMutability": "view", + "type": "function" + } + ], + "evm": { + "bytecode": { + "functionDebugData": { + "@_1749": { + "entryPoint": null, + "id": 1749, + "parameterSlots": 0, + "returnSlots": 0 + }, + "@_1854": { + "entryPoint": null, + "id": 1854, + "parameterSlots": 0, + "returnSlots": 0 + }, + "@_2003": { + "entryPoint": null, + "id": 2003, + "parameterSlots": 1, + "returnSlots": 0 + }, + "@_50": { + "entryPoint": null, + "id": 50, + "parameterSlots": 1, + "returnSlots": 0 + }, + "@_transferOwnership_146": { + "entryPoint": 236, + "id": 146, + "parameterSlots": 1, + "returnSlots": 0 + }, + "abi_decode_tuple_t_address_fromMemory": { + "entryPoint": 316, + "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_d34df3e6e5f402d3417b1a16a0a8a7541b184d7fb338e177a15236f4037e3743__to_t_string_memory_ptr__fromStack_reversed": { + "entryPoint": null, + "id": null, + "parameterSlots": 1, + "returnSlots": 1 + } + }, + "generatedSources": [ + { + "ast": { + "nodeType": "YulBlock", + "src": "0:864:17", + "statements": [ + { + "nodeType": "YulBlock", + "src": "6:3:17", + "statements": [] + }, + { + "body": { + "nodeType": "YulBlock", + "src": "95:209:17", + "statements": [ + { + "body": { + "nodeType": "YulBlock", + "src": "141:16:17", + "statements": [ + { + "expression": { + "arguments": [ + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "150:1:17", + "type": "", + "value": "0" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "153:1:17", + "type": "", + "value": "0" + } + ], + "functionName": { + "name": "revert", + "nodeType": "YulIdentifier", + "src": "143:6:17" + }, + "nodeType": "YulFunctionCall", + "src": "143:12:17" + }, + "nodeType": "YulExpressionStatement", + "src": "143:12:17" + } + ] + }, + "condition": { + "arguments": [ + { + "arguments": [ + { + "name": "dataEnd", + "nodeType": "YulIdentifier", + "src": "116:7:17" + }, + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "125:9:17" + } + ], + "functionName": { + "name": "sub", + "nodeType": "YulIdentifier", + "src": "112:3:17" + }, + "nodeType": "YulFunctionCall", + "src": "112:23:17" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "137:2:17", + "type": "", + "value": "32" + } + ], + "functionName": { + "name": "slt", + "nodeType": "YulIdentifier", + "src": "108:3:17" + }, + "nodeType": "YulFunctionCall", + "src": "108:32:17" + }, + "nodeType": "YulIf", + "src": "105:52:17" + }, + { + "nodeType": "YulVariableDeclaration", + "src": "166:29:17", + "value": { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "185:9:17" + } + ], + "functionName": { + "name": "mload", + "nodeType": "YulIdentifier", + "src": "179:5:17" + }, + "nodeType": "YulFunctionCall", + "src": "179:16:17" + }, + "variables": [ + { + "name": "value", + "nodeType": "YulTypedName", + "src": "170:5:17", + "type": "" + } + ] + }, + { + "body": { + "nodeType": "YulBlock", + "src": "258:16:17", + "statements": [ + { + "expression": { + "arguments": [ + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "267:1:17", + "type": "", + "value": "0" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "270:1:17", + "type": "", + "value": "0" + } + ], + "functionName": { + "name": "revert", + "nodeType": "YulIdentifier", + "src": "260:6:17" + }, + "nodeType": "YulFunctionCall", + "src": "260:12:17" + }, + "nodeType": "YulExpressionStatement", + "src": "260:12:17" + } + ] + }, + "condition": { + "arguments": [ + { + "arguments": [ + { + "name": "value", + "nodeType": "YulIdentifier", + "src": "217:5:17" + }, + { + "arguments": [ + { + "name": "value", + "nodeType": "YulIdentifier", + "src": "228:5:17" + }, + { + "arguments": [ + { + "arguments": [ + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "243:3:17", + "type": "", + "value": "160" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "248:1:17", + "type": "", + "value": "1" + } + ], + "functionName": { + "name": "shl", + "nodeType": "YulIdentifier", + "src": "239:3:17" + }, + "nodeType": "YulFunctionCall", + "src": "239:11:17" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "252:1:17", + "type": "", + "value": "1" + } + ], + "functionName": { + "name": "sub", + "nodeType": "YulIdentifier", + "src": "235:3:17" + }, + "nodeType": "YulFunctionCall", + "src": "235:19:17" + } + ], + "functionName": { + "name": "and", + "nodeType": "YulIdentifier", + "src": "224:3:17" + }, + "nodeType": "YulFunctionCall", + "src": "224:31:17" + } + ], + "functionName": { + "name": "eq", + "nodeType": "YulIdentifier", + "src": "214:2:17" + }, + "nodeType": "YulFunctionCall", + "src": "214:42:17" + } + ], + "functionName": { + "name": "iszero", + "nodeType": "YulIdentifier", + "src": "207:6:17" + }, + "nodeType": "YulFunctionCall", + "src": "207:50:17" + }, + "nodeType": "YulIf", + "src": "204:70:17" + }, + { + "nodeType": "YulAssignment", + "src": "283:15:17", + "value": { + "name": "value", + "nodeType": "YulIdentifier", + "src": "293:5:17" + }, + "variableNames": [ + { + "name": "value0", + "nodeType": "YulIdentifier", + "src": "283:6:17" + } + ] + } + ] + }, + "name": "abi_decode_tuple_t_address_fromMemory", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "headStart", + "nodeType": "YulTypedName", + "src": "61:9:17", + "type": "" + }, + { + "name": "dataEnd", + "nodeType": "YulTypedName", + "src": "72:7:17", + "type": "" + } + ], + "returnVariables": [ + { + "name": "value0", + "nodeType": "YulTypedName", + "src": "84:6:17", + "type": "" + } + ], + "src": "14:290:17" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "410:102:17", + "statements": [ + { + "nodeType": "YulAssignment", + "src": "420:26:17", + "value": { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "432:9:17" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "443:2:17", + "type": "", + "value": "32" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "428:3:17" + }, + "nodeType": "YulFunctionCall", + "src": "428:18:17" + }, + "variableNames": [ + { + "name": "tail", + "nodeType": "YulIdentifier", + "src": "420:4:17" + } + ] + }, + { + "expression": { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "462:9:17" + }, + { + "arguments": [ + { + "name": "value0", + "nodeType": "YulIdentifier", + "src": "477:6:17" + }, + { + "arguments": [ + { + "arguments": [ + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "493:3:17", + "type": "", + "value": "160" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "498:1:17", + "type": "", + "value": "1" + } + ], + "functionName": { + "name": "shl", + "nodeType": "YulIdentifier", + "src": "489:3:17" + }, + "nodeType": "YulFunctionCall", + "src": "489:11:17" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "502:1:17", + "type": "", + "value": "1" + } + ], + "functionName": { + "name": "sub", + "nodeType": "YulIdentifier", + "src": "485:3:17" + }, + "nodeType": "YulFunctionCall", + "src": "485:19:17" + } + ], + "functionName": { + "name": "and", + "nodeType": "YulIdentifier", + "src": "473:3:17" + }, + "nodeType": "YulFunctionCall", + "src": "473:32:17" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "455:6:17" + }, + "nodeType": "YulFunctionCall", + "src": "455:51:17" + }, + "nodeType": "YulExpressionStatement", + "src": "455:51:17" + } + ] + }, + "name": "abi_encode_tuple_t_address__to_t_address__fromStack_reversed", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "headStart", + "nodeType": "YulTypedName", + "src": "379:9:17", + "type": "" + }, + { + "name": "value0", + "nodeType": "YulTypedName", + "src": "390:6:17", + "type": "" + } + ], + "returnVariables": [ + { + "name": "tail", + "nodeType": "YulTypedName", + "src": "401:4:17", + "type": "" + } + ], + "src": "309:203:17" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "691:171:17", + "statements": [ + { + "expression": { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "708:9:17" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "719:2:17", + "type": "", + "value": "32" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "701:6:17" + }, + "nodeType": "YulFunctionCall", + "src": "701:21:17" + }, + "nodeType": "YulExpressionStatement", + "src": "701:21:17" + }, + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "742:9:17" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "753:2:17", + "type": "", + "value": "32" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "738:3:17" + }, + "nodeType": "YulFunctionCall", + "src": "738:18:17" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "758:2:17", + "type": "", + "value": "21" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "731:6:17" + }, + "nodeType": "YulFunctionCall", + "src": "731:30:17" + }, + "nodeType": "YulExpressionStatement", + "src": "731:30:17" + }, + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "781:9:17" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "792:2:17", + "type": "", + "value": "64" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "777:3:17" + }, + "nodeType": "YulFunctionCall", + "src": "777:18:17" + }, + { + "hexValue": "496e76616c696420746f6b656e2061646472657373", + "kind": "string", + "nodeType": "YulLiteral", + "src": "797:23:17", + "type": "", + "value": "Invalid token address" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "770:6:17" + }, + "nodeType": "YulFunctionCall", + "src": "770:51:17" + }, + "nodeType": "YulExpressionStatement", + "src": "770:51:17" + }, + { + "nodeType": "YulAssignment", + "src": "830:26:17", + "value": { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "842:9:17" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "853:2:17", + "type": "", + "value": "96" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "838:3:17" + }, + "nodeType": "YulFunctionCall", + "src": "838:18:17" + }, + "variableNames": [ + { + "name": "tail", + "nodeType": "YulIdentifier", + "src": "830:4:17" + } + ] + } + ] + }, + "name": "abi_encode_tuple_t_stringliteral_d34df3e6e5f402d3417b1a16a0a8a7541b184d7fb338e177a15236f4037e3743__to_t_string_memory_ptr__fromStack_reversed", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "headStart", + "nodeType": "YulTypedName", + "src": "668:9:17", + "type": "" + } + ], + "returnVariables": [ + { + "name": "tail", + "nodeType": "YulTypedName", + "src": "682:4:17", + "type": "" + } + ], + "src": "517:345:17" + } + ] + }, + "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 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_stringliteral_d34df3e6e5f402d3417b1a16a0a8a7541b184d7fb338e177a15236f4037e3743__to_t_string_memory_ptr__fromStack_reversed(headStart) -> tail\n {\n mstore(headStart, 32)\n mstore(add(headStart, 32), 21)\n mstore(add(headStart, 64), \"Invalid token address\")\n tail := add(headStart, 96)\n }\n}", + "id": 17, + "language": "Yul", + "name": "#utility.yul" + } + ], + "linkReferences": {}, + "object": "608060405234801561001057600080fd5b5060405161105438038061105483398101604081905261002f9161013c565b338061005657604051631e4fbdf760e01b8152600060048201526024015b60405180910390fd5b61005f816100ec565b506000805460ff60a01b19169055600180556001600160a01b0381166100c75760405162461bcd60e51b815260206004820152601560248201527f496e76616c696420746f6b656e20616464726573730000000000000000000000604482015260640161004d565b600280546001600160a01b0319166001600160a01b039290921691909117905561016c565b600080546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b60006020828403121561014e57600080fd5b81516001600160a01b038116811461016557600080fd5b9392505050565b610ed98061017b6000396000f3fe608060405234801561001057600080fd5b50600436106100f55760003560e01c80638da5cb5b11610097578063f2fde38b11610066578063f2fde38b146101d3578063fc0c546a146101e6578063fdb20ccb146101f9578063ffa06b2a1461027157600080fd5b80638da5cb5b146101705780639b19251a14610195578063e43252d7146101b8578063e74f3fbb146101cb57600080fd5b80635c975abb116100d35780635c975abb1461012a578063715018a61461014d5780638456cb59146101555780638ab1d6811461015d57600080fd5b80631bf0b08b146100fa5780633b0da2601461010f5780633f4ba83a14610122575b600080fd5b61010d610108366004610d8d565b610292565b005b61010d61011d366004610dcf565b6105c0565b61010d6106cf565b600054600160a01b900460ff165b60405190151581526020015b60405180910390f35b61010d6106e1565b61010d6106f3565b61010d61016b366004610dcf565b610703565b6000546001600160a01b03165b6040516001600160a01b039091168152602001610144565b6101386101a3366004610dcf565b60046020526000908152604090205460ff1681565b61010d6101c6366004610dcf565b610754565b61010d6107f0565b61010d6101e1366004610dcf565b610985565b60025461017d906001600160a01b031681565b610242610207366004610dcf565b600360208190526000918252604090912080546001820154600283015493830154600484015460059094015492949193919290919060ff1686565b6040805196875260208701959095529385019290925260608401526080830152151560a082015260c001610144565b61028461027f366004610dcf565b6109c3565b604051908152602001610144565b61029a610ac9565b6001600160a01b038516600090815260046020526040902054859060ff166103095760405162461bcd60e51b815260206004820152601b60248201527f42656e6566696369617279206e6f742077686974656c6973746564000000000060448201526064015b60405180910390fd5b610311610af6565b4282116103605760405162461bcd60e51b815260206004820181905260248201527f53746172742074696d65206d75737420626520696e20746865206675747572656044820152606401610300565b600084116103be5760405162461bcd60e51b815260206004820152602560248201527f436c696666206475726174696f6e206d75737420626520677265617465722074604482015264068616e20360dc1b6064820152608401610300565b6000831161041e5760405162461bcd60e51b815260206004820152602760248201527f56657374696e67206475726174696f6e206d75737420626520677265617465726044820152660207468616e20360cc1b6064820152608401610300565b6000851161046e5760405162461bcd60e51b815260206004820152601d60248201527f416d6f756e74206d7573742062652067726561746572207468616e20300000006044820152606401610300565b8383116104da5760405162461bcd60e51b815260206004820152603460248201527f56657374696e67206475726174696f6e206d7573742062652067726561746572604482015273103a3430b71031b634b33310323ab930ba34b7b760611b6064820152608401610300565b6040805160c08101825286815260208082018581528284018881526060840188815260006080860181815260a087018281526001600160a01b038f81168452600397889052988320885181559551600187015593516002860155915194840194909455516004830155516005909101805460ff191691151591909117905554909161057491166002546001600160a01b0316903089610b21565b866001600160a01b03167f969705509595726740fe60cc30769bbd53c883efff4d8e70108a82817e0392a9876040516105af91815260200190565b60405180910390a250505050505050565b6105c8610ac9565b6001600160a01b0381166000908152600360205260409020600581015460ff16156106055760405162461bcd60e51b815260040161030090610df1565b6000610610836109c3565b905060008260040154826106249190610e3e565b905060008284600001546106389190610e3e565b60058501805460ff191660011790559050811561066657600254610666906001600160a01b03168684610b8e565b8015610694576106946106816000546001600160a01b031690565b6002546001600160a01b03169083610b8e565b6040516001600160a01b038616907f68d870ac0aff3819234e8a1fc8f357b40d75212f2dc8594b97690fa205b3bab290600090a25050505050565b6106d7610ac9565b6106df610bc4565b565b6106e9610ac9565b6106df6000610c19565b6106fb610ac9565b6106df610c69565b61070b610ac9565b6001600160a01b038116600081815260046020526040808220805460ff19169055517f1ecef1b5180dc14b16608c5c5ec1fa28998e2f94e460b91c1b50bdfb643cc1389190a250565b61075c610ac9565b6001600160a01b0381166107a45760405162461bcd60e51b815260206004820152600f60248201526e496e76616c6964206164647265737360881b6044820152606401610300565b6001600160a01b038116600081815260046020526040808220805460ff19166001179055517f07e751107375f503d05dfa76b5038ce1c5b7d46e9e45768f913ac333780394399190a250565b6107f8610cac565b610800610af6565b33600081815260036020526040902060028101546001820154429161082491610e57565b106108665760405162461bcd60e51b81526020600482015260126024820152714e6f20746f6b656e7320746f20636c61696d60701b6044820152606401610300565b600581015460ff161561088b5760405162461bcd60e51b815260040161030090610df1565b80546108e45760405162461bcd60e51b815260206004820152602260248201527f546f74616c20616d6f756e74206d757374206265206c6172676572207468616e604482015261020360f41b6064820152608401610300565b60006108ef336109c3565b905060008260040154826109039190610e3e565b9050818360040160008282546109199190610e57565b9091555050600254610935906001600160a01b03168583610b8e565b836001600160a01b03167f896e034966eaaf1adc54acc0f257056febbd300c9e47182cf761982cf1f5e4308360405161097091815260200190565b60405180910390a2505050506106df60018055565b61098d610ac9565b6001600160a01b0381166109b757604051631e4fbdf760e01b815260006004820152602401610300565b6109c081610c19565b50565b6001600160a01b0381166000908152600360208181526040808420815160c081018352815481526001820154938101939093526002810154918301919091529182015460608201526004820154608082015260059091015460ff1615801560a0830152610a425760405162461bcd60e51b815260040161030090610df1565b604081015160208201514291610a5791610e57565b811015610a68575060009392505050565b81606001518260200151610a7c9190610e57565b8110610a8a57505192915050565b6000826020015182610a9c9190610e3e565b905060008360600151828560000151610ab59190610e6a565b610abf9190610e81565b9695505050505050565b6000546001600160a01b031633146106df5760405163118cdaa760e01b8152336004820152602401610300565b600054600160a01b900460ff16156106df5760405163d93c066560e01b815260040160405180910390fd5b6040516001600160a01b038481166024830152838116604483015260648201839052610b889186918216906323b872dd906084015b604051602081830303815290604052915060e01b6020820180516001600160e01b038381831617835250505050610cd6565b50505050565b6040516001600160a01b03838116602483015260448201839052610bbf91859182169063a9059cbb90606401610b56565b505050565b610bcc610d47565b6000805460ff60a01b191690557f5db9ee0a495bf2e6ff9c91a7834c1ba4fdd244a5e8aa4e537bd38aeae4b073aa335b6040516001600160a01b03909116815260200160405180910390a1565b600080546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b610c71610af6565b6000805460ff60a01b1916600160a01b1790557f62e78cea01bee320cd4e420270b5ea74000d11b0c9f74754ebdbfc544b05a258610bfc3390565b600260015403610ccf57604051633ee5aeb560e01b815260040160405180910390fd5b6002600155565b600080602060008451602086016000885af180610cf9576040513d6000823e3d81fd5b50506000513d91508115610d11578060011415610d1e565b6001600160a01b0384163b155b15610b8857604051635274afe760e01b81526001600160a01b0385166004820152602401610300565b600054600160a01b900460ff166106df57604051638dfc202b60e01b815260040160405180910390fd5b80356001600160a01b0381168114610d8857600080fd5b919050565b600080600080600060a08688031215610da557600080fd5b610dae86610d71565b97602087013597506040870135966060810135965060800135945092505050565b600060208284031215610de157600080fd5b610dea82610d71565b9392505050565b60208082526018908201527f56657374696e67207363686564756c65207265766f6b65640000000000000000604082015260600190565b634e487b7160e01b600052601160045260246000fd5b81810381811115610e5157610e51610e28565b92915050565b80820180821115610e5157610e51610e28565b8082028115828204841417610e5157610e51610e28565b600082610e9e57634e487b7160e01b600052601260045260246000fd5b50049056fea2646970667358221220e78a59fe9676520ffbeceff1606ab37c005ee96c5f34f900851198c2c65a483c64736f6c63430008140033", + "opcodes": "PUSH1 0x80 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH2 0x10 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x40 MLOAD PUSH2 0x1054 CODESIZE SUB DUP1 PUSH2 0x1054 DUP4 CODECOPY DUP2 ADD PUSH1 0x40 DUP2 SWAP1 MSTORE PUSH2 0x2F SWAP2 PUSH2 0x13C JUMP JUMPDEST CALLER DUP1 PUSH2 0x56 JUMPI PUSH1 0x40 MLOAD PUSH4 0x1E4FBDF7 PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x0 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x24 ADD JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH2 0x5F DUP2 PUSH2 0xEC JUMP JUMPDEST POP PUSH1 0x0 DUP1 SLOAD PUSH1 0xFF PUSH1 0xA0 SHL NOT AND SWAP1 SSTORE PUSH1 0x1 DUP1 SSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND PUSH2 0xC7 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x15 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x496E76616C696420746F6B656E20616464726573730000000000000000000000 PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 ADD PUSH2 0x4D JUMP JUMPDEST PUSH1 0x2 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 PUSH2 0x16C JUMP JUMPDEST PUSH1 0x0 DUP1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP4 DUP2 AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB NOT DUP4 AND DUP2 OR DUP5 SSTORE PUSH1 0x40 MLOAD SWAP2 SWAP1 SWAP3 AND SWAP3 DUP4 SWAP2 PUSH32 0x8BE0079C531659141344CD1FD0A4F28419497F9722A3DAAFE3B4186F6B6457E0 SWAP2 SWAP1 LOG3 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x14E JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND DUP2 EQ PUSH2 0x165 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH2 0xED9 DUP1 PUSH2 0x17B 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 0xF5 JUMPI PUSH1 0x0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0x8DA5CB5B GT PUSH2 0x97 JUMPI DUP1 PUSH4 0xF2FDE38B GT PUSH2 0x66 JUMPI DUP1 PUSH4 0xF2FDE38B EQ PUSH2 0x1D3 JUMPI DUP1 PUSH4 0xFC0C546A EQ PUSH2 0x1E6 JUMPI DUP1 PUSH4 0xFDB20CCB EQ PUSH2 0x1F9 JUMPI DUP1 PUSH4 0xFFA06B2A EQ PUSH2 0x271 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 PUSH4 0x8DA5CB5B EQ PUSH2 0x170 JUMPI DUP1 PUSH4 0x9B19251A EQ PUSH2 0x195 JUMPI DUP1 PUSH4 0xE43252D7 EQ PUSH2 0x1B8 JUMPI DUP1 PUSH4 0xE74F3FBB EQ PUSH2 0x1CB JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 PUSH4 0x5C975ABB GT PUSH2 0xD3 JUMPI DUP1 PUSH4 0x5C975ABB EQ PUSH2 0x12A JUMPI DUP1 PUSH4 0x715018A6 EQ PUSH2 0x14D JUMPI DUP1 PUSH4 0x8456CB59 EQ PUSH2 0x155 JUMPI DUP1 PUSH4 0x8AB1D681 EQ PUSH2 0x15D JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 PUSH4 0x1BF0B08B EQ PUSH2 0xFA JUMPI DUP1 PUSH4 0x3B0DA260 EQ PUSH2 0x10F JUMPI DUP1 PUSH4 0x3F4BA83A EQ PUSH2 0x122 JUMPI JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x10D PUSH2 0x108 CALLDATASIZE PUSH1 0x4 PUSH2 0xD8D JUMP JUMPDEST PUSH2 0x292 JUMP JUMPDEST STOP JUMPDEST PUSH2 0x10D PUSH2 0x11D CALLDATASIZE PUSH1 0x4 PUSH2 0xDCF JUMP JUMPDEST PUSH2 0x5C0 JUMP JUMPDEST PUSH2 0x10D PUSH2 0x6CF JUMP 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 JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0x10D PUSH2 0x6E1 JUMP JUMPDEST PUSH2 0x10D PUSH2 0x6F3 JUMP JUMPDEST PUSH2 0x10D PUSH2 0x16B CALLDATASIZE PUSH1 0x4 PUSH2 0xDCF JUMP JUMPDEST PUSH2 0x703 JUMP JUMPDEST PUSH1 0x0 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 SWAP2 AND DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0x144 JUMP JUMPDEST PUSH2 0x138 PUSH2 0x1A3 CALLDATASIZE PUSH1 0x4 PUSH2 0xDCF JUMP JUMPDEST PUSH1 0x4 PUSH1 0x20 MSTORE PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD PUSH1 0xFF AND DUP2 JUMP JUMPDEST PUSH2 0x10D PUSH2 0x1C6 CALLDATASIZE PUSH1 0x4 PUSH2 0xDCF JUMP JUMPDEST PUSH2 0x754 JUMP JUMPDEST PUSH2 0x10D PUSH2 0x7F0 JUMP JUMPDEST PUSH2 0x10D PUSH2 0x1E1 CALLDATASIZE PUSH1 0x4 PUSH2 0xDCF JUMP JUMPDEST PUSH2 0x985 JUMP JUMPDEST PUSH1 0x2 SLOAD PUSH2 0x17D SWAP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 JUMP JUMPDEST PUSH2 0x242 PUSH2 0x207 CALLDATASIZE PUSH1 0x4 PUSH2 0xDCF JUMP JUMPDEST PUSH1 0x3 PUSH1 0x20 DUP2 SWAP1 MSTORE PUSH1 0x0 SWAP2 DUP3 MSTORE PUSH1 0x40 SWAP1 SWAP2 KECCAK256 DUP1 SLOAD PUSH1 0x1 DUP3 ADD SLOAD PUSH1 0x2 DUP4 ADD SLOAD SWAP4 DUP4 ADD SLOAD PUSH1 0x4 DUP5 ADD SLOAD PUSH1 0x5 SWAP1 SWAP5 ADD SLOAD SWAP3 SWAP5 SWAP2 SWAP4 SWAP2 SWAP3 SWAP1 SWAP2 SWAP1 PUSH1 0xFF AND DUP7 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD SWAP7 DUP8 MSTORE PUSH1 0x20 DUP8 ADD SWAP6 SWAP1 SWAP6 MSTORE SWAP4 DUP6 ADD SWAP3 SWAP1 SWAP3 MSTORE PUSH1 0x60 DUP5 ADD MSTORE PUSH1 0x80 DUP4 ADD MSTORE ISZERO ISZERO PUSH1 0xA0 DUP3 ADD MSTORE PUSH1 0xC0 ADD PUSH2 0x144 JUMP JUMPDEST PUSH2 0x284 PUSH2 0x27F CALLDATASIZE PUSH1 0x4 PUSH2 0xDCF JUMP JUMPDEST PUSH2 0x9C3 JUMP JUMPDEST PUSH1 0x40 MLOAD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0x144 JUMP JUMPDEST PUSH2 0x29A PUSH2 0xAC9 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP6 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x4 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD DUP6 SWAP1 PUSH1 0xFF AND PUSH2 0x309 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x1B PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x42656E6566696369617279206E6F742077686974656C69737465640000000000 PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 ADD JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH2 0x311 PUSH2 0xAF6 JUMP JUMPDEST TIMESTAMP DUP3 GT PUSH2 0x360 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD DUP2 SWAP1 MSTORE PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x53746172742074696D65206D75737420626520696E2074686520667574757265 PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 ADD PUSH2 0x300 JUMP JUMPDEST PUSH1 0x0 DUP5 GT PUSH2 0x3BE 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 0x436C696666206475726174696F6E206D75737420626520677265617465722074 PUSH1 0x44 DUP3 ADD MSTORE PUSH5 0x68616E203 PUSH1 0xDC SHL PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 ADD PUSH2 0x300 JUMP JUMPDEST PUSH1 0x0 DUP4 GT PUSH2 0x41E JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x27 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x56657374696E67206475726174696F6E206D7573742062652067726561746572 PUSH1 0x44 DUP3 ADD MSTORE PUSH7 0x207468616E203 PUSH1 0xCC SHL PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 ADD PUSH2 0x300 JUMP JUMPDEST PUSH1 0x0 DUP6 GT PUSH2 0x46E JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x1D PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x416D6F756E74206D7573742062652067726561746572207468616E2030000000 PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 ADD PUSH2 0x300 JUMP JUMPDEST DUP4 DUP4 GT PUSH2 0x4DA JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x34 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x56657374696E67206475726174696F6E206D7573742062652067726561746572 PUSH1 0x44 DUP3 ADD MSTORE PUSH20 0x103A3430B71031B634B33310323AB930BA34B7B7 PUSH1 0x61 SHL PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 ADD PUSH2 0x300 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0xC0 DUP2 ADD DUP3 MSTORE DUP7 DUP2 MSTORE PUSH1 0x20 DUP1 DUP3 ADD DUP6 DUP2 MSTORE DUP3 DUP5 ADD DUP9 DUP2 MSTORE PUSH1 0x60 DUP5 ADD DUP9 DUP2 MSTORE PUSH1 0x0 PUSH1 0x80 DUP7 ADD DUP2 DUP2 MSTORE PUSH1 0xA0 DUP8 ADD DUP3 DUP2 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP16 DUP2 AND DUP5 MSTORE PUSH1 0x3 SWAP8 DUP9 SWAP1 MSTORE SWAP9 DUP4 KECCAK256 DUP9 MLOAD DUP2 SSTORE SWAP6 MLOAD PUSH1 0x1 DUP8 ADD SSTORE SWAP4 MLOAD PUSH1 0x2 DUP7 ADD SSTORE SWAP2 MLOAD SWAP5 DUP5 ADD SWAP5 SWAP1 SWAP5 SSTORE MLOAD PUSH1 0x4 DUP4 ADD SSTORE MLOAD PUSH1 0x5 SWAP1 SWAP2 ADD DUP1 SLOAD PUSH1 0xFF NOT AND SWAP2 ISZERO ISZERO SWAP2 SWAP1 SWAP2 OR SWAP1 SSTORE SLOAD SWAP1 SWAP2 PUSH2 0x574 SWAP2 AND PUSH1 0x2 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SWAP1 ADDRESS DUP10 PUSH2 0xB21 JUMP JUMPDEST DUP7 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH32 0x969705509595726740FE60CC30769BBD53C883EFFF4D8E70108A82817E0392A9 DUP8 PUSH1 0x40 MLOAD PUSH2 0x5AF SWAP2 DUP2 MSTORE PUSH1 0x20 ADD SWAP1 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG2 POP POP POP POP POP POP POP JUMP JUMPDEST PUSH2 0x5C8 PUSH2 0xAC9 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x3 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 PUSH1 0x5 DUP2 ADD SLOAD PUSH1 0xFF AND ISZERO PUSH2 0x605 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x300 SWAP1 PUSH2 0xDF1 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x610 DUP4 PUSH2 0x9C3 JUMP JUMPDEST SWAP1 POP PUSH1 0x0 DUP3 PUSH1 0x4 ADD SLOAD DUP3 PUSH2 0x624 SWAP2 SWAP1 PUSH2 0xE3E JUMP JUMPDEST SWAP1 POP PUSH1 0x0 DUP3 DUP5 PUSH1 0x0 ADD SLOAD PUSH2 0x638 SWAP2 SWAP1 PUSH2 0xE3E JUMP JUMPDEST PUSH1 0x5 DUP6 ADD DUP1 SLOAD PUSH1 0xFF NOT AND PUSH1 0x1 OR SWAP1 SSTORE SWAP1 POP DUP2 ISZERO PUSH2 0x666 JUMPI PUSH1 0x2 SLOAD PUSH2 0x666 SWAP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP7 DUP5 PUSH2 0xB8E JUMP JUMPDEST DUP1 ISZERO PUSH2 0x694 JUMPI PUSH2 0x694 PUSH2 0x681 PUSH1 0x0 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SWAP1 JUMP JUMPDEST PUSH1 0x2 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SWAP1 DUP4 PUSH2 0xB8E JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP7 AND SWAP1 PUSH32 0x68D870AC0AFF3819234E8A1FC8F357B40D75212F2DC8594B97690FA205B3BAB2 SWAP1 PUSH1 0x0 SWAP1 LOG2 POP POP POP POP POP JUMP JUMPDEST PUSH2 0x6D7 PUSH2 0xAC9 JUMP JUMPDEST PUSH2 0x6DF PUSH2 0xBC4 JUMP JUMPDEST JUMP JUMPDEST PUSH2 0x6E9 PUSH2 0xAC9 JUMP JUMPDEST PUSH2 0x6DF PUSH1 0x0 PUSH2 0xC19 JUMP JUMPDEST PUSH2 0x6FB PUSH2 0xAC9 JUMP JUMPDEST PUSH2 0x6DF PUSH2 0xC69 JUMP JUMPDEST PUSH2 0x70B PUSH2 0xAC9 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0x4 PUSH1 0x20 MSTORE PUSH1 0x40 DUP1 DUP3 KECCAK256 DUP1 SLOAD PUSH1 0xFF NOT AND SWAP1 SSTORE MLOAD PUSH32 0x1ECEF1B5180DC14B16608C5C5EC1FA28998E2F94E460B91C1B50BDFB643CC138 SWAP2 SWAP1 LOG2 POP JUMP JUMPDEST PUSH2 0x75C PUSH2 0xAC9 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND PUSH2 0x7A4 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0xF PUSH1 0x24 DUP3 ADD MSTORE PUSH15 0x496E76616C69642061646472657373 PUSH1 0x88 SHL PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 ADD PUSH2 0x300 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0x4 PUSH1 0x20 MSTORE PUSH1 0x40 DUP1 DUP3 KECCAK256 DUP1 SLOAD PUSH1 0xFF NOT AND PUSH1 0x1 OR SWAP1 SSTORE MLOAD PUSH32 0x7E751107375F503D05DFA76B5038CE1C5B7D46E9E45768F913AC33378039439 SWAP2 SWAP1 LOG2 POP JUMP JUMPDEST PUSH2 0x7F8 PUSH2 0xCAC JUMP JUMPDEST PUSH2 0x800 PUSH2 0xAF6 JUMP JUMPDEST CALLER PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0x3 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 PUSH1 0x2 DUP2 ADD SLOAD PUSH1 0x1 DUP3 ADD SLOAD TIMESTAMP SWAP2 PUSH2 0x824 SWAP2 PUSH2 0xE57 JUMP JUMPDEST LT PUSH2 0x866 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 0x4E6F20746F6B656E7320746F20636C61696D PUSH1 0x70 SHL PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 ADD PUSH2 0x300 JUMP JUMPDEST PUSH1 0x5 DUP2 ADD SLOAD PUSH1 0xFF AND ISZERO PUSH2 0x88B JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x300 SWAP1 PUSH2 0xDF1 JUMP JUMPDEST DUP1 SLOAD PUSH2 0x8E4 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 0x546F74616C20616D6F756E74206D757374206265206C6172676572207468616E PUSH1 0x44 DUP3 ADD MSTORE PUSH2 0x203 PUSH1 0xF4 SHL PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 ADD PUSH2 0x300 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x8EF CALLER PUSH2 0x9C3 JUMP JUMPDEST SWAP1 POP PUSH1 0x0 DUP3 PUSH1 0x4 ADD SLOAD DUP3 PUSH2 0x903 SWAP2 SWAP1 PUSH2 0xE3E JUMP JUMPDEST SWAP1 POP DUP2 DUP4 PUSH1 0x4 ADD PUSH1 0x0 DUP3 DUP3 SLOAD PUSH2 0x919 SWAP2 SWAP1 PUSH2 0xE57 JUMP JUMPDEST SWAP1 SWAP2 SSTORE POP POP PUSH1 0x2 SLOAD PUSH2 0x935 SWAP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP6 DUP4 PUSH2 0xB8E JUMP JUMPDEST DUP4 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH32 0x896E034966EAAF1ADC54ACC0F257056FEBBD300C9E47182CF761982CF1F5E430 DUP4 PUSH1 0x40 MLOAD PUSH2 0x970 SWAP2 DUP2 MSTORE PUSH1 0x20 ADD SWAP1 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG2 POP POP POP POP PUSH2 0x6DF PUSH1 0x1 DUP1 SSTORE JUMP JUMPDEST PUSH2 0x98D PUSH2 0xAC9 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND PUSH2 0x9B7 JUMPI PUSH1 0x40 MLOAD PUSH4 0x1E4FBDF7 PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x0 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x24 ADD PUSH2 0x300 JUMP JUMPDEST PUSH2 0x9C0 DUP2 PUSH2 0xC19 JUMP JUMPDEST POP JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x3 PUSH1 0x20 DUP2 DUP2 MSTORE PUSH1 0x40 DUP1 DUP5 KECCAK256 DUP2 MLOAD PUSH1 0xC0 DUP2 ADD DUP4 MSTORE DUP2 SLOAD DUP2 MSTORE PUSH1 0x1 DUP3 ADD SLOAD SWAP4 DUP2 ADD SWAP4 SWAP1 SWAP4 MSTORE PUSH1 0x2 DUP2 ADD SLOAD SWAP2 DUP4 ADD SWAP2 SWAP1 SWAP2 MSTORE SWAP2 DUP3 ADD SLOAD PUSH1 0x60 DUP3 ADD MSTORE PUSH1 0x4 DUP3 ADD SLOAD PUSH1 0x80 DUP3 ADD MSTORE PUSH1 0x5 SWAP1 SWAP2 ADD SLOAD PUSH1 0xFF AND ISZERO DUP1 ISZERO PUSH1 0xA0 DUP4 ADD MSTORE PUSH2 0xA42 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x300 SWAP1 PUSH2 0xDF1 JUMP JUMPDEST PUSH1 0x40 DUP2 ADD MLOAD PUSH1 0x20 DUP3 ADD MLOAD TIMESTAMP SWAP2 PUSH2 0xA57 SWAP2 PUSH2 0xE57 JUMP JUMPDEST DUP2 LT ISZERO PUSH2 0xA68 JUMPI POP PUSH1 0x0 SWAP4 SWAP3 POP POP POP JUMP JUMPDEST DUP2 PUSH1 0x60 ADD MLOAD DUP3 PUSH1 0x20 ADD MLOAD PUSH2 0xA7C SWAP2 SWAP1 PUSH2 0xE57 JUMP JUMPDEST DUP2 LT PUSH2 0xA8A JUMPI POP MLOAD SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 DUP3 PUSH1 0x20 ADD MLOAD DUP3 PUSH2 0xA9C SWAP2 SWAP1 PUSH2 0xE3E JUMP JUMPDEST SWAP1 POP PUSH1 0x0 DUP4 PUSH1 0x60 ADD MLOAD DUP3 DUP6 PUSH1 0x0 ADD MLOAD PUSH2 0xAB5 SWAP2 SWAP1 PUSH2 0xE6A JUMP JUMPDEST PUSH2 0xABF SWAP2 SWAP1 PUSH2 0xE81 JUMP JUMPDEST SWAP7 SWAP6 POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND CALLER EQ PUSH2 0x6DF JUMPI PUSH1 0x40 MLOAD PUSH4 0x118CDAA7 PUSH1 0xE0 SHL DUP2 MSTORE CALLER PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x24 ADD PUSH2 0x300 JUMP JUMPDEST PUSH1 0x0 SLOAD PUSH1 0x1 PUSH1 0xA0 SHL SWAP1 DIV PUSH1 0xFF AND ISZERO PUSH2 0x6DF JUMPI PUSH1 0x40 MLOAD PUSH4 0xD93C0665 PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP5 DUP2 AND PUSH1 0x24 DUP4 ADD MSTORE DUP4 DUP2 AND PUSH1 0x44 DUP4 ADD MSTORE PUSH1 0x64 DUP3 ADD DUP4 SWAP1 MSTORE PUSH2 0xB88 SWAP2 DUP7 SWAP2 DUP3 AND SWAP1 PUSH4 0x23B872DD SWAP1 PUSH1 0x84 ADD JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x20 DUP2 DUP4 SUB SUB DUP2 MSTORE SWAP1 PUSH1 0x40 MSTORE SWAP2 POP PUSH1 0xE0 SHL PUSH1 0x20 DUP3 ADD DUP1 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB DUP4 DUP2 DUP4 AND OR DUP4 MSTORE POP POP POP POP PUSH2 0xCD6 JUMP JUMPDEST POP POP POP POP JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP4 DUP2 AND PUSH1 0x24 DUP4 ADD MSTORE PUSH1 0x44 DUP3 ADD DUP4 SWAP1 MSTORE PUSH2 0xBBF SWAP2 DUP6 SWAP2 DUP3 AND SWAP1 PUSH4 0xA9059CBB SWAP1 PUSH1 0x64 ADD PUSH2 0xB56 JUMP JUMPDEST POP POP POP JUMP JUMPDEST PUSH2 0xBCC PUSH2 0xD47 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 DUP1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP4 DUP2 AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB NOT DUP4 AND DUP2 OR DUP5 SSTORE PUSH1 0x40 MLOAD SWAP2 SWAP1 SWAP3 AND SWAP3 DUP4 SWAP2 PUSH32 0x8BE0079C531659141344CD1FD0A4F28419497F9722A3DAAFE3B4186F6B6457E0 SWAP2 SWAP1 LOG3 POP POP JUMP JUMPDEST PUSH2 0xC71 PUSH2 0xAF6 JUMP JUMPDEST PUSH1 0x0 DUP1 SLOAD PUSH1 0xFF PUSH1 0xA0 SHL NOT AND PUSH1 0x1 PUSH1 0xA0 SHL OR SWAP1 SSTORE PUSH32 0x62E78CEA01BEE320CD4E420270B5EA74000D11B0C9F74754EBDBFC544B05A258 PUSH2 0xBFC CALLER SWAP1 JUMP JUMPDEST PUSH1 0x2 PUSH1 0x1 SLOAD SUB PUSH2 0xCCF JUMPI PUSH1 0x40 MLOAD PUSH4 0x3EE5AEB5 PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x2 PUSH1 0x1 SSTORE JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x20 PUSH1 0x0 DUP5 MLOAD PUSH1 0x20 DUP7 ADD PUSH1 0x0 DUP9 GAS CALL DUP1 PUSH2 0xCF9 JUMPI PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x0 DUP3 RETURNDATACOPY RETURNDATASIZE DUP2 REVERT JUMPDEST POP POP PUSH1 0x0 MLOAD RETURNDATASIZE SWAP2 POP DUP2 ISZERO PUSH2 0xD11 JUMPI DUP1 PUSH1 0x1 EQ ISZERO PUSH2 0xD1E JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP5 AND EXTCODESIZE ISZERO JUMPDEST ISZERO PUSH2 0xB88 JUMPI PUSH1 0x40 MLOAD PUSH4 0x5274AFE7 PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP6 AND PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x24 ADD PUSH2 0x300 JUMP JUMPDEST PUSH1 0x0 SLOAD PUSH1 0x1 PUSH1 0xA0 SHL SWAP1 DIV PUSH1 0xFF AND PUSH2 0x6DF JUMPI PUSH1 0x40 MLOAD PUSH4 0x8DFC202B PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST DUP1 CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND DUP2 EQ PUSH2 0xD88 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0x0 PUSH1 0xA0 DUP7 DUP9 SUB SLT ISZERO PUSH2 0xDA5 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0xDAE DUP7 PUSH2 0xD71 JUMP JUMPDEST SWAP8 PUSH1 0x20 DUP8 ADD CALLDATALOAD SWAP8 POP PUSH1 0x40 DUP8 ADD CALLDATALOAD SWAP7 PUSH1 0x60 DUP2 ADD CALLDATALOAD SWAP7 POP PUSH1 0x80 ADD CALLDATALOAD SWAP5 POP SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0xDE1 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0xDEA DUP3 PUSH2 0xD71 JUMP JUMPDEST SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE PUSH1 0x18 SWAP1 DUP3 ADD MSTORE PUSH32 0x56657374696E67207363686564756C65207265766F6B65640000000000000000 PUSH1 0x40 DUP3 ADD MSTORE PUSH1 0x60 ADD SWAP1 JUMP JUMPDEST PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH1 0x0 MSTORE PUSH1 0x11 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST DUP2 DUP2 SUB DUP2 DUP2 GT ISZERO PUSH2 0xE51 JUMPI PUSH2 0xE51 PUSH2 0xE28 JUMP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST DUP1 DUP3 ADD DUP1 DUP3 GT ISZERO PUSH2 0xE51 JUMPI PUSH2 0xE51 PUSH2 0xE28 JUMP JUMPDEST DUP1 DUP3 MUL DUP2 ISZERO DUP3 DUP3 DIV DUP5 EQ OR PUSH2 0xE51 JUMPI PUSH2 0xE51 PUSH2 0xE28 JUMP JUMPDEST PUSH1 0x0 DUP3 PUSH2 0xE9E JUMPI PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH1 0x0 MSTORE PUSH1 0x12 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST POP DIV SWAP1 JUMP INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 0xE7 DUP11 MSIZE INVALID SWAP7 PUSH23 0x520FFBECEFF1606AB37C005EE96C5F34F900851198C2C6 GAS BASEFEE EXTCODECOPY PUSH5 0x736F6C6343 STOP ADDMOD EQ STOP CALLER ", + "sourceMap": "1132:5481:15:-:0;;;2175:190;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;1165:10;;1269:95:0;;1322:31;;-1:-1:-1;;;1322:31:0;;1350:1;1322:31;;;455:51:17;428:18;;1322:31:0;;;;;;;;1269:95;1373:32;1392:12;1373:18;:32::i;:::-;-1:-1:-1;1241:5:12;1231:15;;-1:-1:-1;;;;1231:15:12;;;;2061:21:13;;-1:-1:-1;;;;;2268:26:15;;2260:60;;;;-1:-1:-1;;;2260:60:15;;719:2:17;2260:60:15;;;701:21:17;758:2;738:18;;;731:30;797:23;777:18;;;770:51;838:18;;2260:60:15;517:345:17;2260:60:15;2330:5;:28;;-1:-1:-1;;;;;;2330:28:15;-1:-1:-1;;;;;2330:28:15;;;;;;;;;;1132:5481;;2912:187:0;2985:16;3004:6;;-1:-1:-1;;;;;3020:17:0;;;-1:-1:-1;;;;;;3020:17:0;;;;;;3052:40;;3004:6;;;;;;;3052:40;;2985:16;3052:40;2975:124;2912:187;:::o;14:290:17:-;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:17;;214:42;;204:70;;270:1;267;260:12;204:70;293:5;14:290;-1:-1:-1;;;14:290:17:o;517:345::-;1132:5481:15;;;;;;" }, - { - "inputs": [ - { - "internalType": "address", - "name": "", - "type": "address" - } - ], - "name": "vestingSchedules", - "outputs": [ - { - "internalType": "uint256", - "name": "totalAmount", - "type": "uint256" + "deployedBytecode": { + "functionDebugData": { + "@_callOptionalReturn_1362": { + "entryPoint": 3286, + "id": 1362, + "parameterSlots": 2, + "returnSlots": 0 }, - { - "internalType": "uint256", - "name": "startTime", - "type": "uint256" + "@_checkOwner_84": { + "entryPoint": 2761, + "id": 84, + "parameterSlots": 0, + "returnSlots": 0 }, - { - "internalType": "uint256", - "name": "cliffDuration", - "type": "uint256" + "@_msgSender_1675": { + "entryPoint": null, + "id": 1675, + "parameterSlots": 0, + "returnSlots": 1 }, - { - "internalType": "uint256", - "name": "vestingDuration", - "type": "uint256" + "@_nonReentrantAfter_1889": { + "entryPoint": null, + "id": 1889, + "parameterSlots": 0, + "returnSlots": 0 }, - { - "internalType": "uint256", - "name": "amountClaimed", - "type": "uint256" + "@_nonReentrantBefore_1881": { + "entryPoint": 3244, + "id": 1881, + "parameterSlots": 0, + "returnSlots": 0 }, - { - "internalType": "bool", - "name": "revoked", - "type": "bool" - } - ], - "stateMutability": "view", - "type": "function" - }, - { - "inputs": [ - { - "internalType": "address", - "name": "", - "type": "address" - } - ], - "name": "whitelist", - "outputs": [ - { - "internalType": "bool", - "name": "", - "type": "bool" - } - ], - "stateMutability": "view", - "type": "function" - } - ], - "evm": { - "bytecode": { - "functionDebugData": { - "@_1072": { + "@_pause_1815": { + "entryPoint": 3177, + "id": 1815, + "parameterSlots": 0, + "returnSlots": 0 + }, + "@_requireNotPaused_1786": { + "entryPoint": 2806, + "id": 1786, + "parameterSlots": 0, + "returnSlots": 0 + }, + "@_requirePaused_1799": { + "entryPoint": 3399, + "id": 1799, + "parameterSlots": 0, + "returnSlots": 0 + }, + "@_transferOwnership_146": { + "entryPoint": 3097, + "id": 146, + "parameterSlots": 1, + "returnSlots": 0 + }, + "@_unpause_1831": { + "entryPoint": 3012, + "id": 1831, + "parameterSlots": 0, + "returnSlots": 0 + }, + "@addToWhitelist_2044": { + "entryPoint": 1876, + "id": 2044, + "parameterSlots": 1, + "returnSlots": 0 + }, + "@calculateVestedAmount_2224": { + "entryPoint": 2499, + "id": 2224, + "parameterSlots": 1, + "returnSlots": 1 + }, + "@claimVestedTokens_2303": { + "entryPoint": 2032, + "id": 2303, + "parameterSlots": 0, + "returnSlots": 0 + }, + "@createVestingSchedule_2154": { + "entryPoint": 658, + "id": 2154, + "parameterSlots": 5, + "returnSlots": 0 + }, + "@owner_67": { "entryPoint": null, - "id": 1072, + "id": 67, + "parameterSlots": 0, + "returnSlots": 1 + }, + "@pause_2389": { + "entryPoint": 1779, + "id": 2389, "parameterSlots": 0, "returnSlots": 0 }, - "@_1242": { + "@paused_1774": { "entryPoint": null, - "id": 1242, + "id": 1774, + "parameterSlots": 0, + "returnSlots": 1 + }, + "@removeFromWhitelist_2062": { + "entryPoint": 1795, + "id": 2062, "parameterSlots": 1, "returnSlots": 0 }, - "@_50": { - "entryPoint": null, - "id": 50, + "@renounceOwnership_98": { + "entryPoint": 1761, + "id": 98, + "parameterSlots": 0, + "returnSlots": 0 + }, + "@revokeVesting_2380": { + "entryPoint": 1472, + "id": 2380, "parameterSlots": 1, "returnSlots": 0 }, - "@_967": { + "@safeTransferFrom_1067": { + "entryPoint": 2849, + "id": 1067, + "parameterSlots": 4, + "returnSlots": 0 + }, + "@safeTransfer_1040": { + "entryPoint": 2958, + "id": 1040, + "parameterSlots": 3, + "returnSlots": 0 + }, + "@token_1948": { "entryPoint": null, - "id": 967, + "id": 1948, "parameterSlots": 0, "returnSlots": 0 }, - "@_transferOwnership_146": { - "entryPoint": 216, - "id": 146, + "@transferOwnership_126": { + "entryPoint": 2437, + "id": 126, "parameterSlots": 1, "returnSlots": 0 }, - "abi_decode_tuple_t_address_fromMemory": { - "entryPoint": 296, + "@unpause_2398": { + "entryPoint": 1743, + "id": 2398, + "parameterSlots": 0, + "returnSlots": 0 + }, + "@vestingSchedules_1953": { + "entryPoint": null, + "id": 1953, + "parameterSlots": 0, + "returnSlots": 0 + }, + "@whitelist_1957": { + "entryPoint": null, + "id": 1957, + "parameterSlots": 0, + "returnSlots": 0 + }, + "abi_decode_address": { + "entryPoint": 3441, + "id": null, + "parameterSlots": 1, + "returnSlots": 1 + }, + "abi_decode_tuple_t_address": { + "entryPoint": 3535, "id": null, "parameterSlots": 2, "returnSlots": 1 }, + "abi_decode_tuple_t_addresst_uint256t_uint256t_uint256t_uint256": { + "entryPoint": 3469, + "id": null, + "parameterSlots": 2, + "returnSlots": 5 + }, "abi_encode_tuple_t_address__to_t_address__fromStack_reversed": { "entryPoint": null, "id": null, "parameterSlots": 2, "returnSlots": 1 }, - "abi_encode_tuple_t_stringliteral_d34df3e6e5f402d3417b1a16a0a8a7541b184d7fb338e177a15236f4037e3743__to_t_string_memory_ptr__fromStack_reversed": { + "abi_encode_tuple_t_address_t_address_t_uint256__to_t_address_t_address_t_uint256__fromStack_reversed": { + "entryPoint": null, + "id": null, + "parameterSlots": 4, + "returnSlots": 1 + }, + "abi_encode_tuple_t_address_t_uint256__to_t_address_t_uint256__fromStack_reversed": { + "entryPoint": null, + "id": null, + "parameterSlots": 3, + "returnSlots": 1 + }, + "abi_encode_tuple_t_bool__to_t_bool__fromStack_reversed": { + "entryPoint": null, + "id": null, + "parameterSlots": 2, + "returnSlots": 1 + }, + "abi_encode_tuple_t_contract$_IERC20_$967__to_t_address__fromStack_reversed": { + "entryPoint": null, + "id": null, + "parameterSlots": 2, + "returnSlots": 1 + }, + "abi_encode_tuple_t_stringliteral_0d5449e713a47f03a14de06feb7e7374931b31bbe74b9f8d4277d4797f0eb90e__to_t_string_memory_ptr__fromStack_reversed": { + "entryPoint": null, + "id": null, + "parameterSlots": 1, + "returnSlots": 1 + }, + "abi_encode_tuple_t_stringliteral_1017f1b07ba3fa3e0d85c11bf6ba26e6987d24ff7513f1d1b9df5c982d07c93f__to_t_string_memory_ptr__fromStack_reversed": { + "entryPoint": null, + "id": null, + "parameterSlots": 1, + "returnSlots": 1 + }, + "abi_encode_tuple_t_stringliteral_1462473b7a4b33d32b109b815fd2324d00c9e5839b707ecf16d0ab5744f99226__to_t_string_memory_ptr__fromStack_reversed": { + "entryPoint": null, + "id": null, + "parameterSlots": 1, + "returnSlots": 1 + }, + "abi_encode_tuple_t_stringliteral_2d980113b746b646b1f1c170ff650a967a1fe1a7065543628c00dcab2441d666__to_t_string_memory_ptr__fromStack_reversed": { + "entryPoint": null, + "id": null, + "parameterSlots": 1, + "returnSlots": 1 + }, + "abi_encode_tuple_t_stringliteral_33ba6c59384982a33c8d03efd40cd022501542cd14d2a647b97dcbf1ab55c9a8__to_t_string_memory_ptr__fromStack_reversed": { + "entryPoint": null, + "id": null, + "parameterSlots": 1, + "returnSlots": 1 + }, + "abi_encode_tuple_t_stringliteral_3e76f273c719bb7d23db533a2dc9a822ae7d899fcd42eb8910272e24764e8296__to_t_string_memory_ptr__fromStack_reversed": { + "entryPoint": null, + "id": null, + "parameterSlots": 1, + "returnSlots": 1 + }, + "abi_encode_tuple_t_stringliteral_7bccacb3ef1b76a239d24792d8e953985aa4e1666ef83909e9156bbd66ed8fe3__to_t_string_memory_ptr__fromStack_reversed": { + "entryPoint": null, + "id": null, + "parameterSlots": 1, + "returnSlots": 1 + }, + "abi_encode_tuple_t_stringliteral_839ed8254ffca5ca01218b9b2173f9b1e14f13a19eb201692e63da7b37ccc026__to_t_string_memory_ptr__fromStack_reversed": { + "entryPoint": null, + "id": null, + "parameterSlots": 1, + "returnSlots": 1 + }, + "abi_encode_tuple_t_stringliteral_91f1f2e511bedf319ad6ce391862732cf90c76883618f4f508c8f5e61f705466__to_t_string_memory_ptr__fromStack_reversed": { "entryPoint": null, "id": null, "parameterSlots": 1, "returnSlots": 1 + }, + "abi_encode_tuple_t_stringliteral_b8b87812c352fc8e39cdfe1757bfbcecb484013d66c0da14d0ba3b167d668ffe__to_t_string_memory_ptr__fromStack_reversed": { + "entryPoint": 3569, + "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_uint256_t_uint256_t_uint256_t_uint256_t_bool__to_t_uint256_t_uint256_t_uint256_t_uint256_t_uint256_t_bool__fromStack_reversed": { + "entryPoint": null, + "id": null, + "parameterSlots": 7, + "returnSlots": 1 + }, + "checked_add_t_uint256": { + "entryPoint": 3671, + "id": null, + "parameterSlots": 2, + "returnSlots": 1 + }, + "checked_div_t_uint256": { + "entryPoint": 3713, + "id": null, + "parameterSlots": 2, + "returnSlots": 1 + }, + "checked_mul_t_uint256": { + "entryPoint": 3690, + "id": null, + "parameterSlots": 2, + "returnSlots": 1 + }, + "checked_sub_t_uint256": { + "entryPoint": 3646, + "id": null, + "parameterSlots": 2, + "returnSlots": 1 + }, + "panic_error_0x11": { + "entryPoint": 3624, + "id": null, + "parameterSlots": 0, + "returnSlots": 0 } }, "generatedSources": [ { "ast": { "nodeType": "YulBlock", - "src": "0:864:10", + "src": "0:7405:17", "statements": [ { - "nodeType": "YulBlock", - "src": "6:3:10", - "statements": [] + "nodeType": "YulBlock", + "src": "6:3:17", + "statements": [] + }, + { + "body": { + "nodeType": "YulBlock", + "src": "63:124:17", + "statements": [ + { + "nodeType": "YulAssignment", + "src": "73:29:17", + "value": { + "arguments": [ + { + "name": "offset", + "nodeType": "YulIdentifier", + "src": "95:6:17" + } + ], + "functionName": { + "name": "calldataload", + "nodeType": "YulIdentifier", + "src": "82:12:17" + }, + "nodeType": "YulFunctionCall", + "src": "82:20:17" + }, + "variableNames": [ + { + "name": "value", + "nodeType": "YulIdentifier", + "src": "73:5:17" + } + ] + }, + { + "body": { + "nodeType": "YulBlock", + "src": "165:16:17", + "statements": [ + { + "expression": { + "arguments": [ + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "174:1:17", + "type": "", + "value": "0" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "177:1:17", + "type": "", + "value": "0" + } + ], + "functionName": { + "name": "revert", + "nodeType": "YulIdentifier", + "src": "167:6:17" + }, + "nodeType": "YulFunctionCall", + "src": "167:12:17" + }, + "nodeType": "YulExpressionStatement", + "src": "167:12:17" + } + ] + }, + "condition": { + "arguments": [ + { + "arguments": [ + { + "name": "value", + "nodeType": "YulIdentifier", + "src": "124:5:17" + }, + { + "arguments": [ + { + "name": "value", + "nodeType": "YulIdentifier", + "src": "135:5:17" + }, + { + "arguments": [ + { + "arguments": [ + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "150:3:17", + "type": "", + "value": "160" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "155:1:17", + "type": "", + "value": "1" + } + ], + "functionName": { + "name": "shl", + "nodeType": "YulIdentifier", + "src": "146:3:17" + }, + "nodeType": "YulFunctionCall", + "src": "146:11:17" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "159:1:17", + "type": "", + "value": "1" + } + ], + "functionName": { + "name": "sub", + "nodeType": "YulIdentifier", + "src": "142:3:17" + }, + "nodeType": "YulFunctionCall", + "src": "142:19:17" + } + ], + "functionName": { + "name": "and", + "nodeType": "YulIdentifier", + "src": "131:3:17" + }, + "nodeType": "YulFunctionCall", + "src": "131:31:17" + } + ], + "functionName": { + "name": "eq", + "nodeType": "YulIdentifier", + "src": "121:2:17" + }, + "nodeType": "YulFunctionCall", + "src": "121:42:17" + } + ], + "functionName": { + "name": "iszero", + "nodeType": "YulIdentifier", + "src": "114:6:17" + }, + "nodeType": "YulFunctionCall", + "src": "114:50:17" + }, + "nodeType": "YulIf", + "src": "111:70:17" + } + ] + }, + "name": "abi_decode_address", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "offset", + "nodeType": "YulTypedName", + "src": "42:6:17", + "type": "" + } + ], + "returnVariables": [ + { + "name": "value", + "nodeType": "YulTypedName", + "src": "53:5:17", + "type": "" + } + ], + "src": "14:173:17" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "330:322:17", + "statements": [ + { + "body": { + "nodeType": "YulBlock", + "src": "377:16:17", + "statements": [ + { + "expression": { + "arguments": [ + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "386:1:17", + "type": "", + "value": "0" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "389:1:17", + "type": "", + "value": "0" + } + ], + "functionName": { + "name": "revert", + "nodeType": "YulIdentifier", + "src": "379:6:17" + }, + "nodeType": "YulFunctionCall", + "src": "379:12:17" + }, + "nodeType": "YulExpressionStatement", + "src": "379:12:17" + } + ] + }, + "condition": { + "arguments": [ + { + "arguments": [ + { + "name": "dataEnd", + "nodeType": "YulIdentifier", + "src": "351:7:17" + }, + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "360:9:17" + } + ], + "functionName": { + "name": "sub", + "nodeType": "YulIdentifier", + "src": "347:3:17" + }, + "nodeType": "YulFunctionCall", + "src": "347:23:17" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "372:3:17", + "type": "", + "value": "160" + } + ], + "functionName": { + "name": "slt", + "nodeType": "YulIdentifier", + "src": "343:3:17" + }, + "nodeType": "YulFunctionCall", + "src": "343:33:17" + }, + "nodeType": "YulIf", + "src": "340:53:17" + }, + { + "nodeType": "YulAssignment", + "src": "402:39:17", + "value": { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "431:9:17" + } + ], + "functionName": { + "name": "abi_decode_address", + "nodeType": "YulIdentifier", + "src": "412:18:17" + }, + "nodeType": "YulFunctionCall", + "src": "412:29:17" + }, + "variableNames": [ + { + "name": "value0", + "nodeType": "YulIdentifier", + "src": "402:6:17" + } + ] + }, + { + "nodeType": "YulAssignment", + "src": "450:42:17", + "value": { + "arguments": [ + { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "477:9:17" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "488:2:17", + "type": "", + "value": "32" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "473:3:17" + }, + "nodeType": "YulFunctionCall", + "src": "473:18:17" + } + ], + "functionName": { + "name": "calldataload", + "nodeType": "YulIdentifier", + "src": "460:12:17" + }, + "nodeType": "YulFunctionCall", + "src": "460:32:17" + }, + "variableNames": [ + { + "name": "value1", + "nodeType": "YulIdentifier", + "src": "450:6:17" + } + ] + }, + { + "nodeType": "YulAssignment", + "src": "501:42:17", + "value": { + "arguments": [ + { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "528:9:17" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "539:2:17", + "type": "", + "value": "64" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "524:3:17" + }, + "nodeType": "YulFunctionCall", + "src": "524:18:17" + } + ], + "functionName": { + "name": "calldataload", + "nodeType": "YulIdentifier", + "src": "511:12:17" + }, + "nodeType": "YulFunctionCall", + "src": "511:32:17" + }, + "variableNames": [ + { + "name": "value2", + "nodeType": "YulIdentifier", + "src": "501:6:17" + } + ] + }, + { + "nodeType": "YulAssignment", + "src": "552:42:17", + "value": { + "arguments": [ + { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "579:9:17" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "590:2:17", + "type": "", + "value": "96" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "575:3:17" + }, + "nodeType": "YulFunctionCall", + "src": "575:18:17" + } + ], + "functionName": { + "name": "calldataload", + "nodeType": "YulIdentifier", + "src": "562:12:17" + }, + "nodeType": "YulFunctionCall", + "src": "562:32:17" + }, + "variableNames": [ + { + "name": "value3", + "nodeType": "YulIdentifier", + "src": "552:6:17" + } + ] + }, + { + "nodeType": "YulAssignment", + "src": "603:43:17", + "value": { + "arguments": [ + { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "630:9:17" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "641:3:17", + "type": "", + "value": "128" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "626:3:17" + }, + "nodeType": "YulFunctionCall", + "src": "626:19:17" + } + ], + "functionName": { + "name": "calldataload", + "nodeType": "YulIdentifier", + "src": "613:12:17" + }, + "nodeType": "YulFunctionCall", + "src": "613:33:17" + }, + "variableNames": [ + { + "name": "value4", + "nodeType": "YulIdentifier", + "src": "603:6:17" + } + ] + } + ] + }, + "name": "abi_decode_tuple_t_addresst_uint256t_uint256t_uint256t_uint256", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "headStart", + "nodeType": "YulTypedName", + "src": "264:9:17", + "type": "" + }, + { + "name": "dataEnd", + "nodeType": "YulTypedName", + "src": "275:7:17", + "type": "" + } + ], + "returnVariables": [ + { + "name": "value0", + "nodeType": "YulTypedName", + "src": "287:6:17", + "type": "" + }, + { + "name": "value1", + "nodeType": "YulTypedName", + "src": "295:6:17", + "type": "" + }, + { + "name": "value2", + "nodeType": "YulTypedName", + "src": "303:6:17", + "type": "" + }, + { + "name": "value3", + "nodeType": "YulTypedName", + "src": "311:6:17", + "type": "" + }, + { + "name": "value4", + "nodeType": "YulTypedName", + "src": "319:6:17", + "type": "" + } + ], + "src": "192:460:17" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "727:116:17", + "statements": [ + { + "body": { + "nodeType": "YulBlock", + "src": "773:16:17", + "statements": [ + { + "expression": { + "arguments": [ + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "782:1:17", + "type": "", + "value": "0" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "785:1:17", + "type": "", + "value": "0" + } + ], + "functionName": { + "name": "revert", + "nodeType": "YulIdentifier", + "src": "775:6:17" + }, + "nodeType": "YulFunctionCall", + "src": "775:12:17" + }, + "nodeType": "YulExpressionStatement", + "src": "775:12:17" + } + ] + }, + "condition": { + "arguments": [ + { + "arguments": [ + { + "name": "dataEnd", + "nodeType": "YulIdentifier", + "src": "748:7:17" + }, + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "757:9:17" + } + ], + "functionName": { + "name": "sub", + "nodeType": "YulIdentifier", + "src": "744:3:17" + }, + "nodeType": "YulFunctionCall", + "src": "744:23:17" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "769:2:17", + "type": "", + "value": "32" + } + ], + "functionName": { + "name": "slt", + "nodeType": "YulIdentifier", + "src": "740:3:17" + }, + "nodeType": "YulFunctionCall", + "src": "740:32:17" + }, + "nodeType": "YulIf", + "src": "737:52:17" + }, + { + "nodeType": "YulAssignment", + "src": "798:39:17", + "value": { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "827:9:17" + } + ], + "functionName": { + "name": "abi_decode_address", + "nodeType": "YulIdentifier", + "src": "808:18:17" + }, + "nodeType": "YulFunctionCall", + "src": "808:29:17" + }, + "variableNames": [ + { + "name": "value0", + "nodeType": "YulIdentifier", + "src": "798:6:17" + } + ] + } + ] + }, + "name": "abi_decode_tuple_t_address", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "headStart", + "nodeType": "YulTypedName", + "src": "693:9:17", + "type": "" + }, + { + "name": "dataEnd", + "nodeType": "YulTypedName", + "src": "704:7:17", + "type": "" + } + ], + "returnVariables": [ + { + "name": "value0", + "nodeType": "YulTypedName", + "src": "716:6:17", + "type": "" + } + ], + "src": "657:186:17" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "943:92:17", + "statements": [ + { + "nodeType": "YulAssignment", + "src": "953:26:17", + "value": { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "965:9:17" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "976:2:17", + "type": "", + "value": "32" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "961:3:17" + }, + "nodeType": "YulFunctionCall", + "src": "961:18:17" + }, + "variableNames": [ + { + "name": "tail", + "nodeType": "YulIdentifier", + "src": "953:4:17" + } + ] + }, + { + "expression": { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "995:9:17" + }, + { + "arguments": [ + { + "arguments": [ + { + "name": "value0", + "nodeType": "YulIdentifier", + "src": "1020:6:17" + } + ], + "functionName": { + "name": "iszero", + "nodeType": "YulIdentifier", + "src": "1013:6:17" + }, + "nodeType": "YulFunctionCall", + "src": "1013:14:17" + } + ], + "functionName": { + "name": "iszero", + "nodeType": "YulIdentifier", + "src": "1006:6:17" + }, + "nodeType": "YulFunctionCall", + "src": "1006:22:17" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "988:6:17" + }, + "nodeType": "YulFunctionCall", + "src": "988:41:17" + }, + "nodeType": "YulExpressionStatement", + "src": "988:41:17" + } + ] + }, + "name": "abi_encode_tuple_t_bool__to_t_bool__fromStack_reversed", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "headStart", + "nodeType": "YulTypedName", + "src": "912:9:17", + "type": "" + }, + { + "name": "value0", + "nodeType": "YulTypedName", + "src": "923:6:17", + "type": "" + } + ], + "returnVariables": [ + { + "name": "tail", + "nodeType": "YulTypedName", + "src": "934:4:17", + "type": "" + } + ], + "src": "848:187:17" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "1141:102:17", + "statements": [ + { + "nodeType": "YulAssignment", + "src": "1151:26:17", + "value": { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "1163:9:17" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "1174:2:17", + "type": "", + "value": "32" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "1159:3:17" + }, + "nodeType": "YulFunctionCall", + "src": "1159:18:17" + }, + "variableNames": [ + { + "name": "tail", + "nodeType": "YulIdentifier", + "src": "1151:4:17" + } + ] + }, + { + "expression": { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "1193:9:17" + }, + { + "arguments": [ + { + "name": "value0", + "nodeType": "YulIdentifier", + "src": "1208:6:17" + }, + { + "arguments": [ + { + "arguments": [ + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "1224:3:17", + "type": "", + "value": "160" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "1229:1:17", + "type": "", + "value": "1" + } + ], + "functionName": { + "name": "shl", + "nodeType": "YulIdentifier", + "src": "1220:3:17" + }, + "nodeType": "YulFunctionCall", + "src": "1220:11:17" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "1233:1:17", + "type": "", + "value": "1" + } + ], + "functionName": { + "name": "sub", + "nodeType": "YulIdentifier", + "src": "1216:3:17" + }, + "nodeType": "YulFunctionCall", + "src": "1216:19:17" + } + ], + "functionName": { + "name": "and", + "nodeType": "YulIdentifier", + "src": "1204:3:17" + }, + "nodeType": "YulFunctionCall", + "src": "1204:32:17" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "1186:6:17" + }, + "nodeType": "YulFunctionCall", + "src": "1186:51:17" + }, + "nodeType": "YulExpressionStatement", + "src": "1186:51:17" + } + ] + }, + "name": "abi_encode_tuple_t_address__to_t_address__fromStack_reversed", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "headStart", + "nodeType": "YulTypedName", + "src": "1110:9:17", + "type": "" + }, + { + "name": "value0", + "nodeType": "YulTypedName", + "src": "1121:6:17", + "type": "" + } + ], + "returnVariables": [ + { + "name": "tail", + "nodeType": "YulTypedName", + "src": "1132:4:17", + "type": "" + } + ], + "src": "1040:203:17" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "1363:102:17", + "statements": [ + { + "nodeType": "YulAssignment", + "src": "1373:26:17", + "value": { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "1385:9:17" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "1396:2:17", + "type": "", + "value": "32" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "1381:3:17" + }, + "nodeType": "YulFunctionCall", + "src": "1381:18:17" + }, + "variableNames": [ + { + "name": "tail", + "nodeType": "YulIdentifier", + "src": "1373:4:17" + } + ] + }, + { + "expression": { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "1415:9:17" + }, + { + "arguments": [ + { + "name": "value0", + "nodeType": "YulIdentifier", + "src": "1430:6:17" + }, + { + "arguments": [ + { + "arguments": [ + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "1446:3:17", + "type": "", + "value": "160" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "1451:1:17", + "type": "", + "value": "1" + } + ], + "functionName": { + "name": "shl", + "nodeType": "YulIdentifier", + "src": "1442:3:17" + }, + "nodeType": "YulFunctionCall", + "src": "1442:11:17" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "1455:1:17", + "type": "", + "value": "1" + } + ], + "functionName": { + "name": "sub", + "nodeType": "YulIdentifier", + "src": "1438:3:17" + }, + "nodeType": "YulFunctionCall", + "src": "1438:19:17" + } + ], + "functionName": { + "name": "and", + "nodeType": "YulIdentifier", + "src": "1426:3:17" + }, + "nodeType": "YulFunctionCall", + "src": "1426:32:17" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "1408:6:17" + }, + "nodeType": "YulFunctionCall", + "src": "1408:51:17" + }, + "nodeType": "YulExpressionStatement", + "src": "1408:51:17" + } + ] + }, + "name": "abi_encode_tuple_t_contract$_IERC20_$967__to_t_address__fromStack_reversed", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "headStart", + "nodeType": "YulTypedName", + "src": "1332:9:17", + "type": "" + }, + { + "name": "value0", + "nodeType": "YulTypedName", + "src": "1343:6:17", + "type": "" + } + ], + "returnVariables": [ + { + "name": "tail", + "nodeType": "YulTypedName", + "src": "1354:4:17", + "type": "" + } + ], + "src": "1248:217:17" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "1705:310:17", + "statements": [ + { + "nodeType": "YulAssignment", + "src": "1715:27:17", + "value": { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "1727:9:17" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "1738:3:17", + "type": "", + "value": "192" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "1723:3:17" + }, + "nodeType": "YulFunctionCall", + "src": "1723:19:17" + }, + "variableNames": [ + { + "name": "tail", + "nodeType": "YulIdentifier", + "src": "1715:4:17" + } + ] + }, + { + "expression": { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "1758:9:17" + }, + { + "name": "value0", + "nodeType": "YulIdentifier", + "src": "1769:6:17" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "1751:6:17" + }, + "nodeType": "YulFunctionCall", + "src": "1751:25:17" + }, + "nodeType": "YulExpressionStatement", + "src": "1751:25:17" + }, + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "1796:9:17" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "1807:2:17", + "type": "", + "value": "32" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "1792:3:17" + }, + "nodeType": "YulFunctionCall", + "src": "1792:18:17" + }, + { + "name": "value1", + "nodeType": "YulIdentifier", + "src": "1812:6:17" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "1785:6:17" + }, + "nodeType": "YulFunctionCall", + "src": "1785:34:17" + }, + "nodeType": "YulExpressionStatement", + "src": "1785:34:17" + }, + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "1839:9:17" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "1850:2:17", + "type": "", + "value": "64" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "1835:3:17" + }, + "nodeType": "YulFunctionCall", + "src": "1835:18:17" + }, + { + "name": "value2", + "nodeType": "YulIdentifier", + "src": "1855:6:17" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "1828:6:17" + }, + "nodeType": "YulFunctionCall", + "src": "1828:34:17" + }, + "nodeType": "YulExpressionStatement", + "src": "1828:34:17" + }, + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "1882:9:17" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "1893:2:17", + "type": "", + "value": "96" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "1878:3:17" + }, + "nodeType": "YulFunctionCall", + "src": "1878:18:17" + }, + { + "name": "value3", + "nodeType": "YulIdentifier", + "src": "1898:6:17" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "1871:6:17" + }, + "nodeType": "YulFunctionCall", + "src": "1871:34:17" + }, + "nodeType": "YulExpressionStatement", + "src": "1871:34:17" + }, + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "1925:9:17" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "1936:3:17", + "type": "", + "value": "128" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "1921:3:17" + }, + "nodeType": "YulFunctionCall", + "src": "1921:19:17" + }, + { + "name": "value4", + "nodeType": "YulIdentifier", + "src": "1942:6:17" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "1914:6:17" + }, + "nodeType": "YulFunctionCall", + "src": "1914:35:17" + }, + "nodeType": "YulExpressionStatement", + "src": "1914:35:17" + }, + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "1969:9:17" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "1980:3:17", + "type": "", + "value": "160" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "1965:3:17" + }, + "nodeType": "YulFunctionCall", + "src": "1965:19:17" + }, + { + "arguments": [ + { + "arguments": [ + { + "name": "value5", + "nodeType": "YulIdentifier", + "src": "2000:6:17" + } + ], + "functionName": { + "name": "iszero", + "nodeType": "YulIdentifier", + "src": "1993:6:17" + }, + "nodeType": "YulFunctionCall", + "src": "1993:14:17" + } + ], + "functionName": { + "name": "iszero", + "nodeType": "YulIdentifier", + "src": "1986:6:17" + }, + "nodeType": "YulFunctionCall", + "src": "1986:22:17" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "1958:6:17" + }, + "nodeType": "YulFunctionCall", + "src": "1958:51:17" + }, + "nodeType": "YulExpressionStatement", + "src": "1958:51:17" + } + ] + }, + "name": "abi_encode_tuple_t_uint256_t_uint256_t_uint256_t_uint256_t_uint256_t_bool__to_t_uint256_t_uint256_t_uint256_t_uint256_t_uint256_t_bool__fromStack_reversed", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "headStart", + "nodeType": "YulTypedName", + "src": "1634:9:17", + "type": "" + }, + { + "name": "value5", + "nodeType": "YulTypedName", + "src": "1645:6:17", + "type": "" + }, + { + "name": "value4", + "nodeType": "YulTypedName", + "src": "1653:6:17", + "type": "" + }, + { + "name": "value3", + "nodeType": "YulTypedName", + "src": "1661:6:17", + "type": "" + }, + { + "name": "value2", + "nodeType": "YulTypedName", + "src": "1669:6:17", + "type": "" + }, + { + "name": "value1", + "nodeType": "YulTypedName", + "src": "1677:6:17", + "type": "" + }, + { + "name": "value0", + "nodeType": "YulTypedName", + "src": "1685:6:17", + "type": "" + } + ], + "returnVariables": [ + { + "name": "tail", + "nodeType": "YulTypedName", + "src": "1696:4:17", + "type": "" + } + ], + "src": "1470:545:17" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "2121:76:17", + "statements": [ + { + "nodeType": "YulAssignment", + "src": "2131:26:17", + "value": { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "2143:9:17" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "2154:2:17", + "type": "", + "value": "32" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "2139:3:17" + }, + "nodeType": "YulFunctionCall", + "src": "2139:18:17" + }, + "variableNames": [ + { + "name": "tail", + "nodeType": "YulIdentifier", + "src": "2131:4:17" + } + ] + }, + { + "expression": { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "2173:9:17" + }, + { + "name": "value0", + "nodeType": "YulIdentifier", + "src": "2184:6:17" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "2166:6:17" + }, + "nodeType": "YulFunctionCall", + "src": "2166:25:17" + }, + "nodeType": "YulExpressionStatement", + "src": "2166:25:17" + } + ] + }, + "name": "abi_encode_tuple_t_uint256__to_t_uint256__fromStack_reversed", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "headStart", + "nodeType": "YulTypedName", + "src": "2090:9:17", + "type": "" + }, + { + "name": "value0", + "nodeType": "YulTypedName", + "src": "2101:6:17", + "type": "" + } + ], + "returnVariables": [ + { + "name": "tail", + "nodeType": "YulTypedName", + "src": "2112:4:17", + "type": "" + } + ], + "src": "2020:177:17" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "2376:177:17", + "statements": [ + { + "expression": { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "2393:9:17" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "2404:2:17", + "type": "", + "value": "32" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "2386:6:17" + }, + "nodeType": "YulFunctionCall", + "src": "2386:21:17" + }, + "nodeType": "YulExpressionStatement", + "src": "2386:21:17" + }, + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "2427:9:17" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "2438:2:17", + "type": "", + "value": "32" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "2423:3:17" + }, + "nodeType": "YulFunctionCall", + "src": "2423:18:17" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "2443:2:17", + "type": "", + "value": "27" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "2416:6:17" + }, + "nodeType": "YulFunctionCall", + "src": "2416:30:17" + }, + "nodeType": "YulExpressionStatement", + "src": "2416:30:17" + }, + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "2466:9:17" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "2477:2:17", + "type": "", + "value": "64" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "2462:3:17" + }, + "nodeType": "YulFunctionCall", + "src": "2462:18:17" + }, + { + "hexValue": "42656e6566696369617279206e6f742077686974656c6973746564", + "kind": "string", + "nodeType": "YulLiteral", + "src": "2482:29:17", + "type": "", + "value": "Beneficiary not whitelisted" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "2455:6:17" + }, + "nodeType": "YulFunctionCall", + "src": "2455:57:17" + }, + "nodeType": "YulExpressionStatement", + "src": "2455:57:17" + }, + { + "nodeType": "YulAssignment", + "src": "2521:26:17", + "value": { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "2533:9:17" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "2544:2:17", + "type": "", + "value": "96" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "2529:3:17" + }, + "nodeType": "YulFunctionCall", + "src": "2529:18:17" + }, + "variableNames": [ + { + "name": "tail", + "nodeType": "YulIdentifier", + "src": "2521:4:17" + } + ] + } + ] + }, + "name": "abi_encode_tuple_t_stringliteral_33ba6c59384982a33c8d03efd40cd022501542cd14d2a647b97dcbf1ab55c9a8__to_t_string_memory_ptr__fromStack_reversed", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "headStart", + "nodeType": "YulTypedName", + "src": "2353:9:17", + "type": "" + } + ], + "returnVariables": [ + { + "name": "tail", + "nodeType": "YulTypedName", + "src": "2367:4:17", + "type": "" + } + ], + "src": "2202:351:17" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "2732:182:17", + "statements": [ + { + "expression": { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "2749:9:17" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "2760:2:17", + "type": "", + "value": "32" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "2742:6:17" + }, + "nodeType": "YulFunctionCall", + "src": "2742:21:17" + }, + "nodeType": "YulExpressionStatement", + "src": "2742:21:17" + }, + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "2783:9:17" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "2794:2:17", + "type": "", + "value": "32" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "2779:3:17" + }, + "nodeType": "YulFunctionCall", + "src": "2779:18:17" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "2799:2:17", + "type": "", + "value": "32" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "2772:6:17" + }, + "nodeType": "YulFunctionCall", + "src": "2772:30:17" + }, + "nodeType": "YulExpressionStatement", + "src": "2772:30:17" + }, + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "2822:9:17" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "2833:2:17", + "type": "", + "value": "64" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "2818:3:17" + }, + "nodeType": "YulFunctionCall", + "src": "2818:18:17" + }, + { + "hexValue": "53746172742074696d65206d75737420626520696e2074686520667574757265", + "kind": "string", + "nodeType": "YulLiteral", + "src": "2838:34:17", + "type": "", + "value": "Start time must be in the future" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "2811:6:17" + }, + "nodeType": "YulFunctionCall", + "src": "2811:62:17" + }, + "nodeType": "YulExpressionStatement", + "src": "2811:62:17" + }, + { + "nodeType": "YulAssignment", + "src": "2882:26:17", + "value": { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "2894:9:17" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "2905:2:17", + "type": "", + "value": "96" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "2890:3:17" + }, + "nodeType": "YulFunctionCall", + "src": "2890:18:17" + }, + "variableNames": [ + { + "name": "tail", + "nodeType": "YulIdentifier", + "src": "2882:4:17" + } + ] + } + ] + }, + "name": "abi_encode_tuple_t_stringliteral_91f1f2e511bedf319ad6ce391862732cf90c76883618f4f508c8f5e61f705466__to_t_string_memory_ptr__fromStack_reversed", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "headStart", + "nodeType": "YulTypedName", + "src": "2709:9:17", + "type": "" + } + ], + "returnVariables": [ + { + "name": "tail", + "nodeType": "YulTypedName", + "src": "2723:4:17", + "type": "" + } + ], + "src": "2558:356:17" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "3093:227:17", + "statements": [ + { + "expression": { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "3110:9:17" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "3121:2:17", + "type": "", + "value": "32" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "3103:6:17" + }, + "nodeType": "YulFunctionCall", + "src": "3103:21:17" + }, + "nodeType": "YulExpressionStatement", + "src": "3103:21:17" + }, + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "3144:9:17" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "3155:2:17", + "type": "", + "value": "32" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "3140:3:17" + }, + "nodeType": "YulFunctionCall", + "src": "3140:18:17" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "3160:2:17", + "type": "", + "value": "37" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "3133:6:17" + }, + "nodeType": "YulFunctionCall", + "src": "3133:30:17" + }, + "nodeType": "YulExpressionStatement", + "src": "3133:30:17" + }, + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "3183:9:17" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "3194:2:17", + "type": "", + "value": "64" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "3179:3:17" + }, + "nodeType": "YulFunctionCall", + "src": "3179:18:17" + }, + { + "hexValue": "436c696666206475726174696f6e206d75737420626520677265617465722074", + "kind": "string", + "nodeType": "YulLiteral", + "src": "3199:34:17", + "type": "", + "value": "Cliff duration must be greater t" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "3172:6:17" + }, + "nodeType": "YulFunctionCall", + "src": "3172:62:17" + }, + "nodeType": "YulExpressionStatement", + "src": "3172:62:17" + }, + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "3254:9:17" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "3265:2:17", + "type": "", + "value": "96" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "3250:3:17" + }, + "nodeType": "YulFunctionCall", + "src": "3250:18:17" + }, + { + "hexValue": "68616e2030", + "kind": "string", + "nodeType": "YulLiteral", + "src": "3270:7:17", + "type": "", + "value": "han 0" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "3243:6:17" + }, + "nodeType": "YulFunctionCall", + "src": "3243:35:17" + }, + "nodeType": "YulExpressionStatement", + "src": "3243:35:17" + }, + { + "nodeType": "YulAssignment", + "src": "3287:27:17", + "value": { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "3299:9:17" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "3310:3:17", + "type": "", + "value": "128" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "3295:3:17" + }, + "nodeType": "YulFunctionCall", + "src": "3295:19:17" + }, + "variableNames": [ + { + "name": "tail", + "nodeType": "YulIdentifier", + "src": "3287:4:17" + } + ] + } + ] + }, + "name": "abi_encode_tuple_t_stringliteral_839ed8254ffca5ca01218b9b2173f9b1e14f13a19eb201692e63da7b37ccc026__to_t_string_memory_ptr__fromStack_reversed", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "headStart", + "nodeType": "YulTypedName", + "src": "3070:9:17", + "type": "" + } + ], + "returnVariables": [ + { + "name": "tail", + "nodeType": "YulTypedName", + "src": "3084:4:17", + "type": "" + } + ], + "src": "2919:401:17" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "3499:229:17", + "statements": [ + { + "expression": { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "3516:9:17" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "3527:2:17", + "type": "", + "value": "32" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "3509:6:17" + }, + "nodeType": "YulFunctionCall", + "src": "3509:21:17" + }, + "nodeType": "YulExpressionStatement", + "src": "3509:21:17" + }, + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "3550:9:17" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "3561:2:17", + "type": "", + "value": "32" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "3546:3:17" + }, + "nodeType": "YulFunctionCall", + "src": "3546:18:17" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "3566:2:17", + "type": "", + "value": "39" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "3539:6:17" + }, + "nodeType": "YulFunctionCall", + "src": "3539:30:17" + }, + "nodeType": "YulExpressionStatement", + "src": "3539:30:17" + }, + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "3589:9:17" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "3600:2:17", + "type": "", + "value": "64" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "3585:3:17" + }, + "nodeType": "YulFunctionCall", + "src": "3585:18:17" + }, + { + "hexValue": "56657374696e67206475726174696f6e206d7573742062652067726561746572", + "kind": "string", + "nodeType": "YulLiteral", + "src": "3605:34:17", + "type": "", + "value": "Vesting duration must be greater" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "3578:6:17" + }, + "nodeType": "YulFunctionCall", + "src": "3578:62:17" + }, + "nodeType": "YulExpressionStatement", + "src": "3578:62:17" + }, + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "3660:9:17" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "3671:2:17", + "type": "", + "value": "96" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "3656:3:17" + }, + "nodeType": "YulFunctionCall", + "src": "3656:18:17" + }, + { + "hexValue": "207468616e2030", + "kind": "string", + "nodeType": "YulLiteral", + "src": "3676:9:17", + "type": "", + "value": " than 0" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "3649:6:17" + }, + "nodeType": "YulFunctionCall", + "src": "3649:37:17" + }, + "nodeType": "YulExpressionStatement", + "src": "3649:37:17" + }, + { + "nodeType": "YulAssignment", + "src": "3695:27:17", + "value": { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "3707:9:17" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "3718:3:17", + "type": "", + "value": "128" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "3703:3:17" + }, + "nodeType": "YulFunctionCall", + "src": "3703:19:17" + }, + "variableNames": [ + { + "name": "tail", + "nodeType": "YulIdentifier", + "src": "3695:4:17" + } + ] + } + ] + }, + "name": "abi_encode_tuple_t_stringliteral_1017f1b07ba3fa3e0d85c11bf6ba26e6987d24ff7513f1d1b9df5c982d07c93f__to_t_string_memory_ptr__fromStack_reversed", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "headStart", + "nodeType": "YulTypedName", + "src": "3476:9:17", + "type": "" + } + ], + "returnVariables": [ + { + "name": "tail", + "nodeType": "YulTypedName", + "src": "3490:4:17", + "type": "" + } + ], + "src": "3325:403:17" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "3907:179:17", + "statements": [ + { + "expression": { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "3924:9:17" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "3935:2:17", + "type": "", + "value": "32" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "3917:6:17" + }, + "nodeType": "YulFunctionCall", + "src": "3917:21:17" + }, + "nodeType": "YulExpressionStatement", + "src": "3917:21:17" + }, + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "3958:9:17" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "3969:2:17", + "type": "", + "value": "32" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "3954:3:17" + }, + "nodeType": "YulFunctionCall", + "src": "3954:18:17" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "3974:2:17", + "type": "", + "value": "29" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "3947:6:17" + }, + "nodeType": "YulFunctionCall", + "src": "3947:30:17" + }, + "nodeType": "YulExpressionStatement", + "src": "3947:30:17" + }, + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "3997:9:17" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "4008:2:17", + "type": "", + "value": "64" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "3993:3:17" + }, + "nodeType": "YulFunctionCall", + "src": "3993:18:17" + }, + { + "hexValue": "416d6f756e74206d7573742062652067726561746572207468616e2030", + "kind": "string", + "nodeType": "YulLiteral", + "src": "4013:31:17", + "type": "", + "value": "Amount must be greater than 0" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "3986:6:17" + }, + "nodeType": "YulFunctionCall", + "src": "3986:59:17" + }, + "nodeType": "YulExpressionStatement", + "src": "3986:59:17" + }, + { + "nodeType": "YulAssignment", + "src": "4054:26:17", + "value": { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "4066:9:17" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "4077:2:17", + "type": "", + "value": "96" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "4062:3:17" + }, + "nodeType": "YulFunctionCall", + "src": "4062:18:17" + }, + "variableNames": [ + { + "name": "tail", + "nodeType": "YulIdentifier", + "src": "4054:4:17" + } + ] + } + ] + }, + "name": "abi_encode_tuple_t_stringliteral_3e76f273c719bb7d23db533a2dc9a822ae7d899fcd42eb8910272e24764e8296__to_t_string_memory_ptr__fromStack_reversed", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "headStart", + "nodeType": "YulTypedName", + "src": "3884:9:17", + "type": "" + } + ], + "returnVariables": [ + { + "name": "tail", + "nodeType": "YulTypedName", + "src": "3898:4:17", + "type": "" + } + ], + "src": "3733:353:17" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "4265:242:17", + "statements": [ + { + "expression": { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "4282:9:17" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "4293:2:17", + "type": "", + "value": "32" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "4275:6:17" + }, + "nodeType": "YulFunctionCall", + "src": "4275:21:17" + }, + "nodeType": "YulExpressionStatement", + "src": "4275:21:17" + }, + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "4316:9:17" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "4327:2:17", + "type": "", + "value": "32" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "4312:3:17" + }, + "nodeType": "YulFunctionCall", + "src": "4312:18:17" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "4332:2:17", + "type": "", + "value": "52" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "4305:6:17" + }, + "nodeType": "YulFunctionCall", + "src": "4305:30:17" + }, + "nodeType": "YulExpressionStatement", + "src": "4305:30:17" + }, + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "4355:9:17" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "4366:2:17", + "type": "", + "value": "64" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "4351:3:17" + }, + "nodeType": "YulFunctionCall", + "src": "4351:18:17" + }, + { + "hexValue": "56657374696e67206475726174696f6e206d7573742062652067726561746572", + "kind": "string", + "nodeType": "YulLiteral", + "src": "4371:34:17", + "type": "", + "value": "Vesting duration must be greater" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "4344:6:17" + }, + "nodeType": "YulFunctionCall", + "src": "4344:62:17" + }, + "nodeType": "YulExpressionStatement", + "src": "4344:62:17" + }, + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "4426:9:17" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "4437:2:17", + "type": "", + "value": "96" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "4422:3:17" + }, + "nodeType": "YulFunctionCall", + "src": "4422:18:17" + }, + { + "hexValue": "207468616e20636c696666206475726174696f6e", + "kind": "string", + "nodeType": "YulLiteral", + "src": "4442:22:17", + "type": "", + "value": " than cliff duration" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "4415:6:17" + }, + "nodeType": "YulFunctionCall", + "src": "4415:50:17" + }, + "nodeType": "YulExpressionStatement", + "src": "4415:50:17" + }, + { + "nodeType": "YulAssignment", + "src": "4474:27:17", + "value": { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "4486:9:17" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "4497:3:17", + "type": "", + "value": "128" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "4482:3:17" + }, + "nodeType": "YulFunctionCall", + "src": "4482:19:17" + }, + "variableNames": [ + { + "name": "tail", + "nodeType": "YulIdentifier", + "src": "4474:4:17" + } + ] + } + ] + }, + "name": "abi_encode_tuple_t_stringliteral_7bccacb3ef1b76a239d24792d8e953985aa4e1666ef83909e9156bbd66ed8fe3__to_t_string_memory_ptr__fromStack_reversed", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "headStart", + "nodeType": "YulTypedName", + "src": "4242:9:17", + "type": "" + } + ], + "returnVariables": [ + { + "name": "tail", + "nodeType": "YulTypedName", + "src": "4256:4:17", + "type": "" + } + ], + "src": "4091:416:17" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "4686:174:17", + "statements": [ + { + "expression": { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "4703:9:17" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "4714:2:17", + "type": "", + "value": "32" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "4696:6:17" + }, + "nodeType": "YulFunctionCall", + "src": "4696:21:17" + }, + "nodeType": "YulExpressionStatement", + "src": "4696:21:17" + }, + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "4737:9:17" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "4748:2:17", + "type": "", + "value": "32" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "4733:3:17" + }, + "nodeType": "YulFunctionCall", + "src": "4733:18:17" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "4753:2:17", + "type": "", + "value": "24" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "4726:6:17" + }, + "nodeType": "YulFunctionCall", + "src": "4726:30:17" + }, + "nodeType": "YulExpressionStatement", + "src": "4726:30:17" + }, + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "4776:9:17" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "4787:2:17", + "type": "", + "value": "64" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "4772:3:17" + }, + "nodeType": "YulFunctionCall", + "src": "4772:18:17" + }, + { + "hexValue": "56657374696e67207363686564756c65207265766f6b6564", + "kind": "string", + "nodeType": "YulLiteral", + "src": "4792:26:17", + "type": "", + "value": "Vesting schedule revoked" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "4765:6:17" + }, + "nodeType": "YulFunctionCall", + "src": "4765:54:17" + }, + "nodeType": "YulExpressionStatement", + "src": "4765:54:17" + }, + { + "nodeType": "YulAssignment", + "src": "4828:26:17", + "value": { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "4840:9:17" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "4851:2:17", + "type": "", + "value": "96" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "4836:3:17" + }, + "nodeType": "YulFunctionCall", + "src": "4836:18:17" + }, + "variableNames": [ + { + "name": "tail", + "nodeType": "YulIdentifier", + "src": "4828:4:17" + } + ] + } + ] + }, + "name": "abi_encode_tuple_t_stringliteral_b8b87812c352fc8e39cdfe1757bfbcecb484013d66c0da14d0ba3b167d668ffe__to_t_string_memory_ptr__fromStack_reversed", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "headStart", + "nodeType": "YulTypedName", + "src": "4663:9:17", + "type": "" + } + ], + "returnVariables": [ + { + "name": "tail", + "nodeType": "YulTypedName", + "src": "4677:4:17", + "type": "" + } + ], + "src": "4512:348:17" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "4897:95:17", + "statements": [ + { + "expression": { + "arguments": [ + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "4914:1:17", + "type": "", + "value": "0" + }, + { + "arguments": [ + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "4921:3:17", + "type": "", + "value": "224" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "4926:10:17", + "type": "", + "value": "0x4e487b71" + } + ], + "functionName": { + "name": "shl", + "nodeType": "YulIdentifier", + "src": "4917:3:17" + }, + "nodeType": "YulFunctionCall", + "src": "4917:20:17" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "4907:6:17" + }, + "nodeType": "YulFunctionCall", + "src": "4907:31:17" + }, + "nodeType": "YulExpressionStatement", + "src": "4907:31:17" + }, + { + "expression": { + "arguments": [ + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "4954:1:17", + "type": "", + "value": "4" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "4957:4:17", + "type": "", + "value": "0x11" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "4947:6:17" + }, + "nodeType": "YulFunctionCall", + "src": "4947:15:17" + }, + "nodeType": "YulExpressionStatement", + "src": "4947:15:17" + }, + { + "expression": { + "arguments": [ + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "4978:1:17", + "type": "", + "value": "0" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "4981:4:17", + "type": "", + "value": "0x24" + } + ], + "functionName": { + "name": "revert", + "nodeType": "YulIdentifier", + "src": "4971:6:17" + }, + "nodeType": "YulFunctionCall", + "src": "4971:15:17" + }, + "nodeType": "YulExpressionStatement", + "src": "4971:15:17" + } + ] + }, + "name": "panic_error_0x11", + "nodeType": "YulFunctionDefinition", + "src": "4865:127:17" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "5046:79:17", + "statements": [ + { + "nodeType": "YulAssignment", + "src": "5056:17:17", + "value": { + "arguments": [ + { + "name": "x", + "nodeType": "YulIdentifier", + "src": "5068:1:17" + }, + { + "name": "y", + "nodeType": "YulIdentifier", + "src": "5071:1:17" + } + ], + "functionName": { + "name": "sub", + "nodeType": "YulIdentifier", + "src": "5064:3:17" + }, + "nodeType": "YulFunctionCall", + "src": "5064:9:17" + }, + "variableNames": [ + { + "name": "diff", + "nodeType": "YulIdentifier", + "src": "5056:4:17" + } + ] + }, + { + "body": { + "nodeType": "YulBlock", + "src": "5097:22:17", + "statements": [ + { + "expression": { + "arguments": [], + "functionName": { + "name": "panic_error_0x11", + "nodeType": "YulIdentifier", + "src": "5099:16:17" + }, + "nodeType": "YulFunctionCall", + "src": "5099:18:17" + }, + "nodeType": "YulExpressionStatement", + "src": "5099:18:17" + } + ] + }, + "condition": { + "arguments": [ + { + "name": "diff", + "nodeType": "YulIdentifier", + "src": "5088:4:17" + }, + { + "name": "x", + "nodeType": "YulIdentifier", + "src": "5094:1:17" + } + ], + "functionName": { + "name": "gt", + "nodeType": "YulIdentifier", + "src": "5085:2:17" + }, + "nodeType": "YulFunctionCall", + "src": "5085:11:17" + }, + "nodeType": "YulIf", + "src": "5082:37:17" + } + ] + }, + "name": "checked_sub_t_uint256", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "x", + "nodeType": "YulTypedName", + "src": "5028:1:17", + "type": "" + }, + { + "name": "y", + "nodeType": "YulTypedName", + "src": "5031:1:17", + "type": "" + } + ], + "returnVariables": [ + { + "name": "diff", + "nodeType": "YulTypedName", + "src": "5037:4:17", + "type": "" + } + ], + "src": "4997:128:17" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "5304:165:17", + "statements": [ + { + "expression": { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "5321:9:17" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "5332:2:17", + "type": "", + "value": "32" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "5314:6:17" + }, + "nodeType": "YulFunctionCall", + "src": "5314:21:17" + }, + "nodeType": "YulExpressionStatement", + "src": "5314:21:17" + }, + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "5355:9:17" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "5366:2:17", + "type": "", + "value": "32" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "5351:3:17" + }, + "nodeType": "YulFunctionCall", + "src": "5351:18:17" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "5371:2:17", + "type": "", + "value": "15" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "5344:6:17" + }, + "nodeType": "YulFunctionCall", + "src": "5344:30:17" + }, + "nodeType": "YulExpressionStatement", + "src": "5344:30:17" + }, + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "5394:9:17" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "5405:2:17", + "type": "", + "value": "64" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "5390:3:17" + }, + "nodeType": "YulFunctionCall", + "src": "5390:18:17" + }, + { + "hexValue": "496e76616c69642061646472657373", + "kind": "string", + "nodeType": "YulLiteral", + "src": "5410:17:17", + "type": "", + "value": "Invalid address" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "5383:6:17" + }, + "nodeType": "YulFunctionCall", + "src": "5383:45:17" + }, + "nodeType": "YulExpressionStatement", + "src": "5383:45:17" + }, + { + "nodeType": "YulAssignment", + "src": "5437:26:17", + "value": { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "5449:9:17" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "5460:2:17", + "type": "", + "value": "96" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "5445:3:17" + }, + "nodeType": "YulFunctionCall", + "src": "5445:18:17" + }, + "variableNames": [ + { + "name": "tail", + "nodeType": "YulIdentifier", + "src": "5437:4:17" + } + ] + } + ] + }, + "name": "abi_encode_tuple_t_stringliteral_1462473b7a4b33d32b109b815fd2324d00c9e5839b707ecf16d0ab5744f99226__to_t_string_memory_ptr__fromStack_reversed", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "headStart", + "nodeType": "YulTypedName", + "src": "5281:9:17", + "type": "" + } + ], + "returnVariables": [ + { + "name": "tail", + "nodeType": "YulTypedName", + "src": "5295:4:17", + "type": "" + } + ], + "src": "5130:339:17" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "5522:77:17", + "statements": [ + { + "nodeType": "YulAssignment", + "src": "5532:16:17", + "value": { + "arguments": [ + { + "name": "x", + "nodeType": "YulIdentifier", + "src": "5543:1:17" + }, + { + "name": "y", + "nodeType": "YulIdentifier", + "src": "5546:1:17" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "5539:3:17" + }, + "nodeType": "YulFunctionCall", + "src": "5539:9:17" + }, + "variableNames": [ + { + "name": "sum", + "nodeType": "YulIdentifier", + "src": "5532:3:17" + } + ] + }, + { + "body": { + "nodeType": "YulBlock", + "src": "5571:22:17", + "statements": [ + { + "expression": { + "arguments": [], + "functionName": { + "name": "panic_error_0x11", + "nodeType": "YulIdentifier", + "src": "5573:16:17" + }, + "nodeType": "YulFunctionCall", + "src": "5573:18:17" + }, + "nodeType": "YulExpressionStatement", + "src": "5573:18:17" + } + ] + }, + "condition": { + "arguments": [ + { + "name": "x", + "nodeType": "YulIdentifier", + "src": "5563:1:17" + }, + { + "name": "sum", + "nodeType": "YulIdentifier", + "src": "5566:3:17" + } + ], + "functionName": { + "name": "gt", + "nodeType": "YulIdentifier", + "src": "5560:2:17" + }, + "nodeType": "YulFunctionCall", + "src": "5560:10:17" + }, + "nodeType": "YulIf", + "src": "5557:36:17" + } + ] + }, + "name": "checked_add_t_uint256", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "x", + "nodeType": "YulTypedName", + "src": "5505:1:17", + "type": "" + }, + { + "name": "y", + "nodeType": "YulTypedName", + "src": "5508:1:17", + "type": "" + } + ], + "returnVariables": [ + { + "name": "sum", + "nodeType": "YulTypedName", + "src": "5514:3:17", + "type": "" + } + ], + "src": "5474:125:17" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "5778:168:17", + "statements": [ + { + "expression": { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "5795:9:17" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "5806:2:17", + "type": "", + "value": "32" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "5788:6:17" + }, + "nodeType": "YulFunctionCall", + "src": "5788:21:17" + }, + "nodeType": "YulExpressionStatement", + "src": "5788:21:17" + }, + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "5829:9:17" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "5840:2:17", + "type": "", + "value": "32" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "5825:3:17" + }, + "nodeType": "YulFunctionCall", + "src": "5825:18:17" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "5845:2:17", + "type": "", + "value": "18" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "5818:6:17" + }, + "nodeType": "YulFunctionCall", + "src": "5818:30:17" + }, + "nodeType": "YulExpressionStatement", + "src": "5818:30:17" + }, + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "5868:9:17" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "5879:2:17", + "type": "", + "value": "64" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "5864:3:17" + }, + "nodeType": "YulFunctionCall", + "src": "5864:18:17" + }, + { + "hexValue": "4e6f20746f6b656e7320746f20636c61696d", + "kind": "string", + "nodeType": "YulLiteral", + "src": "5884:20:17", + "type": "", + "value": "No tokens to claim" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "5857:6:17" + }, + "nodeType": "YulFunctionCall", + "src": "5857:48:17" + }, + "nodeType": "YulExpressionStatement", + "src": "5857:48:17" + }, + { + "nodeType": "YulAssignment", + "src": "5914:26:17", + "value": { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "5926:9:17" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "5937:2:17", + "type": "", + "value": "96" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "5922:3:17" + }, + "nodeType": "YulFunctionCall", + "src": "5922:18:17" + }, + "variableNames": [ + { + "name": "tail", + "nodeType": "YulIdentifier", + "src": "5914:4:17" + } + ] + } + ] + }, + "name": "abi_encode_tuple_t_stringliteral_0d5449e713a47f03a14de06feb7e7374931b31bbe74b9f8d4277d4797f0eb90e__to_t_string_memory_ptr__fromStack_reversed", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "headStart", + "nodeType": "YulTypedName", + "src": "5755:9:17", + "type": "" + } + ], + "returnVariables": [ + { + "name": "tail", + "nodeType": "YulTypedName", + "src": "5769:4:17", + "type": "" + } + ], + "src": "5604:342:17" }, { "body": { "nodeType": "YulBlock", - "src": "95:209:10", + "src": "6125:224:17", "statements": [ { - "body": { - "nodeType": "YulBlock", - "src": "141:16:10", - "statements": [ + "expression": { + "arguments": [ { - "expression": { - "arguments": [ - { - "kind": "number", - "nodeType": "YulLiteral", - "src": "150:1:10", - "type": "", - "value": "0" - }, - { - "kind": "number", - "nodeType": "YulLiteral", - "src": "153:1:10", - "type": "", - "value": "0" - } - ], - "functionName": { - "name": "revert", + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "6142:9:17" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "6153:2:17", + "type": "", + "value": "32" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "6135:6:17" + }, + "nodeType": "YulFunctionCall", + "src": "6135:21:17" + }, + "nodeType": "YulExpressionStatement", + "src": "6135:21:17" + }, + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "name": "headStart", "nodeType": "YulIdentifier", - "src": "143:6:10" + "src": "6176:9:17" }, - "nodeType": "YulFunctionCall", - "src": "143:12:10" + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "6187:2:17", + "type": "", + "value": "32" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "6172:3:17" }, - "nodeType": "YulExpressionStatement", - "src": "143:12:10" + "nodeType": "YulFunctionCall", + "src": "6172:18:17" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "6192:2:17", + "type": "", + "value": "34" } - ] + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "6165:6:17" + }, + "nodeType": "YulFunctionCall", + "src": "6165:30:17" }, - "condition": { + "nodeType": "YulExpressionStatement", + "src": "6165:30:17" + }, + { + "expression": { "arguments": [ { "arguments": [ { - "name": "dataEnd", + "name": "headStart", "nodeType": "YulIdentifier", - "src": "116:7:10" + "src": "6215:9:17" }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "6226:2:17", + "type": "", + "value": "64" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "6211:3:17" + }, + "nodeType": "YulFunctionCall", + "src": "6211:18:17" + }, + { + "hexValue": "546f74616c20616d6f756e74206d757374206265206c6172676572207468616e", + "kind": "string", + "nodeType": "YulLiteral", + "src": "6231:34:17", + "type": "", + "value": "Total amount must be larger than" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "6204:6:17" + }, + "nodeType": "YulFunctionCall", + "src": "6204:62:17" + }, + "nodeType": "YulExpressionStatement", + "src": "6204:62:17" + }, + { + "expression": { + "arguments": [ + { + "arguments": [ { "name": "headStart", "nodeType": "YulIdentifier", - "src": "125:9:10" + "src": "6286:9:17" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "6297:2:17", + "type": "", + "value": "96" } ], "functionName": { - "name": "sub", + "name": "add", "nodeType": "YulIdentifier", - "src": "112:3:10" + "src": "6282:3:17" }, "nodeType": "YulFunctionCall", - "src": "112:23:10" + "src": "6282:18:17" + }, + { + "hexValue": "2030", + "kind": "string", + "nodeType": "YulLiteral", + "src": "6302:4:17", + "type": "", + "value": " 0" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "6275:6:17" + }, + "nodeType": "YulFunctionCall", + "src": "6275:32:17" + }, + "nodeType": "YulExpressionStatement", + "src": "6275:32:17" + }, + { + "nodeType": "YulAssignment", + "src": "6316:27:17", + "value": { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "6328:9:17" }, { "kind": "number", "nodeType": "YulLiteral", - "src": "137:2:10", + "src": "6339:3:17", "type": "", - "value": "32" + "value": "128" } ], "functionName": { - "name": "slt", + "name": "add", "nodeType": "YulIdentifier", - "src": "108:3:10" + "src": "6324:3:17" }, "nodeType": "YulFunctionCall", - "src": "108:32:10" + "src": "6324:19:17" }, - "nodeType": "YulIf", - "src": "105:52:10" - }, + "variableNames": [ + { + "name": "tail", + "nodeType": "YulIdentifier", + "src": "6316:4:17" + } + ] + } + ] + }, + "name": "abi_encode_tuple_t_stringliteral_2d980113b746b646b1f1c170ff650a967a1fe1a7065543628c00dcab2441d666__to_t_string_memory_ptr__fromStack_reversed", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "headStart", + "nodeType": "YulTypedName", + "src": "6102:9:17", + "type": "" + } + ], + "returnVariables": [ + { + "name": "tail", + "nodeType": "YulTypedName", + "src": "6116:4:17", + "type": "" + } + ], + "src": "5951:398:17" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "6406:116:17", + "statements": [ { - "nodeType": "YulVariableDeclaration", - "src": "166:29:10", + "nodeType": "YulAssignment", + "src": "6416:20:17", "value": { "arguments": [ { - "name": "headStart", + "name": "x", + "nodeType": "YulIdentifier", + "src": "6431:1:17" + }, + { + "name": "y", "nodeType": "YulIdentifier", - "src": "185:9:10" + "src": "6434:1:17" } ], "functionName": { - "name": "mload", + "name": "mul", "nodeType": "YulIdentifier", - "src": "179:5:10" + "src": "6427:3:17" }, "nodeType": "YulFunctionCall", - "src": "179:16:10" + "src": "6427:9:17" }, - "variables": [ + "variableNames": [ { - "name": "value", - "nodeType": "YulTypedName", - "src": "170:5:10", - "type": "" + "name": "product", + "nodeType": "YulIdentifier", + "src": "6416:7:17" } ] }, { "body": { "nodeType": "YulBlock", - "src": "258:16:10", + "src": "6494:22:17", "statements": [ { "expression": { - "arguments": [ - { - "kind": "number", - "nodeType": "YulLiteral", - "src": "267:1:10", - "type": "", - "value": "0" - }, - { - "kind": "number", - "nodeType": "YulLiteral", - "src": "270:1:10", - "type": "", - "value": "0" - } - ], + "arguments": [], "functionName": { - "name": "revert", + "name": "panic_error_0x11", "nodeType": "YulIdentifier", - "src": "260:6:10" + "src": "6496:16:17" }, "nodeType": "YulFunctionCall", - "src": "260:12:10" + "src": "6496:18:17" }, "nodeType": "YulExpressionStatement", - "src": "260:12:10" + "src": "6496:18:17" } ] }, @@ -29042,170 +37892,394 @@ { "arguments": [ { - "name": "value", - "nodeType": "YulIdentifier", - "src": "217:5:10" + "arguments": [ + { + "name": "x", + "nodeType": "YulIdentifier", + "src": "6465:1:17" + } + ], + "functionName": { + "name": "iszero", + "nodeType": "YulIdentifier", + "src": "6458:6:17" + }, + "nodeType": "YulFunctionCall", + "src": "6458:9:17" }, { "arguments": [ { - "name": "value", + "name": "y", "nodeType": "YulIdentifier", - "src": "228:5:10" + "src": "6472:1:17" }, { "arguments": [ { - "arguments": [ - { - "kind": "number", - "nodeType": "YulLiteral", - "src": "243:3:10", - "type": "", - "value": "160" - }, - { - "kind": "number", - "nodeType": "YulLiteral", - "src": "248:1:10", - "type": "", - "value": "1" - } - ], - "functionName": { - "name": "shl", - "nodeType": "YulIdentifier", - "src": "239:3:10" - }, - "nodeType": "YulFunctionCall", - "src": "239:11:10" + "name": "product", + "nodeType": "YulIdentifier", + "src": "6479:7:17" }, { - "kind": "number", - "nodeType": "YulLiteral", - "src": "252:1:10", - "type": "", - "value": "1" + "name": "x", + "nodeType": "YulIdentifier", + "src": "6488:1:17" } ], "functionName": { - "name": "sub", + "name": "div", "nodeType": "YulIdentifier", - "src": "235:3:10" + "src": "6475:3:17" }, "nodeType": "YulFunctionCall", - "src": "235:19:10" + "src": "6475:15:17" } ], "functionName": { - "name": "and", + "name": "eq", "nodeType": "YulIdentifier", - "src": "224:3:10" + "src": "6469:2:17" }, "nodeType": "YulFunctionCall", - "src": "224:31:10" + "src": "6469:22:17" } ], "functionName": { - "name": "eq", + "name": "or", "nodeType": "YulIdentifier", - "src": "214:2:10" + "src": "6455:2:17" }, "nodeType": "YulFunctionCall", - "src": "214:42:10" + "src": "6455:37:17" + } + ], + "functionName": { + "name": "iszero", + "nodeType": "YulIdentifier", + "src": "6448:6:17" + }, + "nodeType": "YulFunctionCall", + "src": "6448:45:17" + }, + "nodeType": "YulIf", + "src": "6445:71:17" + } + ] + }, + "name": "checked_mul_t_uint256", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "x", + "nodeType": "YulTypedName", + "src": "6385:1:17", + "type": "" + }, + { + "name": "y", + "nodeType": "YulTypedName", + "src": "6388:1:17", + "type": "" + } + ], + "returnVariables": [ + { + "name": "product", + "nodeType": "YulTypedName", + "src": "6394:7:17", + "type": "" + } + ], + "src": "6354:168:17" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "6573:171:17", + "statements": [ + { + "body": { + "nodeType": "YulBlock", + "src": "6604:111:17", + "statements": [ + { + "expression": { + "arguments": [ + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "6625:1:17", + "type": "", + "value": "0" + }, + { + "arguments": [ + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "6632:3:17", + "type": "", + "value": "224" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "6637:10:17", + "type": "", + "value": "0x4e487b71" + } + ], + "functionName": { + "name": "shl", + "nodeType": "YulIdentifier", + "src": "6628:3:17" + }, + "nodeType": "YulFunctionCall", + "src": "6628:20:17" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "6618:6:17" + }, + "nodeType": "YulFunctionCall", + "src": "6618:31:17" + }, + "nodeType": "YulExpressionStatement", + "src": "6618:31:17" + }, + { + "expression": { + "arguments": [ + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "6669:1:17", + "type": "", + "value": "4" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "6672:4:17", + "type": "", + "value": "0x12" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "6662:6:17" + }, + "nodeType": "YulFunctionCall", + "src": "6662:15:17" + }, + "nodeType": "YulExpressionStatement", + "src": "6662:15:17" + }, + { + "expression": { + "arguments": [ + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "6697:1:17", + "type": "", + "value": "0" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "6700:4:17", + "type": "", + "value": "0x24" + } + ], + "functionName": { + "name": "revert", + "nodeType": "YulIdentifier", + "src": "6690:6:17" + }, + "nodeType": "YulFunctionCall", + "src": "6690:15:17" + }, + "nodeType": "YulExpressionStatement", + "src": "6690:15:17" + } + ] + }, + "condition": { + "arguments": [ + { + "name": "y", + "nodeType": "YulIdentifier", + "src": "6593:1:17" } ], "functionName": { "name": "iszero", "nodeType": "YulIdentifier", - "src": "207:6:10" + "src": "6586:6:17" }, "nodeType": "YulFunctionCall", - "src": "207:50:10" + "src": "6586:9:17" }, "nodeType": "YulIf", - "src": "204:70:10" + "src": "6583:132:17" }, { "nodeType": "YulAssignment", - "src": "283:15:10", + "src": "6724:14:17", "value": { - "name": "value", - "nodeType": "YulIdentifier", - "src": "293:5:10" + "arguments": [ + { + "name": "x", + "nodeType": "YulIdentifier", + "src": "6733:1:17" + }, + { + "name": "y", + "nodeType": "YulIdentifier", + "src": "6736:1:17" + } + ], + "functionName": { + "name": "div", + "nodeType": "YulIdentifier", + "src": "6729:3:17" + }, + "nodeType": "YulFunctionCall", + "src": "6729:9:17" }, "variableNames": [ { - "name": "value0", + "name": "r", "nodeType": "YulIdentifier", - "src": "283:6:10" + "src": "6724:1:17" } ] } ] }, - "name": "abi_decode_tuple_t_address_fromMemory", + "name": "checked_div_t_uint256", "nodeType": "YulFunctionDefinition", "parameters": [ { - "name": "headStart", + "name": "x", "nodeType": "YulTypedName", - "src": "61:9:10", + "src": "6558:1:17", "type": "" }, { - "name": "dataEnd", + "name": "y", "nodeType": "YulTypedName", - "src": "72:7:10", + "src": "6561:1:17", "type": "" } ], "returnVariables": [ { - "name": "value0", + "name": "r", "nodeType": "YulTypedName", - "src": "84:6:10", + "src": "6567:1:17", "type": "" } ], - "src": "14:290:10" + "src": "6527:217:17" }, { "body": { "nodeType": "YulBlock", - "src": "410:102:10", + "src": "6906:218:17", "statements": [ { "nodeType": "YulAssignment", - "src": "420:26:10", + "src": "6916:26:17", "value": { "arguments": [ { "name": "headStart", "nodeType": "YulIdentifier", - "src": "432:9:10" + "src": "6928:9:17" }, { "kind": "number", "nodeType": "YulLiteral", - "src": "443:2:10", + "src": "6939:2:17", "type": "", - "value": "32" + "value": "96" } ], "functionName": { "name": "add", "nodeType": "YulIdentifier", - "src": "428:3:10" + "src": "6924:3:17" }, "nodeType": "YulFunctionCall", - "src": "428:18:10" + "src": "6924:18:17" }, "variableNames": [ { "name": "tail", "nodeType": "YulIdentifier", - "src": "420:4:10" + "src": "6916:4:17" + } + ] + }, + { + "nodeType": "YulVariableDeclaration", + "src": "6951:29:17", + "value": { + "arguments": [ + { + "arguments": [ + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "6969:3:17", + "type": "", + "value": "160" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "6974:1:17", + "type": "", + "value": "1" + } + ], + "functionName": { + "name": "shl", + "nodeType": "YulIdentifier", + "src": "6965:3:17" + }, + "nodeType": "YulFunctionCall", + "src": "6965:11:17" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "6978:1:17", + "type": "", + "value": "1" + } + ], + "functionName": { + "name": "sub", + "nodeType": "YulIdentifier", + "src": "6961:3:17" + }, + "nodeType": "YulFunctionCall", + "src": "6961:19:17" + }, + "variables": [ + { + "name": "_1", + "nodeType": "YulTypedName", + "src": "6955:2:17", + "type": "" } ] }, @@ -29215,94 +38289,170 @@ { "name": "headStart", "nodeType": "YulIdentifier", - "src": "462:9:10" + "src": "6996:9:17" }, { "arguments": [ { "name": "value0", "nodeType": "YulIdentifier", - "src": "477:6:10" + "src": "7011:6:17" }, { - "arguments": [ - { - "arguments": [ - { - "kind": "number", - "nodeType": "YulLiteral", - "src": "493:3:10", - "type": "", - "value": "160" - }, - { - "kind": "number", - "nodeType": "YulLiteral", - "src": "498:1:10", - "type": "", - "value": "1" - } - ], - "functionName": { - "name": "shl", - "nodeType": "YulIdentifier", - "src": "489:3:10" - }, - "nodeType": "YulFunctionCall", - "src": "489:11:10" - }, - { - "kind": "number", - "nodeType": "YulLiteral", - "src": "502:1:10", - "type": "", - "value": "1" - } - ], - "functionName": { - "name": "sub", - "nodeType": "YulIdentifier", - "src": "485:3:10" - }, - "nodeType": "YulFunctionCall", - "src": "485:19:10" + "name": "_1", + "nodeType": "YulIdentifier", + "src": "7019:2:17" + } + ], + "functionName": { + "name": "and", + "nodeType": "YulIdentifier", + "src": "7007:3:17" + }, + "nodeType": "YulFunctionCall", + "src": "7007:15:17" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "6989:6:17" + }, + "nodeType": "YulFunctionCall", + "src": "6989:34:17" + }, + "nodeType": "YulExpressionStatement", + "src": "6989:34:17" + }, + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "7043:9:17" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "7054:2:17", + "type": "", + "value": "32" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "7039:3:17" + }, + "nodeType": "YulFunctionCall", + "src": "7039:18:17" + }, + { + "arguments": [ + { + "name": "value1", + "nodeType": "YulIdentifier", + "src": "7063:6:17" + }, + { + "name": "_1", + "nodeType": "YulIdentifier", + "src": "7071:2:17" } ], "functionName": { "name": "and", "nodeType": "YulIdentifier", - "src": "473:3:10" + "src": "7059:3:17" + }, + "nodeType": "YulFunctionCall", + "src": "7059:15:17" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "7032:6:17" + }, + "nodeType": "YulFunctionCall", + "src": "7032:43:17" + }, + "nodeType": "YulExpressionStatement", + "src": "7032:43:17" + }, + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "7095:9:17" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "7106:2:17", + "type": "", + "value": "64" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "7091:3:17" }, "nodeType": "YulFunctionCall", - "src": "473:32:10" + "src": "7091:18:17" + }, + { + "name": "value2", + "nodeType": "YulIdentifier", + "src": "7111:6:17" } ], "functionName": { "name": "mstore", "nodeType": "YulIdentifier", - "src": "455:6:10" + "src": "7084:6:17" }, "nodeType": "YulFunctionCall", - "src": "455:51:10" + "src": "7084:34:17" }, "nodeType": "YulExpressionStatement", - "src": "455:51:10" + "src": "7084:34:17" } ] }, - "name": "abi_encode_tuple_t_address__to_t_address__fromStack_reversed", + "name": "abi_encode_tuple_t_address_t_address_t_uint256__to_t_address_t_address_t_uint256__fromStack_reversed", "nodeType": "YulFunctionDefinition", "parameters": [ { "name": "headStart", "nodeType": "YulTypedName", - "src": "379:9:10", + "src": "6859:9:17", + "type": "" + }, + { + "name": "value2", + "nodeType": "YulTypedName", + "src": "6870:6:17", + "type": "" + }, + { + "name": "value1", + "nodeType": "YulTypedName", + "src": "6878:6:17", "type": "" }, { "name": "value0", "nodeType": "YulTypedName", - "src": "390:6:10", + "src": "6886:6:17", "type": "" } ], @@ -29310,88 +38460,129 @@ { "name": "tail", "nodeType": "YulTypedName", - "src": "401:4:10", + "src": "6897:4:17", "type": "" } ], - "src": "309:203:10" + "src": "6749:375:17" }, { "body": { "nodeType": "YulBlock", - "src": "691:171:10", + "src": "7258:145:17", "statements": [ { - "expression": { + "nodeType": "YulAssignment", + "src": "7268:26:17", + "value": { "arguments": [ { "name": "headStart", "nodeType": "YulIdentifier", - "src": "708:9:10" + "src": "7280:9:17" }, { "kind": "number", "nodeType": "YulLiteral", - "src": "719:2:10", + "src": "7291:2:17", "type": "", - "value": "32" + "value": "64" } ], "functionName": { - "name": "mstore", + "name": "add", "nodeType": "YulIdentifier", - "src": "701:6:10" + "src": "7276:3:17" }, "nodeType": "YulFunctionCall", - "src": "701:21:10" + "src": "7276:18:17" }, - "nodeType": "YulExpressionStatement", - "src": "701:21:10" + "variableNames": [ + { + "name": "tail", + "nodeType": "YulIdentifier", + "src": "7268:4:17" + } + ] }, { "expression": { "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "7310:9:17" + }, { "arguments": [ { - "name": "headStart", + "name": "value0", "nodeType": "YulIdentifier", - "src": "742:9:10" + "src": "7325:6:17" }, { - "kind": "number", - "nodeType": "YulLiteral", - "src": "753:2:10", - "type": "", - "value": "32" + "arguments": [ + { + "arguments": [ + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "7341:3:17", + "type": "", + "value": "160" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "7346:1:17", + "type": "", + "value": "1" + } + ], + "functionName": { + "name": "shl", + "nodeType": "YulIdentifier", + "src": "7337:3:17" + }, + "nodeType": "YulFunctionCall", + "src": "7337:11:17" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "7350:1:17", + "type": "", + "value": "1" + } + ], + "functionName": { + "name": "sub", + "nodeType": "YulIdentifier", + "src": "7333:3:17" + }, + "nodeType": "YulFunctionCall", + "src": "7333:19:17" } ], "functionName": { - "name": "add", + "name": "and", "nodeType": "YulIdentifier", - "src": "738:3:10" + "src": "7321:3:17" }, "nodeType": "YulFunctionCall", - "src": "738:18:10" - }, - { - "kind": "number", - "nodeType": "YulLiteral", - "src": "758:2:10", - "type": "", - "value": "21" + "src": "7321:32:17" } ], "functionName": { "name": "mstore", "nodeType": "YulIdentifier", - "src": "731:6:10" + "src": "7303:6:17" }, "nodeType": "YulFunctionCall", - "src": "731:30:10" + "src": "7303:51:17" }, "nodeType": "YulExpressionStatement", - "src": "731:30:10" + "src": "7303:51:17" }, { "expression": { @@ -29401,87 +38592,62 @@ { "name": "headStart", "nodeType": "YulIdentifier", - "src": "781:9:10" + "src": "7374:9:17" }, { "kind": "number", "nodeType": "YulLiteral", - "src": "792:2:10", + "src": "7385:2:17", "type": "", - "value": "64" + "value": "32" } ], "functionName": { "name": "add", "nodeType": "YulIdentifier", - "src": "777:3:10" + "src": "7370:3:17" }, "nodeType": "YulFunctionCall", - "src": "777:18:10" + "src": "7370:18:17" }, { - "hexValue": "496e76616c696420746f6b656e2061646472657373", - "kind": "string", - "nodeType": "YulLiteral", - "src": "797:23:10", - "type": "", - "value": "Invalid token address" + "name": "value1", + "nodeType": "YulIdentifier", + "src": "7390:6:17" } ], "functionName": { "name": "mstore", "nodeType": "YulIdentifier", - "src": "770:6:10" + "src": "7363:6:17" }, "nodeType": "YulFunctionCall", - "src": "770:51:10" + "src": "7363:34:17" }, "nodeType": "YulExpressionStatement", - "src": "770:51:10" - }, - { - "nodeType": "YulAssignment", - "src": "830:26:10", - "value": { - "arguments": [ - { - "name": "headStart", - "nodeType": "YulIdentifier", - "src": "842:9:10" - }, - { - "kind": "number", - "nodeType": "YulLiteral", - "src": "853:2:10", - "type": "", - "value": "96" - } - ], - "functionName": { - "name": "add", - "nodeType": "YulIdentifier", - "src": "838:3:10" - }, - "nodeType": "YulFunctionCall", - "src": "838:18:10" - }, - "variableNames": [ - { - "name": "tail", - "nodeType": "YulIdentifier", - "src": "830:4:10" - } - ] + "src": "7363:34:17" } ] }, - "name": "abi_encode_tuple_t_stringliteral_d34df3e6e5f402d3417b1a16a0a8a7541b184d7fb338e177a15236f4037e3743__to_t_string_memory_ptr__fromStack_reversed", + "name": "abi_encode_tuple_t_address_t_uint256__to_t_address_t_uint256__fromStack_reversed", "nodeType": "YulFunctionDefinition", "parameters": [ { "name": "headStart", "nodeType": "YulTypedName", - "src": "668:9:10", + "src": "7219:9:17", + "type": "" + }, + { + "name": "value1", + "nodeType": "YulTypedName", + "src": "7230:6:17", + "type": "" + }, + { + "name": "value0", + "nodeType": "YulTypedName", + "src": "7238:6:17", "type": "" } ], @@ -29489,194 +38655,505 @@ { "name": "tail", "nodeType": "YulTypedName", - "src": "682:4:10", + "src": "7249:4:17", "type": "" } ], - "src": "517:345:10" + "src": "7129:274:17" } ] }, - "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 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_stringliteral_d34df3e6e5f402d3417b1a16a0a8a7541b184d7fb338e177a15236f4037e3743__to_t_string_memory_ptr__fromStack_reversed(headStart) -> tail\n {\n mstore(headStart, 32)\n mstore(add(headStart, 32), 21)\n mstore(add(headStart, 64), \"Invalid token address\")\n tail := add(headStart, 96)\n }\n}", - "id": 10, + "contents": "{\n { }\n function abi_decode_address(offset) -> value\n {\n value := calldataload(offset)\n if iszero(eq(value, and(value, sub(shl(160, 1), 1)))) { revert(0, 0) }\n }\n function abi_decode_tuple_t_addresst_uint256t_uint256t_uint256t_uint256(headStart, dataEnd) -> value0, value1, value2, value3, value4\n {\n if slt(sub(dataEnd, headStart), 160) { revert(0, 0) }\n value0 := abi_decode_address(headStart)\n value1 := calldataload(add(headStart, 32))\n value2 := calldataload(add(headStart, 64))\n value3 := calldataload(add(headStart, 96))\n value4 := calldataload(add(headStart, 128))\n }\n function abi_decode_tuple_t_address(headStart, dataEnd) -> value0\n {\n if slt(sub(dataEnd, headStart), 32) { revert(0, 0) }\n value0 := abi_decode_address(headStart)\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_contract$_IERC20_$967__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_t_uint256_t_uint256_t_uint256_t_uint256_t_bool__to_t_uint256_t_uint256_t_uint256_t_uint256_t_uint256_t_bool__fromStack_reversed(headStart, value5, value4, value3, value2, value1, value0) -> tail\n {\n tail := add(headStart, 192)\n mstore(headStart, value0)\n mstore(add(headStart, 32), value1)\n mstore(add(headStart, 64), value2)\n mstore(add(headStart, 96), value3)\n mstore(add(headStart, 128), value4)\n mstore(add(headStart, 160), iszero(iszero(value5)))\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_stringliteral_33ba6c59384982a33c8d03efd40cd022501542cd14d2a647b97dcbf1ab55c9a8__to_t_string_memory_ptr__fromStack_reversed(headStart) -> tail\n {\n mstore(headStart, 32)\n mstore(add(headStart, 32), 27)\n mstore(add(headStart, 64), \"Beneficiary not whitelisted\")\n tail := add(headStart, 96)\n }\n function abi_encode_tuple_t_stringliteral_91f1f2e511bedf319ad6ce391862732cf90c76883618f4f508c8f5e61f705466__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), \"Start time must be in the future\")\n tail := add(headStart, 96)\n }\n function abi_encode_tuple_t_stringliteral_839ed8254ffca5ca01218b9b2173f9b1e14f13a19eb201692e63da7b37ccc026__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), \"Cliff duration must be greater t\")\n mstore(add(headStart, 96), \"han 0\")\n tail := add(headStart, 128)\n }\n function abi_encode_tuple_t_stringliteral_1017f1b07ba3fa3e0d85c11bf6ba26e6987d24ff7513f1d1b9df5c982d07c93f__to_t_string_memory_ptr__fromStack_reversed(headStart) -> tail\n {\n mstore(headStart, 32)\n mstore(add(headStart, 32), 39)\n mstore(add(headStart, 64), \"Vesting duration must be greater\")\n mstore(add(headStart, 96), \" than 0\")\n tail := add(headStart, 128)\n }\n function abi_encode_tuple_t_stringliteral_3e76f273c719bb7d23db533a2dc9a822ae7d899fcd42eb8910272e24764e8296__to_t_string_memory_ptr__fromStack_reversed(headStart) -> tail\n {\n mstore(headStart, 32)\n mstore(add(headStart, 32), 29)\n mstore(add(headStart, 64), \"Amount must be greater than 0\")\n tail := add(headStart, 96)\n }\n function abi_encode_tuple_t_stringliteral_7bccacb3ef1b76a239d24792d8e953985aa4e1666ef83909e9156bbd66ed8fe3__to_t_string_memory_ptr__fromStack_reversed(headStart) -> tail\n {\n mstore(headStart, 32)\n mstore(add(headStart, 32), 52)\n mstore(add(headStart, 64), \"Vesting duration must be greater\")\n mstore(add(headStart, 96), \" than cliff duration\")\n tail := add(headStart, 128)\n }\n function abi_encode_tuple_t_stringliteral_b8b87812c352fc8e39cdfe1757bfbcecb484013d66c0da14d0ba3b167d668ffe__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), \"Vesting schedule revoked\")\n tail := add(headStart, 96)\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_sub_t_uint256(x, y) -> diff\n {\n diff := sub(x, y)\n if gt(diff, x) { panic_error_0x11() }\n }\n function abi_encode_tuple_t_stringliteral_1462473b7a4b33d32b109b815fd2324d00c9e5839b707ecf16d0ab5744f99226__to_t_string_memory_ptr__fromStack_reversed(headStart) -> tail\n {\n mstore(headStart, 32)\n mstore(add(headStart, 32), 15)\n mstore(add(headStart, 64), \"Invalid address\")\n tail := add(headStart, 96)\n }\n function checked_add_t_uint256(x, y) -> sum\n {\n sum := add(x, y)\n if gt(x, sum) { panic_error_0x11() }\n }\n function abi_encode_tuple_t_stringliteral_0d5449e713a47f03a14de06feb7e7374931b31bbe74b9f8d4277d4797f0eb90e__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), \"No tokens to claim\")\n tail := add(headStart, 96)\n }\n function abi_encode_tuple_t_stringliteral_2d980113b746b646b1f1c170ff650a967a1fe1a7065543628c00dcab2441d666__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), \"Total amount must be larger than\")\n mstore(add(headStart, 96), \" 0\")\n tail := add(headStart, 128)\n }\n function checked_mul_t_uint256(x, y) -> product\n {\n product := mul(x, y)\n if iszero(or(iszero(x), eq(y, div(product, x)))) { panic_error_0x11() }\n }\n function checked_div_t_uint256(x, y) -> r\n {\n if iszero(y)\n {\n mstore(0, shl(224, 0x4e487b71))\n mstore(4, 0x12)\n revert(0, 0x24)\n }\n r := div(x, y)\n }\n function abi_encode_tuple_t_address_t_address_t_uint256__to_t_address_t_address_t_uint256__fromStack_reversed(headStart, value2, value1, value0) -> tail\n {\n tail := add(headStart, 96)\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 }\n function abi_encode_tuple_t_address_t_uint256__to_t_address_t_uint256__fromStack_reversed(headStart, value1, value0) -> tail\n {\n tail := add(headStart, 64)\n mstore(headStart, and(value0, sub(shl(160, 1), 1)))\n mstore(add(headStart, 32), value1)\n }\n}", + "id": 17, "language": "Yul", "name": "#utility.yul" } ], + "immutableReferences": {}, "linkReferences": {}, - "object": "60a060405234801561001057600080fd5b506040516111cf3803806111cf83398101604081905261002f91610128565b338061005657604051631e4fbdf760e01b8152600060048201526024015b60405180910390fd5b61005f816100d8565b506000805460ff60a01b19169055600180556001600160a01b0381166100c75760405162461bcd60e51b815260206004820152601560248201527f496e76616c696420746f6b656e20616464726573730000000000000000000000604482015260640161004d565b6001600160a01b0316608052610158565b600080546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b60006020828403121561013a57600080fd5b81516001600160a01b038116811461015157600080fd5b9392505050565b608051611047610188600039600081816101eb015281816105c2015281816107bc0152610b2801526110476000f3fe608060405234801561001057600080fd5b50600436106100f55760003560e01c80638da5cb5b11610097578063f2fde38b11610066578063f2fde38b146101d3578063fc0c546a146101e6578063fdb20ccb1461020d578063ffa06b2a1461028457600080fd5b80638da5cb5b146101705780639b19251a14610195578063e43252d7146101b8578063e74f3fbb146101cb57600080fd5b80635c975abb116100d35780635c975abb1461012a578063715018a61461014d5780638456cb59146101555780638ab1d6811461015d57600080fd5b80631bf0b08b146100fa5780633b0da2601461010f5780633f4ba83a14610122575b600080fd5b61010d610108366004610ee7565b6102a5565b005b61010d61011d366004610f29565b6106d9565b61010d6108c2565b600054600160a01b900460ff165b60405190151581526020015b60405180910390f35b61010d6108d4565b61010d6108e6565b61010d61016b366004610f29565b6108f6565b6000546001600160a01b03165b6040516001600160a01b039091168152602001610144565b6101386101a3366004610f29565b60036020526000908152604090205460ff1681565b61010d6101c6366004610f29565b610947565b61010d6109e3565b61010d6101e1366004610f29565b610bfa565b61017d7f000000000000000000000000000000000000000000000000000000000000000081565b61025561021b366004610f29565b6002602081905260009182526040909120805460018201549282015460038301546004840154600590940154929493919290919060ff1686565b6040805196875260208701959095529385019290925260608401526080830152151560a082015260c001610144565b610297610292366004610f29565b610c38565b604051908152602001610144565b6102ad610d37565b6001600160a01b038516600090815260036020526040902054859060ff1661031c5760405162461bcd60e51b815260206004820152601b60248201527f42656e6566696369617279206e6f742077686974656c6973746564000000000060448201526064015b60405180910390fd5b610324610d64565b6001600160a01b0386166103705760405162461bcd60e51b8152602060048201526013602482015272496e76616c69642062656e656669636961727960681b6044820152606401610313565b600085116103b55760405162461bcd60e51b81526020600482015260126024820152710416d6f756e74206d757374206265203e20360741b6044820152606401610313565b600083116104055760405162461bcd60e51b815260206004820152601c60248201527f56657374696e67206475726174696f6e206d757374206265203e2030000000006044820152606401610313565b8383101561045f5760405162461bcd60e51b815260206004820152602160248201527f56657374696e67206475726174696f6e206d757374206265203e3d20636c69666044820152603360f91b6064820152608401610313565b6001600160a01b038616600090815260026020526040902054156104c55760405162461bcd60e51b815260206004820152601760248201527f5363686564756c6520616c7265616479206578697374730000000000000000006044820152606401610313565b428210156105155760405162461bcd60e51b815260206004820152601c60248201527f53746172742074696d65206d75737420626520696e20667574757265000000006044820152606401610313565b6040518060c00160405280868152602001838152602001858152602001848152602001600081526020016000151581525060026000886001600160a01b03166001600160a01b03168152602001908152602001600020600082015181600001556020820151816001015560408201518160020155606082015181600301556080820151816004015560a08201518160050160006101000a81548160ff0219169083151502179055509050507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03166323b872dd3330886040518463ffffffff1660e01b815260040161062f939291906001600160a01b039384168152919092166020820152604081019190915260600190565b6020604051808303816000875af115801561064e573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906106729190610f4b565b61068e5760405162461bcd60e51b815260040161031390610f6d565b856001600160a01b03167f969705509595726740fe60cc30769bbd53c883efff4d8e70108a82817e0392a9866040516106c991815260200190565b60405180910390a2505050505050565b6106e1610d37565b6001600160a01b0381166000908152600260205260409020805461073d5760405162461bcd60e51b81526020600482015260136024820152724e6f2076657374696e67207363686564756c6560681b6044820152606401610313565b600581015460ff16156107845760405162461bcd60e51b815260206004820152600f60248201526e105b1c9958591e481c995d9bdad959608a1b6044820152606401610313565b600061078f83610c38565b905060008183600001546107a39190610fac565b60058401805460ff1916600117905590508015610888577f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663a9059cbb6107fb6000546001600160a01b031690565b6040516001600160e01b031960e084901b1681526001600160a01b039091166004820152602481018490526044016020604051808303816000875af1158015610848573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061086c9190610f4b565b6108885760405162461bcd60e51b815260040161031390610f6d565b6040516001600160a01b038516907f68d870ac0aff3819234e8a1fc8f357b40d75212f2dc8594b97690fa205b3bab290600090a250505050565b6108ca610d37565b6108d2610d8f565b565b6108dc610d37565b6108d26000610de4565b6108ee610d37565b6108d2610e34565b6108fe610d37565b6001600160a01b038116600081815260036020526040808220805460ff19169055517f1ecef1b5180dc14b16608c5c5ec1fa28998e2f94e460b91c1b50bdfb643cc1389190a250565b61094f610d37565b6001600160a01b0381166109975760405162461bcd60e51b815260206004820152600f60248201526e496e76616c6964206164647265737360881b6044820152606401610313565b6001600160a01b038116600081815260036020526040808220805460ff19166001179055517f07e751107375f503d05dfa76b5038ce1c5b7d46e9e45768f913ac333780394399190a250565b6109eb610e77565b6109f3610d64565b3360009081526002602052604090208054610a465760405162461bcd60e51b81526020600482015260136024820152724e6f2076657374696e67207363686564756c6560681b6044820152606401610313565b600581015460ff1615610a8d5760405162461bcd60e51b815260206004820152600f60248201526e15995cdd1a5b99c81c995d9bdad959608a1b6044820152606401610313565b6000610a9833610c38565b90506000826004015482610aac9190610fac565b905060008111610af35760405162461bcd60e51b81526020600482015260126024820152714e6f20746f6b656e7320746f20636c61696d60701b6044820152606401610313565b80836004016000828254610b079190610fc5565b909155505060405163a9059cbb60e01b8152336004820152602481018290527f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03169063a9059cbb906044016020604051808303816000875af1158015610b79573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610b9d9190610f4b565b610bb95760405162461bcd60e51b815260040161031390610f6d565b60405181815233907f896e034966eaaf1adc54acc0f257056febbd300c9e47182cf761982cf1f5e4309060200160405180910390a25050506108d260018055565b610c02610d37565b6001600160a01b038116610c2c57604051631e4fbdf760e01b815260006004820152602401610313565b610c3581610de4565b50565b6001600160a01b0381166000908152600260208181526040808420815160c0810183528154808252600183015494820194909452938101549184019190915260038101546060840152600481015460808401526005015460ff16151560a08301521580610ca657508060a001515b15610cb45750600092915050565b80604001518160200151610cc89190610fc5565b421015610cd85750600092915050565b80606001518160200151610cec9190610fc5565b4210610cf9575192915050565b6000816020015142610d0b9190610fac565b905060008260600151828460000151610d249190610fd8565b610d2e9190610fef565b95945050505050565b6000546001600160a01b031633146108d25760405163118cdaa760e01b8152336004820152602401610313565b600054600160a01b900460ff16156108d25760405163d93c066560e01b815260040160405180910390fd5b610d97610ea1565b6000805460ff60a01b191690557f5db9ee0a495bf2e6ff9c91a7834c1ba4fdd244a5e8aa4e537bd38aeae4b073aa335b6040516001600160a01b03909116815260200160405180910390a1565b600080546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b610e3c610d64565b6000805460ff60a01b1916600160a01b1790557f62e78cea01bee320cd4e420270b5ea74000d11b0c9f74754ebdbfc544b05a258610dc73390565b600260015403610e9a57604051633ee5aeb560e01b815260040160405180910390fd5b6002600155565b600054600160a01b900460ff166108d257604051638dfc202b60e01b815260040160405180910390fd5b80356001600160a01b0381168114610ee257600080fd5b919050565b600080600080600060a08688031215610eff57600080fd5b610f0886610ecb565b97602087013597506040870135966060810135965060800135945092505050565b600060208284031215610f3b57600080fd5b610f4482610ecb565b9392505050565b600060208284031215610f5d57600080fd5b81518015158114610f4457600080fd5b6020808252600f908201526e151c985b9cd9995c8819985a5b1959608a1b604082015260600190565b634e487b7160e01b600052601160045260246000fd5b81810381811115610fbf57610fbf610f96565b92915050565b80820180821115610fbf57610fbf610f96565b8082028115828204841417610fbf57610fbf610f96565b60008261100c57634e487b7160e01b600052601260045260246000fd5b50049056fea2646970667358221220129cdb8abfd9f74a9cfbc811114271c90d948bdd7f871a0a0a159dcad12dea2e64736f6c63430008140033", - "opcodes": "PUSH1 0xA0 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH2 0x10 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x40 MLOAD PUSH2 0x11CF CODESIZE SUB DUP1 PUSH2 0x11CF DUP4 CODECOPY DUP2 ADD PUSH1 0x40 DUP2 SWAP1 MSTORE PUSH2 0x2F SWAP2 PUSH2 0x128 JUMP JUMPDEST CALLER DUP1 PUSH2 0x56 JUMPI PUSH1 0x40 MLOAD PUSH4 0x1E4FBDF7 PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x0 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x24 ADD JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH2 0x5F DUP2 PUSH2 0xD8 JUMP JUMPDEST POP PUSH1 0x0 DUP1 SLOAD PUSH1 0xFF PUSH1 0xA0 SHL NOT AND SWAP1 SSTORE PUSH1 0x1 DUP1 SSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND PUSH2 0xC7 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x15 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x496E76616C696420746F6B656E20616464726573730000000000000000000000 PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 ADD PUSH2 0x4D JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH1 0x80 MSTORE PUSH2 0x158 JUMP JUMPDEST PUSH1 0x0 DUP1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP4 DUP2 AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB NOT DUP4 AND DUP2 OR DUP5 SSTORE PUSH1 0x40 MLOAD SWAP2 SWAP1 SWAP3 AND SWAP3 DUP4 SWAP2 PUSH32 0x8BE0079C531659141344CD1FD0A4F28419497F9722A3DAAFE3B4186F6B6457E0 SWAP2 SWAP1 LOG3 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x13A JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND DUP2 EQ PUSH2 0x151 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x80 MLOAD PUSH2 0x1047 PUSH2 0x188 PUSH1 0x0 CODECOPY PUSH1 0x0 DUP2 DUP2 PUSH2 0x1EB ADD MSTORE DUP2 DUP2 PUSH2 0x5C2 ADD MSTORE DUP2 DUP2 PUSH2 0x7BC ADD MSTORE PUSH2 0xB28 ADD MSTORE PUSH2 0x1047 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 0xF5 JUMPI PUSH1 0x0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0x8DA5CB5B GT PUSH2 0x97 JUMPI DUP1 PUSH4 0xF2FDE38B GT PUSH2 0x66 JUMPI DUP1 PUSH4 0xF2FDE38B EQ PUSH2 0x1D3 JUMPI DUP1 PUSH4 0xFC0C546A EQ PUSH2 0x1E6 JUMPI DUP1 PUSH4 0xFDB20CCB EQ PUSH2 0x20D JUMPI DUP1 PUSH4 0xFFA06B2A EQ PUSH2 0x284 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 PUSH4 0x8DA5CB5B EQ PUSH2 0x170 JUMPI DUP1 PUSH4 0x9B19251A EQ PUSH2 0x195 JUMPI DUP1 PUSH4 0xE43252D7 EQ PUSH2 0x1B8 JUMPI DUP1 PUSH4 0xE74F3FBB EQ PUSH2 0x1CB JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 PUSH4 0x5C975ABB GT PUSH2 0xD3 JUMPI DUP1 PUSH4 0x5C975ABB EQ PUSH2 0x12A JUMPI DUP1 PUSH4 0x715018A6 EQ PUSH2 0x14D JUMPI DUP1 PUSH4 0x8456CB59 EQ PUSH2 0x155 JUMPI DUP1 PUSH4 0x8AB1D681 EQ PUSH2 0x15D JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 PUSH4 0x1BF0B08B EQ PUSH2 0xFA JUMPI DUP1 PUSH4 0x3B0DA260 EQ PUSH2 0x10F JUMPI DUP1 PUSH4 0x3F4BA83A EQ PUSH2 0x122 JUMPI JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x10D PUSH2 0x108 CALLDATASIZE PUSH1 0x4 PUSH2 0xEE7 JUMP JUMPDEST PUSH2 0x2A5 JUMP JUMPDEST STOP JUMPDEST PUSH2 0x10D PUSH2 0x11D CALLDATASIZE PUSH1 0x4 PUSH2 0xF29 JUMP JUMPDEST PUSH2 0x6D9 JUMP JUMPDEST PUSH2 0x10D PUSH2 0x8C2 JUMP 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 JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0x10D PUSH2 0x8D4 JUMP JUMPDEST PUSH2 0x10D PUSH2 0x8E6 JUMP JUMPDEST PUSH2 0x10D PUSH2 0x16B CALLDATASIZE PUSH1 0x4 PUSH2 0xF29 JUMP JUMPDEST PUSH2 0x8F6 JUMP JUMPDEST PUSH1 0x0 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 SWAP2 AND DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0x144 JUMP JUMPDEST PUSH2 0x138 PUSH2 0x1A3 CALLDATASIZE PUSH1 0x4 PUSH2 0xF29 JUMP JUMPDEST PUSH1 0x3 PUSH1 0x20 MSTORE PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD PUSH1 0xFF AND DUP2 JUMP JUMPDEST PUSH2 0x10D PUSH2 0x1C6 CALLDATASIZE PUSH1 0x4 PUSH2 0xF29 JUMP JUMPDEST PUSH2 0x947 JUMP JUMPDEST PUSH2 0x10D PUSH2 0x9E3 JUMP JUMPDEST PUSH2 0x10D PUSH2 0x1E1 CALLDATASIZE PUSH1 0x4 PUSH2 0xF29 JUMP JUMPDEST PUSH2 0xBFA JUMP JUMPDEST PUSH2 0x17D PUSH32 0x0 DUP2 JUMP JUMPDEST PUSH2 0x255 PUSH2 0x21B CALLDATASIZE PUSH1 0x4 PUSH2 0xF29 JUMP JUMPDEST PUSH1 0x2 PUSH1 0x20 DUP2 SWAP1 MSTORE PUSH1 0x0 SWAP2 DUP3 MSTORE PUSH1 0x40 SWAP1 SWAP2 KECCAK256 DUP1 SLOAD PUSH1 0x1 DUP3 ADD SLOAD SWAP3 DUP3 ADD SLOAD PUSH1 0x3 DUP4 ADD SLOAD PUSH1 0x4 DUP5 ADD SLOAD PUSH1 0x5 SWAP1 SWAP5 ADD SLOAD SWAP3 SWAP5 SWAP4 SWAP2 SWAP3 SWAP1 SWAP2 SWAP1 PUSH1 0xFF AND DUP7 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD SWAP7 DUP8 MSTORE PUSH1 0x20 DUP8 ADD SWAP6 SWAP1 SWAP6 MSTORE SWAP4 DUP6 ADD SWAP3 SWAP1 SWAP3 MSTORE PUSH1 0x60 DUP5 ADD MSTORE PUSH1 0x80 DUP4 ADD MSTORE ISZERO ISZERO PUSH1 0xA0 DUP3 ADD MSTORE PUSH1 0xC0 ADD PUSH2 0x144 JUMP JUMPDEST PUSH2 0x297 PUSH2 0x292 CALLDATASIZE PUSH1 0x4 PUSH2 0xF29 JUMP JUMPDEST PUSH2 0xC38 JUMP JUMPDEST PUSH1 0x40 MLOAD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0x144 JUMP JUMPDEST PUSH2 0x2AD PUSH2 0xD37 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP6 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x3 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD DUP6 SWAP1 PUSH1 0xFF AND PUSH2 0x31C JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x1B PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x42656E6566696369617279206E6F742077686974656C69737465640000000000 PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 ADD JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH2 0x324 PUSH2 0xD64 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP7 AND PUSH2 0x370 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 0x496E76616C69642062656E6566696369617279 PUSH1 0x68 SHL PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 ADD PUSH2 0x313 JUMP JUMPDEST PUSH1 0x0 DUP6 GT PUSH2 0x3B5 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 0x416D6F756E74206D757374206265203E203 PUSH1 0x74 SHL PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 ADD PUSH2 0x313 JUMP JUMPDEST PUSH1 0x0 DUP4 GT PUSH2 0x405 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x1C PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x56657374696E67206475726174696F6E206D757374206265203E203000000000 PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 ADD PUSH2 0x313 JUMP JUMPDEST DUP4 DUP4 LT ISZERO PUSH2 0x45F JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x21 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x56657374696E67206475726174696F6E206D757374206265203E3D20636C6966 PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x33 PUSH1 0xF9 SHL PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 ADD PUSH2 0x313 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP7 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x2 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD ISZERO PUSH2 0x4C5 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x17 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x5363686564756C6520616C726561647920657869737473000000000000000000 PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 ADD PUSH2 0x313 JUMP JUMPDEST TIMESTAMP DUP3 LT ISZERO PUSH2 0x515 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x1C PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x53746172742074696D65206D75737420626520696E2066757475726500000000 PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 ADD PUSH2 0x313 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 PUSH1 0xC0 ADD PUSH1 0x40 MSTORE DUP1 DUP7 DUP2 MSTORE PUSH1 0x20 ADD DUP4 DUP2 MSTORE PUSH1 0x20 ADD DUP6 DUP2 MSTORE PUSH1 0x20 ADD DUP5 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 ISZERO ISZERO DUP2 MSTORE POP PUSH1 0x2 PUSH1 0x0 DUP9 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x0 DUP3 ADD MLOAD DUP2 PUSH1 0x0 ADD SSTORE PUSH1 0x20 DUP3 ADD MLOAD DUP2 PUSH1 0x1 ADD SSTORE PUSH1 0x40 DUP3 ADD MLOAD DUP2 PUSH1 0x2 ADD SSTORE PUSH1 0x60 DUP3 ADD MLOAD DUP2 PUSH1 0x3 ADD SSTORE PUSH1 0x80 DUP3 ADD MLOAD DUP2 PUSH1 0x4 ADD SSTORE PUSH1 0xA0 DUP3 ADD MLOAD DUP2 PUSH1 0x5 ADD PUSH1 0x0 PUSH2 0x100 EXP DUP2 SLOAD DUP2 PUSH1 0xFF MUL NOT AND SWAP1 DUP4 ISZERO ISZERO MUL OR SWAP1 SSTORE POP SWAP1 POP POP PUSH32 0x0 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH4 0x23B872DD CALLER ADDRESS DUP9 PUSH1 0x40 MLOAD DUP5 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x62F SWAP4 SWAP3 SWAP2 SWAP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP4 DUP5 AND DUP2 MSTORE SWAP2 SWAP1 SWAP3 AND PUSH1 0x20 DUP3 ADD MSTORE PUSH1 0x40 DUP2 ADD SWAP2 SWAP1 SWAP2 MSTORE PUSH1 0x60 ADD SWAP1 JUMP JUMPDEST PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 GAS CALL ISZERO DUP1 ISZERO PUSH2 0x64E JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x672 SWAP2 SWAP1 PUSH2 0xF4B JUMP JUMPDEST PUSH2 0x68E JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x313 SWAP1 PUSH2 0xF6D JUMP JUMPDEST DUP6 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH32 0x969705509595726740FE60CC30769BBD53C883EFFF4D8E70108A82817E0392A9 DUP7 PUSH1 0x40 MLOAD PUSH2 0x6C9 SWAP2 DUP2 MSTORE PUSH1 0x20 ADD SWAP1 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG2 POP POP POP POP POP POP JUMP JUMPDEST PUSH2 0x6E1 PUSH2 0xD37 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x2 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 DUP1 SLOAD PUSH2 0x73D 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 0x4E6F2076657374696E67207363686564756C65 PUSH1 0x68 SHL PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 ADD PUSH2 0x313 JUMP JUMPDEST PUSH1 0x5 DUP2 ADD SLOAD PUSH1 0xFF AND ISZERO PUSH2 0x784 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0xF PUSH1 0x24 DUP3 ADD MSTORE PUSH15 0x105B1C9958591E481C995D9BDAD959 PUSH1 0x8A SHL PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 ADD PUSH2 0x313 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x78F DUP4 PUSH2 0xC38 JUMP JUMPDEST SWAP1 POP PUSH1 0x0 DUP2 DUP4 PUSH1 0x0 ADD SLOAD PUSH2 0x7A3 SWAP2 SWAP1 PUSH2 0xFAC JUMP JUMPDEST PUSH1 0x5 DUP5 ADD DUP1 SLOAD PUSH1 0xFF NOT AND PUSH1 0x1 OR SWAP1 SSTORE SWAP1 POP DUP1 ISZERO PUSH2 0x888 JUMPI PUSH32 0x0 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH4 0xA9059CBB PUSH2 0x7FB PUSH1 0x0 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SWAP1 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB NOT PUSH1 0xE0 DUP5 SWAP1 SHL AND DUP2 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 SWAP2 AND PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x24 DUP2 ADD DUP5 SWAP1 MSTORE PUSH1 0x44 ADD PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 GAS CALL ISZERO DUP1 ISZERO PUSH2 0x848 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x86C SWAP2 SWAP1 PUSH2 0xF4B JUMP JUMPDEST PUSH2 0x888 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x313 SWAP1 PUSH2 0xF6D JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP6 AND SWAP1 PUSH32 0x68D870AC0AFF3819234E8A1FC8F357B40D75212F2DC8594B97690FA205B3BAB2 SWAP1 PUSH1 0x0 SWAP1 LOG2 POP POP POP POP JUMP JUMPDEST PUSH2 0x8CA PUSH2 0xD37 JUMP JUMPDEST PUSH2 0x8D2 PUSH2 0xD8F JUMP JUMPDEST JUMP JUMPDEST PUSH2 0x8DC PUSH2 0xD37 JUMP JUMPDEST PUSH2 0x8D2 PUSH1 0x0 PUSH2 0xDE4 JUMP JUMPDEST PUSH2 0x8EE PUSH2 0xD37 JUMP JUMPDEST PUSH2 0x8D2 PUSH2 0xE34 JUMP JUMPDEST PUSH2 0x8FE PUSH2 0xD37 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0x3 PUSH1 0x20 MSTORE PUSH1 0x40 DUP1 DUP3 KECCAK256 DUP1 SLOAD PUSH1 0xFF NOT AND SWAP1 SSTORE MLOAD PUSH32 0x1ECEF1B5180DC14B16608C5C5EC1FA28998E2F94E460B91C1B50BDFB643CC138 SWAP2 SWAP1 LOG2 POP JUMP JUMPDEST PUSH2 0x94F PUSH2 0xD37 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND PUSH2 0x997 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0xF PUSH1 0x24 DUP3 ADD MSTORE PUSH15 0x496E76616C69642061646472657373 PUSH1 0x88 SHL PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 ADD PUSH2 0x313 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0x3 PUSH1 0x20 MSTORE PUSH1 0x40 DUP1 DUP3 KECCAK256 DUP1 SLOAD PUSH1 0xFF NOT AND PUSH1 0x1 OR SWAP1 SSTORE MLOAD PUSH32 0x7E751107375F503D05DFA76B5038CE1C5B7D46E9E45768F913AC33378039439 SWAP2 SWAP1 LOG2 POP JUMP JUMPDEST PUSH2 0x9EB PUSH2 0xE77 JUMP JUMPDEST PUSH2 0x9F3 PUSH2 0xD64 JUMP JUMPDEST CALLER PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x2 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 DUP1 SLOAD PUSH2 0xA46 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 0x4E6F2076657374696E67207363686564756C65 PUSH1 0x68 SHL PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 ADD PUSH2 0x313 JUMP JUMPDEST PUSH1 0x5 DUP2 ADD SLOAD PUSH1 0xFF AND ISZERO PUSH2 0xA8D JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0xF PUSH1 0x24 DUP3 ADD MSTORE PUSH15 0x15995CDD1A5B99C81C995D9BDAD959 PUSH1 0x8A SHL PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 ADD PUSH2 0x313 JUMP JUMPDEST PUSH1 0x0 PUSH2 0xA98 CALLER PUSH2 0xC38 JUMP JUMPDEST SWAP1 POP PUSH1 0x0 DUP3 PUSH1 0x4 ADD SLOAD DUP3 PUSH2 0xAAC SWAP2 SWAP1 PUSH2 0xFAC JUMP JUMPDEST SWAP1 POP PUSH1 0x0 DUP2 GT PUSH2 0xAF3 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 0x4E6F20746F6B656E7320746F20636C61696D PUSH1 0x70 SHL PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 ADD PUSH2 0x313 JUMP JUMPDEST DUP1 DUP4 PUSH1 0x4 ADD PUSH1 0x0 DUP3 DUP3 SLOAD PUSH2 0xB07 SWAP2 SWAP1 PUSH2 0xFC5 JUMP JUMPDEST SWAP1 SWAP2 SSTORE POP POP PUSH1 0x40 MLOAD PUSH4 0xA9059CBB PUSH1 0xE0 SHL DUP2 MSTORE CALLER PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x24 DUP2 ADD DUP3 SWAP1 MSTORE PUSH32 0x0 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SWAP1 PUSH4 0xA9059CBB SWAP1 PUSH1 0x44 ADD PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 GAS CALL ISZERO DUP1 ISZERO PUSH2 0xB79 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0xB9D SWAP2 SWAP1 PUSH2 0xF4B JUMP JUMPDEST PUSH2 0xBB9 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x313 SWAP1 PUSH2 0xF6D JUMP JUMPDEST PUSH1 0x40 MLOAD DUP2 DUP2 MSTORE CALLER SWAP1 PUSH32 0x896E034966EAAF1ADC54ACC0F257056FEBBD300C9E47182CF761982CF1F5E430 SWAP1 PUSH1 0x20 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG2 POP POP POP PUSH2 0x8D2 PUSH1 0x1 DUP1 SSTORE JUMP JUMPDEST PUSH2 0xC02 PUSH2 0xD37 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND PUSH2 0xC2C JUMPI PUSH1 0x40 MLOAD PUSH4 0x1E4FBDF7 PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x0 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x24 ADD PUSH2 0x313 JUMP JUMPDEST PUSH2 0xC35 DUP2 PUSH2 0xDE4 JUMP JUMPDEST POP JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x2 PUSH1 0x20 DUP2 DUP2 MSTORE PUSH1 0x40 DUP1 DUP5 KECCAK256 DUP2 MLOAD PUSH1 0xC0 DUP2 ADD DUP4 MSTORE DUP2 SLOAD DUP1 DUP3 MSTORE PUSH1 0x1 DUP4 ADD SLOAD SWAP5 DUP3 ADD SWAP5 SWAP1 SWAP5 MSTORE SWAP4 DUP2 ADD SLOAD SWAP2 DUP5 ADD SWAP2 SWAP1 SWAP2 MSTORE PUSH1 0x3 DUP2 ADD SLOAD PUSH1 0x60 DUP5 ADD MSTORE PUSH1 0x4 DUP2 ADD SLOAD PUSH1 0x80 DUP5 ADD MSTORE PUSH1 0x5 ADD SLOAD PUSH1 0xFF AND ISZERO ISZERO PUSH1 0xA0 DUP4 ADD MSTORE ISZERO DUP1 PUSH2 0xCA6 JUMPI POP DUP1 PUSH1 0xA0 ADD MLOAD JUMPDEST ISZERO PUSH2 0xCB4 JUMPI POP PUSH1 0x0 SWAP3 SWAP2 POP POP JUMP JUMPDEST DUP1 PUSH1 0x40 ADD MLOAD DUP2 PUSH1 0x20 ADD MLOAD PUSH2 0xCC8 SWAP2 SWAP1 PUSH2 0xFC5 JUMP JUMPDEST TIMESTAMP LT ISZERO PUSH2 0xCD8 JUMPI POP PUSH1 0x0 SWAP3 SWAP2 POP POP JUMP JUMPDEST DUP1 PUSH1 0x60 ADD MLOAD DUP2 PUSH1 0x20 ADD MLOAD PUSH2 0xCEC SWAP2 SWAP1 PUSH2 0xFC5 JUMP JUMPDEST TIMESTAMP LT PUSH2 0xCF9 JUMPI MLOAD SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 DUP2 PUSH1 0x20 ADD MLOAD TIMESTAMP PUSH2 0xD0B SWAP2 SWAP1 PUSH2 0xFAC JUMP JUMPDEST SWAP1 POP PUSH1 0x0 DUP3 PUSH1 0x60 ADD MLOAD DUP3 DUP5 PUSH1 0x0 ADD MLOAD PUSH2 0xD24 SWAP2 SWAP1 PUSH2 0xFD8 JUMP JUMPDEST PUSH2 0xD2E SWAP2 SWAP1 PUSH2 0xFEF JUMP JUMPDEST SWAP6 SWAP5 POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND CALLER EQ PUSH2 0x8D2 JUMPI PUSH1 0x40 MLOAD PUSH4 0x118CDAA7 PUSH1 0xE0 SHL DUP2 MSTORE CALLER PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x24 ADD PUSH2 0x313 JUMP JUMPDEST PUSH1 0x0 SLOAD PUSH1 0x1 PUSH1 0xA0 SHL SWAP1 DIV PUSH1 0xFF AND ISZERO PUSH2 0x8D2 JUMPI PUSH1 0x40 MLOAD PUSH4 0xD93C0665 PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH2 0xD97 PUSH2 0xEA1 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 DUP1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP4 DUP2 AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB NOT DUP4 AND DUP2 OR DUP5 SSTORE PUSH1 0x40 MLOAD SWAP2 SWAP1 SWAP3 AND SWAP3 DUP4 SWAP2 PUSH32 0x8BE0079C531659141344CD1FD0A4F28419497F9722A3DAAFE3B4186F6B6457E0 SWAP2 SWAP1 LOG3 POP POP JUMP JUMPDEST PUSH2 0xE3C PUSH2 0xD64 JUMP JUMPDEST PUSH1 0x0 DUP1 SLOAD PUSH1 0xFF PUSH1 0xA0 SHL NOT AND PUSH1 0x1 PUSH1 0xA0 SHL OR SWAP1 SSTORE PUSH32 0x62E78CEA01BEE320CD4E420270B5EA74000D11B0C9F74754EBDBFC544B05A258 PUSH2 0xDC7 CALLER SWAP1 JUMP JUMPDEST PUSH1 0x2 PUSH1 0x1 SLOAD SUB PUSH2 0xE9A JUMPI PUSH1 0x40 MLOAD PUSH4 0x3EE5AEB5 PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x2 PUSH1 0x1 SSTORE JUMP JUMPDEST PUSH1 0x0 SLOAD PUSH1 0x1 PUSH1 0xA0 SHL SWAP1 DIV PUSH1 0xFF AND PUSH2 0x8D2 JUMPI PUSH1 0x40 MLOAD PUSH4 0x8DFC202B PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST DUP1 CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND DUP2 EQ PUSH2 0xEE2 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0x0 PUSH1 0xA0 DUP7 DUP9 SUB SLT ISZERO PUSH2 0xEFF JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0xF08 DUP7 PUSH2 0xECB JUMP JUMPDEST SWAP8 PUSH1 0x20 DUP8 ADD CALLDATALOAD SWAP8 POP PUSH1 0x40 DUP8 ADD CALLDATALOAD SWAP7 PUSH1 0x60 DUP2 ADD CALLDATALOAD SWAP7 POP PUSH1 0x80 ADD CALLDATALOAD SWAP5 POP SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0xF3B JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0xF44 DUP3 PUSH2 0xECB JUMP JUMPDEST SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0xF5D JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 MLOAD DUP1 ISZERO ISZERO DUP2 EQ PUSH2 0xF44 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE PUSH1 0xF SWAP1 DUP3 ADD MSTORE PUSH15 0x151C985B9CD9995C8819985A5B1959 PUSH1 0x8A SHL PUSH1 0x40 DUP3 ADD MSTORE PUSH1 0x60 ADD SWAP1 JUMP JUMPDEST PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH1 0x0 MSTORE PUSH1 0x11 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST DUP2 DUP2 SUB DUP2 DUP2 GT ISZERO PUSH2 0xFBF JUMPI PUSH2 0xFBF PUSH2 0xF96 JUMP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST DUP1 DUP3 ADD DUP1 DUP3 GT ISZERO PUSH2 0xFBF JUMPI PUSH2 0xFBF PUSH2 0xF96 JUMP JUMPDEST DUP1 DUP3 MUL DUP2 ISZERO DUP3 DUP3 DIV DUP5 EQ OR PUSH2 0xFBF JUMPI PUSH2 0xFBF PUSH2 0xF96 JUMP JUMPDEST PUSH1 0x0 DUP3 PUSH2 0x100C JUMPI PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH1 0x0 MSTORE PUSH1 0x12 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST POP DIV SWAP1 JUMP INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 SLT SWAP13 0xDB DUP11 0xBF 0xD9 0xF7 0x4A SWAP13 0xFB 0xC8 GT GT TIMESTAMP PUSH18 0xC90D948BDD7F871A0A0A159DCAD12DEA2E64 PUSH20 0x6F6C634300081400330000000000000000000000 ", - "sourceMap": "281:5041:9:-:0;;;1184:149;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;314:10;;1269:95:0;;1322:31;;-1:-1:-1;;;1322:31:0;;1350:1;1322:31;;;455:51:10;428:18;;1322:31:0;;;;;;;;1269:95;1373:32;1392:12;1373:18;:32::i;:::-;-1:-1:-1;1241:5:6;1231:15;;-1:-1:-1;;;;1231:15:6;;;;2061:21:7;;-1:-1:-1;;;;;1236:26:9;;1228:60;;;;-1:-1:-1;;;1228:60:9;;719:2:10;1228:60:9;;;701:21:10;758:2;738:18;;;731:30;797:23;777:18;;;770:51;838:18;;1228:60:9;517:345:10;1228:60:9;-1:-1:-1;;;;;1298:28:9;;;281:5041;;2912:187:0;2985:16;3004:6;;-1:-1:-1;;;;;3020:17:0;;;-1:-1:-1;;;;;;3020:17:0;;;;;;3052:40;;3004:6;;;;;;;3052:40;;2985:16;3052:40;2975:124;2912:187;:::o;14:290:10:-;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:10;;214:42;;204:70;;270:1;267;260:12;204:70;293:5;14:290;-1:-1:-1;;;14:290:10:o;517:345::-;281:5041:9;;;;;;;;;;;;;;;;;;;;;;;;;;;" + "object": "608060405234801561001057600080fd5b50600436106100f55760003560e01c80638da5cb5b11610097578063f2fde38b11610066578063f2fde38b146101d3578063fc0c546a146101e6578063fdb20ccb146101f9578063ffa06b2a1461027157600080fd5b80638da5cb5b146101705780639b19251a14610195578063e43252d7146101b8578063e74f3fbb146101cb57600080fd5b80635c975abb116100d35780635c975abb1461012a578063715018a61461014d5780638456cb59146101555780638ab1d6811461015d57600080fd5b80631bf0b08b146100fa5780633b0da2601461010f5780633f4ba83a14610122575b600080fd5b61010d610108366004610d8d565b610292565b005b61010d61011d366004610dcf565b6105c0565b61010d6106cf565b600054600160a01b900460ff165b60405190151581526020015b60405180910390f35b61010d6106e1565b61010d6106f3565b61010d61016b366004610dcf565b610703565b6000546001600160a01b03165b6040516001600160a01b039091168152602001610144565b6101386101a3366004610dcf565b60046020526000908152604090205460ff1681565b61010d6101c6366004610dcf565b610754565b61010d6107f0565b61010d6101e1366004610dcf565b610985565b60025461017d906001600160a01b031681565b610242610207366004610dcf565b600360208190526000918252604090912080546001820154600283015493830154600484015460059094015492949193919290919060ff1686565b6040805196875260208701959095529385019290925260608401526080830152151560a082015260c001610144565b61028461027f366004610dcf565b6109c3565b604051908152602001610144565b61029a610ac9565b6001600160a01b038516600090815260046020526040902054859060ff166103095760405162461bcd60e51b815260206004820152601b60248201527f42656e6566696369617279206e6f742077686974656c6973746564000000000060448201526064015b60405180910390fd5b610311610af6565b4282116103605760405162461bcd60e51b815260206004820181905260248201527f53746172742074696d65206d75737420626520696e20746865206675747572656044820152606401610300565b600084116103be5760405162461bcd60e51b815260206004820152602560248201527f436c696666206475726174696f6e206d75737420626520677265617465722074604482015264068616e20360dc1b6064820152608401610300565b6000831161041e5760405162461bcd60e51b815260206004820152602760248201527f56657374696e67206475726174696f6e206d75737420626520677265617465726044820152660207468616e20360cc1b6064820152608401610300565b6000851161046e5760405162461bcd60e51b815260206004820152601d60248201527f416d6f756e74206d7573742062652067726561746572207468616e20300000006044820152606401610300565b8383116104da5760405162461bcd60e51b815260206004820152603460248201527f56657374696e67206475726174696f6e206d7573742062652067726561746572604482015273103a3430b71031b634b33310323ab930ba34b7b760611b6064820152608401610300565b6040805160c08101825286815260208082018581528284018881526060840188815260006080860181815260a087018281526001600160a01b038f81168452600397889052988320885181559551600187015593516002860155915194840194909455516004830155516005909101805460ff191691151591909117905554909161057491166002546001600160a01b0316903089610b21565b866001600160a01b03167f969705509595726740fe60cc30769bbd53c883efff4d8e70108a82817e0392a9876040516105af91815260200190565b60405180910390a250505050505050565b6105c8610ac9565b6001600160a01b0381166000908152600360205260409020600581015460ff16156106055760405162461bcd60e51b815260040161030090610df1565b6000610610836109c3565b905060008260040154826106249190610e3e565b905060008284600001546106389190610e3e565b60058501805460ff191660011790559050811561066657600254610666906001600160a01b03168684610b8e565b8015610694576106946106816000546001600160a01b031690565b6002546001600160a01b03169083610b8e565b6040516001600160a01b038616907f68d870ac0aff3819234e8a1fc8f357b40d75212f2dc8594b97690fa205b3bab290600090a25050505050565b6106d7610ac9565b6106df610bc4565b565b6106e9610ac9565b6106df6000610c19565b6106fb610ac9565b6106df610c69565b61070b610ac9565b6001600160a01b038116600081815260046020526040808220805460ff19169055517f1ecef1b5180dc14b16608c5c5ec1fa28998e2f94e460b91c1b50bdfb643cc1389190a250565b61075c610ac9565b6001600160a01b0381166107a45760405162461bcd60e51b815260206004820152600f60248201526e496e76616c6964206164647265737360881b6044820152606401610300565b6001600160a01b038116600081815260046020526040808220805460ff19166001179055517f07e751107375f503d05dfa76b5038ce1c5b7d46e9e45768f913ac333780394399190a250565b6107f8610cac565b610800610af6565b33600081815260036020526040902060028101546001820154429161082491610e57565b106108665760405162461bcd60e51b81526020600482015260126024820152714e6f20746f6b656e7320746f20636c61696d60701b6044820152606401610300565b600581015460ff161561088b5760405162461bcd60e51b815260040161030090610df1565b80546108e45760405162461bcd60e51b815260206004820152602260248201527f546f74616c20616d6f756e74206d757374206265206c6172676572207468616e604482015261020360f41b6064820152608401610300565b60006108ef336109c3565b905060008260040154826109039190610e3e565b9050818360040160008282546109199190610e57565b9091555050600254610935906001600160a01b03168583610b8e565b836001600160a01b03167f896e034966eaaf1adc54acc0f257056febbd300c9e47182cf761982cf1f5e4308360405161097091815260200190565b60405180910390a2505050506106df60018055565b61098d610ac9565b6001600160a01b0381166109b757604051631e4fbdf760e01b815260006004820152602401610300565b6109c081610c19565b50565b6001600160a01b0381166000908152600360208181526040808420815160c081018352815481526001820154938101939093526002810154918301919091529182015460608201526004820154608082015260059091015460ff1615801560a0830152610a425760405162461bcd60e51b815260040161030090610df1565b604081015160208201514291610a5791610e57565b811015610a68575060009392505050565b81606001518260200151610a7c9190610e57565b8110610a8a57505192915050565b6000826020015182610a9c9190610e3e565b905060008360600151828560000151610ab59190610e6a565b610abf9190610e81565b9695505050505050565b6000546001600160a01b031633146106df5760405163118cdaa760e01b8152336004820152602401610300565b600054600160a01b900460ff16156106df5760405163d93c066560e01b815260040160405180910390fd5b6040516001600160a01b038481166024830152838116604483015260648201839052610b889186918216906323b872dd906084015b604051602081830303815290604052915060e01b6020820180516001600160e01b038381831617835250505050610cd6565b50505050565b6040516001600160a01b03838116602483015260448201839052610bbf91859182169063a9059cbb90606401610b56565b505050565b610bcc610d47565b6000805460ff60a01b191690557f5db9ee0a495bf2e6ff9c91a7834c1ba4fdd244a5e8aa4e537bd38aeae4b073aa335b6040516001600160a01b03909116815260200160405180910390a1565b600080546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b610c71610af6565b6000805460ff60a01b1916600160a01b1790557f62e78cea01bee320cd4e420270b5ea74000d11b0c9f74754ebdbfc544b05a258610bfc3390565b600260015403610ccf57604051633ee5aeb560e01b815260040160405180910390fd5b6002600155565b600080602060008451602086016000885af180610cf9576040513d6000823e3d81fd5b50506000513d91508115610d11578060011415610d1e565b6001600160a01b0384163b155b15610b8857604051635274afe760e01b81526001600160a01b0385166004820152602401610300565b600054600160a01b900460ff166106df57604051638dfc202b60e01b815260040160405180910390fd5b80356001600160a01b0381168114610d8857600080fd5b919050565b600080600080600060a08688031215610da557600080fd5b610dae86610d71565b97602087013597506040870135966060810135965060800135945092505050565b600060208284031215610de157600080fd5b610dea82610d71565b9392505050565b60208082526018908201527f56657374696e67207363686564756c65207265766f6b65640000000000000000604082015260600190565b634e487b7160e01b600052601160045260246000fd5b81810381811115610e5157610e51610e28565b92915050565b80820180821115610e5157610e51610e28565b8082028115828204841417610e5157610e51610e28565b600082610e9e57634e487b7160e01b600052601260045260246000fd5b50049056fea2646970667358221220e78a59fe9676520ffbeceff1606ab37c005ee96c5f34f900851198c2c65a483c64736f6c63430008140033", + "opcodes": "PUSH1 0x80 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH2 0x10 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x4 CALLDATASIZE LT PUSH2 0xF5 JUMPI PUSH1 0x0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0x8DA5CB5B GT PUSH2 0x97 JUMPI DUP1 PUSH4 0xF2FDE38B GT PUSH2 0x66 JUMPI DUP1 PUSH4 0xF2FDE38B EQ PUSH2 0x1D3 JUMPI DUP1 PUSH4 0xFC0C546A EQ PUSH2 0x1E6 JUMPI DUP1 PUSH4 0xFDB20CCB EQ PUSH2 0x1F9 JUMPI DUP1 PUSH4 0xFFA06B2A EQ PUSH2 0x271 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 PUSH4 0x8DA5CB5B EQ PUSH2 0x170 JUMPI DUP1 PUSH4 0x9B19251A EQ PUSH2 0x195 JUMPI DUP1 PUSH4 0xE43252D7 EQ PUSH2 0x1B8 JUMPI DUP1 PUSH4 0xE74F3FBB EQ PUSH2 0x1CB JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 PUSH4 0x5C975ABB GT PUSH2 0xD3 JUMPI DUP1 PUSH4 0x5C975ABB EQ PUSH2 0x12A JUMPI DUP1 PUSH4 0x715018A6 EQ PUSH2 0x14D JUMPI DUP1 PUSH4 0x8456CB59 EQ PUSH2 0x155 JUMPI DUP1 PUSH4 0x8AB1D681 EQ PUSH2 0x15D JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 PUSH4 0x1BF0B08B EQ PUSH2 0xFA JUMPI DUP1 PUSH4 0x3B0DA260 EQ PUSH2 0x10F JUMPI DUP1 PUSH4 0x3F4BA83A EQ PUSH2 0x122 JUMPI JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x10D PUSH2 0x108 CALLDATASIZE PUSH1 0x4 PUSH2 0xD8D JUMP JUMPDEST PUSH2 0x292 JUMP JUMPDEST STOP JUMPDEST PUSH2 0x10D PUSH2 0x11D CALLDATASIZE PUSH1 0x4 PUSH2 0xDCF JUMP JUMPDEST PUSH2 0x5C0 JUMP JUMPDEST PUSH2 0x10D PUSH2 0x6CF JUMP 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 JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0x10D PUSH2 0x6E1 JUMP JUMPDEST PUSH2 0x10D PUSH2 0x6F3 JUMP JUMPDEST PUSH2 0x10D PUSH2 0x16B CALLDATASIZE PUSH1 0x4 PUSH2 0xDCF JUMP JUMPDEST PUSH2 0x703 JUMP JUMPDEST PUSH1 0x0 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 SWAP2 AND DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0x144 JUMP JUMPDEST PUSH2 0x138 PUSH2 0x1A3 CALLDATASIZE PUSH1 0x4 PUSH2 0xDCF JUMP JUMPDEST PUSH1 0x4 PUSH1 0x20 MSTORE PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD PUSH1 0xFF AND DUP2 JUMP JUMPDEST PUSH2 0x10D PUSH2 0x1C6 CALLDATASIZE PUSH1 0x4 PUSH2 0xDCF JUMP JUMPDEST PUSH2 0x754 JUMP JUMPDEST PUSH2 0x10D PUSH2 0x7F0 JUMP JUMPDEST PUSH2 0x10D PUSH2 0x1E1 CALLDATASIZE PUSH1 0x4 PUSH2 0xDCF JUMP JUMPDEST PUSH2 0x985 JUMP JUMPDEST PUSH1 0x2 SLOAD PUSH2 0x17D SWAP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 JUMP JUMPDEST PUSH2 0x242 PUSH2 0x207 CALLDATASIZE PUSH1 0x4 PUSH2 0xDCF JUMP JUMPDEST PUSH1 0x3 PUSH1 0x20 DUP2 SWAP1 MSTORE PUSH1 0x0 SWAP2 DUP3 MSTORE PUSH1 0x40 SWAP1 SWAP2 KECCAK256 DUP1 SLOAD PUSH1 0x1 DUP3 ADD SLOAD PUSH1 0x2 DUP4 ADD SLOAD SWAP4 DUP4 ADD SLOAD PUSH1 0x4 DUP5 ADD SLOAD PUSH1 0x5 SWAP1 SWAP5 ADD SLOAD SWAP3 SWAP5 SWAP2 SWAP4 SWAP2 SWAP3 SWAP1 SWAP2 SWAP1 PUSH1 0xFF AND DUP7 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD SWAP7 DUP8 MSTORE PUSH1 0x20 DUP8 ADD SWAP6 SWAP1 SWAP6 MSTORE SWAP4 DUP6 ADD SWAP3 SWAP1 SWAP3 MSTORE PUSH1 0x60 DUP5 ADD MSTORE PUSH1 0x80 DUP4 ADD MSTORE ISZERO ISZERO PUSH1 0xA0 DUP3 ADD MSTORE PUSH1 0xC0 ADD PUSH2 0x144 JUMP JUMPDEST PUSH2 0x284 PUSH2 0x27F CALLDATASIZE PUSH1 0x4 PUSH2 0xDCF JUMP JUMPDEST PUSH2 0x9C3 JUMP JUMPDEST PUSH1 0x40 MLOAD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0x144 JUMP JUMPDEST PUSH2 0x29A PUSH2 0xAC9 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP6 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x4 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD DUP6 SWAP1 PUSH1 0xFF AND PUSH2 0x309 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x1B PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x42656E6566696369617279206E6F742077686974656C69737465640000000000 PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 ADD JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH2 0x311 PUSH2 0xAF6 JUMP JUMPDEST TIMESTAMP DUP3 GT PUSH2 0x360 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD DUP2 SWAP1 MSTORE PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x53746172742074696D65206D75737420626520696E2074686520667574757265 PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 ADD PUSH2 0x300 JUMP JUMPDEST PUSH1 0x0 DUP5 GT PUSH2 0x3BE 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 0x436C696666206475726174696F6E206D75737420626520677265617465722074 PUSH1 0x44 DUP3 ADD MSTORE PUSH5 0x68616E203 PUSH1 0xDC SHL PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 ADD PUSH2 0x300 JUMP JUMPDEST PUSH1 0x0 DUP4 GT PUSH2 0x41E JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x27 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x56657374696E67206475726174696F6E206D7573742062652067726561746572 PUSH1 0x44 DUP3 ADD MSTORE PUSH7 0x207468616E203 PUSH1 0xCC SHL PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 ADD PUSH2 0x300 JUMP JUMPDEST PUSH1 0x0 DUP6 GT PUSH2 0x46E JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x1D PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x416D6F756E74206D7573742062652067726561746572207468616E2030000000 PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 ADD PUSH2 0x300 JUMP JUMPDEST DUP4 DUP4 GT PUSH2 0x4DA JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x34 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x56657374696E67206475726174696F6E206D7573742062652067726561746572 PUSH1 0x44 DUP3 ADD MSTORE PUSH20 0x103A3430B71031B634B33310323AB930BA34B7B7 PUSH1 0x61 SHL PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 ADD PUSH2 0x300 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0xC0 DUP2 ADD DUP3 MSTORE DUP7 DUP2 MSTORE PUSH1 0x20 DUP1 DUP3 ADD DUP6 DUP2 MSTORE DUP3 DUP5 ADD DUP9 DUP2 MSTORE PUSH1 0x60 DUP5 ADD DUP9 DUP2 MSTORE PUSH1 0x0 PUSH1 0x80 DUP7 ADD DUP2 DUP2 MSTORE PUSH1 0xA0 DUP8 ADD DUP3 DUP2 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP16 DUP2 AND DUP5 MSTORE PUSH1 0x3 SWAP8 DUP9 SWAP1 MSTORE SWAP9 DUP4 KECCAK256 DUP9 MLOAD DUP2 SSTORE SWAP6 MLOAD PUSH1 0x1 DUP8 ADD SSTORE SWAP4 MLOAD PUSH1 0x2 DUP7 ADD SSTORE SWAP2 MLOAD SWAP5 DUP5 ADD SWAP5 SWAP1 SWAP5 SSTORE MLOAD PUSH1 0x4 DUP4 ADD SSTORE MLOAD PUSH1 0x5 SWAP1 SWAP2 ADD DUP1 SLOAD PUSH1 0xFF NOT AND SWAP2 ISZERO ISZERO SWAP2 SWAP1 SWAP2 OR SWAP1 SSTORE SLOAD SWAP1 SWAP2 PUSH2 0x574 SWAP2 AND PUSH1 0x2 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SWAP1 ADDRESS DUP10 PUSH2 0xB21 JUMP JUMPDEST DUP7 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH32 0x969705509595726740FE60CC30769BBD53C883EFFF4D8E70108A82817E0392A9 DUP8 PUSH1 0x40 MLOAD PUSH2 0x5AF SWAP2 DUP2 MSTORE PUSH1 0x20 ADD SWAP1 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG2 POP POP POP POP POP POP POP JUMP JUMPDEST PUSH2 0x5C8 PUSH2 0xAC9 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x3 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 PUSH1 0x5 DUP2 ADD SLOAD PUSH1 0xFF AND ISZERO PUSH2 0x605 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x300 SWAP1 PUSH2 0xDF1 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x610 DUP4 PUSH2 0x9C3 JUMP JUMPDEST SWAP1 POP PUSH1 0x0 DUP3 PUSH1 0x4 ADD SLOAD DUP3 PUSH2 0x624 SWAP2 SWAP1 PUSH2 0xE3E JUMP JUMPDEST SWAP1 POP PUSH1 0x0 DUP3 DUP5 PUSH1 0x0 ADD SLOAD PUSH2 0x638 SWAP2 SWAP1 PUSH2 0xE3E JUMP JUMPDEST PUSH1 0x5 DUP6 ADD DUP1 SLOAD PUSH1 0xFF NOT AND PUSH1 0x1 OR SWAP1 SSTORE SWAP1 POP DUP2 ISZERO PUSH2 0x666 JUMPI PUSH1 0x2 SLOAD PUSH2 0x666 SWAP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP7 DUP5 PUSH2 0xB8E JUMP JUMPDEST DUP1 ISZERO PUSH2 0x694 JUMPI PUSH2 0x694 PUSH2 0x681 PUSH1 0x0 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SWAP1 JUMP JUMPDEST PUSH1 0x2 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SWAP1 DUP4 PUSH2 0xB8E JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP7 AND SWAP1 PUSH32 0x68D870AC0AFF3819234E8A1FC8F357B40D75212F2DC8594B97690FA205B3BAB2 SWAP1 PUSH1 0x0 SWAP1 LOG2 POP POP POP POP POP JUMP JUMPDEST PUSH2 0x6D7 PUSH2 0xAC9 JUMP JUMPDEST PUSH2 0x6DF PUSH2 0xBC4 JUMP JUMPDEST JUMP JUMPDEST PUSH2 0x6E9 PUSH2 0xAC9 JUMP JUMPDEST PUSH2 0x6DF PUSH1 0x0 PUSH2 0xC19 JUMP JUMPDEST PUSH2 0x6FB PUSH2 0xAC9 JUMP JUMPDEST PUSH2 0x6DF PUSH2 0xC69 JUMP JUMPDEST PUSH2 0x70B PUSH2 0xAC9 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0x4 PUSH1 0x20 MSTORE PUSH1 0x40 DUP1 DUP3 KECCAK256 DUP1 SLOAD PUSH1 0xFF NOT AND SWAP1 SSTORE MLOAD PUSH32 0x1ECEF1B5180DC14B16608C5C5EC1FA28998E2F94E460B91C1B50BDFB643CC138 SWAP2 SWAP1 LOG2 POP JUMP JUMPDEST PUSH2 0x75C PUSH2 0xAC9 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND PUSH2 0x7A4 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0xF PUSH1 0x24 DUP3 ADD MSTORE PUSH15 0x496E76616C69642061646472657373 PUSH1 0x88 SHL PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 ADD PUSH2 0x300 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0x4 PUSH1 0x20 MSTORE PUSH1 0x40 DUP1 DUP3 KECCAK256 DUP1 SLOAD PUSH1 0xFF NOT AND PUSH1 0x1 OR SWAP1 SSTORE MLOAD PUSH32 0x7E751107375F503D05DFA76B5038CE1C5B7D46E9E45768F913AC33378039439 SWAP2 SWAP1 LOG2 POP JUMP JUMPDEST PUSH2 0x7F8 PUSH2 0xCAC JUMP JUMPDEST PUSH2 0x800 PUSH2 0xAF6 JUMP JUMPDEST CALLER PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0x3 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 PUSH1 0x2 DUP2 ADD SLOAD PUSH1 0x1 DUP3 ADD SLOAD TIMESTAMP SWAP2 PUSH2 0x824 SWAP2 PUSH2 0xE57 JUMP JUMPDEST LT PUSH2 0x866 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 0x4E6F20746F6B656E7320746F20636C61696D PUSH1 0x70 SHL PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 ADD PUSH2 0x300 JUMP JUMPDEST PUSH1 0x5 DUP2 ADD SLOAD PUSH1 0xFF AND ISZERO PUSH2 0x88B JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x300 SWAP1 PUSH2 0xDF1 JUMP JUMPDEST DUP1 SLOAD PUSH2 0x8E4 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 0x546F74616C20616D6F756E74206D757374206265206C6172676572207468616E PUSH1 0x44 DUP3 ADD MSTORE PUSH2 0x203 PUSH1 0xF4 SHL PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 ADD PUSH2 0x300 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x8EF CALLER PUSH2 0x9C3 JUMP JUMPDEST SWAP1 POP PUSH1 0x0 DUP3 PUSH1 0x4 ADD SLOAD DUP3 PUSH2 0x903 SWAP2 SWAP1 PUSH2 0xE3E JUMP JUMPDEST SWAP1 POP DUP2 DUP4 PUSH1 0x4 ADD PUSH1 0x0 DUP3 DUP3 SLOAD PUSH2 0x919 SWAP2 SWAP1 PUSH2 0xE57 JUMP JUMPDEST SWAP1 SWAP2 SSTORE POP POP PUSH1 0x2 SLOAD PUSH2 0x935 SWAP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP6 DUP4 PUSH2 0xB8E JUMP JUMPDEST DUP4 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH32 0x896E034966EAAF1ADC54ACC0F257056FEBBD300C9E47182CF761982CF1F5E430 DUP4 PUSH1 0x40 MLOAD PUSH2 0x970 SWAP2 DUP2 MSTORE PUSH1 0x20 ADD SWAP1 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG2 POP POP POP POP PUSH2 0x6DF PUSH1 0x1 DUP1 SSTORE JUMP JUMPDEST PUSH2 0x98D PUSH2 0xAC9 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND PUSH2 0x9B7 JUMPI PUSH1 0x40 MLOAD PUSH4 0x1E4FBDF7 PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x0 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x24 ADD PUSH2 0x300 JUMP JUMPDEST PUSH2 0x9C0 DUP2 PUSH2 0xC19 JUMP JUMPDEST POP JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x3 PUSH1 0x20 DUP2 DUP2 MSTORE PUSH1 0x40 DUP1 DUP5 KECCAK256 DUP2 MLOAD PUSH1 0xC0 DUP2 ADD DUP4 MSTORE DUP2 SLOAD DUP2 MSTORE PUSH1 0x1 DUP3 ADD SLOAD SWAP4 DUP2 ADD SWAP4 SWAP1 SWAP4 MSTORE PUSH1 0x2 DUP2 ADD SLOAD SWAP2 DUP4 ADD SWAP2 SWAP1 SWAP2 MSTORE SWAP2 DUP3 ADD SLOAD PUSH1 0x60 DUP3 ADD MSTORE PUSH1 0x4 DUP3 ADD SLOAD PUSH1 0x80 DUP3 ADD MSTORE PUSH1 0x5 SWAP1 SWAP2 ADD SLOAD PUSH1 0xFF AND ISZERO DUP1 ISZERO PUSH1 0xA0 DUP4 ADD MSTORE PUSH2 0xA42 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x300 SWAP1 PUSH2 0xDF1 JUMP JUMPDEST PUSH1 0x40 DUP2 ADD MLOAD PUSH1 0x20 DUP3 ADD MLOAD TIMESTAMP SWAP2 PUSH2 0xA57 SWAP2 PUSH2 0xE57 JUMP JUMPDEST DUP2 LT ISZERO PUSH2 0xA68 JUMPI POP PUSH1 0x0 SWAP4 SWAP3 POP POP POP JUMP JUMPDEST DUP2 PUSH1 0x60 ADD MLOAD DUP3 PUSH1 0x20 ADD MLOAD PUSH2 0xA7C SWAP2 SWAP1 PUSH2 0xE57 JUMP JUMPDEST DUP2 LT PUSH2 0xA8A JUMPI POP MLOAD SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 DUP3 PUSH1 0x20 ADD MLOAD DUP3 PUSH2 0xA9C SWAP2 SWAP1 PUSH2 0xE3E JUMP JUMPDEST SWAP1 POP PUSH1 0x0 DUP4 PUSH1 0x60 ADD MLOAD DUP3 DUP6 PUSH1 0x0 ADD MLOAD PUSH2 0xAB5 SWAP2 SWAP1 PUSH2 0xE6A JUMP JUMPDEST PUSH2 0xABF SWAP2 SWAP1 PUSH2 0xE81 JUMP JUMPDEST SWAP7 SWAP6 POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND CALLER EQ PUSH2 0x6DF JUMPI PUSH1 0x40 MLOAD PUSH4 0x118CDAA7 PUSH1 0xE0 SHL DUP2 MSTORE CALLER PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x24 ADD PUSH2 0x300 JUMP JUMPDEST PUSH1 0x0 SLOAD PUSH1 0x1 PUSH1 0xA0 SHL SWAP1 DIV PUSH1 0xFF AND ISZERO PUSH2 0x6DF JUMPI PUSH1 0x40 MLOAD PUSH4 0xD93C0665 PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP5 DUP2 AND PUSH1 0x24 DUP4 ADD MSTORE DUP4 DUP2 AND PUSH1 0x44 DUP4 ADD MSTORE PUSH1 0x64 DUP3 ADD DUP4 SWAP1 MSTORE PUSH2 0xB88 SWAP2 DUP7 SWAP2 DUP3 AND SWAP1 PUSH4 0x23B872DD SWAP1 PUSH1 0x84 ADD JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x20 DUP2 DUP4 SUB SUB DUP2 MSTORE SWAP1 PUSH1 0x40 MSTORE SWAP2 POP PUSH1 0xE0 SHL PUSH1 0x20 DUP3 ADD DUP1 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB DUP4 DUP2 DUP4 AND OR DUP4 MSTORE POP POP POP POP PUSH2 0xCD6 JUMP JUMPDEST POP POP POP POP JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP4 DUP2 AND PUSH1 0x24 DUP4 ADD MSTORE PUSH1 0x44 DUP3 ADD DUP4 SWAP1 MSTORE PUSH2 0xBBF SWAP2 DUP6 SWAP2 DUP3 AND SWAP1 PUSH4 0xA9059CBB SWAP1 PUSH1 0x64 ADD PUSH2 0xB56 JUMP JUMPDEST POP POP POP JUMP JUMPDEST PUSH2 0xBCC PUSH2 0xD47 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 DUP1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP4 DUP2 AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB NOT DUP4 AND DUP2 OR DUP5 SSTORE PUSH1 0x40 MLOAD SWAP2 SWAP1 SWAP3 AND SWAP3 DUP4 SWAP2 PUSH32 0x8BE0079C531659141344CD1FD0A4F28419497F9722A3DAAFE3B4186F6B6457E0 SWAP2 SWAP1 LOG3 POP POP JUMP JUMPDEST PUSH2 0xC71 PUSH2 0xAF6 JUMP JUMPDEST PUSH1 0x0 DUP1 SLOAD PUSH1 0xFF PUSH1 0xA0 SHL NOT AND PUSH1 0x1 PUSH1 0xA0 SHL OR SWAP1 SSTORE PUSH32 0x62E78CEA01BEE320CD4E420270B5EA74000D11B0C9F74754EBDBFC544B05A258 PUSH2 0xBFC CALLER SWAP1 JUMP JUMPDEST PUSH1 0x2 PUSH1 0x1 SLOAD SUB PUSH2 0xCCF JUMPI PUSH1 0x40 MLOAD PUSH4 0x3EE5AEB5 PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x2 PUSH1 0x1 SSTORE JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x20 PUSH1 0x0 DUP5 MLOAD PUSH1 0x20 DUP7 ADD PUSH1 0x0 DUP9 GAS CALL DUP1 PUSH2 0xCF9 JUMPI PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x0 DUP3 RETURNDATACOPY RETURNDATASIZE DUP2 REVERT JUMPDEST POP POP PUSH1 0x0 MLOAD RETURNDATASIZE SWAP2 POP DUP2 ISZERO PUSH2 0xD11 JUMPI DUP1 PUSH1 0x1 EQ ISZERO PUSH2 0xD1E JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP5 AND EXTCODESIZE ISZERO JUMPDEST ISZERO PUSH2 0xB88 JUMPI PUSH1 0x40 MLOAD PUSH4 0x5274AFE7 PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP6 AND PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x24 ADD PUSH2 0x300 JUMP JUMPDEST PUSH1 0x0 SLOAD PUSH1 0x1 PUSH1 0xA0 SHL SWAP1 DIV PUSH1 0xFF AND PUSH2 0x6DF JUMPI PUSH1 0x40 MLOAD PUSH4 0x8DFC202B PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST DUP1 CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND DUP2 EQ PUSH2 0xD88 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0x0 PUSH1 0xA0 DUP7 DUP9 SUB SLT ISZERO PUSH2 0xDA5 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0xDAE DUP7 PUSH2 0xD71 JUMP JUMPDEST SWAP8 PUSH1 0x20 DUP8 ADD CALLDATALOAD SWAP8 POP PUSH1 0x40 DUP8 ADD CALLDATALOAD SWAP7 PUSH1 0x60 DUP2 ADD CALLDATALOAD SWAP7 POP PUSH1 0x80 ADD CALLDATALOAD SWAP5 POP SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0xDE1 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0xDEA DUP3 PUSH2 0xD71 JUMP JUMPDEST SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE PUSH1 0x18 SWAP1 DUP3 ADD MSTORE PUSH32 0x56657374696E67207363686564756C65207265766F6B65640000000000000000 PUSH1 0x40 DUP3 ADD MSTORE PUSH1 0x60 ADD SWAP1 JUMP JUMPDEST PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH1 0x0 MSTORE PUSH1 0x11 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST DUP2 DUP2 SUB DUP2 DUP2 GT ISZERO PUSH2 0xE51 JUMPI PUSH2 0xE51 PUSH2 0xE28 JUMP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST DUP1 DUP3 ADD DUP1 DUP3 GT ISZERO PUSH2 0xE51 JUMPI PUSH2 0xE51 PUSH2 0xE28 JUMP JUMPDEST DUP1 DUP3 MUL DUP2 ISZERO DUP3 DUP3 DIV DUP5 EQ OR PUSH2 0xE51 JUMPI PUSH2 0xE51 PUSH2 0xE28 JUMP JUMPDEST PUSH1 0x0 DUP3 PUSH2 0xE9E JUMPI PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH1 0x0 MSTORE PUSH1 0x12 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST POP DIV SWAP1 JUMP INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 0xE7 DUP11 MSIZE INVALID SWAP7 PUSH23 0x520FFBECEFF1606AB37C005EE96C5F34F900851198C2C6 GAS BASEFEE EXTCODECOPY PUSH5 0x736F6C6343 STOP ADDMOD EQ STOP CALLER ", + "sourceMap": "1132:5481:15:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2978:1156;;;;;;:::i;:::-;;:::i;:::-;;5705:768;;;;;;:::i;:::-;;:::i;6546:65::-;;;:::i;1850:84:12:-;1897:4;1920:7;-1:-1:-1;;;1920:7:12;;;;1850:84;;;1013:14:17;;1006:22;988:41;;976:2;961:18;1850:84:12;;;;;;;;2293:101:0;;;:::i;6479:61:15:-;;;:::i;2797:175::-;;;;;;:::i;:::-;;:::i;1638:85:0:-;1684:7;1710:6;-1:-1:-1;;;;;1710:6:0;1638:85;;;-1:-1:-1;;;;;1204:32:17;;;1186:51;;1174:2;1159:18;1638:85:0;1040:203:17;1773:41:15;;;;;;:::i;:::-;;;;;;;;;;;;;;;;2568:223;;;;;;:::i;:::-;;:::i;4915:784::-;;;:::i;2543:215:0:-;;;;;;:::i;:::-;;:::i;1529:19:15:-;;;;;-1:-1:-1;;;;;1529:19:15;;;1640:59;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1751:25:17;;;1807:2;1792:18;;1785:34;;;;1835:18;;;1828:34;;;;1893:2;1878:18;;1871:34;1936:3;1921:19;;1914:35;1993:14;1986:22;1980:3;1965:19;;1958:51;1738:3;1723:19;1640:59:15;1470:545:17;4140:769:15;;;;;;:::i;:::-;;:::i;:::-;;;2166:25:17;;;2154:2;2139:18;4140:769:15;2020:177:17;2978:1156:15;1531:13:0;:11;:13::i;:::-;-1:-1:-1;;;;;2490:22:15;::::1;;::::0;;;:9:::1;:22;::::0;;;;;3194:11;;2490:22:::1;;2482:62;;;::::0;-1:-1:-1;;;2482:62:15;;2404:2:17;2482:62:15::1;::::0;::::1;2386:21:17::0;2443:2;2423:18;;;2416:30;2482:29;2462:18;;;2455:57;2529:18;;2482:62:15::1;;;;;;;;;1474:19:12::2;:17;:19::i;:::-;3317:15:15::3;3305:9;:27;3284:106;;;::::0;-1:-1:-1;;;3284:106:15;;2760:2:17;3284:106:15::3;::::0;::::3;2742:21:17::0;;;2779:18;;;2772:30;2838:34;2818:18;;;2811:62;2890:18;;3284:106:15::3;2558:356:17::0;3284:106:15::3;3424:1;3408:13;:17;3400:67;;;::::0;-1:-1:-1;;;3400:67:15;;3121:2:17;3400:67:15::3;::::0;::::3;3103:21:17::0;3160:2;3140:18;;;3133:30;3199:34;3179:18;;;3172:62;-1:-1:-1;;;3250:18:17;;;3243:35;3295:19;;3400:67:15::3;2919:401:17::0;3400:67:15::3;3503:1;3485:15;:19;3477:71;;;::::0;-1:-1:-1;;;3477:71:15;;3527:2:17;3477:71:15::3;::::0;::::3;3509:21:17::0;3566:2;3546:18;;;3539:30;3605:34;3585:18;;;3578:62;-1:-1:-1;;;3656:18:17;;;3649:37;3703:19;;3477:71:15::3;3325:403:17::0;3477:71:15::3;3575:1;3566:6;:10;3558:52;;;::::0;-1:-1:-1;;;3558:52:15;;3935:2:17;3558:52:15::3;::::0;::::3;3917:21:17::0;3974:2;3954:18;;;3947:30;4013:31;3993:18;;;3986:59;4062:18;;3558:52:15::3;3733:353:17::0;3558:52:15::3;3659:13;3641:15;:31;3620:130;;;::::0;-1:-1:-1;;;3620:130:15;;4293:2:17;3620:130:15::3;::::0;::::3;4275:21:17::0;4332:2;4312:18;;;4305:30;4371:34;4351:18;;;4344:62;-1:-1:-1;;;4422:18:17;;;4415:50;4482:19;;3620:130:15::3;4091:416:17::0;3620:130:15::3;3795:158;::::0;;::::3;::::0;::::3;::::0;;;;;::::3;::::0;;::::3;::::0;;;;;;;;;;;;;;;-1:-1:-1;3795:158:15;;;;;;;;;;;;-1:-1:-1;;;;;3963:29:15;;::::3;::::0;;:16:::3;:29:::0;;;;;;;:40;;;;;;3795:158;3963:40;::::3;::::0;;;::::3;::::0;::::3;::::0;;;;;::::3;::::0;;;;;::::3;::::0;::::3;::::0;;::::3;::::0;;::::3;::::0;;-1:-1:-1;;3963:40:15::3;::::0;::::3;;::::0;;;::::3;::::0;;1710:6:0;3795:158:15;;4014:54:::3;::::0;1710:6:0;4014:5:15::3;::::0;-1:-1:-1;;;;;4014:5:15::3;::::0;4054:4:::3;4061:6:::0;4014:22:::3;:54::i;:::-;4107:11;-1:-1:-1::0;;;;;4084:43:15::3;;4120:6;4084:43;;;;2166:25:17::0;;2154:2;2139:18;;2020:177;4084:43:15::3;;;;;;;;3221:913;1554:1:0::1;2978:1156:15::0;;;;;:::o;5705:768::-;1531:13:0;:11;:13::i;:::-;-1:-1:-1;;;;;5859:29:15;::::1;5824:32;5859:29:::0;;;:16:::1;:29;::::0;;;;5907:16:::1;::::0;::::1;::::0;::::1;;5906:17;5898:54;;;;-1:-1:-1::0;;;5898:54:15::1;;;;;;;:::i;:::-;5964:20;5987:34;6009:11;5987:21;:34::i;:::-;5964:57;;6031:23;6072:8;:22;;;6057:12;:37;;;;:::i;:::-;6031:63;;6104:22;6152:12;6129:8;:20;;;:35;;;;:::i;:::-;6183:16;::::0;::::1;:23:::0;;-1:-1:-1;;6183:23:15::1;6202:4;6183:23;::::0;;6104:60;-1:-1:-1;6229:19:15;;6225:98:::1;;6264:5;::::0;:48:::1;::::0;-1:-1:-1;;;;;6264:5:15::1;6283:11:::0;6296:15;6264:18:::1;:48::i;:::-;6336:18:::0;;6332:92:::1;;6370:43;6389:7;1684::0::0;1710:6;-1:-1:-1;;;;;1710:6:0;;1638:85;6389:7:15::1;6370:5;::::0;-1:-1:-1;;;;;6370:5:15::1;::::0;6398:14;6370:18:::1;:43::i;:::-;6439:27;::::0;-1:-1:-1;;;;;6439:27:15;::::1;::::0;::::1;::::0;;;::::1;5768:705;;;;5705:768:::0;:::o;6546:65::-;1531:13:0;:11;:13::i;:::-;6594:10:15::1;:8;:10::i;:::-;6546:65::o:0;2293:101:0:-;1531:13;:11;:13::i;:::-;2357:30:::1;2384:1;2357:18;:30::i;6479:61:15:-:0;1531:13:0;:11;:13::i;:::-;6525:8:15::1;:6;:8::i;2797:175::-:0;1531:13:0;:11;:13::i;:::-;-1:-1:-1;;;;;2876:22:15;::::1;2901:5;2876:22:::0;;;:9:::1;:22;::::0;;;;;:30;;-1:-1:-1;;2876:30:15::1;::::0;;2921:44;::::1;::::0;2901:5;2921:44:::1;2797:175:::0;:::o;2568:223::-;1531:13:0;:11;:13::i;:::-;-1:-1:-1;;;;;2650:25:15;::::1;2642:53;;;::::0;-1:-1:-1;;;2642:53:15;;5332:2:17;2642:53:15::1;::::0;::::1;5314:21:17::0;5371:2;5351:18;;;5344:30;-1:-1:-1;;;5390:18:17;;;5383:45;5445:18;;2642:53:15::1;5130:339:17::0;2642:53:15::1;-1:-1:-1::0;;;;;2705:22:15;::::1;;::::0;;;:9:::1;:22;::::0;;;;;:29;;-1:-1:-1;;2705:29:15::1;2730:4;2705:29;::::0;;2749:35;::::1;::::0;2705:22;2749:35:::1;2568:223:::0;:::o;4915:784::-;2500:21:13;:19;:21::i;:::-;1474:19:12::1;:17;:19::i;:::-;5054:10:15::2;5032:19;5109:29:::0;;;:16:::2;:29;::::0;;;;5178:22:::2;::::0;::::2;::::0;5157:18:::2;::::0;::::2;::::0;5203:15:::2;::::0;5157:43:::2;::::0;::::2;:::i;:::-;:61;5149:92;;;::::0;-1:-1:-1;;;5149:92:15;;5806:2:17;5149:92:15::2;::::0;::::2;5788:21:17::0;5845:2;5825:18;;;5818:30;-1:-1:-1;;;5864:18:17;;;5857:48;5922:18;;5149:92:15::2;5604:342:17::0;5149:92:15::2;5260:16;::::0;::::2;::::0;::::2;;5259:17;5251:54;;;;-1:-1:-1::0;;;5251:54:15::2;;;;;;;:::i;:::-;5323:20:::0;;5315:71:::2;;;::::0;-1:-1:-1;;;5315:71:15;;6153:2:17;5315:71:15::2;::::0;::::2;6135:21:17::0;6192:2;6172:18;;;6165:30;6231:34;6211:18;;;6204:62;-1:-1:-1;;;6282:18:17;;;6275:32;6324:19;;5315:71:15::2;5951:398:17::0;5315:71:15::2;5397:20;5420:33;5442:10;5420:21;:33::i;:::-;5397:56;;5463:24;5505:8;:22;;;5490:12;:37;;;;:::i;:::-;5463:64;;5563:12;5537:8;:22;;;:38;;;;;;;:::i;:::-;::::0;;;-1:-1:-1;;5586:5:15::2;::::0;:49:::2;::::0;-1:-1:-1;;;;;5586:5:15::2;5605:11:::0;5618:16;5586:18:::2;:49::i;:::-;5665:11;-1:-1:-1::0;;;;;5651:40:15::2;;5678:12;5651:40;;;;2166:25:17::0;;2154:2;2139:18;;2020:177;5651:40:15::2;;;;;;;;4980:719;;;;2542:20:13::0;1857:1;3068:21;;2888:208;2543:215:0;1531:13;:11;:13::i;:::-;-1:-1:-1;;;;;2627:22:0;::::1;2623:91;;2672:31;::::0;-1:-1:-1;;;2672:31:0;;2700:1:::1;2672:31;::::0;::::1;1186:51:17::0;1159:18;;2672:31:0::1;1040:203:17::0;2623:91:0::1;2723:28;2742:8;2723:18;:28::i;:::-;2543:215:::0;:::o;4140:769:15:-;-1:-1:-1;;;;;4333:29:15;;4227:7;4333:29;;;:16;:29;;;;;;;;4299:63;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4372:54;;;;-1:-1:-1;;;4372:54:15;;;;;;;:::i;:::-;4522:22;;;;4501:18;;;;4459:15;;4501:43;;;:::i;:::-;4487:11;:57;4484:95;;;-1:-1:-1;4567:1:15;;4140:769;-1:-1:-1;;;4140:769:15:o;4484:95::-;4628:8;:24;;;4607:8;:18;;;:45;;;;:::i;:::-;4592:11;:60;4589:117;;-1:-1:-1;4675:20:15;;4140:769;-1:-1:-1;;4140:769:15:o;4589:117::-;4716:22;4755:8;:18;;;4741:11;:32;;;;:::i;:::-;4716:57;;4783:20;4848:8;:24;;;4830:14;4807:8;:20;;;:37;;;;:::i;:::-;4806:66;;;;:::i;:::-;4783:89;4140:769;-1:-1:-1;;;;;;4140:769:15:o;1796:162:0:-;1684:7;1710:6;-1:-1:-1;;;;;1710:6:0;735:10:10;1855:23:0;1851:101;;1901:40;;-1:-1:-1;;;1901:40:0;;735:10:10;1901:40:0;;;1186:51:17;1159:18;;1901:40:0;1040:203:17;2002:128:12;1897:4;1920:7;-1:-1:-1;;;1920:7:12;;;;2063:61;;;2098:15;;-1:-1:-1;;;2098:15:12;;;;;;;;;;;1670:188:8;1797:53;;-1:-1:-1;;;;;7007:15:17;;;1797:53:8;;;6989:34:17;7059:15;;;7039:18;;;7032:43;7091:18;;;7084:34;;;1770:81:8;;1790:5;;1812:18;;;;;6924::17;;1797:53:8;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;1797:53:8;;;;;;;;;;;1770:19;:81::i;:::-;1670:188;;;;:::o;1271:160::-;1380:43;;-1:-1:-1;;;;;7321:32:17;;;1380:43:8;;;7303:51:17;7370:18;;;7363:34;;;1353:71:8;;1373:5;;1395:14;;;;;7276:18:17;;1380:43:8;7129:274:17;1353:71:8;1271:160;;;:::o;2710:117:12:-;1721:16;:14;:16::i;:::-;2778:5:::1;2768:15:::0;;-1:-1:-1;;;;2768:15:12::1;::::0;;2798:22:::1;735:10:10::0;2807:12:12::1;2798:22;::::0;-1:-1:-1;;;;;1204:32:17;;;1186:51;;1174:2;1159:18;2798:22:12::1;;;;;;;2710:117::o:0;2912:187:0:-;2985:16;3004:6;;-1:-1:-1;;;;;3020:17:0;;;-1:-1:-1;;;;;;3020:17:0;;;;;;3052:40;;3004:6;;;;;;;3052:40;;2985:16;3052:40;2975:124;2912:187;:::o;2463:115:12:-;1474:19;:17;:19::i;:::-;2522:7:::1;:14:::0;;-1:-1:-1;;;;2522:14:12::1;-1:-1:-1::0;;;2522:14:12::1;::::0;;2551:20:::1;2558:12;735:10:10::0;;656:96;2575:307:13;1899:1;2702:7;;:18;2698:86;;2743:30;;-1:-1:-1;;;2743:30:13;;;;;;;;;;;2698:86;1899:1;2858:7;:17;2575:307::o;7738:720:8:-;7818:18;7846:19;7984:4;7981:1;7974:4;7968:11;7961:4;7955;7951:15;7948:1;7941:5;7934;7929:60;8041:7;8031:176;;8085:4;8079:11;8130:16;8127:1;8122:3;8107:40;8176:16;8171:3;8164:29;8031:176;-1:-1:-1;;8284:1:8;8278:8;8234:16;;-1:-1:-1;8310:15:8;;:68;;8362:11;8377:1;8362:16;;8310:68;;;-1:-1:-1;;;;;8328:26:8;;;:31;8310:68;8306:146;;;8401:40;;-1:-1:-1;;;8401:40:8;;-1:-1:-1;;;;;1204:32:17;;8401:40:8;;;1186:51:17;1159:18;;8401:40:8;1040:203:17;2202:126:12;1897:4;1920:7;-1:-1:-1;;;1920:7:12;;;;2260:62;;2296:15;;-1:-1:-1;;;2296:15:12;;;;;;;;;;;14:173:17;82:20;;-1:-1:-1;;;;;131:31:17;;121:42;;111:70;;177:1;174;167:12;111:70;14:173;;;:::o;192:460::-;287:6;295;303;311;319;372:3;360:9;351:7;347:23;343:33;340:53;;;389:1;386;379:12;340:53;412:29;431:9;412:29;:::i;:::-;402:39;488:2;473:18;;460:32;;-1:-1:-1;539:2:17;524:18;;511:32;;590:2;575:18;;562:32;;-1:-1:-1;641:3:17;626:19;613:33;;-1:-1:-1;192:460:17;-1:-1:-1;;;192:460:17:o;657:186::-;716:6;769:2;757:9;748:7;744:23;740:32;737:52;;;785:1;782;775:12;737:52;808:29;827:9;808:29;:::i;:::-;798:39;657:186;-1:-1:-1;;;657:186:17:o;4512:348::-;4714:2;4696:21;;;4753:2;4733:18;;;4726:30;4792:26;4787:2;4772:18;;4765:54;4851:2;4836:18;;4512:348::o;4865:127::-;4926:10;4921:3;4917:20;4914:1;4907:31;4957:4;4954:1;4947:15;4981:4;4978:1;4971:15;4997:128;5064:9;;;5085:11;;;5082:37;;;5099:18;;:::i;:::-;4997:128;;;;:::o;5474:125::-;5539:9;;;5560:10;;;5557:36;;;5573:18;;:::i;6354:168::-;6427:9;;;6458;;6475:15;;;6469:22;;6455:37;6445:71;;6496:18;;:::i;6527:217::-;6567:1;6593;6583:132;;6637:10;6632:3;6628:20;6625:1;6618:31;6672:4;6669:1;6662:15;6700:4;6697:1;6690:15;6583:132;-1:-1:-1;6729:9:17;;6527:217::o" }, - "deployedBytecode": { - "functionDebugData": { - "@_checkOwner_84": { - "entryPoint": 3383, - "id": 84, - "parameterSlots": 0, - "returnSlots": 0 - }, - "@_msgSender_915": { - "entryPoint": null, - "id": 915, - "parameterSlots": 0, - "returnSlots": 1 - }, - "@_nonReentrantAfter_1107": { - "entryPoint": null, - "id": 1107, - "parameterSlots": 0, - "returnSlots": 0 - }, - "@_nonReentrantBefore_1099": { - "entryPoint": 3703, - "id": 1099, - "parameterSlots": 0, - "returnSlots": 0 + "methodIdentifiers": { + "addToWhitelist(address)": "e43252d7", + "calculateVestedAmount(address)": "ffa06b2a", + "claimVestedTokens()": "e74f3fbb", + "createVestingSchedule(address,uint256,uint256,uint256,uint256)": "1bf0b08b", + "owner()": "8da5cb5b", + "pause()": "8456cb59", + "paused()": "5c975abb", + "removeFromWhitelist(address)": "8ab1d681", + "renounceOwnership()": "715018a6", + "revokeVesting(address)": "3b0da260", + "token()": "fc0c546a", + "transferOwnership(address)": "f2fde38b", + "unpause()": "3f4ba83a", + "vestingSchedules(address)": "fdb20ccb", + "whitelist(address)": "9b19251a" + } + }, + "metadata": "{\"compiler\":{\"version\":\"0.8.20+commit.a1b79de6\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"internalType\":\"address\",\"name\":\"tokenAddress\",\"type\":\"address\"}],\"stateMutability\":\"nonpayable\",\"type\":\"constructor\"},{\"inputs\":[],\"name\":\"EnforcedPause\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"ExpectedPause\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"}],\"name\":\"OwnableInvalidOwner\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"OwnableUnauthorizedAccount\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"ReentrancyGuardReentrantCall\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"}],\"name\":\"SafeERC20FailedOperation\",\"type\":\"error\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"beneficiary\",\"type\":\"address\"}],\"name\":\"BeneficiaryRemovedFromWhitelist\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"beneficiary\",\"type\":\"address\"}],\"name\":\"BeneficiaryWhitelisted\",\"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\":\"beneficiary\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"TokensClaimed\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"Unpaused\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"beneficiary\",\"type\":\"address\"}],\"name\":\"VestingRevoked\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"beneficiary\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"VestingScheduleCreated\",\"type\":\"event\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"beneficiary\",\"type\":\"address\"}],\"name\":\"addToWhitelist\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"beneficiary\",\"type\":\"address\"}],\"name\":\"calculateVestedAmount\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"claimVestedTokens\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"beneficiary\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"cliffDuration\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"vestingDuration\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"startTime\",\"type\":\"uint256\"}],\"name\":\"createVestingSchedule\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"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\":\"address\",\"name\":\"beneficiary\",\"type\":\"address\"}],\"name\":\"removeFromWhitelist\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"renounceOwnership\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"beneficiary\",\"type\":\"address\"}],\"name\":\"revokeVesting\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"token\",\"outputs\":[{\"internalType\":\"contract IERC20\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"newOwner\",\"type\":\"address\"}],\"name\":\"transferOwnership\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"unpause\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"name\":\"vestingSchedules\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"totalAmount\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"startTime\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"cliffDuration\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"vestingDuration\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"amountClaimed\",\"type\":\"uint256\"},{\"internalType\":\"bool\",\"name\":\"revoked\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"name\":\"whitelist\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"}],\"devdoc\":{\"errors\":{\"EnforcedPause()\":[{\"details\":\"The operation failed because the contract is paused.\"}],\"ExpectedPause()\":[{\"details\":\"The operation failed because the contract is not paused.\"}],\"OwnableInvalidOwner(address)\":[{\"details\":\"The owner is not a valid owner account. (eg. `address(0)`)\"}],\"OwnableUnauthorizedAccount(address)\":[{\"details\":\"The caller account is not authorized to perform an operation.\"}],\"ReentrancyGuardReentrantCall()\":[{\"details\":\"Unauthorized reentrant call.\"}],\"SafeERC20FailedOperation(address)\":[{\"details\":\"An operation with an ERC-20 token failed.\"}]},\"events\":{\"Paused(address)\":{\"details\":\"Emitted when the pause is triggered by `account`.\"},\"Unpaused(address)\":{\"details\":\"Emitted when the pause is lifted by `account`.\"}},\"kind\":\"dev\",\"methods\":{\"owner()\":{\"details\":\"Returns the address of the current owner.\"},\"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. Can only be called by the current owner. NOTE: Renouncing ownership will leave the contract without an owner, thereby disabling any functionality that is only available to the owner.\"},\"transferOwnership(address)\":{\"details\":\"Transfers ownership of the contract to a new account (`newOwner`). Can only be called by the current owner.\"}},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"contracts/TokenVesting.sol\":\"TokenVesting\"},\"evmVersion\":\"london\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":200},\"remappings\":[]},\"sources\":{\"@openzeppelin/contracts/access/Ownable.sol\":{\"keccak256\":\"0xff6d0bb2e285473e5311d9d3caacb525ae3538a80758c10649a4d61029b017bb\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://8ed324d3920bb545059d66ab97d43e43ee85fd3bd52e03e401f020afb0b120f6\",\"dweb:/ipfs/QmfEckWLmZkDDcoWrkEvMWhms66xwTLff9DDhegYpvHo1a\"]},\"@openzeppelin/contracts/interfaces/IERC1363.sol\":{\"keccak256\":\"0x9b6b3e7803bc5f2f8cd7ad57db8ac1def61a9930a5a3107df4882e028a9605d7\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://da62d6be1f5c6edf577f0cb45666a8aa9c2086a4bac87d95d65f02e2f4c36a4b\",\"dweb:/ipfs/QmNkpvBpoCMvX8JwAFNSc5XxJ2q5BXJpL5L1txb4QkqVFF\"]},\"@openzeppelin/contracts/interfaces/IERC165.sol\":{\"keccak256\":\"0xde7e9fd9aee8d4f40772f96bb3b58836cbc6dfc0227014a061947f8821ea9724\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://11fea9f8bc98949ac6709f0c1699db7430d2948137aa94d5a9e95a91f61a710a\",\"dweb:/ipfs/QmQdfRXxQjwP6yn3DVo1GHPpriKNcFghSPi94Z1oKEFUNS\"]},\"@openzeppelin/contracts/interfaces/IERC20.sol\":{\"keccak256\":\"0xce41876e78d1badc0512229b4d14e4daf83bc1003d7f83978d18e0e56f965b9c\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://a2608291cb038b388d80b79a06b6118a42f7894ff67b7da10ec0dbbf5b2973ba\",\"dweb:/ipfs/QmWohqcBLbcxmA4eGPhZDXe5RYMMEEpFq22nfkaUMvTfw1\"]},\"@openzeppelin/contracts/token/ERC20/IERC20.sol\":{\"keccak256\":\"0xe06a3f08a987af6ad2e1c1e774405d4fe08f1694b67517438b467cecf0da0ef7\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://df6f0c459663c9858b6cba2cda1d14a7d05a985bed6d2de72bd8e78c25ee79db\",\"dweb:/ipfs/QmeTTxZ7qVk9rjEv2R4CpCwdf8UMCcRqDNMvzNxHc3Fnn9\"]},\"@openzeppelin/contracts/token/ERC20/utils/SafeERC20.sol\":{\"keccak256\":\"0xca2ae13e0610f6a99238dd00b97bd786bc92732dae6d6b9d61f573ec51018310\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://75f8c71ce0c91c40dd5f249ace0b7d8270f8f1767231bcf71490f7157d6ba862\",\"dweb:/ipfs/QmYXgxeDyFHvz3JsXxLEYN6GNUR44ThHeFj5XkpkgMoG4w\"]},\"@openzeppelin/contracts/utils/Address.sol\":{\"keccak256\":\"0x9d8da059267bac779a2dbbb9a26c2acf00ca83085e105d62d5d4ef96054a47f5\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://c78e2aa4313323cecd1ef12a8d6265b96beee1a199923abf55d9a2a9e291ad23\",\"dweb:/ipfs/QmUTs2KStXucZezzFo3EYeqYu47utu56qrF7jj1Gue65vb\"]},\"@openzeppelin/contracts/utils/Context.sol\":{\"keccak256\":\"0x493033a8d1b176a037b2cc6a04dad01a5c157722049bbecf632ca876224dd4b2\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://6a708e8a5bdb1011c2c381c9a5cfd8a9a956d7d0a9dc1bd8bcdaf52f76ef2f12\",\"dweb:/ipfs/Qmax9WHBnVsZP46ZxEMNRQpLQnrdE4dK8LehML1Py8FowF\"]},\"@openzeppelin/contracts/utils/Errors.sol\":{\"keccak256\":\"0x6afa713bfd42cf0f7656efa91201007ac465e42049d7de1d50753a373648c123\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://ba1d02f4847670a1b83dec9f7d37f0b0418d6043447b69f3a29a5f9efc547fcf\",\"dweb:/ipfs/QmQ7iH2keLNUKgq2xSWcRmuBE5eZ3F5whYAkAGzCNNoEWB\"]},\"@openzeppelin/contracts/utils/Pausable.sol\":{\"keccak256\":\"0xb2e5f50762c27fb4b123e3619c3c02bdcba5e515309382e5bfb6f7d6486510bd\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://1a4b83328c98d518a2699c2cbe9e9b055e78aa57fa8639f1b88deb8b3750b5dc\",\"dweb:/ipfs/QmXdcYj5v7zQxXFPULShHkR5p4Wa2zYuupbHnFdV3cHYtc\"]},\"@openzeppelin/contracts/utils/ReentrancyGuard.sol\":{\"keccak256\":\"0x11a5a79827df29e915a12740caf62fe21ebe27c08c9ae3e09abe9ee3ba3866d3\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://3cf0c69ab827e3251db9ee6a50647d62c90ba580a4d7bbff21f2bea39e7b2f4a\",\"dweb:/ipfs/QmZiKwtKU1SBX4RGfQtY7PZfiapbbu6SZ9vizGQD9UHjRA\"]},\"@openzeppelin/contracts/utils/introspection/IERC165.sol\":{\"keccak256\":\"0x79796192ec90263f21b464d5bc90b777a525971d3de8232be80d9c4f9fb353b8\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://f6fda447a62815e8064f47eff0dd1cf58d9207ad69b5d32280f8d7ed1d1e4621\",\"dweb:/ipfs/QmfDRc7pxfaXB2Dh9np5Uf29Na3pQ7tafRS684wd3GLjVL\"]},\"contracts/TokenVesting.sol\":{\"keccak256\":\"0x47a28453438c76918002ce8baaee3cd77b86488d071eef6441a565d9623eca3b\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://33293658d35067d81d0d7c6d601975dd9b357e61a30bb0f8b4f91624820fec20\",\"dweb:/ipfs/QmYQHtwEcWnRWX4v9ybEXTpgm2aaFREaT9DXDCws54rmSh\"]}},\"version\":1}" + } + }, + "contracts/token.sol": { + "MockERC20": { + "abi": [ + { + "inputs": [ + { + "internalType": "string", + "name": "name", + "type": "string" }, - "@_pause_1033": { - "entryPoint": 3636, - "id": 1033, - "parameterSlots": 0, - "returnSlots": 0 + { + "internalType": "string", + "name": "symbol", + "type": "string" + } + ], + "stateMutability": "nonpayable", + "type": "constructor" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "spender", + "type": "address" }, - "@_requireNotPaused_1004": { - "entryPoint": 3428, - "id": 1004, - "parameterSlots": 0, - "returnSlots": 0 + { + "internalType": "uint256", + "name": "allowance", + "type": "uint256" }, - "@_requirePaused_1017": { - "entryPoint": 3745, - "id": 1017, - "parameterSlots": 0, - "returnSlots": 0 + { + "internalType": "uint256", + "name": "needed", + "type": "uint256" + } + ], + "name": "ERC20InsufficientAllowance", + "type": "error" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "sender", + "type": "address" }, - "@_transferOwnership_146": { - "entryPoint": 3556, - "id": 146, - "parameterSlots": 1, - "returnSlots": 0 + { + "internalType": "uint256", + "name": "balance", + "type": "uint256" }, - "@_unpause_1049": { - "entryPoint": 3471, - "id": 1049, - "parameterSlots": 0, - "returnSlots": 0 + { + "internalType": "uint256", + "name": "needed", + "type": "uint256" + } + ], + "name": "ERC20InsufficientBalance", + "type": "error" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "approver", + "type": "address" + } + ], + "name": "ERC20InvalidApprover", + "type": "error" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "receiver", + "type": "address" + } + ], + "name": "ERC20InvalidReceiver", + "type": "error" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "sender", + "type": "address" + } + ], + "name": "ERC20InvalidSender", + "type": "error" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "spender", + "type": "address" + } + ], + "name": "ERC20InvalidSpender", + "type": "error" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "owner", + "type": "address" + } + ], + "name": "OwnableInvalidOwner", + "type": "error" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "account", + "type": "address" + } + ], + "name": "OwnableUnauthorizedAccount", + "type": "error" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "address", + "name": "owner", + "type": "address" }, - "@addToWhitelist_1283": { - "entryPoint": 2375, - "id": 1283, - "parameterSlots": 1, - "returnSlots": 0 + { + "indexed": true, + "internalType": "address", + "name": "spender", + "type": "address" }, - "@calculateVestedAmount_1475": { - "entryPoint": 3128, - "id": 1475, - "parameterSlots": 1, - "returnSlots": 1 + { + "indexed": false, + "internalType": "uint256", + "name": "value", + "type": "uint256" + } + ], + "name": "Approval", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "address", + "name": "previousOwner", + "type": "address" }, - "@claimVestedTokens_1549": { - "entryPoint": 2531, - "id": 1549, - "parameterSlots": 0, - "returnSlots": 0 + { + "indexed": true, + "internalType": "address", + "name": "newOwner", + "type": "address" + } + ], + "name": "OwnershipTransferred", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "address", + "name": "from", + "type": "address" }, - "@createVestingSchedule_1403": { - "entryPoint": 677, - "id": 1403, - "parameterSlots": 5, - "returnSlots": 0 + { + "indexed": true, + "internalType": "address", + "name": "to", + "type": "address" }, - "@owner_67": { - "entryPoint": null, - "id": 67, - "parameterSlots": 0, - "returnSlots": 1 + { + "indexed": false, + "internalType": "uint256", + "name": "value", + "type": "uint256" + } + ], + "name": "Transfer", + "type": "event" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "owner", + "type": "address" }, - "@pause_1626": { - "entryPoint": 2278, - "id": 1626, - "parameterSlots": 0, - "returnSlots": 0 + { + "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" }, - "@paused_992": { - "entryPoint": null, - "id": 992, - "parameterSlots": 0, - "returnSlots": 1 + { + "internalType": "uint256", + "name": "value", + "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": "decimals", + "outputs": [ + { + "internalType": "uint8", + "name": "", + "type": "uint8" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "to", + "type": "address" }, - "@removeFromWhitelist_1301": { - "entryPoint": 2294, - "id": 1301, - "parameterSlots": 1, - "returnSlots": 0 + { + "internalType": "uint256", + "name": "amount", + "type": "uint256" + } + ], + "name": "mint", + "outputs": [], + "stateMutability": "nonpayable", + "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": "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": [ + { + "internalType": "address", + "name": "to", + "type": "address" }, - "@renounceOwnership_98": { - "entryPoint": 2260, - "id": 98, - "parameterSlots": 0, - "returnSlots": 0 + { + "internalType": "uint256", + "name": "value", + "type": "uint256" + } + ], + "name": "transfer", + "outputs": [ + { + "internalType": "bool", + "name": "", + "type": "bool" + } + ], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "from", + "type": "address" }, - "@revokeVesting_1617": { - "entryPoint": 1753, - "id": 1617, - "parameterSlots": 1, - "returnSlots": 0 + { + "internalType": "address", + "name": "to", + "type": "address" }, - "@token_1187": { + { + "internalType": "uint256", + "name": "value", + "type": "uint256" + } + ], + "name": "transferFrom", + "outputs": [ + { + "internalType": "bool", + "name": "", + "type": "bool" + } + ], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "newOwner", + "type": "address" + } + ], + "name": "transferOwnership", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + } + ], + "evm": { + "bytecode": { + "functionDebugData": { + "@_2421": { "entryPoint": null, - "id": 1187, - "parameterSlots": 0, - "returnSlots": 0 - }, - "@transferOwnership_126": { - "entryPoint": 3066, - "id": 126, - "parameterSlots": 1, - "returnSlots": 0 - }, - "@unpause_1635": { - "entryPoint": 2242, - "id": 1635, - "parameterSlots": 0, + "id": 2421, + "parameterSlots": 2, "returnSlots": 0 }, - "@vestingSchedules_1192": { + "@_426": { "entryPoint": null, - "id": 1192, - "parameterSlots": 0, + "id": 426, + "parameterSlots": 2, "returnSlots": 0 }, - "@whitelist_1196": { + "@_50": { "entryPoint": null, - "id": 1196, - "parameterSlots": 0, + "id": 50, + "parameterSlots": 1, "returnSlots": 0 }, - "abi_decode_address": { - "entryPoint": 3787, - "id": null, + "@_transferOwnership_146": { + "entryPoint": 154, + "id": 146, "parameterSlots": 1, - "returnSlots": 1 + "returnSlots": 0 }, - "abi_decode_tuple_t_address": { - "entryPoint": 3881, + "abi_decode_string_fromMemory": { + "entryPoint": 258, "id": null, "parameterSlots": 2, "returnSlots": 1 }, - "abi_decode_tuple_t_addresst_uint256t_uint256t_uint256t_uint256": { - "entryPoint": 3815, - "id": null, - "parameterSlots": 2, - "returnSlots": 5 - }, - "abi_decode_tuple_t_bool_fromMemory": { - "entryPoint": 3915, + "abi_decode_tuple_t_string_memory_ptrt_string_memory_ptr_fromMemory": { + "entryPoint": 433, "id": null, "parameterSlots": 2, - "returnSlots": 1 + "returnSlots": 2 }, "abi_encode_tuple_t_address__to_t_address__fromStack_reversed": { "entryPoint": null, @@ -29684,146 +39161,38 @@ "parameterSlots": 2, "returnSlots": 1 }, - "abi_encode_tuple_t_address_t_address_t_uint256__to_t_address_t_address_t_uint256__fromStack_reversed": { + "array_dataslot_string_storage": { "entryPoint": null, "id": null, - "parameterSlots": 4, + "parameterSlots": 1, "returnSlots": 1 }, - "abi_encode_tuple_t_address_t_uint256__to_t_address_t_uint256__fromStack_reversed": { - "entryPoint": null, + "clean_up_bytearray_end_slots_string_storage": { + "entryPoint": 599, "id": null, "parameterSlots": 3, - "returnSlots": 1 - }, - "abi_encode_tuple_t_bool__to_t_bool__fromStack_reversed": { - "entryPoint": null, - "id": null, - "parameterSlots": 2, - "returnSlots": 1 + "returnSlots": 0 }, - "abi_encode_tuple_t_contract$_IERC20_$877__to_t_address__fromStack_reversed": { - "entryPoint": null, + "copy_byte_array_to_storage_from_t_string_memory_ptr_to_t_string_storage": { + "entryPoint": 682, "id": null, "parameterSlots": 2, - "returnSlots": 1 - }, - "abi_encode_tuple_t_stringliteral_01c242f1c806840acb94ec05d87d4647010419c53a053a581e0026b3f6467dbb__to_t_string_memory_ptr__fromStack_reversed": { - "entryPoint": null, - "id": null, - "parameterSlots": 1, - "returnSlots": 1 - }, - "abi_encode_tuple_t_stringliteral_0d5449e713a47f03a14de06feb7e7374931b31bbe74b9f8d4277d4797f0eb90e__to_t_string_memory_ptr__fromStack_reversed": { - "entryPoint": null, - "id": null, - "parameterSlots": 1, - "returnSlots": 1 - }, - "abi_encode_tuple_t_stringliteral_1462473b7a4b33d32b109b815fd2324d00c9e5839b707ecf16d0ab5744f99226__to_t_string_memory_ptr__fromStack_reversed": { - "entryPoint": null, - "id": null, - "parameterSlots": 1, - "returnSlots": 1 - }, - "abi_encode_tuple_t_stringliteral_25adaa6d082ce15f901e0d8a3d393e7462ef9edf2e6bc8321fa14d1615b6fc51__to_t_string_memory_ptr__fromStack_reversed": { - "entryPoint": 3949, - "id": null, - "parameterSlots": 1, - "returnSlots": 1 - }, - "abi_encode_tuple_t_stringliteral_2bc716da1b42589a19a25c3316489645c253eec4dab63960fa92efee8bafe791__to_t_string_memory_ptr__fromStack_reversed": { - "entryPoint": null, - "id": null, - "parameterSlots": 1, - "returnSlots": 1 - }, - "abi_encode_tuple_t_stringliteral_30b1e5a1edc6414baa83cc329bc7938b54a51203cd3d130b70720aa20811d690__to_t_string_memory_ptr__fromStack_reversed": { - "entryPoint": null, - "id": null, - "parameterSlots": 1, - "returnSlots": 1 - }, - "abi_encode_tuple_t_stringliteral_33ba6c59384982a33c8d03efd40cd022501542cd14d2a647b97dcbf1ab55c9a8__to_t_string_memory_ptr__fromStack_reversed": { - "entryPoint": null, - "id": null, - "parameterSlots": 1, - "returnSlots": 1 - }, - "abi_encode_tuple_t_stringliteral_4e53fa0d705435dfad68b2037e4c3e913380fae5835e7293c5d3ebab37fd18b6__to_t_string_memory_ptr__fromStack_reversed": { - "entryPoint": null, - "id": null, - "parameterSlots": 1, - "returnSlots": 1 - }, - "abi_encode_tuple_t_stringliteral_5e8b0e873d06a66c9c925ccc2b7b49a9f2193d0e8836f9994126e51985936cff__to_t_string_memory_ptr__fromStack_reversed": { - "entryPoint": null, - "id": null, - "parameterSlots": 1, - "returnSlots": 1 - }, - "abi_encode_tuple_t_stringliteral_6bb1866c2b37a7b751163896084042e2548a35de6f3e7b1e063a1cd2115c9ef9__to_t_string_memory_ptr__fromStack_reversed": { - "entryPoint": null, - "id": null, - "parameterSlots": 1, - "returnSlots": 1 - }, - "abi_encode_tuple_t_stringliteral_86f5acfc12d2804bcf816c0b4c171086bf03352ff286fda75ac8ea27fcfb10a6__to_t_string_memory_ptr__fromStack_reversed": { - "entryPoint": null, - "id": null, - "parameterSlots": 1, - "returnSlots": 1 - }, - "abi_encode_tuple_t_stringliteral_8ecb40193de0ebe87d207ece4ce0c743b9de3a82936a058dc7616916eebf0679__to_t_string_memory_ptr__fromStack_reversed": { - "entryPoint": null, - "id": null, - "parameterSlots": 1, - "returnSlots": 1 + "returnSlots": 0 }, - "abi_encode_tuple_t_stringliteral_ff30964d1d2e395450954287443a47ce4b7aeb0e55cf0d440f942617fe7e784c__to_t_string_memory_ptr__fromStack_reversed": { - "entryPoint": null, + "extract_byte_array_length": { + "entryPoint": 539, "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_uint256_t_uint256_t_uint256_t_uint256_t_bool__to_t_uint256_t_uint256_t_uint256_t_uint256_t_uint256_t_bool__fromStack_reversed": { + "extract_used_part_and_set_length_of_short_byte_array": { "entryPoint": null, "id": null, - "parameterSlots": 7, - "returnSlots": 1 - }, - "checked_add_t_uint256": { - "entryPoint": 4037, - "id": null, - "parameterSlots": 2, - "returnSlots": 1 - }, - "checked_div_t_uint256": { - "entryPoint": 4079, - "id": null, - "parameterSlots": 2, - "returnSlots": 1 - }, - "checked_mul_t_uint256": { - "entryPoint": 4056, - "id": null, - "parameterSlots": 2, - "returnSlots": 1 - }, - "checked_sub_t_uint256": { - "entryPoint": 4012, - "id": null, "parameterSlots": 2, "returnSlots": 1 }, - "panic_error_0x11": { - "entryPoint": 3990, + "panic_error_0x41": { + "entryPoint": 236, "id": null, "parameterSlots": 0, "returnSlots": 0 @@ -29833,201 +39202,138 @@ { "ast": { "nodeType": "YulBlock", - "src": "0:8520:10", + "src": "0:4352:17", "statements": [ { "nodeType": "YulBlock", - "src": "6:3:10", + "src": "6:3:17", "statements": [] }, { "body": { "nodeType": "YulBlock", - "src": "63:124:10", + "src": "46:95:17", "statements": [ { - "nodeType": "YulAssignment", - "src": "73:29:10", - "value": { + "expression": { "arguments": [ { - "name": "offset", - "nodeType": "YulIdentifier", - "src": "95:6:10" - } - ], - "functionName": { - "name": "calldataload", - "nodeType": "YulIdentifier", - "src": "82:12:10" - }, - "nodeType": "YulFunctionCall", - "src": "82:20:10" - }, - "variableNames": [ - { - "name": "value", - "nodeType": "YulIdentifier", - "src": "73:5:10" - } - ] - }, - { - "body": { - "nodeType": "YulBlock", - "src": "165:16:10", - "statements": [ - { - "expression": { - "arguments": [ - { - "kind": "number", - "nodeType": "YulLiteral", - "src": "174:1:10", - "type": "", - "value": "0" - }, - { - "kind": "number", - "nodeType": "YulLiteral", - "src": "177:1:10", - "type": "", - "value": "0" - } - ], - "functionName": { - "name": "revert", - "nodeType": "YulIdentifier", - "src": "167:6:10" - }, - "nodeType": "YulFunctionCall", - "src": "167:12:10" - }, - "nodeType": "YulExpressionStatement", - "src": "167:12:10" - } - ] - }, - "condition": { - "arguments": [ + "kind": "number", + "nodeType": "YulLiteral", + "src": "63:1:17", + "type": "", + "value": "0" + }, { "arguments": [ { - "name": "value", - "nodeType": "YulIdentifier", - "src": "124:5:10" + "kind": "number", + "nodeType": "YulLiteral", + "src": "70:3:17", + "type": "", + "value": "224" }, { - "arguments": [ - { - "name": "value", - "nodeType": "YulIdentifier", - "src": "135:5:10" - }, - { - "arguments": [ - { - "arguments": [ - { - "kind": "number", - "nodeType": "YulLiteral", - "src": "150:3:10", - "type": "", - "value": "160" - }, - { - "kind": "number", - "nodeType": "YulLiteral", - "src": "155:1:10", - "type": "", - "value": "1" - } - ], - "functionName": { - "name": "shl", - "nodeType": "YulIdentifier", - "src": "146:3:10" - }, - "nodeType": "YulFunctionCall", - "src": "146:11:10" - }, - { - "kind": "number", - "nodeType": "YulLiteral", - "src": "159:1:10", - "type": "", - "value": "1" - } - ], - "functionName": { - "name": "sub", - "nodeType": "YulIdentifier", - "src": "142:3:10" - }, - "nodeType": "YulFunctionCall", - "src": "142:19:10" - } - ], - "functionName": { - "name": "and", - "nodeType": "YulIdentifier", - "src": "131:3:10" - }, - "nodeType": "YulFunctionCall", - "src": "131:31:10" + "kind": "number", + "nodeType": "YulLiteral", + "src": "75:10:17", + "type": "", + "value": "0x4e487b71" } ], "functionName": { - "name": "eq", + "name": "shl", "nodeType": "YulIdentifier", - "src": "121:2:10" + "src": "66:3:17" }, "nodeType": "YulFunctionCall", - "src": "121:42:10" + "src": "66:20:17" } ], "functionName": { - "name": "iszero", + "name": "mstore", "nodeType": "YulIdentifier", - "src": "114:6:10" + "src": "56:6:17" }, "nodeType": "YulFunctionCall", - "src": "114:50:10" + "src": "56:31:17" }, - "nodeType": "YulIf", - "src": "111:70:10" + "nodeType": "YulExpressionStatement", + "src": "56:31:17" + }, + { + "expression": { + "arguments": [ + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "103:1:17", + "type": "", + "value": "4" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "106:4:17", + "type": "", + "value": "0x41" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "96:6:17" + }, + "nodeType": "YulFunctionCall", + "src": "96:15:17" + }, + "nodeType": "YulExpressionStatement", + "src": "96:15:17" + }, + { + "expression": { + "arguments": [ + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "127:1:17", + "type": "", + "value": "0" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "130:4:17", + "type": "", + "value": "0x24" + } + ], + "functionName": { + "name": "revert", + "nodeType": "YulIdentifier", + "src": "120:6:17" + }, + "nodeType": "YulFunctionCall", + "src": "120:15:17" + }, + "nodeType": "YulExpressionStatement", + "src": "120:15:17" } ] }, - "name": "abi_decode_address", + "name": "panic_error_0x41", "nodeType": "YulFunctionDefinition", - "parameters": [ - { - "name": "offset", - "nodeType": "YulTypedName", - "src": "42:6:10", - "type": "" - } - ], - "returnVariables": [ - { - "name": "value", - "nodeType": "YulTypedName", - "src": "53:5:10", - "type": "" - } - ], - "src": "14:173:10" + "src": "14:127:17" }, { "body": { "nodeType": "YulBlock", - "src": "330:322:10", + "src": "210:776:17", "statements": [ { "body": { "nodeType": "YulBlock", - "src": "377:16:10", + "src": "259:16:17", "statements": [ { "expression": { @@ -30035,14 +39341,14 @@ { "kind": "number", "nodeType": "YulLiteral", - "src": "386:1:10", + "src": "268:1:17", "type": "", "value": "0" }, { "kind": "number", "nodeType": "YulLiteral", - "src": "389:1:10", + "src": "271:1:17", "type": "", "value": "0" } @@ -30050,13 +39356,13 @@ "functionName": { "name": "revert", "nodeType": "YulIdentifier", - "src": "379:6:10" + "src": "261:6:17" }, "nodeType": "YulFunctionCall", - "src": "379:12:10" + "src": "261:12:17" }, "nodeType": "YulExpressionStatement", - "src": "379:12:10" + "src": "261:12:17" } ] }, @@ -30065,340 +39371,361 @@ { "arguments": [ { - "name": "dataEnd", - "nodeType": "YulIdentifier", - "src": "351:7:10" + "arguments": [ + { + "name": "offset", + "nodeType": "YulIdentifier", + "src": "238:6:17" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "246:4:17", + "type": "", + "value": "0x1f" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "234:3:17" + }, + "nodeType": "YulFunctionCall", + "src": "234:17:17" }, { - "name": "headStart", + "name": "end", "nodeType": "YulIdentifier", - "src": "360:9:10" + "src": "253:3:17" } ], "functionName": { - "name": "sub", + "name": "slt", "nodeType": "YulIdentifier", - "src": "347:3:10" + "src": "230:3:17" }, "nodeType": "YulFunctionCall", - "src": "347:23:10" - }, - { - "kind": "number", - "nodeType": "YulLiteral", - "src": "372:3:10", - "type": "", - "value": "160" + "src": "230:27:17" } ], "functionName": { - "name": "slt", + "name": "iszero", "nodeType": "YulIdentifier", - "src": "343:3:10" + "src": "223:6:17" }, "nodeType": "YulFunctionCall", - "src": "343:33:10" + "src": "223:35:17" }, "nodeType": "YulIf", - "src": "340:53:10" + "src": "220:55:17" }, { - "nodeType": "YulAssignment", - "src": "402:39:10", + "nodeType": "YulVariableDeclaration", + "src": "284:23:17", "value": { "arguments": [ { - "name": "headStart", + "name": "offset", "nodeType": "YulIdentifier", - "src": "431:9:10" + "src": "300:6:17" } ], "functionName": { - "name": "abi_decode_address", + "name": "mload", "nodeType": "YulIdentifier", - "src": "412:18:10" + "src": "294:5:17" }, "nodeType": "YulFunctionCall", - "src": "412:29:10" + "src": "294:13:17" }, - "variableNames": [ + "variables": [ { - "name": "value0", - "nodeType": "YulIdentifier", - "src": "402:6:10" + "name": "_1", + "nodeType": "YulTypedName", + "src": "288:2:17", + "type": "" } ] }, { - "nodeType": "YulAssignment", - "src": "450:42:10", + "nodeType": "YulVariableDeclaration", + "src": "316:28:17", "value": { "arguments": [ { "arguments": [ { - "name": "headStart", - "nodeType": "YulIdentifier", - "src": "477:9:10" + "kind": "number", + "nodeType": "YulLiteral", + "src": "334:2:17", + "type": "", + "value": "64" }, { "kind": "number", "nodeType": "YulLiteral", - "src": "488:2:10", + "src": "338:1:17", "type": "", - "value": "32" + "value": "1" } ], "functionName": { - "name": "add", + "name": "shl", "nodeType": "YulIdentifier", - "src": "473:3:10" + "src": "330:3:17" }, "nodeType": "YulFunctionCall", - "src": "473:18:10" + "src": "330:10:17" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "342:1:17", + "type": "", + "value": "1" } ], "functionName": { - "name": "calldataload", + "name": "sub", "nodeType": "YulIdentifier", - "src": "460:12:10" + "src": "326:3:17" }, "nodeType": "YulFunctionCall", - "src": "460:32:10" + "src": "326:18:17" }, - "variableNames": [ + "variables": [ { - "name": "value1", - "nodeType": "YulIdentifier", - "src": "450:6:10" + "name": "_2", + "nodeType": "YulTypedName", + "src": "320:2:17", + "type": "" } ] }, { - "nodeType": "YulAssignment", - "src": "501:42:10", - "value": { - "arguments": [ + "body": { + "nodeType": "YulBlock", + "src": "367:22:17", + "statements": [ { - "arguments": [ - { - "name": "headStart", + "expression": { + "arguments": [], + "functionName": { + "name": "panic_error_0x41", "nodeType": "YulIdentifier", - "src": "528:9:10" + "src": "369:16:17" }, - { - "kind": "number", - "nodeType": "YulLiteral", - "src": "539:2:10", - "type": "", - "value": "64" - } - ], - "functionName": { - "name": "add", - "nodeType": "YulIdentifier", - "src": "524:3:10" + "nodeType": "YulFunctionCall", + "src": "369:18:17" }, - "nodeType": "YulFunctionCall", - "src": "524:18:10" + "nodeType": "YulExpressionStatement", + "src": "369:18:17" + } + ] + }, + "condition": { + "arguments": [ + { + "name": "_1", + "nodeType": "YulIdentifier", + "src": "359:2:17" + }, + { + "name": "_2", + "nodeType": "YulIdentifier", + "src": "363:2:17" } ], "functionName": { - "name": "calldataload", + "name": "gt", "nodeType": "YulIdentifier", - "src": "511:12:10" + "src": "356:2:17" }, "nodeType": "YulFunctionCall", - "src": "511:32:10" + "src": "356:10:17" }, - "variableNames": [ + "nodeType": "YulIf", + "src": "353:36:17" + }, + { + "nodeType": "YulVariableDeclaration", + "src": "398:17:17", + "value": { + "arguments": [ + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "412:2:17", + "type": "", + "value": "31" + } + ], + "functionName": { + "name": "not", + "nodeType": "YulIdentifier", + "src": "408:3:17" + }, + "nodeType": "YulFunctionCall", + "src": "408:7:17" + }, + "variables": [ { - "name": "value2", - "nodeType": "YulIdentifier", - "src": "501:6:10" + "name": "_3", + "nodeType": "YulTypedName", + "src": "402:2:17", + "type": "" } ] }, { - "nodeType": "YulAssignment", - "src": "552:42:10", + "nodeType": "YulVariableDeclaration", + "src": "424:23:17", "value": { "arguments": [ { - "arguments": [ - { - "name": "headStart", - "nodeType": "YulIdentifier", - "src": "579:9:10" - }, - { - "kind": "number", - "nodeType": "YulLiteral", - "src": "590:2:10", - "type": "", - "value": "96" - } - ], - "functionName": { - "name": "add", - "nodeType": "YulIdentifier", - "src": "575:3:10" - }, - "nodeType": "YulFunctionCall", - "src": "575:18:10" + "kind": "number", + "nodeType": "YulLiteral", + "src": "444:2:17", + "type": "", + "value": "64" } ], "functionName": { - "name": "calldataload", + "name": "mload", "nodeType": "YulIdentifier", - "src": "562:12:10" + "src": "438:5:17" }, "nodeType": "YulFunctionCall", - "src": "562:32:10" + "src": "438:9:17" }, - "variableNames": [ + "variables": [ { - "name": "value3", - "nodeType": "YulIdentifier", - "src": "552:6:10" + "name": "memPtr", + "nodeType": "YulTypedName", + "src": "428:6:17", + "type": "" } ] }, { - "nodeType": "YulAssignment", - "src": "603:43:10", + "nodeType": "YulVariableDeclaration", + "src": "456:71:17", "value": { "arguments": [ + { + "name": "memPtr", + "nodeType": "YulIdentifier", + "src": "478:6:17" + }, { "arguments": [ { - "name": "headStart", - "nodeType": "YulIdentifier", - "src": "630:9:10" + "arguments": [ + { + "arguments": [ + { + "arguments": [ + { + "name": "_1", + "nodeType": "YulIdentifier", + "src": "502:2:17" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "506:4:17", + "type": "", + "value": "0x1f" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "498:3:17" + }, + "nodeType": "YulFunctionCall", + "src": "498:13:17" + }, + { + "name": "_3", + "nodeType": "YulIdentifier", + "src": "513:2:17" + } + ], + "functionName": { + "name": "and", + "nodeType": "YulIdentifier", + "src": "494:3:17" + }, + "nodeType": "YulFunctionCall", + "src": "494:22:17" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "518:2:17", + "type": "", + "value": "63" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "490:3:17" + }, + "nodeType": "YulFunctionCall", + "src": "490:31:17" }, { - "kind": "number", - "nodeType": "YulLiteral", - "src": "641:3:10", - "type": "", - "value": "128" + "name": "_3", + "nodeType": "YulIdentifier", + "src": "523:2:17" } ], "functionName": { - "name": "add", + "name": "and", "nodeType": "YulIdentifier", - "src": "626:3:10" + "src": "486:3:17" }, "nodeType": "YulFunctionCall", - "src": "626:19:10" + "src": "486:40:17" } ], "functionName": { - "name": "calldataload", + "name": "add", "nodeType": "YulIdentifier", - "src": "613:12:10" + "src": "474:3:17" }, "nodeType": "YulFunctionCall", - "src": "613:33:10" + "src": "474:53:17" }, - "variableNames": [ + "variables": [ { - "name": "value4", - "nodeType": "YulIdentifier", - "src": "603:6:10" + "name": "newFreePtr", + "nodeType": "YulTypedName", + "src": "460:10:17", + "type": "" } ] - } - ] - }, - "name": "abi_decode_tuple_t_addresst_uint256t_uint256t_uint256t_uint256", - "nodeType": "YulFunctionDefinition", - "parameters": [ - { - "name": "headStart", - "nodeType": "YulTypedName", - "src": "264:9:10", - "type": "" - }, - { - "name": "dataEnd", - "nodeType": "YulTypedName", - "src": "275:7:10", - "type": "" - } - ], - "returnVariables": [ - { - "name": "value0", - "nodeType": "YulTypedName", - "src": "287:6:10", - "type": "" - }, - { - "name": "value1", - "nodeType": "YulTypedName", - "src": "295:6:10", - "type": "" - }, - { - "name": "value2", - "nodeType": "YulTypedName", - "src": "303:6:10", - "type": "" - }, - { - "name": "value3", - "nodeType": "YulTypedName", - "src": "311:6:10", - "type": "" - }, - { - "name": "value4", - "nodeType": "YulTypedName", - "src": "319:6:10", - "type": "" - } - ], - "src": "192:460:10" - }, - { - "body": { - "nodeType": "YulBlock", - "src": "727:116:10", - "statements": [ + }, { "body": { "nodeType": "YulBlock", - "src": "773:16:10", + "src": "586:22:17", "statements": [ { "expression": { - "arguments": [ - { - "kind": "number", - "nodeType": "YulLiteral", - "src": "782:1:10", - "type": "", - "value": "0" - }, - { - "kind": "number", - "nodeType": "YulLiteral", - "src": "785:1:10", - "type": "", - "value": "0" - } - ], + "arguments": [], "functionName": { - "name": "revert", + "name": "panic_error_0x41", "nodeType": "YulIdentifier", - "src": "775:6:10" + "src": "588:16:17" }, "nodeType": "YulFunctionCall", - "src": "775:12:10" + "src": "588:18:17" }, "nodeType": "YulExpressionStatement", - "src": "775:12:10" + "src": "588:18:17" } ] }, @@ -30407,2062 +39734,3071 @@ { "arguments": [ { - "name": "dataEnd", + "name": "newFreePtr", "nodeType": "YulIdentifier", - "src": "748:7:10" + "src": "545:10:17" }, { - "name": "headStart", + "name": "_2", "nodeType": "YulIdentifier", - "src": "757:9:10" + "src": "557:2:17" } ], "functionName": { - "name": "sub", + "name": "gt", "nodeType": "YulIdentifier", - "src": "744:3:10" + "src": "542:2:17" }, "nodeType": "YulFunctionCall", - "src": "744:23:10" + "src": "542:18:17" }, { - "kind": "number", - "nodeType": "YulLiteral", - "src": "769:2:10", - "type": "", - "value": "32" + "arguments": [ + { + "name": "newFreePtr", + "nodeType": "YulIdentifier", + "src": "565:10:17" + }, + { + "name": "memPtr", + "nodeType": "YulIdentifier", + "src": "577:6:17" + } + ], + "functionName": { + "name": "lt", + "nodeType": "YulIdentifier", + "src": "562:2:17" + }, + "nodeType": "YulFunctionCall", + "src": "562:22:17" } ], "functionName": { - "name": "slt", + "name": "or", "nodeType": "YulIdentifier", - "src": "740:3:10" + "src": "539:2:17" }, "nodeType": "YulFunctionCall", - "src": "740:32:10" + "src": "539:46:17" }, "nodeType": "YulIf", - "src": "737:52:10" + "src": "536:72:17" }, { - "nodeType": "YulAssignment", - "src": "798:39:10", - "value": { + "expression": { "arguments": [ { - "name": "headStart", - "nodeType": "YulIdentifier", - "src": "827:9:10" - } - ], - "functionName": { - "name": "abi_decode_address", - "nodeType": "YulIdentifier", - "src": "808:18:10" - }, - "nodeType": "YulFunctionCall", - "src": "808:29:10" - }, - "variableNames": [ - { - "name": "value0", - "nodeType": "YulIdentifier", - "src": "798:6:10" - } - ] - } - ] - }, - "name": "abi_decode_tuple_t_address", - "nodeType": "YulFunctionDefinition", - "parameters": [ - { - "name": "headStart", - "nodeType": "YulTypedName", - "src": "693:9:10", - "type": "" - }, - { - "name": "dataEnd", - "nodeType": "YulTypedName", - "src": "704:7:10", - "type": "" - } - ], - "returnVariables": [ - { - "name": "value0", - "nodeType": "YulTypedName", - "src": "716:6:10", - "type": "" - } - ], - "src": "657:186:10" - }, - { - "body": { - "nodeType": "YulBlock", - "src": "943:92:10", - "statements": [ + "kind": "number", + "nodeType": "YulLiteral", + "src": "624:2:17", + "type": "", + "value": "64" + }, + { + "name": "newFreePtr", + "nodeType": "YulIdentifier", + "src": "628:10:17" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "617:6:17" + }, + "nodeType": "YulFunctionCall", + "src": "617:22:17" + }, + "nodeType": "YulExpressionStatement", + "src": "617:22:17" + }, { - "nodeType": "YulAssignment", - "src": "953:26:10", - "value": { + "expression": { "arguments": [ { - "name": "headStart", + "name": "memPtr", "nodeType": "YulIdentifier", - "src": "965:9:10" + "src": "655:6:17" }, { - "kind": "number", - "nodeType": "YulLiteral", - "src": "976:2:10", - "type": "", - "value": "32" + "name": "_1", + "nodeType": "YulIdentifier", + "src": "663:2:17" } ], "functionName": { - "name": "add", + "name": "mstore", "nodeType": "YulIdentifier", - "src": "961:3:10" + "src": "648:6:17" }, "nodeType": "YulFunctionCall", - "src": "961:18:10" + "src": "648:18:17" }, - "variableNames": [ + "nodeType": "YulExpressionStatement", + "src": "648:18:17" + }, + { + "nodeType": "YulVariableDeclaration", + "src": "675:14:17", + "value": { + "kind": "number", + "nodeType": "YulLiteral", + "src": "685:4:17", + "type": "", + "value": "0x20" + }, + "variables": [ { - "name": "tail", - "nodeType": "YulIdentifier", - "src": "953:4:10" + "name": "_4", + "nodeType": "YulTypedName", + "src": "679:2:17", + "type": "" } ] }, { - "expression": { - "arguments": [ + "body": { + "nodeType": "YulBlock", + "src": "735:16:17", + "statements": [ { - "name": "headStart", - "nodeType": "YulIdentifier", - "src": "995:9:10" - }, + "expression": { + "arguments": [ + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "744:1:17", + "type": "", + "value": "0" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "747:1:17", + "type": "", + "value": "0" + } + ], + "functionName": { + "name": "revert", + "nodeType": "YulIdentifier", + "src": "737:6:17" + }, + "nodeType": "YulFunctionCall", + "src": "737:12:17" + }, + "nodeType": "YulExpressionStatement", + "src": "737:12:17" + } + ] + }, + "condition": { + "arguments": [ { "arguments": [ { "arguments": [ { - "name": "value0", + "name": "offset", + "nodeType": "YulIdentifier", + "src": "712:6:17" + }, + { + "name": "_1", "nodeType": "YulIdentifier", - "src": "1020:6:10" + "src": "720:2:17" } ], "functionName": { - "name": "iszero", + "name": "add", "nodeType": "YulIdentifier", - "src": "1013:6:10" + "src": "708:3:17" }, "nodeType": "YulFunctionCall", - "src": "1013:14:10" + "src": "708:15:17" + }, + { + "name": "_4", + "nodeType": "YulIdentifier", + "src": "725:2:17" } ], "functionName": { - "name": "iszero", + "name": "add", "nodeType": "YulIdentifier", - "src": "1006:6:10" + "src": "704:3:17" }, "nodeType": "YulFunctionCall", - "src": "1006:22:10" + "src": "704:24:17" + }, + { + "name": "end", + "nodeType": "YulIdentifier", + "src": "730:3:17" } ], "functionName": { - "name": "mstore", + "name": "gt", "nodeType": "YulIdentifier", - "src": "988:6:10" + "src": "701:2:17" }, "nodeType": "YulFunctionCall", - "src": "988:41:10" + "src": "701:33:17" }, - "nodeType": "YulExpressionStatement", - "src": "988:41:10" - } - ] - }, - "name": "abi_encode_tuple_t_bool__to_t_bool__fromStack_reversed", - "nodeType": "YulFunctionDefinition", - "parameters": [ - { - "name": "headStart", - "nodeType": "YulTypedName", - "src": "912:9:10", - "type": "" - }, - { - "name": "value0", - "nodeType": "YulTypedName", - "src": "923:6:10", - "type": "" - } - ], - "returnVariables": [ - { - "name": "tail", - "nodeType": "YulTypedName", - "src": "934:4:10", - "type": "" - } - ], - "src": "848:187:10" - }, - { - "body": { - "nodeType": "YulBlock", - "src": "1141:102:10", - "statements": [ + "nodeType": "YulIf", + "src": "698:53:17" + }, { - "nodeType": "YulAssignment", - "src": "1151:26:10", + "nodeType": "YulVariableDeclaration", + "src": "760:10:17", "value": { + "kind": "number", + "nodeType": "YulLiteral", + "src": "769:1:17", + "type": "", + "value": "0" + }, + "variables": [ + { + "name": "i", + "nodeType": "YulTypedName", + "src": "764:1:17", + "type": "" + } + ] + }, + { + "body": { + "nodeType": "YulBlock", + "src": "825:87:17", + "statements": [ + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "arguments": [ + { + "name": "memPtr", + "nodeType": "YulIdentifier", + "src": "854:6:17" + }, + { + "name": "i", + "nodeType": "YulIdentifier", + "src": "862:1:17" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "850:3:17" + }, + "nodeType": "YulFunctionCall", + "src": "850:14:17" + }, + { + "name": "_4", + "nodeType": "YulIdentifier", + "src": "866:2:17" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "846:3:17" + }, + "nodeType": "YulFunctionCall", + "src": "846:23:17" + }, + { + "arguments": [ + { + "arguments": [ + { + "arguments": [ + { + "name": "offset", + "nodeType": "YulIdentifier", + "src": "885:6:17" + }, + { + "name": "i", + "nodeType": "YulIdentifier", + "src": "893:1:17" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "881:3:17" + }, + "nodeType": "YulFunctionCall", + "src": "881:14:17" + }, + { + "name": "_4", + "nodeType": "YulIdentifier", + "src": "897:2:17" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "877:3:17" + }, + "nodeType": "YulFunctionCall", + "src": "877:23:17" + } + ], + "functionName": { + "name": "mload", + "nodeType": "YulIdentifier", + "src": "871:5:17" + }, + "nodeType": "YulFunctionCall", + "src": "871:30:17" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "839:6:17" + }, + "nodeType": "YulFunctionCall", + "src": "839:63:17" + }, + "nodeType": "YulExpressionStatement", + "src": "839:63:17" + } + ] + }, + "condition": { "arguments": [ { - "name": "headStart", + "name": "i", "nodeType": "YulIdentifier", - "src": "1163:9:10" + "src": "790:1:17" }, { - "kind": "number", - "nodeType": "YulLiteral", - "src": "1174:2:10", - "type": "", - "value": "32" + "name": "_1", + "nodeType": "YulIdentifier", + "src": "793:2:17" + } + ], + "functionName": { + "name": "lt", + "nodeType": "YulIdentifier", + "src": "787:2:17" + }, + "nodeType": "YulFunctionCall", + "src": "787:9:17" + }, + "nodeType": "YulForLoop", + "post": { + "nodeType": "YulBlock", + "src": "797:19:17", + "statements": [ + { + "nodeType": "YulAssignment", + "src": "799:15:17", + "value": { + "arguments": [ + { + "name": "i", + "nodeType": "YulIdentifier", + "src": "808:1:17" + }, + { + "name": "_4", + "nodeType": "YulIdentifier", + "src": "811:2:17" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "804:3:17" + }, + "nodeType": "YulFunctionCall", + "src": "804:10:17" + }, + "variableNames": [ + { + "name": "i", + "nodeType": "YulIdentifier", + "src": "799:1:17" + } + ] } - ], - "functionName": { - "name": "add", - "nodeType": "YulIdentifier", - "src": "1159:3:10" - }, - "nodeType": "YulFunctionCall", - "src": "1159:18:10" + ] }, - "variableNames": [ - { - "name": "tail", - "nodeType": "YulIdentifier", - "src": "1151:4:10" - } - ] + "pre": { + "nodeType": "YulBlock", + "src": "783:3:17", + "statements": [] + }, + "src": "779:133:17" }, { "expression": { "arguments": [ - { - "name": "headStart", - "nodeType": "YulIdentifier", - "src": "1193:9:10" - }, { "arguments": [ - { - "name": "value0", - "nodeType": "YulIdentifier", - "src": "1208:6:10" - }, { "arguments": [ { - "arguments": [ - { - "kind": "number", - "nodeType": "YulLiteral", - "src": "1224:3:10", - "type": "", - "value": "160" - }, - { - "kind": "number", - "nodeType": "YulLiteral", - "src": "1229:1:10", - "type": "", - "value": "1" - } - ], - "functionName": { - "name": "shl", - "nodeType": "YulIdentifier", - "src": "1220:3:10" - }, - "nodeType": "YulFunctionCall", - "src": "1220:11:10" + "name": "memPtr", + "nodeType": "YulIdentifier", + "src": "936:6:17" }, { - "kind": "number", - "nodeType": "YulLiteral", - "src": "1233:1:10", - "type": "", - "value": "1" + "name": "_1", + "nodeType": "YulIdentifier", + "src": "944:2:17" } ], "functionName": { - "name": "sub", + "name": "add", "nodeType": "YulIdentifier", - "src": "1216:3:10" + "src": "932:3:17" }, "nodeType": "YulFunctionCall", - "src": "1216:19:10" + "src": "932:15:17" + }, + { + "name": "_4", + "nodeType": "YulIdentifier", + "src": "949:2:17" } ], "functionName": { - "name": "and", + "name": "add", "nodeType": "YulIdentifier", - "src": "1204:3:10" + "src": "928:3:17" }, "nodeType": "YulFunctionCall", - "src": "1204:32:10" + "src": "928:24:17" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "954:1:17", + "type": "", + "value": "0" } ], "functionName": { "name": "mstore", "nodeType": "YulIdentifier", - "src": "1186:6:10" + "src": "921:6:17" }, "nodeType": "YulFunctionCall", - "src": "1186:51:10" + "src": "921:35:17" }, "nodeType": "YulExpressionStatement", - "src": "1186:51:10" + "src": "921:35:17" + }, + { + "nodeType": "YulAssignment", + "src": "965:15:17", + "value": { + "name": "memPtr", + "nodeType": "YulIdentifier", + "src": "974:6:17" + }, + "variableNames": [ + { + "name": "array", + "nodeType": "YulIdentifier", + "src": "965:5:17" + } + ] } ] }, - "name": "abi_encode_tuple_t_address__to_t_address__fromStack_reversed", + "name": "abi_decode_string_fromMemory", "nodeType": "YulFunctionDefinition", "parameters": [ { - "name": "headStart", + "name": "offset", "nodeType": "YulTypedName", - "src": "1110:9:10", + "src": "184:6:17", "type": "" }, { - "name": "value0", + "name": "end", "nodeType": "YulTypedName", - "src": "1121:6:10", + "src": "192:3:17", "type": "" } ], "returnVariables": [ { - "name": "tail", + "name": "array", "nodeType": "YulTypedName", - "src": "1132:4:10", + "src": "200:5:17", "type": "" } ], - "src": "1040:203:10" + "src": "146:840:17" }, { "body": { "nodeType": "YulBlock", - "src": "1363:102:10", + "src": "1109:444:17", "statements": [ { - "nodeType": "YulAssignment", - "src": "1373:26:10", - "value": { + "body": { + "nodeType": "YulBlock", + "src": "1155:16:17", + "statements": [ + { + "expression": { + "arguments": [ + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "1164:1:17", + "type": "", + "value": "0" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "1167:1:17", + "type": "", + "value": "0" + } + ], + "functionName": { + "name": "revert", + "nodeType": "YulIdentifier", + "src": "1157:6:17" + }, + "nodeType": "YulFunctionCall", + "src": "1157:12:17" + }, + "nodeType": "YulExpressionStatement", + "src": "1157:12:17" + } + ] + }, + "condition": { "arguments": [ { - "name": "headStart", - "nodeType": "YulIdentifier", - "src": "1385:9:10" + "arguments": [ + { + "name": "dataEnd", + "nodeType": "YulIdentifier", + "src": "1130:7:17" + }, + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "1139:9:17" + } + ], + "functionName": { + "name": "sub", + "nodeType": "YulIdentifier", + "src": "1126:3:17" + }, + "nodeType": "YulFunctionCall", + "src": "1126:23:17" }, { "kind": "number", "nodeType": "YulLiteral", - "src": "1396:2:10", + "src": "1151:2:17", "type": "", - "value": "32" + "value": "64" } ], "functionName": { - "name": "add", + "name": "slt", "nodeType": "YulIdentifier", - "src": "1381:3:10" + "src": "1122:3:17" }, "nodeType": "YulFunctionCall", - "src": "1381:18:10" + "src": "1122:32:17" }, - "variableNames": [ - { - "name": "tail", - "nodeType": "YulIdentifier", - "src": "1373:4:10" - } - ] + "nodeType": "YulIf", + "src": "1119:52:17" }, { - "expression": { + "nodeType": "YulVariableDeclaration", + "src": "1180:30:17", + "value": { "arguments": [ { "name": "headStart", "nodeType": "YulIdentifier", - "src": "1415:9:10" - }, - { - "arguments": [ - { - "name": "value0", - "nodeType": "YulIdentifier", - "src": "1430:6:10" - }, - { - "arguments": [ - { - "arguments": [ - { - "kind": "number", - "nodeType": "YulLiteral", - "src": "1446:3:10", - "type": "", - "value": "160" - }, - { - "kind": "number", - "nodeType": "YulLiteral", - "src": "1451:1:10", - "type": "", - "value": "1" - } - ], - "functionName": { - "name": "shl", - "nodeType": "YulIdentifier", - "src": "1442:3:10" - }, - "nodeType": "YulFunctionCall", - "src": "1442:11:10" - }, - { - "kind": "number", - "nodeType": "YulLiteral", - "src": "1455:1:10", - "type": "", - "value": "1" - } - ], - "functionName": { - "name": "sub", - "nodeType": "YulIdentifier", - "src": "1438:3:10" - }, - "nodeType": "YulFunctionCall", - "src": "1438:19:10" - } - ], - "functionName": { - "name": "and", - "nodeType": "YulIdentifier", - "src": "1426:3:10" - }, - "nodeType": "YulFunctionCall", - "src": "1426:32:10" + "src": "1200:9:17" } ], "functionName": { - "name": "mstore", + "name": "mload", "nodeType": "YulIdentifier", - "src": "1408:6:10" + "src": "1194:5:17" }, "nodeType": "YulFunctionCall", - "src": "1408:51:10" + "src": "1194:16:17" }, - "nodeType": "YulExpressionStatement", - "src": "1408:51:10" - } - ] - }, - "name": "abi_encode_tuple_t_contract$_IERC20_$877__to_t_address__fromStack_reversed", - "nodeType": "YulFunctionDefinition", - "parameters": [ - { - "name": "headStart", - "nodeType": "YulTypedName", - "src": "1332:9:10", - "type": "" - }, - { - "name": "value0", - "nodeType": "YulTypedName", - "src": "1343:6:10", - "type": "" - } - ], - "returnVariables": [ - { - "name": "tail", - "nodeType": "YulTypedName", - "src": "1354:4:10", - "type": "" - } - ], - "src": "1248:217:10" - }, - { - "body": { - "nodeType": "YulBlock", - "src": "1705:310:10", - "statements": [ + "variables": [ + { + "name": "offset", + "nodeType": "YulTypedName", + "src": "1184:6:17", + "type": "" + } + ] + }, { - "nodeType": "YulAssignment", - "src": "1715:27:10", + "nodeType": "YulVariableDeclaration", + "src": "1219:28:17", "value": { "arguments": [ { - "name": "headStart", - "nodeType": "YulIdentifier", - "src": "1727:9:10" + "arguments": [ + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "1237:2:17", + "type": "", + "value": "64" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "1241:1:17", + "type": "", + "value": "1" + } + ], + "functionName": { + "name": "shl", + "nodeType": "YulIdentifier", + "src": "1233:3:17" + }, + "nodeType": "YulFunctionCall", + "src": "1233:10:17" }, { "kind": "number", "nodeType": "YulLiteral", - "src": "1738:3:10", + "src": "1245:1:17", "type": "", - "value": "192" + "value": "1" } ], "functionName": { - "name": "add", + "name": "sub", "nodeType": "YulIdentifier", - "src": "1723:3:10" + "src": "1229:3:17" }, "nodeType": "YulFunctionCall", - "src": "1723:19:10" + "src": "1229:18:17" }, - "variableNames": [ + "variables": [ { - "name": "tail", - "nodeType": "YulIdentifier", - "src": "1715:4:10" + "name": "_1", + "nodeType": "YulTypedName", + "src": "1223:2:17", + "type": "" } ] }, { - "expression": { + "body": { + "nodeType": "YulBlock", + "src": "1274:16:17", + "statements": [ + { + "expression": { + "arguments": [ + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "1283:1:17", + "type": "", + "value": "0" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "1286:1:17", + "type": "", + "value": "0" + } + ], + "functionName": { + "name": "revert", + "nodeType": "YulIdentifier", + "src": "1276:6:17" + }, + "nodeType": "YulFunctionCall", + "src": "1276:12:17" + }, + "nodeType": "YulExpressionStatement", + "src": "1276:12:17" + } + ] + }, + "condition": { "arguments": [ { - "name": "headStart", + "name": "offset", "nodeType": "YulIdentifier", - "src": "1758:9:10" + "src": "1262:6:17" }, { - "name": "value0", + "name": "_1", "nodeType": "YulIdentifier", - "src": "1769:6:10" + "src": "1270:2:17" } ], "functionName": { - "name": "mstore", + "name": "gt", "nodeType": "YulIdentifier", - "src": "1751:6:10" + "src": "1259:2:17" }, "nodeType": "YulFunctionCall", - "src": "1751:25:10" + "src": "1259:14:17" }, - "nodeType": "YulExpressionStatement", - "src": "1751:25:10" + "nodeType": "YulIf", + "src": "1256:34:17" }, { - "expression": { + "nodeType": "YulAssignment", + "src": "1299:71:17", + "value": { "arguments": [ { "arguments": [ { "name": "headStart", "nodeType": "YulIdentifier", - "src": "1796:9:10" + "src": "1342:9:17" }, { - "kind": "number", - "nodeType": "YulLiteral", - "src": "1807:2:10", - "type": "", - "value": "32" + "name": "offset", + "nodeType": "YulIdentifier", + "src": "1353:6:17" } ], "functionName": { "name": "add", "nodeType": "YulIdentifier", - "src": "1792:3:10" + "src": "1338:3:17" }, "nodeType": "YulFunctionCall", - "src": "1792:18:10" + "src": "1338:22:17" }, { - "name": "value1", + "name": "dataEnd", "nodeType": "YulIdentifier", - "src": "1812:6:10" + "src": "1362:7:17" } ], "functionName": { - "name": "mstore", + "name": "abi_decode_string_fromMemory", "nodeType": "YulIdentifier", - "src": "1785:6:10" + "src": "1309:28:17" }, "nodeType": "YulFunctionCall", - "src": "1785:34:10" + "src": "1309:61:17" }, - "nodeType": "YulExpressionStatement", - "src": "1785:34:10" + "variableNames": [ + { + "name": "value0", + "nodeType": "YulIdentifier", + "src": "1299:6:17" + } + ] }, { - "expression": { + "nodeType": "YulVariableDeclaration", + "src": "1379:41:17", + "value": { "arguments": [ { "arguments": [ { "name": "headStart", "nodeType": "YulIdentifier", - "src": "1839:9:10" + "src": "1405:9:17" }, { "kind": "number", "nodeType": "YulLiteral", - "src": "1850:2:10", + "src": "1416:2:17", "type": "", - "value": "64" + "value": "32" } ], "functionName": { "name": "add", "nodeType": "YulIdentifier", - "src": "1835:3:10" + "src": "1401:3:17" }, "nodeType": "YulFunctionCall", - "src": "1835:18:10" + "src": "1401:18:17" + } + ], + "functionName": { + "name": "mload", + "nodeType": "YulIdentifier", + "src": "1395:5:17" + }, + "nodeType": "YulFunctionCall", + "src": "1395:25:17" + }, + "variables": [ + { + "name": "offset_1", + "nodeType": "YulTypedName", + "src": "1383:8:17", + "type": "" + } + ] + }, + { + "body": { + "nodeType": "YulBlock", + "src": "1449:16:17", + "statements": [ + { + "expression": { + "arguments": [ + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "1458:1:17", + "type": "", + "value": "0" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "1461:1:17", + "type": "", + "value": "0" + } + ], + "functionName": { + "name": "revert", + "nodeType": "YulIdentifier", + "src": "1451:6:17" + }, + "nodeType": "YulFunctionCall", + "src": "1451:12:17" + }, + "nodeType": "YulExpressionStatement", + "src": "1451:12:17" + } + ] + }, + "condition": { + "arguments": [ + { + "name": "offset_1", + "nodeType": "YulIdentifier", + "src": "1435:8:17" }, { - "name": "value2", + "name": "_1", "nodeType": "YulIdentifier", - "src": "1855:6:10" + "src": "1445:2:17" } ], "functionName": { - "name": "mstore", + "name": "gt", "nodeType": "YulIdentifier", - "src": "1828:6:10" + "src": "1432:2:17" }, "nodeType": "YulFunctionCall", - "src": "1828:34:10" + "src": "1432:16:17" }, - "nodeType": "YulExpressionStatement", - "src": "1828:34:10" + "nodeType": "YulIf", + "src": "1429:36:17" }, { - "expression": { + "nodeType": "YulAssignment", + "src": "1474:73:17", + "value": { "arguments": [ { "arguments": [ { "name": "headStart", "nodeType": "YulIdentifier", - "src": "1882:9:10" + "src": "1517:9:17" }, { - "kind": "number", - "nodeType": "YulLiteral", - "src": "1893:2:10", - "type": "", - "value": "96" + "name": "offset_1", + "nodeType": "YulIdentifier", + "src": "1528:8:17" } ], "functionName": { "name": "add", "nodeType": "YulIdentifier", - "src": "1878:3:10" + "src": "1513:3:17" }, "nodeType": "YulFunctionCall", - "src": "1878:18:10" + "src": "1513:24:17" }, { - "name": "value3", + "name": "dataEnd", + "nodeType": "YulIdentifier", + "src": "1539:7:17" + } + ], + "functionName": { + "name": "abi_decode_string_fromMemory", + "nodeType": "YulIdentifier", + "src": "1484:28:17" + }, + "nodeType": "YulFunctionCall", + "src": "1484:63:17" + }, + "variableNames": [ + { + "name": "value1", + "nodeType": "YulIdentifier", + "src": "1474:6:17" + } + ] + } + ] + }, + "name": "abi_decode_tuple_t_string_memory_ptrt_string_memory_ptr_fromMemory", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "headStart", + "nodeType": "YulTypedName", + "src": "1067:9:17", + "type": "" + }, + { + "name": "dataEnd", + "nodeType": "YulTypedName", + "src": "1078:7:17", + "type": "" + } + ], + "returnVariables": [ + { + "name": "value0", + "nodeType": "YulTypedName", + "src": "1090:6:17", + "type": "" + }, + { + "name": "value1", + "nodeType": "YulTypedName", + "src": "1098:6:17", + "type": "" + } + ], + "src": "991:562:17" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "1613:325:17", + "statements": [ + { + "nodeType": "YulAssignment", + "src": "1623:22:17", + "value": { + "arguments": [ + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "1637:1:17", + "type": "", + "value": "1" + }, + { + "name": "data", + "nodeType": "YulIdentifier", + "src": "1640:4:17" + } + ], + "functionName": { + "name": "shr", + "nodeType": "YulIdentifier", + "src": "1633:3:17" + }, + "nodeType": "YulFunctionCall", + "src": "1633:12:17" + }, + "variableNames": [ + { + "name": "length", + "nodeType": "YulIdentifier", + "src": "1623:6:17" + } + ] + }, + { + "nodeType": "YulVariableDeclaration", + "src": "1654:38:17", + "value": { + "arguments": [ + { + "name": "data", "nodeType": "YulIdentifier", - "src": "1898:6:10" + "src": "1684:4:17" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "1690:1:17", + "type": "", + "value": "1" } ], "functionName": { - "name": "mstore", + "name": "and", "nodeType": "YulIdentifier", - "src": "1871:6:10" + "src": "1680:3:17" }, "nodeType": "YulFunctionCall", - "src": "1871:34:10" + "src": "1680:12:17" }, - "nodeType": "YulExpressionStatement", - "src": "1871:34:10" + "variables": [ + { + "name": "outOfPlaceEncoding", + "nodeType": "YulTypedName", + "src": "1658:18:17", + "type": "" + } + ] }, { - "expression": { - "arguments": [ + "body": { + "nodeType": "YulBlock", + "src": "1731:31:17", + "statements": [ { - "arguments": [ - { - "name": "headStart", + "nodeType": "YulAssignment", + "src": "1733:27:17", + "value": { + "arguments": [ + { + "name": "length", + "nodeType": "YulIdentifier", + "src": "1747:6:17" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "1755:4:17", + "type": "", + "value": "0x7f" + } + ], + "functionName": { + "name": "and", "nodeType": "YulIdentifier", - "src": "1925:9:10" + "src": "1743:3:17" }, + "nodeType": "YulFunctionCall", + "src": "1743:17:17" + }, + "variableNames": [ { - "kind": "number", - "nodeType": "YulLiteral", - "src": "1936:3:10", - "type": "", - "value": "128" + "name": "length", + "nodeType": "YulIdentifier", + "src": "1733:6:17" } - ], - "functionName": { - "name": "add", - "nodeType": "YulIdentifier", - "src": "1921:3:10" - }, - "nodeType": "YulFunctionCall", - "src": "1921:19:10" - }, + ] + } + ] + }, + "condition": { + "arguments": [ { - "name": "value4", + "name": "outOfPlaceEncoding", "nodeType": "YulIdentifier", - "src": "1942:6:10" + "src": "1711:18:17" } ], "functionName": { - "name": "mstore", + "name": "iszero", "nodeType": "YulIdentifier", - "src": "1914:6:10" + "src": "1704:6:17" }, "nodeType": "YulFunctionCall", - "src": "1914:35:10" + "src": "1704:26:17" }, - "nodeType": "YulExpressionStatement", - "src": "1914:35:10" + "nodeType": "YulIf", + "src": "1701:61:17" }, { - "expression": { + "body": { + "nodeType": "YulBlock", + "src": "1821:111:17", + "statements": [ + { + "expression": { + "arguments": [ + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "1842:1:17", + "type": "", + "value": "0" + }, + { + "arguments": [ + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "1849:3:17", + "type": "", + "value": "224" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "1854:10:17", + "type": "", + "value": "0x4e487b71" + } + ], + "functionName": { + "name": "shl", + "nodeType": "YulIdentifier", + "src": "1845:3:17" + }, + "nodeType": "YulFunctionCall", + "src": "1845:20:17" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "1835:6:17" + }, + "nodeType": "YulFunctionCall", + "src": "1835:31:17" + }, + "nodeType": "YulExpressionStatement", + "src": "1835:31:17" + }, + { + "expression": { + "arguments": [ + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "1886:1:17", + "type": "", + "value": "4" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "1889:4:17", + "type": "", + "value": "0x22" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "1879:6:17" + }, + "nodeType": "YulFunctionCall", + "src": "1879:15:17" + }, + "nodeType": "YulExpressionStatement", + "src": "1879:15:17" + }, + { + "expression": { + "arguments": [ + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "1914:1:17", + "type": "", + "value": "0" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "1917:4:17", + "type": "", + "value": "0x24" + } + ], + "functionName": { + "name": "revert", + "nodeType": "YulIdentifier", + "src": "1907:6:17" + }, + "nodeType": "YulFunctionCall", + "src": "1907:15:17" + }, + "nodeType": "YulExpressionStatement", + "src": "1907:15:17" + } + ] + }, + "condition": { "arguments": [ + { + "name": "outOfPlaceEncoding", + "nodeType": "YulIdentifier", + "src": "1777:18:17" + }, { "arguments": [ { - "name": "headStart", + "name": "length", "nodeType": "YulIdentifier", - "src": "1969:9:10" + "src": "1800:6:17" }, { "kind": "number", "nodeType": "YulLiteral", - "src": "1980:3:10", + "src": "1808:2:17", "type": "", - "value": "160" - } - ], - "functionName": { - "name": "add", - "nodeType": "YulIdentifier", - "src": "1965:3:10" - }, - "nodeType": "YulFunctionCall", - "src": "1965:19:10" - }, - { - "arguments": [ - { - "arguments": [ - { - "name": "value5", - "nodeType": "YulIdentifier", - "src": "2000:6:10" - } - ], - "functionName": { - "name": "iszero", - "nodeType": "YulIdentifier", - "src": "1993:6:10" - }, - "nodeType": "YulFunctionCall", - "src": "1993:14:10" + "value": "32" } ], "functionName": { - "name": "iszero", + "name": "lt", "nodeType": "YulIdentifier", - "src": "1986:6:10" + "src": "1797:2:17" }, "nodeType": "YulFunctionCall", - "src": "1986:22:10" + "src": "1797:14:17" } ], "functionName": { - "name": "mstore", + "name": "eq", "nodeType": "YulIdentifier", - "src": "1958:6:10" + "src": "1774:2:17" }, "nodeType": "YulFunctionCall", - "src": "1958:51:10" + "src": "1774:38:17" }, - "nodeType": "YulExpressionStatement", - "src": "1958:51:10" + "nodeType": "YulIf", + "src": "1771:161:17" } ] }, - "name": "abi_encode_tuple_t_uint256_t_uint256_t_uint256_t_uint256_t_uint256_t_bool__to_t_uint256_t_uint256_t_uint256_t_uint256_t_uint256_t_bool__fromStack_reversed", + "name": "extract_byte_array_length", "nodeType": "YulFunctionDefinition", "parameters": [ { - "name": "headStart", - "nodeType": "YulTypedName", - "src": "1634:9:10", - "type": "" - }, - { - "name": "value5", - "nodeType": "YulTypedName", - "src": "1645:6:10", - "type": "" - }, - { - "name": "value4", - "nodeType": "YulTypedName", - "src": "1653:6:10", - "type": "" - }, - { - "name": "value3", - "nodeType": "YulTypedName", - "src": "1661:6:10", - "type": "" - }, - { - "name": "value2", - "nodeType": "YulTypedName", - "src": "1669:6:10", - "type": "" - }, - { - "name": "value1", - "nodeType": "YulTypedName", - "src": "1677:6:10", - "type": "" - }, - { - "name": "value0", + "name": "data", "nodeType": "YulTypedName", - "src": "1685:6:10", + "src": "1593:4:17", "type": "" } ], "returnVariables": [ { - "name": "tail", + "name": "length", "nodeType": "YulTypedName", - "src": "1696:4:10", + "src": "1602:6:17", "type": "" } ], - "src": "1470:545:10" + "src": "1558:380:17" }, { "body": { "nodeType": "YulBlock", - "src": "2121:76:10", + "src": "1999:65:17", "statements": [ + { + "expression": { + "arguments": [ + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "2016:1:17", + "type": "", + "value": "0" + }, + { + "name": "ptr", + "nodeType": "YulIdentifier", + "src": "2019:3:17" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "2009:6:17" + }, + "nodeType": "YulFunctionCall", + "src": "2009:14:17" + }, + "nodeType": "YulExpressionStatement", + "src": "2009:14:17" + }, { "nodeType": "YulAssignment", - "src": "2131:26:10", + "src": "2032:26:17", "value": { "arguments": [ { - "name": "headStart", - "nodeType": "YulIdentifier", - "src": "2143:9:10" + "kind": "number", + "nodeType": "YulLiteral", + "src": "2050:1:17", + "type": "", + "value": "0" }, { "kind": "number", "nodeType": "YulLiteral", - "src": "2154:2:10", + "src": "2053:4:17", "type": "", - "value": "32" + "value": "0x20" } ], "functionName": { - "name": "add", + "name": "keccak256", "nodeType": "YulIdentifier", - "src": "2139:3:10" + "src": "2040:9:17" }, "nodeType": "YulFunctionCall", - "src": "2139:18:10" + "src": "2040:18:17" }, "variableNames": [ { - "name": "tail", + "name": "data", "nodeType": "YulIdentifier", - "src": "2131:4:10" + "src": "2032:4:17" } ] - }, - { - "expression": { - "arguments": [ - { - "name": "headStart", - "nodeType": "YulIdentifier", - "src": "2173:9:10" - }, - { - "name": "value0", - "nodeType": "YulIdentifier", - "src": "2184:6:10" - } - ], - "functionName": { - "name": "mstore", - "nodeType": "YulIdentifier", - "src": "2166:6:10" - }, - "nodeType": "YulFunctionCall", - "src": "2166:25:10" - }, - "nodeType": "YulExpressionStatement", - "src": "2166:25:10" } ] }, - "name": "abi_encode_tuple_t_uint256__to_t_uint256__fromStack_reversed", + "name": "array_dataslot_string_storage", "nodeType": "YulFunctionDefinition", "parameters": [ { - "name": "headStart", - "nodeType": "YulTypedName", - "src": "2090:9:10", - "type": "" - }, - { - "name": "value0", + "name": "ptr", "nodeType": "YulTypedName", - "src": "2101:6:10", + "src": "1982:3:17", "type": "" } ], "returnVariables": [ { - "name": "tail", + "name": "data", "nodeType": "YulTypedName", - "src": "2112:4:10", + "src": "1990:4:17", "type": "" } ], - "src": "2020:177:10" + "src": "1943:121:17" }, { "body": { "nodeType": "YulBlock", - "src": "2376:177:10", + "src": "2150:464:17", "statements": [ { - "expression": { - "arguments": [ + "body": { + "nodeType": "YulBlock", + "src": "2183:425:17", + "statements": [ { - "name": "headStart", - "nodeType": "YulIdentifier", - "src": "2393:9:10" + "nodeType": "YulVariableDeclaration", + "src": "2197:11:17", + "value": { + "kind": "number", + "nodeType": "YulLiteral", + "src": "2207:1:17", + "type": "", + "value": "0" + }, + "variables": [ + { + "name": "_1", + "nodeType": "YulTypedName", + "src": "2201:2:17", + "type": "" + } + ] }, { - "kind": "number", - "nodeType": "YulLiteral", - "src": "2404:2:10", - "type": "", - "value": "32" - } - ], - "functionName": { - "name": "mstore", - "nodeType": "YulIdentifier", - "src": "2386:6:10" - }, - "nodeType": "YulFunctionCall", - "src": "2386:21:10" - }, - "nodeType": "YulExpressionStatement", - "src": "2386:21:10" - }, - { - "expression": { - "arguments": [ + "expression": { + "arguments": [ + { + "name": "_1", + "nodeType": "YulIdentifier", + "src": "2228:2:17" + }, + { + "name": "array", + "nodeType": "YulIdentifier", + "src": "2232:5:17" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "2221:6:17" + }, + "nodeType": "YulFunctionCall", + "src": "2221:17:17" + }, + "nodeType": "YulExpressionStatement", + "src": "2221:17:17" + }, { - "arguments": [ + "nodeType": "YulVariableDeclaration", + "src": "2251:31:17", + "value": { + "arguments": [ + { + "name": "_1", + "nodeType": "YulIdentifier", + "src": "2273:2:17" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "2277:4:17", + "type": "", + "value": "0x20" + } + ], + "functionName": { + "name": "keccak256", + "nodeType": "YulIdentifier", + "src": "2263:9:17" + }, + "nodeType": "YulFunctionCall", + "src": "2263:19:17" + }, + "variables": [ { - "name": "headStart", + "name": "data", + "nodeType": "YulTypedName", + "src": "2255:4:17", + "type": "" + } + ] + }, + { + "nodeType": "YulVariableDeclaration", + "src": "2295:57:17", + "value": { + "arguments": [ + { + "name": "data", + "nodeType": "YulIdentifier", + "src": "2318:4:17" + }, + { + "arguments": [ + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "2328:1:17", + "type": "", + "value": "5" + }, + { + "arguments": [ + { + "name": "startIndex", + "nodeType": "YulIdentifier", + "src": "2335:10:17" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "2347:2:17", + "type": "", + "value": "31" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "2331:3:17" + }, + "nodeType": "YulFunctionCall", + "src": "2331:19:17" + } + ], + "functionName": { + "name": "shr", + "nodeType": "YulIdentifier", + "src": "2324:3:17" + }, + "nodeType": "YulFunctionCall", + "src": "2324:27:17" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "2314:3:17" + }, + "nodeType": "YulFunctionCall", + "src": "2314:38:17" + }, + "variables": [ + { + "name": "deleteStart", + "nodeType": "YulTypedName", + "src": "2299:11:17", + "type": "" + } + ] + }, + { + "body": { + "nodeType": "YulBlock", + "src": "2389:23:17", + "statements": [ + { + "nodeType": "YulAssignment", + "src": "2391:19:17", + "value": { + "name": "data", + "nodeType": "YulIdentifier", + "src": "2406:4:17" + }, + "variableNames": [ + { + "name": "deleteStart", + "nodeType": "YulIdentifier", + "src": "2391:11:17" + } + ] + } + ] + }, + "condition": { + "arguments": [ + { + "name": "startIndex", + "nodeType": "YulIdentifier", + "src": "2371:10:17" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "2383:4:17", + "type": "", + "value": "0x20" + } + ], + "functionName": { + "name": "lt", + "nodeType": "YulIdentifier", + "src": "2368:2:17" + }, + "nodeType": "YulFunctionCall", + "src": "2368:20:17" + }, + "nodeType": "YulIf", + "src": "2365:47:17" + }, + { + "nodeType": "YulVariableDeclaration", + "src": "2425:41:17", + "value": { + "arguments": [ + { + "name": "data", + "nodeType": "YulIdentifier", + "src": "2439:4:17" + }, + { + "arguments": [ + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "2449:1:17", + "type": "", + "value": "5" + }, + { + "arguments": [ + { + "name": "len", + "nodeType": "YulIdentifier", + "src": "2456:3:17" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "2461:2:17", + "type": "", + "value": "31" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "2452:3:17" + }, + "nodeType": "YulFunctionCall", + "src": "2452:12:17" + } + ], + "functionName": { + "name": "shr", + "nodeType": "YulIdentifier", + "src": "2445:3:17" + }, + "nodeType": "YulFunctionCall", + "src": "2445:20:17" + } + ], + "functionName": { + "name": "add", "nodeType": "YulIdentifier", - "src": "2427:9:10" + "src": "2435:3:17" }, + "nodeType": "YulFunctionCall", + "src": "2435:31:17" + }, + "variables": [ { - "kind": "number", - "nodeType": "YulLiteral", - "src": "2438:2:10", - "type": "", - "value": "32" + "name": "_2", + "nodeType": "YulTypedName", + "src": "2429:2:17", + "type": "" } - ], - "functionName": { - "name": "add", + ] + }, + { + "nodeType": "YulVariableDeclaration", + "src": "2479:24:17", + "value": { + "name": "deleteStart", "nodeType": "YulIdentifier", - "src": "2423:3:10" + "src": "2492:11:17" }, - "nodeType": "YulFunctionCall", - "src": "2423:18:10" + "variables": [ + { + "name": "start", + "nodeType": "YulTypedName", + "src": "2483:5:17", + "type": "" + } + ] }, { - "kind": "number", - "nodeType": "YulLiteral", - "src": "2443:2:10", - "type": "", - "value": "27" - } - ], - "functionName": { - "name": "mstore", - "nodeType": "YulIdentifier", - "src": "2416:6:10" - }, - "nodeType": "YulFunctionCall", - "src": "2416:30:10" - }, - "nodeType": "YulExpressionStatement", - "src": "2416:30:10" - }, - { - "expression": { - "arguments": [ - { - "arguments": [ - { - "name": "headStart", + "body": { + "nodeType": "YulBlock", + "src": "2577:21:17", + "statements": [ + { + "expression": { + "arguments": [ + { + "name": "start", + "nodeType": "YulIdentifier", + "src": "2586:5:17" + }, + { + "name": "_1", + "nodeType": "YulIdentifier", + "src": "2593:2:17" + } + ], + "functionName": { + "name": "sstore", + "nodeType": "YulIdentifier", + "src": "2579:6:17" + }, + "nodeType": "YulFunctionCall", + "src": "2579:17:17" + }, + "nodeType": "YulExpressionStatement", + "src": "2579:17:17" + } + ] + }, + "condition": { + "arguments": [ + { + "name": "start", + "nodeType": "YulIdentifier", + "src": "2527:5:17" + }, + { + "name": "_2", + "nodeType": "YulIdentifier", + "src": "2534:2:17" + } + ], + "functionName": { + "name": "lt", "nodeType": "YulIdentifier", - "src": "2466:9:10" + "src": "2524:2:17" }, - { - "kind": "number", - "nodeType": "YulLiteral", - "src": "2477:2:10", - "type": "", - "value": "64" - } - ], - "functionName": { - "name": "add", - "nodeType": "YulIdentifier", - "src": "2462:3:10" + "nodeType": "YulFunctionCall", + "src": "2524:13:17" }, - "nodeType": "YulFunctionCall", - "src": "2462:18:10" - }, - { - "hexValue": "42656e6566696369617279206e6f742077686974656c6973746564", - "kind": "string", - "nodeType": "YulLiteral", - "src": "2482:29:10", - "type": "", - "value": "Beneficiary not whitelisted" - } - ], - "functionName": { - "name": "mstore", - "nodeType": "YulIdentifier", - "src": "2455:6:10" - }, - "nodeType": "YulFunctionCall", - "src": "2455:57:10" - }, - "nodeType": "YulExpressionStatement", - "src": "2455:57:10" - }, - { - "nodeType": "YulAssignment", - "src": "2521:26:10", - "value": { - "arguments": [ - { - "name": "headStart", - "nodeType": "YulIdentifier", - "src": "2533:9:10" - }, - { - "kind": "number", - "nodeType": "YulLiteral", - "src": "2544:2:10", - "type": "", - "value": "96" + "nodeType": "YulForLoop", + "post": { + "nodeType": "YulBlock", + "src": "2538:26:17", + "statements": [ + { + "nodeType": "YulAssignment", + "src": "2540:22:17", + "value": { + "arguments": [ + { + "name": "start", + "nodeType": "YulIdentifier", + "src": "2553:5:17" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "2560:1:17", + "type": "", + "value": "1" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "2549:3:17" + }, + "nodeType": "YulFunctionCall", + "src": "2549:13:17" + }, + "variableNames": [ + { + "name": "start", + "nodeType": "YulIdentifier", + "src": "2540:5:17" + } + ] + } + ] + }, + "pre": { + "nodeType": "YulBlock", + "src": "2520:3:17", + "statements": [] + }, + "src": "2516:82:17" } - ], - "functionName": { - "name": "add", - "nodeType": "YulIdentifier", - "src": "2529:3:10" - }, - "nodeType": "YulFunctionCall", - "src": "2529:18:10" + ] }, - "variableNames": [ - { - "name": "tail", - "nodeType": "YulIdentifier", - "src": "2521:4:10" - } - ] - } - ] - }, - "name": "abi_encode_tuple_t_stringliteral_33ba6c59384982a33c8d03efd40cd022501542cd14d2a647b97dcbf1ab55c9a8__to_t_string_memory_ptr__fromStack_reversed", - "nodeType": "YulFunctionDefinition", - "parameters": [ - { - "name": "headStart", - "nodeType": "YulTypedName", - "src": "2353:9:10", - "type": "" - } - ], - "returnVariables": [ - { - "name": "tail", - "nodeType": "YulTypedName", - "src": "2367:4:10", - "type": "" - } - ], - "src": "2202:351:10" - }, - { - "body": { - "nodeType": "YulBlock", - "src": "2732:169:10", - "statements": [ - { - "expression": { + "condition": { "arguments": [ { - "name": "headStart", + "name": "len", "nodeType": "YulIdentifier", - "src": "2749:9:10" - }, - { - "kind": "number", - "nodeType": "YulLiteral", - "src": "2760:2:10", - "type": "", - "value": "32" - } - ], - "functionName": { - "name": "mstore", - "nodeType": "YulIdentifier", - "src": "2742:6:10" - }, - "nodeType": "YulFunctionCall", - "src": "2742:21:10" - }, - "nodeType": "YulExpressionStatement", - "src": "2742:21:10" - }, - { - "expression": { - "arguments": [ - { - "arguments": [ - { - "name": "headStart", - "nodeType": "YulIdentifier", - "src": "2783:9:10" - }, - { - "kind": "number", - "nodeType": "YulLiteral", - "src": "2794:2:10", - "type": "", - "value": "32" - } - ], - "functionName": { - "name": "add", - "nodeType": "YulIdentifier", - "src": "2779:3:10" - }, - "nodeType": "YulFunctionCall", - "src": "2779:18:10" + "src": "2166:3:17" }, { "kind": "number", "nodeType": "YulLiteral", - "src": "2799:2:10", + "src": "2171:2:17", "type": "", - "value": "19" + "value": "31" } ], "functionName": { - "name": "mstore", + "name": "gt", "nodeType": "YulIdentifier", - "src": "2772:6:10" + "src": "2163:2:17" }, "nodeType": "YulFunctionCall", - "src": "2772:30:10" + "src": "2163:11:17" }, - "nodeType": "YulExpressionStatement", - "src": "2772:30:10" - }, + "nodeType": "YulIf", + "src": "2160:448:17" + } + ] + }, + "name": "clean_up_bytearray_end_slots_string_storage", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "array", + "nodeType": "YulTypedName", + "src": "2122:5:17", + "type": "" + }, + { + "name": "len", + "nodeType": "YulTypedName", + "src": "2129:3:17", + "type": "" + }, + { + "name": "startIndex", + "nodeType": "YulTypedName", + "src": "2134:10:17", + "type": "" + } + ], + "src": "2069:545:17" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "2704:81:17", + "statements": [ { - "expression": { + "nodeType": "YulAssignment", + "src": "2714:65:17", + "value": { "arguments": [ { "arguments": [ { - "name": "headStart", + "name": "data", "nodeType": "YulIdentifier", - "src": "2822:9:10" + "src": "2729:4:17" }, + { + "arguments": [ + { + "arguments": [ + { + "arguments": [ + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "2747:1:17", + "type": "", + "value": "3" + }, + { + "name": "len", + "nodeType": "YulIdentifier", + "src": "2750:3:17" + } + ], + "functionName": { + "name": "shl", + "nodeType": "YulIdentifier", + "src": "2743:3:17" + }, + "nodeType": "YulFunctionCall", + "src": "2743:11:17" + }, + { + "arguments": [ + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "2760:1:17", + "type": "", + "value": "0" + } + ], + "functionName": { + "name": "not", + "nodeType": "YulIdentifier", + "src": "2756:3:17" + }, + "nodeType": "YulFunctionCall", + "src": "2756:6:17" + } + ], + "functionName": { + "name": "shr", + "nodeType": "YulIdentifier", + "src": "2739:3:17" + }, + "nodeType": "YulFunctionCall", + "src": "2739:24:17" + } + ], + "functionName": { + "name": "not", + "nodeType": "YulIdentifier", + "src": "2735:3:17" + }, + "nodeType": "YulFunctionCall", + "src": "2735:29:17" + } + ], + "functionName": { + "name": "and", + "nodeType": "YulIdentifier", + "src": "2725:3:17" + }, + "nodeType": "YulFunctionCall", + "src": "2725:40:17" + }, + { + "arguments": [ { "kind": "number", "nodeType": "YulLiteral", - "src": "2833:2:10", + "src": "2771:1:17", "type": "", - "value": "64" + "value": "1" + }, + { + "name": "len", + "nodeType": "YulIdentifier", + "src": "2774:3:17" } ], "functionName": { - "name": "add", + "name": "shl", "nodeType": "YulIdentifier", - "src": "2818:3:10" + "src": "2767:3:17" }, "nodeType": "YulFunctionCall", - "src": "2818:18:10" - }, - { - "hexValue": "496e76616c69642062656e6566696369617279", - "kind": "string", - "nodeType": "YulLiteral", - "src": "2838:21:10", - "type": "", - "value": "Invalid beneficiary" - } - ], - "functionName": { - "name": "mstore", - "nodeType": "YulIdentifier", - "src": "2811:6:10" - }, - "nodeType": "YulFunctionCall", - "src": "2811:49:10" - }, - "nodeType": "YulExpressionStatement", - "src": "2811:49:10" - }, - { - "nodeType": "YulAssignment", - "src": "2869:26:10", - "value": { - "arguments": [ - { - "name": "headStart", - "nodeType": "YulIdentifier", - "src": "2881:9:10" - }, - { - "kind": "number", - "nodeType": "YulLiteral", - "src": "2892:2:10", - "type": "", - "value": "96" + "src": "2767:11:17" } ], "functionName": { - "name": "add", + "name": "or", "nodeType": "YulIdentifier", - "src": "2877:3:10" + "src": "2722:2:17" }, "nodeType": "YulFunctionCall", - "src": "2877:18:10" + "src": "2722:57:17" }, "variableNames": [ { - "name": "tail", + "name": "used", "nodeType": "YulIdentifier", - "src": "2869:4:10" + "src": "2714:4:17" } ] } ] }, - "name": "abi_encode_tuple_t_stringliteral_86f5acfc12d2804bcf816c0b4c171086bf03352ff286fda75ac8ea27fcfb10a6__to_t_string_memory_ptr__fromStack_reversed", + "name": "extract_used_part_and_set_length_of_short_byte_array", "nodeType": "YulFunctionDefinition", "parameters": [ { - "name": "headStart", + "name": "data", + "nodeType": "YulTypedName", + "src": "2681:4:17", + "type": "" + }, + { + "name": "len", "nodeType": "YulTypedName", - "src": "2709:9:10", + "src": "2687:3:17", "type": "" } ], "returnVariables": [ { - "name": "tail", + "name": "used", "nodeType": "YulTypedName", - "src": "2723:4:10", + "src": "2695:4:17", "type": "" } ], - "src": "2558:343:10" + "src": "2619:166:17" }, { "body": { "nodeType": "YulBlock", - "src": "3080:168:10", + "src": "2886:1256:17", "statements": [ { - "expression": { + "nodeType": "YulVariableDeclaration", + "src": "2896:24:17", + "value": { "arguments": [ { - "name": "headStart", + "name": "src", "nodeType": "YulIdentifier", - "src": "3097:9:10" - }, - { - "kind": "number", - "nodeType": "YulLiteral", - "src": "3108:2:10", - "type": "", - "value": "32" + "src": "2916:3:17" } ], "functionName": { - "name": "mstore", + "name": "mload", "nodeType": "YulIdentifier", - "src": "3090:6:10" + "src": "2910:5:17" }, "nodeType": "YulFunctionCall", - "src": "3090:21:10" + "src": "2910:10:17" }, - "nodeType": "YulExpressionStatement", - "src": "3090:21:10" + "variables": [ + { + "name": "newLen", + "nodeType": "YulTypedName", + "src": "2900:6:17", + "type": "" + } + ] }, { - "expression": { + "body": { + "nodeType": "YulBlock", + "src": "2963:22:17", + "statements": [ + { + "expression": { + "arguments": [], + "functionName": { + "name": "panic_error_0x41", + "nodeType": "YulIdentifier", + "src": "2965:16:17" + }, + "nodeType": "YulFunctionCall", + "src": "2965:18:17" + }, + "nodeType": "YulExpressionStatement", + "src": "2965:18:17" + } + ] + }, + "condition": { "arguments": [ + { + "name": "newLen", + "nodeType": "YulIdentifier", + "src": "2935:6:17" + }, { "arguments": [ { - "name": "headStart", - "nodeType": "YulIdentifier", - "src": "3131:9:10" + "arguments": [ + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "2951:2:17", + "type": "", + "value": "64" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "2955:1:17", + "type": "", + "value": "1" + } + ], + "functionName": { + "name": "shl", + "nodeType": "YulIdentifier", + "src": "2947:3:17" + }, + "nodeType": "YulFunctionCall", + "src": "2947:10:17" }, { "kind": "number", "nodeType": "YulLiteral", - "src": "3142:2:10", + "src": "2959:1:17", "type": "", - "value": "32" + "value": "1" } ], "functionName": { - "name": "add", + "name": "sub", "nodeType": "YulIdentifier", - "src": "3127:3:10" + "src": "2943:3:17" }, "nodeType": "YulFunctionCall", - "src": "3127:18:10" - }, - { - "kind": "number", - "nodeType": "YulLiteral", - "src": "3147:2:10", - "type": "", - "value": "18" + "src": "2943:18:17" } ], "functionName": { - "name": "mstore", + "name": "gt", "nodeType": "YulIdentifier", - "src": "3120:6:10" + "src": "2932:2:17" }, "nodeType": "YulFunctionCall", - "src": "3120:30:10" + "src": "2932:30:17" }, - "nodeType": "YulExpressionStatement", - "src": "3120:30:10" + "nodeType": "YulIf", + "src": "2929:56:17" }, { "expression": { "arguments": [ + { + "name": "slot", + "nodeType": "YulIdentifier", + "src": "3038:4:17" + }, { "arguments": [ { - "name": "headStart", - "nodeType": "YulIdentifier", - "src": "3170:9:10" - }, - { - "kind": "number", - "nodeType": "YulLiteral", - "src": "3181:2:10", - "type": "", - "value": "64" + "arguments": [ + { + "name": "slot", + "nodeType": "YulIdentifier", + "src": "3076:4:17" + } + ], + "functionName": { + "name": "sload", + "nodeType": "YulIdentifier", + "src": "3070:5:17" + }, + "nodeType": "YulFunctionCall", + "src": "3070:11:17" } ], "functionName": { - "name": "add", + "name": "extract_byte_array_length", "nodeType": "YulIdentifier", - "src": "3166:3:10" + "src": "3044:25:17" }, "nodeType": "YulFunctionCall", - "src": "3166:18:10" + "src": "3044:38:17" }, - { - "hexValue": "416d6f756e74206d757374206265203e2030", - "kind": "string", - "nodeType": "YulLiteral", - "src": "3186:20:10", - "type": "", - "value": "Amount must be > 0" + { + "name": "newLen", + "nodeType": "YulIdentifier", + "src": "3084:6:17" } ], "functionName": { - "name": "mstore", + "name": "clean_up_bytearray_end_slots_string_storage", "nodeType": "YulIdentifier", - "src": "3159:6:10" + "src": "2994:43:17" }, "nodeType": "YulFunctionCall", - "src": "3159:48:10" + "src": "2994:97:17" }, "nodeType": "YulExpressionStatement", - "src": "3159:48:10" + "src": "2994:97:17" + }, + { + "nodeType": "YulVariableDeclaration", + "src": "3100:18:17", + "value": { + "kind": "number", + "nodeType": "YulLiteral", + "src": "3117:1:17", + "type": "", + "value": "0" + }, + "variables": [ + { + "name": "srcOffset", + "nodeType": "YulTypedName", + "src": "3104:9:17", + "type": "" + } + ] + }, + { + "nodeType": "YulVariableDeclaration", + "src": "3127:23:17", + "value": { + "kind": "number", + "nodeType": "YulLiteral", + "src": "3146:4:17", + "type": "", + "value": "0x20" + }, + "variables": [ + { + "name": "srcOffset_1", + "nodeType": "YulTypedName", + "src": "3131:11:17", + "type": "" + } + ] }, { "nodeType": "YulAssignment", - "src": "3216:26:10", + "src": "3159:24:17", "value": { - "arguments": [ - { - "name": "headStart", - "nodeType": "YulIdentifier", - "src": "3228:9:10" - }, - { - "kind": "number", - "nodeType": "YulLiteral", - "src": "3239:2:10", - "type": "", - "value": "96" - } - ], - "functionName": { - "name": "add", - "nodeType": "YulIdentifier", - "src": "3224:3:10" - }, - "nodeType": "YulFunctionCall", - "src": "3224:18:10" + "name": "srcOffset_1", + "nodeType": "YulIdentifier", + "src": "3172:11:17" }, "variableNames": [ { - "name": "tail", + "name": "srcOffset", "nodeType": "YulIdentifier", - "src": "3216:4:10" + "src": "3159:9:17" } ] - } - ] - }, - "name": "abi_encode_tuple_t_stringliteral_01c242f1c806840acb94ec05d87d4647010419c53a053a581e0026b3f6467dbb__to_t_string_memory_ptr__fromStack_reversed", - "nodeType": "YulFunctionDefinition", - "parameters": [ - { - "name": "headStart", - "nodeType": "YulTypedName", - "src": "3057:9:10", - "type": "" - } - ], - "returnVariables": [ - { - "name": "tail", - "nodeType": "YulTypedName", - "src": "3071:4:10", - "type": "" - } - ], - "src": "2906:342:10" - }, - { - "body": { - "nodeType": "YulBlock", - "src": "3427:178:10", - "statements": [ - { - "expression": { - "arguments": [ - { - "name": "headStart", - "nodeType": "YulIdentifier", - "src": "3444:9:10" - }, - { - "kind": "number", - "nodeType": "YulLiteral", - "src": "3455:2:10", - "type": "", - "value": "32" - } - ], - "functionName": { - "name": "mstore", - "nodeType": "YulIdentifier", - "src": "3437:6:10" - }, - "nodeType": "YulFunctionCall", - "src": "3437:21:10" - }, - "nodeType": "YulExpressionStatement", - "src": "3437:21:10" }, { - "expression": { - "arguments": [ - { - "arguments": [ + "cases": [ + { + "body": { + "nodeType": "YulBlock", + "src": "3229:656:17", + "statements": [ { - "name": "headStart", - "nodeType": "YulIdentifier", - "src": "3478:9:10" + "nodeType": "YulVariableDeclaration", + "src": "3243:35:17", + "value": { + "arguments": [ + { + "name": "newLen", + "nodeType": "YulIdentifier", + "src": "3262:6:17" + }, + { + "arguments": [ + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "3274:2:17", + "type": "", + "value": "31" + } + ], + "functionName": { + "name": "not", + "nodeType": "YulIdentifier", + "src": "3270:3:17" + }, + "nodeType": "YulFunctionCall", + "src": "3270:7:17" + } + ], + "functionName": { + "name": "and", + "nodeType": "YulIdentifier", + "src": "3258:3:17" + }, + "nodeType": "YulFunctionCall", + "src": "3258:20:17" + }, + "variables": [ + { + "name": "loopEnd", + "nodeType": "YulTypedName", + "src": "3247:7:17", + "type": "" + } + ] + }, + { + "nodeType": "YulVariableDeclaration", + "src": "3291:49:17", + "value": { + "arguments": [ + { + "name": "slot", + "nodeType": "YulIdentifier", + "src": "3335:4:17" + } + ], + "functionName": { + "name": "array_dataslot_string_storage", + "nodeType": "YulIdentifier", + "src": "3305:29:17" + }, + "nodeType": "YulFunctionCall", + "src": "3305:35:17" + }, + "variables": [ + { + "name": "dstPtr", + "nodeType": "YulTypedName", + "src": "3295:6:17", + "type": "" + } + ] + }, + { + "nodeType": "YulVariableDeclaration", + "src": "3353:10:17", + "value": { + "kind": "number", + "nodeType": "YulLiteral", + "src": "3362:1:17", + "type": "", + "value": "0" + }, + "variables": [ + { + "name": "i", + "nodeType": "YulTypedName", + "src": "3357:1:17", + "type": "" + } + ] + }, + { + "body": { + "nodeType": "YulBlock", + "src": "3440:172:17", + "statements": [ + { + "expression": { + "arguments": [ + { + "name": "dstPtr", + "nodeType": "YulIdentifier", + "src": "3465:6:17" + }, + { + "arguments": [ + { + "arguments": [ + { + "name": "src", + "nodeType": "YulIdentifier", + "src": "3483:3:17" + }, + { + "name": "srcOffset", + "nodeType": "YulIdentifier", + "src": "3488:9:17" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "3479:3:17" + }, + "nodeType": "YulFunctionCall", + "src": "3479:19:17" + } + ], + "functionName": { + "name": "mload", + "nodeType": "YulIdentifier", + "src": "3473:5:17" + }, + "nodeType": "YulFunctionCall", + "src": "3473:26:17" + } + ], + "functionName": { + "name": "sstore", + "nodeType": "YulIdentifier", + "src": "3458:6:17" + }, + "nodeType": "YulFunctionCall", + "src": "3458:42:17" + }, + "nodeType": "YulExpressionStatement", + "src": "3458:42:17" + }, + { + "nodeType": "YulAssignment", + "src": "3517:24:17", + "value": { + "arguments": [ + { + "name": "dstPtr", + "nodeType": "YulIdentifier", + "src": "3531:6:17" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "3539:1:17", + "type": "", + "value": "1" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "3527:3:17" + }, + "nodeType": "YulFunctionCall", + "src": "3527:14:17" + }, + "variableNames": [ + { + "name": "dstPtr", + "nodeType": "YulIdentifier", + "src": "3517:6:17" + } + ] + }, + { + "nodeType": "YulAssignment", + "src": "3558:40:17", + "value": { + "arguments": [ + { + "name": "srcOffset", + "nodeType": "YulIdentifier", + "src": "3575:9:17" + }, + { + "name": "srcOffset_1", + "nodeType": "YulIdentifier", + "src": "3586:11:17" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "3571:3:17" + }, + "nodeType": "YulFunctionCall", + "src": "3571:27:17" + }, + "variableNames": [ + { + "name": "srcOffset", + "nodeType": "YulIdentifier", + "src": "3558:9:17" + } + ] + } + ] + }, + "condition": { + "arguments": [ + { + "name": "i", + "nodeType": "YulIdentifier", + "src": "3387:1:17" + }, + { + "name": "loopEnd", + "nodeType": "YulIdentifier", + "src": "3390:7:17" + } + ], + "functionName": { + "name": "lt", + "nodeType": "YulIdentifier", + "src": "3384:2:17" + }, + "nodeType": "YulFunctionCall", + "src": "3384:14:17" + }, + "nodeType": "YulForLoop", + "post": { + "nodeType": "YulBlock", + "src": "3399:28:17", + "statements": [ + { + "nodeType": "YulAssignment", + "src": "3401:24:17", + "value": { + "arguments": [ + { + "name": "i", + "nodeType": "YulIdentifier", + "src": "3410:1:17" + }, + { + "name": "srcOffset_1", + "nodeType": "YulIdentifier", + "src": "3413:11:17" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "3406:3:17" + }, + "nodeType": "YulFunctionCall", + "src": "3406:19:17" + }, + "variableNames": [ + { + "name": "i", + "nodeType": "YulIdentifier", + "src": "3401:1:17" + } + ] + } + ] + }, + "pre": { + "nodeType": "YulBlock", + "src": "3380:3:17", + "statements": [] + }, + "src": "3376:236:17" }, { - "kind": "number", - "nodeType": "YulLiteral", - "src": "3489:2:10", - "type": "", - "value": "32" - } - ], - "functionName": { - "name": "add", - "nodeType": "YulIdentifier", - "src": "3474:3:10" - }, - "nodeType": "YulFunctionCall", - "src": "3474:18:10" - }, - { - "kind": "number", - "nodeType": "YulLiteral", - "src": "3494:2:10", - "type": "", - "value": "28" - } - ], - "functionName": { - "name": "mstore", - "nodeType": "YulIdentifier", - "src": "3467:6:10" - }, - "nodeType": "YulFunctionCall", - "src": "3467:30:10" - }, - "nodeType": "YulExpressionStatement", - "src": "3467:30:10" - }, - { - "expression": { - "arguments": [ - { - "arguments": [ - { - "name": "headStart", - "nodeType": "YulIdentifier", - "src": "3517:9:10" + "body": { + "nodeType": "YulBlock", + "src": "3660:166:17", + "statements": [ + { + "nodeType": "YulVariableDeclaration", + "src": "3678:43:17", + "value": { + "arguments": [ + { + "arguments": [ + { + "name": "src", + "nodeType": "YulIdentifier", + "src": "3705:3:17" + }, + { + "name": "srcOffset", + "nodeType": "YulIdentifier", + "src": "3710:9:17" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "3701:3:17" + }, + "nodeType": "YulFunctionCall", + "src": "3701:19:17" + } + ], + "functionName": { + "name": "mload", + "nodeType": "YulIdentifier", + "src": "3695:5:17" + }, + "nodeType": "YulFunctionCall", + "src": "3695:26:17" + }, + "variables": [ + { + "name": "lastValue", + "nodeType": "YulTypedName", + "src": "3682:9:17", + "type": "" + } + ] + }, + { + "expression": { + "arguments": [ + { + "name": "dstPtr", + "nodeType": "YulIdentifier", + "src": "3745:6:17" + }, + { + "arguments": [ + { + "name": "lastValue", + "nodeType": "YulIdentifier", + "src": "3757:9:17" + }, + { + "arguments": [ + { + "arguments": [ + { + "arguments": [ + { + "arguments": [ + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "3784:1:17", + "type": "", + "value": "3" + }, + { + "name": "newLen", + "nodeType": "YulIdentifier", + "src": "3787:6:17" + } + ], + "functionName": { + "name": "shl", + "nodeType": "YulIdentifier", + "src": "3780:3:17" + }, + "nodeType": "YulFunctionCall", + "src": "3780:14:17" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "3796:3:17", + "type": "", + "value": "248" + } + ], + "functionName": { + "name": "and", + "nodeType": "YulIdentifier", + "src": "3776:3:17" + }, + "nodeType": "YulFunctionCall", + "src": "3776:24:17" + }, + { + "arguments": [ + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "3806:1:17", + "type": "", + "value": "0" + } + ], + "functionName": { + "name": "not", + "nodeType": "YulIdentifier", + "src": "3802:3:17" + }, + "nodeType": "YulFunctionCall", + "src": "3802:6:17" + } + ], + "functionName": { + "name": "shr", + "nodeType": "YulIdentifier", + "src": "3772:3:17" + }, + "nodeType": "YulFunctionCall", + "src": "3772:37:17" + } + ], + "functionName": { + "name": "not", + "nodeType": "YulIdentifier", + "src": "3768:3:17" + }, + "nodeType": "YulFunctionCall", + "src": "3768:42:17" + } + ], + "functionName": { + "name": "and", + "nodeType": "YulIdentifier", + "src": "3753:3:17" + }, + "nodeType": "YulFunctionCall", + "src": "3753:58:17" + } + ], + "functionName": { + "name": "sstore", + "nodeType": "YulIdentifier", + "src": "3738:6:17" + }, + "nodeType": "YulFunctionCall", + "src": "3738:74:17" + }, + "nodeType": "YulExpressionStatement", + "src": "3738:74:17" + } + ] + }, + "condition": { + "arguments": [ + { + "name": "loopEnd", + "nodeType": "YulIdentifier", + "src": "3631:7:17" + }, + { + "name": "newLen", + "nodeType": "YulIdentifier", + "src": "3640:6:17" + } + ], + "functionName": { + "name": "lt", + "nodeType": "YulIdentifier", + "src": "3628:2:17" + }, + "nodeType": "YulFunctionCall", + "src": "3628:19:17" + }, + "nodeType": "YulIf", + "src": "3625:201:17" }, { - "kind": "number", - "nodeType": "YulLiteral", - "src": "3528:2:10", - "type": "", - "value": "64" + "expression": { + "arguments": [ + { + "name": "slot", + "nodeType": "YulIdentifier", + "src": "3846:4:17" + }, + { + "arguments": [ + { + "arguments": [ + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "3860:1:17", + "type": "", + "value": "1" + }, + { + "name": "newLen", + "nodeType": "YulIdentifier", + "src": "3863:6:17" + } + ], + "functionName": { + "name": "shl", + "nodeType": "YulIdentifier", + "src": "3856:3:17" + }, + "nodeType": "YulFunctionCall", + "src": "3856:14:17" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "3872:1:17", + "type": "", + "value": "1" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "3852:3:17" + }, + "nodeType": "YulFunctionCall", + "src": "3852:22:17" + } + ], + "functionName": { + "name": "sstore", + "nodeType": "YulIdentifier", + "src": "3839:6:17" + }, + "nodeType": "YulFunctionCall", + "src": "3839:36:17" + }, + "nodeType": "YulExpressionStatement", + "src": "3839:36:17" } - ], - "functionName": { - "name": "add", - "nodeType": "YulIdentifier", - "src": "3513:3:10" - }, - "nodeType": "YulFunctionCall", - "src": "3513:18:10" - }, - { - "hexValue": "56657374696e67206475726174696f6e206d757374206265203e2030", - "kind": "string", - "nodeType": "YulLiteral", - "src": "3533:30:10", - "type": "", - "value": "Vesting duration must be > 0" - } - ], - "functionName": { - "name": "mstore", - "nodeType": "YulIdentifier", - "src": "3506:6:10" - }, - "nodeType": "YulFunctionCall", - "src": "3506:58:10" - }, - "nodeType": "YulExpressionStatement", - "src": "3506:58:10" - }, - { - "nodeType": "YulAssignment", - "src": "3573:26:10", - "value": { - "arguments": [ - { - "name": "headStart", - "nodeType": "YulIdentifier", - "src": "3585:9:10" + ] }, - { + "nodeType": "YulCase", + "src": "3222:663:17", + "value": { "kind": "number", "nodeType": "YulLiteral", - "src": "3596:2:10", + "src": "3227:1:17", "type": "", - "value": "96" + "value": "1" } - ], - "functionName": { - "name": "add", - "nodeType": "YulIdentifier", - "src": "3581:3:10" }, - "nodeType": "YulFunctionCall", - "src": "3581:18:10" - }, - "variableNames": [ { - "name": "tail", - "nodeType": "YulIdentifier", - "src": "3573:4:10" - } - ] - } - ] - }, - "name": "abi_encode_tuple_t_stringliteral_30b1e5a1edc6414baa83cc329bc7938b54a51203cd3d130b70720aa20811d690__to_t_string_memory_ptr__fromStack_reversed", - "nodeType": "YulFunctionDefinition", - "parameters": [ - { - "name": "headStart", - "nodeType": "YulTypedName", - "src": "3404:9:10", - "type": "" - } - ], - "returnVariables": [ - { - "name": "tail", - "nodeType": "YulTypedName", - "src": "3418:4:10", - "type": "" - } - ], - "src": "3253:352:10" - }, - { - "body": { - "nodeType": "YulBlock", - "src": "3784:223:10", - "statements": [ - { - "expression": { - "arguments": [ - { - "name": "headStart", - "nodeType": "YulIdentifier", - "src": "3801:9:10" - }, - { - "kind": "number", - "nodeType": "YulLiteral", - "src": "3812:2:10", - "type": "", - "value": "32" - } - ], - "functionName": { - "name": "mstore", - "nodeType": "YulIdentifier", - "src": "3794:6:10" - }, - "nodeType": "YulFunctionCall", - "src": "3794:21:10" - }, - "nodeType": "YulExpressionStatement", - "src": "3794:21:10" - }, - { - "expression": { - "arguments": [ - { - "arguments": [ + "body": { + "nodeType": "YulBlock", + "src": "3902:234:17", + "statements": [ { - "name": "headStart", - "nodeType": "YulIdentifier", - "src": "3835:9:10" + "nodeType": "YulVariableDeclaration", + "src": "3916:14:17", + "value": { + "kind": "number", + "nodeType": "YulLiteral", + "src": "3929:1:17", + "type": "", + "value": "0" + }, + "variables": [ + { + "name": "value", + "nodeType": "YulTypedName", + "src": "3920:5:17", + "type": "" + } + ] }, { - "kind": "number", - "nodeType": "YulLiteral", - "src": "3846:2:10", - "type": "", - "value": "32" - } - ], - "functionName": { - "name": "add", - "nodeType": "YulIdentifier", - "src": "3831:3:10" - }, - "nodeType": "YulFunctionCall", - "src": "3831:18:10" - }, - { - "kind": "number", - "nodeType": "YulLiteral", - "src": "3851:2:10", - "type": "", - "value": "33" - } - ], - "functionName": { - "name": "mstore", - "nodeType": "YulIdentifier", - "src": "3824:6:10" - }, - "nodeType": "YulFunctionCall", - "src": "3824:30:10" - }, - "nodeType": "YulExpressionStatement", - "src": "3824:30:10" - }, - { - "expression": { - "arguments": [ - { - "arguments": [ - { - "name": "headStart", - "nodeType": "YulIdentifier", - "src": "3874:9:10" + "body": { + "nodeType": "YulBlock", + "src": "3965:67:17", + "statements": [ + { + "nodeType": "YulAssignment", + "src": "3983:35:17", + "value": { + "arguments": [ + { + "arguments": [ + { + "name": "src", + "nodeType": "YulIdentifier", + "src": "4002:3:17" + }, + { + "name": "srcOffset", + "nodeType": "YulIdentifier", + "src": "4007:9:17" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "3998:3:17" + }, + "nodeType": "YulFunctionCall", + "src": "3998:19:17" + } + ], + "functionName": { + "name": "mload", + "nodeType": "YulIdentifier", + "src": "3992:5:17" + }, + "nodeType": "YulFunctionCall", + "src": "3992:26:17" + }, + "variableNames": [ + { + "name": "value", + "nodeType": "YulIdentifier", + "src": "3983:5:17" + } + ] + } + ] + }, + "condition": { + "name": "newLen", + "nodeType": "YulIdentifier", + "src": "3946:6:17" + }, + "nodeType": "YulIf", + "src": "3943:89:17" }, { - "kind": "number", - "nodeType": "YulLiteral", - "src": "3885:2:10", - "type": "", - "value": "64" + "expression": { + "arguments": [ + { + "name": "slot", + "nodeType": "YulIdentifier", + "src": "4052:4:17" + }, + { + "arguments": [ + { + "name": "value", + "nodeType": "YulIdentifier", + "src": "4111:5:17" + }, + { + "name": "newLen", + "nodeType": "YulIdentifier", + "src": "4118:6:17" + } + ], + "functionName": { + "name": "extract_used_part_and_set_length_of_short_byte_array", + "nodeType": "YulIdentifier", + "src": "4058:52:17" + }, + "nodeType": "YulFunctionCall", + "src": "4058:67:17" + } + ], + "functionName": { + "name": "sstore", + "nodeType": "YulIdentifier", + "src": "4045:6:17" + }, + "nodeType": "YulFunctionCall", + "src": "4045:81:17" + }, + "nodeType": "YulExpressionStatement", + "src": "4045:81:17" } - ], - "functionName": { - "name": "add", - "nodeType": "YulIdentifier", - "src": "3870:3:10" - }, - "nodeType": "YulFunctionCall", - "src": "3870:18:10" + ] }, - { - "hexValue": "56657374696e67206475726174696f6e206d757374206265203e3d20636c6966", - "kind": "string", - "nodeType": "YulLiteral", - "src": "3890:34:10", - "type": "", - "value": "Vesting duration must be >= clif" - } - ], - "functionName": { - "name": "mstore", - "nodeType": "YulIdentifier", - "src": "3863:6:10" - }, - "nodeType": "YulFunctionCall", - "src": "3863:62:10" - }, - "nodeType": "YulExpressionStatement", - "src": "3863:62:10" - }, - { + "nodeType": "YulCase", + "src": "3894:242:17", + "value": "default" + } + ], "expression": { "arguments": [ { - "arguments": [ - { - "name": "headStart", - "nodeType": "YulIdentifier", - "src": "3945:9:10" - }, - { - "kind": "number", - "nodeType": "YulLiteral", - "src": "3956:2:10", - "type": "", - "value": "96" - } - ], - "functionName": { - "name": "add", - "nodeType": "YulIdentifier", - "src": "3941:3:10" - }, - "nodeType": "YulFunctionCall", - "src": "3941:18:10" - }, - { - "hexValue": "66", - "kind": "string", - "nodeType": "YulLiteral", - "src": "3961:3:10", - "type": "", - "value": "f" - } - ], - "functionName": { - "name": "mstore", - "nodeType": "YulIdentifier", - "src": "3934:6:10" - }, - "nodeType": "YulFunctionCall", - "src": "3934:31:10" - }, - "nodeType": "YulExpressionStatement", - "src": "3934:31:10" - }, - { - "nodeType": "YulAssignment", - "src": "3974:27:10", - "value": { - "arguments": [ - { - "name": "headStart", + "name": "newLen", "nodeType": "YulIdentifier", - "src": "3986:9:10" + "src": "3202:6:17" }, { "kind": "number", "nodeType": "YulLiteral", - "src": "3997:3:10", + "src": "3210:2:17", "type": "", - "value": "128" + "value": "31" } ], "functionName": { - "name": "add", + "name": "gt", "nodeType": "YulIdentifier", - "src": "3982:3:10" + "src": "3199:2:17" }, "nodeType": "YulFunctionCall", - "src": "3982:19:10" + "src": "3199:14:17" }, - "variableNames": [ - { - "name": "tail", - "nodeType": "YulIdentifier", - "src": "3974:4:10" - } - ] + "nodeType": "YulSwitch", + "src": "3192:944:17" } ] }, - "name": "abi_encode_tuple_t_stringliteral_4e53fa0d705435dfad68b2037e4c3e913380fae5835e7293c5d3ebab37fd18b6__to_t_string_memory_ptr__fromStack_reversed", + "name": "copy_byte_array_to_storage_from_t_string_memory_ptr_to_t_string_storage", "nodeType": "YulFunctionDefinition", "parameters": [ { - "name": "headStart", + "name": "slot", "nodeType": "YulTypedName", - "src": "3761:9:10", + "src": "2871:4:17", "type": "" - } - ], - "returnVariables": [ + }, { - "name": "tail", + "name": "src", "nodeType": "YulTypedName", - "src": "3775:4:10", + "src": "2877:3:17", "type": "" } ], - "src": "3610:397:10" + "src": "2790:1352:17" }, { "body": { "nodeType": "YulBlock", - "src": "4186:173:10", + "src": "4248:102:17", "statements": [ { - "expression": { + "nodeType": "YulAssignment", + "src": "4258:26:17", + "value": { "arguments": [ { "name": "headStart", "nodeType": "YulIdentifier", - "src": "4203:9:10" + "src": "4270:9:17" }, { "kind": "number", "nodeType": "YulLiteral", - "src": "4214:2:10", + "src": "4281:2:17", "type": "", "value": "32" } ], "functionName": { - "name": "mstore", + "name": "add", "nodeType": "YulIdentifier", - "src": "4196:6:10" + "src": "4266:3:17" }, "nodeType": "YulFunctionCall", - "src": "4196:21:10" + "src": "4266:18:17" }, - "nodeType": "YulExpressionStatement", - "src": "4196:21:10" + "variableNames": [ + { + "name": "tail", + "nodeType": "YulIdentifier", + "src": "4258:4:17" + } + ] }, { "expression": { "arguments": [ { - "arguments": [ - { - "name": "headStart", - "nodeType": "YulIdentifier", - "src": "4237:9:10" - }, - { - "kind": "number", - "nodeType": "YulLiteral", - "src": "4248:2:10", - "type": "", - "value": "32" - } - ], - "functionName": { - "name": "add", - "nodeType": "YulIdentifier", - "src": "4233:3:10" - }, - "nodeType": "YulFunctionCall", - "src": "4233:18:10" + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "4300:9:17" }, - { - "kind": "number", - "nodeType": "YulLiteral", - "src": "4253:2:10", - "type": "", - "value": "23" - } - ], - "functionName": { - "name": "mstore", - "nodeType": "YulIdentifier", - "src": "4226:6:10" - }, - "nodeType": "YulFunctionCall", - "src": "4226:30:10" - }, - "nodeType": "YulExpressionStatement", - "src": "4226:30:10" - }, - { - "expression": { - "arguments": [ { "arguments": [ { - "name": "headStart", + "name": "value0", "nodeType": "YulIdentifier", - "src": "4276:9:10" + "src": "4315:6:17" }, { - "kind": "number", - "nodeType": "YulLiteral", - "src": "4287:2:10", - "type": "", - "value": "64" + "arguments": [ + { + "arguments": [ + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "4331:3:17", + "type": "", + "value": "160" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "4336:1:17", + "type": "", + "value": "1" + } + ], + "functionName": { + "name": "shl", + "nodeType": "YulIdentifier", + "src": "4327:3:17" + }, + "nodeType": "YulFunctionCall", + "src": "4327:11:17" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "4340:1:17", + "type": "", + "value": "1" + } + ], + "functionName": { + "name": "sub", + "nodeType": "YulIdentifier", + "src": "4323:3:17" + }, + "nodeType": "YulFunctionCall", + "src": "4323:19:17" } ], "functionName": { - "name": "add", + "name": "and", "nodeType": "YulIdentifier", - "src": "4272:3:10" + "src": "4311:3:17" }, "nodeType": "YulFunctionCall", - "src": "4272:18:10" - }, - { - "hexValue": "5363686564756c6520616c726561647920657869737473", - "kind": "string", - "nodeType": "YulLiteral", - "src": "4292:25:10", - "type": "", - "value": "Schedule already exists" + "src": "4311:32:17" } ], "functionName": { "name": "mstore", "nodeType": "YulIdentifier", - "src": "4265:6:10" - }, - "nodeType": "YulFunctionCall", - "src": "4265:53:10" - }, - "nodeType": "YulExpressionStatement", - "src": "4265:53:10" - }, - { - "nodeType": "YulAssignment", - "src": "4327:26:10", - "value": { - "arguments": [ - { - "name": "headStart", - "nodeType": "YulIdentifier", - "src": "4339:9:10" - }, - { - "kind": "number", - "nodeType": "YulLiteral", - "src": "4350:2:10", - "type": "", - "value": "96" - } - ], - "functionName": { - "name": "add", - "nodeType": "YulIdentifier", - "src": "4335:3:10" + "src": "4293:6:17" }, - "nodeType": "YulFunctionCall", - "src": "4335:18:10" - }, - "variableNames": [ - { - "name": "tail", - "nodeType": "YulIdentifier", - "src": "4327:4:10" - } - ] + "nodeType": "YulFunctionCall", + "src": "4293:51:17" + }, + "nodeType": "YulExpressionStatement", + "src": "4293:51:17" } ] }, - "name": "abi_encode_tuple_t_stringliteral_2bc716da1b42589a19a25c3316489645c253eec4dab63960fa92efee8bafe791__to_t_string_memory_ptr__fromStack_reversed", + "name": "abi_encode_tuple_t_address__to_t_address__fromStack_reversed", "nodeType": "YulFunctionDefinition", "parameters": [ { "name": "headStart", "nodeType": "YulTypedName", - "src": "4163:9:10", + "src": "4217:9:17", + "type": "" + }, + { + "name": "value0", + "nodeType": "YulTypedName", + "src": "4228:6:17", "type": "" } ], @@ -32470,325 +42806,561 @@ { "name": "tail", "nodeType": "YulTypedName", - "src": "4177:4:10", + "src": "4239:4:17", "type": "" } ], - "src": "4012:347:10" - }, - { - "body": { - "nodeType": "YulBlock", - "src": "4538:178:10", - "statements": [ - { - "expression": { - "arguments": [ - { - "name": "headStart", - "nodeType": "YulIdentifier", - "src": "4555:9:10" - }, - { - "kind": "number", - "nodeType": "YulLiteral", - "src": "4566:2:10", - "type": "", - "value": "32" - } - ], - "functionName": { - "name": "mstore", - "nodeType": "YulIdentifier", - "src": "4548:6:10" - }, - "nodeType": "YulFunctionCall", - "src": "4548:21:10" - }, - "nodeType": "YulExpressionStatement", - "src": "4548:21:10" - }, - { - "expression": { - "arguments": [ - { - "arguments": [ - { - "name": "headStart", - "nodeType": "YulIdentifier", - "src": "4589:9:10" - }, - { - "kind": "number", - "nodeType": "YulLiteral", - "src": "4600:2:10", - "type": "", - "value": "32" - } - ], - "functionName": { - "name": "add", - "nodeType": "YulIdentifier", - "src": "4585:3:10" - }, - "nodeType": "YulFunctionCall", - "src": "4585:18:10" - }, - { - "kind": "number", - "nodeType": "YulLiteral", - "src": "4605:2:10", - "type": "", - "value": "28" - } - ], - "functionName": { - "name": "mstore", - "nodeType": "YulIdentifier", - "src": "4578:6:10" - }, - "nodeType": "YulFunctionCall", - "src": "4578:30:10" + "src": "4147:203:17" + } + ] + }, + "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 mstore(add(add(memPtr, _1), _4), 0)\n array := memPtr\n }\n function abi_decode_tuple_t_string_memory_ptrt_string_memory_ptr_fromMemory(headStart, dataEnd) -> value0, value1\n {\n if slt(sub(dataEnd, headStart), 64) { revert(0, 0) }\n let offset := mload(headStart)\n let _1 := sub(shl(64, 1), 1)\n if gt(offset, _1) { revert(0, 0) }\n value0 := abi_decode_string_fromMemory(add(headStart, offset), dataEnd)\n let offset_1 := mload(add(headStart, 32))\n if gt(offset_1, _1) { revert(0, 0) }\n value1 := 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 function array_dataslot_string_storage(ptr) -> data\n {\n mstore(0, ptr)\n data := keccak256(0, 0x20)\n }\n function clean_up_bytearray_end_slots_string_storage(array, len, startIndex)\n {\n if gt(len, 31)\n {\n let _1 := 0\n mstore(_1, array)\n let data := keccak256(_1, 0x20)\n let deleteStart := add(data, shr(5, add(startIndex, 31)))\n if lt(startIndex, 0x20) { deleteStart := data }\n let _2 := add(data, shr(5, add(len, 31)))\n let start := deleteStart\n for { } lt(start, _2) { start := add(start, 1) }\n { sstore(start, _1) }\n }\n }\n function extract_used_part_and_set_length_of_short_byte_array(data, len) -> used\n {\n used := or(and(data, not(shr(shl(3, len), not(0)))), shl(1, len))\n }\n function copy_byte_array_to_storage_from_t_string_memory_ptr_to_t_string_storage(slot, src)\n {\n let newLen := mload(src)\n if gt(newLen, sub(shl(64, 1), 1)) { panic_error_0x41() }\n clean_up_bytearray_end_slots_string_storage(slot, extract_byte_array_length(sload(slot)), newLen)\n let srcOffset := 0\n let srcOffset_1 := 0x20\n srcOffset := srcOffset_1\n switch gt(newLen, 31)\n case 1 {\n let loopEnd := and(newLen, not(31))\n let dstPtr := array_dataslot_string_storage(slot)\n let i := 0\n for { } lt(i, loopEnd) { i := add(i, srcOffset_1) }\n {\n sstore(dstPtr, mload(add(src, srcOffset)))\n dstPtr := add(dstPtr, 1)\n srcOffset := add(srcOffset, srcOffset_1)\n }\n if lt(loopEnd, newLen)\n {\n let lastValue := mload(add(src, srcOffset))\n sstore(dstPtr, and(lastValue, not(shr(and(shl(3, newLen), 248), not(0)))))\n }\n sstore(slot, add(shl(1, newLen), 1))\n }\n default {\n let value := 0\n if newLen\n {\n value := mload(add(src, srcOffset))\n }\n sstore(slot, extract_used_part_and_set_length_of_short_byte_array(value, newLen))\n }\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": 17, + "language": "Yul", + "name": "#utility.yul" + } + ], + "linkReferences": {}, + "object": "60806040523480156200001157600080fd5b5060405162000c4a38038062000c4a8339810160408190526200003491620001b1565b3382826003620000458382620002aa565b506004620000548282620002aa565b5050506001600160a01b0381166200008657604051631e4fbdf760e01b81526000600482015260240160405180910390fd5b62000091816200009a565b50505062000376565b600580546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b634e487b7160e01b600052604160045260246000fd5b600082601f8301126200011457600080fd5b81516001600160401b0380821115620001315762000131620000ec565b604051601f8301601f19908116603f011681019082821181831017156200015c576200015c620000ec565b816040528381526020925086838588010111156200017957600080fd5b600091505b838210156200019d57858201830151818301840152908201906200017e565b600093810190920192909252949350505050565b60008060408385031215620001c557600080fd5b82516001600160401b0380821115620001dd57600080fd5b620001eb8683870162000102565b935060208501519150808211156200020257600080fd5b50620002118582860162000102565b9150509250929050565b600181811c908216806200023057607f821691505b6020821081036200025157634e487b7160e01b600052602260045260246000fd5b50919050565b601f821115620002a557600081815260208120601f850160051c81016020861015620002805750805b601f850160051c820191505b81811015620002a1578281556001016200028c565b5050505b505050565b81516001600160401b03811115620002c657620002c6620000ec565b620002de81620002d784546200021b565b8462000257565b602080601f831160018114620003165760008415620002fd5750858301515b600019600386901b1c1916600185901b178555620002a1565b600085815260208120601f198616915b82811015620003475788860151825594840194600190910190840162000326565b5085821015620003665787850151600019600388901b60f8161c191681555b5050505050600190811b01905550565b6108c480620003866000396000f3fe608060405234801561001057600080fd5b50600436106100cf5760003560e01c806370a082311161008c57806395d89b411161006657806395d89b41146101aa578063a9059cbb146101b2578063dd62ed3e146101c5578063f2fde38b146101fe57600080fd5b806370a082311461015e578063715018a6146101875780638da5cb5b1461018f57600080fd5b806306fdde03146100d4578063095ea7b3146100f257806318160ddd1461011557806323b872dd14610127578063313ce5671461013a57806340c10f1914610149575b600080fd5b6100dc610211565b6040516100e9919061070e565b60405180910390f35b610105610100366004610778565b6102a3565b60405190151581526020016100e9565b6002545b6040519081526020016100e9565b6101056101353660046107a2565b6102bd565b604051601281526020016100e9565b61015c610157366004610778565b6102e1565b005b61011961016c3660046107de565b6001600160a01b031660009081526020819052604090205490565b61015c6102f7565b6005546040516001600160a01b0390911681526020016100e9565b6100dc61030b565b6101056101c0366004610778565b61031a565b6101196101d3366004610800565b6001600160a01b03918216600090815260016020908152604080832093909416825291909152205490565b61015c61020c3660046107de565b610328565b60606003805461022090610833565b80601f016020809104026020016040519081016040528092919081815260200182805461024c90610833565b80156102995780601f1061026e57610100808354040283529160200191610299565b820191906000526020600020905b81548152906001019060200180831161027c57829003601f168201915b5050505050905090565b6000336102b181858561036b565b60019150505b92915050565b6000336102cb85828561037d565b6102d68585856103fb565b506001949350505050565b6102e961045a565b6102f38282610487565b5050565b6102ff61045a565b61030960006104bd565b565b60606004805461022090610833565b6000336102b18185856103fb565b61033061045a565b6001600160a01b03811661035f57604051631e4fbdf760e01b8152600060048201526024015b60405180910390fd5b610368816104bd565b50565b610378838383600161050f565b505050565b6001600160a01b0383811660009081526001602090815260408083209386168352929052205460001981146103f557818110156103e657604051637dc7a0d960e11b81526001600160a01b03841660048201526024810182905260448101839052606401610356565b6103f58484848403600061050f565b50505050565b6001600160a01b03831661042557604051634b637e8f60e11b815260006004820152602401610356565b6001600160a01b03821661044f5760405163ec442f0560e01b815260006004820152602401610356565b6103788383836105e4565b6005546001600160a01b031633146103095760405163118cdaa760e01b8152336004820152602401610356565b6001600160a01b0382166104b15760405163ec442f0560e01b815260006004820152602401610356565b6102f3600083836105e4565b600580546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b6001600160a01b0384166105395760405163e602df0560e01b815260006004820152602401610356565b6001600160a01b03831661056357604051634a1406b160e11b815260006004820152602401610356565b6001600160a01b03808516600090815260016020908152604080832093871683529290522082905580156103f557826001600160a01b0316846001600160a01b03167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925846040516105d691815260200190565b60405180910390a350505050565b6001600160a01b03831661060f578060026000828254610604919061086d565b909155506106819050565b6001600160a01b038316600090815260208190526040902054818110156106625760405163391434e360e21b81526001600160a01b03851660048201526024810182905260448101839052606401610356565b6001600160a01b03841660009081526020819052604090209082900390555b6001600160a01b03821661069d576002805482900390556106bc565b6001600160a01b03821660009081526020819052604090208054820190555b816001600160a01b0316836001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8360405161070191815260200190565b60405180910390a3505050565b600060208083528351808285015260005b8181101561073b5785810183015185820160400152820161071f565b506000604082860101526040601f19601f8301168501019250505092915050565b80356001600160a01b038116811461077357600080fd5b919050565b6000806040838503121561078b57600080fd5b6107948361075c565b946020939093013593505050565b6000806000606084860312156107b757600080fd5b6107c08461075c565b92506107ce6020850161075c565b9150604084013590509250925092565b6000602082840312156107f057600080fd5b6107f98261075c565b9392505050565b6000806040838503121561081357600080fd5b61081c8361075c565b915061082a6020840161075c565b90509250929050565b600181811c9082168061084757607f821691505b60208210810361086757634e487b7160e01b600052602260045260246000fd5b50919050565b808201808211156102b757634e487b7160e01b600052601160045260246000fdfea26469706673582212207e02bff7c92f01729cf8b1aa0b1f4bc1de2f54967781bde4fef96819d035982264736f6c63430008140033", + "opcodes": "PUSH1 0x80 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH3 0x11 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x40 MLOAD PUSH3 0xC4A CODESIZE SUB DUP1 PUSH3 0xC4A DUP4 CODECOPY DUP2 ADD PUSH1 0x40 DUP2 SWAP1 MSTORE PUSH3 0x34 SWAP2 PUSH3 0x1B1 JUMP JUMPDEST CALLER DUP3 DUP3 PUSH1 0x3 PUSH3 0x45 DUP4 DUP3 PUSH3 0x2AA JUMP JUMPDEST POP PUSH1 0x4 PUSH3 0x54 DUP3 DUP3 PUSH3 0x2AA JUMP JUMPDEST POP POP POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND PUSH3 0x86 JUMPI PUSH1 0x40 MLOAD PUSH4 0x1E4FBDF7 PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x0 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x24 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH3 0x91 DUP2 PUSH3 0x9A JUMP JUMPDEST POP POP POP PUSH3 0x376 JUMP JUMPDEST PUSH1 0x5 DUP1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP4 DUP2 AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB NOT DUP4 AND DUP2 OR SWAP1 SWAP4 SSTORE PUSH1 0x40 MLOAD SWAP2 AND SWAP2 SWAP1 DUP3 SWAP1 PUSH32 0x8BE0079C531659141344CD1FD0A4F28419497F9722A3DAAFE3B4186F6B6457E0 SWAP1 PUSH1 0x0 SWAP1 LOG3 POP POP 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 0x114 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB DUP1 DUP3 GT ISZERO PUSH3 0x131 JUMPI PUSH3 0x131 PUSH3 0xEC 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 0x15C JUMPI PUSH3 0x15C PUSH3 0xEC JUMP JUMPDEST DUP2 PUSH1 0x40 MSTORE DUP4 DUP2 MSTORE PUSH1 0x20 SWAP3 POP DUP7 DUP4 DUP6 DUP9 ADD ADD GT ISZERO PUSH3 0x179 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 SWAP2 POP JUMPDEST DUP4 DUP3 LT ISZERO PUSH3 0x19D JUMPI DUP6 DUP3 ADD DUP4 ADD MLOAD DUP2 DUP4 ADD DUP5 ADD MSTORE SWAP1 DUP3 ADD SWAP1 PUSH3 0x17E JUMP JUMPDEST PUSH1 0x0 SWAP4 DUP2 ADD SWAP1 SWAP3 ADD SWAP3 SWAP1 SWAP3 MSTORE SWAP5 SWAP4 POP POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH3 0x1C5 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB DUP1 DUP3 GT ISZERO PUSH3 0x1DD JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH3 0x1EB DUP7 DUP4 DUP8 ADD PUSH3 0x102 JUMP JUMPDEST SWAP4 POP PUSH1 0x20 DUP6 ADD MLOAD SWAP2 POP DUP1 DUP3 GT ISZERO PUSH3 0x202 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH3 0x211 DUP6 DUP3 DUP7 ADD PUSH3 0x102 JUMP JUMPDEST SWAP2 POP POP SWAP3 POP SWAP3 SWAP1 POP JUMP JUMPDEST PUSH1 0x1 DUP2 DUP2 SHR SWAP1 DUP3 AND DUP1 PUSH3 0x230 JUMPI PUSH1 0x7F DUP3 AND SWAP2 POP JUMPDEST PUSH1 0x20 DUP3 LT DUP2 SUB PUSH3 0x251 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 0x1F DUP3 GT ISZERO PUSH3 0x2A5 JUMPI PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0x20 DUP2 KECCAK256 PUSH1 0x1F DUP6 ADD PUSH1 0x5 SHR DUP2 ADD PUSH1 0x20 DUP7 LT ISZERO PUSH3 0x280 JUMPI POP DUP1 JUMPDEST PUSH1 0x1F DUP6 ADD PUSH1 0x5 SHR DUP3 ADD SWAP2 POP JUMPDEST DUP2 DUP2 LT ISZERO PUSH3 0x2A1 JUMPI DUP3 DUP2 SSTORE PUSH1 0x1 ADD PUSH3 0x28C JUMP JUMPDEST POP POP POP JUMPDEST POP POP POP JUMP JUMPDEST DUP2 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB DUP2 GT ISZERO PUSH3 0x2C6 JUMPI PUSH3 0x2C6 PUSH3 0xEC JUMP JUMPDEST PUSH3 0x2DE DUP2 PUSH3 0x2D7 DUP5 SLOAD PUSH3 0x21B JUMP JUMPDEST DUP5 PUSH3 0x257 JUMP JUMPDEST PUSH1 0x20 DUP1 PUSH1 0x1F DUP4 GT PUSH1 0x1 DUP2 EQ PUSH3 0x316 JUMPI PUSH1 0x0 DUP5 ISZERO PUSH3 0x2FD JUMPI POP DUP6 DUP4 ADD MLOAD JUMPDEST PUSH1 0x0 NOT PUSH1 0x3 DUP7 SWAP1 SHL SHR NOT AND PUSH1 0x1 DUP6 SWAP1 SHL OR DUP6 SSTORE PUSH3 0x2A1 JUMP JUMPDEST PUSH1 0x0 DUP6 DUP2 MSTORE PUSH1 0x20 DUP2 KECCAK256 PUSH1 0x1F NOT DUP7 AND SWAP2 JUMPDEST DUP3 DUP2 LT ISZERO PUSH3 0x347 JUMPI DUP9 DUP7 ADD MLOAD DUP3 SSTORE SWAP5 DUP5 ADD SWAP5 PUSH1 0x1 SWAP1 SWAP2 ADD SWAP1 DUP5 ADD PUSH3 0x326 JUMP JUMPDEST POP DUP6 DUP3 LT ISZERO PUSH3 0x366 JUMPI DUP8 DUP6 ADD MLOAD PUSH1 0x0 NOT PUSH1 0x3 DUP9 SWAP1 SHL PUSH1 0xF8 AND SHR NOT AND DUP2 SSTORE JUMPDEST POP POP POP POP POP PUSH1 0x1 SWAP1 DUP2 SHL ADD SWAP1 SSTORE POP JUMP JUMPDEST PUSH2 0x8C4 DUP1 PUSH3 0x386 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 0xCF JUMPI PUSH1 0x0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0x70A08231 GT PUSH2 0x8C JUMPI DUP1 PUSH4 0x95D89B41 GT PUSH2 0x66 JUMPI DUP1 PUSH4 0x95D89B41 EQ PUSH2 0x1AA JUMPI DUP1 PUSH4 0xA9059CBB EQ PUSH2 0x1B2 JUMPI DUP1 PUSH4 0xDD62ED3E EQ PUSH2 0x1C5 JUMPI DUP1 PUSH4 0xF2FDE38B EQ PUSH2 0x1FE JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 PUSH4 0x70A08231 EQ PUSH2 0x15E JUMPI DUP1 PUSH4 0x715018A6 EQ PUSH2 0x187 JUMPI DUP1 PUSH4 0x8DA5CB5B EQ PUSH2 0x18F JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 PUSH4 0x6FDDE03 EQ PUSH2 0xD4 JUMPI DUP1 PUSH4 0x95EA7B3 EQ PUSH2 0xF2 JUMPI DUP1 PUSH4 0x18160DDD EQ PUSH2 0x115 JUMPI DUP1 PUSH4 0x23B872DD EQ PUSH2 0x127 JUMPI DUP1 PUSH4 0x313CE567 EQ PUSH2 0x13A JUMPI DUP1 PUSH4 0x40C10F19 EQ PUSH2 0x149 JUMPI JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0xDC PUSH2 0x211 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0xE9 SWAP2 SWAP1 PUSH2 0x70E JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0x105 PUSH2 0x100 CALLDATASIZE PUSH1 0x4 PUSH2 0x778 JUMP JUMPDEST PUSH2 0x2A3 JUMP JUMPDEST PUSH1 0x40 MLOAD SWAP1 ISZERO ISZERO DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0xE9 JUMP JUMPDEST PUSH1 0x2 SLOAD JUMPDEST PUSH1 0x40 MLOAD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0xE9 JUMP JUMPDEST PUSH2 0x105 PUSH2 0x135 CALLDATASIZE PUSH1 0x4 PUSH2 0x7A2 JUMP JUMPDEST PUSH2 0x2BD JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x12 DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0xE9 JUMP JUMPDEST PUSH2 0x15C PUSH2 0x157 CALLDATASIZE PUSH1 0x4 PUSH2 0x778 JUMP JUMPDEST PUSH2 0x2E1 JUMP JUMPDEST STOP JUMPDEST PUSH2 0x119 PUSH2 0x16C CALLDATASIZE PUSH1 0x4 PUSH2 0x7DE JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x20 DUP2 SWAP1 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD SWAP1 JUMP JUMPDEST PUSH2 0x15C PUSH2 0x2F7 JUMP JUMPDEST PUSH1 0x5 SLOAD PUSH1 0x40 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 SWAP2 AND DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0xE9 JUMP JUMPDEST PUSH2 0xDC PUSH2 0x30B JUMP JUMPDEST PUSH2 0x105 PUSH2 0x1C0 CALLDATASIZE PUSH1 0x4 PUSH2 0x778 JUMP JUMPDEST PUSH2 0x31A JUMP JUMPDEST PUSH2 0x119 PUSH2 0x1D3 CALLDATASIZE PUSH1 0x4 PUSH2 0x800 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP2 DUP3 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x1 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 0x15C PUSH2 0x20C CALLDATASIZE PUSH1 0x4 PUSH2 0x7DE JUMP JUMPDEST PUSH2 0x328 JUMP JUMPDEST PUSH1 0x60 PUSH1 0x3 DUP1 SLOAD PUSH2 0x220 SWAP1 PUSH2 0x833 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 0x24C SWAP1 PUSH2 0x833 JUMP JUMPDEST DUP1 ISZERO PUSH2 0x299 JUMPI DUP1 PUSH1 0x1F LT PUSH2 0x26E JUMPI PUSH2 0x100 DUP1 DUP4 SLOAD DIV MUL DUP4 MSTORE SWAP2 PUSH1 0x20 ADD SWAP2 PUSH2 0x299 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 0x27C JUMPI DUP3 SWAP1 SUB PUSH1 0x1F AND DUP3 ADD SWAP2 JUMPDEST POP POP POP POP POP SWAP1 POP SWAP1 JUMP JUMPDEST PUSH1 0x0 CALLER PUSH2 0x2B1 DUP2 DUP6 DUP6 PUSH2 0x36B JUMP JUMPDEST PUSH1 0x1 SWAP2 POP POP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 CALLER PUSH2 0x2CB DUP6 DUP3 DUP6 PUSH2 0x37D JUMP JUMPDEST PUSH2 0x2D6 DUP6 DUP6 DUP6 PUSH2 0x3FB JUMP JUMPDEST POP PUSH1 0x1 SWAP5 SWAP4 POP POP POP POP JUMP JUMPDEST PUSH2 0x2E9 PUSH2 0x45A JUMP JUMPDEST PUSH2 0x2F3 DUP3 DUP3 PUSH2 0x487 JUMP JUMPDEST POP POP JUMP JUMPDEST PUSH2 0x2FF PUSH2 0x45A JUMP JUMPDEST PUSH2 0x309 PUSH1 0x0 PUSH2 0x4BD JUMP JUMPDEST JUMP JUMPDEST PUSH1 0x60 PUSH1 0x4 DUP1 SLOAD PUSH2 0x220 SWAP1 PUSH2 0x833 JUMP JUMPDEST PUSH1 0x0 CALLER PUSH2 0x2B1 DUP2 DUP6 DUP6 PUSH2 0x3FB JUMP JUMPDEST PUSH2 0x330 PUSH2 0x45A JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND PUSH2 0x35F JUMPI PUSH1 0x40 MLOAD PUSH4 0x1E4FBDF7 PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x0 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x24 ADD JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH2 0x368 DUP2 PUSH2 0x4BD JUMP JUMPDEST POP JUMP JUMPDEST PUSH2 0x378 DUP4 DUP4 DUP4 PUSH1 0x1 PUSH2 0x50F JUMP JUMPDEST POP POP POP JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP4 DUP2 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x1 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 SWAP4 DUP7 AND DUP4 MSTORE SWAP3 SWAP1 MSTORE KECCAK256 SLOAD PUSH1 0x0 NOT DUP2 EQ PUSH2 0x3F5 JUMPI DUP2 DUP2 LT ISZERO PUSH2 0x3E6 JUMPI PUSH1 0x40 MLOAD PUSH4 0x7DC7A0D9 PUSH1 0xE1 SHL DUP2 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP5 AND PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x24 DUP2 ADD DUP3 SWAP1 MSTORE PUSH1 0x44 DUP2 ADD DUP4 SWAP1 MSTORE PUSH1 0x64 ADD PUSH2 0x356 JUMP JUMPDEST PUSH2 0x3F5 DUP5 DUP5 DUP5 DUP5 SUB PUSH1 0x0 PUSH2 0x50F JUMP JUMPDEST POP POP POP POP JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP4 AND PUSH2 0x425 JUMPI PUSH1 0x40 MLOAD PUSH4 0x4B637E8F PUSH1 0xE1 SHL DUP2 MSTORE PUSH1 0x0 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x24 ADD PUSH2 0x356 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP3 AND PUSH2 0x44F JUMPI PUSH1 0x40 MLOAD PUSH4 0xEC442F05 PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x0 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x24 ADD PUSH2 0x356 JUMP JUMPDEST PUSH2 0x378 DUP4 DUP4 DUP4 PUSH2 0x5E4 JUMP JUMPDEST PUSH1 0x5 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND CALLER EQ PUSH2 0x309 JUMPI PUSH1 0x40 MLOAD PUSH4 0x118CDAA7 PUSH1 0xE0 SHL DUP2 MSTORE CALLER PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x24 ADD PUSH2 0x356 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP3 AND PUSH2 0x4B1 JUMPI PUSH1 0x40 MLOAD PUSH4 0xEC442F05 PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x0 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x24 ADD PUSH2 0x356 JUMP JUMPDEST PUSH2 0x2F3 PUSH1 0x0 DUP4 DUP4 PUSH2 0x5E4 JUMP JUMPDEST PUSH1 0x5 DUP1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP4 DUP2 AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB NOT DUP4 AND DUP2 OR SWAP1 SWAP4 SSTORE PUSH1 0x40 MLOAD SWAP2 AND SWAP2 SWAP1 DUP3 SWAP1 PUSH32 0x8BE0079C531659141344CD1FD0A4F28419497F9722A3DAAFE3B4186F6B6457E0 SWAP1 PUSH1 0x0 SWAP1 LOG3 POP POP JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP5 AND PUSH2 0x539 JUMPI PUSH1 0x40 MLOAD PUSH4 0xE602DF05 PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x0 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x24 ADD PUSH2 0x356 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP4 AND PUSH2 0x563 JUMPI PUSH1 0x40 MLOAD PUSH4 0x4A1406B1 PUSH1 0xE1 SHL DUP2 MSTORE PUSH1 0x0 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x24 ADD PUSH2 0x356 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP1 DUP6 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x1 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 SWAP4 DUP8 AND DUP4 MSTORE SWAP3 SWAP1 MSTORE KECCAK256 DUP3 SWAP1 SSTORE DUP1 ISZERO PUSH2 0x3F5 JUMPI DUP3 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP5 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH32 0x8C5BE1E5EBEC7D5BD14F71427D1E84F3DD0314C0F7B2291E5B200AC8C7C3B925 DUP5 PUSH1 0x40 MLOAD PUSH2 0x5D6 SWAP2 DUP2 MSTORE PUSH1 0x20 ADD SWAP1 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG3 POP POP POP POP JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP4 AND PUSH2 0x60F JUMPI DUP1 PUSH1 0x2 PUSH1 0x0 DUP3 DUP3 SLOAD PUSH2 0x604 SWAP2 SWAP1 PUSH2 0x86D JUMP JUMPDEST SWAP1 SWAP2 SSTORE POP PUSH2 0x681 SWAP1 POP JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP4 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x20 DUP2 SWAP1 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD DUP2 DUP2 LT ISZERO PUSH2 0x662 JUMPI PUSH1 0x40 MLOAD PUSH4 0x391434E3 PUSH1 0xE2 SHL DUP2 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP6 AND PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x24 DUP2 ADD DUP3 SWAP1 MSTORE PUSH1 0x44 DUP2 ADD DUP4 SWAP1 MSTORE PUSH1 0x64 ADD PUSH2 0x356 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP5 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x20 DUP2 SWAP1 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SWAP1 DUP3 SWAP1 SUB SWAP1 SSTORE JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP3 AND PUSH2 0x69D JUMPI PUSH1 0x2 DUP1 SLOAD DUP3 SWAP1 SUB SWAP1 SSTORE PUSH2 0x6BC JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP3 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x20 DUP2 SWAP1 MSTORE PUSH1 0x40 SWAP1 KECCAK256 DUP1 SLOAD DUP3 ADD SWAP1 SSTORE JUMPDEST DUP2 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP4 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH32 0xDDF252AD1BE2C89B69C2B068FC378DAA952BA7F163C4A11628F55A4DF523B3EF DUP4 PUSH1 0x40 MLOAD PUSH2 0x701 SWAP2 DUP2 MSTORE PUSH1 0x20 ADD SWAP1 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG3 POP POP 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 0x73B JUMPI DUP6 DUP2 ADD DUP4 ADD MLOAD DUP6 DUP3 ADD PUSH1 0x40 ADD MSTORE DUP3 ADD PUSH2 0x71F JUMP JUMPDEST POP PUSH1 0x0 PUSH1 0x40 DUP3 DUP7 ADD ADD MSTORE PUSH1 0x40 PUSH1 0x1F NOT PUSH1 0x1F DUP4 ADD AND DUP6 ADD ADD SWAP3 POP POP POP SWAP3 SWAP2 POP POP JUMP JUMPDEST DUP1 CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND DUP2 EQ PUSH2 0x773 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH2 0x78B JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x794 DUP4 PUSH2 0x75C 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 0x7B7 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x7C0 DUP5 PUSH2 0x75C JUMP JUMPDEST SWAP3 POP PUSH2 0x7CE PUSH1 0x20 DUP6 ADD PUSH2 0x75C JUMP JUMPDEST SWAP2 POP PUSH1 0x40 DUP5 ADD CALLDATALOAD SWAP1 POP SWAP3 POP SWAP3 POP SWAP3 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x7F0 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x7F9 DUP3 PUSH2 0x75C JUMP JUMPDEST SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH2 0x813 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x81C DUP4 PUSH2 0x75C JUMP JUMPDEST SWAP2 POP PUSH2 0x82A PUSH1 0x20 DUP5 ADD PUSH2 0x75C JUMP JUMPDEST SWAP1 POP SWAP3 POP SWAP3 SWAP1 POP JUMP JUMPDEST PUSH1 0x1 DUP2 DUP2 SHR SWAP1 DUP3 AND DUP1 PUSH2 0x847 JUMPI PUSH1 0x7F DUP3 AND SWAP2 POP JUMPDEST PUSH1 0x20 DUP3 LT DUP2 SUB PUSH2 0x867 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 DUP1 DUP3 ADD DUP1 DUP3 GT ISZERO PUSH2 0x2B7 JUMPI PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH1 0x0 MSTORE PUSH1 0x11 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 PUSH31 0x2BFF7C92F01729CF8B1AA0B1F4BC1DE2F54967781BDE4FEF96819D0359822 PUSH5 0x736F6C6343 STOP ADDMOD EQ STOP CALLER ", + "sourceMap": "167:234:16:-:0;;;222:76;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;204:10;282:4;288:6;1667:5:5;:13;282:4:16;1667:5:5;:13;:::i;:::-;-1:-1:-1;1690:7:5;:17;1700:7;1690;:17;:::i;:::-;-1:-1:-1;;;;;;;;1273:26:0;;1269:95;;1322:31;;-1:-1:-1;;;1322:31:0;;1350:1;1322:31;;;4293:51:17;4266:18;;1322:31:0;;;;;;;1269:95;1373:32;1392:12;1373:18;:32::i;:::-;1225:187;222:76:16;;167:234;;2912:187:0;3004:6;;;-1:-1:-1;;;;;3020:17:0;;;-1:-1:-1;;;;;;3020:17:0;;;;;;;3052:40;;3004:6;;;3020:17;3004:6;;3052:40;;2985:16;;3052:40;2975:124;2912:187;:::o;14:127:17:-;75:10;70:3;66:20;63:1;56:31;106:4;103:1;96:15;130:4;127:1;120:15;146:840;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:17;;;353:36;;;369:18;;:::i;:::-;444:2;438:9;412:2;498:13;;-1:-1:-1;;494:22:17;;;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;;;954:1;932:15;;;928:24;;;921:35;;;;936:6;146:840;-1:-1:-1;;;;146:840:17:o;991:562::-;1090:6;1098;1151:2;1139:9;1130:7;1126:23;1122:32;1119:52;;;1167:1;1164;1157:12;1119:52;1194:16;;-1:-1:-1;;;;;1259:14:17;;;1256:34;;;1286:1;1283;1276:12;1256:34;1309:61;1362:7;1353:6;1342:9;1338:22;1309:61;:::i;:::-;1299:71;;1416:2;1405:9;1401:18;1395:25;1379:41;;1445:2;1435:8;1432:16;1429:36;;;1461:1;1458;1451:12;1429:36;;1484:63;1539:7;1528:8;1517:9;1513:24;1484:63;:::i;:::-;1474:73;;;991:562;;;;;:::o;1558:380::-;1637:1;1633:12;;;;1680;;;1701:61;;1755:4;1747:6;1743:17;1733:27;;1701:61;1808:2;1800:6;1797:14;1777:18;1774:38;1771:161;;1854:10;1849:3;1845:20;1842:1;1835:31;1889:4;1886:1;1879:15;1917:4;1914:1;1907:15;1771:161;;1558:380;;;:::o;2069:545::-;2171:2;2166:3;2163:11;2160:448;;;2207:1;2232:5;2228:2;2221:17;2277:4;2273:2;2263:19;2347:2;2335:10;2331:19;2328:1;2324:27;2318:4;2314:38;2383:4;2371:10;2368:20;2365:47;;;-1:-1:-1;2406:4:17;2365:47;2461:2;2456:3;2452:12;2449:1;2445:20;2439:4;2435:31;2425:41;;2516:82;2534:2;2527:5;2524:13;2516:82;;;2579:17;;;2560:1;2549:13;2516:82;;;2520:3;;;2160:448;2069:545;;;:::o;2790:1352::-;2910:10;;-1:-1:-1;;;;;2932:30:17;;2929:56;;;2965:18;;:::i;:::-;2994:97;3084:6;3044:38;3076:4;3070:11;3044:38;:::i;:::-;3038:4;2994:97;:::i;:::-;3146:4;;3210:2;3199:14;;3227:1;3222:663;;;;3929:1;3946:6;3943:89;;;-1:-1:-1;3998:19:17;;;3992:26;3943:89;-1:-1:-1;;2747:1:17;2743:11;;;2739:24;2735:29;2725:40;2771:1;2767:11;;;2722:57;4045:81;;3192:944;;3222:663;2016:1;2009:14;;;2053:4;2040:18;;-1:-1:-1;;3258:20:17;;;3376:236;3390:7;3387:1;3384:14;3376:236;;;3479:19;;;3473:26;3458:42;;3571:27;;;;3539:1;3527:14;;;;3406:19;;3376:236;;;3380:3;3640:6;3631:7;3628:19;3625:201;;;3701:19;;;3695:26;-1:-1:-1;;3784:1:17;3780:14;;;3796:3;3776:24;3772:37;3768:42;3753:58;3738:74;;3625:201;-1:-1:-1;;;;;3872:1:17;3856:14;;;3852:22;3839:36;;-1:-1:-1;2790:1352:17:o;4147:203::-;167:234:16;;;;;;" + }, + "deployedBytecode": { + "functionDebugData": { + "@_approve_780": { + "entryPoint": 875, + "id": 780, + "parameterSlots": 3, + "returnSlots": 0 + }, + "@_approve_840": { + "entryPoint": 1295, + "id": 840, + "parameterSlots": 4, + "returnSlots": 0 + }, + "@_checkOwner_84": { + "entryPoint": 1114, + "id": 84, + "parameterSlots": 0, + "returnSlots": 0 + }, + "@_mint_729": { + "entryPoint": 1159, + "id": 729, + "parameterSlots": 2, + "returnSlots": 0 + }, + "@_msgSender_1675": { + "entryPoint": null, + "id": 1675, + "parameterSlots": 0, + "returnSlots": 1 + }, + "@_spendAllowance_888": { + "entryPoint": 893, + "id": 888, + "parameterSlots": 3, + "returnSlots": 0 + }, + "@_transferOwnership_146": { + "entryPoint": 1213, + "id": 146, + "parameterSlots": 1, + "returnSlots": 0 + }, + "@_transfer_619": { + "entryPoint": 1019, + "id": 619, + "parameterSlots": 3, + "returnSlots": 0 + }, + "@_update_696": { + "entryPoint": 1508, + "id": 696, + "parameterSlots": 3, + "returnSlots": 0 + }, + "@allowance_516": { + "entryPoint": null, + "id": 516, + "parameterSlots": 2, + "returnSlots": 1 + }, + "@approve_540": { + "entryPoint": 675, + "id": 540, + "parameterSlots": 2, + "returnSlots": 1 + }, + "@balanceOf_475": { + "entryPoint": null, + "id": 475, + "parameterSlots": 1, + "returnSlots": 1 + }, + "@decimals_453": { + "entryPoint": null, + "id": 453, + "parameterSlots": 0, + "returnSlots": 1 + }, + "@mint_2436": { + "entryPoint": 737, + "id": 2436, + "parameterSlots": 2, + "returnSlots": 0 + }, + "@name_435": { + "entryPoint": 529, + "id": 435, + "parameterSlots": 0, + "returnSlots": 1 + }, + "@owner_67": { + "entryPoint": null, + "id": 67, + "parameterSlots": 0, + "returnSlots": 1 + }, + "@renounceOwnership_98": { + "entryPoint": 759, + "id": 98, + "parameterSlots": 0, + "returnSlots": 0 + }, + "@symbol_444": { + "entryPoint": 779, + "id": 444, + "parameterSlots": 0, + "returnSlots": 1 + }, + "@totalSupply_462": { + "entryPoint": null, + "id": 462, + "parameterSlots": 0, + "returnSlots": 1 + }, + "@transferFrom_572": { + "entryPoint": 701, + "id": 572, + "parameterSlots": 3, + "returnSlots": 1 + }, + "@transferOwnership_126": { + "entryPoint": 808, + "id": 126, + "parameterSlots": 1, + "returnSlots": 0 + }, + "@transfer_499": { + "entryPoint": 794, + "id": 499, + "parameterSlots": 2, + "returnSlots": 1 + }, + "abi_decode_address": { + "entryPoint": 1884, + "id": null, + "parameterSlots": 1, + "returnSlots": 1 + }, + "abi_decode_tuple_t_address": { + "entryPoint": 2014, + "id": null, + "parameterSlots": 2, + "returnSlots": 1 + }, + "abi_decode_tuple_t_addresst_address": { + "entryPoint": 2048, + "id": null, + "parameterSlots": 2, + "returnSlots": 2 + }, + "abi_decode_tuple_t_addresst_addresst_uint256": { + "entryPoint": 1954, + "id": null, + "parameterSlots": 2, + "returnSlots": 3 + }, + "abi_decode_tuple_t_addresst_uint256": { + "entryPoint": 1912, + "id": null, + "parameterSlots": 2, + "returnSlots": 2 + }, + "abi_encode_tuple_t_address__to_t_address__fromStack_reversed": { + "entryPoint": null, + "id": null, + "parameterSlots": 2, + "returnSlots": 1 + }, + "abi_encode_tuple_t_address_t_uint256_t_uint256__to_t_address_t_uint256_t_uint256__fromStack_reversed": { + "entryPoint": null, + "id": null, + "parameterSlots": 4, + "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": 1806, + "id": null, + "parameterSlots": 2, + "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": 2157, + "id": null, + "parameterSlots": 2, + "returnSlots": 1 + }, + "extract_byte_array_length": { + "entryPoint": 2099, + "id": null, + "parameterSlots": 1, + "returnSlots": 1 + } + }, + "generatedSources": [ + { + "ast": { + "nodeType": "YulBlock", + "src": "0:3523:17", + "statements": [ + { + "nodeType": "YulBlock", + "src": "6:3:17", + "statements": [] + }, + { + "body": { + "nodeType": "YulBlock", + "src": "135:427:17", + "statements": [ + { + "nodeType": "YulVariableDeclaration", + "src": "145:12:17", + "value": { + "kind": "number", + "nodeType": "YulLiteral", + "src": "155:2:17", + "type": "", + "value": "32" }, - "nodeType": "YulExpressionStatement", - "src": "4578:30:10" + "variables": [ + { + "name": "_1", + "nodeType": "YulTypedName", + "src": "149:2:17", + "type": "" + } + ] }, { "expression": { "arguments": [ { - "arguments": [ - { - "name": "headStart", - "nodeType": "YulIdentifier", - "src": "4628:9:10" - }, - { - "kind": "number", - "nodeType": "YulLiteral", - "src": "4639:2:10", - "type": "", - "value": "64" - } - ], - "functionName": { - "name": "add", - "nodeType": "YulIdentifier", - "src": "4624:3:10" - }, - "nodeType": "YulFunctionCall", - "src": "4624:18:10" + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "173:9:17" }, { - "hexValue": "53746172742074696d65206d75737420626520696e20667574757265", - "kind": "string", - "nodeType": "YulLiteral", - "src": "4644:30:10", - "type": "", - "value": "Start time must be in future" + "name": "_1", + "nodeType": "YulIdentifier", + "src": "184:2:17" } ], "functionName": { "name": "mstore", "nodeType": "YulIdentifier", - "src": "4617:6:10" + "src": "166:6:17" }, "nodeType": "YulFunctionCall", - "src": "4617:58:10" + "src": "166:21:17" }, "nodeType": "YulExpressionStatement", - "src": "4617:58:10" + "src": "166:21:17" }, { - "nodeType": "YulAssignment", - "src": "4684:26:10", - "value": { - "arguments": [ - { - "name": "headStart", - "nodeType": "YulIdentifier", - "src": "4696:9:10" - }, - { - "kind": "number", - "nodeType": "YulLiteral", - "src": "4707:2:10", - "type": "", - "value": "96" - } - ], - "functionName": { - "name": "add", - "nodeType": "YulIdentifier", - "src": "4692:3:10" - }, - "nodeType": "YulFunctionCall", - "src": "4692:18:10" - }, - "variableNames": [ - { - "name": "tail", - "nodeType": "YulIdentifier", - "src": "4684:4:10" - } - ] - } - ] - }, - "name": "abi_encode_tuple_t_stringliteral_5e8b0e873d06a66c9c925ccc2b7b49a9f2193d0e8836f9994126e51985936cff__to_t_string_memory_ptr__fromStack_reversed", - "nodeType": "YulFunctionDefinition", - "parameters": [ - { - "name": "headStart", - "nodeType": "YulTypedName", - "src": "4515:9:10", - "type": "" - } - ], - "returnVariables": [ - { - "name": "tail", - "nodeType": "YulTypedName", - "src": "4529:4:10", - "type": "" - } - ], - "src": "4364:352:10" - }, - { - "body": { - "nodeType": "YulBlock", - "src": "4878:218:10", - "statements": [ - { - "nodeType": "YulAssignment", - "src": "4888:26:10", + "nodeType": "YulVariableDeclaration", + "src": "196:27:17", "value": { "arguments": [ { - "name": "headStart", + "name": "value0", "nodeType": "YulIdentifier", - "src": "4900:9:10" - }, - { - "kind": "number", - "nodeType": "YulLiteral", - "src": "4911:2:10", - "type": "", - "value": "96" + "src": "216:6:17" } ], "functionName": { - "name": "add", + "name": "mload", "nodeType": "YulIdentifier", - "src": "4896:3:10" + "src": "210:5:17" }, "nodeType": "YulFunctionCall", - "src": "4896:18:10" + "src": "210:13:17" }, - "variableNames": [ + "variables": [ { - "name": "tail", - "nodeType": "YulIdentifier", - "src": "4888:4:10" + "name": "length", + "nodeType": "YulTypedName", + "src": "200:6:17", + "type": "" } ] }, { - "nodeType": "YulVariableDeclaration", - "src": "4923:29:10", - "value": { + "expression": { "arguments": [ { "arguments": [ { - "kind": "number", - "nodeType": "YulLiteral", - "src": "4941:3:10", - "type": "", - "value": "160" + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "243:9:17" }, { - "kind": "number", - "nodeType": "YulLiteral", - "src": "4946:1:10", - "type": "", - "value": "1" + "name": "_1", + "nodeType": "YulIdentifier", + "src": "254:2:17" } ], "functionName": { - "name": "shl", + "name": "add", "nodeType": "YulIdentifier", - "src": "4937:3:10" + "src": "239:3:17" }, "nodeType": "YulFunctionCall", - "src": "4937:11:10" + "src": "239:18:17" }, { - "kind": "number", - "nodeType": "YulLiteral", - "src": "4950:1:10", - "type": "", - "value": "1" + "name": "length", + "nodeType": "YulIdentifier", + "src": "259:6:17" } ], "functionName": { - "name": "sub", + "name": "mstore", "nodeType": "YulIdentifier", - "src": "4933:3:10" + "src": "232:6:17" }, "nodeType": "YulFunctionCall", - "src": "4933:19:10" + "src": "232:34:17" + }, + "nodeType": "YulExpressionStatement", + "src": "232:34:17" + }, + { + "nodeType": "YulVariableDeclaration", + "src": "275:10:17", + "value": { + "kind": "number", + "nodeType": "YulLiteral", + "src": "284:1:17", + "type": "", + "value": "0" }, "variables": [ { - "name": "_1", + "name": "i", "nodeType": "YulTypedName", - "src": "4927:2:10", + "src": "279:1:17", "type": "" } ] }, { - "expression": { + "body": { + "nodeType": "YulBlock", + "src": "344:90:17", + "statements": [ + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "373:9:17" + }, + { + "name": "i", + "nodeType": "YulIdentifier", + "src": "384:1:17" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "369:3:17" + }, + "nodeType": "YulFunctionCall", + "src": "369:17:17" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "388:2:17", + "type": "", + "value": "64" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "365:3:17" + }, + "nodeType": "YulFunctionCall", + "src": "365:26:17" + }, + { + "arguments": [ + { + "arguments": [ + { + "arguments": [ + { + "name": "value0", + "nodeType": "YulIdentifier", + "src": "407:6:17" + }, + { + "name": "i", + "nodeType": "YulIdentifier", + "src": "415:1:17" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "403:3:17" + }, + "nodeType": "YulFunctionCall", + "src": "403:14:17" + }, + { + "name": "_1", + "nodeType": "YulIdentifier", + "src": "419:2:17" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "399:3:17" + }, + "nodeType": "YulFunctionCall", + "src": "399:23:17" + } + ], + "functionName": { + "name": "mload", + "nodeType": "YulIdentifier", + "src": "393:5:17" + }, + "nodeType": "YulFunctionCall", + "src": "393:30:17" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "358:6:17" + }, + "nodeType": "YulFunctionCall", + "src": "358:66:17" + }, + "nodeType": "YulExpressionStatement", + "src": "358:66:17" + } + ] + }, + "condition": { "arguments": [ { - "name": "headStart", + "name": "i", "nodeType": "YulIdentifier", - "src": "4968:9:10" + "src": "305:1:17" }, { - "arguments": [ - { - "name": "value0", + "name": "length", + "nodeType": "YulIdentifier", + "src": "308:6:17" + } + ], + "functionName": { + "name": "lt", + "nodeType": "YulIdentifier", + "src": "302:2:17" + }, + "nodeType": "YulFunctionCall", + "src": "302:13:17" + }, + "nodeType": "YulForLoop", + "post": { + "nodeType": "YulBlock", + "src": "316:19:17", + "statements": [ + { + "nodeType": "YulAssignment", + "src": "318:15:17", + "value": { + "arguments": [ + { + "name": "i", + "nodeType": "YulIdentifier", + "src": "327:1:17" + }, + { + "name": "_1", + "nodeType": "YulIdentifier", + "src": "330:2:17" + } + ], + "functionName": { + "name": "add", "nodeType": "YulIdentifier", - "src": "4983:6:10" + "src": "323:3:17" }, + "nodeType": "YulFunctionCall", + "src": "323:10:17" + }, + "variableNames": [ { - "name": "_1", + "name": "i", "nodeType": "YulIdentifier", - "src": "4991:2:10" + "src": "318:1:17" } - ], - "functionName": { - "name": "and", - "nodeType": "YulIdentifier", - "src": "4979:3:10" - }, - "nodeType": "YulFunctionCall", - "src": "4979:15:10" + ] } - ], - "functionName": { - "name": "mstore", - "nodeType": "YulIdentifier", - "src": "4961:6:10" - }, - "nodeType": "YulFunctionCall", - "src": "4961:34:10" + ] }, - "nodeType": "YulExpressionStatement", - "src": "4961:34:10" + "pre": { + "nodeType": "YulBlock", + "src": "298:3:17", + "statements": [] + }, + "src": "294:140:17" }, { "expression": { @@ -32796,129 +43368,173 @@ { "arguments": [ { - "name": "headStart", - "nodeType": "YulIdentifier", - "src": "5015:9:10" + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "458:9:17" + }, + { + "name": "length", + "nodeType": "YulIdentifier", + "src": "469:6:17" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "454:3:17" + }, + "nodeType": "YulFunctionCall", + "src": "454:22:17" }, { "kind": "number", "nodeType": "YulLiteral", - "src": "5026:2:10", + "src": "478:2:17", "type": "", - "value": "32" + "value": "64" } ], "functionName": { "name": "add", "nodeType": "YulIdentifier", - "src": "5011:3:10" + "src": "450:3:17" }, "nodeType": "YulFunctionCall", - "src": "5011:18:10" + "src": "450:31:17" }, { - "arguments": [ - { - "name": "value1", - "nodeType": "YulIdentifier", - "src": "5035:6:10" - }, - { - "name": "_1", - "nodeType": "YulIdentifier", - "src": "5043:2:10" - } - ], - "functionName": { - "name": "and", - "nodeType": "YulIdentifier", - "src": "5031:3:10" - }, - "nodeType": "YulFunctionCall", - "src": "5031:15:10" + "kind": "number", + "nodeType": "YulLiteral", + "src": "483:1:17", + "type": "", + "value": "0" } ], "functionName": { "name": "mstore", "nodeType": "YulIdentifier", - "src": "5004:6:10" + "src": "443:6:17" }, "nodeType": "YulFunctionCall", - "src": "5004:43:10" + "src": "443:42:17" }, "nodeType": "YulExpressionStatement", - "src": "5004:43:10" + "src": "443:42:17" }, { - "expression": { + "nodeType": "YulAssignment", + "src": "494:62:17", + "value": { "arguments": [ { "arguments": [ { "name": "headStart", "nodeType": "YulIdentifier", - "src": "5067:9:10" + "src": "510:9:17" }, { - "kind": "number", - "nodeType": "YulLiteral", - "src": "5078:2:10", - "type": "", - "value": "64" + "arguments": [ + { + "arguments": [ + { + "name": "length", + "nodeType": "YulIdentifier", + "src": "529:6:17" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "537:2:17", + "type": "", + "value": "31" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "525:3:17" + }, + "nodeType": "YulFunctionCall", + "src": "525:15:17" + }, + { + "arguments": [ + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "546:2:17", + "type": "", + "value": "31" + } + ], + "functionName": { + "name": "not", + "nodeType": "YulIdentifier", + "src": "542:3:17" + }, + "nodeType": "YulFunctionCall", + "src": "542:7:17" + } + ], + "functionName": { + "name": "and", + "nodeType": "YulIdentifier", + "src": "521:3:17" + }, + "nodeType": "YulFunctionCall", + "src": "521:29:17" } ], "functionName": { "name": "add", "nodeType": "YulIdentifier", - "src": "5063:3:10" + "src": "506:3:17" }, "nodeType": "YulFunctionCall", - "src": "5063:18:10" + "src": "506:45:17" }, { - "name": "value2", - "nodeType": "YulIdentifier", - "src": "5083:6:10" + "kind": "number", + "nodeType": "YulLiteral", + "src": "553:2:17", + "type": "", + "value": "64" } ], "functionName": { - "name": "mstore", + "name": "add", "nodeType": "YulIdentifier", - "src": "5056:6:10" + "src": "502:3:17" }, "nodeType": "YulFunctionCall", - "src": "5056:34:10" + "src": "502:54:17" }, - "nodeType": "YulExpressionStatement", - "src": "5056:34:10" + "variableNames": [ + { + "name": "tail", + "nodeType": "YulIdentifier", + "src": "494:4:17" + } + ] } ] }, - "name": "abi_encode_tuple_t_address_t_address_t_uint256__to_t_address_t_address_t_uint256__fromStack_reversed", + "name": "abi_encode_tuple_t_string_memory_ptr__to_t_string_memory_ptr__fromStack_reversed", "nodeType": "YulFunctionDefinition", "parameters": [ { "name": "headStart", "nodeType": "YulTypedName", - "src": "4831:9:10", - "type": "" - }, - { - "name": "value2", - "nodeType": "YulTypedName", - "src": "4842:6:10", - "type": "" - }, - { - "name": "value1", - "nodeType": "YulTypedName", - "src": "4850:6:10", + "src": "104:9:17", "type": "" }, { "name": "value0", "nodeType": "YulTypedName", - "src": "4858:6:10", + "src": "115:6:17", "type": "" } ], @@ -32926,127 +43542,48 @@ { "name": "tail", "nodeType": "YulTypedName", - "src": "4869:4:10", + "src": "126:4:17", "type": "" } ], - "src": "4721:375:10" + "src": "14:548:17" }, { "body": { "nodeType": "YulBlock", - "src": "5179:199:10", + "src": "616:124:17", "statements": [ { - "body": { - "nodeType": "YulBlock", - "src": "5225:16:10", - "statements": [ - { - "expression": { - "arguments": [ - { - "kind": "number", - "nodeType": "YulLiteral", - "src": "5234:1:10", - "type": "", - "value": "0" - }, - { - "kind": "number", - "nodeType": "YulLiteral", - "src": "5237:1:10", - "type": "", - "value": "0" - } - ], - "functionName": { - "name": "revert", - "nodeType": "YulIdentifier", - "src": "5227:6:10" - }, - "nodeType": "YulFunctionCall", - "src": "5227:12:10" - }, - "nodeType": "YulExpressionStatement", - "src": "5227:12:10" - } - ] - }, - "condition": { - "arguments": [ - { - "arguments": [ - { - "name": "dataEnd", - "nodeType": "YulIdentifier", - "src": "5200:7:10" - }, - { - "name": "headStart", - "nodeType": "YulIdentifier", - "src": "5209:9:10" - } - ], - "functionName": { - "name": "sub", - "nodeType": "YulIdentifier", - "src": "5196:3:10" - }, - "nodeType": "YulFunctionCall", - "src": "5196:23:10" - }, - { - "kind": "number", - "nodeType": "YulLiteral", - "src": "5221:2:10", - "type": "", - "value": "32" - } - ], - "functionName": { - "name": "slt", - "nodeType": "YulIdentifier", - "src": "5192:3:10" - }, - "nodeType": "YulFunctionCall", - "src": "5192:32:10" - }, - "nodeType": "YulIf", - "src": "5189:52:10" - }, - { - "nodeType": "YulVariableDeclaration", - "src": "5250:29:10", + "nodeType": "YulAssignment", + "src": "626:29:17", "value": { "arguments": [ { - "name": "headStart", + "name": "offset", "nodeType": "YulIdentifier", - "src": "5269:9:10" + "src": "648:6:17" } ], "functionName": { - "name": "mload", + "name": "calldataload", "nodeType": "YulIdentifier", - "src": "5263:5:10" + "src": "635:12:17" }, "nodeType": "YulFunctionCall", - "src": "5263:16:10" + "src": "635:20:17" }, - "variables": [ + "variableNames": [ { "name": "value", - "nodeType": "YulTypedName", - "src": "5254:5:10", - "type": "" + "nodeType": "YulIdentifier", + "src": "626:5:17" } ] }, { "body": { "nodeType": "YulBlock", - "src": "5332:16:10", + "src": "718:16:17", "statements": [ { "expression": { @@ -33054,14 +43591,14 @@ { "kind": "number", "nodeType": "YulLiteral", - "src": "5341:1:10", + "src": "727:1:17", "type": "", "value": "0" }, { "kind": "number", "nodeType": "YulLiteral", - "src": "5344:1:10", + "src": "730:1:17", "type": "", "value": "0" } @@ -33069,13 +43606,13 @@ "functionName": { "name": "revert", "nodeType": "YulIdentifier", - "src": "5334:6:10" + "src": "720:6:17" }, "nodeType": "YulFunctionCall", - "src": "5334:12:10" + "src": "720:12:17" }, "nodeType": "YulExpressionStatement", - "src": "5334:12:10" + "src": "720:12:17" } ] }, @@ -33086,325 +43623,236 @@ { "name": "value", "nodeType": "YulIdentifier", - "src": "5301:5:10" + "src": "677:5:17" }, { "arguments": [ + { + "name": "value", + "nodeType": "YulIdentifier", + "src": "688:5:17" + }, { "arguments": [ { - "name": "value", - "nodeType": "YulIdentifier", - "src": "5322:5:10" + "arguments": [ + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "703:3:17", + "type": "", + "value": "160" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "708:1:17", + "type": "", + "value": "1" + } + ], + "functionName": { + "name": "shl", + "nodeType": "YulIdentifier", + "src": "699:3:17" + }, + "nodeType": "YulFunctionCall", + "src": "699:11:17" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "712:1:17", + "type": "", + "value": "1" } ], "functionName": { - "name": "iszero", + "name": "sub", "nodeType": "YulIdentifier", - "src": "5315:6:10" + "src": "695:3:17" }, "nodeType": "YulFunctionCall", - "src": "5315:13:10" + "src": "695:19:17" } ], "functionName": { - "name": "iszero", + "name": "and", "nodeType": "YulIdentifier", - "src": "5308:6:10" + "src": "684:3:17" }, "nodeType": "YulFunctionCall", - "src": "5308:21:10" + "src": "684:31:17" } ], "functionName": { "name": "eq", "nodeType": "YulIdentifier", - "src": "5298:2:10" + "src": "674:2:17" }, "nodeType": "YulFunctionCall", - "src": "5298:32:10" + "src": "674:42:17" } ], "functionName": { "name": "iszero", "nodeType": "YulIdentifier", - "src": "5291:6:10" + "src": "667:6:17" }, "nodeType": "YulFunctionCall", - "src": "5291:40:10" + "src": "667:50:17" }, "nodeType": "YulIf", - "src": "5288:60:10" - }, - { - "nodeType": "YulAssignment", - "src": "5357:15:10", - "value": { - "name": "value", - "nodeType": "YulIdentifier", - "src": "5367:5:10" - }, - "variableNames": [ - { - "name": "value0", - "nodeType": "YulIdentifier", - "src": "5357:6:10" - } - ] + "src": "664:70:17" } ] }, - "name": "abi_decode_tuple_t_bool_fromMemory", + "name": "abi_decode_address", "nodeType": "YulFunctionDefinition", "parameters": [ { - "name": "headStart", - "nodeType": "YulTypedName", - "src": "5145:9:10", - "type": "" - }, - { - "name": "dataEnd", + "name": "offset", "nodeType": "YulTypedName", - "src": "5156:7:10", + "src": "595:6:17", "type": "" } ], "returnVariables": [ { - "name": "value0", + "name": "value", "nodeType": "YulTypedName", - "src": "5168:6:10", + "src": "606:5:17", "type": "" } ], - "src": "5101:277:10" + "src": "567:173:17" }, { "body": { "nodeType": "YulBlock", - "src": "5557:165:10", + "src": "832:167:17", "statements": [ { - "expression": { - "arguments": [ - { - "name": "headStart", - "nodeType": "YulIdentifier", - "src": "5574:9:10" - }, - { - "kind": "number", - "nodeType": "YulLiteral", - "src": "5585:2:10", - "type": "", - "value": "32" - } - ], - "functionName": { - "name": "mstore", - "nodeType": "YulIdentifier", - "src": "5567:6:10" - }, - "nodeType": "YulFunctionCall", - "src": "5567:21:10" - }, - "nodeType": "YulExpressionStatement", - "src": "5567:21:10" - }, - { - "expression": { - "arguments": [ + "body": { + "nodeType": "YulBlock", + "src": "878:16:17", + "statements": [ { - "arguments": [ - { - "name": "headStart", + "expression": { + "arguments": [ + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "887:1:17", + "type": "", + "value": "0" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "890:1:17", + "type": "", + "value": "0" + } + ], + "functionName": { + "name": "revert", "nodeType": "YulIdentifier", - "src": "5608:9:10" + "src": "880:6:17" }, - { - "kind": "number", - "nodeType": "YulLiteral", - "src": "5619:2:10", - "type": "", - "value": "32" - } - ], - "functionName": { - "name": "add", - "nodeType": "YulIdentifier", - "src": "5604:3:10" + "nodeType": "YulFunctionCall", + "src": "880:12:17" }, - "nodeType": "YulFunctionCall", - "src": "5604:18:10" - }, - { - "kind": "number", - "nodeType": "YulLiteral", - "src": "5624:2:10", - "type": "", - "value": "15" + "nodeType": "YulExpressionStatement", + "src": "880:12:17" } - ], - "functionName": { - "name": "mstore", - "nodeType": "YulIdentifier", - "src": "5597:6:10" - }, - "nodeType": "YulFunctionCall", - "src": "5597:30:10" + ] }, - "nodeType": "YulExpressionStatement", - "src": "5597:30:10" - }, - { - "expression": { + "condition": { "arguments": [ { "arguments": [ { - "name": "headStart", + "name": "dataEnd", "nodeType": "YulIdentifier", - "src": "5647:9:10" + "src": "853:7:17" }, { - "kind": "number", - "nodeType": "YulLiteral", - "src": "5658:2:10", - "type": "", - "value": "64" + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "862:9:17" } ], "functionName": { - "name": "add", + "name": "sub", "nodeType": "YulIdentifier", - "src": "5643:3:10" + "src": "849:3:17" }, "nodeType": "YulFunctionCall", - "src": "5643:18:10" + "src": "849:23:17" }, { - "hexValue": "5472616e73666572206661696c6564", - "kind": "string", + "kind": "number", "nodeType": "YulLiteral", - "src": "5663:17:10", + "src": "874:2:17", "type": "", - "value": "Transfer failed" + "value": "64" } ], "functionName": { - "name": "mstore", + "name": "slt", "nodeType": "YulIdentifier", - "src": "5636:6:10" + "src": "845:3:17" }, "nodeType": "YulFunctionCall", - "src": "5636:45:10" + "src": "845:32:17" }, - "nodeType": "YulExpressionStatement", - "src": "5636:45:10" + "nodeType": "YulIf", + "src": "842:52:17" }, { "nodeType": "YulAssignment", - "src": "5690:26:10", + "src": "903:39:17", "value": { "arguments": [ { "name": "headStart", "nodeType": "YulIdentifier", - "src": "5702:9:10" - }, - { - "kind": "number", - "nodeType": "YulLiteral", - "src": "5713:2:10", - "type": "", - "value": "96" + "src": "932:9:17" } ], "functionName": { - "name": "add", + "name": "abi_decode_address", "nodeType": "YulIdentifier", - "src": "5698:3:10" + "src": "913:18:17" }, "nodeType": "YulFunctionCall", - "src": "5698:18:10" + "src": "913:29:17" }, "variableNames": [ { - "name": "tail", + "name": "value0", "nodeType": "YulIdentifier", - "src": "5690:4:10" + "src": "903:6:17" } ] - } - ] - }, - "name": "abi_encode_tuple_t_stringliteral_25adaa6d082ce15f901e0d8a3d393e7462ef9edf2e6bc8321fa14d1615b6fc51__to_t_string_memory_ptr__fromStack_reversed", - "nodeType": "YulFunctionDefinition", - "parameters": [ - { - "name": "headStart", - "nodeType": "YulTypedName", - "src": "5534:9:10", - "type": "" - } - ], - "returnVariables": [ - { - "name": "tail", - "nodeType": "YulTypedName", - "src": "5548:4:10", - "type": "" - } - ], - "src": "5383:339:10" - }, - { - "body": { - "nodeType": "YulBlock", - "src": "5901:169:10", - "statements": [ - { - "expression": { - "arguments": [ - { - "name": "headStart", - "nodeType": "YulIdentifier", - "src": "5918:9:10" - }, - { - "kind": "number", - "nodeType": "YulLiteral", - "src": "5929:2:10", - "type": "", - "value": "32" - } - ], - "functionName": { - "name": "mstore", - "nodeType": "YulIdentifier", - "src": "5911:6:10" - }, - "nodeType": "YulFunctionCall", - "src": "5911:21:10" - }, - "nodeType": "YulExpressionStatement", - "src": "5911:21:10" }, { - "expression": { + "nodeType": "YulAssignment", + "src": "951:42:17", + "value": { "arguments": [ { "arguments": [ { "name": "headStart", "nodeType": "YulIdentifier", - "src": "5952:9:10" + "src": "978:9:17" }, { "kind": "number", "nodeType": "YulLiteral", - "src": "5963:2:10", + "src": "989:2:17", "type": "", "value": "32" } @@ -33412,298 +43860,163 @@ "functionName": { "name": "add", "nodeType": "YulIdentifier", - "src": "5948:3:10" + "src": "974:3:17" }, "nodeType": "YulFunctionCall", - "src": "5948:18:10" - }, - { - "kind": "number", - "nodeType": "YulLiteral", - "src": "5968:2:10", - "type": "", - "value": "19" - } - ], - "functionName": { - "name": "mstore", - "nodeType": "YulIdentifier", - "src": "5941:6:10" - }, - "nodeType": "YulFunctionCall", - "src": "5941:30:10" - }, - "nodeType": "YulExpressionStatement", - "src": "5941:30:10" - }, - { - "expression": { - "arguments": [ - { - "arguments": [ - { - "name": "headStart", - "nodeType": "YulIdentifier", - "src": "5991:9:10" - }, - { - "kind": "number", - "nodeType": "YulLiteral", - "src": "6002:2:10", - "type": "", - "value": "64" - } - ], - "functionName": { - "name": "add", - "nodeType": "YulIdentifier", - "src": "5987:3:10" - }, - "nodeType": "YulFunctionCall", - "src": "5987:18:10" - }, - { - "hexValue": "4e6f2076657374696e67207363686564756c65", - "kind": "string", - "nodeType": "YulLiteral", - "src": "6007:21:10", - "type": "", - "value": "No vesting schedule" - } - ], - "functionName": { - "name": "mstore", - "nodeType": "YulIdentifier", - "src": "5980:6:10" - }, - "nodeType": "YulFunctionCall", - "src": "5980:49:10" - }, - "nodeType": "YulExpressionStatement", - "src": "5980:49:10" - }, - { - "nodeType": "YulAssignment", - "src": "6038:26:10", - "value": { - "arguments": [ - { - "name": "headStart", - "nodeType": "YulIdentifier", - "src": "6050:9:10" - }, - { - "kind": "number", - "nodeType": "YulLiteral", - "src": "6061:2:10", - "type": "", - "value": "96" + "src": "974:18:17" } ], "functionName": { - "name": "add", + "name": "calldataload", "nodeType": "YulIdentifier", - "src": "6046:3:10" + "src": "961:12:17" }, "nodeType": "YulFunctionCall", - "src": "6046:18:10" + "src": "961:32:17" }, "variableNames": [ { - "name": "tail", + "name": "value1", "nodeType": "YulIdentifier", - "src": "6038:4:10" + "src": "951:6:17" } ] } ] }, - "name": "abi_encode_tuple_t_stringliteral_6bb1866c2b37a7b751163896084042e2548a35de6f3e7b1e063a1cd2115c9ef9__to_t_string_memory_ptr__fromStack_reversed", + "name": "abi_decode_tuple_t_addresst_uint256", "nodeType": "YulFunctionDefinition", "parameters": [ { "name": "headStart", "nodeType": "YulTypedName", - "src": "5878:9:10", + "src": "790:9:17", + "type": "" + }, + { + "name": "dataEnd", + "nodeType": "YulTypedName", + "src": "801:7:17", "type": "" } ], "returnVariables": [ { - "name": "tail", + "name": "value0", + "nodeType": "YulTypedName", + "src": "813:6:17", + "type": "" + }, + { + "name": "value1", "nodeType": "YulTypedName", - "src": "5892:4:10", + "src": "821:6:17", "type": "" } ], - "src": "5727:343:10" + "src": "745:254:17" }, { "body": { "nodeType": "YulBlock", - "src": "6249:165:10", + "src": "1099:92:17", "statements": [ { - "expression": { + "nodeType": "YulAssignment", + "src": "1109:26:17", + "value": { "arguments": [ { "name": "headStart", "nodeType": "YulIdentifier", - "src": "6266:9:10" + "src": "1121:9:17" }, { "kind": "number", "nodeType": "YulLiteral", - "src": "6277:2:10", + "src": "1132:2:17", "type": "", "value": "32" } ], "functionName": { - "name": "mstore", + "name": "add", "nodeType": "YulIdentifier", - "src": "6259:6:10" + "src": "1117:3:17" }, "nodeType": "YulFunctionCall", - "src": "6259:21:10" + "src": "1117:18:17" }, - "nodeType": "YulExpressionStatement", - "src": "6259:21:10" + "variableNames": [ + { + "name": "tail", + "nodeType": "YulIdentifier", + "src": "1109:4:17" + } + ] }, { "expression": { "arguments": [ { - "arguments": [ - { - "name": "headStart", - "nodeType": "YulIdentifier", - "src": "6300:9:10" - }, - { - "kind": "number", - "nodeType": "YulLiteral", - "src": "6311:2:10", - "type": "", - "value": "32" - } - ], - "functionName": { - "name": "add", - "nodeType": "YulIdentifier", - "src": "6296:3:10" - }, - "nodeType": "YulFunctionCall", - "src": "6296:18:10" + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "1151:9:17" }, - { - "kind": "number", - "nodeType": "YulLiteral", - "src": "6316:2:10", - "type": "", - "value": "15" - } - ], - "functionName": { - "name": "mstore", - "nodeType": "YulIdentifier", - "src": "6289:6:10" - }, - "nodeType": "YulFunctionCall", - "src": "6289:30:10" - }, - "nodeType": "YulExpressionStatement", - "src": "6289:30:10" - }, - { - "expression": { - "arguments": [ { "arguments": [ { - "name": "headStart", - "nodeType": "YulIdentifier", - "src": "6339:9:10" - }, - { - "kind": "number", - "nodeType": "YulLiteral", - "src": "6350:2:10", - "type": "", - "value": "64" + "arguments": [ + { + "name": "value0", + "nodeType": "YulIdentifier", + "src": "1176:6:17" + } + ], + "functionName": { + "name": "iszero", + "nodeType": "YulIdentifier", + "src": "1169:6:17" + }, + "nodeType": "YulFunctionCall", + "src": "1169:14:17" } ], "functionName": { - "name": "add", + "name": "iszero", "nodeType": "YulIdentifier", - "src": "6335:3:10" + "src": "1162:6:17" }, "nodeType": "YulFunctionCall", - "src": "6335:18:10" - }, - { - "hexValue": "416c7265616479207265766f6b6564", - "kind": "string", - "nodeType": "YulLiteral", - "src": "6355:17:10", - "type": "", - "value": "Already revoked" + "src": "1162:22:17" } ], "functionName": { "name": "mstore", "nodeType": "YulIdentifier", - "src": "6328:6:10" + "src": "1144:6:17" }, "nodeType": "YulFunctionCall", - "src": "6328:45:10" + "src": "1144:41:17" }, "nodeType": "YulExpressionStatement", - "src": "6328:45:10" - }, - { - "nodeType": "YulAssignment", - "src": "6382:26:10", - "value": { - "arguments": [ - { - "name": "headStart", - "nodeType": "YulIdentifier", - "src": "6394:9:10" - }, - { - "kind": "number", - "nodeType": "YulLiteral", - "src": "6405:2:10", - "type": "", - "value": "96" - } - ], - "functionName": { - "name": "add", - "nodeType": "YulIdentifier", - "src": "6390:3:10" - }, - "nodeType": "YulFunctionCall", - "src": "6390:18:10" - }, - "variableNames": [ - { - "name": "tail", - "nodeType": "YulIdentifier", - "src": "6382:4:10" - } - ] + "src": "1144:41:17" } ] }, - "name": "abi_encode_tuple_t_stringliteral_ff30964d1d2e395450954287443a47ce4b7aeb0e55cf0d440f942617fe7e784c__to_t_string_memory_ptr__fromStack_reversed", + "name": "abi_encode_tuple_t_bool__to_t_bool__fromStack_reversed", "nodeType": "YulFunctionDefinition", "parameters": [ { "name": "headStart", "nodeType": "YulTypedName", - "src": "6226:9:10", + "src": "1068:9:17", + "type": "" + }, + { + "name": "value0", + "nodeType": "YulTypedName", + "src": "1079:6:17", "type": "" } ], @@ -33711,778 +44024,725 @@ { "name": "tail", "nodeType": "YulTypedName", - "src": "6240:4:10", + "src": "1090:4:17", "type": "" } ], - "src": "6075:339:10" + "src": "1004:187:17" }, { "body": { "nodeType": "YulBlock", - "src": "6451:95:10", + "src": "1297:76:17", "statements": [ { - "expression": { - "arguments": [ - { - "kind": "number", - "nodeType": "YulLiteral", - "src": "6468:1:10", - "type": "", - "value": "0" - }, - { - "arguments": [ - { - "kind": "number", - "nodeType": "YulLiteral", - "src": "6475:3:10", - "type": "", - "value": "224" - }, - { - "kind": "number", - "nodeType": "YulLiteral", - "src": "6480:10:10", - "type": "", - "value": "0x4e487b71" - } - ], - "functionName": { - "name": "shl", - "nodeType": "YulIdentifier", - "src": "6471:3:10" - }, - "nodeType": "YulFunctionCall", - "src": "6471:20:10" - } - ], - "functionName": { - "name": "mstore", - "nodeType": "YulIdentifier", - "src": "6461:6:10" - }, - "nodeType": "YulFunctionCall", - "src": "6461:31:10" - }, - "nodeType": "YulExpressionStatement", - "src": "6461:31:10" - }, - { - "expression": { + "nodeType": "YulAssignment", + "src": "1307:26:17", + "value": { "arguments": [ { - "kind": "number", - "nodeType": "YulLiteral", - "src": "6508:1:10", - "type": "", - "value": "4" + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "1319:9:17" }, { "kind": "number", "nodeType": "YulLiteral", - "src": "6511:4:10", + "src": "1330:2:17", "type": "", - "value": "0x11" + "value": "32" } ], "functionName": { - "name": "mstore", + "name": "add", "nodeType": "YulIdentifier", - "src": "6501:6:10" + "src": "1315:3:17" }, "nodeType": "YulFunctionCall", - "src": "6501:15:10" + "src": "1315:18:17" }, - "nodeType": "YulExpressionStatement", - "src": "6501:15:10" + "variableNames": [ + { + "name": "tail", + "nodeType": "YulIdentifier", + "src": "1307:4:17" + } + ] }, { "expression": { "arguments": [ { - "kind": "number", - "nodeType": "YulLiteral", - "src": "6532:1:10", - "type": "", - "value": "0" + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "1349:9:17" }, { - "kind": "number", - "nodeType": "YulLiteral", - "src": "6535:4:10", - "type": "", - "value": "0x24" + "name": "value0", + "nodeType": "YulIdentifier", + "src": "1360:6:17" } ], "functionName": { - "name": "revert", + "name": "mstore", "nodeType": "YulIdentifier", - "src": "6525:6:10" + "src": "1342:6:17" }, "nodeType": "YulFunctionCall", - "src": "6525:15:10" + "src": "1342:25:17" }, "nodeType": "YulExpressionStatement", - "src": "6525:15:10" + "src": "1342:25:17" } ] }, - "name": "panic_error_0x11", + "name": "abi_encode_tuple_t_uint256__to_t_uint256__fromStack_reversed", "nodeType": "YulFunctionDefinition", - "src": "6419:127:10" + "parameters": [ + { + "name": "headStart", + "nodeType": "YulTypedName", + "src": "1266:9:17", + "type": "" + }, + { + "name": "value0", + "nodeType": "YulTypedName", + "src": "1277:6:17", + "type": "" + } + ], + "returnVariables": [ + { + "name": "tail", + "nodeType": "YulTypedName", + "src": "1288:4:17", + "type": "" + } + ], + "src": "1196:177:17" }, { "body": { "nodeType": "YulBlock", - "src": "6600:79:10", + "src": "1482:224:17", "statements": [ - { - "nodeType": "YulAssignment", - "src": "6610:17:10", - "value": { - "arguments": [ - { - "name": "x", - "nodeType": "YulIdentifier", - "src": "6622:1:10" - }, - { - "name": "y", - "nodeType": "YulIdentifier", - "src": "6625:1:10" - } - ], - "functionName": { - "name": "sub", - "nodeType": "YulIdentifier", - "src": "6618:3:10" - }, - "nodeType": "YulFunctionCall", - "src": "6618:9:10" - }, - "variableNames": [ - { - "name": "diff", - "nodeType": "YulIdentifier", - "src": "6610:4:10" - } - ] - }, { "body": { "nodeType": "YulBlock", - "src": "6651:22:10", + "src": "1528:16:17", "statements": [ { "expression": { - "arguments": [], + "arguments": [ + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "1537:1:17", + "type": "", + "value": "0" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "1540:1:17", + "type": "", + "value": "0" + } + ], "functionName": { - "name": "panic_error_0x11", + "name": "revert", "nodeType": "YulIdentifier", - "src": "6653:16:10" + "src": "1530:6:17" }, "nodeType": "YulFunctionCall", - "src": "6653:18:10" + "src": "1530:12:17" }, "nodeType": "YulExpressionStatement", - "src": "6653:18:10" + "src": "1530:12:17" } ] }, "condition": { "arguments": [ { - "name": "diff", - "nodeType": "YulIdentifier", - "src": "6642:4:10" + "arguments": [ + { + "name": "dataEnd", + "nodeType": "YulIdentifier", + "src": "1503:7:17" + }, + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "1512:9:17" + } + ], + "functionName": { + "name": "sub", + "nodeType": "YulIdentifier", + "src": "1499:3:17" + }, + "nodeType": "YulFunctionCall", + "src": "1499:23:17" }, { - "name": "x", - "nodeType": "YulIdentifier", - "src": "6648:1:10" + "kind": "number", + "nodeType": "YulLiteral", + "src": "1524:2:17", + "type": "", + "value": "96" } ], "functionName": { - "name": "gt", + "name": "slt", "nodeType": "YulIdentifier", - "src": "6639:2:10" + "src": "1495:3:17" }, "nodeType": "YulFunctionCall", - "src": "6639:11:10" + "src": "1495:32:17" }, "nodeType": "YulIf", - "src": "6636:37:10" - } - ] - }, - "name": "checked_sub_t_uint256", - "nodeType": "YulFunctionDefinition", - "parameters": [ - { - "name": "x", - "nodeType": "YulTypedName", - "src": "6582:1:10", - "type": "" - }, - { - "name": "y", - "nodeType": "YulTypedName", - "src": "6585:1:10", - "type": "" - } - ], - "returnVariables": [ - { - "name": "diff", - "nodeType": "YulTypedName", - "src": "6591:4:10", - "type": "" - } - ], - "src": "6551:128:10" - }, - { - "body": { - "nodeType": "YulBlock", - "src": "6813:145:10", - "statements": [ + "src": "1492:52:17" + }, { "nodeType": "YulAssignment", - "src": "6823:26:10", + "src": "1553:39:17", "value": { "arguments": [ { "name": "headStart", "nodeType": "YulIdentifier", - "src": "6835:9:10" - }, - { - "kind": "number", - "nodeType": "YulLiteral", - "src": "6846:2:10", - "type": "", - "value": "64" + "src": "1582:9:17" } ], "functionName": { - "name": "add", + "name": "abi_decode_address", "nodeType": "YulIdentifier", - "src": "6831:3:10" + "src": "1563:18:17" }, "nodeType": "YulFunctionCall", - "src": "6831:18:10" + "src": "1563:29:17" }, "variableNames": [ { - "name": "tail", + "name": "value0", "nodeType": "YulIdentifier", - "src": "6823:4:10" + "src": "1553:6:17" } ] }, { - "expression": { + "nodeType": "YulAssignment", + "src": "1601:48:17", + "value": { "arguments": [ - { - "name": "headStart", - "nodeType": "YulIdentifier", - "src": "6865:9:10" - }, { "arguments": [ { - "name": "value0", + "name": "headStart", "nodeType": "YulIdentifier", - "src": "6880:6:10" + "src": "1634:9:17" }, { - "arguments": [ - { - "arguments": [ - { - "kind": "number", - "nodeType": "YulLiteral", - "src": "6896:3:10", - "type": "", - "value": "160" - }, - { - "kind": "number", - "nodeType": "YulLiteral", - "src": "6901:1:10", - "type": "", - "value": "1" - } - ], - "functionName": { - "name": "shl", - "nodeType": "YulIdentifier", - "src": "6892:3:10" - }, - "nodeType": "YulFunctionCall", - "src": "6892:11:10" - }, - { - "kind": "number", - "nodeType": "YulLiteral", - "src": "6905:1:10", - "type": "", - "value": "1" - } - ], - "functionName": { - "name": "sub", - "nodeType": "YulIdentifier", - "src": "6888:3:10" - }, - "nodeType": "YulFunctionCall", - "src": "6888:19:10" + "kind": "number", + "nodeType": "YulLiteral", + "src": "1645:2:17", + "type": "", + "value": "32" } ], "functionName": { - "name": "and", + "name": "add", "nodeType": "YulIdentifier", - "src": "6876:3:10" + "src": "1630:3:17" }, "nodeType": "YulFunctionCall", - "src": "6876:32:10" + "src": "1630:18:17" } ], "functionName": { - "name": "mstore", + "name": "abi_decode_address", "nodeType": "YulIdentifier", - "src": "6858:6:10" + "src": "1611:18:17" }, "nodeType": "YulFunctionCall", - "src": "6858:51:10" + "src": "1611:38:17" }, - "nodeType": "YulExpressionStatement", - "src": "6858:51:10" + "variableNames": [ + { + "name": "value1", + "nodeType": "YulIdentifier", + "src": "1601:6:17" + } + ] }, { - "expression": { + "nodeType": "YulAssignment", + "src": "1658:42:17", + "value": { "arguments": [ { "arguments": [ { "name": "headStart", "nodeType": "YulIdentifier", - "src": "6929:9:10" + "src": "1685:9:17" }, { "kind": "number", "nodeType": "YulLiteral", - "src": "6940:2:10", + "src": "1696:2:17", "type": "", - "value": "32" + "value": "64" } ], "functionName": { "name": "add", "nodeType": "YulIdentifier", - "src": "6925:3:10" + "src": "1681:3:17" }, "nodeType": "YulFunctionCall", - "src": "6925:18:10" - }, - { - "name": "value1", - "nodeType": "YulIdentifier", - "src": "6945:6:10" + "src": "1681:18:17" } ], "functionName": { - "name": "mstore", + "name": "calldataload", "nodeType": "YulIdentifier", - "src": "6918:6:10" + "src": "1668:12:17" }, "nodeType": "YulFunctionCall", - "src": "6918:34:10" + "src": "1668:32:17" }, - "nodeType": "YulExpressionStatement", - "src": "6918:34:10" + "variableNames": [ + { + "name": "value2", + "nodeType": "YulIdentifier", + "src": "1658:6:17" + } + ] } ] }, - "name": "abi_encode_tuple_t_address_t_uint256__to_t_address_t_uint256__fromStack_reversed", + "name": "abi_decode_tuple_t_addresst_addresst_uint256", "nodeType": "YulFunctionDefinition", "parameters": [ { "name": "headStart", "nodeType": "YulTypedName", - "src": "6774:9:10", + "src": "1432:9:17", "type": "" }, { - "name": "value1", + "name": "dataEnd", "nodeType": "YulTypedName", - "src": "6785:6:10", + "src": "1443:7:17", "type": "" - }, + } + ], + "returnVariables": [ { "name": "value0", "nodeType": "YulTypedName", - "src": "6793:6:10", + "src": "1455:6:17", "type": "" - } - ], - "returnVariables": [ + }, { - "name": "tail", + "name": "value1", + "nodeType": "YulTypedName", + "src": "1463:6:17", + "type": "" + }, + { + "name": "value2", "nodeType": "YulTypedName", - "src": "6804:4:10", + "src": "1471:6:17", "type": "" } ], - "src": "6684:274:10" + "src": "1378:328:17" }, { "body": { "nodeType": "YulBlock", - "src": "7137:165:10", + "src": "1808:87:17", "statements": [ { - "expression": { + "nodeType": "YulAssignment", + "src": "1818:26:17", + "value": { "arguments": [ { "name": "headStart", "nodeType": "YulIdentifier", - "src": "7154:9:10" + "src": "1830:9:17" }, { "kind": "number", "nodeType": "YulLiteral", - "src": "7165:2:10", + "src": "1841:2:17", "type": "", "value": "32" } ], "functionName": { - "name": "mstore", + "name": "add", "nodeType": "YulIdentifier", - "src": "7147:6:10" + "src": "1826:3:17" }, "nodeType": "YulFunctionCall", - "src": "7147:21:10" + "src": "1826:18:17" }, - "nodeType": "YulExpressionStatement", - "src": "7147:21:10" + "variableNames": [ + { + "name": "tail", + "nodeType": "YulIdentifier", + "src": "1818:4:17" + } + ] }, { "expression": { "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "1860:9:17" + }, { "arguments": [ { - "name": "headStart", + "name": "value0", "nodeType": "YulIdentifier", - "src": "7188:9:10" + "src": "1875:6:17" }, { "kind": "number", "nodeType": "YulLiteral", - "src": "7199:2:10", + "src": "1883:4:17", "type": "", - "value": "32" + "value": "0xff" } ], "functionName": { - "name": "add", + "name": "and", "nodeType": "YulIdentifier", - "src": "7184:3:10" + "src": "1871:3:17" }, "nodeType": "YulFunctionCall", - "src": "7184:18:10" - }, - { - "kind": "number", - "nodeType": "YulLiteral", - "src": "7204:2:10", - "type": "", - "value": "15" + "src": "1871:17:17" } ], "functionName": { "name": "mstore", "nodeType": "YulIdentifier", - "src": "7177:6:10" + "src": "1853:6:17" }, "nodeType": "YulFunctionCall", - "src": "7177:30:10" + "src": "1853:36:17" }, "nodeType": "YulExpressionStatement", - "src": "7177:30:10" - }, + "src": "1853:36:17" + } + ] + }, + "name": "abi_encode_tuple_t_uint8__to_t_uint8__fromStack_reversed", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "headStart", + "nodeType": "YulTypedName", + "src": "1777:9:17", + "type": "" + }, + { + "name": "value0", + "nodeType": "YulTypedName", + "src": "1788:6:17", + "type": "" + } + ], + "returnVariables": [ + { + "name": "tail", + "nodeType": "YulTypedName", + "src": "1799:4:17", + "type": "" + } + ], + "src": "1711:184:17" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "1970:116:17", + "statements": [ { - "expression": { + "body": { + "nodeType": "YulBlock", + "src": "2016:16:17", + "statements": [ + { + "expression": { + "arguments": [ + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "2025:1:17", + "type": "", + "value": "0" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "2028:1:17", + "type": "", + "value": "0" + } + ], + "functionName": { + "name": "revert", + "nodeType": "YulIdentifier", + "src": "2018:6:17" + }, + "nodeType": "YulFunctionCall", + "src": "2018:12:17" + }, + "nodeType": "YulExpressionStatement", + "src": "2018:12:17" + } + ] + }, + "condition": { "arguments": [ { "arguments": [ { - "name": "headStart", + "name": "dataEnd", "nodeType": "YulIdentifier", - "src": "7227:9:10" + "src": "1991:7:17" }, { - "kind": "number", - "nodeType": "YulLiteral", - "src": "7238:2:10", - "type": "", - "value": "64" + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "2000:9:17" } ], "functionName": { - "name": "add", + "name": "sub", "nodeType": "YulIdentifier", - "src": "7223:3:10" + "src": "1987:3:17" }, "nodeType": "YulFunctionCall", - "src": "7223:18:10" + "src": "1987:23:17" }, { - "hexValue": "496e76616c69642061646472657373", - "kind": "string", + "kind": "number", "nodeType": "YulLiteral", - "src": "7243:17:10", + "src": "2012:2:17", "type": "", - "value": "Invalid address" + "value": "32" } ], "functionName": { - "name": "mstore", + "name": "slt", "nodeType": "YulIdentifier", - "src": "7216:6:10" + "src": "1983:3:17" }, "nodeType": "YulFunctionCall", - "src": "7216:45:10" + "src": "1983:32:17" }, - "nodeType": "YulExpressionStatement", - "src": "7216:45:10" + "nodeType": "YulIf", + "src": "1980:52:17" }, { "nodeType": "YulAssignment", - "src": "7270:26:10", + "src": "2041:39:17", "value": { "arguments": [ { "name": "headStart", "nodeType": "YulIdentifier", - "src": "7282:9:10" - }, - { - "kind": "number", - "nodeType": "YulLiteral", - "src": "7293:2:10", - "type": "", - "value": "96" + "src": "2070:9:17" } ], "functionName": { - "name": "add", + "name": "abi_decode_address", "nodeType": "YulIdentifier", - "src": "7278:3:10" + "src": "2051:18:17" }, "nodeType": "YulFunctionCall", - "src": "7278:18:10" + "src": "2051:29:17" }, "variableNames": [ { - "name": "tail", + "name": "value0", "nodeType": "YulIdentifier", - "src": "7270:4:10" + "src": "2041:6:17" } ] } ] }, - "name": "abi_encode_tuple_t_stringliteral_1462473b7a4b33d32b109b815fd2324d00c9e5839b707ecf16d0ab5744f99226__to_t_string_memory_ptr__fromStack_reversed", + "name": "abi_decode_tuple_t_address", "nodeType": "YulFunctionDefinition", "parameters": [ { "name": "headStart", "nodeType": "YulTypedName", - "src": "7114:9:10", + "src": "1936:9:17", + "type": "" + }, + { + "name": "dataEnd", + "nodeType": "YulTypedName", + "src": "1947:7:17", "type": "" } ], "returnVariables": [ { - "name": "tail", + "name": "value0", "nodeType": "YulTypedName", - "src": "7128:4:10", + "src": "1959:6:17", "type": "" } ], - "src": "6963:339:10" + "src": "1900:186:17" }, { "body": { "nodeType": "YulBlock", - "src": "7481:165:10", + "src": "2192:102:17", "statements": [ { - "expression": { + "nodeType": "YulAssignment", + "src": "2202:26:17", + "value": { "arguments": [ { "name": "headStart", "nodeType": "YulIdentifier", - "src": "7498:9:10" + "src": "2214:9:17" }, { "kind": "number", "nodeType": "YulLiteral", - "src": "7509:2:10", + "src": "2225:2:17", "type": "", "value": "32" } ], "functionName": { - "name": "mstore", + "name": "add", "nodeType": "YulIdentifier", - "src": "7491:6:10" + "src": "2210:3:17" }, "nodeType": "YulFunctionCall", - "src": "7491:21:10" + "src": "2210:18:17" }, - "nodeType": "YulExpressionStatement", - "src": "7491:21:10" + "variableNames": [ + { + "name": "tail", + "nodeType": "YulIdentifier", + "src": "2202:4:17" + } + ] }, { "expression": { "arguments": [ { - "arguments": [ - { - "name": "headStart", - "nodeType": "YulIdentifier", - "src": "7532:9:10" - }, - { - "kind": "number", - "nodeType": "YulLiteral", - "src": "7543:2:10", - "type": "", - "value": "32" - } - ], - "functionName": { - "name": "add", - "nodeType": "YulIdentifier", - "src": "7528:3:10" - }, - "nodeType": "YulFunctionCall", - "src": "7528:18:10" + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "2244:9:17" }, - { - "kind": "number", - "nodeType": "YulLiteral", - "src": "7548:2:10", - "type": "", - "value": "15" - } - ], - "functionName": { - "name": "mstore", - "nodeType": "YulIdentifier", - "src": "7521:6:10" - }, - "nodeType": "YulFunctionCall", - "src": "7521:30:10" - }, - "nodeType": "YulExpressionStatement", - "src": "7521:30:10" - }, - { - "expression": { - "arguments": [ { "arguments": [ { - "name": "headStart", + "name": "value0", "nodeType": "YulIdentifier", - "src": "7571:9:10" + "src": "2259:6:17" }, { - "kind": "number", - "nodeType": "YulLiteral", - "src": "7582:2:10", - "type": "", - "value": "64" + "arguments": [ + { + "arguments": [ + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "2275:3:17", + "type": "", + "value": "160" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "2280:1:17", + "type": "", + "value": "1" + } + ], + "functionName": { + "name": "shl", + "nodeType": "YulIdentifier", + "src": "2271:3:17" + }, + "nodeType": "YulFunctionCall", + "src": "2271:11:17" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "2284:1:17", + "type": "", + "value": "1" + } + ], + "functionName": { + "name": "sub", + "nodeType": "YulIdentifier", + "src": "2267:3:17" + }, + "nodeType": "YulFunctionCall", + "src": "2267:19:17" } ], "functionName": { - "name": "add", + "name": "and", "nodeType": "YulIdentifier", - "src": "7567:3:10" + "src": "2255:3:17" }, "nodeType": "YulFunctionCall", - "src": "7567:18:10" - }, - { - "hexValue": "56657374696e67207265766f6b6564", - "kind": "string", - "nodeType": "YulLiteral", - "src": "7587:17:10", - "type": "", - "value": "Vesting revoked" + "src": "2255:32:17" } ], "functionName": { "name": "mstore", "nodeType": "YulIdentifier", - "src": "7560:6:10" + "src": "2237:6:17" }, "nodeType": "YulFunctionCall", - "src": "7560:45:10" + "src": "2237:51:17" }, "nodeType": "YulExpressionStatement", - "src": "7560:45:10" - }, - { - "nodeType": "YulAssignment", - "src": "7614:26:10", - "value": { - "arguments": [ - { - "name": "headStart", - "nodeType": "YulIdentifier", - "src": "7626:9:10" - }, - { - "kind": "number", - "nodeType": "YulLiteral", - "src": "7637:2:10", - "type": "", - "value": "96" - } - ], - "functionName": { - "name": "add", - "nodeType": "YulIdentifier", - "src": "7622:3:10" - }, - "nodeType": "YulFunctionCall", - "src": "7622:18:10" - }, - "variableNames": [ - { - "name": "tail", - "nodeType": "YulIdentifier", - "src": "7614:4:10" - } - ] + "src": "2237:51:17" } ] }, - "name": "abi_encode_tuple_t_stringliteral_8ecb40193de0ebe87d207ece4ce0c743b9de3a82936a058dc7616916eebf0679__to_t_string_memory_ptr__fromStack_reversed", + "name": "abi_encode_tuple_t_address__to_t_address__fromStack_reversed", "nodeType": "YulFunctionDefinition", "parameters": [ { "name": "headStart", "nodeType": "YulTypedName", - "src": "7458:9:10", + "src": "2161:9:17", + "type": "" + }, + { + "name": "value0", + "nodeType": "YulTypedName", + "src": "2172:6:17", "type": "" } ], @@ -34490,474 +44750,796 @@ { "name": "tail", "nodeType": "YulTypedName", - "src": "7472:4:10", + "src": "2183:4:17", "type": "" } ], - "src": "7307:339:10" + "src": "2091:203:17" }, { "body": { "nodeType": "YulBlock", - "src": "7825:168:10", + "src": "2386:173:17", "statements": [ { - "expression": { - "arguments": [ - { - "name": "headStart", - "nodeType": "YulIdentifier", - "src": "7842:9:10" - }, + "body": { + "nodeType": "YulBlock", + "src": "2432:16:17", + "statements": [ { - "kind": "number", - "nodeType": "YulLiteral", - "src": "7853:2:10", - "type": "", - "value": "32" + "expression": { + "arguments": [ + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "2441:1:17", + "type": "", + "value": "0" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "2444:1:17", + "type": "", + "value": "0" + } + ], + "functionName": { + "name": "revert", + "nodeType": "YulIdentifier", + "src": "2434:6:17" + }, + "nodeType": "YulFunctionCall", + "src": "2434:12:17" + }, + "nodeType": "YulExpressionStatement", + "src": "2434:12:17" } - ], - "functionName": { - "name": "mstore", - "nodeType": "YulIdentifier", - "src": "7835:6:10" - }, - "nodeType": "YulFunctionCall", - "src": "7835:21:10" + ] }, - "nodeType": "YulExpressionStatement", - "src": "7835:21:10" - }, - { - "expression": { + "condition": { "arguments": [ { "arguments": [ { - "name": "headStart", + "name": "dataEnd", "nodeType": "YulIdentifier", - "src": "7876:9:10" + "src": "2407:7:17" }, { - "kind": "number", - "nodeType": "YulLiteral", - "src": "7887:2:10", - "type": "", - "value": "32" + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "2416:9:17" } ], "functionName": { - "name": "add", + "name": "sub", "nodeType": "YulIdentifier", - "src": "7872:3:10" + "src": "2403:3:17" }, "nodeType": "YulFunctionCall", - "src": "7872:18:10" + "src": "2403:23:17" }, { "kind": "number", "nodeType": "YulLiteral", - "src": "7892:2:10", + "src": "2428:2:17", "type": "", - "value": "18" + "value": "64" } ], "functionName": { - "name": "mstore", + "name": "slt", "nodeType": "YulIdentifier", - "src": "7865:6:10" + "src": "2399:3:17" }, "nodeType": "YulFunctionCall", - "src": "7865:30:10" + "src": "2399:32:17" }, - "nodeType": "YulExpressionStatement", - "src": "7865:30:10" + "nodeType": "YulIf", + "src": "2396:52:17" }, { - "expression": { + "nodeType": "YulAssignment", + "src": "2457:39:17", + "value": { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "2486:9:17" + } + ], + "functionName": { + "name": "abi_decode_address", + "nodeType": "YulIdentifier", + "src": "2467:18:17" + }, + "nodeType": "YulFunctionCall", + "src": "2467:29:17" + }, + "variableNames": [ + { + "name": "value0", + "nodeType": "YulIdentifier", + "src": "2457:6:17" + } + ] + }, + { + "nodeType": "YulAssignment", + "src": "2505:48:17", + "value": { "arguments": [ { "arguments": [ { "name": "headStart", "nodeType": "YulIdentifier", - "src": "7915:9:10" + "src": "2538:9:17" }, { "kind": "number", "nodeType": "YulLiteral", - "src": "7926:2:10", + "src": "2549:2:17", "type": "", - "value": "64" + "value": "32" } ], "functionName": { "name": "add", "nodeType": "YulIdentifier", - "src": "7911:3:10" + "src": "2534:3:17" }, "nodeType": "YulFunctionCall", - "src": "7911:18:10" - }, - { - "hexValue": "4e6f20746f6b656e7320746f20636c61696d", - "kind": "string", - "nodeType": "YulLiteral", - "src": "7931:20:10", - "type": "", - "value": "No tokens to claim" - } - ], - "functionName": { - "name": "mstore", - "nodeType": "YulIdentifier", - "src": "7904:6:10" - }, - "nodeType": "YulFunctionCall", - "src": "7904:48:10" - }, - "nodeType": "YulExpressionStatement", - "src": "7904:48:10" - }, - { - "nodeType": "YulAssignment", - "src": "7961:26:10", - "value": { - "arguments": [ - { - "name": "headStart", - "nodeType": "YulIdentifier", - "src": "7973:9:10" - }, - { - "kind": "number", - "nodeType": "YulLiteral", - "src": "7984:2:10", - "type": "", - "value": "96" + "src": "2534:18:17" } ], "functionName": { - "name": "add", + "name": "abi_decode_address", "nodeType": "YulIdentifier", - "src": "7969:3:10" + "src": "2515:18:17" }, "nodeType": "YulFunctionCall", - "src": "7969:18:10" + "src": "2515:38:17" }, "variableNames": [ { - "name": "tail", + "name": "value1", "nodeType": "YulIdentifier", - "src": "7961:4:10" + "src": "2505:6:17" } ] } ] }, - "name": "abi_encode_tuple_t_stringliteral_0d5449e713a47f03a14de06feb7e7374931b31bbe74b9f8d4277d4797f0eb90e__to_t_string_memory_ptr__fromStack_reversed", + "name": "abi_decode_tuple_t_addresst_address", "nodeType": "YulFunctionDefinition", "parameters": [ { "name": "headStart", "nodeType": "YulTypedName", - "src": "7802:9:10", + "src": "2344:9:17", + "type": "" + }, + { + "name": "dataEnd", + "nodeType": "YulTypedName", + "src": "2355:7:17", "type": "" } ], "returnVariables": [ { - "name": "tail", + "name": "value0", + "nodeType": "YulTypedName", + "src": "2367:6:17", + "type": "" + }, + { + "name": "value1", "nodeType": "YulTypedName", - "src": "7816:4:10", + "src": "2375:6:17", "type": "" } ], - "src": "7651:342:10" + "src": "2299:260:17" }, { "body": { "nodeType": "YulBlock", - "src": "8046:77:10", + "src": "2619:325:17", "statements": [ { "nodeType": "YulAssignment", - "src": "8056:16:10", + "src": "2629:22:17", "value": { "arguments": [ { - "name": "x", - "nodeType": "YulIdentifier", - "src": "8067:1:10" + "kind": "number", + "nodeType": "YulLiteral", + "src": "2643:1:17", + "type": "", + "value": "1" }, { - "name": "y", + "name": "data", "nodeType": "YulIdentifier", - "src": "8070:1:10" + "src": "2646:4:17" } ], "functionName": { - "name": "add", + "name": "shr", "nodeType": "YulIdentifier", - "src": "8063:3:10" + "src": "2639:3:17" }, "nodeType": "YulFunctionCall", - "src": "8063:9:10" + "src": "2639:12:17" }, "variableNames": [ { - "name": "sum", + "name": "length", + "nodeType": "YulIdentifier", + "src": "2629:6:17" + } + ] + }, + { + "nodeType": "YulVariableDeclaration", + "src": "2660:38:17", + "value": { + "arguments": [ + { + "name": "data", + "nodeType": "YulIdentifier", + "src": "2690:4:17" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "2696:1:17", + "type": "", + "value": "1" + } + ], + "functionName": { + "name": "and", "nodeType": "YulIdentifier", - "src": "8056:3:10" + "src": "2686:3:17" + }, + "nodeType": "YulFunctionCall", + "src": "2686:12:17" + }, + "variables": [ + { + "name": "outOfPlaceEncoding", + "nodeType": "YulTypedName", + "src": "2664:18:17", + "type": "" } ] }, { "body": { "nodeType": "YulBlock", - "src": "8095:22:10", + "src": "2737:31:17", + "statements": [ + { + "nodeType": "YulAssignment", + "src": "2739:27:17", + "value": { + "arguments": [ + { + "name": "length", + "nodeType": "YulIdentifier", + "src": "2753:6:17" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "2761:4:17", + "type": "", + "value": "0x7f" + } + ], + "functionName": { + "name": "and", + "nodeType": "YulIdentifier", + "src": "2749:3:17" + }, + "nodeType": "YulFunctionCall", + "src": "2749:17:17" + }, + "variableNames": [ + { + "name": "length", + "nodeType": "YulIdentifier", + "src": "2739:6:17" + } + ] + } + ] + }, + "condition": { + "arguments": [ + { + "name": "outOfPlaceEncoding", + "nodeType": "YulIdentifier", + "src": "2717:18:17" + } + ], + "functionName": { + "name": "iszero", + "nodeType": "YulIdentifier", + "src": "2710:6:17" + }, + "nodeType": "YulFunctionCall", + "src": "2710:26:17" + }, + "nodeType": "YulIf", + "src": "2707:61:17" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "2827:111:17", "statements": [ { "expression": { - "arguments": [], + "arguments": [ + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "2848:1:17", + "type": "", + "value": "0" + }, + { + "arguments": [ + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "2855:3:17", + "type": "", + "value": "224" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "2860:10:17", + "type": "", + "value": "0x4e487b71" + } + ], + "functionName": { + "name": "shl", + "nodeType": "YulIdentifier", + "src": "2851:3:17" + }, + "nodeType": "YulFunctionCall", + "src": "2851:20:17" + } + ], "functionName": { - "name": "panic_error_0x11", + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "2841:6:17" + }, + "nodeType": "YulFunctionCall", + "src": "2841:31:17" + }, + "nodeType": "YulExpressionStatement", + "src": "2841:31:17" + }, + { + "expression": { + "arguments": [ + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "2892:1:17", + "type": "", + "value": "4" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "2895:4:17", + "type": "", + "value": "0x22" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "2885:6:17" + }, + "nodeType": "YulFunctionCall", + "src": "2885:15:17" + }, + "nodeType": "YulExpressionStatement", + "src": "2885:15:17" + }, + { + "expression": { + "arguments": [ + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "2920:1:17", + "type": "", + "value": "0" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "2923:4:17", + "type": "", + "value": "0x24" + } + ], + "functionName": { + "name": "revert", "nodeType": "YulIdentifier", - "src": "8097:16:10" + "src": "2913:6:17" }, "nodeType": "YulFunctionCall", - "src": "8097:18:10" + "src": "2913:15:17" }, "nodeType": "YulExpressionStatement", - "src": "8097:18:10" + "src": "2913:15:17" } ] }, "condition": { "arguments": [ { - "name": "x", + "name": "outOfPlaceEncoding", "nodeType": "YulIdentifier", - "src": "8087:1:10" + "src": "2783:18:17" }, { - "name": "sum", - "nodeType": "YulIdentifier", - "src": "8090:3:10" + "arguments": [ + { + "name": "length", + "nodeType": "YulIdentifier", + "src": "2806:6:17" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "2814:2:17", + "type": "", + "value": "32" + } + ], + "functionName": { + "name": "lt", + "nodeType": "YulIdentifier", + "src": "2803:2:17" + }, + "nodeType": "YulFunctionCall", + "src": "2803:14:17" } ], "functionName": { - "name": "gt", + "name": "eq", "nodeType": "YulIdentifier", - "src": "8084:2:10" + "src": "2780:2:17" }, "nodeType": "YulFunctionCall", - "src": "8084:10:10" + "src": "2780:38:17" }, "nodeType": "YulIf", - "src": "8081:36:10" + "src": "2777:161:17" } ] }, - "name": "checked_add_t_uint256", + "name": "extract_byte_array_length", "nodeType": "YulFunctionDefinition", "parameters": [ { - "name": "x", - "nodeType": "YulTypedName", - "src": "8029:1:10", - "type": "" - }, - { - "name": "y", + "name": "data", "nodeType": "YulTypedName", - "src": "8032:1:10", + "src": "2599:4:17", "type": "" } ], "returnVariables": [ { - "name": "sum", + "name": "length", "nodeType": "YulTypedName", - "src": "8038:3:10", + "src": "2608:6:17", "type": "" } ], - "src": "7998:125:10" + "src": "2564:380:17" }, { "body": { "nodeType": "YulBlock", - "src": "8180:116:10", + "src": "3106:188:17", "statements": [ { "nodeType": "YulAssignment", - "src": "8190:20:10", + "src": "3116:26:17", "value": { "arguments": [ { - "name": "x", + "name": "headStart", "nodeType": "YulIdentifier", - "src": "8205:1:10" + "src": "3128:9:17" }, { - "name": "y", - "nodeType": "YulIdentifier", - "src": "8208:1:10" + "kind": "number", + "nodeType": "YulLiteral", + "src": "3139:2:17", + "type": "", + "value": "96" } ], "functionName": { - "name": "mul", + "name": "add", "nodeType": "YulIdentifier", - "src": "8201:3:10" + "src": "3124:3:17" }, "nodeType": "YulFunctionCall", - "src": "8201:9:10" + "src": "3124:18:17" }, "variableNames": [ { - "name": "product", + "name": "tail", "nodeType": "YulIdentifier", - "src": "8190:7:10" + "src": "3116:4:17" } ] }, { - "body": { - "nodeType": "YulBlock", - "src": "8268:22:10", - "statements": [ - { - "expression": { - "arguments": [], - "functionName": { - "name": "panic_error_0x11", - "nodeType": "YulIdentifier", - "src": "8270:16:10" - }, - "nodeType": "YulFunctionCall", - "src": "8270:18:10" - }, - "nodeType": "YulExpressionStatement", - "src": "8270:18:10" - } - ] - }, - "condition": { + "expression": { "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "3158:9:17" + }, { "arguments": [ { - "arguments": [ - { - "name": "x", - "nodeType": "YulIdentifier", - "src": "8239:1:10" - } - ], - "functionName": { - "name": "iszero", - "nodeType": "YulIdentifier", - "src": "8232:6:10" - }, - "nodeType": "YulFunctionCall", - "src": "8232:9:10" + "name": "value0", + "nodeType": "YulIdentifier", + "src": "3173:6:17" }, { "arguments": [ - { - "name": "y", - "nodeType": "YulIdentifier", - "src": "8246:1:10" - }, { "arguments": [ { - "name": "product", - "nodeType": "YulIdentifier", - "src": "8253:7:10" + "kind": "number", + "nodeType": "YulLiteral", + "src": "3189:3:17", + "type": "", + "value": "160" }, { - "name": "x", - "nodeType": "YulIdentifier", - "src": "8262:1:10" + "kind": "number", + "nodeType": "YulLiteral", + "src": "3194:1:17", + "type": "", + "value": "1" } ], "functionName": { - "name": "div", + "name": "shl", "nodeType": "YulIdentifier", - "src": "8249:3:10" + "src": "3185:3:17" }, "nodeType": "YulFunctionCall", - "src": "8249:15:10" + "src": "3185:11:17" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "3198:1:17", + "type": "", + "value": "1" } ], "functionName": { - "name": "eq", + "name": "sub", "nodeType": "YulIdentifier", - "src": "8243:2:10" + "src": "3181:3:17" }, "nodeType": "YulFunctionCall", - "src": "8243:22:10" + "src": "3181:19:17" } ], "functionName": { - "name": "or", + "name": "and", "nodeType": "YulIdentifier", - "src": "8229:2:10" + "src": "3169:3:17" }, "nodeType": "YulFunctionCall", - "src": "8229:37:10" + "src": "3169:32:17" } ], "functionName": { - "name": "iszero", + "name": "mstore", "nodeType": "YulIdentifier", - "src": "8222:6:10" + "src": "3151:6:17" }, "nodeType": "YulFunctionCall", - "src": "8222:45:10" + "src": "3151:51:17" }, - "nodeType": "YulIf", - "src": "8219:71:10" + "nodeType": "YulExpressionStatement", + "src": "3151:51:17" + }, + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "3222:9:17" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "3233:2:17", + "type": "", + "value": "32" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "3218:3:17" + }, + "nodeType": "YulFunctionCall", + "src": "3218:18:17" + }, + { + "name": "value1", + "nodeType": "YulIdentifier", + "src": "3238:6:17" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "3211:6:17" + }, + "nodeType": "YulFunctionCall", + "src": "3211:34:17" + }, + "nodeType": "YulExpressionStatement", + "src": "3211:34:17" + }, + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "3265:9:17" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "3276:2:17", + "type": "", + "value": "64" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "3261:3:17" + }, + "nodeType": "YulFunctionCall", + "src": "3261:18:17" + }, + { + "name": "value2", + "nodeType": "YulIdentifier", + "src": "3281:6:17" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "3254:6:17" + }, + "nodeType": "YulFunctionCall", + "src": "3254:34:17" + }, + "nodeType": "YulExpressionStatement", + "src": "3254:34:17" } ] }, - "name": "checked_mul_t_uint256", + "name": "abi_encode_tuple_t_address_t_uint256_t_uint256__to_t_address_t_uint256_t_uint256__fromStack_reversed", "nodeType": "YulFunctionDefinition", "parameters": [ { - "name": "x", + "name": "headStart", "nodeType": "YulTypedName", - "src": "8159:1:10", + "src": "3059:9:17", "type": "" }, { - "name": "y", + "name": "value2", + "nodeType": "YulTypedName", + "src": "3070:6:17", + "type": "" + }, + { + "name": "value1", + "nodeType": "YulTypedName", + "src": "3078:6:17", + "type": "" + }, + { + "name": "value0", "nodeType": "YulTypedName", - "src": "8162:1:10", + "src": "3086:6:17", "type": "" } ], "returnVariables": [ { - "name": "product", + "name": "tail", "nodeType": "YulTypedName", - "src": "8168:7:10", + "src": "3097:4:17", "type": "" } ], - "src": "8128:168:10" + "src": "2949:345:17" }, { "body": { "nodeType": "YulBlock", - "src": "8347:171:10", + "src": "3347:174:17", "statements": [ + { + "nodeType": "YulAssignment", + "src": "3357:16:17", + "value": { + "arguments": [ + { + "name": "x", + "nodeType": "YulIdentifier", + "src": "3368:1:17" + }, + { + "name": "y", + "nodeType": "YulIdentifier", + "src": "3371:1:17" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "3364:3:17" + }, + "nodeType": "YulFunctionCall", + "src": "3364:9:17" + }, + "variableNames": [ + { + "name": "sum", + "nodeType": "YulIdentifier", + "src": "3357:3:17" + } + ] + }, { "body": { "nodeType": "YulBlock", - "src": "8378:111:10", + "src": "3404:111:17", "statements": [ { "expression": { @@ -34965,7 +45547,7 @@ { "kind": "number", "nodeType": "YulLiteral", - "src": "8399:1:10", + "src": "3425:1:17", "type": "", "value": "0" }, @@ -34974,14 +45556,14 @@ { "kind": "number", "nodeType": "YulLiteral", - "src": "8406:3:10", + "src": "3432:3:17", "type": "", "value": "224" }, { "kind": "number", "nodeType": "YulLiteral", - "src": "8411:10:10", + "src": "3437:10:17", "type": "", "value": "0x4e487b71" } @@ -34989,22 +45571,22 @@ "functionName": { "name": "shl", "nodeType": "YulIdentifier", - "src": "8402:3:10" + "src": "3428:3:17" }, "nodeType": "YulFunctionCall", - "src": "8402:20:10" + "src": "3428:20:17" } ], "functionName": { "name": "mstore", "nodeType": "YulIdentifier", - "src": "8392:6:10" + "src": "3418:6:17" }, "nodeType": "YulFunctionCall", - "src": "8392:31:10" + "src": "3418:31:17" }, "nodeType": "YulExpressionStatement", - "src": "8392:31:10" + "src": "3418:31:17" }, { "expression": { @@ -35012,28 +45594,28 @@ { "kind": "number", "nodeType": "YulLiteral", - "src": "8443:1:10", + "src": "3469:1:17", "type": "", "value": "4" }, { "kind": "number", "nodeType": "YulLiteral", - "src": "8446:4:10", + "src": "3472:4:17", "type": "", - "value": "0x12" + "value": "0x11" } ], "functionName": { "name": "mstore", "nodeType": "YulIdentifier", - "src": "8436:6:10" + "src": "3462:6:17" }, "nodeType": "YulFunctionCall", - "src": "8436:15:10" + "src": "3462:15:17" }, "nodeType": "YulExpressionStatement", - "src": "8436:15:10" + "src": "3462:15:17" }, { "expression": { @@ -35041,14 +45623,14 @@ { "kind": "number", "nodeType": "YulLiteral", - "src": "8471:1:10", + "src": "3497:1:17", "type": "", "value": "0" }, { "kind": "number", "nodeType": "YulLiteral", - "src": "8474:4:10", + "src": "3500:4:17", "type": "", "value": "0x24" } @@ -35056,147 +45638,99 @@ "functionName": { "name": "revert", "nodeType": "YulIdentifier", - "src": "8464:6:10" + "src": "3490:6:17" }, "nodeType": "YulFunctionCall", - "src": "8464:15:10" + "src": "3490:15:17" }, "nodeType": "YulExpressionStatement", - "src": "8464:15:10" + "src": "3490:15:17" } ] }, "condition": { - "arguments": [ - { - "name": "y", - "nodeType": "YulIdentifier", - "src": "8367:1:10" - } - ], - "functionName": { - "name": "iszero", - "nodeType": "YulIdentifier", - "src": "8360:6:10" - }, - "nodeType": "YulFunctionCall", - "src": "8360:9:10" - }, - "nodeType": "YulIf", - "src": "8357:132:10" - }, - { - "nodeType": "YulAssignment", - "src": "8498:14:10", - "value": { "arguments": [ { "name": "x", "nodeType": "YulIdentifier", - "src": "8507:1:10" + "src": "3388:1:17" }, { - "name": "y", + "name": "sum", "nodeType": "YulIdentifier", - "src": "8510:1:10" + "src": "3391:3:17" } ], "functionName": { - "name": "div", + "name": "gt", "nodeType": "YulIdentifier", - "src": "8503:3:10" + "src": "3385:2:17" }, "nodeType": "YulFunctionCall", - "src": "8503:9:10" + "src": "3385:10:17" }, - "variableNames": [ - { - "name": "r", - "nodeType": "YulIdentifier", - "src": "8498:1:10" - } - ] + "nodeType": "YulIf", + "src": "3382:133:17" } ] }, - "name": "checked_div_t_uint256", + "name": "checked_add_t_uint256", "nodeType": "YulFunctionDefinition", "parameters": [ { "name": "x", "nodeType": "YulTypedName", - "src": "8332:1:10", + "src": "3330:1:17", "type": "" }, { "name": "y", "nodeType": "YulTypedName", - "src": "8335:1:10", + "src": "3333:1:17", "type": "" } ], "returnVariables": [ { - "name": "r", + "name": "sum", "nodeType": "YulTypedName", - "src": "8341:1:10", + "src": "3339:3:17", "type": "" } ], - "src": "8301:217:10" + "src": "3299:222:17" } ] }, - "contents": "{\n { }\n function abi_decode_address(offset) -> value\n {\n value := calldataload(offset)\n if iszero(eq(value, and(value, sub(shl(160, 1), 1)))) { revert(0, 0) }\n }\n function abi_decode_tuple_t_addresst_uint256t_uint256t_uint256t_uint256(headStart, dataEnd) -> value0, value1, value2, value3, value4\n {\n if slt(sub(dataEnd, headStart), 160) { revert(0, 0) }\n value0 := abi_decode_address(headStart)\n value1 := calldataload(add(headStart, 32))\n value2 := calldataload(add(headStart, 64))\n value3 := calldataload(add(headStart, 96))\n value4 := calldataload(add(headStart, 128))\n }\n function abi_decode_tuple_t_address(headStart, dataEnd) -> value0\n {\n if slt(sub(dataEnd, headStart), 32) { revert(0, 0) }\n value0 := abi_decode_address(headStart)\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_contract$_IERC20_$877__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_t_uint256_t_uint256_t_uint256_t_uint256_t_bool__to_t_uint256_t_uint256_t_uint256_t_uint256_t_uint256_t_bool__fromStack_reversed(headStart, value5, value4, value3, value2, value1, value0) -> tail\n {\n tail := add(headStart, 192)\n mstore(headStart, value0)\n mstore(add(headStart, 32), value1)\n mstore(add(headStart, 64), value2)\n mstore(add(headStart, 96), value3)\n mstore(add(headStart, 128), value4)\n mstore(add(headStart, 160), iszero(iszero(value5)))\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_stringliteral_33ba6c59384982a33c8d03efd40cd022501542cd14d2a647b97dcbf1ab55c9a8__to_t_string_memory_ptr__fromStack_reversed(headStart) -> tail\n {\n mstore(headStart, 32)\n mstore(add(headStart, 32), 27)\n mstore(add(headStart, 64), \"Beneficiary not whitelisted\")\n tail := add(headStart, 96)\n }\n function abi_encode_tuple_t_stringliteral_86f5acfc12d2804bcf816c0b4c171086bf03352ff286fda75ac8ea27fcfb10a6__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), \"Invalid beneficiary\")\n tail := add(headStart, 96)\n }\n function abi_encode_tuple_t_stringliteral_01c242f1c806840acb94ec05d87d4647010419c53a053a581e0026b3f6467dbb__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), \"Amount must be > 0\")\n tail := add(headStart, 96)\n }\n function abi_encode_tuple_t_stringliteral_30b1e5a1edc6414baa83cc329bc7938b54a51203cd3d130b70720aa20811d690__to_t_string_memory_ptr__fromStack_reversed(headStart) -> tail\n {\n mstore(headStart, 32)\n mstore(add(headStart, 32), 28)\n mstore(add(headStart, 64), \"Vesting duration must be > 0\")\n tail := add(headStart, 96)\n }\n function abi_encode_tuple_t_stringliteral_4e53fa0d705435dfad68b2037e4c3e913380fae5835e7293c5d3ebab37fd18b6__to_t_string_memory_ptr__fromStack_reversed(headStart) -> tail\n {\n mstore(headStart, 32)\n mstore(add(headStart, 32), 33)\n mstore(add(headStart, 64), \"Vesting duration must be >= clif\")\n mstore(add(headStart, 96), \"f\")\n tail := add(headStart, 128)\n }\n function abi_encode_tuple_t_stringliteral_2bc716da1b42589a19a25c3316489645c253eec4dab63960fa92efee8bafe791__to_t_string_memory_ptr__fromStack_reversed(headStart) -> tail\n {\n mstore(headStart, 32)\n mstore(add(headStart, 32), 23)\n mstore(add(headStart, 64), \"Schedule already exists\")\n tail := add(headStart, 96)\n }\n function abi_encode_tuple_t_stringliteral_5e8b0e873d06a66c9c925ccc2b7b49a9f2193d0e8836f9994126e51985936cff__to_t_string_memory_ptr__fromStack_reversed(headStart) -> tail\n {\n mstore(headStart, 32)\n mstore(add(headStart, 32), 28)\n mstore(add(headStart, 64), \"Start time must be in future\")\n tail := add(headStart, 96)\n }\n function abi_encode_tuple_t_address_t_address_t_uint256__to_t_address_t_address_t_uint256__fromStack_reversed(headStart, value2, value1, value0) -> tail\n {\n tail := add(headStart, 96)\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 }\n function abi_decode_tuple_t_bool_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, iszero(iszero(value)))) { revert(0, 0) }\n value0 := value\n }\n function abi_encode_tuple_t_stringliteral_25adaa6d082ce15f901e0d8a3d393e7462ef9edf2e6bc8321fa14d1615b6fc51__to_t_string_memory_ptr__fromStack_reversed(headStart) -> tail\n {\n mstore(headStart, 32)\n mstore(add(headStart, 32), 15)\n mstore(add(headStart, 64), \"Transfer failed\")\n tail := add(headStart, 96)\n }\n function abi_encode_tuple_t_stringliteral_6bb1866c2b37a7b751163896084042e2548a35de6f3e7b1e063a1cd2115c9ef9__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), \"No vesting schedule\")\n tail := add(headStart, 96)\n }\n function abi_encode_tuple_t_stringliteral_ff30964d1d2e395450954287443a47ce4b7aeb0e55cf0d440f942617fe7e784c__to_t_string_memory_ptr__fromStack_reversed(headStart) -> tail\n {\n mstore(headStart, 32)\n mstore(add(headStart, 32), 15)\n mstore(add(headStart, 64), \"Already revoked\")\n tail := add(headStart, 96)\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_sub_t_uint256(x, y) -> diff\n {\n diff := sub(x, y)\n if gt(diff, x) { panic_error_0x11() }\n }\n function abi_encode_tuple_t_address_t_uint256__to_t_address_t_uint256__fromStack_reversed(headStart, value1, value0) -> tail\n {\n tail := add(headStart, 64)\n mstore(headStart, and(value0, sub(shl(160, 1), 1)))\n mstore(add(headStart, 32), value1)\n }\n function abi_encode_tuple_t_stringliteral_1462473b7a4b33d32b109b815fd2324d00c9e5839b707ecf16d0ab5744f99226__to_t_string_memory_ptr__fromStack_reversed(headStart) -> tail\n {\n mstore(headStart, 32)\n mstore(add(headStart, 32), 15)\n mstore(add(headStart, 64), \"Invalid address\")\n tail := add(headStart, 96)\n }\n function abi_encode_tuple_t_stringliteral_8ecb40193de0ebe87d207ece4ce0c743b9de3a82936a058dc7616916eebf0679__to_t_string_memory_ptr__fromStack_reversed(headStart) -> tail\n {\n mstore(headStart, 32)\n mstore(add(headStart, 32), 15)\n mstore(add(headStart, 64), \"Vesting revoked\")\n tail := add(headStart, 96)\n }\n function abi_encode_tuple_t_stringliteral_0d5449e713a47f03a14de06feb7e7374931b31bbe74b9f8d4277d4797f0eb90e__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), \"No tokens to claim\")\n tail := add(headStart, 96)\n }\n function checked_add_t_uint256(x, y) -> sum\n {\n sum := add(x, y)\n if gt(x, sum) { panic_error_0x11() }\n }\n function checked_mul_t_uint256(x, y) -> product\n {\n product := mul(x, y)\n if iszero(or(iszero(x), eq(y, div(product, x)))) { panic_error_0x11() }\n }\n function checked_div_t_uint256(x, y) -> r\n {\n if iszero(y)\n {\n mstore(0, shl(224, 0x4e487b71))\n mstore(4, 0x12)\n revert(0, 0x24)\n }\n r := div(x, y)\n }\n}", - "id": 10, + "contents": "{\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 mstore(add(add(headStart, length), 64), 0)\n tail := add(add(headStart, and(add(length, 31), not(31))), 64)\n }\n function abi_decode_address(offset) -> value\n {\n value := calldataload(offset)\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 value0 := abi_decode_address(headStart)\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_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 value0 := abi_decode_address(headStart)\n value1 := abi_decode_address(add(headStart, 32))\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 value0 := abi_decode_address(headStart)\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_addresst_address(headStart, dataEnd) -> value0, value1\n {\n if slt(sub(dataEnd, headStart), 64) { revert(0, 0) }\n value0 := abi_decode_address(headStart)\n value1 := abi_decode_address(add(headStart, 32))\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_address_t_uint256_t_uint256__to_t_address_t_uint256_t_uint256__fromStack_reversed(headStart, value2, value1, value0) -> tail\n {\n tail := add(headStart, 96)\n mstore(headStart, and(value0, sub(shl(160, 1), 1)))\n mstore(add(headStart, 32), value1)\n mstore(add(headStart, 64), value2)\n }\n function checked_add_t_uint256(x, y) -> sum\n {\n sum := add(x, y)\n if gt(x, sum)\n {\n mstore(0, shl(224, 0x4e487b71))\n mstore(4, 0x11)\n revert(0, 0x24)\n }\n }\n}", + "id": 17, "language": "Yul", "name": "#utility.yul" } ], - "immutableReferences": { - "1187": [ - { - "length": 32, - "start": 491 - }, - { - "length": 32, - "start": 1474 - }, - { - "length": 32, - "start": 1980 - }, - { - "length": 32, - "start": 2856 - } - ] - }, + "immutableReferences": {}, "linkReferences": {}, - "object": "608060405234801561001057600080fd5b50600436106100f55760003560e01c80638da5cb5b11610097578063f2fde38b11610066578063f2fde38b146101d3578063fc0c546a146101e6578063fdb20ccb1461020d578063ffa06b2a1461028457600080fd5b80638da5cb5b146101705780639b19251a14610195578063e43252d7146101b8578063e74f3fbb146101cb57600080fd5b80635c975abb116100d35780635c975abb1461012a578063715018a61461014d5780638456cb59146101555780638ab1d6811461015d57600080fd5b80631bf0b08b146100fa5780633b0da2601461010f5780633f4ba83a14610122575b600080fd5b61010d610108366004610ee7565b6102a5565b005b61010d61011d366004610f29565b6106d9565b61010d6108c2565b600054600160a01b900460ff165b60405190151581526020015b60405180910390f35b61010d6108d4565b61010d6108e6565b61010d61016b366004610f29565b6108f6565b6000546001600160a01b03165b6040516001600160a01b039091168152602001610144565b6101386101a3366004610f29565b60036020526000908152604090205460ff1681565b61010d6101c6366004610f29565b610947565b61010d6109e3565b61010d6101e1366004610f29565b610bfa565b61017d7f000000000000000000000000000000000000000000000000000000000000000081565b61025561021b366004610f29565b6002602081905260009182526040909120805460018201549282015460038301546004840154600590940154929493919290919060ff1686565b6040805196875260208701959095529385019290925260608401526080830152151560a082015260c001610144565b610297610292366004610f29565b610c38565b604051908152602001610144565b6102ad610d37565b6001600160a01b038516600090815260036020526040902054859060ff1661031c5760405162461bcd60e51b815260206004820152601b60248201527f42656e6566696369617279206e6f742077686974656c6973746564000000000060448201526064015b60405180910390fd5b610324610d64565b6001600160a01b0386166103705760405162461bcd60e51b8152602060048201526013602482015272496e76616c69642062656e656669636961727960681b6044820152606401610313565b600085116103b55760405162461bcd60e51b81526020600482015260126024820152710416d6f756e74206d757374206265203e20360741b6044820152606401610313565b600083116104055760405162461bcd60e51b815260206004820152601c60248201527f56657374696e67206475726174696f6e206d757374206265203e2030000000006044820152606401610313565b8383101561045f5760405162461bcd60e51b815260206004820152602160248201527f56657374696e67206475726174696f6e206d757374206265203e3d20636c69666044820152603360f91b6064820152608401610313565b6001600160a01b038616600090815260026020526040902054156104c55760405162461bcd60e51b815260206004820152601760248201527f5363686564756c6520616c7265616479206578697374730000000000000000006044820152606401610313565b428210156105155760405162461bcd60e51b815260206004820152601c60248201527f53746172742074696d65206d75737420626520696e20667574757265000000006044820152606401610313565b6040518060c00160405280868152602001838152602001858152602001848152602001600081526020016000151581525060026000886001600160a01b03166001600160a01b03168152602001908152602001600020600082015181600001556020820151816001015560408201518160020155606082015181600301556080820151816004015560a08201518160050160006101000a81548160ff0219169083151502179055509050507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03166323b872dd3330886040518463ffffffff1660e01b815260040161062f939291906001600160a01b039384168152919092166020820152604081019190915260600190565b6020604051808303816000875af115801561064e573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906106729190610f4b565b61068e5760405162461bcd60e51b815260040161031390610f6d565b856001600160a01b03167f969705509595726740fe60cc30769bbd53c883efff4d8e70108a82817e0392a9866040516106c991815260200190565b60405180910390a2505050505050565b6106e1610d37565b6001600160a01b0381166000908152600260205260409020805461073d5760405162461bcd60e51b81526020600482015260136024820152724e6f2076657374696e67207363686564756c6560681b6044820152606401610313565b600581015460ff16156107845760405162461bcd60e51b815260206004820152600f60248201526e105b1c9958591e481c995d9bdad959608a1b6044820152606401610313565b600061078f83610c38565b905060008183600001546107a39190610fac565b60058401805460ff1916600117905590508015610888577f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663a9059cbb6107fb6000546001600160a01b031690565b6040516001600160e01b031960e084901b1681526001600160a01b039091166004820152602481018490526044016020604051808303816000875af1158015610848573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061086c9190610f4b565b6108885760405162461bcd60e51b815260040161031390610f6d565b6040516001600160a01b038516907f68d870ac0aff3819234e8a1fc8f357b40d75212f2dc8594b97690fa205b3bab290600090a250505050565b6108ca610d37565b6108d2610d8f565b565b6108dc610d37565b6108d26000610de4565b6108ee610d37565b6108d2610e34565b6108fe610d37565b6001600160a01b038116600081815260036020526040808220805460ff19169055517f1ecef1b5180dc14b16608c5c5ec1fa28998e2f94e460b91c1b50bdfb643cc1389190a250565b61094f610d37565b6001600160a01b0381166109975760405162461bcd60e51b815260206004820152600f60248201526e496e76616c6964206164647265737360881b6044820152606401610313565b6001600160a01b038116600081815260036020526040808220805460ff19166001179055517f07e751107375f503d05dfa76b5038ce1c5b7d46e9e45768f913ac333780394399190a250565b6109eb610e77565b6109f3610d64565b3360009081526002602052604090208054610a465760405162461bcd60e51b81526020600482015260136024820152724e6f2076657374696e67207363686564756c6560681b6044820152606401610313565b600581015460ff1615610a8d5760405162461bcd60e51b815260206004820152600f60248201526e15995cdd1a5b99c81c995d9bdad959608a1b6044820152606401610313565b6000610a9833610c38565b90506000826004015482610aac9190610fac565b905060008111610af35760405162461bcd60e51b81526020600482015260126024820152714e6f20746f6b656e7320746f20636c61696d60701b6044820152606401610313565b80836004016000828254610b079190610fc5565b909155505060405163a9059cbb60e01b8152336004820152602481018290527f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03169063a9059cbb906044016020604051808303816000875af1158015610b79573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610b9d9190610f4b565b610bb95760405162461bcd60e51b815260040161031390610f6d565b60405181815233907f896e034966eaaf1adc54acc0f257056febbd300c9e47182cf761982cf1f5e4309060200160405180910390a25050506108d260018055565b610c02610d37565b6001600160a01b038116610c2c57604051631e4fbdf760e01b815260006004820152602401610313565b610c3581610de4565b50565b6001600160a01b0381166000908152600260208181526040808420815160c0810183528154808252600183015494820194909452938101549184019190915260038101546060840152600481015460808401526005015460ff16151560a08301521580610ca657508060a001515b15610cb45750600092915050565b80604001518160200151610cc89190610fc5565b421015610cd85750600092915050565b80606001518160200151610cec9190610fc5565b4210610cf9575192915050565b6000816020015142610d0b9190610fac565b905060008260600151828460000151610d249190610fd8565b610d2e9190610fef565b95945050505050565b6000546001600160a01b031633146108d25760405163118cdaa760e01b8152336004820152602401610313565b600054600160a01b900460ff16156108d25760405163d93c066560e01b815260040160405180910390fd5b610d97610ea1565b6000805460ff60a01b191690557f5db9ee0a495bf2e6ff9c91a7834c1ba4fdd244a5e8aa4e537bd38aeae4b073aa335b6040516001600160a01b03909116815260200160405180910390a1565b600080546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b610e3c610d64565b6000805460ff60a01b1916600160a01b1790557f62e78cea01bee320cd4e420270b5ea74000d11b0c9f74754ebdbfc544b05a258610dc73390565b600260015403610e9a57604051633ee5aeb560e01b815260040160405180910390fd5b6002600155565b600054600160a01b900460ff166108d257604051638dfc202b60e01b815260040160405180910390fd5b80356001600160a01b0381168114610ee257600080fd5b919050565b600080600080600060a08688031215610eff57600080fd5b610f0886610ecb565b97602087013597506040870135966060810135965060800135945092505050565b600060208284031215610f3b57600080fd5b610f4482610ecb565b9392505050565b600060208284031215610f5d57600080fd5b81518015158114610f4457600080fd5b6020808252600f908201526e151c985b9cd9995c8819985a5b1959608a1b604082015260600190565b634e487b7160e01b600052601160045260246000fd5b81810381811115610fbf57610fbf610f96565b92915050565b80820180821115610fbf57610fbf610f96565b8082028115828204841417610fbf57610fbf610f96565b60008261100c57634e487b7160e01b600052601260045260246000fd5b50049056fea2646970667358221220129cdb8abfd9f74a9cfbc811114271c90d948bdd7f871a0a0a159dcad12dea2e64736f6c63430008140033", - "opcodes": "PUSH1 0x80 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH2 0x10 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x4 CALLDATASIZE LT PUSH2 0xF5 JUMPI PUSH1 0x0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0x8DA5CB5B GT PUSH2 0x97 JUMPI DUP1 PUSH4 0xF2FDE38B GT PUSH2 0x66 JUMPI DUP1 PUSH4 0xF2FDE38B EQ PUSH2 0x1D3 JUMPI DUP1 PUSH4 0xFC0C546A EQ PUSH2 0x1E6 JUMPI DUP1 PUSH4 0xFDB20CCB EQ PUSH2 0x20D JUMPI DUP1 PUSH4 0xFFA06B2A EQ PUSH2 0x284 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 PUSH4 0x8DA5CB5B EQ PUSH2 0x170 JUMPI DUP1 PUSH4 0x9B19251A EQ PUSH2 0x195 JUMPI DUP1 PUSH4 0xE43252D7 EQ PUSH2 0x1B8 JUMPI DUP1 PUSH4 0xE74F3FBB EQ PUSH2 0x1CB JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 PUSH4 0x5C975ABB GT PUSH2 0xD3 JUMPI DUP1 PUSH4 0x5C975ABB EQ PUSH2 0x12A JUMPI DUP1 PUSH4 0x715018A6 EQ PUSH2 0x14D JUMPI DUP1 PUSH4 0x8456CB59 EQ PUSH2 0x155 JUMPI DUP1 PUSH4 0x8AB1D681 EQ PUSH2 0x15D JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 PUSH4 0x1BF0B08B EQ PUSH2 0xFA JUMPI DUP1 PUSH4 0x3B0DA260 EQ PUSH2 0x10F JUMPI DUP1 PUSH4 0x3F4BA83A EQ PUSH2 0x122 JUMPI JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x10D PUSH2 0x108 CALLDATASIZE PUSH1 0x4 PUSH2 0xEE7 JUMP JUMPDEST PUSH2 0x2A5 JUMP JUMPDEST STOP JUMPDEST PUSH2 0x10D PUSH2 0x11D CALLDATASIZE PUSH1 0x4 PUSH2 0xF29 JUMP JUMPDEST PUSH2 0x6D9 JUMP JUMPDEST PUSH2 0x10D PUSH2 0x8C2 JUMP 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 JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0x10D PUSH2 0x8D4 JUMP JUMPDEST PUSH2 0x10D PUSH2 0x8E6 JUMP JUMPDEST PUSH2 0x10D PUSH2 0x16B CALLDATASIZE PUSH1 0x4 PUSH2 0xF29 JUMP JUMPDEST PUSH2 0x8F6 JUMP JUMPDEST PUSH1 0x0 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 SWAP2 AND DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0x144 JUMP JUMPDEST PUSH2 0x138 PUSH2 0x1A3 CALLDATASIZE PUSH1 0x4 PUSH2 0xF29 JUMP JUMPDEST PUSH1 0x3 PUSH1 0x20 MSTORE PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD PUSH1 0xFF AND DUP2 JUMP JUMPDEST PUSH2 0x10D PUSH2 0x1C6 CALLDATASIZE PUSH1 0x4 PUSH2 0xF29 JUMP JUMPDEST PUSH2 0x947 JUMP JUMPDEST PUSH2 0x10D PUSH2 0x9E3 JUMP JUMPDEST PUSH2 0x10D PUSH2 0x1E1 CALLDATASIZE PUSH1 0x4 PUSH2 0xF29 JUMP JUMPDEST PUSH2 0xBFA JUMP JUMPDEST PUSH2 0x17D PUSH32 0x0 DUP2 JUMP JUMPDEST PUSH2 0x255 PUSH2 0x21B CALLDATASIZE PUSH1 0x4 PUSH2 0xF29 JUMP JUMPDEST PUSH1 0x2 PUSH1 0x20 DUP2 SWAP1 MSTORE PUSH1 0x0 SWAP2 DUP3 MSTORE PUSH1 0x40 SWAP1 SWAP2 KECCAK256 DUP1 SLOAD PUSH1 0x1 DUP3 ADD SLOAD SWAP3 DUP3 ADD SLOAD PUSH1 0x3 DUP4 ADD SLOAD PUSH1 0x4 DUP5 ADD SLOAD PUSH1 0x5 SWAP1 SWAP5 ADD SLOAD SWAP3 SWAP5 SWAP4 SWAP2 SWAP3 SWAP1 SWAP2 SWAP1 PUSH1 0xFF AND DUP7 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD SWAP7 DUP8 MSTORE PUSH1 0x20 DUP8 ADD SWAP6 SWAP1 SWAP6 MSTORE SWAP4 DUP6 ADD SWAP3 SWAP1 SWAP3 MSTORE PUSH1 0x60 DUP5 ADD MSTORE PUSH1 0x80 DUP4 ADD MSTORE ISZERO ISZERO PUSH1 0xA0 DUP3 ADD MSTORE PUSH1 0xC0 ADD PUSH2 0x144 JUMP JUMPDEST PUSH2 0x297 PUSH2 0x292 CALLDATASIZE PUSH1 0x4 PUSH2 0xF29 JUMP JUMPDEST PUSH2 0xC38 JUMP JUMPDEST PUSH1 0x40 MLOAD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0x144 JUMP JUMPDEST PUSH2 0x2AD PUSH2 0xD37 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP6 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x3 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD DUP6 SWAP1 PUSH1 0xFF AND PUSH2 0x31C JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x1B PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x42656E6566696369617279206E6F742077686974656C69737465640000000000 PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 ADD JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH2 0x324 PUSH2 0xD64 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP7 AND PUSH2 0x370 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 0x496E76616C69642062656E6566696369617279 PUSH1 0x68 SHL PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 ADD PUSH2 0x313 JUMP JUMPDEST PUSH1 0x0 DUP6 GT PUSH2 0x3B5 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 0x416D6F756E74206D757374206265203E203 PUSH1 0x74 SHL PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 ADD PUSH2 0x313 JUMP JUMPDEST PUSH1 0x0 DUP4 GT PUSH2 0x405 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x1C PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x56657374696E67206475726174696F6E206D757374206265203E203000000000 PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 ADD PUSH2 0x313 JUMP JUMPDEST DUP4 DUP4 LT ISZERO PUSH2 0x45F JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x21 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x56657374696E67206475726174696F6E206D757374206265203E3D20636C6966 PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x33 PUSH1 0xF9 SHL PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 ADD PUSH2 0x313 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP7 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x2 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD ISZERO PUSH2 0x4C5 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x17 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x5363686564756C6520616C726561647920657869737473000000000000000000 PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 ADD PUSH2 0x313 JUMP JUMPDEST TIMESTAMP DUP3 LT ISZERO PUSH2 0x515 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x1C PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x53746172742074696D65206D75737420626520696E2066757475726500000000 PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 ADD PUSH2 0x313 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 PUSH1 0xC0 ADD PUSH1 0x40 MSTORE DUP1 DUP7 DUP2 MSTORE PUSH1 0x20 ADD DUP4 DUP2 MSTORE PUSH1 0x20 ADD DUP6 DUP2 MSTORE PUSH1 0x20 ADD DUP5 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 ISZERO ISZERO DUP2 MSTORE POP PUSH1 0x2 PUSH1 0x0 DUP9 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x0 DUP3 ADD MLOAD DUP2 PUSH1 0x0 ADD SSTORE PUSH1 0x20 DUP3 ADD MLOAD DUP2 PUSH1 0x1 ADD SSTORE PUSH1 0x40 DUP3 ADD MLOAD DUP2 PUSH1 0x2 ADD SSTORE PUSH1 0x60 DUP3 ADD MLOAD DUP2 PUSH1 0x3 ADD SSTORE PUSH1 0x80 DUP3 ADD MLOAD DUP2 PUSH1 0x4 ADD SSTORE PUSH1 0xA0 DUP3 ADD MLOAD DUP2 PUSH1 0x5 ADD PUSH1 0x0 PUSH2 0x100 EXP DUP2 SLOAD DUP2 PUSH1 0xFF MUL NOT AND SWAP1 DUP4 ISZERO ISZERO MUL OR SWAP1 SSTORE POP SWAP1 POP POP PUSH32 0x0 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH4 0x23B872DD CALLER ADDRESS DUP9 PUSH1 0x40 MLOAD DUP5 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x62F SWAP4 SWAP3 SWAP2 SWAP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP4 DUP5 AND DUP2 MSTORE SWAP2 SWAP1 SWAP3 AND PUSH1 0x20 DUP3 ADD MSTORE PUSH1 0x40 DUP2 ADD SWAP2 SWAP1 SWAP2 MSTORE PUSH1 0x60 ADD SWAP1 JUMP JUMPDEST PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 GAS CALL ISZERO DUP1 ISZERO PUSH2 0x64E JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x672 SWAP2 SWAP1 PUSH2 0xF4B JUMP JUMPDEST PUSH2 0x68E JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x313 SWAP1 PUSH2 0xF6D JUMP JUMPDEST DUP6 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH32 0x969705509595726740FE60CC30769BBD53C883EFFF4D8E70108A82817E0392A9 DUP7 PUSH1 0x40 MLOAD PUSH2 0x6C9 SWAP2 DUP2 MSTORE PUSH1 0x20 ADD SWAP1 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG2 POP POP POP POP POP POP JUMP JUMPDEST PUSH2 0x6E1 PUSH2 0xD37 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x2 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 DUP1 SLOAD PUSH2 0x73D 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 0x4E6F2076657374696E67207363686564756C65 PUSH1 0x68 SHL PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 ADD PUSH2 0x313 JUMP JUMPDEST PUSH1 0x5 DUP2 ADD SLOAD PUSH1 0xFF AND ISZERO PUSH2 0x784 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0xF PUSH1 0x24 DUP3 ADD MSTORE PUSH15 0x105B1C9958591E481C995D9BDAD959 PUSH1 0x8A SHL PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 ADD PUSH2 0x313 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x78F DUP4 PUSH2 0xC38 JUMP JUMPDEST SWAP1 POP PUSH1 0x0 DUP2 DUP4 PUSH1 0x0 ADD SLOAD PUSH2 0x7A3 SWAP2 SWAP1 PUSH2 0xFAC JUMP JUMPDEST PUSH1 0x5 DUP5 ADD DUP1 SLOAD PUSH1 0xFF NOT AND PUSH1 0x1 OR SWAP1 SSTORE SWAP1 POP DUP1 ISZERO PUSH2 0x888 JUMPI PUSH32 0x0 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH4 0xA9059CBB PUSH2 0x7FB PUSH1 0x0 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SWAP1 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB NOT PUSH1 0xE0 DUP5 SWAP1 SHL AND DUP2 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 SWAP2 AND PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x24 DUP2 ADD DUP5 SWAP1 MSTORE PUSH1 0x44 ADD PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 GAS CALL ISZERO DUP1 ISZERO PUSH2 0x848 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x86C SWAP2 SWAP1 PUSH2 0xF4B JUMP JUMPDEST PUSH2 0x888 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x313 SWAP1 PUSH2 0xF6D JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP6 AND SWAP1 PUSH32 0x68D870AC0AFF3819234E8A1FC8F357B40D75212F2DC8594B97690FA205B3BAB2 SWAP1 PUSH1 0x0 SWAP1 LOG2 POP POP POP POP JUMP JUMPDEST PUSH2 0x8CA PUSH2 0xD37 JUMP JUMPDEST PUSH2 0x8D2 PUSH2 0xD8F JUMP JUMPDEST JUMP JUMPDEST PUSH2 0x8DC PUSH2 0xD37 JUMP JUMPDEST PUSH2 0x8D2 PUSH1 0x0 PUSH2 0xDE4 JUMP JUMPDEST PUSH2 0x8EE PUSH2 0xD37 JUMP JUMPDEST PUSH2 0x8D2 PUSH2 0xE34 JUMP JUMPDEST PUSH2 0x8FE PUSH2 0xD37 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0x3 PUSH1 0x20 MSTORE PUSH1 0x40 DUP1 DUP3 KECCAK256 DUP1 SLOAD PUSH1 0xFF NOT AND SWAP1 SSTORE MLOAD PUSH32 0x1ECEF1B5180DC14B16608C5C5EC1FA28998E2F94E460B91C1B50BDFB643CC138 SWAP2 SWAP1 LOG2 POP JUMP JUMPDEST PUSH2 0x94F PUSH2 0xD37 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND PUSH2 0x997 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0xF PUSH1 0x24 DUP3 ADD MSTORE PUSH15 0x496E76616C69642061646472657373 PUSH1 0x88 SHL PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 ADD PUSH2 0x313 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0x3 PUSH1 0x20 MSTORE PUSH1 0x40 DUP1 DUP3 KECCAK256 DUP1 SLOAD PUSH1 0xFF NOT AND PUSH1 0x1 OR SWAP1 SSTORE MLOAD PUSH32 0x7E751107375F503D05DFA76B5038CE1C5B7D46E9E45768F913AC33378039439 SWAP2 SWAP1 LOG2 POP JUMP JUMPDEST PUSH2 0x9EB PUSH2 0xE77 JUMP JUMPDEST PUSH2 0x9F3 PUSH2 0xD64 JUMP JUMPDEST CALLER PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x2 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 DUP1 SLOAD PUSH2 0xA46 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 0x4E6F2076657374696E67207363686564756C65 PUSH1 0x68 SHL PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 ADD PUSH2 0x313 JUMP JUMPDEST PUSH1 0x5 DUP2 ADD SLOAD PUSH1 0xFF AND ISZERO PUSH2 0xA8D JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0xF PUSH1 0x24 DUP3 ADD MSTORE PUSH15 0x15995CDD1A5B99C81C995D9BDAD959 PUSH1 0x8A SHL PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 ADD PUSH2 0x313 JUMP JUMPDEST PUSH1 0x0 PUSH2 0xA98 CALLER PUSH2 0xC38 JUMP JUMPDEST SWAP1 POP PUSH1 0x0 DUP3 PUSH1 0x4 ADD SLOAD DUP3 PUSH2 0xAAC SWAP2 SWAP1 PUSH2 0xFAC JUMP JUMPDEST SWAP1 POP PUSH1 0x0 DUP2 GT PUSH2 0xAF3 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 0x4E6F20746F6B656E7320746F20636C61696D PUSH1 0x70 SHL PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 ADD PUSH2 0x313 JUMP JUMPDEST DUP1 DUP4 PUSH1 0x4 ADD PUSH1 0x0 DUP3 DUP3 SLOAD PUSH2 0xB07 SWAP2 SWAP1 PUSH2 0xFC5 JUMP JUMPDEST SWAP1 SWAP2 SSTORE POP POP PUSH1 0x40 MLOAD PUSH4 0xA9059CBB PUSH1 0xE0 SHL DUP2 MSTORE CALLER PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x24 DUP2 ADD DUP3 SWAP1 MSTORE PUSH32 0x0 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SWAP1 PUSH4 0xA9059CBB SWAP1 PUSH1 0x44 ADD PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 GAS CALL ISZERO DUP1 ISZERO PUSH2 0xB79 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0xB9D SWAP2 SWAP1 PUSH2 0xF4B JUMP JUMPDEST PUSH2 0xBB9 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x313 SWAP1 PUSH2 0xF6D JUMP JUMPDEST PUSH1 0x40 MLOAD DUP2 DUP2 MSTORE CALLER SWAP1 PUSH32 0x896E034966EAAF1ADC54ACC0F257056FEBBD300C9E47182CF761982CF1F5E430 SWAP1 PUSH1 0x20 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG2 POP POP POP PUSH2 0x8D2 PUSH1 0x1 DUP1 SSTORE JUMP JUMPDEST PUSH2 0xC02 PUSH2 0xD37 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND PUSH2 0xC2C JUMPI PUSH1 0x40 MLOAD PUSH4 0x1E4FBDF7 PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x0 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x24 ADD PUSH2 0x313 JUMP JUMPDEST PUSH2 0xC35 DUP2 PUSH2 0xDE4 JUMP JUMPDEST POP JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x2 PUSH1 0x20 DUP2 DUP2 MSTORE PUSH1 0x40 DUP1 DUP5 KECCAK256 DUP2 MLOAD PUSH1 0xC0 DUP2 ADD DUP4 MSTORE DUP2 SLOAD DUP1 DUP3 MSTORE PUSH1 0x1 DUP4 ADD SLOAD SWAP5 DUP3 ADD SWAP5 SWAP1 SWAP5 MSTORE SWAP4 DUP2 ADD SLOAD SWAP2 DUP5 ADD SWAP2 SWAP1 SWAP2 MSTORE PUSH1 0x3 DUP2 ADD SLOAD PUSH1 0x60 DUP5 ADD MSTORE PUSH1 0x4 DUP2 ADD SLOAD PUSH1 0x80 DUP5 ADD MSTORE PUSH1 0x5 ADD SLOAD PUSH1 0xFF AND ISZERO ISZERO PUSH1 0xA0 DUP4 ADD MSTORE ISZERO DUP1 PUSH2 0xCA6 JUMPI POP DUP1 PUSH1 0xA0 ADD MLOAD JUMPDEST ISZERO PUSH2 0xCB4 JUMPI POP PUSH1 0x0 SWAP3 SWAP2 POP POP JUMP JUMPDEST DUP1 PUSH1 0x40 ADD MLOAD DUP2 PUSH1 0x20 ADD MLOAD PUSH2 0xCC8 SWAP2 SWAP1 PUSH2 0xFC5 JUMP JUMPDEST TIMESTAMP LT ISZERO PUSH2 0xCD8 JUMPI POP PUSH1 0x0 SWAP3 SWAP2 POP POP JUMP JUMPDEST DUP1 PUSH1 0x60 ADD MLOAD DUP2 PUSH1 0x20 ADD MLOAD PUSH2 0xCEC SWAP2 SWAP1 PUSH2 0xFC5 JUMP JUMPDEST TIMESTAMP LT PUSH2 0xCF9 JUMPI MLOAD SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 DUP2 PUSH1 0x20 ADD MLOAD TIMESTAMP PUSH2 0xD0B SWAP2 SWAP1 PUSH2 0xFAC JUMP JUMPDEST SWAP1 POP PUSH1 0x0 DUP3 PUSH1 0x60 ADD MLOAD DUP3 DUP5 PUSH1 0x0 ADD MLOAD PUSH2 0xD24 SWAP2 SWAP1 PUSH2 0xFD8 JUMP JUMPDEST PUSH2 0xD2E SWAP2 SWAP1 PUSH2 0xFEF JUMP JUMPDEST SWAP6 SWAP5 POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND CALLER EQ PUSH2 0x8D2 JUMPI PUSH1 0x40 MLOAD PUSH4 0x118CDAA7 PUSH1 0xE0 SHL DUP2 MSTORE CALLER PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x24 ADD PUSH2 0x313 JUMP JUMPDEST PUSH1 0x0 SLOAD PUSH1 0x1 PUSH1 0xA0 SHL SWAP1 DIV PUSH1 0xFF AND ISZERO PUSH2 0x8D2 JUMPI PUSH1 0x40 MLOAD PUSH4 0xD93C0665 PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH2 0xD97 PUSH2 0xEA1 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 DUP1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP4 DUP2 AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB NOT DUP4 AND DUP2 OR DUP5 SSTORE PUSH1 0x40 MLOAD SWAP2 SWAP1 SWAP3 AND SWAP3 DUP4 SWAP2 PUSH32 0x8BE0079C531659141344CD1FD0A4F28419497F9722A3DAAFE3B4186F6B6457E0 SWAP2 SWAP1 LOG3 POP POP JUMP JUMPDEST PUSH2 0xE3C PUSH2 0xD64 JUMP JUMPDEST PUSH1 0x0 DUP1 SLOAD PUSH1 0xFF PUSH1 0xA0 SHL NOT AND PUSH1 0x1 PUSH1 0xA0 SHL OR SWAP1 SSTORE PUSH32 0x62E78CEA01BEE320CD4E420270B5EA74000D11B0C9F74754EBDBFC544B05A258 PUSH2 0xDC7 CALLER SWAP1 JUMP JUMPDEST PUSH1 0x2 PUSH1 0x1 SLOAD SUB PUSH2 0xE9A JUMPI PUSH1 0x40 MLOAD PUSH4 0x3EE5AEB5 PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x2 PUSH1 0x1 SSTORE JUMP JUMPDEST PUSH1 0x0 SLOAD PUSH1 0x1 PUSH1 0xA0 SHL SWAP1 DIV PUSH1 0xFF AND PUSH2 0x8D2 JUMPI PUSH1 0x40 MLOAD PUSH4 0x8DFC202B PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST DUP1 CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND DUP2 EQ PUSH2 0xEE2 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0x0 PUSH1 0xA0 DUP7 DUP9 SUB SLT ISZERO PUSH2 0xEFF JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0xF08 DUP7 PUSH2 0xECB JUMP JUMPDEST SWAP8 PUSH1 0x20 DUP8 ADD CALLDATALOAD SWAP8 POP PUSH1 0x40 DUP8 ADD CALLDATALOAD SWAP7 PUSH1 0x60 DUP2 ADD CALLDATALOAD SWAP7 POP PUSH1 0x80 ADD CALLDATALOAD SWAP5 POP SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0xF3B JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0xF44 DUP3 PUSH2 0xECB JUMP JUMPDEST SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0xF5D JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 MLOAD DUP1 ISZERO ISZERO DUP2 EQ PUSH2 0xF44 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE PUSH1 0xF SWAP1 DUP3 ADD MSTORE PUSH15 0x151C985B9CD9995C8819985A5B1959 PUSH1 0x8A SHL PUSH1 0x40 DUP3 ADD MSTORE PUSH1 0x60 ADD SWAP1 JUMP JUMPDEST PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH1 0x0 MSTORE PUSH1 0x11 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST DUP2 DUP2 SUB DUP2 DUP2 GT ISZERO PUSH2 0xFBF JUMPI PUSH2 0xFBF PUSH2 0xF96 JUMP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST DUP1 DUP3 ADD DUP1 DUP3 GT ISZERO PUSH2 0xFBF JUMPI PUSH2 0xFBF PUSH2 0xF96 JUMP JUMPDEST DUP1 DUP3 MUL DUP2 ISZERO DUP3 DUP3 DIV DUP5 EQ OR PUSH2 0xFBF JUMPI PUSH2 0xFBF PUSH2 0xF96 JUMP JUMPDEST PUSH1 0x0 DUP3 PUSH2 0x100C JUMPI PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH1 0x0 MSTORE PUSH1 0x12 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST POP DIV SWAP1 JUMP INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 SLT SWAP13 0xDB DUP11 0xBF 0xD9 0xF7 0x4A SWAP13 0xFB 0xC8 GT GT TIMESTAMP PUSH18 0xC90D948BDD7F871A0A0A159DCAD12DEA2E64 PUSH20 0x6F6C634300081400330000000000000000000000 ", - "sourceMap": "281:5041:9:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1946:1232;;;;;;:::i;:::-;;:::i;:::-;;4576:606;;;;;;:::i;:::-;;:::i;5255:65::-;;;:::i;1850:84:6:-;1897:4;1920:7;-1:-1:-1;;;1920:7:6;;;;1850:84;;;1013:14:10;;1006:22;988:41;;976:2;961:18;1850:84:6;;;;;;;;2293:101:0;;;:::i;5188:61:9:-;;;:::i;1765:175::-;;;;;;:::i;:::-;;:::i;1638:85:0:-;1684:7;1710:6;-1:-1:-1;;;;;1710:6:0;1638:85;;;-1:-1:-1;;;;;1204:32:10;;;1186:51;;1174:2;1159:18;1638:85:0;1040:203:10;782:41:9;;;;;;:::i;:::-;;;;;;;;;;;;;;;;1536:223;;;;;;:::i;:::-;;:::i;3913:657::-;;;:::i;2543:215:0:-;;;;;;:::i;:::-;;:::i;594:29:9:-;;;;;682:59;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1751:25:10;;;1807:2;1792:18;;1785:34;;;;1835:18;;;1828:34;;;;1893:2;1878:18;;1871:34;1936:3;1921:19;;1914:35;1993:14;1986:22;1980:3;1965:19;;1958:51;1738:3;1723:19;682:59:9;1470:545:10;3184:723:9;;;;;;:::i;:::-;;:::i;:::-;;;2166:25:10;;;2154:2;2139:18;3184:723:9;2020:177:10;1946:1232:9;1531:13:0;:11;:13::i;:::-;-1:-1:-1;;;;;1458:22:9;::::1;;::::0;;;:9:::1;:22;::::0;;;;;2162:11;;1458:22:::1;;1450:62;;;::::0;-1:-1:-1;;;1450:62:9;;2404:2:10;1450:62:9::1;::::0;::::1;2386:21:10::0;2443:2;2423:18;;;2416:30;2482:29;2462:18;;;2455:57;2529:18;;1450:62:9::1;;;;;;;;;1474:19:6::2;:17;:19::i;:::-;-1:-1:-1::0;;;;;2207:25:9;::::3;2199:57;;;::::0;-1:-1:-1;;;2199:57:9;;2760:2:10;2199:57:9::3;::::0;::::3;2742:21:10::0;2799:2;2779:18;;;2772:30;-1:-1:-1;;;2818:18:10;;;2811:49;2877:18;;2199:57:9::3;2558:343:10::0;2199:57:9::3;2283:1;2274:6;:10;2266:41;;;::::0;-1:-1:-1;;;2266:41:9;;3108:2:10;2266:41:9::3;::::0;::::3;3090:21:10::0;3147:2;3127:18;;;3120:30;-1:-1:-1;;;3166:18:10;;;3159:48;3224:18;;2266:41:9::3;2906:342:10::0;2266:41:9::3;2343:1;2325:15;:19;2317:60;;;::::0;-1:-1:-1;;;2317:60:9;;3455:2:10;2317:60:9::3;::::0;::::3;3437:21:10::0;3494:2;3474:18;;;3467:30;3533;3513:18;;;3506:58;3581:18;;2317:60:9::3;3253:352:10::0;2317:60:9::3;2427:13;2408:15;:32;;2387:112;;;::::0;-1:-1:-1;;;2387:112:9;;3812:2:10;2387:112:9::3;::::0;::::3;3794:21:10::0;3851:2;3831:18;;;3824:30;3890:34;3870:18;;;3863:62;-1:-1:-1;;;3941:18:10;;;3934:31;3982:19;;2387:112:9::3;3610:397:10::0;2387:112:9::3;-1:-1:-1::0;;;;;2530:29:9;::::3;;::::0;;;:16:::3;:29;::::0;;;;:41;:46;2509:116:::3;;;::::0;-1:-1:-1;;;2509:116:9;;4214:2:10;2509:116:9::3;::::0;::::3;4196:21:10::0;4253:2;4233:18;;;4226:30;4292:25;4272:18;;;4265:53;4335:18;;2509:116:9::3;4012:347:10::0;2509:116:9::3;2656:15;2643:9;:28;;2635:69;;;::::0;-1:-1:-1;;;2635:69:9;;4566:2:10;2635:69:9::3;::::0;::::3;4548:21:10::0;4605:2;4585:18;;;4578:30;4644;4624:18;;;4617:58;4692:18;;2635:69:9::3;4364:352:10::0;2635:69:9::3;2747:240;;;;;;;;2790:6;2747:240;;;;2821:9;2747:240;;;;2859:13;2747:240;;;;2903:15;2747:240;;;;2947:1;2747:240;;;;2971:5;2747:240;;;;::::0;2715:16:::3;:29;2732:11;-1:-1:-1::0;;;;;2715:29:9::3;-1:-1:-1::0;;;;;2715:29:9::3;;;;;;;;;;;;:272;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3019:5;-1:-1:-1::0;;;;;3019:18:9::3;;3038:10;3058:4;3065:6;3019:53;;;;;;;;;;;;;;;;-1:-1:-1::0;;;;;4979:15:10;;;4961:34;;5031:15;;;;5026:2;5011:18;;5004:43;5078:2;5063:18;;5056:34;;;;4911:2;4896:18;;4721:375;3019:53:9::3;;;;;;;;;;;;;;;;;;;::::0;::::3;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;2998:115;;;;-1:-1:-1::0;;;2998:115:9::3;;;;;;;:::i;:::-;3151:11;-1:-1:-1::0;;;;;3128:43:9::3;;3164:6;3128:43;;;;2166:25:10::0;;2154:2;2139:18;;2020:177;3128:43:9::3;;;;;;;;1554:1:0::1;1946:1232:9::0;;;;;:::o;4576:606::-;1531:13:0;:11;:13::i;:::-;-1:-1:-1;;;;;4684:29:9;::::1;4649:32;4684:29:::0;;;:16:::1;:29;::::0;;;;4731:20;;4723:56:::1;;;::::0;-1:-1:-1;;;4723:56:9;;5929:2:10;4723:56:9::1;::::0;::::1;5911:21:10::0;5968:2;5948:18;;;5941:30;-1:-1:-1;;;5987:18:10;;;5980:49;6046:18;;4723:56:9::1;5727:343:10::0;4723:56:9::1;4798:16;::::0;::::1;::::0;::::1;;4797:17;4789:45;;;::::0;-1:-1:-1;;;4789:45:9;;6277:2:10;4789:45:9::1;::::0;::::1;6259:21:10::0;6316:2;6296:18;;;6289:30;-1:-1:-1;;;6335:18:10;;;6328:45;6390:18;;4789:45:9::1;6075:339:10::0;4789:45:9::1;4845:20;4868:34;4890:11;4868:21;:34::i;:::-;4845:57;;4912:22;4960:12;4937:8;:20;;;:35;;;;:::i;:::-;4983:16;::::0;::::1;:23:::0;;-1:-1:-1;;4983:23:9::1;5002:4;4983:23;::::0;;4912:60;-1:-1:-1;5021:18:9;;5017:116:::1;;5063:5;-1:-1:-1::0;;;;;5063:14:9::1;;5078:7;1684::0::0;1710:6;-1:-1:-1;;;;;1710:6:0;;1638:85;5078:7:9::1;5063:39;::::0;-1:-1:-1;;;;;;5063:39:9::1;::::0;;;;;;-1:-1:-1;;;;;6876:32:10;;;5063:39:9::1;::::0;::::1;6858:51:10::0;6925:18;;;6918:34;;;6831:18;;5063:39:9::1;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;5055:67;;;;-1:-1:-1::0;;;5055:67:9::1;;;;;;;:::i;:::-;5148:27;::::0;-1:-1:-1;;;;;5148:27:9;::::1;::::0;::::1;::::0;;;::::1;4639:543;;;4576:606:::0;:::o;5255:65::-;1531:13:0;:11;:13::i;:::-;5303:10:9::1;:8;:10::i;:::-;5255:65::o:0;2293:101:0:-;1531:13;:11;:13::i;:::-;2357:30:::1;2384:1;2357:18;:30::i;5188:61:9:-:0;1531:13:0;:11;:13::i;:::-;5234:8:9::1;:6;:8::i;1765:175::-:0;1531:13:0;:11;:13::i;:::-;-1:-1:-1;;;;;1844:22:9;::::1;1869:5;1844:22:::0;;;:9:::1;:22;::::0;;;;;:30;;-1:-1:-1;;1844:30:9::1;::::0;;1889:44;::::1;::::0;1869:5;1889:44:::1;1765:175:::0;:::o;1536:223::-;1531:13:0;:11;:13::i;:::-;-1:-1:-1;;;;;1618:25:9;::::1;1610:53;;;::::0;-1:-1:-1;;;1610:53:9;;7165:2:10;1610:53:9::1;::::0;::::1;7147:21:10::0;7204:2;7184:18;;;7177:30;-1:-1:-1;;;7223:18:10;;;7216:45;7278:18;;1610:53:9::1;6963:339:10::0;1610:53:9::1;-1:-1:-1::0;;;;;1673:22:9;::::1;;::::0;;;:9:::1;:22;::::0;;;;;:29;;-1:-1:-1;;1673:29:9::1;1698:4;1673:29;::::0;;1717:35;::::1;::::0;1673:22;1717:35:::1;1536:223:::0;:::o;3913:657::-;2500:21:7;:19;:21::i;:::-;1474:19:6::1;:17;:19::i;:::-;4040:10:9::2;3988:32;4023:28:::0;;;:16:::2;:28;::::0;;;;4069:20;;4061:56:::2;;;::::0;-1:-1:-1;;;4061:56:9;;5929:2:10;4061:56:9::2;::::0;::::2;5911:21:10::0;5968:2;5948:18;;;5941:30;-1:-1:-1;;;5987:18:10;;;5980:49;6046:18;;4061:56:9::2;5727:343:10::0;4061:56:9::2;4136:16;::::0;::::2;::::0;::::2;;4135:17;4127:45;;;::::0;-1:-1:-1;;;4127:45:9;;7509:2:10;4127:45:9::2;::::0;::::2;7491:21:10::0;7548:2;7528:18;;;7521:30;-1:-1:-1;;;7567:18:10;;;7560:45;7622:18;;4127:45:9::2;7307:339:10::0;4127:45:9::2;4183:20;4206:33;4228:10;4206:21;:33::i;:::-;4183:56;;4249:23;4290:8;:22;;;4275:12;:37;;;;:::i;:::-;4249:63;;4348:1;4330:15;:19;4322:50;;;::::0;-1:-1:-1;;;4322:50:9;;7853:2:10;4322:50:9::2;::::0;::::2;7835:21:10::0;7892:2;7872:18;;;7865:30;-1:-1:-1;;;7911:18:10;;;7904:48;7969:18;;4322:50:9::2;7651:342:10::0;4322:50:9::2;4409:15;4383:8;:22;;;:41;;;;;;;:::i;:::-;::::0;;;-1:-1:-1;;4442:43:9::2;::::0;-1:-1:-1;;;4442:43:9;;4457:10:::2;4442:43;::::0;::::2;6858:51:10::0;6925:18;;;6918:34;;;4442:5:9::2;-1:-1:-1::0;;;;;4442:14:9::2;::::0;::::2;::::0;6831:18:10;;4442:43:9::2;;;;;;;;;;;;;;;;;;::::0;::::2;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;4434:71;;;;-1:-1:-1::0;;;4434:71:9::2;;;;;;;:::i;:::-;4521:42;::::0;2166:25:10;;;4535:10:9::2;::::0;4521:42:::2;::::0;2154:2:10;2139:18;4521:42:9::2;;;;;;;3978:592;;;2542:20:7::0;1857:1;3068:21;;2888:208;2543:215:0;1531:13;:11;:13::i;:::-;-1:-1:-1;;;;;2627:22:0;::::1;2623:91;;2672:31;::::0;-1:-1:-1;;;2672:31:0;;2700:1:::1;2672:31;::::0;::::1;1186:51:10::0;1159:18;;2672:31:0::1;1040:203:10::0;2623:91:0::1;2723:28;2742:8;2723:18;:28::i;:::-;2543:215:::0;:::o;3184:723:9:-;-1:-1:-1;;;;;3324:29:9;;3271:7;3324:29;;;:16;:29;;;;;;;;3290:63;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3368:25;;:45;;;3397:8;:16;;;3368:45;3364:84;;;-1:-1:-1;3436:1:9;;3184:723;-1:-1:-1;;3184:723:9:o;3364:84::-;3501:8;:22;;;3480:8;:18;;;:43;;;;:::i;:::-;3462:15;:61;3458:100;;;-1:-1:-1;3546:1:9;;3184:723;-1:-1:-1;;3184:723:9:o;3458:100::-;3612:8;:24;;;3591:8;:18;;;:45;;;;:::i;:::-;3572:15;:64;3568:122;;3659:20;;3184:723;-1:-1:-1;;3184:723:9:o;3568:122::-;3700:21;3742:8;:18;;;3724:15;:36;;;;:::i;:::-;3700:60;;3770:20;3846:8;:24;;;3817:13;3794:8;:20;;;:36;;;;:::i;:::-;3793:77;;;;:::i;:::-;3770:100;3184:723;-1:-1:-1;;;;;3184:723:9:o;1796:162:0:-;1684:7;1710:6;-1:-1:-1;;;;;1710:6:0;735:10:5;1855:23:0;1851:101;;1901:40;;-1:-1:-1;;;1901:40:0;;735:10:5;1901:40:0;;;1186:51:10;1159:18;;1901:40:0;1040:203:10;2002:128:6;1897:4;1920:7;-1:-1:-1;;;1920:7:6;;;;2063:61;;;2098:15;;-1:-1:-1;;;2098:15:6;;;;;;;;;;;2710:117;1721:16;:14;:16::i;:::-;2778:5:::1;2768:15:::0;;-1:-1:-1;;;;2768:15:6::1;::::0;;2798:22:::1;735:10:5::0;2807:12:6::1;2798:22;::::0;-1:-1:-1;;;;;1204:32:10;;;1186:51;;1174:2;1159:18;2798:22:6::1;;;;;;;2710:117::o:0;2912:187:0:-;2985:16;3004:6;;-1:-1:-1;;;;;3020:17:0;;;-1:-1:-1;;;;;;3020:17:0;;;;;;3052:40;;3004:6;;;;;;;3052:40;;2985:16;3052:40;2975:124;2912:187;:::o;2463:115:6:-;1474:19;:17;:19::i;:::-;2522:7:::1;:14:::0;;-1:-1:-1;;;;2522:14:6::1;-1:-1:-1::0;;;2522:14:6::1;::::0;;2551:20:::1;2558:12;735:10:5::0;;656:96;2575:307:7;1899:1;2702:7;;:18;2698:86;;2743:30;;-1:-1:-1;;;2743:30:7;;;;;;;;;;;2698:86;1899:1;2858:7;:17;2575:307::o;2202:126:6:-;1897:4;1920:7;-1:-1:-1;;;1920:7:6;;;;2260:62;;2296:15;;-1:-1:-1;;;2296:15:6;;;;;;;;;;;14:173:10;82:20;;-1:-1:-1;;;;;131:31:10;;121:42;;111:70;;177:1;174;167:12;111:70;14:173;;;:::o;192:460::-;287:6;295;303;311;319;372:3;360:9;351:7;347:23;343:33;340:53;;;389:1;386;379:12;340:53;412:29;431:9;412:29;:::i;:::-;402:39;488:2;473:18;;460:32;;-1:-1:-1;539:2:10;524:18;;511:32;;590:2;575:18;;562:32;;-1:-1:-1;641:3:10;626:19;613:33;;-1:-1:-1;192:460:10;-1:-1:-1;;;192:460:10:o;657:186::-;716:6;769:2;757:9;748:7;744:23;740:32;737:52;;;785:1;782;775:12;737:52;808:29;827:9;808:29;:::i;:::-;798:39;657:186;-1:-1:-1;;;657:186:10:o;5101:277::-;5168:6;5221:2;5209:9;5200:7;5196:23;5192:32;5189:52;;;5237:1;5234;5227:12;5189:52;5269:9;5263:16;5322:5;5315:13;5308:21;5301:5;5298:32;5288:60;;5344:1;5341;5334:12;5383:339;5585:2;5567:21;;;5624:2;5604:18;;;5597:30;-1:-1:-1;;;5658:2:10;5643:18;;5636:45;5713:2;5698:18;;5383:339::o;6419:127::-;6480:10;6475:3;6471:20;6468:1;6461:31;6511:4;6508:1;6501:15;6535:4;6532:1;6525:15;6551:128;6618:9;;;6639:11;;;6636:37;;;6653:18;;:::i;:::-;6551:128;;;;:::o;7998:125::-;8063:9;;;8084:10;;;8081:36;;;8097:18;;:::i;8128:168::-;8201:9;;;8232;;8249:15;;;8243:22;;8229:37;8219:71;;8270:18;;:::i;8301:217::-;8341:1;8367;8357:132;;8411:10;8406:3;8402:20;8399:1;8392:31;8446:4;8443:1;8436:15;8474:4;8471:1;8464:15;8357:132;-1:-1:-1;8503:9:10;;8301:217::o" + "object": "608060405234801561001057600080fd5b50600436106100cf5760003560e01c806370a082311161008c57806395d89b411161006657806395d89b41146101aa578063a9059cbb146101b2578063dd62ed3e146101c5578063f2fde38b146101fe57600080fd5b806370a082311461015e578063715018a6146101875780638da5cb5b1461018f57600080fd5b806306fdde03146100d4578063095ea7b3146100f257806318160ddd1461011557806323b872dd14610127578063313ce5671461013a57806340c10f1914610149575b600080fd5b6100dc610211565b6040516100e9919061070e565b60405180910390f35b610105610100366004610778565b6102a3565b60405190151581526020016100e9565b6002545b6040519081526020016100e9565b6101056101353660046107a2565b6102bd565b604051601281526020016100e9565b61015c610157366004610778565b6102e1565b005b61011961016c3660046107de565b6001600160a01b031660009081526020819052604090205490565b61015c6102f7565b6005546040516001600160a01b0390911681526020016100e9565b6100dc61030b565b6101056101c0366004610778565b61031a565b6101196101d3366004610800565b6001600160a01b03918216600090815260016020908152604080832093909416825291909152205490565b61015c61020c3660046107de565b610328565b60606003805461022090610833565b80601f016020809104026020016040519081016040528092919081815260200182805461024c90610833565b80156102995780601f1061026e57610100808354040283529160200191610299565b820191906000526020600020905b81548152906001019060200180831161027c57829003601f168201915b5050505050905090565b6000336102b181858561036b565b60019150505b92915050565b6000336102cb85828561037d565b6102d68585856103fb565b506001949350505050565b6102e961045a565b6102f38282610487565b5050565b6102ff61045a565b61030960006104bd565b565b60606004805461022090610833565b6000336102b18185856103fb565b61033061045a565b6001600160a01b03811661035f57604051631e4fbdf760e01b8152600060048201526024015b60405180910390fd5b610368816104bd565b50565b610378838383600161050f565b505050565b6001600160a01b0383811660009081526001602090815260408083209386168352929052205460001981146103f557818110156103e657604051637dc7a0d960e11b81526001600160a01b03841660048201526024810182905260448101839052606401610356565b6103f58484848403600061050f565b50505050565b6001600160a01b03831661042557604051634b637e8f60e11b815260006004820152602401610356565b6001600160a01b03821661044f5760405163ec442f0560e01b815260006004820152602401610356565b6103788383836105e4565b6005546001600160a01b031633146103095760405163118cdaa760e01b8152336004820152602401610356565b6001600160a01b0382166104b15760405163ec442f0560e01b815260006004820152602401610356565b6102f3600083836105e4565b600580546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b6001600160a01b0384166105395760405163e602df0560e01b815260006004820152602401610356565b6001600160a01b03831661056357604051634a1406b160e11b815260006004820152602401610356565b6001600160a01b03808516600090815260016020908152604080832093871683529290522082905580156103f557826001600160a01b0316846001600160a01b03167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925846040516105d691815260200190565b60405180910390a350505050565b6001600160a01b03831661060f578060026000828254610604919061086d565b909155506106819050565b6001600160a01b038316600090815260208190526040902054818110156106625760405163391434e360e21b81526001600160a01b03851660048201526024810182905260448101839052606401610356565b6001600160a01b03841660009081526020819052604090209082900390555b6001600160a01b03821661069d576002805482900390556106bc565b6001600160a01b03821660009081526020819052604090208054820190555b816001600160a01b0316836001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8360405161070191815260200190565b60405180910390a3505050565b600060208083528351808285015260005b8181101561073b5785810183015185820160400152820161071f565b506000604082860101526040601f19601f8301168501019250505092915050565b80356001600160a01b038116811461077357600080fd5b919050565b6000806040838503121561078b57600080fd5b6107948361075c565b946020939093013593505050565b6000806000606084860312156107b757600080fd5b6107c08461075c565b92506107ce6020850161075c565b9150604084013590509250925092565b6000602082840312156107f057600080fd5b6107f98261075c565b9392505050565b6000806040838503121561081357600080fd5b61081c8361075c565b915061082a6020840161075c565b90509250929050565b600181811c9082168061084757607f821691505b60208210810361086757634e487b7160e01b600052602260045260246000fd5b50919050565b808201808211156102b757634e487b7160e01b600052601160045260246000fdfea26469706673582212207e02bff7c92f01729cf8b1aa0b1f4bc1de2f54967781bde4fef96819d035982264736f6c63430008140033", + "opcodes": "PUSH1 0x80 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH2 0x10 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x4 CALLDATASIZE LT PUSH2 0xCF JUMPI PUSH1 0x0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0x70A08231 GT PUSH2 0x8C JUMPI DUP1 PUSH4 0x95D89B41 GT PUSH2 0x66 JUMPI DUP1 PUSH4 0x95D89B41 EQ PUSH2 0x1AA JUMPI DUP1 PUSH4 0xA9059CBB EQ PUSH2 0x1B2 JUMPI DUP1 PUSH4 0xDD62ED3E EQ PUSH2 0x1C5 JUMPI DUP1 PUSH4 0xF2FDE38B EQ PUSH2 0x1FE JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 PUSH4 0x70A08231 EQ PUSH2 0x15E JUMPI DUP1 PUSH4 0x715018A6 EQ PUSH2 0x187 JUMPI DUP1 PUSH4 0x8DA5CB5B EQ PUSH2 0x18F JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 PUSH4 0x6FDDE03 EQ PUSH2 0xD4 JUMPI DUP1 PUSH4 0x95EA7B3 EQ PUSH2 0xF2 JUMPI DUP1 PUSH4 0x18160DDD EQ PUSH2 0x115 JUMPI DUP1 PUSH4 0x23B872DD EQ PUSH2 0x127 JUMPI DUP1 PUSH4 0x313CE567 EQ PUSH2 0x13A JUMPI DUP1 PUSH4 0x40C10F19 EQ PUSH2 0x149 JUMPI JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0xDC PUSH2 0x211 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0xE9 SWAP2 SWAP1 PUSH2 0x70E JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0x105 PUSH2 0x100 CALLDATASIZE PUSH1 0x4 PUSH2 0x778 JUMP JUMPDEST PUSH2 0x2A3 JUMP JUMPDEST PUSH1 0x40 MLOAD SWAP1 ISZERO ISZERO DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0xE9 JUMP JUMPDEST PUSH1 0x2 SLOAD JUMPDEST PUSH1 0x40 MLOAD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0xE9 JUMP JUMPDEST PUSH2 0x105 PUSH2 0x135 CALLDATASIZE PUSH1 0x4 PUSH2 0x7A2 JUMP JUMPDEST PUSH2 0x2BD JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x12 DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0xE9 JUMP JUMPDEST PUSH2 0x15C PUSH2 0x157 CALLDATASIZE PUSH1 0x4 PUSH2 0x778 JUMP JUMPDEST PUSH2 0x2E1 JUMP JUMPDEST STOP JUMPDEST PUSH2 0x119 PUSH2 0x16C CALLDATASIZE PUSH1 0x4 PUSH2 0x7DE JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x20 DUP2 SWAP1 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD SWAP1 JUMP JUMPDEST PUSH2 0x15C PUSH2 0x2F7 JUMP JUMPDEST PUSH1 0x5 SLOAD PUSH1 0x40 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 SWAP2 AND DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0xE9 JUMP JUMPDEST PUSH2 0xDC PUSH2 0x30B JUMP JUMPDEST PUSH2 0x105 PUSH2 0x1C0 CALLDATASIZE PUSH1 0x4 PUSH2 0x778 JUMP JUMPDEST PUSH2 0x31A JUMP JUMPDEST PUSH2 0x119 PUSH2 0x1D3 CALLDATASIZE PUSH1 0x4 PUSH2 0x800 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP2 DUP3 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x1 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 0x15C PUSH2 0x20C CALLDATASIZE PUSH1 0x4 PUSH2 0x7DE JUMP JUMPDEST PUSH2 0x328 JUMP JUMPDEST PUSH1 0x60 PUSH1 0x3 DUP1 SLOAD PUSH2 0x220 SWAP1 PUSH2 0x833 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 0x24C SWAP1 PUSH2 0x833 JUMP JUMPDEST DUP1 ISZERO PUSH2 0x299 JUMPI DUP1 PUSH1 0x1F LT PUSH2 0x26E JUMPI PUSH2 0x100 DUP1 DUP4 SLOAD DIV MUL DUP4 MSTORE SWAP2 PUSH1 0x20 ADD SWAP2 PUSH2 0x299 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 0x27C JUMPI DUP3 SWAP1 SUB PUSH1 0x1F AND DUP3 ADD SWAP2 JUMPDEST POP POP POP POP POP SWAP1 POP SWAP1 JUMP JUMPDEST PUSH1 0x0 CALLER PUSH2 0x2B1 DUP2 DUP6 DUP6 PUSH2 0x36B JUMP JUMPDEST PUSH1 0x1 SWAP2 POP POP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 CALLER PUSH2 0x2CB DUP6 DUP3 DUP6 PUSH2 0x37D JUMP JUMPDEST PUSH2 0x2D6 DUP6 DUP6 DUP6 PUSH2 0x3FB JUMP JUMPDEST POP PUSH1 0x1 SWAP5 SWAP4 POP POP POP POP JUMP JUMPDEST PUSH2 0x2E9 PUSH2 0x45A JUMP JUMPDEST PUSH2 0x2F3 DUP3 DUP3 PUSH2 0x487 JUMP JUMPDEST POP POP JUMP JUMPDEST PUSH2 0x2FF PUSH2 0x45A JUMP JUMPDEST PUSH2 0x309 PUSH1 0x0 PUSH2 0x4BD JUMP JUMPDEST JUMP JUMPDEST PUSH1 0x60 PUSH1 0x4 DUP1 SLOAD PUSH2 0x220 SWAP1 PUSH2 0x833 JUMP JUMPDEST PUSH1 0x0 CALLER PUSH2 0x2B1 DUP2 DUP6 DUP6 PUSH2 0x3FB JUMP JUMPDEST PUSH2 0x330 PUSH2 0x45A JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND PUSH2 0x35F JUMPI PUSH1 0x40 MLOAD PUSH4 0x1E4FBDF7 PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x0 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x24 ADD JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH2 0x368 DUP2 PUSH2 0x4BD JUMP JUMPDEST POP JUMP JUMPDEST PUSH2 0x378 DUP4 DUP4 DUP4 PUSH1 0x1 PUSH2 0x50F JUMP JUMPDEST POP POP POP JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP4 DUP2 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x1 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 SWAP4 DUP7 AND DUP4 MSTORE SWAP3 SWAP1 MSTORE KECCAK256 SLOAD PUSH1 0x0 NOT DUP2 EQ PUSH2 0x3F5 JUMPI DUP2 DUP2 LT ISZERO PUSH2 0x3E6 JUMPI PUSH1 0x40 MLOAD PUSH4 0x7DC7A0D9 PUSH1 0xE1 SHL DUP2 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP5 AND PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x24 DUP2 ADD DUP3 SWAP1 MSTORE PUSH1 0x44 DUP2 ADD DUP4 SWAP1 MSTORE PUSH1 0x64 ADD PUSH2 0x356 JUMP JUMPDEST PUSH2 0x3F5 DUP5 DUP5 DUP5 DUP5 SUB PUSH1 0x0 PUSH2 0x50F JUMP JUMPDEST POP POP POP POP JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP4 AND PUSH2 0x425 JUMPI PUSH1 0x40 MLOAD PUSH4 0x4B637E8F PUSH1 0xE1 SHL DUP2 MSTORE PUSH1 0x0 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x24 ADD PUSH2 0x356 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP3 AND PUSH2 0x44F JUMPI PUSH1 0x40 MLOAD PUSH4 0xEC442F05 PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x0 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x24 ADD PUSH2 0x356 JUMP JUMPDEST PUSH2 0x378 DUP4 DUP4 DUP4 PUSH2 0x5E4 JUMP JUMPDEST PUSH1 0x5 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND CALLER EQ PUSH2 0x309 JUMPI PUSH1 0x40 MLOAD PUSH4 0x118CDAA7 PUSH1 0xE0 SHL DUP2 MSTORE CALLER PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x24 ADD PUSH2 0x356 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP3 AND PUSH2 0x4B1 JUMPI PUSH1 0x40 MLOAD PUSH4 0xEC442F05 PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x0 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x24 ADD PUSH2 0x356 JUMP JUMPDEST PUSH2 0x2F3 PUSH1 0x0 DUP4 DUP4 PUSH2 0x5E4 JUMP JUMPDEST PUSH1 0x5 DUP1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP4 DUP2 AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB NOT DUP4 AND DUP2 OR SWAP1 SWAP4 SSTORE PUSH1 0x40 MLOAD SWAP2 AND SWAP2 SWAP1 DUP3 SWAP1 PUSH32 0x8BE0079C531659141344CD1FD0A4F28419497F9722A3DAAFE3B4186F6B6457E0 SWAP1 PUSH1 0x0 SWAP1 LOG3 POP POP JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP5 AND PUSH2 0x539 JUMPI PUSH1 0x40 MLOAD PUSH4 0xE602DF05 PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x0 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x24 ADD PUSH2 0x356 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP4 AND PUSH2 0x563 JUMPI PUSH1 0x40 MLOAD PUSH4 0x4A1406B1 PUSH1 0xE1 SHL DUP2 MSTORE PUSH1 0x0 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x24 ADD PUSH2 0x356 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP1 DUP6 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x1 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 SWAP4 DUP8 AND DUP4 MSTORE SWAP3 SWAP1 MSTORE KECCAK256 DUP3 SWAP1 SSTORE DUP1 ISZERO PUSH2 0x3F5 JUMPI DUP3 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP5 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH32 0x8C5BE1E5EBEC7D5BD14F71427D1E84F3DD0314C0F7B2291E5B200AC8C7C3B925 DUP5 PUSH1 0x40 MLOAD PUSH2 0x5D6 SWAP2 DUP2 MSTORE PUSH1 0x20 ADD SWAP1 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG3 POP POP POP POP JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP4 AND PUSH2 0x60F JUMPI DUP1 PUSH1 0x2 PUSH1 0x0 DUP3 DUP3 SLOAD PUSH2 0x604 SWAP2 SWAP1 PUSH2 0x86D JUMP JUMPDEST SWAP1 SWAP2 SSTORE POP PUSH2 0x681 SWAP1 POP JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP4 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x20 DUP2 SWAP1 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD DUP2 DUP2 LT ISZERO PUSH2 0x662 JUMPI PUSH1 0x40 MLOAD PUSH4 0x391434E3 PUSH1 0xE2 SHL DUP2 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP6 AND PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x24 DUP2 ADD DUP3 SWAP1 MSTORE PUSH1 0x44 DUP2 ADD DUP4 SWAP1 MSTORE PUSH1 0x64 ADD PUSH2 0x356 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP5 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x20 DUP2 SWAP1 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SWAP1 DUP3 SWAP1 SUB SWAP1 SSTORE JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP3 AND PUSH2 0x69D JUMPI PUSH1 0x2 DUP1 SLOAD DUP3 SWAP1 SUB SWAP1 SSTORE PUSH2 0x6BC JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP3 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x20 DUP2 SWAP1 MSTORE PUSH1 0x40 SWAP1 KECCAK256 DUP1 SLOAD DUP3 ADD SWAP1 SSTORE JUMPDEST DUP2 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP4 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH32 0xDDF252AD1BE2C89B69C2B068FC378DAA952BA7F163C4A11628F55A4DF523B3EF DUP4 PUSH1 0x40 MLOAD PUSH2 0x701 SWAP2 DUP2 MSTORE PUSH1 0x20 ADD SWAP1 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG3 POP POP 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 0x73B JUMPI DUP6 DUP2 ADD DUP4 ADD MLOAD DUP6 DUP3 ADD PUSH1 0x40 ADD MSTORE DUP3 ADD PUSH2 0x71F JUMP JUMPDEST POP PUSH1 0x0 PUSH1 0x40 DUP3 DUP7 ADD ADD MSTORE PUSH1 0x40 PUSH1 0x1F NOT PUSH1 0x1F DUP4 ADD AND DUP6 ADD ADD SWAP3 POP POP POP SWAP3 SWAP2 POP POP JUMP JUMPDEST DUP1 CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND DUP2 EQ PUSH2 0x773 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH2 0x78B JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x794 DUP4 PUSH2 0x75C 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 0x7B7 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x7C0 DUP5 PUSH2 0x75C JUMP JUMPDEST SWAP3 POP PUSH2 0x7CE PUSH1 0x20 DUP6 ADD PUSH2 0x75C JUMP JUMPDEST SWAP2 POP PUSH1 0x40 DUP5 ADD CALLDATALOAD SWAP1 POP SWAP3 POP SWAP3 POP SWAP3 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x7F0 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x7F9 DUP3 PUSH2 0x75C JUMP JUMPDEST SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH2 0x813 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x81C DUP4 PUSH2 0x75C JUMP JUMPDEST SWAP2 POP PUSH2 0x82A PUSH1 0x20 DUP5 ADD PUSH2 0x75C JUMP JUMPDEST SWAP1 POP SWAP3 POP SWAP3 SWAP1 POP JUMP JUMPDEST PUSH1 0x1 DUP2 DUP2 SHR SWAP1 DUP3 AND DUP1 PUSH2 0x847 JUMPI PUSH1 0x7F DUP3 AND SWAP2 POP JUMPDEST PUSH1 0x20 DUP3 LT DUP2 SUB PUSH2 0x867 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 DUP1 DUP3 ADD DUP1 DUP3 GT ISZERO PUSH2 0x2B7 JUMPI PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH1 0x0 MSTORE PUSH1 0x11 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 PUSH31 0x2BFF7C92F01729CF8B1AA0B1F4BC1DE2F54967781BDE4FEF96819D0359822 PUSH5 0x736F6C6343 STOP ADDMOD EQ STOP CALLER ", + "sourceMap": "167:234:16:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1779:89:5;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;3998:186;;;;;;:::i;:::-;;:::i;:::-;;;1169:14:17;;1162:22;1144:41;;1132:2;1117:18;3998:186:5;1004:187:17;2849:97:5;2927:12;;2849:97;;;1342:25:17;;;1330:2;1315:18;2849:97:5;1196:177:17;4776:244:5;;;;;;:::i;:::-;;:::i;2707:82::-;;;2780:2;1853:36:17;;1841:2;1826:18;2707:82:5;1711:184:17;304:95:16;;;;;;:::i;:::-;;:::i;:::-;;3004:116:5;;;;;;:::i;:::-;-1:-1:-1;;;;;3095:18:5;3069:7;3095:18;;;;;;;;;;;;3004:116;2293:101:0;;;:::i;1638:85::-;1710:6;;1638:85;;-1:-1:-1;;;;;1710:6:0;;;2237:51:17;;2225:2;2210:18;1638:85:0;2091:203:17;1981:93:5;;;:::i;3315:178::-;;;;;;:::i;:::-;;:::i;3551:140::-;;;;;;:::i;:::-;-1:-1:-1;;;;;3657:18:5;;;3631:7;3657:18;;;:11;:18;;;;;;;;:27;;;;;;;;;;;;;3551:140;2543:215:0;;;;;;:::i;:::-;;:::i;1779:89:5:-;1824:13;1856:5;1849:12;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1779:89;:::o;3998:186::-;4071:4;735:10:10;4125:31:5;735:10:10;4141:7:5;4150:5;4125:8;:31::i;:::-;4173:4;4166:11;;;3998:186;;;;;:::o;4776:244::-;4863:4;735:10:10;4919:37:5;4935:4;735:10:10;4950:5:5;4919:15;:37::i;:::-;4966:26;4976:4;4982:2;4986:5;4966:9;:26::i;:::-;-1:-1:-1;5009:4:5;;4776:244;-1:-1:-1;;;;4776:244:5:o;304:95:16:-;1531:13:0;:11;:13::i;:::-;375:17:16::1;381:2;385:6;375:5;:17::i;:::-;304:95:::0;;:::o;2293:101:0:-;1531:13;:11;:13::i;:::-;2357:30:::1;2384:1;2357:18;:30::i;:::-;2293:101::o:0;1981:93:5:-;2028:13;2060:7;2053:14;;;;;:::i;3315:178::-;3384:4;735:10:10;3438:27:5;735:10:10;3455:2:5;3459:5;3438:9;:27::i;2543:215:0:-;1531:13;:11;:13::i;:::-;-1:-1:-1;;;;;2627:22:0;::::1;2623:91;;2672:31;::::0;-1:-1:-1;;;2672:31:0;;2700:1:::1;2672:31;::::0;::::1;2237:51:17::0;2210:18;;2672:31:0::1;;;;;;;;2623:91;2723:28;2742:8;2723:18;:28::i;:::-;2543:215:::0;:::o;8726:128:5:-;8810:37;8819:5;8826:7;8835:5;8842:4;8810:8;:37::i;:::-;8726:128;;;:::o;10415:477::-;-1:-1:-1;;;;;3657:18:5;;;10514:24;3657:18;;;:11;:18;;;;;;;;:27;;;;;;;;;;-1:-1:-1;;10580:37:5;;10576:310;;10656:5;10637:16;:24;10633:130;;;10688:60;;-1:-1:-1;;;10688:60:5;;-1:-1:-1;;;;;3169:32:17;;10688:60:5;;;3151:51:17;3218:18;;;3211:34;;;3261:18;;;3254:34;;;3124:18;;10688:60:5;2949:345:17;10633:130:5;10804:57;10813:5;10820:7;10848:5;10829:16;:24;10855:5;10804:8;:57::i;:::-;10504:388;10415:477;;;:::o;5393:300::-;-1:-1:-1;;;;;5476:18:5;;5472:86;;5517:30;;-1:-1:-1;;;5517:30:5;;5544:1;5517:30;;;2237:51:17;2210:18;;5517:30:5;2091:203:17;5472:86:5;-1:-1:-1;;;;;5571:16:5;;5567:86;;5610:32;;-1:-1:-1;;;5610:32:5;;5639:1;5610:32;;;2237:51:17;2210:18;;5610:32:5;2091:203:17;5567:86:5;5662:24;5670:4;5676:2;5680:5;5662:7;:24::i;1796:162:0:-;1710:6;;-1:-1:-1;;;;;1710:6:0;735:10:10;1855:23:0;1851:101;;1901:40;;-1:-1:-1;;;1901:40:0;;735:10:10;1901:40:0;;;2237:51:17;2210:18;;1901:40:0;2091:203:17;7458:208:5;-1:-1:-1;;;;;7528:21:5;;7524:91;;7572:32;;-1:-1:-1;;;7572:32:5;;7601:1;7572:32;;;2237:51:17;2210:18;;7572:32:5;2091:203:17;7524:91:5;7624:35;7640:1;7644:7;7653:5;7624:7;:35::i;2912:187:0:-;3004:6;;;-1:-1:-1;;;;;3020:17:0;;;-1:-1:-1;;;;;;3020:17:0;;;;;;;3052:40;;3004:6;;;3020:17;3004:6;;3052:40;;2985:16;;3052:40;2975:124;2912:187;:::o;9701:432:5:-;-1:-1:-1;;;;;9813:19:5;;9809:89;;9855:32;;-1:-1:-1;;;9855:32:5;;9884:1;9855:32;;;2237:51:17;2210:18;;9855:32:5;2091:203:17;9809:89:5;-1:-1:-1;;;;;9911:21:5;;9907:90;;9955:31;;-1:-1:-1;;;9955:31:5;;9983:1;9955:31;;;2237:51:17;2210:18;;9955:31:5;2091:203:17;9907:90:5;-1:-1:-1;;;;;10006:18:5;;;;;;;:11;:18;;;;;;;;:27;;;;;;;;;:35;;;10051:76;;;;10101:7;-1:-1:-1;;;;;10085:31:5;10094:5;-1:-1:-1;;;;;10085:31:5;;10110:5;10085:31;;;;1342:25:17;;1330:2;1315:18;;1196:177;10085:31:5;;;;;;;;9701:432;;;;:::o;6008:1107::-;-1:-1:-1;;;;;6097:18:5;;6093:540;;6249:5;6233:12;;:21;;;;;;;:::i;:::-;;;;-1:-1:-1;6093:540:5;;-1:-1:-1;6093:540:5;;-1:-1:-1;;;;;6307:15:5;;6285:19;6307:15;;;;;;;;;;;6340:19;;;6336:115;;;6386:50;;-1:-1:-1;;;6386:50:5;;-1:-1:-1;;;;;3169:32:17;;6386:50:5;;;3151:51:17;3218:18;;;3211:34;;;3261:18;;;3254:34;;;3124:18;;6386:50:5;2949:345:17;6336:115:5;-1:-1:-1;;;;;6571:15:5;;:9;:15;;;;;;;;;;6589:19;;;;6571:37;;6093:540;-1:-1:-1;;;;;6647:16:5;;6643:425;;6810:12;:21;;;;;;;6643:425;;;-1:-1:-1;;;;;7021:13:5;;:9;:13;;;;;;;;;;:22;;;;;;6643:425;7098:2;-1:-1:-1;;;;;7083:25:5;7092:4;-1:-1:-1;;;;;7083:25:5;;7102:5;7083:25;;;;1342::17;;1330:2;1315:18;;1196:177;7083:25:5;;;;;;;;6008:1107;;;:::o;14:548:17:-;126:4;155:2;184;173:9;166:21;216:6;210:13;259:6;254:2;243:9;239:18;232:34;284:1;294:140;308:6;305:1;302:13;294:140;;;403:14;;;399:23;;393:30;369:17;;;388:2;365:26;358:66;323:10;;294:140;;;298:3;483:1;478:2;469:6;458:9;454:22;450:31;443:42;553:2;546;542:7;537:2;529:6;525:15;521:29;510:9;506:45;502:54;494:62;;;;14:548;;;;:::o;567:173::-;635:20;;-1:-1:-1;;;;;684:31:17;;674:42;;664:70;;730:1;727;720:12;664:70;567:173;;;:::o;745:254::-;813:6;821;874:2;862:9;853:7;849:23;845:32;842:52;;;890:1;887;880:12;842:52;913:29;932:9;913:29;:::i;:::-;903:39;989:2;974:18;;;;961:32;;-1:-1:-1;;;745:254:17:o;1378:328::-;1455:6;1463;1471;1524:2;1512:9;1503:7;1499:23;1495:32;1492:52;;;1540:1;1537;1530:12;1492:52;1563:29;1582:9;1563:29;:::i;:::-;1553:39;;1611:38;1645:2;1634:9;1630:18;1611:38;:::i;:::-;1601:48;;1696:2;1685:9;1681:18;1668:32;1658:42;;1378:328;;;;;:::o;1900:186::-;1959:6;2012:2;2000:9;1991:7;1987:23;1983:32;1980:52;;;2028:1;2025;2018:12;1980:52;2051:29;2070:9;2051:29;:::i;:::-;2041:39;1900:186;-1:-1:-1;;;1900:186:17:o;2299:260::-;2367:6;2375;2428:2;2416:9;2407:7;2403:23;2399:32;2396:52;;;2444:1;2441;2434:12;2396:52;2467:29;2486:9;2467:29;:::i;:::-;2457:39;;2515:38;2549:2;2538:9;2534:18;2515:38;:::i;:::-;2505:48;;2299:260;;;;;:::o;2564:380::-;2643:1;2639:12;;;;2686;;;2707:61;;2761:4;2753:6;2749:17;2739:27;;2707:61;2814:2;2806:6;2803:14;2783:18;2780:38;2777:161;;2860:10;2855:3;2851:20;2848:1;2841:31;2895:4;2892:1;2885:15;2923:4;2920:1;2913:15;2777:161;;2564:380;;;:::o;3299:222::-;3364:9;;;3385:10;;;3382:133;;;3437:10;3432:3;3428:20;3425:1;3418:31;3472:4;3469:1;3462:15;3500:4;3497:1;3490:15" }, "methodIdentifiers": { - "addToWhitelist(address)": "e43252d7", - "calculateVestedAmount(address)": "ffa06b2a", - "claimVestedTokens()": "e74f3fbb", - "createVestingSchedule(address,uint256,uint256,uint256,uint256)": "1bf0b08b", + "allowance(address,address)": "dd62ed3e", + "approve(address,uint256)": "095ea7b3", + "balanceOf(address)": "70a08231", + "decimals()": "313ce567", + "mint(address,uint256)": "40c10f19", + "name()": "06fdde03", "owner()": "8da5cb5b", - "pause()": "8456cb59", - "paused()": "5c975abb", - "removeFromWhitelist(address)": "8ab1d681", "renounceOwnership()": "715018a6", - "revokeVesting(address)": "3b0da260", - "token()": "fc0c546a", - "transferOwnership(address)": "f2fde38b", - "unpause()": "3f4ba83a", - "vestingSchedules(address)": "fdb20ccb", - "whitelist(address)": "9b19251a" + "symbol()": "95d89b41", + "totalSupply()": "18160ddd", + "transfer(address,uint256)": "a9059cbb", + "transferFrom(address,address,uint256)": "23b872dd", + "transferOwnership(address)": "f2fde38b" } }, - "metadata": "{\"compiler\":{\"version\":\"0.8.20+commit.a1b79de6\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"internalType\":\"address\",\"name\":\"tokenAddress\",\"type\":\"address\"}],\"stateMutability\":\"nonpayable\",\"type\":\"constructor\"},{\"inputs\":[],\"name\":\"EnforcedPause\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"ExpectedPause\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"}],\"name\":\"OwnableInvalidOwner\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"OwnableUnauthorizedAccount\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"ReentrancyGuardReentrantCall\",\"type\":\"error\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"beneficiary\",\"type\":\"address\"}],\"name\":\"BeneficiaryRemovedFromWhitelist\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"beneficiary\",\"type\":\"address\"}],\"name\":\"BeneficiaryWhitelisted\",\"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\":\"beneficiary\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"TokensClaimed\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"Unpaused\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"beneficiary\",\"type\":\"address\"}],\"name\":\"VestingRevoked\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"beneficiary\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"VestingScheduleCreated\",\"type\":\"event\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"beneficiary\",\"type\":\"address\"}],\"name\":\"addToWhitelist\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"beneficiary\",\"type\":\"address\"}],\"name\":\"calculateVestedAmount\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"claimVestedTokens\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"beneficiary\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"cliffDuration\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"vestingDuration\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"startTime\",\"type\":\"uint256\"}],\"name\":\"createVestingSchedule\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"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\":\"address\",\"name\":\"beneficiary\",\"type\":\"address\"}],\"name\":\"removeFromWhitelist\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"renounceOwnership\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"beneficiary\",\"type\":\"address\"}],\"name\":\"revokeVesting\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"token\",\"outputs\":[{\"internalType\":\"contract IERC20\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"newOwner\",\"type\":\"address\"}],\"name\":\"transferOwnership\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"unpause\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"name\":\"vestingSchedules\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"totalAmount\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"startTime\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"cliffDuration\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"vestingDuration\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"amountClaimed\",\"type\":\"uint256\"},{\"internalType\":\"bool\",\"name\":\"revoked\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"name\":\"whitelist\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"}],\"devdoc\":{\"errors\":{\"EnforcedPause()\":[{\"details\":\"The operation failed because the contract is paused.\"}],\"ExpectedPause()\":[{\"details\":\"The operation failed because the contract is not paused.\"}],\"OwnableInvalidOwner(address)\":[{\"details\":\"The owner is not a valid owner account. (eg. `address(0)`)\"}],\"OwnableUnauthorizedAccount(address)\":[{\"details\":\"The caller account is not authorized to perform an operation.\"}],\"ReentrancyGuardReentrantCall()\":[{\"details\":\"Unauthorized reentrant call.\"}]},\"events\":{\"Paused(address)\":{\"details\":\"Emitted when the pause is triggered by `account`.\"},\"Unpaused(address)\":{\"details\":\"Emitted when the pause is lifted by `account`.\"}},\"kind\":\"dev\",\"methods\":{\"owner()\":{\"details\":\"Returns the address of the current owner.\"},\"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. Can only be called by the current owner. NOTE: Renouncing ownership will leave the contract without an owner, thereby disabling any functionality that is only available to the owner.\"},\"transferOwnership(address)\":{\"details\":\"Transfers ownership of the contract to a new account (`newOwner`). Can only be called by the current owner.\"}},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"contracts/vesting.sol\":\"TokenVesting\"},\"evmVersion\":\"paris\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":200},\"remappings\":[]},\"sources\":{\"@openzeppelin/contracts/access/Ownable.sol\":{\"keccak256\":\"0xff6d0bb2e285473e5311d9d3caacb525ae3538a80758c10649a4d61029b017bb\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://8ed324d3920bb545059d66ab97d43e43ee85fd3bd52e03e401f020afb0b120f6\",\"dweb:/ipfs/QmfEckWLmZkDDcoWrkEvMWhms66xwTLff9DDhegYpvHo1a\"]},\"@openzeppelin/contracts/token/ERC20/IERC20.sol\":{\"keccak256\":\"0xe06a3f08a987af6ad2e1c1e774405d4fe08f1694b67517438b467cecf0da0ef7\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://df6f0c459663c9858b6cba2cda1d14a7d05a985bed6d2de72bd8e78c25ee79db\",\"dweb:/ipfs/QmeTTxZ7qVk9rjEv2R4CpCwdf8UMCcRqDNMvzNxHc3Fnn9\"]},\"@openzeppelin/contracts/utils/Context.sol\":{\"keccak256\":\"0x493033a8d1b176a037b2cc6a04dad01a5c157722049bbecf632ca876224dd4b2\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://6a708e8a5bdb1011c2c381c9a5cfd8a9a956d7d0a9dc1bd8bcdaf52f76ef2f12\",\"dweb:/ipfs/Qmax9WHBnVsZP46ZxEMNRQpLQnrdE4dK8LehML1Py8FowF\"]},\"@openzeppelin/contracts/utils/Pausable.sol\":{\"keccak256\":\"0xb2e5f50762c27fb4b123e3619c3c02bdcba5e515309382e5bfb6f7d6486510bd\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://1a4b83328c98d518a2699c2cbe9e9b055e78aa57fa8639f1b88deb8b3750b5dc\",\"dweb:/ipfs/QmXdcYj5v7zQxXFPULShHkR5p4Wa2zYuupbHnFdV3cHYtc\"]},\"@openzeppelin/contracts/utils/ReentrancyGuard.sol\":{\"keccak256\":\"0x11a5a79827df29e915a12740caf62fe21ebe27c08c9ae3e09abe9ee3ba3866d3\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://3cf0c69ab827e3251db9ee6a50647d62c90ba580a4d7bbff21f2bea39e7b2f4a\",\"dweb:/ipfs/QmZiKwtKU1SBX4RGfQtY7PZfiapbbu6SZ9vizGQD9UHjRA\"]},\"contracts/vesting.sol\":{\"keccak256\":\"0x363e665a6a2be3b226f143b3f4b18578a9b4cbbe070e07c14cfedbd8869d0a0e\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://c44032e59c57ac249999676ee2211bad384820632e2ea25fde854cf81cef0ff3\",\"dweb:/ipfs/QmWaf4QnhRJCdKeqo6oFQ1HrjbSFi7Nip8yXGSq5YK3DBs\"]}},\"version\":1}" + "metadata": "{\"compiler\":{\"version\":\"0.8.20+commit.a1b79de6\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"internalType\":\"string\",\"name\":\"name\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"symbol\",\"type\":\"string\"}],\"stateMutability\":\"nonpayable\",\"type\":\"constructor\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"allowance\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"needed\",\"type\":\"uint256\"}],\"name\":\"ERC20InsufficientAllowance\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"balance\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"needed\",\"type\":\"uint256\"}],\"name\":\"ERC20InsufficientBalance\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"approver\",\"type\":\"address\"}],\"name\":\"ERC20InvalidApprover\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"receiver\",\"type\":\"address\"}],\"name\":\"ERC20InvalidReceiver\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"}],\"name\":\"ERC20InvalidSender\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"}],\"name\":\"ERC20InvalidSpender\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"}],\"name\":\"OwnableInvalidOwner\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"OwnableUnauthorizedAccount\",\"type\":\"error\"},{\"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\":\"previousOwner\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"newOwner\",\"type\":\"address\"}],\"name\":\"OwnershipTransferred\",\"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\":\"value\",\"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\":\"decimals\",\"outputs\":[{\"internalType\":\"uint8\",\"name\":\"\",\"type\":\"uint8\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"mint\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"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\":\"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\":[{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"name\":\"transfer\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"name\":\"transferFrom\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"newOwner\",\"type\":\"address\"}],\"name\":\"transferOwnership\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"}],\"devdoc\":{\"errors\":{\"ERC20InsufficientAllowance(address,uint256,uint256)\":[{\"details\":\"Indicates a failure with the `spender`\\u2019s `allowance`. Used in transfers.\",\"params\":{\"allowance\":\"Amount of tokens a `spender` is allowed to operate with.\",\"needed\":\"Minimum amount required to perform a transfer.\",\"spender\":\"Address that may be allowed to operate on tokens without being their owner.\"}}],\"ERC20InsufficientBalance(address,uint256,uint256)\":[{\"details\":\"Indicates an error related to the current `balance` of a `sender`. Used in transfers.\",\"params\":{\"balance\":\"Current balance for the interacting account.\",\"needed\":\"Minimum amount required to perform a transfer.\",\"sender\":\"Address whose tokens are being transferred.\"}}],\"ERC20InvalidApprover(address)\":[{\"details\":\"Indicates a failure with the `approver` of a token to be approved. Used in approvals.\",\"params\":{\"approver\":\"Address initiating an approval operation.\"}}],\"ERC20InvalidReceiver(address)\":[{\"details\":\"Indicates a failure with the token `receiver`. Used in transfers.\",\"params\":{\"receiver\":\"Address to which tokens are being transferred.\"}}],\"ERC20InvalidSender(address)\":[{\"details\":\"Indicates a failure with the token `sender`. Used in transfers.\",\"params\":{\"sender\":\"Address whose tokens are being transferred.\"}}],\"ERC20InvalidSpender(address)\":[{\"details\":\"Indicates a failure with the `spender` to be approved. Used in approvals.\",\"params\":{\"spender\":\"Address that may be allowed to operate on tokens without being their owner.\"}}],\"OwnableInvalidOwner(address)\":[{\"details\":\"The owner is not a valid owner account. (eg. `address(0)`)\"}],\"OwnableUnauthorizedAccount(address)\":[{\"details\":\"The caller account is not authorized to perform an operation.\"}]},\"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\":\"See {IERC20-allowance}.\"},\"approve(address,uint256)\":{\"details\":\"See {IERC20-approve}. NOTE: If `value` is the maximum `uint256`, the allowance is not updated on `transferFrom`. This is semantically equivalent to an infinite approval. Requirements: - `spender` cannot be the zero address.\"},\"balanceOf(address)\":{\"details\":\"See {IERC20-balanceOf}.\"},\"decimals()\":{\"details\":\"Returns the number of decimals used to get its user representation. For example, if `decimals` equals `2`, a balance of `505` tokens should be displayed to a user as `5.05` (`505 / 10 ** 2`). Tokens usually opt for a value of 18, imitating the relationship between Ether and Wei. This is the default value returned by this function, unless it's overridden. NOTE: This information is only used for _display_ purposes: it in no way affects any of the arithmetic of the contract, including {IERC20-balanceOf} and {IERC20-transfer}.\"},\"name()\":{\"details\":\"Returns the name of the token.\"},\"owner()\":{\"details\":\"Returns the address of the current owner.\"},\"renounceOwnership()\":{\"details\":\"Leaves the contract without owner. It will not be possible to call `onlyOwner` functions. Can only be called by the current owner. NOTE: Renouncing ownership will leave the contract without an owner, thereby disabling any functionality that is only available to the owner.\"},\"symbol()\":{\"details\":\"Returns the symbol of the token, usually a shorter version of the name.\"},\"totalSupply()\":{\"details\":\"See {IERC20-totalSupply}.\"},\"transfer(address,uint256)\":{\"details\":\"See {IERC20-transfer}. Requirements: - `to` cannot be the zero address. - the caller must have a balance of at least `value`.\"},\"transferFrom(address,address,uint256)\":{\"details\":\"See {IERC20-transferFrom}. Skips emitting an {Approval} event indicating an allowance update. This is not required by the ERC. See {xref-ERC20-_approve-address-address-uint256-bool-}[_approve]. NOTE: Does not update the allowance if the current allowance is the maximum `uint256`. Requirements: - `from` and `to` cannot be the zero address. - `from` must have a balance of at least `value`. - the caller must have allowance for ``from``'s tokens of at least `value`.\"},\"transferOwnership(address)\":{\"details\":\"Transfers ownership of the contract to a new account (`newOwner`). Can only be called by the current owner.\"}},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"contracts/token.sol\":\"MockERC20\"},\"evmVersion\":\"london\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":200},\"remappings\":[]},\"sources\":{\"@openzeppelin/contracts/access/Ownable.sol\":{\"keccak256\":\"0xff6d0bb2e285473e5311d9d3caacb525ae3538a80758c10649a4d61029b017bb\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://8ed324d3920bb545059d66ab97d43e43ee85fd3bd52e03e401f020afb0b120f6\",\"dweb:/ipfs/QmfEckWLmZkDDcoWrkEvMWhms66xwTLff9DDhegYpvHo1a\"]},\"@openzeppelin/contracts/interfaces/draft-IERC6093.sol\":{\"keccak256\":\"0x880da465c203cec76b10d72dbd87c80f387df4102274f23eea1f9c9b0918792b\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://399594cd8bb0143bc9e55e0f1d071d0d8c850a394fb7a319d50edd55d9ed822b\",\"dweb:/ipfs/QmbPZzgtT6LEm9CMqWfagQFwETbV1ztpECBB1DtQHrKiRz\"]},\"@openzeppelin/contracts/token/ERC20/ERC20.sol\":{\"keccak256\":\"0xbf61ab2ae1d575a17ea58fbb99ca232baddcc4e0eeea180e84cbc74b0c348b31\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://4e0968705bad99747a8e5288aa008678c2be2f471f919dce3925a3cc4f1dee09\",\"dweb:/ipfs/QmbAFnCQfo4tw6ssfQSjhA5LzwHWNNryXN8bX7ty8jiqqn\"]},\"@openzeppelin/contracts/token/ERC20/IERC20.sol\":{\"keccak256\":\"0xe06a3f08a987af6ad2e1c1e774405d4fe08f1694b67517438b467cecf0da0ef7\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://df6f0c459663c9858b6cba2cda1d14a7d05a985bed6d2de72bd8e78c25ee79db\",\"dweb:/ipfs/QmeTTxZ7qVk9rjEv2R4CpCwdf8UMCcRqDNMvzNxHc3Fnn9\"]},\"@openzeppelin/contracts/token/ERC20/extensions/IERC20Metadata.sol\":{\"keccak256\":\"0x70f2f713b13b7ce4610bcd0ac9fec0f3cc43693b043abcb8dc40a42a726eb330\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://c13d13304ac79a83ab1c30168967d19e2203342ebbd6a9bbce4db7550522dcbf\",\"dweb:/ipfs/QmeN5jKMN2vw5bhacr6tkg78afbTTZUeaacNHqjWt4Ew1r\"]},\"@openzeppelin/contracts/utils/Context.sol\":{\"keccak256\":\"0x493033a8d1b176a037b2cc6a04dad01a5c157722049bbecf632ca876224dd4b2\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://6a708e8a5bdb1011c2c381c9a5cfd8a9a956d7d0a9dc1bd8bcdaf52f76ef2f12\",\"dweb:/ipfs/Qmax9WHBnVsZP46ZxEMNRQpLQnrdE4dK8LehML1Py8FowF\"]},\"contracts/token.sol\":{\"keccak256\":\"0x4874a2e3f9d67fbca4fb6ef851240dad663fc99fdb997f99ec5d22a34e272686\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://af2033c0ab6a8d782aa73c188952028956fffdb730d892a9175a6fe1440cd9d5\",\"dweb:/ipfs/QmPnYSZGg4kkYPMzzWTPyzU1vzCmHsjU57pKmqFdJnFraj\"]}},\"version\":1}" } } } diff --git a/challenge-1-vesting/ignition/deployments/chain-420420421/journal.jsonl b/challenge-1-vesting/ignition/deployments/chain-420420421/journal.jsonl index 0608400..291ed1a 100644 --- a/challenge-1-vesting/ignition/deployments/chain-420420421/journal.jsonl +++ b/challenge-1-vesting/ignition/deployments/chain-420420421/journal.jsonl @@ -1,6 +1,4 @@ {"chainId":420420421,"type":"DEPLOYMENT_INITIALIZE"} -{"artifactId":"TokenVesting#mock_token","constructorArgs":["Test Token","TST"],"contractName":"MockERC20","dependencies":[],"from":"0x8e6d3ce082888ae69260a9654766d23d658372bf","futureId":"TokenVesting#mock_token","futureType":"NAMED_ARTIFACT_CONTRACT_DEPLOYMENT","libraries":{},"strategy":"basic","strategyConfig":{},"type":"DEPLOYMENT_EXECUTION_STATE_INITIALIZE","value":{"_kind":"bigint","value":"0"}} -{"futureId":"TokenVesting#mock_token","networkInteraction":{"data":"0x60806040523480156200001157600080fd5b5060405162000c4a38038062000c4a8339810160408190526200003491620001b1565b3382826003620000458382620002aa565b506004620000548282620002aa565b5050506001600160a01b0381166200008657604051631e4fbdf760e01b81526000600482015260240160405180910390fd5b62000091816200009a565b50505062000376565b600580546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b634e487b7160e01b600052604160045260246000fd5b600082601f8301126200011457600080fd5b81516001600160401b0380821115620001315762000131620000ec565b604051601f8301601f19908116603f011681019082821181831017156200015c576200015c620000ec565b816040528381526020925086838588010111156200017957600080fd5b600091505b838210156200019d57858201830151818301840152908201906200017e565b600093810190920192909252949350505050565b60008060408385031215620001c557600080fd5b82516001600160401b0380821115620001dd57600080fd5b620001eb8683870162000102565b935060208501519150808211156200020257600080fd5b50620002118582860162000102565b9150509250929050565b600181811c908216806200023057607f821691505b6020821081036200025157634e487b7160e01b600052602260045260246000fd5b50919050565b601f821115620002a557600081815260208120601f850160051c81016020861015620002805750805b601f850160051c820191505b81811015620002a1578281556001016200028c565b5050505b505050565b81516001600160401b03811115620002c657620002c6620000ec565b620002de81620002d784546200021b565b8462000257565b602080601f831160018114620003165760008415620002fd5750858301515b600019600386901b1c1916600185901b178555620002a1565b600085815260208120601f198616915b82811015620003475788860151825594840194600190910190840162000326565b5085821015620003665787850151600019600388901b60f8161c191681555b5050505050600190811b01905550565b6108c480620003866000396000f3fe608060405234801561001057600080fd5b50600436106100cf5760003560e01c806370a082311161008c57806395d89b411161006657806395d89b41146101aa578063a9059cbb146101b2578063dd62ed3e146101c5578063f2fde38b146101fe57600080fd5b806370a082311461015e578063715018a6146101875780638da5cb5b1461018f57600080fd5b806306fdde03146100d4578063095ea7b3146100f257806318160ddd1461011557806323b872dd14610127578063313ce5671461013a57806340c10f1914610149575b600080fd5b6100dc610211565b6040516100e9919061070e565b60405180910390f35b610105610100366004610778565b6102a3565b60405190151581526020016100e9565b6002545b6040519081526020016100e9565b6101056101353660046107a2565b6102bd565b604051601281526020016100e9565b61015c610157366004610778565b6102e1565b005b61011961016c3660046107de565b6001600160a01b031660009081526020819052604090205490565b61015c6102f7565b6005546040516001600160a01b0390911681526020016100e9565b6100dc61030b565b6101056101c0366004610778565b61031a565b6101196101d3366004610800565b6001600160a01b03918216600090815260016020908152604080832093909416825291909152205490565b61015c61020c3660046107de565b610328565b60606003805461022090610833565b80601f016020809104026020016040519081016040528092919081815260200182805461024c90610833565b80156102995780601f1061026e57610100808354040283529160200191610299565b820191906000526020600020905b81548152906001019060200180831161027c57829003601f168201915b5050505050905090565b6000336102b181858561036b565b60019150505b92915050565b6000336102cb85828561037d565b6102d68585856103fb565b506001949350505050565b6102e961045a565b6102f38282610487565b5050565b6102ff61045a565b61030960006104bd565b565b60606004805461022090610833565b6000336102b18185856103fb565b61033061045a565b6001600160a01b03811661035f57604051631e4fbdf760e01b8152600060048201526024015b60405180910390fd5b610368816104bd565b50565b610378838383600161050f565b505050565b6001600160a01b0383811660009081526001602090815260408083209386168352929052205460001981146103f557818110156103e657604051637dc7a0d960e11b81526001600160a01b03841660048201526024810182905260448101839052606401610356565b6103f58484848403600061050f565b50505050565b6001600160a01b03831661042557604051634b637e8f60e11b815260006004820152602401610356565b6001600160a01b03821661044f5760405163ec442f0560e01b815260006004820152602401610356565b6103788383836105e4565b6005546001600160a01b031633146103095760405163118cdaa760e01b8152336004820152602401610356565b6001600160a01b0382166104b15760405163ec442f0560e01b815260006004820152602401610356565b6102f3600083836105e4565b600580546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b6001600160a01b0384166105395760405163e602df0560e01b815260006004820152602401610356565b6001600160a01b03831661056357604051634a1406b160e11b815260006004820152602401610356565b6001600160a01b03808516600090815260016020908152604080832093871683529290522082905580156103f557826001600160a01b0316846001600160a01b03167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925846040516105d691815260200190565b60405180910390a350505050565b6001600160a01b03831661060f578060026000828254610604919061086d565b909155506106819050565b6001600160a01b038316600090815260208190526040902054818110156106625760405163391434e360e21b81526001600160a01b03851660048201526024810182905260448101839052606401610356565b6001600160a01b03841660009081526020819052604090209082900390555b6001600160a01b03821661069d576002805482900390556106bc565b6001600160a01b03821660009081526020819052604090208054820190555b816001600160a01b0316836001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8360405161070191815260200190565b60405180910390a3505050565b600060208083528351808285015260005b8181101561073b5785810183015185820160400152820161071f565b506000604082860101526040601f19601f8301168501019250505092915050565b80356001600160a01b038116811461077357600080fd5b919050565b6000806040838503121561078b57600080fd5b6107948361075c565b946020939093013593505050565b6000806000606084860312156107b757600080fd5b6107c08461075c565b92506107ce6020850161075c565b9150604084013590509250925092565b6000602082840312156107f057600080fd5b6107f98261075c565b9392505050565b6000806040838503121561081357600080fd5b61081c8361075c565b915061082a6020840161075c565b90509250929050565b600181811c9082168061084757607f821691505b60208210810361086757634e487b7160e01b600052602260045260246000fd5b50919050565b808201808211156102b757634e487b7160e01b600052601160045260246000fdfea2646970667358221220109b9a599f0badc23fa957fb1510c08b12fb54cd8baf3ac22829364fb2029e0564736f6c6343000814003300000000000000000000000000000000000000000000000000000000000000400000000000000000000000000000000000000000000000000000000000000080000000000000000000000000000000000000000000000000000000000000000a5465737420546f6b656e0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000035453540000000000000000000000000000000000000000000000000000000000","id":1,"type":"ONCHAIN_INTERACTION","value":{"_kind":"bigint","value":"0"}},"type":"NETWORK_INTERACTION_REQUEST"} -{"artifactId":"VestingModule#simple_token","constructorArgs":[],"contractName":"SimpleToken","dependencies":[],"from":"0x8e6d3ce082888ae69260a9654766d23d658372bf","futureId":"VestingModule#simple_token","futureType":"NAMED_ARTIFACT_CONTRACT_DEPLOYMENT","libraries":{},"strategy":"basic","strategyConfig":{},"type":"DEPLOYMENT_EXECUTION_STATE_INITIALIZE","value":{"_kind":"bigint","value":"0"}} -{"futureId":"VestingModule#simple_token","networkInteraction":{"data":"0x60806040523480156200001157600080fd5b506040518060400160405280600c81526020016b29b4b6b83632902a37b5b2b760a11b8152506040518060400160405280600381526020016253544b60e81b8152508160039081620000649190620002d2565b506004620000738282620002d2565b505050620000ad336200008b620000b360201b60201c565b6200009890600a620004b3565b620000a790620f4240620004cb565b620000b8565b620004fb565b601290565b6001600160a01b038216620000e85760405163ec442f0560e01b8152600060048201526024015b60405180910390fd5b620000f660008383620000fa565b5050565b6001600160a01b038316620001295780600260008282546200011d9190620004e5565b909155506200019d9050565b6001600160a01b038316600090815260208190526040902054818110156200017e5760405163391434e360e21b81526001600160a01b03851660048201526024810182905260448101839052606401620000df565b6001600160a01b03841660009081526020819052604090209082900390555b6001600160a01b038216620001bb57600280548290039055620001da565b6001600160a01b03821660009081526020819052604090208054820190555b816001600160a01b0316836001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040516200022091815260200190565b60405180910390a3505050565b634e487b7160e01b600052604160045260246000fd5b600181811c908216806200025857607f821691505b6020821081036200027957634e487b7160e01b600052602260045260246000fd5b50919050565b601f821115620002cd57600081815260208120601f850160051c81016020861015620002a85750805b601f850160051c820191505b81811015620002c957828155600101620002b4565b5050505b505050565b81516001600160401b03811115620002ee57620002ee6200022d565b6200030681620002ff845462000243565b846200027f565b602080601f8311600181146200033e5760008415620003255750858301515b600019600386901b1c1916600185901b178555620002c9565b600085815260208120601f198616915b828110156200036f578886015182559484019460019091019084016200034e565b50858210156200038e5787850151600019600388901b60f8161c191681555b5050505050600190811b01905550565b634e487b7160e01b600052601160045260246000fd5b600181815b80851115620003f5578160001904821115620003d957620003d96200039e565b80851615620003e757918102915b93841c9390800290620003b9565b509250929050565b6000826200040e57506001620004ad565b816200041d57506000620004ad565b8160018114620004365760028114620004415762000461565b6001915050620004ad565b60ff8411156200045557620004556200039e565b50506001821b620004ad565b5060208310610133831016604e8410600b841016171562000486575081810a620004ad565b620004928383620003b4565b8060001904821115620004a957620004a96200039e565b0290505b92915050565b6000620004c460ff841683620003fd565b9392505050565b8082028115828204841417620004ad57620004ad6200039e565b80820180821115620004ad57620004ad6200039e565b610710806200050b6000396000f3fe608060405234801561001057600080fd5b50600436106100835760003560e01c806306fdde0314610088578063095ea7b3146100a657806318160ddd146100c957806323b872dd146100db578063313ce567146100ee57806370a08231146100fd57806395d89b4114610126578063a9059cbb1461012e578063dd62ed3e14610141575b600080fd5b610090610154565b60405161009d9190610525565b60405180910390f35b6100b96100b436600461058f565b6101e6565b604051901515815260200161009d565b6002545b60405190815260200161009d565b6100b96100e93660046105b9565b610200565b6040516012815260200161009d565b6100cd61010b3660046105f5565b6001600160a01b031660009081526020819052604090205490565b610090610224565b6100b961013c36600461058f565b610233565b6100cd61014f366004610617565b610241565b6060600380546101639061064a565b80601f016020809104026020016040519081016040528092919081815260200182805461018f9061064a565b80156101dc5780601f106101b1576101008083540402835291602001916101dc565b820191906000526020600020905b8154815290600101906020018083116101bf57829003601f168201915b5050505050905090565b6000336101f481858561026c565b60019150505b92915050565b60003361020e85828561027e565b6102198585856102da565b506001949350505050565b6060600480546101639061064a565b6000336101f48185856102da565b6001600160a01b03918216600090815260016020908152604080832093909416825291909152205490565b6102798383836001610339565b505050565b600061028a8484610241565b905060001981146102d457818110156102c557828183604051637dc7a0d960e11b81526004016102bc93929190610684565b60405180910390fd5b6102d484848484036000610339565b50505050565b6001600160a01b038316610304576000604051634b637e8f60e11b81526004016102bc91906106a5565b6001600160a01b03821661032e57600060405163ec442f0560e01b81526004016102bc91906106a5565b61027983838361040e565b6001600160a01b03841661036357600060405163e602df0560e01b81526004016102bc91906106a5565b6001600160a01b03831661038d576000604051634a1406b160e11b81526004016102bc91906106a5565b6001600160a01b03808516600090815260016020908152604080832093871683529290522082905580156102d457826001600160a01b0316846001600160a01b03167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9258460405161040091815260200190565b60405180910390a350505050565b6001600160a01b03831661043957806002600082825461042e91906106b9565b909155506104989050565b6001600160a01b038316600090815260208190526040902054818110156104795783818360405163391434e360e21b81526004016102bc93929190610684565b6001600160a01b03841660009081526020819052604090209082900390555b6001600160a01b0382166104b4576002805482900390556104d3565b6001600160a01b03821660009081526020819052604090208054820190555b816001600160a01b0316836001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8360405161051891815260200190565b60405180910390a3505050565b600060208083528351808285015260005b8181101561055257858101830151858201604001528201610536565b506000604082860101526040601f19601f8301168501019250505092915050565b80356001600160a01b038116811461058a57600080fd5b919050565b600080604083850312156105a257600080fd5b6105ab83610573565b946020939093013593505050565b6000806000606084860312156105ce57600080fd5b6105d784610573565b92506105e560208501610573565b9150604084013590509250925092565b60006020828403121561060757600080fd5b61061082610573565b9392505050565b6000806040838503121561062a57600080fd5b61063383610573565b915061064160208401610573565b90509250929050565b600181811c9082168061065e57607f821691505b60208210810361067e57634e487b7160e01b600052602260045260246000fd5b50919050565b6001600160a01b039390931683526020830191909152604082015260600190565b6001600160a01b0391909116815260200190565b808201808211156101fa57634e487b7160e01b600052601160045260246000fdfea2646970667358221220971c0411aa52274b5b193f98b7e4a9e2e3b85d9474dd56b20a8924d5daa020dc64736f6c63430008140033","id":1,"type":"ONCHAIN_INTERACTION","value":{"_kind":"bigint","value":"0"}},"type":"NETWORK_INTERACTION_REQUEST"} \ No newline at end of file +{"artifactId":"VestingModule#simple_token","constructorArgs":["LST","LSToken"],"contractName":"MockERC20","dependencies":[],"from":"0xb93b321b734812fe459f22e5bde5d5f3b165d192","futureId":"VestingModule#simple_token","futureType":"NAMED_ARTIFACT_CONTRACT_DEPLOYMENT","libraries":{},"strategy":"basic","strategyConfig":{},"type":"DEPLOYMENT_EXECUTION_STATE_INITIALIZE","value":{"_kind":"bigint","value":"0"}} +{"futureId":"VestingModule#simple_token","networkInteraction":{"data":"0x60806040523480156200001157600080fd5b5060405162000c4a38038062000c4a8339810160408190526200003491620001b1565b3382826003620000458382620002aa565b506004620000548282620002aa565b5050506001600160a01b0381166200008657604051631e4fbdf760e01b81526000600482015260240160405180910390fd5b62000091816200009a565b50505062000376565b600580546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b634e487b7160e01b600052604160045260246000fd5b600082601f8301126200011457600080fd5b81516001600160401b0380821115620001315762000131620000ec565b604051601f8301601f19908116603f011681019082821181831017156200015c576200015c620000ec565b816040528381526020925086838588010111156200017957600080fd5b600091505b838210156200019d57858201830151818301840152908201906200017e565b600093810190920192909252949350505050565b60008060408385031215620001c557600080fd5b82516001600160401b0380821115620001dd57600080fd5b620001eb8683870162000102565b935060208501519150808211156200020257600080fd5b50620002118582860162000102565b9150509250929050565b600181811c908216806200023057607f821691505b6020821081036200025157634e487b7160e01b600052602260045260246000fd5b50919050565b601f821115620002a557600081815260208120601f850160051c81016020861015620002805750805b601f850160051c820191505b81811015620002a1578281556001016200028c565b5050505b505050565b81516001600160401b03811115620002c657620002c6620000ec565b620002de81620002d784546200021b565b8462000257565b602080601f831160018114620003165760008415620002fd5750858301515b600019600386901b1c1916600185901b178555620002a1565b600085815260208120601f198616915b82811015620003475788860151825594840194600190910190840162000326565b5085821015620003665787850151600019600388901b60f8161c191681555b5050505050600190811b01905550565b6108c480620003866000396000f3fe608060405234801561001057600080fd5b50600436106100cf5760003560e01c806370a082311161008c57806395d89b411161006657806395d89b41146101aa578063a9059cbb146101b2578063dd62ed3e146101c5578063f2fde38b146101fe57600080fd5b806370a082311461015e578063715018a6146101875780638da5cb5b1461018f57600080fd5b806306fdde03146100d4578063095ea7b3146100f257806318160ddd1461011557806323b872dd14610127578063313ce5671461013a57806340c10f1914610149575b600080fd5b6100dc610211565b6040516100e9919061070e565b60405180910390f35b610105610100366004610778565b6102a3565b60405190151581526020016100e9565b6002545b6040519081526020016100e9565b6101056101353660046107a2565b6102bd565b604051601281526020016100e9565b61015c610157366004610778565b6102e1565b005b61011961016c3660046107de565b6001600160a01b031660009081526020819052604090205490565b61015c6102f7565b6005546040516001600160a01b0390911681526020016100e9565b6100dc61030b565b6101056101c0366004610778565b61031a565b6101196101d3366004610800565b6001600160a01b03918216600090815260016020908152604080832093909416825291909152205490565b61015c61020c3660046107de565b610328565b60606003805461022090610833565b80601f016020809104026020016040519081016040528092919081815260200182805461024c90610833565b80156102995780601f1061026e57610100808354040283529160200191610299565b820191906000526020600020905b81548152906001019060200180831161027c57829003601f168201915b5050505050905090565b6000336102b181858561036b565b60019150505b92915050565b6000336102cb85828561037d565b6102d68585856103fb565b506001949350505050565b6102e961045a565b6102f38282610487565b5050565b6102ff61045a565b61030960006104bd565b565b60606004805461022090610833565b6000336102b18185856103fb565b61033061045a565b6001600160a01b03811661035f57604051631e4fbdf760e01b8152600060048201526024015b60405180910390fd5b610368816104bd565b50565b610378838383600161050f565b505050565b6001600160a01b0383811660009081526001602090815260408083209386168352929052205460001981146103f557818110156103e657604051637dc7a0d960e11b81526001600160a01b03841660048201526024810182905260448101839052606401610356565b6103f58484848403600061050f565b50505050565b6001600160a01b03831661042557604051634b637e8f60e11b815260006004820152602401610356565b6001600160a01b03821661044f5760405163ec442f0560e01b815260006004820152602401610356565b6103788383836105e4565b6005546001600160a01b031633146103095760405163118cdaa760e01b8152336004820152602401610356565b6001600160a01b0382166104b15760405163ec442f0560e01b815260006004820152602401610356565b6102f3600083836105e4565b600580546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b6001600160a01b0384166105395760405163e602df0560e01b815260006004820152602401610356565b6001600160a01b03831661056357604051634a1406b160e11b815260006004820152602401610356565b6001600160a01b03808516600090815260016020908152604080832093871683529290522082905580156103f557826001600160a01b0316846001600160a01b03167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925846040516105d691815260200190565b60405180910390a350505050565b6001600160a01b03831661060f578060026000828254610604919061086d565b909155506106819050565b6001600160a01b038316600090815260208190526040902054818110156106625760405163391434e360e21b81526001600160a01b03851660048201526024810182905260448101839052606401610356565b6001600160a01b03841660009081526020819052604090209082900390555b6001600160a01b03821661069d576002805482900390556106bc565b6001600160a01b03821660009081526020819052604090208054820190555b816001600160a01b0316836001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8360405161070191815260200190565b60405180910390a3505050565b600060208083528351808285015260005b8181101561073b5785810183015185820160400152820161071f565b506000604082860101526040601f19601f8301168501019250505092915050565b80356001600160a01b038116811461077357600080fd5b919050565b6000806040838503121561078b57600080fd5b6107948361075c565b946020939093013593505050565b6000806000606084860312156107b757600080fd5b6107c08461075c565b92506107ce6020850161075c565b9150604084013590509250925092565b6000602082840312156107f057600080fd5b6107f98261075c565b9392505050565b6000806040838503121561081357600080fd5b61081c8361075c565b915061082a6020840161075c565b90509250929050565b600181811c9082168061084757607f821691505b60208210810361086757634e487b7160e01b600052602260045260246000fd5b50919050565b808201808211156102b757634e487b7160e01b600052601160045260246000fdfea26469706673582212207e02bff7c92f01729cf8b1aa0b1f4bc1de2f54967781bde4fef96819d035982264736f6c634300081400330000000000000000000000000000000000000000000000000000000000000040000000000000000000000000000000000000000000000000000000000000008000000000000000000000000000000000000000000000000000000000000000034c5354000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000074c53546f6b656e00000000000000000000000000000000000000000000000000","id":1,"type":"ONCHAIN_INTERACTION","value":{"_kind":"bigint","value":"0"}},"type":"NETWORK_INTERACTION_REQUEST"} \ No newline at end of file diff --git a/challenge-1-vesting/ignition/modules/token-vesting.ts b/challenge-1-vesting/ignition/modules/token-vesting.ts index 199368b..ae32a0c 100644 --- a/challenge-1-vesting/ignition/modules/token-vesting.ts +++ b/challenge-1-vesting/ignition/modules/token-vesting.ts @@ -2,12 +2,12 @@ import { buildModule } from "@nomicfoundation/hardhat-ignition/modules"; const VestingModule = buildModule("VestingModule", (m) => { // Deploy Token first - const token = m.contract("SimpleToken", [], { + const token = m.contract("MockERC20", ["LST", "LSToken"], { id: "simple_token", }); // Deploy Vesting Contract with Token address - const vesting = m.contract("SimpleVesting", [token], { + const vesting = m.contract("TokenVesting", [token], { id: "simple_vesting", }); diff --git a/challenge-2-yield-farm/.gitignore b/challenge-2-yield-farm/.gitignore index e8c12ff..5ec3fb0 100644 --- a/challenge-2-yield-farm/.gitignore +++ b/challenge-2-yield-farm/.gitignore @@ -15,3 +15,4 @@ node_modules # Hardhat Ignition default folder for deployments against a local node ignition/deployments/chain-31337 +.qodo diff --git a/challenge-2-yield-farm/contracts/yeild.sol b/challenge-2-yield-farm/contracts/yeild.sol index 421496a..49c22ed 100644 --- a/challenge-2-yield-farm/contracts/yeild.sol +++ b/challenge-2-yield-farm/contracts/yeild.sol @@ -2,6 +2,7 @@ pragma solidity ^0.8.0; import "@openzeppelin/contracts/token/ERC20/IERC20.sol"; +import "@openzeppelin/contracts/token/ERC20/utils/SafeERC20.sol"; import "@openzeppelin/contracts/utils/ReentrancyGuard.sol"; import "@openzeppelin/contracts/access/Ownable.sol"; @@ -71,6 +72,9 @@ contract YieldFarm is ReentrancyGuard, Ownable { uint256 _rewardRate ) Ownable(msg.sender) { // TODO: Initialize contract state + lpToken = IERC20(_lpToken); + rewardToken = IERC20(_rewardToken); + rewardRate = _rewardRate; } function updateReward(address _user) internal { @@ -90,6 +94,14 @@ contract YieldFarm is ReentrancyGuard, Ownable { // 1. Calculate rewards since last update // 2. Apply boost multiplier // 3. Return total pending rewards + if(totalStaked == 0) { + return rewardPerTokenStored; + } + uint256 timeDelta = block.timestamp - lastUpdateTime; + return + rewardPerTokenStored + + (timeDelta * rewardRate * 1e18) / + totalStaked; } function earned(address _user) public view returns (uint256) { @@ -98,6 +110,14 @@ contract YieldFarm is ReentrancyGuard, Ownable { // 1. Calculate rewards since last update // 2. Apply boost multiplier // 3. Return total pending rewards + UserInfo storage user = userInfo[_user]; + uint256 boostMultiplier = calculateBoostMultiplier(_user); + uint256 newRewardPerToken = rewardPerToken(); + + uint256 newReward = ((user.amount * newRewardPerToken) / 1e18) - + user.rewardDebt; + uint256 pending = (newReward * boostMultiplier) / 100; + return user.pendingRewards + pending; } /** @@ -111,6 +131,29 @@ contract YieldFarm is ReentrancyGuard, Ownable { // 2. Transfer LP tokens from user // 3. Update user info and total staked amount // 4. Emit Staked event + require(_amount > 0, "Cannot stake 0"); + require(_amount <= lpToken.balanceOf(msg.sender), "Insufficient balance"); + require(_amount <= lpToken.allowance(msg.sender, address(this)), "Insufficient allowance"); + address sender = msg.sender; + UserInfo storage user = userInfo[sender]; + if (user.amount == 0) { + user.startTime = block.timestamp; + } + uint256 claimableRewardTokens = earned(sender); + if (claimableRewardTokens > 0) { + SafeERC20.safeTransfer(rewardToken, sender, claimableRewardTokens); + } + + // Transfer LP tokens from user to contract + SafeERC20.safeTransferFrom(lpToken, sender, address(this), _amount); + + // Update user's staked amount and total staked in contract + updateReward(sender); + + user.amount += _amount; + totalStaked += _amount; + + emit Staked(sender, _amount); } /** @@ -124,6 +167,27 @@ contract YieldFarm is ReentrancyGuard, Ownable { // 2. Transfer LP tokens to user // 3. Update user info and total staked amount // 4. Emit Withdrawn event + + address sender = msg.sender; + UserInfo storage user = userInfo[sender]; + require(user.amount >= _amount, "Insufficient balance"); + uint256 claimableRewardTokens = earned(sender); + if (claimableRewardTokens > 0) { + SafeERC20.safeTransfer(rewardToken, sender, claimableRewardTokens); + } + + // Transfer LP tokens from contract to user + SafeERC20.safeTransfer(lpToken, sender, _amount); + // Update user's staked amount and total staked in contract + updateReward(sender); + user.amount -= _amount; + totalStaked -= _amount; + user.pendingRewards = 0; + user.rewardDebt = (user.amount * rewardPerTokenStored) / 1e18; + if (user.amount == 0) { + user.startTime = 0; + } + emit Withdrawn(sender, _amount); } /** @@ -136,6 +200,21 @@ contract YieldFarm is ReentrancyGuard, Ownable { // 2. Transfer rewards to user // 3. Update user reward debt // 4. Emit RewardsClaimed event + address sender = msg.sender; + UserInfo storage user = userInfo[sender]; + uint256 claimableRewardTokens = earned(sender); + if (claimableRewardTokens > 0) { + SafeERC20.safeTransfer(rewardToken, sender, claimableRewardTokens); + user.pendingRewards = 0; + user.rewardDebt = (user.amount * rewardPerTokenStored) / 1e18; + emit RewardsClaimed(sender, claimableRewardTokens); + } + + // Update user's reward debt + user.rewardDebt = (user.amount * rewardPerTokenStored) / 1e18; + user.pendingRewards = 0; + user.startTime = block.timestamp; + emit RewardsClaimed(sender, claimableRewardTokens); } /** @@ -147,6 +226,18 @@ contract YieldFarm is ReentrancyGuard, Ownable { // 1. Transfer all LP tokens back to user // 2. Reset user info // 3. Emit EmergencyWithdrawn event + address sender = msg.sender; + UserInfo storage user = userInfo[sender]; + uint256 amount = user.amount; + require(amount > 0, "No tokens to withdraw"); + totalStaked -= amount; + user.amount = 0; + user.startTime = 0; + user.rewardDebt = 0; + user.pendingRewards = 0; + SafeERC20.safeTransfer(lpToken, sender, amount); + + emit EmergencyWithdrawn(sender, amount); } /** @@ -161,6 +252,17 @@ contract YieldFarm is ReentrancyGuard, Ownable { // Requirements: // 1. Calculate staking duration // 2. Return appropriate multiplier based on duration thresholds + UserInfo storage user = userInfo[_user]; + uint256 duration = block.timestamp - user.startTime; + if (duration >= BOOST_THRESHOLD_3) { + return 200; // 1.5x boost + } else if (duration >= BOOST_THRESHOLD_2) { + return 150; // 1.3x boost + } else if (duration >= BOOST_THRESHOLD_1) { + return 125; // 1.25x boost + } else { + return 100; // No boost + } } /** @@ -172,6 +274,9 @@ contract YieldFarm is ReentrancyGuard, Ownable { // Requirements: // 1. Update rewards before changing rate // 2. Set new reward rate + updateReward(address(0)); + rewardRate = _newRate; + lastUpdateTime = block.timestamp; } /** diff --git a/challenge-2-yield-farm/package.json b/challenge-2-yield-farm/package.json index 5366ac8..64c5015 100644 --- a/challenge-2-yield-farm/package.json +++ b/challenge-2-yield-farm/package.json @@ -17,6 +17,10 @@ "hardhat": "^2.22.17" }, "dependencies": { - "@openzeppelin/contracts": "^5.1.0" + "@nomicfoundation/hardhat-ignition": "^0.15.10", + "@nomicfoundation/hardhat-network-helpers": "^1.0.12", + "@openzeppelin/contracts": "^5.1.0", + "chai": "^5.2.0", + "dotenv": "^16.4.7" } }